diff options
Diffstat (limited to 'src/openvic/pop/Culture.hpp')
-rw-r--r-- | src/openvic/pop/Culture.hpp | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/src/openvic/pop/Culture.hpp b/src/openvic/pop/Culture.hpp index 495ba1d..6028fea 100644 --- a/src/openvic/pop/Culture.hpp +++ b/src/openvic/pop/Culture.hpp @@ -21,36 +21,39 @@ namespace OpenVic { friend struct CultureManager; private: + const std::string leader; GraphicalCultureType const& unit_graphical_culture_type; - bool is_overseas; + const bool is_overseas; - // TODO - leader type, union tag + // TODO - union tag - CultureGroup(const std::string_view new_identifier, GraphicalCultureType const& new_unit_graphical_culture_type, bool new_is_overseas); + CultureGroup(const std::string_view new_identifier, const std::string_view new_leader, GraphicalCultureType const& new_unit_graphical_culture_type, bool new_is_overseas); public: CultureGroup(CultureGroup&&) = default; + std::string const& get_leader() const; GraphicalCultureType const& get_unit_graphical_culture_type() const; + bool get_is_overseas() const; }; struct Culture : HasIdentifierAndColour { friend struct CultureManager; - using name_list_t = std::vector<std::string>; - private: CultureGroup const& group; - const name_list_t first_names, last_names; + const std::vector<std::string> first_names, last_names; // TODO - radicalism, primary tag - Culture(const std::string_view new_identifier, colour_t new_colour, CultureGroup const& new_group, name_list_t const& new_first_names, name_list_t const& new_last_names); + Culture(const std::string_view new_identifier, colour_t new_colour, CultureGroup const& new_group, std::vector<std::string> const& new_first_names, std::vector<std::string> const& new_last_names); public: Culture(Culture&&) = default; CultureGroup const& get_group() const; + std::vector<std::string> const& get_first_names() const; + std::vector<std::string> const& get_last_names() const; }; struct CultureManager { @@ -65,12 +68,20 @@ namespace OpenVic { return_t add_graphical_culture_type(const std::string_view identifier); void lock_graphical_culture_types(); GraphicalCultureType const* get_graphical_culture_type_by_identifier(const std::string_view identifier) const; - return_t add_culture_group(const std::string_view identifier, GraphicalCultureType const* new_graphical_culture_type, bool is_overseas); + size_t get_graphical_culture_type_count() const; + std::vector<GraphicalCultureType> const& get_graphical_culture_types() const; + + return_t add_culture_group(const std::string_view identifier, const std::string_view leader, GraphicalCultureType const* new_graphical_culture_type, bool is_overseas); void lock_culture_groups(); CultureGroup const* get_culture_group_by_identifier(const std::string_view identifier) const; - return_t add_culture(const std::string_view identifier, colour_t colour, CultureGroup const* group, Culture::name_list_t const& first_names, Culture::name_list_t const& last_names); + size_t get_culture_group_count() const; + std::vector<CultureGroup> const& get_culture_groups() const; + + return_t add_culture(const std::string_view identifier, colour_t colour, CultureGroup const* group, std::vector<std::string> const& first_names, std::vector<std::string> const& last_names); void lock_cultures(); Culture const* get_culture_by_identifier(const std::string_view identifier) const; + size_t get_culture_count() const; + std::vector<Culture> const& get_cultures() const; return_t load_graphical_culture_type_file(ast::NodeCPtr root); return_t load_culture_file(ast::NodeCPtr root); |