diff options
author | hop311 <hop3114@gmail.com> | 2024-07-17 01:01:03 +0200 |
---|---|---|
committer | hop311 <hop3114@gmail.com> | 2024-07-17 01:01:03 +0200 |
commit | 3eac39d9dbf64524c11a51989707521ed82474b5 (patch) | |
tree | c953768a21cec2a2834813d170562a9b9a2cd722 /extension/src/openvic-extension/singletons/ModelSingleton.cpp | |
parent | 114394f4d1bcf5249089b6e3632d259a195ec584 (diff) |
Use IndexedMap + helper function supportindexed-map
Diffstat (limited to 'extension/src/openvic-extension/singletons/ModelSingleton.cpp')
-rw-r--r-- | extension/src/openvic-extension/singletons/ModelSingleton.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/extension/src/openvic-extension/singletons/ModelSingleton.cpp b/extension/src/openvic-extension/singletons/ModelSingleton.cpp index 7dea1bd..5fb9cf8 100644 --- a/extension/src/openvic-extension/singletons/ModelSingleton.cpp +++ b/extension/src/openvic-extension/singletons/ModelSingleton.cpp @@ -4,6 +4,8 @@ #include <godot_cpp/variant/utility_functions.hpp> +#include <openvic-simulation/map/ProvinceInstance.hpp> + #include "openvic-extension/singletons/GameSingleton.hpp" #include "openvic-extension/utility/ClassBindings.hpp" #include "openvic-extension/utility/Utilities.hpp" @@ -180,8 +182,12 @@ Dictionary ModelSingleton::make_model_dict(GFX::Actor const& actor) const { /* Returns false if an error occurs while trying to add a unit model for the province, true otherwise. * Returning true doesn't necessarily mean a unit was added, e.g. when units is empty. */ -template<utility::is_derived_from_specialization_of<UnitInstanceGroup> T> -bool ModelSingleton::add_unit_dict(ordered_set<T*> const& units, TypedArray<Dictionary>& unit_array) const { +template<UnitType::branch_t Branch> +bool ModelSingleton::add_unit_dict( + ordered_set<UnitInstanceGroupBranched<Branch>*> const& units, TypedArray<Dictionary>& unit_array +) const { + using _UnitInstanceGroup = UnitInstanceGroupBranched<Branch>; + GameSingleton const* game_singleton = GameSingleton::get_singleton(); ERR_FAIL_NULL_V(game_singleton, false); @@ -204,7 +210,7 @@ bool ModelSingleton::add_unit_dict(ordered_set<T*> const& units, TypedArray<Dict bool ret = true; /* Last unit to enter the province is shown on top. */ - T const& unit = *units.back(); + _UnitInstanceGroup const& unit = *units.back(); ERR_FAIL_COND_V_MSG(unit.empty(), false, vformat("Empty unit \"%s\"", std_view_to_godot_string(unit.get_name()))); CountryDefinition const* country = unit.get_country()->get_country_definition(); @@ -220,7 +226,7 @@ bool ModelSingleton::add_unit_dict(ordered_set<T*> const& units, TypedArray<Dict std::string_view actor_name = display_unit_type->get_sprite(); std::string_view mount_actor_name, mount_attach_node_name; - if constexpr (std::same_as<T, ArmyInstance>) { + if constexpr (Branch == UnitType::branch_t::LAND) { RegimentType const* regiment_type = reinterpret_cast<RegimentType const*>(display_unit_type); if (!regiment_type->get_sprite_override().empty()) { |