Skip to content

Commit b0d2f42

Browse files
authored
Merge pull request #663 from OpenVicProject/typed_identifier_registry_and_fixes
IdentifierRegistry uses typed indices + fixes
2 parents de52d16 + c3e6a6a commit b0d2f42

17 files changed

+91
-70
lines changed

src/headless/main.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,10 @@ static bool run_headless(fs::path const& root, memory::vector<memory::string>& m
240240

241241
SPDLOG_INFO("===== Setting up instance... =====");
242242
ret &= game_manager.setup_instance(
243-
game_manager.get_definition_manager().get_history_manager().get_bookmark_manager().get_bookmark_by_index(0)
243+
game_manager.get_definition_manager()
244+
.get_history_manager()
245+
.get_bookmark_manager()
246+
.get_front_bookmark()
244247
);
245248

246249
print_memory_usage("Instance Setup");

src/openvic-simulation/GameManager.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
#include "GameManager.hpp"
22

33
#include <chrono>
4-
#include <cstddef>
54
#include <string_view>
65

76
#include <range/v3/algorithm/contains.hpp>
@@ -169,7 +168,7 @@ bool GameManager::load_definitions(Dataloader::localisation_callback_t localisat
169168
return ret;
170169
}
171170

172-
bool GameManager::setup_instance(Bookmark const* bookmark) {
171+
bool GameManager::setup_instance(Bookmark const& bookmark) {
173172
if (instance_manager) {
174173
spdlog::error_s("Trying to setup a new game instance while one is already setup!");
175174
return false;
@@ -187,7 +186,7 @@ bool GameManager::setup_instance(Bookmark const* bookmark) {
187186

188187
bool ret = instance_manager->setup();
189188

190-
SPDLOG_INFO("Loading bookmark \"{}\" for new game instance.", bookmark ? bookmark->get_identifier() : "<NULL>");
189+
SPDLOG_INFO("Loading bookmark \"{}\" for new game instance.", bookmark.get_identifier());
191190

192191
ret &= instance_manager->load_bookmark(bookmark);
193192

src/openvic-simulation/GameManager.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ namespace OpenVic {
5959

6060
bool load_definitions(Dataloader::localisation_callback_t localisation_callback);
6161

62-
bool setup_instance(Bookmark const* bookmark);
62+
bool setup_instance(Bookmark const& bookmark);
6363
bool is_game_instance_setup() const;
6464
bool is_bookmark_loaded() const;
6565

src/openvic-simulation/InstanceManager.cpp

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ bool InstanceManager::setup() {
215215
return true;
216216
}
217217

218-
bool InstanceManager::load_bookmark(Bookmark const* new_bookmark) {
218+
bool InstanceManager::load_bookmark(Bookmark const& new_bookmark) {
219219
if (is_bookmark_loaded()) {
220220
spdlog::error_s("Cannot load bookmark - already loaded!");
221221
return false;
@@ -226,12 +226,7 @@ bool InstanceManager::load_bookmark(Bookmark const* new_bookmark) {
226226
return false;
227227
}
228228

229-
if (new_bookmark == nullptr) {
230-
spdlog::critical_s("Cannot load bookmark - null!");
231-
return false;
232-
}
233-
234-
bookmark = new_bookmark;
229+
bookmark = &new_bookmark;
235230

236231
SPDLOG_INFO("Loading bookmark {} with start date {}", bookmark->get_name(), bookmark->date);
237232

src/openvic-simulation/InstanceManager.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ namespace OpenVic {
9292
}
9393

9494
bool setup();
95-
bool load_bookmark(Bookmark const* new_bookmark);
95+
bool load_bookmark(Bookmark const& new_bookmark);
9696
bool start_game_session();
9797
bool update_clock();
9898
void force_tick_and_update();

src/openvic-simulation/economy/BuildingType.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ namespace OpenVic {
8282
private:
8383
IdentifierRegistry<BuildingType> IDENTIFIER_REGISTRY(building_type);
8484
string_set_t PROPERTY(building_type_types);
85-
memory::vector<BuildingType const*> PROPERTY(province_building_types);
85+
memory::vector<BuildingType const*> SPAN_PROPERTY(province_building_types);
8686
BuildingType const* PROPERTY(port_building_type);
8787

8888
public:

src/openvic-simulation/map/MapDefinition.cpp

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,12 @@ MapDefinition::MapDefinition() {}
3939
ProvinceDefinition* MapDefinition::get_province_definition_from_number(
4040
decltype(std::declval<ProvinceDefinition>().get_province_number())province_number
4141
) {
42-
return province_definitions.get_item_by_index(type_safe::get(ProvinceDefinition::get_index_from_province_number(province_number)));
42+
return province_definitions.get_item_by_index(ProvinceDefinition::get_index_from_province_number(province_number));
4343
}
4444
ProvinceDefinition const* MapDefinition::get_province_definition_from_number(
4545
decltype(std::declval<ProvinceDefinition>().get_province_number())province_number
4646
) const {
47-
return province_definitions.get_item_by_index(type_safe::get(ProvinceDefinition::get_index_from_province_number(province_number)));
47+
return province_definitions.get_item_by_index(ProvinceDefinition::get_index_from_province_number(province_number));
4848
}
4949

5050
RiverSegment::RiverSegment(uint8_t new_size, memory::vector<ivec2_t>&& new_points)
@@ -93,7 +93,7 @@ bool MapDefinition::add_province_definition(std::string_view identifier, colour_
9393
}
9494

9595
ProvinceDefinition const& new_province = province_definitions.back();
96-
colour_index_map[new_province.get_colour()] = province_index_t(new_province.get_province_number());
96+
colour_index_map[new_province.get_colour()] = new_province.index;
9797
return true;
9898
}
9999

@@ -860,15 +860,24 @@ bool MapDefinition::load_map_images(fs::path const& province_path, fs::path cons
860860
uint8_t const* province_data = province_bmp.get_pixel_data().data();
861861
uint8_t const* terrain_data = terrain_bmp.get_pixel_data().data();
862862

863-
memory::FixedVector<fixed_point_map_t<TerrainType const*>> _terrain_type_pixels_list(province_definitions.size());
863+
memory::FixedVector<fixed_point_map_t<TerrainType const*>> _terrain_type_pixels_list(
864+
province_definitions.size(),
865+
[](const size_t i) { return fixed_point_map_t<TerrainType const*>{}; }
866+
);
864867
TypedSpan<province_index_t, fixed_point_map_t<TerrainType const*>> terrain_type_pixels_list { _terrain_type_pixels_list };
865868

866869
bool ret = true;
867870
ordered_set<colour_t> unrecognised_province_colours;
868871

869-
memory::FixedVector<fixed_point_t> _pixels_per_province(province_definitions.size());
872+
memory::FixedVector<fixed_point_t> _pixels_per_province(
873+
province_definitions.size(),
874+
[](const size_t i) { return fixed_point_t::_0; }
875+
);
870876
TypedSpan<province_index_t, fixed_point_t> pixels_per_province { _pixels_per_province };
871-
memory::FixedVector<fvec2_t> _pixel_position_sum_per_province(province_definitions.size());
877+
memory::FixedVector<fvec2_t> _pixel_position_sum_per_province(
878+
province_definitions.size(),
879+
[](const size_t i) { return fvec2_t{}; }
880+
);
872881
TypedSpan<province_index_t, fvec2_t> pixel_position_sum_per_province { _pixel_position_sum_per_province };
873882

874883
for (ivec2_t pos {}; pos.y < get_height(); ++pos.y) {

src/openvic-simulation/map/MapDefinition.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,13 @@ namespace OpenVic {
7979
}
8080

8181
IDENTIFIER_REGISTRY_NON_CONST_ACCESSORS(province_definition);
82+
ProvinceDefinition* get_province_definition_from_number(
83+
const ProvinceDefinition::province_number_t province_number
84+
);
8285

8386
public:
8487
MapDefinition();
8588

86-
ProvinceDefinition* get_province_definition_from_number(
87-
const ProvinceDefinition::province_number_t province_number
88-
);
8989
ProvinceDefinition const* get_province_definition_from_number(
9090
const ProvinceDefinition::province_number_t province_number
9191
) const;

src/openvic-simulation/map/ProvinceInstance.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -172,15 +172,16 @@ bool ProvinceInstance::remove_core(CountryInstance& core_to_remove, bool warn) {
172172
return true;
173173
}
174174

175-
bool ProvinceInstance::expand_building(building_type_index_t building_type_index) {
176-
BuildingInstance* building = buildings.get_item_by_index(type_safe::get(building_type_index));
175+
bool ProvinceInstance::expand_building(const building_instance_index_t index) {
176+
BuildingInstance* building = buildings.get_item_by_index(type_safe::get(index));
177177
if (building == nullptr) {
178178
spdlog::error_s(
179179
"Trying to expand non-existent building index {} in province {}",
180-
building_type_index, *this
180+
index, *this
181181
);
182182
return false;
183183
}
184+
184185
return building->expand();
185186
}
186187

src/openvic-simulation/map/ProvinceInstance.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ namespace OpenVic {
158158
return owner == nullptr;
159159
}
160160

161-
bool expand_building(building_type_index_t building_type_index);
161+
bool expand_building(const building_instance_index_t index);
162162

163163
bool add_pop(Pop&& pop);
164164
bool add_pop_vec(

0 commit comments

Comments
 (0)