@@ -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-
546519nlohmann::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-
983943void 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
10551099void 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
10661109void RegisterGameplayStats () {
0 commit comments