MCPcopy Create free account
hub / github.com/TheForceEngine/TheForceEngine / saveHeader

Function saveHeader

TheForceEngine/TFE_Game/saveSystem.cpp:47–123  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

45 }
46
47 void saveHeader(Stream* stream, const char* saveName)
48 {
49 // Generate a screenshot.
50 DisplayInfo displayInfo;
51 TFE_RenderBackend::getDisplayInfo(&displayInfo);
52 size_t size = displayInfo.width * displayInfo.height * 4;
53 if (size > s_imageBufferSize[0])
54 {
55 s_imageBuffer[0] = (u32*)realloc(s_imageBuffer[0], size);
56 s_imageBufferSize[0] = size;
57 }
58 TFE_RenderBackend::captureScreenToMemory(s_imageBuffer[0]);
59 // Save to memory.
60 u8* png = (u8*)malloc(SAVE_IMAGE_WIDTH * SAVE_IMAGE_HEIGHT * 4);
61 u32 pngSize = 0;
62 if (png)
63 {
64 pngSize = (u32)TFE_Image::writeImageToMemory(png, displayInfo.width, displayInfo.height,
65 SAVE_IMAGE_WIDTH, SAVE_IMAGE_HEIGHT,
66 s_imageBuffer[0]);
67 }
68 else
69 {
70 pngSize = 0;
71 png = (u8*)s_imageBuffer[0];
72 }
73
74 // Master version.
75 u32 version = SVER_CUR;
76 stream->write(&version);
77
78 // Save Name.
79 size_t saveNameLen = strlen(saveName);
80 if (saveNameLen > SAVE_MAX_NAME_LEN - 1) { saveNameLen = SAVE_MAX_NAME_LEN - 1; }
81 u8 len = (u8)saveNameLen;
82 stream->write(&len);
83 stream->writeBuffer(saveName, len);
84
85 // Time and Date of Save.
86 char timeDate[256];
87 TFE_System::getDateTimeString(timeDate);
88 len = (u8)strlen(timeDate);
89 stream->write(&len);
90 stream->writeBuffer(timeDate, len);
91
92 // Level Name
93 char levelName[256];
94 s_game->getLevelName(levelName);
95 len = (u8)strlen(levelName);
96 stream->write(&len);
97 stream->writeBuffer(levelName, len);
98
99 //Level ID
100 char levelId[256];
101 s_game->getLevelId(levelId);
102 len = (u8)strlen(levelId);
103 stream->write(&len);
104 stream->writeBuffer(levelId, len);

Callers 2

serializeHeaderAgentInfoFunction · 0.85
saveGameFunction · 0.85

Calls 11

getDisplayInfoFunction · 0.85
captureScreenToMemoryFunction · 0.85
writeImageToMemoryFunction · 0.85
getDateTimeStringFunction · 0.85
inputMapping_getCounterFunction · 0.85
getLevelNameMethod · 0.80
getLevelIdMethod · 0.80
getModListMethod · 0.80
freeFunction · 0.50
writeMethod · 0.45
writeBufferMethod · 0.45

Tested by

no test coverage detected