Skip to content

Commit 5a2f986

Browse files
committed
refactor: criminal_active moved from building common class
1 parent c09651c commit 5a2f986

30 files changed

+98
-102
lines changed

src/building/building.h

+10-6
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,6 @@ class building {
195195
e_resource output_resource_second_id;
196196
uint8_t output_resource_second_rate;
197197
bool has_road_access;
198-
short house_criminal_active;
199198
uint8_t disease_days;
200199
uint8_t common_health;
201200
uint8_t malaria_risk;
@@ -212,9 +211,6 @@ class building {
212211
unsigned char house_tax_coverage;
213212
unsigned short tax_collector_id;
214213
short formation_id;
215-
union impl_data_t {
216-
char data[512] = { 0 };
217-
} data;
218214
int tax_income_or_storage;
219215
unsigned char house_days_without_food;
220216
bool has_plague;
@@ -229,6 +225,7 @@ class building {
229225
uint8_t show_on_problem_overlay;
230226
uint16_t deben_storage;
231227
animation_context anim;
228+
char runtime_data[512] = { 0 };
232229

233230
building();
234231
building* main();
@@ -390,6 +387,14 @@ class building {
390387
};
391388

392389
#define BUILDING_METAINFO(type, clsid) static constexpr e_building_type TYPE = type; static constexpr pcstr CLSID = #clsid;
390+
391+
#define BUILDING_METAINFO_RT(type, clsid) \
392+
static constexpr e_building_type TYPE = type; \
393+
static constexpr pcstr CLSID = #clsid; \
394+
struct runtime_data_t; \
395+
runtime_data_t &runtime_data() {return *(runtime_data_t *)base.runtime_data; } \
396+
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)base.runtime_data; } \
397+
393398
class building_impl {
394399
public:
395400
struct static_params {
@@ -452,7 +457,7 @@ class building_impl {
452457
virtual bool is_unique_building() const { return unique_building; }
453458
};
454459

455-
building_impl(building &b) : base(b), data(b.data) {}
460+
building_impl(building &b) : base(b) {}
456461
virtual void on_create(int orientation) {}
457462
virtual void on_place(int orientation, int variant);
458463
virtual void on_place_update_tiles(int orientation, int variant);
@@ -618,7 +623,6 @@ class building_impl {
618623
static void acquire(e_building_type e, building &b);
619624

620625
building &base;
621-
building::impl_data_t &data;
622626
};
623627

624628
template <typename dest_type>

src/building/building_barracks.h

+1-4
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ enum e_barracks_priority {
1212

1313
class building_recruiter : public building_impl {
1414
public:
15-
BUILDING_METAINFO(BUILDING_RECRUITER, building_recruiter)
15+
BUILDING_METAINFO_RT(BUILDING_RECRUITER, building_recruiter)
1616
building_recruiter(building &b) : building_impl(b) {}
1717
virtual building_recruiter *dcast_recruiter() override { return this; }
1818

@@ -32,9 +32,6 @@ class building_recruiter : public building_impl {
3232
virtual bool add_resource(e_resource resource, int amount) override;
3333
virtual void bind_dynamic(io_buffer *iob, size_t version) override;
3434

35-
runtime_data_t &runtime_data() { return *(runtime_data_t *)data.data; }
36-
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)data.data; }
37-
3835
int get_priority();
3936
void set_priority(int v);
4037
bool create_tower_sentry();

src/building/building_bazaar.h

+1-4
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
class building_bazaar : public building_impl {
77
public:
8-
BUILDING_METAINFO(BUILDING_BAZAAR, building_bazaar)
8+
BUILDING_METAINFO_RT(BUILDING_BAZAAR, building_bazaar)
99
building_bazaar(building &b) : building_impl(b) {}
1010

1111
virtual building_bazaar *dcast_bazaar() override { return this; }
@@ -39,8 +39,5 @@ class building_bazaar : public building_impl {
3939
void unaccept_all_goods();
4040
inline int allow_food_types() const { return 4; }
4141
inline int allow_good_types() const { return 4; }
42-
43-
runtime_data_t &runtime_data() { return *(runtime_data_t *)data.data; }
44-
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)data.data; }
4542
};
4643

src/building/building_debug_properties.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ void game_debug_show_properties_object(pcstr prefix, building *b) {
4949
game_debug_show_property("output_resource_second_id", b->output_resource_second_id);
5050
game_debug_show_property("output_resource_second_rate", b->output_resource_second_rate);
5151
game_debug_show_property("has_road_access", b->has_road_access);
52-
game_debug_show_property("house_criminal_active", b->house_criminal_active);
52+
//game_debug_show_property("house_criminal_active", b->house_criminal_active);
5353
game_debug_show_property("disease_days", b->disease_days);
5454
game_debug_show_property("common_health", b->common_health);
5555
game_debug_show_property("malaria_risk", b->malaria_risk);

src/building/building_dock.h

+1-4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
class building_dock : public building_impl {
66
public:
7-
BUILDING_METAINFO(BUILDING_DOCK, building_dock)
7+
BUILDING_METAINFO_RT(BUILDING_DOCK, building_dock)
88

99
struct runtime_data_t {
1010
short queued_docker_id;
@@ -46,9 +46,6 @@ class building_dock : public building_impl {
4646
virtual void highlight_waypoints() override;
4747
virtual void set_water_access_tiles(const water_access_tiles &tiles);
4848

49-
runtime_data_t &runtime_data() { return *(runtime_data_t *)data.data; }
50-
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)data.data; }
51-
5249
void unaccept_all_goods();
5350
int trader_id();
5451
int trader_city_id();

src/building/building_entertainment.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,6 @@ class building_entertainment : public building_impl {
2626
int bandstand_main_img_offset(int orientation);
2727
int bandstand_add_img_offset(int orientation);
2828

29-
runtime_data_t &runtime_data() { return *(runtime_data_t *)data.data; }
30-
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)data.data; }
29+
runtime_data_t &runtime_data() { return *(runtime_data_t *)base.runtime_data; }
30+
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)base.runtime_data; }
3131
};

src/building/building_farm.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ class building_farm : public building_impl {
6666
void draw_farm_worker(painter &ctx, int direction, int action, vec2i coords, color color_mask = COLOR_MASK_NONE);
6767
void draw_workers(painter &ctx, building *b, tile2i tile, vec2i pos);
6868

69-
runtime_data_t &runtime_data() { return *(runtime_data_t *)data.data; }
70-
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)data.data; }
69+
runtime_data_t &runtime_data() { return *(runtime_data_t *)base.runtime_data; }
70+
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)base.runtime_data; }
7171
};
7272

