Skip to content

Commit 9d6eea0

Browse files
committed
restore old save functions
1 parent 1b5c516 commit 9d6eea0

1 file changed

Lines changed: 95 additions & 52 deletions

File tree

soh/soh/Enhancements/gameplaystats.cpp

Lines changed: 95 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -516,33 +516,6 @@ std::string formatHexOnlyGameplayStat(uint32_t value) {
516516
return fmt::format("{:#x}", value, value);
517517
}
518518

519-
void SaveStats(SaveContext* saveContext, int sectionID, bool fullSave) {
520-
SaveManager::Instance->SaveData("buildVersion", saveContext->ship.stats.buildVersion);
521-
SaveManager::Instance->SaveData("buildVersionMajor", saveContext->ship.stats.buildVersionMajor);
522-
SaveManager::Instance->SaveData("buildVersionMinor", saveContext->ship.stats.buildVersionMinor);
523-
SaveManager::Instance->SaveData("buildVersionPatch", saveContext->ship.stats.buildVersionPatch);
524-
525-
SaveManager::Instance->SaveData("rtaTiming", saveContext->ship.stats.rtaTiming);
526-
SaveManager::Instance->SaveData("fileCreatedAt", saveContext->ship.stats.fileCreatedAt);
527-
SaveManager::Instance->SaveData("playTimer", saveContext->ship.stats.playTimer);
528-
SaveManager::Instance->SaveData("pauseTimer", saveContext->ship.stats.pauseTimer);
529-
530-
SaveManager::Instance->SaveData("tsIdx", saveContext->ship.stats.tsIdx);
531-
SaveManager::Instance->SaveArray("counts", ARRAY_COUNT(saveContext->ship.stats.count), [&](size_t i) {
532-
SaveManager::Instance->SaveData("", saveContext->ship.stats.count[i]);
533-
});
534-
SaveManager::Instance->SaveArray(
535-
"scenesDiscovered", ARRAY_COUNT(saveContext->ship.stats.scenesDiscovered),
536-
[&](size_t i) { SaveManager::Instance->SaveData("", saveContext->ship.stats.scenesDiscovered[i]); });
537-
SaveManager::Instance->SaveArray(
538-
"entrancesDiscovered", ARRAY_COUNT(saveContext->ship.stats.entrancesDiscovered),
539-
[&](size_t i) { SaveManager::Instance->SaveData("", saveContext->ship.stats.entrancesDiscovered[i]); });
540-
}
541-
542-
// bool compareTimestampInfoByTime(const TimestampInfo& a, const TimestampInfo& b) {
543-
// return CVarGetInteger(CVAR_GAMEPLAY_STATS("ReverseTimestamps"), 0) ? a.time > b.time : a.time < b.time;
544-
// }
545-
546519
nlohmann::json GameplayStats_ObjectToJson(const GameplayStatObject& entry) {
547520
return nlohmann::json{
548521
{ "entryType", entry.entryType },
@@ -967,19 +940,6 @@ void GameplayStats_DrawTimeStamps() {
967940
}
968941
}
969942

970-
void InitStats(bool isDebug) {
971-
SohUtils::CopyStringToCharArray(gSaveContext.ship.stats.buildVersion, std::string((char*)gBuildVersion),
972-
ARRAY_COUNT(gSaveContext.ship.stats.buildVersion));
973-
gSaveContext.ship.stats.buildVersionMajor = gBuildVersionMajor;
974-
gSaveContext.ship.stats.buildVersionMinor = gBuildVersionMinor;
975-
gSaveContext.ship.stats.buildVersionPatch = gBuildVersionPatch;
976-
977-
gSaveContext.ship.stats.rtaTiming = CVarGetInteger(CVAR_GAMEPLAY_STATS("RTATiming"), 0);
978-
gSaveContext.ship.stats.fileCreatedAt = 0;
979-
gSaveContext.ship.stats.playTimer = 0;
980-
gSaveContext.ship.stats.pauseTimer = 0;
981-
}
982-
983943
void GameplayStatsWindow::DrawElement() {
984944
DrawGameplayStatsOptionsTab();
985945
UIWidgets::PaddedSeparator();
@@ -1029,38 +989,121 @@ void GameplayStatsWindow::DrawElement() {
1029989
}
1030990
}
1031991

1032-
void GameplayStats_InitSave() {
1033-
SaveManager::Instance->SaveData("buildVersion", gSaveContext.ship.stats.buildVersion);
1034-
SaveManager::Instance->SaveData("buildVersionMajor", gSaveContext.ship.stats.buildVersionMajor);
1035-
SaveManager::Instance->SaveData("buildVersionMinor", gSaveContext.ship.stats.buildVersionMinor);
1036-
SaveManager::Instance->SaveData("buildVersionPatch", gSaveContext.ship.stats.buildVersionPatch);
992+
void InitStats(bool isDebug) {
993+
SohUtils::CopyStringToCharArray(gSaveContext.ship.stats.buildVersion, std::string((char*)gBuildVersion),
994+
ARRAY_COUNT(gSaveContext.ship.stats.buildVersion));
995+
gSaveContext.ship.stats.buildVersionMajor = gBuildVersionMajor;
996+
gSaveContext.ship.stats.buildVersionMinor = gBuildVersionMinor;
997+
gSaveContext.ship.stats.buildVersionPatch = gBuildVersionPatch;
998+
999+
gSaveContext.ship.stats.rtaTiming = CVarGetInteger(CVAR_GAMEPLAY_STATS("RTATiming"), 0);
1000+
gSaveContext.ship.stats.fileCreatedAt = 0;
1001+
gSaveContext.ship.stats.playTimer = 0;
1002+
gSaveContext.ship.stats.pauseTimer = 0;
1003+
}
1004+
1005+
void SaveStats(SaveContext* saveContext, int sectionID, bool fullSave) {
1006+
SaveManager::Instance->SaveData("buildVersion", saveContext->ship.stats.buildVersion);
1007+
SaveManager::Instance->SaveData("buildVersionMajor", saveContext->ship.stats.buildVersionMajor);
1008+
SaveManager::Instance->SaveData("buildVersionMinor", saveContext->ship.stats.buildVersionMinor);
1009+
SaveManager::Instance->SaveData("buildVersionPatch", saveContext->ship.stats.buildVersionPatch);
1010+
1011+
SaveManager::Instance->SaveData("heartPieces", saveContext->ship.stats.heartPieces);
1012+
SaveManager::Instance->SaveData("heartContainers", saveContext->ship.stats.heartContainers);
1013+
SaveManager::Instance->SaveArray("dungeonKeys", ARRAY_COUNT(saveContext->ship.stats.dungeonKeys), [&](size_t i) {
1014+
SaveManager::Instance->SaveData("", saveContext->ship.stats.dungeonKeys[i]);
1015+
});
1016+
SaveManager::Instance->SaveData("rtaTiming", saveContext->ship.stats.rtaTiming);
1017+
SaveManager::Instance->SaveData("fileCreatedAt", saveContext->ship.stats.fileCreatedAt);
1018+
SaveManager::Instance->SaveData("playTimer", saveContext->ship.stats.playTimer);
1019+
SaveManager::Instance->SaveData("pauseTimer", saveContext->ship.stats.pauseTimer);
1020+
//SaveManager::Instance->SaveArray(
1021+
// "itemTimestamps", ARRAY_COUNT(saveContext->ship.stats.itemTimestamp),
1022+
// [&](size_t i) { SaveManager::Instance->SaveData("", saveContext->ship.stats.itemTimestamp[i]); });
1023+
//SaveManager::Instance->SaveArray(
1024+
// "sceneTimestamps", ARRAY_COUNT(saveContext->ship.stats.sceneTimestamps), [&](size_t i) {
1025+
// if (saveContext->ship.stats.sceneTimestamps[i].scene != 254 &&
1026+
// saveContext->ship.stats.sceneTimestamps[i].room != 254) {
1027+
// SaveManager::Instance->SaveStruct("", [&]() {
1028+
// SaveManager::Instance->SaveData("scene", saveContext->ship.stats.sceneTimestamps[i].scene);
1029+
// SaveManager::Instance->SaveData("room", saveContext->ship.stats.sceneTimestamps[i].room);
1030+
// SaveManager::Instance->SaveData("sceneTime", saveContext->ship.stats.sceneTimestamps[i].sceneTime);
1031+
// SaveManager::Instance->SaveData("roomTime", saveContext->ship.stats.sceneTimestamps[i].roomTime);
1032+
// SaveManager::Instance->SaveData("isRoom", saveContext->ship.stats.sceneTimestamps[i].isRoom);
1033+
// });
1034+
// }
1035+
// });
1036+
SaveManager::Instance->SaveData("tsIdx", saveContext->ship.stats.tsIdx);
1037+
SaveManager::Instance->SaveArray("counts", ARRAY_COUNT(saveContext->ship.stats.count), [&](size_t i) {
1038+
SaveManager::Instance->SaveData("", saveContext->ship.stats.count[i]);
1039+
});
1040+
SaveManager::Instance->SaveArray(
1041+
"scenesDiscovered", ARRAY_COUNT(saveContext->ship.stats.scenesDiscovered),
1042+
[&](size_t i) { SaveManager::Instance->SaveData("", saveContext->ship.stats.scenesDiscovered[i]); });
1043+
SaveManager::Instance->SaveArray(
1044+
"entrancesDiscovered", ARRAY_COUNT(saveContext->ship.stats.entrancesDiscovered),
1045+
[&](size_t i) { SaveManager::Instance->SaveData("", saveContext->ship.stats.entrancesDiscovered[i]); });
1046+
}
10371047

1038-
SaveManager::Instance->SaveData("rtaTiming", gSaveContext.ship.stats.rtaTiming);
1039-
SaveManager::Instance->SaveData("fileCreatedAt", gSaveContext.ship.stats.fileCreatedAt);
1040-
SaveManager::Instance->SaveData("playTimer", gSaveContext.ship.stats.playTimer);
1041-
SaveManager::Instance->SaveData("pauseTimer", gSaveContext.ship.stats.pauseTimer);
10421048

1049+
void LoadStatsVersion1() {
10431050
SaveManager::Instance->LoadCharArray("buildVersion", gSaveContext.ship.stats.buildVersion,
10441051
ARRAY_COUNT(gSaveContext.ship.stats.buildVersion));
10451052
SaveManager::Instance->LoadData("buildVersionMajor", gSaveContext.ship.stats.buildVersionMajor);
10461053
SaveManager::Instance->LoadData("buildVersionMinor", gSaveContext.ship.stats.buildVersionMinor);
10471054
SaveManager::Instance->LoadData("buildVersionPatch", gSaveContext.ship.stats.buildVersionPatch);
10481055

1056+
SaveManager::Instance->LoadData("heartPieces", gSaveContext.ship.stats.heartPieces);
1057+
SaveManager::Instance->LoadData("heartContainers", gSaveContext.ship.stats.heartContainers);
1058+
SaveManager::Instance->LoadArray("dungeonKeys", ARRAY_COUNT(gSaveContext.ship.stats.dungeonKeys), [](size_t i) {
1059+
SaveManager::Instance->LoadData("", gSaveContext.ship.stats.dungeonKeys[i]);
1060+
});
10491061
SaveManager::Instance->LoadData("rtaTiming", gSaveContext.ship.stats.rtaTiming);
10501062
SaveManager::Instance->LoadData("fileCreatedAt", gSaveContext.ship.stats.fileCreatedAt);
10511063
SaveManager::Instance->LoadData("playTimer", gSaveContext.ship.stats.playTimer);
10521064
SaveManager::Instance->LoadData("pauseTimer", gSaveContext.ship.stats.pauseTimer);
1065+
//SaveManager::Instance->LoadArray(
1066+
// "itemTimestamps", ARRAY_COUNT(gSaveContext.ship.stats.itemTimestamp),
1067+
// [](size_t i) { SaveManager::Instance->LoadData("", gSaveContext.ship.stats.itemTimestamp[i]); });
1068+
//SaveManager::Instance->LoadArray(
1069+
// "sceneTimestamps", ARRAY_COUNT(gSaveContext.ship.stats.sceneTimestamps), [&](size_t i) {
1070+
// SaveManager::Instance->LoadStruct("", [&]() {
1071+
// int scene, room, sceneTime, roomTime, isRoom;
1072+
// SaveManager::Instance->LoadData("scene", scene);
1073+
// SaveManager::Instance->LoadData("room", room);
1074+
// SaveManager::Instance->LoadData("sceneTime", sceneTime);
1075+
// SaveManager::Instance->LoadData("roomTime", roomTime);
1076+
// SaveManager::Instance->LoadData("isRoom", isRoom);
1077+
// if (scene == 0 && room == 0 && sceneTime == 0 && roomTime == 0 && isRoom == 0) {
1078+
// return;
1079+
// }
1080+
// gSaveContext.ship.stats.sceneTimestamps[i].scene = scene;
1081+
// gSaveContext.ship.stats.sceneTimestamps[i].room = room;
1082+
// gSaveContext.ship.stats.sceneTimestamps[i].sceneTime = sceneTime;
1083+
// gSaveContext.ship.stats.sceneTimestamps[i].roomTime = roomTime;
1084+
// gSaveContext.ship.stats.sceneTimestamps[i].isRoom = isRoom;
1085+
// });
1086+
// });
1087+
SaveManager::Instance->LoadData("tsIdx", gSaveContext.ship.stats.tsIdx);
1088+
SaveManager::Instance->LoadArray("counts", ARRAY_COUNT(gSaveContext.ship.stats.count), [](size_t i) {
1089+
SaveManager::Instance->LoadData("", gSaveContext.ship.stats.count[i]);
1090+
});
1091+
SaveManager::Instance->LoadArray(
1092+
"scenesDiscovered", ARRAY_COUNT(gSaveContext.ship.stats.scenesDiscovered),
1093+
[](size_t i) { SaveManager::Instance->LoadData("", gSaveContext.ship.stats.scenesDiscovered[i]); });
1094+
SaveManager::Instance->LoadArray(
1095+
"entrancesDiscovered", ARRAY_COUNT(gSaveContext.ship.stats.entrancesDiscovered),
1096+
[](size_t i) { SaveManager::Instance->LoadData("", gSaveContext.ship.stats.entrancesDiscovered[i]); });
10531097
}
10541098

10551099
void GameplayStatsWindow::InitElement() {
1056-
SaveManager::Instance->AddLoadFunction("sohStats", 1, GameplayStats_InitSave);
1100+
SaveManager::Instance->AddLoadFunction("sohStats", 1, LoadStatsVersion1);
10571101
// Add main section save, no parent.
10581102
SaveManager::Instance->AddSaveFunction("sohStats", 1, SaveStats, true, SECTION_PARENT_NONE);
10591103
// Add subsections, parent of "sohStats". Not sure how to do this without the redundant references to "SaveStats".
1060-
SaveManager::Instance->AddInitFunction(InitStats);
1061-
10621104
SaveManager::Instance->AddSaveFunction("entrances", 1, SaveStats, false, SECTION_ID_STATS);
10631105
SaveManager::Instance->AddSaveFunction("scenes", 1, SaveStats, false, SECTION_ID_STATS);
1106+
SaveManager::Instance->AddInitFunction(InitStats);
10641107
}
10651108

10661109
void RegisterGameplayStats() {

0 commit comments

Comments
 (0)