MCPcopy Create free account
hub / github.com/TombEngine/TombEngine / Build

Method Build

TombEngine/Game/savegame.cpp:254–1732  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

252}
253
254const std::vector<byte> SaveGame::Build()
255{
256 ItemInfo itemToSerialize{};
257 FlatBufferBuilder fbb{};
258
259 std::vector<flatbuffers::Offset<Save::Item>> serializedItems{};
260
261 // Savegame header
262 auto levelNameOffset = fbb.CreateString(g_GameFlow->GetString(g_GameFlow->GetLevel(CurrentLevel)->NameStringKey.c_str()));
263
264 Save::SaveGameHeaderBuilder sghb{ fbb };
265 sghb.add_level_name(levelNameOffset);
266 sghb.add_level_hash(LastLevelHash);
267
268 const auto& gameTime = SaveGame::Statistics.Game.TimeTaken;
269 sghb.add_hours(gameTime.GetHours());
270 sghb.add_minutes(gameTime.GetMinutes());
271 sghb.add_seconds(gameTime.GetSeconds());
272
273 sghb.add_level(CurrentLevel);
274 sghb.add_timer(GlobalCounter);
275 sghb.add_count(++LastSaveGame);
276 auto headerOffset = sghb.Finish();
277
278 Save::SaveGameStatisticsBuilder sgLevelStatisticsBuilder{ fbb };
279 sgLevelStatisticsBuilder.add_ammo_hits(Statistics.Level.AmmoHits);
280 sgLevelStatisticsBuilder.add_ammo_used(Statistics.Level.AmmoUsed);
281 sgLevelStatisticsBuilder.add_kills(Statistics.Level.Kills);
282 sgLevelStatisticsBuilder.add_medipacks_used(Statistics.Level.HealthUsed);
283 sgLevelStatisticsBuilder.add_damage_taken(Statistics.Level.DamageTaken);
284 sgLevelStatisticsBuilder.add_distance(Statistics.Level.Distance);
285 sgLevelStatisticsBuilder.add_pickups(Statistics.Level.Pickups);
286 sgLevelStatisticsBuilder.add_secrets(Statistics.Level.Secrets);
287 sgLevelStatisticsBuilder.add_timer(SaveGame::Statistics.Level.TimeTaken);
288 auto levelStatisticsOffset = sgLevelStatisticsBuilder.Finish();
289
290 Save::SaveGameStatisticsBuilder sgGameStatisticsBuilder{ fbb };
291 sgGameStatisticsBuilder.add_ammo_hits(Statistics.Game.AmmoHits);
292 sgGameStatisticsBuilder.add_ammo_used(Statistics.Game.AmmoUsed);
293 sgGameStatisticsBuilder.add_kills(Statistics.Game.Kills);
294 sgGameStatisticsBuilder.add_medipacks_used(Statistics.Game.HealthUsed);
295 sgGameStatisticsBuilder.add_damage_taken(Statistics.Game.DamageTaken);
296 sgGameStatisticsBuilder.add_distance(Statistics.Game.Distance);
297 sgGameStatisticsBuilder.add_pickups(Statistics.Game.Pickups);
298 sgGameStatisticsBuilder.add_secrets(Statistics.Game.Secrets);
299 sgGameStatisticsBuilder.add_timer(SaveGame::Statistics.Game.TimeTaken);
300 auto gameStatisticsOffset = sgGameStatisticsBuilder.Finish();
301
302 // Background video playback
303 auto videoNameOffset = fbb.CreateString(g_VideoPlayer.GetFileName());
304 Save::VideoInfoBuilder sgVideoInfoBuilder{ fbb };
305 sgVideoInfoBuilder.add_name(videoNameOffset);
306 sgVideoInfoBuilder.add_position(g_VideoPlayer.GetNormalizedPosition());
307 sgVideoInfoBuilder.add_silent(g_VideoPlayer.GetSilent());
308 sgVideoInfoBuilder.add_looped(g_VideoPlayer.GetLooped());
309 auto videoInfoOffset = sgVideoInfoBuilder.Finish();
310
311 // Lara

Callers

nothing calls this directly

Calls 15

FromEulerAnglesFunction · 0.85
FromVector3Function · 0.85
FromPoseFunction · 0.85
FromVector3iFunction · 0.85
FromGameVectorFunction · 0.85
GetCreatureInfoFunction · 0.85
CreateBadBoxFunction · 0.85
FromVector4Function · 0.85
GetSeedFunction · 0.85
SavedVarTypeEnum · 0.85

Tested by

no test coverage detected