diff options
Diffstat (limited to 'src/openvic-simulation/military/LeaderTrait.hpp')
-rw-r--r-- | src/openvic-simulation/military/LeaderTrait.hpp | 104 |
1 files changed, 52 insertions, 52 deletions
diff --git a/src/openvic-simulation/military/LeaderTrait.hpp b/src/openvic-simulation/military/LeaderTrait.hpp index f4445f6..e525e23 100644 --- a/src/openvic-simulation/military/LeaderTrait.hpp +++ b/src/openvic-simulation/military/LeaderTrait.hpp @@ -8,65 +8,65 @@ #include "openvic-simulation/Modifier.hpp" namespace OpenVic { - struct LeaderTraitManager; + struct LeaderTraitManager; - enum class trait_type_t { - PERSONALITY, - BACKGROUND - }; + struct LeaderTrait : HasIdentifier { + friend struct LeaderTraitManager; - struct LeaderTrait : HasIdentifier { - friend struct LeaderTraitManager; + enum class trait_type_t { + PERSONALITY, + BACKGROUND + }; - private: + private: - const trait_type_t type; - /* - * Allowed modifiers for leaders: - * attack - integer - * defence - integer - * morale - % - * organisation - % - * reconnaissance - % - * speed - % - * attrition - %, negative is good - * experience - % - * reliability - decimal, mil gain or loss for associated POPs - */ - const ModifierValue modifiers; + const trait_type_t type; + /* + * Allowed modifiers for leaders: + * attack - integer + * defence - integer + * morale - % + * organisation - % + * reconnaissance - % + * speed - % + * attrition - %, negative is good + * experience - % + * reliability - decimal, mil gain or loss for associated POPs + */ + const ModifierValue modifiers; - LeaderTrait(std::string_view new_identifier, trait_type_t new_type, ModifierValue new_modifiers); - - public: - LeaderTrait(LeaderTrait&&) = default; + LeaderTrait(std::string_view new_identifier, trait_type_t new_type, ModifierValue&& new_modifiers); - trait_type_t get_trait_type() const; - bool is_personality_trait() const; - bool is_background_trait() const; - ModifierValue get_modifiers() const; - }; + public: + LeaderTrait(LeaderTrait&&) = default; - struct LeaderTraitManager { - private: - IdentifierRegistry<LeaderTrait> leader_traits; - const std::set<std::string, std::less<void>> allowed_modifiers = { - "attack", - "defence", - "morale", - "organisation", - "reconnaissance", - "speed", - "attrition", - "experience", - "reliability" - }; - - public: - LeaderTraitManager(); + trait_type_t get_trait_type() const; + bool is_personality_trait() const; + bool is_background_trait() const; + ModifierValue const& get_modifiers() const; + }; - bool add_leader_trait(std::string_view identifier, trait_type_t type, ModifierValue modifiers); - IDENTIFIER_REGISTRY_ACCESSORS(leader_trait) + struct LeaderTraitManager { + private: + IdentifierRegistry<LeaderTrait> leader_traits; + inline static const string_set_t allowed_modifiers = { + "attack", + "defence", + "morale", + "organisation", + "reconnaissance", + "speed", + "attrition", + "experience", + "reliability" + }; - bool load_leader_traits_file(ModifierManager& modifier_manager, ast::NodeCPtr root); - }; + public: + LeaderTraitManager(); + + bool add_leader_trait(std::string_view identifier, LeaderTrait::trait_type_t type, ModifierValue&& modifiers); + IDENTIFIER_REGISTRY_ACCESSORS(leader_trait) + + bool load_leader_traits_file(ModifierManager const& modifier_manager, ast::NodeCPtr root); + }; } // namespace OpenVic |