MCPcopy Create free account
hub / github.com/DescentDevelopers/Descent3 / SendGameState

Function SendGameState

netgames/ctf/ctf.cpp:2313–2370  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2311}
2312
2313void SendGameState(int pnum) {
2314 uint8_t data[MAX_GAME_DATA_SIZE];
2315 int count = 0;
2316 int i;
2317
2318 DMFCBase->StartPacket(data, SPID_GAMESTATE, &count);
2319
2320 // pack number of teams in this game
2321 MultiAddInt(CTFNumOfTeams, data, &count);
2322
2323 // pack flag whether someone has scored a hattrick
2324 MultiAddByte(Someone_has_hattrick, data, &count);
2325
2326 for (i = 0; i < DLLMAX_TEAMS; i++) {
2327 // Pack FlagAtHome
2328 MultiAddByte(FlagAtHome[i], data, &count);
2329
2330 // pack flag timeout timers
2331 MultiAddFloat(Flag_timeout_timers[i], data, &count);
2332
2333 // pack team scores
2334 MultiAddInt(TeamScores[i], data, &count);
2335
2336 // pack overall team scores
2337 MultiAddInt(OverallTeamScores[i], data, &count);
2338
2339 // pack who has flag data
2340 MultiAddInt(HasFlag[i], data, &count);
2341 }
2342
2343 uint16_t server_objnums[DLLMAX_TEAMS];
2344 for (i = 0; i < DLLMAX_TEAMS; i++) {
2345 if (ChildFlags[i] == OBJECT_HANDLE_NONE) {
2346 // slot not in use
2347 server_objnums[i] = 65535;
2348 } else {
2349 // should be a valid slot
2350 object *obj;
2351
2352 if (!DLLObjGet(ChildFlags[i], &obj)) {
2353 // ok it's not a valid slot...hrm
2354 ChildFlags[i] = OBJECT_HANDLE_NONE;
2355 server_objnums[i] = 65535;
2356 } else {
2357 // it's valid
2358 int objnum = (obj - dObjects);
2359 server_objnums[i] = objnum;
2360 }
2361 }
2362 }
2363
2364 // pack attached flag handles
2365 for (i = 0; i < DLLMAX_TEAMS; i++) {
2366 MultiAddUshort(server_objnums[i], data, &count);
2367 }
2368
2369 DMFCBase->SendPacket(data, count, pnum);
2370}

Callers 1

OnGameStateRequestFunction · 0.85

Calls 6

MultiAddIntFunction · 0.85
MultiAddByteFunction · 0.85
MultiAddFloatFunction · 0.85
MultiAddUshortFunction · 0.85
StartPacketMethod · 0.80
SendPacketMethod · 0.80

Tested by

no test coverage detected