Skip to content

Commit 8216443

Browse files
committed
planer: ore options for copper mine moved to config
1 parent 780fc6a commit 8216443

9 files changed

+91
-84
lines changed

src/building/building.cpp

+9-9
Original file line numberDiff line numberDiff line change
@@ -1103,11 +1103,11 @@ int building_impl::static_params::planer_update_building_variant(build_planner &
11031103

11041104
int building_impl::static_params::planer_construction_update(build_planner &planer, tile2i start, tile2i end) const {
11051105
int special_flags = planer.special_flags;
1106-
if (special_flags & PlannerFlags::Meadow || special_flags & PlannerFlags::Rock
1107-
|| special_flags & PlannerFlags::Trees || special_flags & PlannerFlags::NearbyWater
1108-
|| special_flags & PlannerFlags::Walls || special_flags & PlannerFlags::Groundwater
1109-
|| special_flags & PlannerFlags::Water || special_flags & PlannerFlags::ShoreLine
1110-
|| special_flags & PlannerFlags::Road || special_flags & PlannerFlags::Intersection) {
1106+
if (special_flags & e_building_flag::Meadow || special_flags & e_building_flag::Rock
1107+
|| special_flags & e_building_flag::Trees || special_flags & e_building_flag::NearbyWater
1108+
|| special_flags & e_building_flag::Walls || special_flags & e_building_flag::Groundwater
1109+
|| special_flags & e_building_flag::Water || special_flags & e_building_flag::ShoreLine
1110+
|| special_flags & e_building_flag::Road || special_flags & e_building_flag::Intersection) {
11111111
return 0;
11121112
}
11131113

@@ -1206,11 +1206,11 @@ void building_impl::static_params::planer_ghost_preview(build_planner &planer, p
12061206
planer.draw_tile_graphics_array(ctx, tile, end, pixel);
12071207
}
12081208

1209-
bool building_impl::static_params::planer_is_need_flag(PlannerFlags flag) const {
1209+
bool building_impl::static_params::planer_is_need_flag(e_building_flags flag) const {
12101210
switch (flag) {
1211-
case PlannerFlags::Meadow: return needs.meadow;
1212-
case PlannerFlags::Rock: return needs.rock;
1213-
case PlannerFlags::Ore: return needs.ore;
1211+
case e_building_flag::Meadow: return needs.meadow;
1212+
case e_building_flag::Rock: return needs.rock;
1213+
case e_building_flag::Ore: return needs.ore;
12141214
}
12151215

12161216
return false;

src/building/building.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ struct mouse;
8787
class build_planner;
8888

8989
constexpr uint32_t MAX_BUILDINGS = 4000;
90+
using e_building_flags = uint32_t;
9091

9192
enum e_labor_state {
9293
LABOR_STATE_NONE,
@@ -561,7 +562,7 @@ class building_impl {
561562
virtual int planer_construction_update(build_planner &p, tile2i start, tile2i end) const;
562563
virtual int planer_construction_place(build_planner &p, tile2i tile, tile2i end, int orientation, int variant) const;
563564
virtual void planer_ghost_preview(build_planner &p, painter &ctx, tile2i tile, tile2i end, vec2i pixel) const;
564-
virtual bool planer_is_need_flag(PlannerFlags flag) const;
565+
virtual bool planer_is_need_flag(e_building_flags flag) const;
565566
virtual bool is_unique_building() const { return unique_building; }
566567
};
567568

src/building/building_raw_material.cpp

+12-1
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,12 @@
2626
#include "figure/figure.h"
2727
#include "js/js_game.h"
2828
#include "graphics/animation.h"
29+
#include "construction/build_planner.h"
2930

31+
building_mine_copper::static_params copper_mine_m;
3032
buildings::model_t<building_clay_pit> clay_pit_m;
3133
buildings::model_t<building_mine_gold> gold_mine_m;
3234
buildings::model_t<building_mine_gems> gems_mine_m;
33-
buildings::model_t<building_mine_copper> copper_mine_m;
3435
buildings::model_t<building_reed_gatherer> gatherer_m;
3536

3637
void building_mine::on_create(int orientation) {
@@ -64,6 +65,16 @@ void building_mine_gold::update_count() const {
6465
building_increase_industry_count(RESOURCE_GOLD, num_workers() > 0);
6566
}
6667

68+
69+
bool building_mine_copper::static_params::planer_is_need_flag(e_building_flags flag) const {
70+
switch (flag) {
71+
case e_building_flag::Ore:
72+
return !config_get(CONFIG_GP_CH_COPPER_NEAR_MOUNTAINS) && needs.ore;
73+
}
74+
75+
return building_industry::static_params::planer_is_need_flag(flag);
76+
}
77+
6778
void building_mine_copper::update_count() const {
6879
building_increase_industry_count(RESOURCE_COPPER, num_workers() > 0);
6980
}

src/building/building_raw_material.h

+5-1
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,12 @@ class building_mine_gems : public building_mine {
6363
class building_mine_copper : public building_mine {
6464
public:
6565
BUILDING_METAINFO(BUILDING_COPPER_MINE, building_mine_copper)
66-
6766
building_mine_copper(building &b) : building_mine(b) {}
67+
68+
struct static_params : public buildings::model_t<building_mine_copper> {
69+
virtual bool planer_is_need_flag(e_building_flags flag) const override;
70+
};
71+
6872
virtual int get_produce_uptick_per_day() const override { return base.num_workers > 0 ? std::max<int>(1, base.num_workers / 2) : 0; }
6973
virtual void update_count() const override;
7074
};

0 commit comments

Comments
 (0)