7373
struct building_farm_grain : public building_farm {

src/building/building_ferry.h

+1-4
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
class building_ferry : public building_routeblock {
77
public:
8-
BUILDING_METAINFO(BUILDING_FERRY, building_ferry)
8+
BUILDING_METAINFO_RT(BUILDING_FERRY, building_ferry)
99
building_ferry(building &b) : building_routeblock(b) {}
1010

1111
struct static_params : public buildings::model_t<building_ferry> {
@@ -29,9 +29,6 @@ class building_ferry : public building_routeblock {
2929
virtual void bind_dynamic(io_buffer *iob, size_t verrsion) override;
3030
virtual void set_water_access_tiles(const water_access_tiles &tiles) override;
3131

32-
runtime_data_t &runtime_data() { return *(runtime_data_t *)data.data; }
33-
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)data.data; }
34-
3532
virtual bool get_permission(e_permission p) override { return false; }
3633
};
3734

src/building/building_festival_square.h

+1-4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
class building_festival_square : public building_impl {
66
public:
7-
BUILDING_METAINFO(BUILDING_FESTIVAL_SQUARE, building_festival_square)
7+
BUILDING_METAINFO_RT(BUILDING_FESTIVAL_SQUARE, building_festival_square)
88

99
building_festival_square(building &b) : building_impl(b) {}
1010
virtual building_festival_square *dcast_festival_square() override { return this; }
@@ -34,7 +34,4 @@ class building_festival_square : public building_impl {
3434
virtual void update_map_orientation(int map_orientation) override;
3535

3636
static const static_params &current_params() { return (const static_params &)params(TYPE); }
37-
38-
runtime_data_t &runtime_data() { return *(runtime_data_t *)data.data; }
39-
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)data.data; }
4037
};

src/building/building_fishing_wharf.h

+1-4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
class building_fishing_wharf : public building_wharf {
66
public:
7-
BUILDING_METAINFO(BUILDING_FISHING_WHARF, building_fishing_wharf)
7+
BUILDING_METAINFO_RT(BUILDING_FISHING_WHARF, building_fishing_wharf)
88

99
building_fishing_wharf(building &b) : building_wharf(b) {}
1010
virtual building_fishing_wharf *dcast_fishing_wharf() override { return this; }
@@ -32,8 +32,5 @@ class building_fishing_wharf : public building_wharf {
3232
virtual void highlight_waypoints() override;
3333
virtual void bind_dynamic(io_buffer *iob, size_t version) override;
3434

35-
runtime_data_t &runtime_data() { return *(runtime_data_t *)data.data; }
36-
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)data.data; }
37-
3835
static const static_params &current_params() { return (const static_params &)params(TYPE); }
3936
};

