Skip to content

Commit b892185

Browse files
committed
bind_dynamic moved to temple_complex/monuments logic
1 parent 7d59556 commit b892185

4 files changed

+42
-0
lines changed

src/building/building_temple_complex.cpp

+16
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,22 @@ void building_temple_complex::on_place(int orientation, int variant) {
221221
building *oracle = add_temple_complex_element(tile().shifted(offset * 2), BUILDING_TEMPLE_COMPLEX_ORACLE, orientation, altar);
222222
}
223223

224+
void building_temple_complex::bind_dynamic(io_buffer *iob, size_t version) {
225+
iob->bind____skip(34);
226+
iob->bind(BIND_SIGNATURE_UINT8, &data.monuments.orientation);
227+
for (int i = 0; i < 5; i++) {
228+
iob->bind(BIND_SIGNATURE_UINT16, &data.monuments.workers[i]);
229+
}
230+
iob->bind(BIND_SIGNATURE_UINT8, &data.monuments.phase);
231+
iob->bind(BIND_SIGNATURE_UINT8, &data.monuments.statue_offset);
232+
iob->bind(BIND_SIGNATURE_UINT8, &data.monuments.temple_complex_attachments);
233+
iob->bind(BIND_SIGNATURE_UINT8, &data.monuments.variant);
234+
235+
for (int i = 0; i < RESOURCES_MAX; i++) {
236+
iob->bind(BIND_SIGNATURE_UINT8, &data.monuments.resources_pct[i]);
237+
}
238+
}
239+
224240
building *building_temple_complex::get_altar() const {
225241
building *next = base.next();
226242
while (next) {

src/building/building_temple_complex.h

+9
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
#include "building/building.h"
44

5+
enum e_temple_compex_attachement : uint8_t {
6+
etc_attachement_altar = 1 << 0,
7+
etc_attachement_oracle = 1 << 1,
8+
};
9+
510
class building_temple_complex : public building_impl {
611
public:
712
building_temple_complex(building &b) : building_impl(b) {}
@@ -24,6 +29,10 @@ class building_temple_complex : public building_impl {
2429
virtual void update_count() const override;
2530
virtual void on_post_load() override;
2631
virtual void on_place(int orientation, int variant) override;
32+
virtual void bind_dynamic(io_buffer *iob, size_t version) override;
33+
34+
bool has_attachement(e_temple_compex_attachement a) const { return !!(data.monuments.temple_complex_attachments & a); }
35+
void set_attachement(e_temple_compex_attachement a) { data.monuments.temple_complex_attachments |= a; }
2736

2837
building *get_altar() const;
2938

src/building/monument_mastaba.cpp

+16
Original file line numberDiff line numberDiff line change
@@ -550,6 +550,22 @@ bool building_mastaba::force_draw_flat_tile(painter &ctx, tile2i tile, vec2i pix
550550
return (data.monuments.phase < 2);
551551
}
552552

553+
void building_mastaba::bind_dynamic(io_buffer *iob, size_t version) {
554+
iob->bind____skip(38);
555+
iob->bind(BIND_SIGNATURE_UINT8, &data.monuments.orientation);
556+
for (int i = 0; i < 5; i++) {
557+
iob->bind(BIND_SIGNATURE_UINT16, &data.monuments.workers[i]);
558+
}
559+
iob->bind(BIND_SIGNATURE_UINT8, &data.monuments.phase);
560+
iob->bind____skip(1); // (BIND_SIGNATURE_UINT8, &data.monuments.statue_offset);
561+
iob->bind____skip(1); // (BIND_SIGNATURE_UINT8, &data.monuments.temple_complex_attachments);
562+
iob->bind(BIND_SIGNATURE_UINT8, &data.monuments.variant);
563+
564+
for (int i = 0; i < RESOURCES_MAX; i++) {
565+
iob->bind(BIND_SIGNATURE_UINT8, &data.monuments.resources_pct[i]);
566+
}
567+
}
568+
553569
void building_small_mastaba::on_place(int orientation, int variant) {
554570
building_mastaba::on_place(orientation, variant);
555571

src/building/monument_mastaba.h

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class building_mastaba : public building_impl {
2020
virtual void update_month() override;
2121
virtual void update_map_orientation(int map_orientation) override;
2222
virtual bool force_draw_flat_tile(painter &ctx, tile2i tile, vec2i pixel, color mask) override;
23+
virtual void bind_dynamic(io_buffer *iob, size_t version) override;
2324

2425
template<typename T>
2526
struct static_params_t : public buildings::model_t<T> {

0 commit comments

Comments
 (0)