| 2311 | } |
| 2312 | |
| 2313 | void 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 | } |
no test coverage detected