X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_netmsg.pas;h=6133b001e2d5fd2df4777195d2bfe433b232db3c;hb=2304c541d7bdbf7de389437482ecdff37fc7fbd5;hp=244b2ebd716ef55a21674fbd4b375f9c2324aad8;hpb=6c6b87eea9373ec4f1cb859223d3708d8e2a59c6;p=d2df-sdl.git diff --git a/src/game/g_netmsg.pas b/src/game/g_netmsg.pas index 244b2eb..6133b00 100644 --- a/src/game/g_netmsg.pas +++ b/src/game/g_netmsg.pas @@ -442,11 +442,22 @@ begin e_LogWritefln('*** client #%u (cid #%u) authenticated...', [C.ID, C.Player]); //e_LogWritefln('spawning player with pid #%u...', [PID]); //Respawn(gGameSettings.GameType = GT_SINGLE); - //k8: no, do not spawn a player yet, wait for a 'i am ready' packet + //k8: no, do not spawn a player yet, wait for "request full state" packet Lives := 0; Spectate; FNoRespawn := True; - FWantsInGame := false; // TODO: look into this later + // `FWantsInGame` seems to mean "spawn the player on the next occasion". + // that is, if we'll set it to `true`, the player can be spawned after + // warmup time ran out, for example, regardless of the real player state. + // also, this seems to work only for the initial connection. further + // map changes could initiate resource downloading, but the player will + // be spawned immediately. + // the proper solution will require another player state, "ephemeral". + // the player should start any map in "ephemeral" state, and turned into + // real mobj only when they sent a special "i am ready" packet. this packet + // must be sent after receiving the full state, so the player will get a full + // map view before going into game. + FWantsInGame := false; C^.WaitForFirstSpawn := true; end; end; @@ -465,7 +476,11 @@ begin if gState in [STATE_INTERCUSTOM, STATE_FOLD] then MH_SEND_GameEvent(NET_EV_MAPEND, 0, 'N', C^.ID); - if NetUseMaster then g_Net_Slist_Update; + if NetUseMaster then + begin + //g_Net_Slist_Update; + g_Net_Slist_Pulse(); + end; end;