| 3041 | } |
| 3042 | |
| 3043 | void SaveGame::Parse(const std::vector<byte>& buffer, bool hubMode) |
| 3044 | { |
| 3045 | if (!Save::VerifySaveGameBuffer(flatbuffers::Verifier(buffer.data(), buffer.size()))) |
| 3046 | { |
| 3047 | TENLog("Savegame data is incorrect and was not loaded! Incorrect flatbuffer format or memory corruption?", LogLevel::Error); |
| 3048 | return; |
| 3049 | } |
| 3050 | |
| 3051 | JustLoaded = true; |
| 3052 | |
| 3053 | const Save::SaveGame* s = Save::GetSaveGame(buffer.data()); |
| 3054 | |
| 3055 | ParseLevel(s, hubMode); |
| 3056 | ParseLua(s, hubMode); |
| 3057 | ParseStatistics(s, hubMode); |
| 3058 | |
| 3059 | // Effects and player data is ignored when loading hub. |
| 3060 | // Effects are commonly believed to be non-preservable, while player data is transfered from previous level. |
| 3061 | |
| 3062 | if (hubMode) |
| 3063 | return; |
| 3064 | |
| 3065 | ParseEffects(s); |
| 3066 | ParsePlayer(s); |
| 3067 | } |
| 3068 | |
| 3069 | bool SaveGame::LoadHeader(int slot, SaveGameHeader* header) |
| 3070 | { |
no test coverage detected