loading scen headers, skip parts of legacy load that may error

This commit is contained in:
2025-08-01 11:33:22 -05:00
committed by Celtic Minstrel
parent cfd6f130fb
commit b48cccca64
3 changed files with 10 additions and 6 deletions

View File

@@ -266,8 +266,11 @@ bool load_scenario_v1(fs::path file_to_load, cScenario& scenario, eLoadScenario
return false;
}
port_item_list(&item_data);
scenario.import_legacy(temp_scenario);
scenario.import_legacy(item_data);
scenario.import_legacy(temp_scenario, load_type == eLoadScenario::ONLY_HEADER);
if(load_type == eLoadScenario::FULL){
scenario.ter_types[23].fly_over = false;
scenario.import_legacy(item_data);
}
// TODO: Consider skipping the fread and assignment when len is 0
scenario.special_items.resize(50);
@@ -295,8 +298,6 @@ bool load_scenario_v1(fs::path file_to_load, cScenario& scenario, eLoadScenario
fclose(file_id);
scenario.ter_types[23].fly_over = false;
scenario.scen_file = file_to_load;
if(load_type == eLoadScenario::ONLY_HEADER) return true;
load_spec_graphics_v1(scenario.scen_file);

View File

@@ -231,7 +231,7 @@ cScenario::cItemStorage::cItemStorage() : ter_type(-1), property(0) {
item_odds[i] = 0;
}
void cScenario::import_legacy(legacy::scenario_data_type& old){
void cScenario::import_legacy(legacy::scenario_data_type& old, bool header_only){
is_legacy = true;
// TODO eventually the absence of feature flags here will replace is_legacy altogether
feature_flags = {};
@@ -267,6 +267,9 @@ void cScenario::import_legacy(legacy::scenario_data_type& old){
rating = eContentRating(old.rating);
// TODO: Is this used anywhere?
uses_custom_graphics = old.uses_custom_graphics;
if(header_only) return;
boats.resize(30);
horses.resize(30);
for(short i = 0; i < 30; i++) {

View File

@@ -151,7 +151,7 @@ public:
towns.back()->init_start();
}
void import_legacy(legacy::scenario_data_type& old);
void import_legacy(legacy::scenario_data_type& old, bool header_only = false);
void import_legacy(legacy::scen_item_data_type& old);
void writeTo(cTagFile& file) const;
void readFrom(const cTagFile& file);