diff options
author | ClarkeCode <clarke.john.robert@gmail.com> | 2023-06-23 08:55:52 +0200 |
---|---|---|
committer | ClarkeCode <clarke.john.robert@gmail.com> | 2023-06-23 09:03:07 +0200 |
commit | c2bbef21e3ac507a8f6ceea8662ec3f988e9a4d9 (patch) | |
tree | 6eb0ffb0ebe6c73fdf3b6b6e749b65720a647664 /src/openvic/map | |
parent | 9c8bc64662b3b3e352e59fbf58eca46f72117f5a (diff) |
Fragile loading of goods, cascading wide string changescompatibility-precursors
Diffstat (limited to 'src/openvic/map')
-rw-r--r-- | src/openvic/map/Building.cpp | 6 | ||||
-rw-r--r-- | src/openvic/map/Building.hpp | 6 | ||||
-rw-r--r-- | src/openvic/map/Map.cpp | 82 | ||||
-rw-r--r-- | src/openvic/map/Map.hpp | 20 | ||||
-rw-r--r-- | src/openvic/map/Province.cpp | 12 | ||||
-rw-r--r-- | src/openvic/map/Province.hpp | 8 | ||||
-rw-r--r-- | src/openvic/map/Region.cpp | 2 | ||||
-rw-r--r-- | src/openvic/map/Region.hpp | 2 |
8 files changed, 70 insertions, 68 deletions
diff --git a/src/openvic/map/Building.cpp b/src/openvic/map/Building.cpp index 317ccdf..f443286 100644 --- a/src/openvic/map/Building.cpp +++ b/src/openvic/map/Building.cpp @@ -76,7 +76,7 @@ void Building::tick(Date const& today) { } } -BuildingType::BuildingType(std::string const& new_identifier, Building::level_t new_max_level, Timespan new_build_time) +BuildingType::BuildingType(ovstring const& new_identifier, Building::level_t new_max_level, Timespan new_build_time) : HasIdentifier { new_identifier }, max_level { new_max_level }, build_time { new_build_time } { @@ -94,7 +94,7 @@ Timespan BuildingType::get_build_time() const { BuildingManager::BuildingManager() : building_types { "building types" } {} -return_t BuildingManager::add_building_type(std::string const& identifier, Building::level_t max_level, Timespan build_time) { +return_t BuildingManager::add_building_type(ovstring const& identifier, Building::level_t max_level, Timespan build_time) { if (identifier.empty()) { Logger::error("Invalid building type identifier - empty!"); return FAILURE; @@ -114,7 +114,7 @@ void BuildingManager::lock_building_types() { building_types.lock(); } -BuildingType const* BuildingManager::get_building_type_by_identifier(std::string const& identifier) const { +BuildingType const* BuildingManager::get_building_type_by_identifier(ovstring const& identifier) const { return building_types.get_item_by_identifier(identifier); } diff --git a/src/openvic/map/Building.hpp b/src/openvic/map/Building.hpp index 98c3991..ba711eb 100644 --- a/src/openvic/map/Building.hpp +++ b/src/openvic/map/Building.hpp @@ -61,7 +61,7 @@ namespace OpenVic { const Building::level_t max_level; const Timespan build_time; - BuildingType(std::string const& new_identifier, Building::level_t new_max_level, Timespan new_build_time); + BuildingType(ovstring const& new_identifier, Building::level_t new_max_level, Timespan new_build_time); public: BuildingType(BuildingType&&) = default; @@ -77,9 +77,9 @@ namespace OpenVic { public: BuildingManager(); - return_t add_building_type(std::string const& identifier, Building::level_t max_level, Timespan build_time); + return_t add_building_type(ovstring const& identifier, Building::level_t max_level, Timespan build_time); void lock_building_types(); - BuildingType const* get_building_type_by_identifier(std::string const& identifier) const; + BuildingType const* get_building_type_by_identifier(ovstring const& identifier) const; return_t generate_province_buildings(Province& province) const; }; } diff --git a/src/openvic/map/Map.cpp b/src/openvic/map/Map.cpp index 2efee32..c7e9693 100644 --- a/src/openvic/map/Map.cpp +++ b/src/openvic/map/Map.cpp @@ -8,14 +8,14 @@ using namespace OpenVic; -Mapmode::Mapmode(index_t new_index, std::string const& new_identifier, colour_func_t new_colour_func) +Mapmode::Mapmode(index_t new_index, ovstring const& new_identifier, colour_func_t new_colour_func) : HasIdentifier { new_identifier }, index { new_index }, colour_func { new_colour_func } { assert(colour_func != nullptr); } -const Mapmode Mapmode::ERROR_MAPMODE { 0, "mapmode_error", [](Map const& map, Province const& province) -> colour_t { return 0xFFFF0000; } }; +const Mapmode Mapmode::ERROR_MAPMODE { 0, L"mapmode_error", [](Map const& map, Province const& province) -> colour_t { return 0xFFFF0000; } }; Mapmode::index_t Mapmode::get_index() const { return index; @@ -29,23 +29,23 @@ Map::Map() : provinces { "provinces" }, regions { "regions" }, mapmodes { "mapmodes" } {} -return_t Map::add_province(std::string const& identifier, colour_t colour) { +return_t Map::add_province(ovstring const& identifier, colour_t colour) { if (provinces.get_item_count() >= MAX_INDEX) { - Logger::error("The map's province list is full - there can be at most ", MAX_INDEX, " provinces"); + // Logger::error("The map's province list is full - there can be at most ", MAX_INDEX, " provinces"); return FAILURE; } if (identifier.empty()) { - Logger::error("Invalid province identifier - empty!"); + // Logger::error("Invalid province identifier - empty!"); return FAILURE; } if (colour == NULL_COLOUR || colour > MAX_COLOUR_RGB) { - Logger::error("Invalid province colour: ", Province::colour_to_hex_string(colour)); + // Logger::error("Invalid province colour: ", Province::colour_to_hex_string(colour)); return FAILURE; } Province new_province { static_cast<index_t>(provinces.get_item_count() + 1), identifier, colour }; const index_t index = get_index_from_colour(colour); if (index != NULL_INDEX) { - Logger::error("Duplicate province colours: ", get_province_by_index(index)->to_string(), " and ", new_province.to_string()); + // Logger::error("Duplicate province colours: ", get_province_by_index(index)->to_string(), " and ", new_province.to_string()); return FAILURE; } colour_index_map[new_province.get_colour()] = new_province.get_index(); @@ -56,18 +56,18 @@ void Map::lock_provinces() { provinces.lock(); } -return_t Map::set_water_province(std::string const& identifier) { +return_t Map::set_water_province(ovstring const& identifier) { if (water_provinces_locked) { - Logger::error("The map's water provinces have already been locked!"); + // Logger::error("The map's water provinces have already been locked!"); return FAILURE; } Province* province = get_province_by_identifier(identifier); if (province == nullptr) { - Logger::error("Unrecognised water province identifier: ", identifier); + // Logger::error("Unrecognised water province identifier: ", identifier); return FAILURE; } if (province->is_water()) { - Logger::error("Province ", identifier, " is already a water province!"); + // Logger::error("Province ", identifier, " is already a water province!"); return FAILURE; } province->water = true; @@ -77,40 +77,42 @@ return_t Map::set_water_province(std::string const& identifier) { void Map::lock_water_provinces() { water_provinces_locked = true; - Logger::info("Locked water provinces after registering ", water_province_count); + // Logger::info("Locked water provinces after registering ", water_province_count); } -return_t Map::add_region(std::string const& identifier, std::vector<std::string> const& province_identifiers) { +return_t Map::add_region(ovstring const& identifier, std::vector<ovstring> const& province_identifiers) { if (identifier.empty()) { - Logger::error("Invalid region identifier - empty!"); + // Logger::error("Invalid region identifier - empty!"); return FAILURE; } Region new_region { identifier }; return_t ret = SUCCESS; - for (std::string const& province_identifier : province_identifiers) { + for (ovstring const& province_identifier : province_identifiers) { Province* province = get_province_by_identifier(province_identifier); if (province != nullptr) { if (new_region.contains_province(province)) { - Logger::error("Duplicate province identifier ", province_identifier); + // Logger::error("Duplicate province identifier ", province_identifier); ret = FAILURE; } else { size_t other_region_index = reinterpret_cast<size_t>(province->get_region()); if (other_region_index != 0) { other_region_index--; - if (other_region_index < regions.get_item_count()) - Logger::error("Province ", province_identifier, " is already part of ", regions.get_item_by_index(other_region_index)->get_identifier()); - else - Logger::error("Province ", province_identifier, " is already part of an unknown region with index ", other_region_index); + if (other_region_index < regions.get_item_count()) { + // Logger::error("Province ", province_identifier, " is already part of ", regions.get_item_by_index(other_region_index)->get_identifier()); + } + else { + // Logger::error("Province ", province_identifier, " is already part of an unknown region with index ", other_region_index); + } ret = FAILURE; } else new_region.provinces.push_back(province); } } else { - Logger::error("Invalid province identifier ", province_identifier); + // Logger::error("Invalid province identifier ", province_identifier); ret = FAILURE; } } if (!new_region.get_province_count()) { - Logger::error("No valid provinces in region's list"); + // Logger::error("No valid provinces in region's list"); return FAILURE; } @@ -142,11 +144,11 @@ Province const* Map::get_province_by_index(index_t index) const { return index != NULL_INDEX ? provinces.get_item_by_index(index - 1) : nullptr; } -Province* Map::get_province_by_identifier(std::string const& identifier) { +Province* Map::get_province_by_identifier(ovstring const& identifier) { return provinces.get_item_by_identifier(identifier); } -Province const* Map::get_province_by_identifier(std::string const& identifier) const { +Province const* Map::get_province_by_identifier(ovstring const& identifier) const { return provinces.get_item_by_identifier(identifier); } @@ -173,11 +175,11 @@ Province const* Map::get_selected_province() const { return get_province_by_index(get_selected_province_index()); } -Region* Map::get_region_by_identifier(std::string const& identifier) { +Region* Map::get_region_by_identifier(ovstring const& identifier) { return regions.get_item_by_identifier(identifier); } -Region const* Map::get_region_by_identifier(std::string const& identifier) const { +Region const* Map::get_region_by_identifier(ovstring const& identifier) const { return regions.get_item_by_identifier(identifier); } @@ -189,23 +191,23 @@ static colour_t colour_at(uint8_t const* colour_data, int32_t idx) { return_t Map::generate_province_shape_image(size_t new_width, size_t new_height, uint8_t const* colour_data, uint8_t const* terrain_data, terrain_variant_map_t const& terrain_variant_map) { if (!province_shape_image.empty()) { - Logger::error("Province index image has already been generated!"); + // Logger::error("Province index image has already been generated!"); return FAILURE; } if (!provinces.is_locked()) { - Logger::error("Province index image cannot be generated until after provinces are locked!"); + // Logger::error("Province index image cannot be generated until after provinces are locked!"); return FAILURE; } if (new_width < 1 || new_height < 1) { - Logger::error("Invalid province image dimensions: ", new_width, "x", new_height); + // Logger::error("Invalid province image dimensions: ", new_width, "x", new_height); return FAILURE; } if (colour_data == nullptr) { - Logger::error("Province colour data pointer is null!"); + // Logger::error("Province colour data pointer is null!"); return FAILURE; } if (terrain_data == nullptr) { - Logger::error("Province terrain data pointer is null!"); + // Logger::error("Province terrain data pointer is null!"); return FAILURE; } width = new_width; @@ -226,7 +228,7 @@ return_t Map::generate_province_shape_image(size_t new_width, size_t new_height, else { if (unrecognised_terrain_colours.find(terrain_colour) == unrecognised_terrain_colours.end()) { unrecognised_terrain_colours.insert(terrain_colour); - Logger::error("Unrecognised terrain colour ", Province::colour_to_hex_string(terrain_colour), " at (", x, ", ", y, ")"); + // Logger::error("Unrecognised terrain colour ", Province::colour_to_hex_string(terrain_colour), " at (", x, ", ", y, ")"); ret = FAILURE; } province_shape_image[idx].terrain = 0; @@ -255,7 +257,7 @@ return_t Map::generate_province_shape_image(size_t new_width, size_t new_height, } if (unrecognised_province_colours.find(province_colour) == unrecognised_province_colours.end()) { unrecognised_province_colours.insert(province_colour); - Logger::error("Unrecognised province colour ", Province::colour_to_hex_string(province_colour), " at (", x, ", ", y, ")"); + // Logger::error("Unrecognised province colour ", Province::colour_to_hex_string(province_colour), " at (", x, ", ", y, ")"); ret = FAILURE; } province_shape_image[idx].index = NULL_INDEX; @@ -264,7 +266,7 @@ return_t Map::generate_province_shape_image(size_t new_width, size_t new_height, for (size_t idx = 0; idx < province_checklist.size(); ++idx) { if (!province_checklist[idx]) { - Logger::error("Province missing from shape image: ", provinces.get_item_by_index(idx)->to_string()); + // Logger::error("Province missing from shape image: ", provinces.get_item_by_index(idx)->to_string()); ret = FAILURE; } } @@ -283,13 +285,13 @@ std::vector<Map::shape_pixel_t> const& Map::get_province_shape_image() const { return province_shape_image; } -return_t Map::add_mapmode(std::string const& identifier, Mapmode::colour_func_t colour_func) { +return_t Map::add_mapmode(ovstring const& identifier, Mapmode::colour_func_t colour_func) { if (identifier.empty()) { - Logger::error("Invalid mapmode identifier - empty!"); + // Logger::error("Invalid mapmode identifier - empty!"); return FAILURE; } if (colour_func == nullptr) { - Logger::error("Mapmode colour function is null for identifier: ", identifier); + // Logger::error("Mapmode colour function is null for identifier: ", identifier); return FAILURE; } return mapmodes.add_item({ mapmodes.get_item_count(), identifier, colour_func }); @@ -307,13 +309,13 @@ Mapmode const* Map::get_mapmode_by_index(size_t index) const { return mapmodes.get_item_by_index(index); } -Mapmode const* Map::get_mapmode_by_identifier(std::string const& identifier) const { +Mapmode const* Map::get_mapmode_by_identifier(ovstring const& identifier) const { return mapmodes.get_item_by_identifier(identifier); } return_t Map::generate_mapmode_colours(Mapmode::index_t index, uint8_t* target) const { if (target == nullptr) { - Logger::error("Mapmode colour target pointer is null!"); + // Logger::error("Mapmode colour target pointer is null!"); return FAILURE; } return_t ret = SUCCESS; @@ -323,7 +325,7 @@ return_t Map::generate_mapmode_colours(Mapmode::index_t index, uint8_t* target) // e.g. if we want to allocate the province colour // texture before mapmodes are loaded. if (!(mapmodes.get_item_count() == 0 && index == 0)) { - Logger::error("Invalid mapmode index: ", index); + // Logger::error("Invalid mapmode index: ", index); ret = FAILURE; } mapmode = &Mapmode::ERROR_MAPMODE; diff --git a/src/openvic/map/Map.hpp b/src/openvic/map/Map.hpp index 3533a14..b945c7a 100644 --- a/src/openvic/map/Map.hpp +++ b/src/openvic/map/Map.hpp @@ -16,7 +16,7 @@ namespace OpenVic { const index_t index; const colour_func_t colour_func; - Mapmode(index_t new_index, std::string const& new_identifier, colour_func_t new_colour_func); + Mapmode(index_t new_index, ovstring const& new_identifier, colour_func_t new_colour_func); public: static const Mapmode ERROR_MAPMODE; @@ -59,25 +59,25 @@ namespace OpenVic { public: Map(); - return_t add_province(std::string const& identifier, colour_t colour); + return_t add_province(ovstring const& identifier, colour_t colour); void lock_provinces(); - return_t set_water_province(std::string const& identifier); + return_t set_water_province(ovstring const& identifier); void lock_water_provinces(); - return_t add_region(std::string const& identifier, std::vector<std::string> const& province_identifiers); + return_t add_region(ovstring const& identifier, std::vector<ovstring> const& province_identifiers); void lock_regions(); size_t get_province_count() const; Province* get_province_by_index(index_t index); Province const* get_province_by_index(index_t index) const; - Province* get_province_by_identifier(std::string const& identifier); - Province const* get_province_by_identifier(std::string const& identifier) const; + Province* get_province_by_identifier(ovstring const& identifier); + Province const* get_province_by_identifier(ovstring const& identifier) const; index_t get_province_index_at(size_t x, size_t y) const; void set_selected_province(index_t index); index_t get_selected_province_index() const; Province const* get_selected_province() const; - Region* get_region_by_identifier(std::string const& identifier); - Region const* get_region_by_identifier(std::string const& identifier) const; + Region* get_region_by_identifier(ovstring const& identifier); + Region const* get_region_by_identifier(ovstring const& identifier) const; return_t generate_province_shape_image(size_t new_width, size_t new_height, uint8_t const* colour_data, uint8_t const* terrain_data, terrain_variant_map_t const& terrain_variant_map); @@ -85,11 +85,11 @@ namespace OpenVic { size_t get_height() const; std::vector<shape_pixel_t> const& get_province_shape_image() const; - return_t add_mapmode(std::string const& identifier, Mapmode::colour_func_t colour_func); + return_t add_mapmode(ovstring const& identifier, Mapmode::colour_func_t colour_func); void lock_mapmodes(); size_t get_mapmode_count() const; Mapmode const* get_mapmode_by_index(Mapmode::index_t index) const; - Mapmode const* get_mapmode_by_identifier(std::string const& identifier) const; + Mapmode const* get_mapmode_by_identifier(ovstring const& identifier) const; static constexpr size_t MAPMODE_COLOUR_SIZE = 4; return_t generate_mapmode_colours(Mapmode::index_t index, uint8_t* target) const; diff --git a/src/openvic/map/Province.cpp b/src/openvic/map/Province.cpp index d2a5ecf..8b37f43 100644 --- a/src/openvic/map/Province.cpp +++ b/src/openvic/map/Province.cpp @@ -6,7 +6,7 @@ using namespace OpenVic; -Province::Province(index_t new_index, std::string const& new_identifier, colour_t new_colour) +Province::Province(index_t new_index, ovstring const& new_identifier, colour_t new_colour) : HasIdentifier { new_identifier }, HasColour { new_colour }, index { new_index }, @@ -42,7 +42,7 @@ void Province::reset_buildings() { buildings.reset(); } -Building const* Province::get_building_by_identifier(std::string const& identifier) const { +Building const* Province::get_building_by_identifier(ovstring const& identifier) const { return buildings.get_item_by_identifier(identifier); } @@ -50,7 +50,7 @@ std::vector<Building> const& Province::get_buildings() const { return buildings.get_items(); } -return_t Province::expand_building(std::string const& building_type_identifier) { +return_t Province::expand_building(ovstring const& building_type_identifier) { Building* building = buildings.get_item_by_identifier(building_type_identifier); if (building == nullptr) return FAILURE; return building->expand(); @@ -60,9 +60,9 @@ Good const* Province::get_rgo() const { return rgo; } -std::string Province::to_string() const { - std::stringstream stream; - stream << "(#" << std::to_string(index) << ", " << get_identifier() << ", 0x" << colour_to_hex_string() << ")"; +ovstring Province::to_string() const { + std::wstringstream stream; + stream << "(#" << std::to_wstring(index) << ", " << get_identifier() << ", 0x" << colour_to_hex_string() << ")"; return stream.str(); } diff --git a/src/openvic/map/Province.hpp b/src/openvic/map/Province.hpp index f1f87a2..6b75876 100644 --- a/src/openvic/map/Province.hpp +++ b/src/openvic/map/Province.hpp @@ -24,7 +24,7 @@ namespace OpenVic { // TODO - change this into a factory-like structure Good const* rgo = nullptr; - Province(index_t new_index, std::string const& new_identifier, colour_t new_colour); + Province(index_t new_index, ovstring const& new_identifier, colour_t new_colour); public: Province(Province&&) = default; @@ -36,11 +36,11 @@ namespace OpenVic { return_t add_building(BuildingType const& type); void lock_buildings(); void reset_buildings(); - Building const* get_building_by_identifier(std::string const& identifier) const; + Building const* get_building_by_identifier(ovstring const& identifier) const; std::vector<Building> const& get_buildings() const; - return_t expand_building(std::string const& building_type_identifier); + return_t expand_building(ovstring const& building_type_identifier); Good const* get_rgo() const; - std::string to_string() const; + ovstring to_string() const; void update_state(Date const& today); void tick(Date const& today); diff --git a/src/openvic/map/Region.cpp b/src/openvic/map/Region.cpp index b83f556..6ea9906 100644 --- a/src/openvic/map/Region.cpp +++ b/src/openvic/map/Region.cpp @@ -16,7 +16,7 @@ std::vector<Province*> const& ProvinceSet::get_provinces() const { return provinces; } -Region::Region(std::string const& new_identifier) : HasIdentifier { new_identifier } {} +Region::Region(ovstring const& new_identifier) : HasIdentifier { new_identifier } {} colour_t Region::get_colour() const { if (provinces.empty()) return FULL_COLOUR << 16; diff --git a/src/openvic/map/Region.hpp b/src/openvic/map/Region.hpp index 331d883..1799ed6 100644 --- a/src/openvic/map/Region.hpp +++ b/src/openvic/map/Region.hpp @@ -21,7 +21,7 @@ namespace OpenVic { friend struct Map; private: - Region(std::string const& new_identifier); + Region(ovstring const& new_identifier); public: Region(Region&&) = default; |