src/building/building_fort.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ class building_fort : public building_impl {
3939
virtual void bind_dynamic(io_buffer *iob, size_t verrsion) override;
4040
virtual void highlight_waypoints() override;
4141

42-
runtime_data_t &runtime_data() { return *(runtime_data_t *)data.data; }
43-
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)data.data; }
42+
runtime_data_t &runtime_data() { return *(runtime_data_t *)base.runtime_data; }
43+
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)base.runtime_data; }
4444
};
4545

4646
class building_fort_ground : public building_impl {

src/building/building_granary.h

+1-4
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ struct granary_getting_result {
2323

2424
class building_granary : public building_storage {
2525
public:
26-
BUILDING_METAINFO(BUILDING_GRANARY, building_granary)
26+
BUILDING_METAINFO_RT(BUILDING_GRANARY, building_granary)
2727

2828
building_granary(building &b) : building_storage(b) {}
2929
virtual building_granary *dcast_granary() override { return this; }
@@ -54,9 +54,6 @@ class building_granary : public building_storage {
5454
int capacity_stored() const { return 3200; }
5555
int allow_food_types() const { return 4; }
5656

57-
runtime_data_t &runtime_data() { return *(runtime_data_t *)data.data; }
58-
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)data.data; }
59-
6057
void bless();
6158
granary_task_status determine_worker_task();
6259
void draw_stores(vec2i point, color color_mask, painter &ctx);

src/building/building_guild.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ class building_guild : public building_impl {
1111
uint8_t max_workers;
1212
};
1313

14-
runtime_data_t &runtime_data() { return *(runtime_data_t *)data.data; }
15-
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)data.data; }
14+
runtime_data_t &runtime_data() { return *(runtime_data_t *)base.runtime_data; }
15+
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)base.runtime_data; }
1616

1717
virtual void bind_dynamic(io_buffer *iob, size_t version) override;
1818
};

src/building/building_house.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ void building_house::bind_dynamic(io_buffer *iob, size_t version) {
196196
iob->bind(BIND_SIGNATURE_UINT8, &d.pavillion_musician);
197197
iob->bind(BIND_SIGNATURE_UINT8, &d.house_happiness);
198198
iob->bind(BIND_SIGNATURE_UINT8, &d.is_merged);
199+
iob->bind(BIND_SIGNATURE_UINT8, &d.criminal_active);
199200
}
200201

201202
int building_house::get_fire_risk(int value) const {

src/building/building_house.h

+2-4
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ enum e_house_progress {
1111

1212
class building_house : public building_impl {
1313
public:
14-
BUILDING_METAINFO(BUILDING_NONE, building_house_vacant)
14+
BUILDING_METAINFO_RT(BUILDING_NONE, building_house_vacant)
1515

1616
building_house(building &b) : building_impl(b) {}
1717
virtual building_house *dcast_house() override { return this; }
@@ -53,6 +53,7 @@ class building_house : public building_impl {
5353
uint8_t bazaar_access;
5454
uint8_t water_supply;
5555
uint8_t house_happiness;
56+
uint8_t criminal_active;
5657
};
5758

5859
virtual void on_create(int orientation) override;
@@ -88,9 +89,6 @@ class building_house : public building_impl {
8889
e_house_progress check_requirements(house_demands *demands);
8990

9091
static void create_vacant_lot(tile2i tile, int image_id);
91-
92-
runtime_data_t &runtime_data() { return *(runtime_data_t *)data.data; }
93-
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)data.data; }
9492
};
9593

9694
class building_house_crude_hut : public building_house {

src/building/building_industry.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,6 @@ class building_industry : public building_impl {
3333
virtual void start_production() override;
3434
virtual bvariant get_property(const xstring &domain, const xstring &name) const override;
3535

36-
runtime_data_t &runtime_data() { return *(runtime_data_t *)data.data; }
37-
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)data.data; }
36+
runtime_data_t &runtime_data() { return *(runtime_data_t *)base.runtime_data; }
37+
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)base.runtime_data; }
3838
};

src/building/building_roadblock.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ class building_routeblock : public building_impl {
1616
virtual void set_permission(e_permission) {}
1717
virtual bool get_permission(e_permission) { return false; }
1818

19-
runtime_data_t &runtime_data() { return *(runtime_data_t *)data.data; }
20-
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)data.data; }
19+
runtime_data_t &runtime_data() { return *(runtime_data_t *)base.runtime_data; }
20+
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)base.runtime_data; }
2121
};
2222

