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

Function agent_serialize

TheForceEngine/TFE_DarkForces/agent.cpp:61–145  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

59 }
60
61 void agent_serialize(Stream* stream)
62 {
63 bool write = serialization_getMode() == SMODE_WRITE;
64
65 SERIALIZE(SaveVersionInit, s_levelComplete, JFALSE);
66 SERIALIZE(SaveVersionInit, s_invalidLevelIndex, JFALSE);
67 SERIALIZE(SaveVersionInit, s_maxLevelIndex, JFALSE);
68 SERIALIZE(SaveVersionInit, s_levelIndex, JFALSE);
69
70 // Agent.
71 char name[64] = { 0 };
72 u8 agentNameLen = 0;
73 if (write)
74 {
75 strcpy(name, s_agentData[s_agentId].name);
76 name[32] = 0; // Just in case.
77
78 agentNameLen = (u8)strlen(name);
79 agent_checkNameLen(agentNameLen);
80 }
81 SERIALIZE(SaveVersionInit, agentNameLen, 0);
82 if (!write)
83 {
84 agent_checkNameLen(agentNameLen);
85 }
86 SERIALIZE_BUF(SaveVersionInit, name, agentNameLen);
87 name[agentNameLen] = 0;
88
89 // Agent data.
90 LevelSaveData data;
91 if (write)
92 {
93 agent_readSavedData(s_agentId, &data);
94 }
95 SERIALIZE(SaveVersionInit, data, { 0 });
96
97 // Find the agent.
98 if (!write)
99 {
100 s_agentId = -1;
101 // First get the count.
102 s32 agentCount = 0;
103 for (s32 i = 0; i < 14; i++)
104 {
105 if (!s_agentData[i].name[0]) { break; }
106 agentCount++;
107 }
108 // Next find the agent, if it exists.
109 for (s32 i = 0; i < agentCount; i++)
110 {
111 if (strcmp(s_agentData[i].name, name) == 0)
112 {
113 s_agentId = i;
114 break;
115 }
116 }
117 // If the agent doesn't exist, create it.
118 if (s_agentId < 0)

Callers 1

serializeGameStateMethod · 0.85

Calls 5

serialization_getModeFunction · 0.85
agent_checkNameLenFunction · 0.85
agent_readSavedDataFunction · 0.85
agent_writeSavedDataFunction · 0.85
logWriteFunction · 0.85

Tested by

no test coverage detected