entity survivalStatuses;
void SurvivalStatuses_Init();
-void SurvivalStatuses_Send()
-{
- // SendFlags can be set to anything != 0, SurvivalStatuses_SendEntity won't use its value
- // Dr. Jaska: this was a lie, the flags were not reset until now
- survivalStatuses.SendFlags = 1;
-}
+#define STATUS_SEND_RESET 1
+#define STATUS_SEND_HUNTERS 2
bool SurvivalStatuses_SendEntity(entity this, entity dest, float sendflags)
{
Stream out = MSG_ENTITY;
WriteHeader(out, ENT_CLIENT_SURVIVALSTATUSES);
- // TODO: optimize this instead of always setting it on
- sendflags = BIT(0); // reset all flags and make all players survivors
-
- if ((dest.survival_status == SURV_STATUS_HUNTER) || round_handler_AwaitingNextRound())
- sendflags |= BIT(1); // send hunter statuses
+ // always send hunters their own status and their allies
+ if (dest.survival_status == SURV_STATUS_HUNTER)
+ sendflags |= STATUS_SEND_HUNTERS;
serialize(byte, out, sendflags);
- if (sendflags & BIT(1)) {
- for (int i = 1; i <= maxclients; i += 8) {
+ if (sendflags & STATUS_SEND_HUNTERS)
+ {
+ for (int i = 1; i <= maxclients; i += 8)
+ {
int f = 0;
entity e = edict_num(i);
- for (int b = 0; b < 8; ++b, e = nextent(e)) {
+
+ for (int b = 0; b < 8; ++b, e = nextent(e))
+ {
bool is_hunter = (INGAME(e) && e.survival_status == SURV_STATUS_HUNTER);
if (is_hunter)
f |= BIT(b);
allowed_to_spawn = false;
game_stopped = true;
round_handler_Init(5, autocvar_g_survival_warmup, autocvar_g_survival_round_timelimit);
- SurvivalStatuses_Send();
+ survivalStatuses.SendFlags = STATUS_SEND_HUNTERS;
return 1;
}
allowed_to_spawn = false;
game_stopped = true;
round_handler_Init(5, autocvar_g_survival_warmup, autocvar_g_survival_round_timelimit);
- SurvivalStatuses_Send();
+ survivalStatuses.SendFlags = STATUS_SEND_HUNTERS;
FOREACH_CLIENT(true,
{
total_hunters++;
it.survival_status = SURV_STATUS_HUNTER;
});
- SurvivalStatuses_Send();
+ survivalStatuses.SendFlags = STATUS_SEND_RESET;
FOREACH_CLIENT(IS_PLAYER(it) && !IS_DEAD(it),
{
}
});
bot_relinkplayerlist();
- SurvivalStatuses_Send();
+ survivalStatuses.SendFlags = STATUS_SEND_RESET;
return true;
}