2323
class building_roadblock : public building_routeblock {

src/building/building_shipyard.h

+1-4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
class building_shipyard : public building_industry {
66
public:
7-
BUILDING_METAINFO(BUILDING_SHIPWRIGHT, building_shipyard)
7+
BUILDING_METAINFO_RT(BUILDING_SHIPWRIGHT, building_shipyard)
88

99
building_shipyard(building &b) : building_industry(b) {}
1010
virtual building_shipyard *dcast_shipyard() override { return this; }
@@ -39,8 +39,5 @@ class building_shipyard : public building_industry {
3939
virtual bool add_resource(e_resource resource, int amount) override;
4040
virtual void set_water_access_tiles(const water_access_tiles &tiles) override;
4141

42-
runtime_data_t &runtime_data() { return *(runtime_data_t *)data.data; }
43-
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)data.data; }
44-
4542
static const static_params &current_params() { return (const static_params &)params(TYPE); }
4643
};

src/building/building_statue.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ class building_statue : public building_impl {
4444
virtual void bind_dynamic(io_buffer *iob, size_t version) override;
4545
virtual const statue_params_t &statue_params() = 0;
4646

47-
runtime_data_t &runtime_data() { return *(runtime_data_t *)data.data; }
48-
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)data.data; }
47+
runtime_data_t &runtime_data() { return *(runtime_data_t *)base.runtime_data; }
48+
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)base.runtime_data; }
4949
};
5050

5151
class building_small_statue : public building_statue {

src/building/building_storage_room.h

+1-4
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ struct storage_t;
66

77
class building_storage_room : public building_impl {
88
public:
9-
BUILDING_METAINFO(BUILDING_STORAGE_ROOM, building_storage_room)
9+
BUILDING_METAINFO_RT(BUILDING_STORAGE_ROOM, building_storage_room)
1010

1111
building_storage_room(building &b);
1212
virtual building_storage *dcast_storage() override { return main()->dcast_storage(); }
@@ -36,7 +36,4 @@ class building_storage_room : public building_impl {
3636
void add_import(e_resource resource);
3737
int distance_with_penalty(tile2i tile, e_resource resource, int distance_from_entry);
3838
void remove_export(e_resource resource);
39-
40-
runtime_data_t &runtime_data() { return *(runtime_data_t *)data.data; }
41-
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)data.data; }
4239
};

src/building/building_temple_complex.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ class building_temple_complex : public building_impl {
4747
virtual e_sound_channel_city sound_channel() const override { return SOUND_CHANNEL_CITY_NONE; }
4848
virtual void update_map_orientation(int orientation) override;
4949

50-
runtime_data_t &runtime_data() { return *(runtime_data_t *)data.data; }
51-
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)data.data; }
50+
runtime_data_t &runtime_data() { return *(runtime_data_t *)base.runtime_data; }
51+
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)base.runtime_data; }
5252
};
5353

5454
class building_temple_complex_osiris : public building_temple_complex {

src/building/building_water_lift.h

+1-4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
class building_water_lift : public building_impl {
66
public:
7-
BUILDING_METAINFO(BUILDING_WATER_LIFT, building_water_lift)
7+
BUILDING_METAINFO_RT(BUILDING_WATER_LIFT, building_water_lift)
88
building_water_lift(building &b) : building_impl(b) {}
99

1010
struct static_params : public buildings::model_t<building_water_lift> {
@@ -34,8 +34,5 @@ class building_water_lift : public building_impl {
3434

3535
void update_inout_tiles();
3636

37-
runtime_data_t &runtime_data() { return *(runtime_data_t *)data.data; }
38-
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)data.data; }
39-
4037
static const static_params &current_params() { return (const static_params &)params(TYPE); }
4138
};

src/building/building_wharf.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ class building_wharf : public building_impl {
2424
virtual bool draw_ornaments_and_animations_height(painter &ctx, vec2i point, tile2i tile, color color_mask) override;
2525
virtual void set_water_access_tiles(const water_access_tiles &tiles) override;
2626

27-
runtime_data_t &runtime_data() { return *(runtime_data_t *)data.data; }
28-
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)data.data; }
27+
runtime_data_t &runtime_data() { return *(runtime_data_t *)base.runtime_data; }
28+
const runtime_data_t &runtime_data() const { return *(runtime_data_t *)base.runtime_data; }
2929

3030
virtual bool ship_moored() const { return false; }
3131
};

0 commit comments

Comments
 (0)