Skip to content

Commit 8fbd4ce

Browse files
committed
juggler school: redesigned spawn logic for jugglers
1 parent bf39fcd commit 8fbd4ce

6 files changed

+26
-10
lines changed

src/building/building.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1198,7 +1198,7 @@ static void read_type_data(io_buffer *iob, building *b, size_t version) {
11981198
iob->bind(BIND_SIGNATURE_UINT8, &b->data.entertainment.ent_reserved_u8);
11991199
iob->bind____skip(6);
12001200
iob->bind(BIND_SIGNATURE_UINT8, &b->data.entertainment.consume_material_id);
1201-
iob->bind(BIND_SIGNATURE_UINT8, &b->data.entertainment.spawned_entertainer_this_month);
1201+
iob->bind(BIND_SIGNATURE_UINT8, &b->data.entertainment.spawned_entertainer_days);
12021202
iob->bind(BIND_SIGNATURE_UINT32, &b->data.entertainment.booth_corner_grid_offset);
12031203
}
12041204
}

src/building/building.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ class building {
245245
unsigned char worker_id;
246246
} industry;
247247
struct entertainment_t {
248-
bool spawned_entertainer_this_month;
248+
uint8_t spawned_entertainer_days;
249249
uint8_t num_shows;
250250
uint8_t juggler_visited;
251251
uint8_t musician_visited;

src/building/building_health.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class building_apothecary : public building_impl {
2121
virtual bool draw_ornaments_and_animations_height(painter &ctx, vec2i point, tile2i tile, color color_mask) override;
2222
virtual void update_graphic() override;
2323

24-
static const static_params &current_params() { return (const static_params &)building_impl::params(TYPE); }
24+
static const static_params &current_params() { return (const static_params &)params(TYPE); }
2525
};
2626

2727
class building_mortuary : public building_impl {
@@ -43,5 +43,5 @@ class building_mortuary : public building_impl {
4343
virtual void update_graphic() override;
4444
virtual void update_count() const override;
4545

46-
static const static_params &current_params() { return (const static_params &)building_impl::params(TYPE); }
46+
static const static_params &current_params() { return (const static_params &)params(TYPE); }
4747
};

src/building/building_jugler_school.cpp

+13-5
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,18 @@
1010

1111
#include "js/js_game.h"
1212

13-
buildings::model_t<building_juggler_school> juggler_school_m;
13+
building_juggler_school::static_params juggler_school_m;
1414

15-
void building_juggler_school::update_month() {
16-
data.entertainment.spawned_entertainer_this_month = false;
15+
void building_juggler_school::static_params::load(archive arch) {
16+
spawn_interval = arch.r_int("spawn_interval", 10);
17+
}
18+
19+
void building_juggler_school::update_day() {
20+
building_impl::update_day();
21+
22+
if (data.entertainment.spawned_entertainer_days > 0) {
23+
data.entertainment.spawned_entertainer_days--;
24+
}
1725
}
1826

1927
void building_juggler_school::update_graphic() {
@@ -28,7 +36,7 @@ void building_juggler_school::spawn_figure() {
2836
return;
2937
}
3038

31-
if (data.entertainment.spawned_entertainer_this_month) {
39+
if (data.entertainment.spawned_entertainer_days > 0) {
3240
return;
3341
}
3442

@@ -37,7 +45,7 @@ void building_juggler_school::spawn_figure() {
3745
building* dest = building_get(venue_destination);
3846
if (dest->id > 0) {
3947
create_figure_with_destination(FIGURE_JUGGLER, dest, FIGURE_ACTION_92_ENTERTAINER_GOING_TO_VENUE);
40-
data.entertainment.spawned_entertainer_this_month = true;
48+
data.entertainment.spawned_entertainer_days = current_params().spawn_interval;
4149
} else {
4250
common_spawn_roamer(FIGURE_JUGGLER, 50, FIGURE_ACTION_90_ENTERTAINER_AT_SCHOOL_CREATED);
4351
}

src/building/building_jugler_school.h

+8-1
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,17 @@ class building_juggler_school : public building_impl {
99
building_juggler_school(building &b) : building_impl(b) {}
1010
virtual building_juggler_school *dcast_juggler_school() override { return this; }
1111

12+
struct static_params : public buildings::model_t<building_juggler_school> {
13+
uint8_t spawn_interval;
14+
virtual void load(archive arch) override;
15+
};
16+
1217
virtual e_overlay get_overlay() const override { return OVERLAY_BOOTH; }
1318
virtual void spawn_figure() override;
14-
virtual void update_month() override;
19+
virtual void update_day() override;
1520
virtual void update_graphic() override;
1621
virtual e_sound_channel_city sound_channel() const { return SOUND_CHANNEL_CITY_JUGGLER_SCHOOL; }
1722
virtual bool draw_ornaments_and_animations_height(painter &ctx, vec2i point, tile2i tile, color color_mask) override;
23+
24+
static const static_params &current_params() { return (const static_params &)params(TYPE); }
1825
};

src/scripts/building_info.js

+1
Original file line numberDiff line numberDiff line change
@@ -766,6 +766,7 @@ building_juggler_school = {
766766
base : { pos : [0, 0], pack:PACK_GENERAL, id:46 },
767767
work : { pos : [33, -38], pack:PACK_GENERAL, id:46, offset:1, max_frames:12, duration:3 }
768768
},
769+
spawn_interval : 10,
769770
window_info_height_id : 1,
770771
info_help_id:75,
771772
info_text_id:77,

0 commit comments

Comments
 (0)