Skip to content

Commit 5a50879

Browse files
authored
Merge pull request #412 from OpenVicProject/terrain-properties
Make terrain defence and movement_cost properties
2 parents c2b13b3 + b170b7f commit 5a50879

File tree

5 files changed

+21
-14
lines changed

5 files changed

+21
-14
lines changed

src/openvic-simulation/map/TerrainType.cpp

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,14 @@ TerrainType::TerrainType(
1313
colour_t new_colour,
1414
ModifierValue&& new_modifier,
1515
fixed_point_t new_movement_cost,
16+
fixed_point_t new_defence_bonus,
17+
fixed_point_t new_combat_width_percentage_change,
1618
bool new_is_water
1719
) : Modifier { new_identifier, std::move(new_modifier), modifier_type_t::TERRAIN },
1820
HasColour { new_colour, false },
1921
movement_cost { new_movement_cost },
22+
defence_bonus { new_defence_bonus },
23+
combat_width_percentage_change { new_combat_width_percentage_change },
2024
is_water { new_is_water } {}
2125

2226
TerrainTypeMapping::TerrainTypeMapping(
@@ -68,6 +72,8 @@ bool TerrainTypeManager::add_terrain_type(
6872
colour_t colour,
6973
ModifierValue&& values,
7074
fixed_point_t movement_cost,
75+
fixed_point_t defence_bonus,
76+
fixed_point_t combat_width_percentage_change,
7177
bool is_water
7278
) {
7379
if (identifier.empty()) {
@@ -82,7 +88,9 @@ bool TerrainTypeManager::add_terrain_type(
8288
return false;
8389
}
8490

85-
return terrain_types.add_item({ identifier, colour, std::move(values), movement_cost, is_water });
91+
return terrain_types.add_item({
92+
identifier, colour, std::move(values), movement_cost, defence_bonus, combat_width_percentage_change, is_water
93+
});
8694
}
8795

8896
bool TerrainTypeManager::add_terrain_type_mapping(
@@ -133,18 +141,22 @@ node_callback_t TerrainTypeManager::_load_terrain_type_categories(ModifierManage
133141
const bool ret = expect_dictionary_reserve_length(terrain_types,
134142
[this, &modifier_manager](std::string_view type_key, ast::NodeCPtr type_node) -> bool {
135143
ModifierValue values;
136-
fixed_point_t movement_cost;
144+
fixed_point_t movement_cost, defence_bonus, combat_width_percentage_change;
137145
colour_t colour = colour_t::null();
138146
bool is_water = false;
139147

140148
bool ret = NodeTools::expect_dictionary_keys_and_default(
141149
modifier_manager.expect_terrain_modifier(values),
142150
"movement_cost", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(movement_cost)),
151+
"defence", ZERO_OR_ONE, expect_fixed_point(assign_variable_callback(defence_bonus)),
152+
"combat_width", ZERO_OR_ONE, expect_fixed_point(assign_variable_callback(combat_width_percentage_change)),
143153
"color", ONE_EXACTLY, expect_colour(assign_variable_callback(colour)),
144154
"is_water", ZERO_OR_ONE, expect_bool(assign_variable_callback(is_water))
145155
)(type_node);
146156

147-
ret &= add_terrain_type(type_key, colour, std::move(values), movement_cost, is_water);
157+
ret &= add_terrain_type(
158+
type_key, colour, std::move(values), movement_cost, defence_bonus, combat_width_percentage_change, is_water
159+
);
148160

149161
return ret;
150162
}

src/openvic-simulation/map/TerrainType.hpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,17 @@ namespace OpenVic {
1414
private:
1515
ModifierValue PROPERTY(modifier);
1616
fixed_point_t PROPERTY(movement_cost);
17+
fixed_point_t PROPERTY(defence_bonus);
18+
fixed_point_t PROPERTY(combat_width_percentage_change);
1719
const bool PROPERTY(is_water);
1820

1921
TerrainType(
2022
std::string_view new_identifier,
2123
colour_t new_colour,
2224
ModifierValue&& new_modifier,
2325
fixed_point_t new_movement_cost,
26+
fixed_point_t new_defence_bonus,
27+
fixed_point_t new_combat_width_percentage_change,
2428
bool new_is_water
2529
);
2630

@@ -70,6 +74,8 @@ namespace OpenVic {
7074
colour_t colour,
7175
ModifierValue&& values,
7276
fixed_point_t movement_cost,
77+
fixed_point_t defence_bonus,
78+
fixed_point_t combat_width_percentage_change,
7379
bool is_water
7480
);
7581

src/openvic-simulation/modifier/ModifierEffectCache.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,8 +177,6 @@ ModifierEffectCache::ModifierEffectCache()
177177
/* Province Modifier Effects */
178178
assimilation_rate { nullptr },
179179
boost_strongest_party { nullptr },
180-
combat_width_percentage_change { nullptr },
181-
defence_terrain { nullptr },
182180
farm_rgo_throughput_and_output { nullptr },
183181
farm_rgo_output_global { nullptr },
184182
farm_rgo_output_local { nullptr },

src/openvic-simulation/modifier/ModifierEffectCache.hpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,6 @@ namespace OpenVic {
147147
/* Province Modifier Effects */
148148
ModifierEffect const* PROPERTY(assimilation_rate);
149149
ModifierEffect const* PROPERTY(boost_strongest_party);
150-
ModifierEffect const* PROPERTY(combat_width_percentage_change);
151-
ModifierEffect const* PROPERTY(defence_terrain);
152150
ModifierEffect const* PROPERTY(farm_rgo_throughput_and_output);
153151
ModifierEffect const* PROPERTY(farm_rgo_output_global);
154152
ModifierEffect const* PROPERTY(farm_rgo_output_local);

src/openvic-simulation/modifier/ModifierManager.cpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -457,13 +457,6 @@ bool ModifierManager::setup_modifier_effects() {
457457
ret &= register_base_province_modifier_effect(
458458
modifier_effect_cache.boost_strongest_party, "boost_strongest_party", false, PROPORTION_DECIMAL, {}, has_no_effect
459459
);
460-
// When applied to provinces (terrain), combat_width is a multiplicative proportional decimal value.
461-
ret &= register_base_province_modifier_effect(
462-
modifier_effect_cache.combat_width_percentage_change, "combat_width", false, PROPORTION_DECIMAL
463-
);
464-
ret &= register_terrain_modifier_effect(
465-
modifier_effect_cache.defence_terrain, "defence", true, RAW_DECIMAL, "TRAIT_DEFEND"
466-
);
467460
ret &= register_technology_modifier_effect(
468461
modifier_effect_cache.farm_rgo_throughput_and_output, "farm_rgo_eff", true, PROPORTION_DECIMAL, "TECH_FARM_OUTPUT"
469462
);

0 commit comments

Comments
 (0)