Format S6Exporter.cpp

Pretty much just align field assignments
This commit is contained in:
Michał Janiszewski 2017-04-24 22:33:00 +02:00
parent a83dd095d6
commit ad7ecc0d85
1 changed files with 82 additions and 82 deletions

View File

@ -82,12 +82,12 @@ void S6Exporter::SaveScenario(IStream * stream)
void S6Exporter::Save(IStream * stream, bool isScenario) void S6Exporter::Save(IStream * stream, bool isScenario)
{ {
_s6.header.type = isScenario ? S6_TYPE_SCENARIO : S6_TYPE_SAVEDGAME; _s6.header.type = isScenario ? S6_TYPE_SCENARIO : S6_TYPE_SAVEDGAME;
_s6.header.classic_flag = 0; _s6.header.classic_flag = 0;
_s6.header.num_packed_objects = uint16(ExportObjectsList.size()); _s6.header.num_packed_objects = uint16(ExportObjectsList.size());
_s6.header.version = S6_RCT2_VERSION; _s6.header.version = S6_RCT2_VERSION;
_s6.header.magic_number = S6_MAGIC_NUMBER; _s6.header.magic_number = S6_MAGIC_NUMBER;
_s6.game_version_number = 201028; _s6.game_version_number = 201028;
auto chunkWriter = SawyerChunkWriter(stream); auto chunkWriter = SawyerChunkWriter(stream);
@ -139,7 +139,7 @@ void S6Exporter::Save(IStream * stream, bool isScenario)
// Read all written bytes back into a single buffer // Read all written bytes back into a single buffer
stream->SetPosition(0); stream->SetPosition(0);
auto data = std::unique_ptr<uint8, std::function<void(uint8*)>>(stream->ReadArray<uint8>(fileSize), Memory::Free<uint8>); auto data = std::unique_ptr<uint8, std::function<void(uint8 *)>>(stream->ReadArray<uint8>(fileSize), Memory::Free<uint8>);
uint32 checksum = sawyercoding_calculate_checksum(data.get(), fileSize); uint32 checksum = sawyercoding_calculate_checksum(data.get(), fileSize);
// Write the checksum on the end // Write the checksum on the end
@ -153,21 +153,21 @@ void S6Exporter::Export()
for (sint32 i = 0; i < OBJECT_ENTRY_COUNT; i++) for (sint32 i = 0; i < OBJECT_ENTRY_COUNT; i++)
{ {
const rct_object_entry * entry = get_loaded_object_entry(i); const rct_object_entry * entry = get_loaded_object_entry(i);
void * entryData = get_loaded_object_chunk(i); void * entryData = get_loaded_object_chunk(i);
if (entryData == (void *)-1) if (entryData == (void *)-1)
{ {
Memory::Set(&_s6.objects[i], 0xFF, sizeof(rct_object_entry)); Memory::Set(&_s6.objects[i], 0xFF, sizeof(rct_object_entry));
} }
else else
{ {
_s6.objects[i] = *((rct_object_entry*)entry); _s6.objects[i] = *((rct_object_entry *)entry);
} }
} }
_s6.elapsed_months = gDateMonthsElapsed; _s6.elapsed_months = gDateMonthsElapsed;
_s6.current_day = gDateMonthTicks; _s6.current_day = gDateMonthTicks;
_s6.scenario_ticks = gScenarioTicks; _s6.scenario_ticks = gScenarioTicks;
_s6.scenario_srand_0 = gScenarioSrand0; _s6.scenario_srand_0 = gScenarioSrand0;
_s6.scenario_srand_1 = gScenarioSrand1; _s6.scenario_srand_1 = gScenarioSrand1;
@ -181,15 +181,15 @@ void S6Exporter::Export()
for (sint32 i = 0; i < NUM_SPRITE_LISTS; i++) for (sint32 i = 0; i < NUM_SPRITE_LISTS; i++)
{ {
_s6.sprite_lists_head[i] = gSpriteListHead[i]; _s6.sprite_lists_head[i] = gSpriteListHead[i];
_s6.sprite_lists_count[i] = gSpriteListCount[i]; _s6.sprite_lists_count[i] = gSpriteListCount[i];
} }
_s6.park_name = gParkName; _s6.park_name = gParkName;
// pad_013573D6 // pad_013573D6
_s6.park_name_args = gParkNameArgs; _s6.park_name_args = gParkNameArgs;
_s6.initial_cash = gInitialCash; _s6.initial_cash = gInitialCash;
_s6.current_loan = gBankLoan; _s6.current_loan = gBankLoan;
_s6.park_flags = gParkFlags; _s6.park_flags = gParkFlags;
_s6.park_entrance_fee = gParkEntranceFee; _s6.park_entrance_fee = gParkEntranceFee;
// rct1_park_entrance_x // rct1_park_entrance_x
// rct1_park_entrance_y // rct1_park_entrance_y
@ -197,14 +197,14 @@ void S6Exporter::Export()
// rct1_park_entrance_z // rct1_park_entrance_z
memcpy(_s6.peep_spawns, gPeepSpawns, sizeof(_s6.peep_spawns)); memcpy(_s6.peep_spawns, gPeepSpawns, sizeof(_s6.peep_spawns));
_s6.guest_count_change_modifier = gGuestChangeModifier; _s6.guest_count_change_modifier = gGuestChangeModifier;
_s6.current_research_level = gResearchFundingLevel; _s6.current_research_level = gResearchFundingLevel;
// pad_01357400 // pad_01357400
memcpy(_s6.researched_ride_types, gResearchedRideTypes, sizeof(_s6.researched_ride_types)); memcpy(_s6.researched_ride_types, gResearchedRideTypes, sizeof(_s6.researched_ride_types));
memcpy(_s6.researched_ride_entries, gResearchedRideEntries, sizeof(_s6.researched_ride_entries)); memcpy(_s6.researched_ride_entries, gResearchedRideEntries, sizeof(_s6.researched_ride_entries));
memcpy(_s6.researched_track_types_a, gResearchedTrackTypesA, sizeof(_s6.researched_track_types_a)); memcpy(_s6.researched_track_types_a, gResearchedTrackTypesA, sizeof(_s6.researched_track_types_a));
memcpy(_s6.researched_track_types_b, gResearchedTrackTypesB, sizeof(_s6.researched_track_types_b)); memcpy(_s6.researched_track_types_b, gResearchedTrackTypesB, sizeof(_s6.researched_track_types_b));
_s6.guests_in_park = gNumGuestsInPark; _s6.guests_in_park = gNumGuestsInPark;
_s6.guests_heading_for_park = gNumGuestsHeadingForPark; _s6.guests_heading_for_park = gNumGuestsHeadingForPark;
memcpy(_s6.expenditure_table, gExpenditureTable, sizeof(_s6.expenditure_table)); memcpy(_s6.expenditure_table, gExpenditureTable, sizeof(_s6.expenditure_table));
@ -222,37 +222,37 @@ void S6Exporter::Export()
memcpy(_s6.park_rating_history, gParkRatingHistory, sizeof(_s6.park_rating_history)); memcpy(_s6.park_rating_history, gParkRatingHistory, sizeof(_s6.park_rating_history));
memcpy(_s6.guests_in_park_history, gGuestsInParkHistory, sizeof(_s6.guests_in_park_history)); memcpy(_s6.guests_in_park_history, gGuestsInParkHistory, sizeof(_s6.guests_in_park_history));
_s6.active_research_types = gResearchPriorities; _s6.active_research_types = gResearchPriorities;
_s6.research_progress_stage = gResearchProgressStage; _s6.research_progress_stage = gResearchProgressStage;
_s6.last_researched_item_subject = gResearchLastItemSubject; _s6.last_researched_item_subject = gResearchLastItemSubject;
// pad_01357CF8 // pad_01357CF8
_s6.next_research_item = gResearchNextItem; _s6.next_research_item = gResearchNextItem;
_s6.research_progress = gResearchProgress; _s6.research_progress = gResearchProgress;
_s6.next_research_category = gResearchNextCategory; _s6.next_research_category = gResearchNextCategory;
_s6.next_research_expected_day = gResearchExpectedDay; _s6.next_research_expected_day = gResearchExpectedDay;
_s6.next_research_expected_month = gResearchExpectedMonth; _s6.next_research_expected_month = gResearchExpectedMonth;
_s6.guest_initial_happiness = gGuestInitialHappiness; _s6.guest_initial_happiness = gGuestInitialHappiness;
_s6.park_size = gParkSize; _s6.park_size = gParkSize;
_s6.guest_generation_probability = _guestGenerationProbability; _s6.guest_generation_probability = _guestGenerationProbability;
_s6.total_ride_value = gTotalRideValue; _s6.total_ride_value = gTotalRideValue;
_s6.maximum_loan = gMaxBankLoan; _s6.maximum_loan = gMaxBankLoan;
_s6.guest_initial_cash = gGuestInitialCash; _s6.guest_initial_cash = gGuestInitialCash;
_s6.guest_initial_hunger = gGuestInitialHunger; _s6.guest_initial_hunger = gGuestInitialHunger;
_s6.guest_initial_thirst = gGuestInitialThirst; _s6.guest_initial_thirst = gGuestInitialThirst;
_s6.objective_type = gScenarioObjectiveType; _s6.objective_type = gScenarioObjectiveType;
_s6.objective_year = gScenarioObjectiveYear; _s6.objective_year = gScenarioObjectiveYear;
// pad_013580FA // pad_013580FA
_s6.objective_currency = gScenarioObjectiveCurrency; _s6.objective_currency = gScenarioObjectiveCurrency;
_s6.objective_guests = gScenarioObjectiveNumGuests; _s6.objective_guests = gScenarioObjectiveNumGuests;
memcpy(_s6.campaign_weeks_left, gMarketingCampaignDaysLeft, sizeof(_s6.campaign_weeks_left)); memcpy(_s6.campaign_weeks_left, gMarketingCampaignDaysLeft, sizeof(_s6.campaign_weeks_left));
memcpy(_s6.campaign_ride_index, gMarketingCampaignRideIndex, sizeof(_s6.campaign_ride_index)); memcpy(_s6.campaign_ride_index, gMarketingCampaignRideIndex, sizeof(_s6.campaign_ride_index));
memcpy(_s6.balance_history, gCashHistory, sizeof(_s6.balance_history)); memcpy(_s6.balance_history, gCashHistory, sizeof(_s6.balance_history));
_s6.current_expenditure = gCurrentExpenditure; _s6.current_expenditure = gCurrentExpenditure;
_s6.current_profit = gCurrentProfit; _s6.current_profit = gCurrentProfit;
_s6.weekly_profit_average_dividend = gWeeklyProfitAverageDividend; _s6.weekly_profit_average_dividend = gWeeklyProfitAverageDividend;
_s6.weekly_profit_average_divisor = gWeeklyProfitAverageDivisor; _s6.weekly_profit_average_divisor = gWeeklyProfitAverageDivisor;
// pad_0135833A // pad_0135833A
memcpy(_s6.weekly_profit_history, gWeeklyProfitHistory, sizeof(_s6.weekly_profit_history)); memcpy(_s6.weekly_profit_history, gWeeklyProfitHistory, sizeof(_s6.weekly_profit_history));
@ -262,29 +262,29 @@ void S6Exporter::Export()
memcpy(_s6.park_value_history, gParkValueHistory, sizeof(_s6.park_value_history)); memcpy(_s6.park_value_history, gParkValueHistory, sizeof(_s6.park_value_history));
_s6.completed_company_value = gScenarioCompletedCompanyValue; _s6.completed_company_value = gScenarioCompletedCompanyValue;
_s6.total_admissions = gTotalAdmissions; _s6.total_admissions = gTotalAdmissions;
_s6.income_from_admissions = gTotalIncomeFromAdmissions; _s6.income_from_admissions = gTotalIncomeFromAdmissions;
_s6.company_value = gCompanyValue; _s6.company_value = gCompanyValue;
memcpy(_s6.peep_warning_throttle, gPeepWarningThrottle, sizeof(_s6.peep_warning_throttle)); memcpy(_s6.peep_warning_throttle, gPeepWarningThrottle, sizeof(_s6.peep_warning_throttle));
// Awards // Awards
for (sint32 i = 0; i < RCT12_MAX_AWARDS; i++) for (sint32 i = 0; i < RCT12_MAX_AWARDS; i++)
{ {
Award * src = &gCurrentAwards[i]; Award * src = &gCurrentAwards[i];
rct12_award * dst = &_s6.awards[i]; rct12_award * dst = &_s6.awards[i];
dst->time = src->Time; dst->time = src->Time;
dst->type = src->Type; dst->type = src->Type;
} }
_s6.land_price = gLandPrice; _s6.land_price = gLandPrice;
_s6.construction_rights_price = gConstructionRightsPrice; _s6.construction_rights_price = gConstructionRightsPrice;
// unk_01358774 // unk_01358774
// pad_01358776 // pad_01358776
// _s6.cd_key // _s6.cd_key
// _s6.game_version_number // _s6.game_version_number
_s6.completed_company_value_record = gScenarioCompanyValueRecord; _s6.completed_company_value_record = gScenarioCompanyValueRecord;
_s6.loan_hash = GetLoanHash(gInitialCash, gBankLoan, gMaxBankLoan); _s6.loan_hash = GetLoanHash(gInitialCash, gBankLoan, gMaxBankLoan);
_s6.ride_count = gRideCount; _s6.ride_count = gRideCount;
// pad_013587CA // pad_013587CA
_s6.historical_profit = gHistoricalProfit; _s6.historical_profit = gHistoricalProfit;
// pad_013587D4 // pad_013587D4
@ -292,14 +292,14 @@ void S6Exporter::Export()
_s6.cash = gCashEncrypted; _s6.cash = gCashEncrypted;
// pad_013587FC // pad_013587FC
_s6.park_rating_casualty_penalty = gParkRatingCasualtyPenalty; _s6.park_rating_casualty_penalty = gParkRatingCasualtyPenalty;
_s6.map_size_units = gMapSizeUnits; _s6.map_size_units = gMapSizeUnits;
_s6.map_size_minus_2 = gMapSizeMinus2; _s6.map_size_minus_2 = gMapSizeMinus2;
_s6.map_size = gMapSize; _s6.map_size = gMapSize;
_s6.map_max_xy = gMapSizeMaxXY; _s6.map_max_xy = gMapSizeMaxXY;
_s6.same_price_throughout = gSamePriceThroughoutParkA; _s6.same_price_throughout = gSamePriceThroughoutParkA;
_s6.suggested_max_guests = _suggestedGuestMaximum; _s6.suggested_max_guests = _suggestedGuestMaximum;
_s6.park_rating_warning_days = gScenarioParkRatingWarningDays; _s6.park_rating_warning_days = gScenarioParkRatingWarningDays;
_s6.last_entrance_style = gLastEntranceStyle; _s6.last_entrance_style = gLastEntranceStyle;
// rct1_water_colour // rct1_water_colour
// pad_01358842 // pad_01358842
memcpy(_s6.research_items, gResearchItems, sizeof(_s6.research_items)); memcpy(_s6.research_items, gResearchItems, sizeof(_s6.research_items));
@ -312,9 +312,9 @@ void S6Exporter::Export()
// Preserve compatibility with vanilla RCT2's save format. // Preserve compatibility with vanilla RCT2's save format.
for (uint8 i = 0; i < RCT12_MAX_PARK_ENTRANCES; i++) for (uint8 i = 0; i < RCT12_MAX_PARK_ENTRANCES; i++)
{ {
_s6.park_entrance_x[i] = gParkEntrances[i].x; _s6.park_entrance_x[i] = gParkEntrances[i].x;
_s6.park_entrance_y[i] = gParkEntrances[i].y; _s6.park_entrance_y[i] = gParkEntrances[i].y;
_s6.park_entrance_z[i] = gParkEntrances[i].z; _s6.park_entrance_z[i] = gParkEntrances[i].z;
_s6.park_entrance_direction[i] = gParkEntrances[i].direction; _s6.park_entrance_direction[i] = gParkEntrances[i].direction;
} }
safe_strcpy(_s6.scenario_filename, _scenarioFileName, sizeof(_s6.scenario_filename)); safe_strcpy(_s6.scenario_filename, _scenarioFileName, sizeof(_s6.scenario_filename));
@ -323,10 +323,10 @@ void S6Exporter::Export()
memcpy(_s6.custom_strings, gUserStrings, sizeof(_s6.custom_strings)); memcpy(_s6.custom_strings, gUserStrings, sizeof(_s6.custom_strings));
_s6.game_ticks_1 = gCurrentTicks; _s6.game_ticks_1 = gCurrentTicks;
memcpy(_s6.rides, gRideList, sizeof(_s6.rides)); memcpy(_s6.rides, gRideList, sizeof(_s6.rides));
_s6.saved_age = gSavedAge; _s6.saved_age = gSavedAge;
_s6.saved_view_x = gSavedViewX; _s6.saved_view_x = gSavedViewX;
_s6.saved_view_y = gSavedViewY; _s6.saved_view_y = gSavedViewY;
_s6.saved_view_zoom = gSavedViewZoom; _s6.saved_view_zoom = gSavedViewZoom;
_s6.saved_view_rotation = gSavedViewRotation; _s6.saved_view_rotation = gSavedViewRotation;
memcpy(_s6.map_animations, gAnimatedObjects, sizeof(_s6.map_animations)); memcpy(_s6.map_animations, gAnimatedObjects, sizeof(_s6.map_animations));
_s6.num_map_animations = gNumMapAnimations; _s6.num_map_animations = gNumMapAnimations;
@ -334,41 +334,41 @@ void S6Exporter::Export()
_s6.ride_ratings_calc_data = gRideRatingsCalcData; _s6.ride_ratings_calc_data = gRideRatingsCalcData;
memcpy(_s6.ride_measurements, gRideMeasurements, sizeof(_s6.ride_measurements)); memcpy(_s6.ride_measurements, gRideMeasurements, sizeof(_s6.ride_measurements));
_s6.next_guest_index = gNextGuestNumber; _s6.next_guest_index = gNextGuestNumber;
_s6.grass_and_scenery_tilepos = gGrassSceneryTileLoopPosition; _s6.grass_and_scenery_tilepos = gGrassSceneryTileLoopPosition;
memcpy(_s6.patrol_areas, gStaffPatrolAreas, sizeof(_s6.patrol_areas)); memcpy(_s6.patrol_areas, gStaffPatrolAreas, sizeof(_s6.patrol_areas));
memcpy(_s6.staff_modes, gStaffModes, sizeof(_s6.staff_modes)); memcpy(_s6.staff_modes, gStaffModes, sizeof(_s6.staff_modes));
// unk_13CA73E // unk_13CA73E
// pad_13CA73F // pad_13CA73F
_s6.byte_13CA740 = gUnk13CA740; _s6.byte_13CA740 = gUnk13CA740;
_s6.climate = gClimate; _s6.climate = gClimate;
// pad_13CA741; // pad_13CA741;
// byte_13CA742 // byte_13CA742
// pad_013CA747 // pad_013CA747
_s6.climate_update_timer = gClimateUpdateTimer; _s6.climate_update_timer = gClimateUpdateTimer;
_s6.current_weather = gClimateCurrentWeather; _s6.current_weather = gClimateCurrentWeather;
_s6.next_weather = gClimateNextWeather; _s6.next_weather = gClimateNextWeather;
_s6.temperature = gClimateCurrentTemperature; _s6.temperature = gClimateCurrentTemperature;
_s6.next_temperature = gClimateNextTemperature; _s6.next_temperature = gClimateNextTemperature;
_s6.current_weather_effect = gClimateCurrentWeatherEffect; _s6.current_weather_effect = gClimateCurrentWeatherEffect;
_s6.next_weather_effect = gClimateNextWeatherEffect; _s6.next_weather_effect = gClimateNextWeatherEffect;
_s6.current_weather_gloom = gClimateCurrentWeatherGloom; _s6.current_weather_gloom = gClimateCurrentWeatherGloom;
_s6.next_weather_gloom = gClimateNextWeatherGloom; _s6.next_weather_gloom = gClimateNextWeatherGloom;
_s6.current_rain_level = gClimateCurrentRainLevel; _s6.current_rain_level = gClimateCurrentRainLevel;
_s6.next_rain_level = gClimateNextRainLevel; _s6.next_rain_level = gClimateNextRainLevel;
// News items // News items
for (size_t i = 0; i < RCT12_MAX_NEWS_ITEMS; i++) for (size_t i = 0; i < RCT12_MAX_NEWS_ITEMS; i++)
{ {
const NewsItem * src = &gNewsItems[i]; const NewsItem * src = &gNewsItems[i];
rct12_news_item * dst = &_s6.news_items[i]; rct12_news_item * dst = &_s6.news_items[i];
dst->Type = src->Type; dst->Type = src->Type;
dst->Flags = src->Flags; dst->Flags = src->Flags;
dst->Assoc = src->Assoc; dst->Assoc = src->Assoc;
dst->Ticks = src->Ticks; dst->Ticks = src->Ticks;
dst->MonthYear = src->MonthYear; dst->MonthYear = src->MonthYear;
dst->Day = src->Day; dst->Day = src->Day;
memcpy(dst->Text, src->Text, sizeof(dst->Text)); memcpy(dst->Text, src->Text, sizeof(dst->Text));
} }
@ -435,13 +435,13 @@ extern "C"
viewport_set_saved_view(); viewport_set_saved_view();
bool result = false; bool result = false;
auto s6exporter = new S6Exporter(); auto s6exporter = new S6Exporter();
try try
{ {
if (flags & S6_SAVE_FLAG_EXPORT) if (flags & S6_SAVE_FLAG_EXPORT)
{ {
IObjectManager * objManager = GetObjectManager(); IObjectManager * objManager = GetObjectManager();
s6exporter->ExportObjectsList = objManager->GetPackableObjects(); s6exporter->ExportObjectsList = objManager->GetPackableObjects();
} }
s6exporter->RemoveTracklessRides = true; s6exporter->RemoveTracklessRides = true;