X-Git-Url: http://deadsoftware.ru/gitweb?p=d2df-sdl.git;a=blobdiff_plain;f=src%2Fgame%2Fg_netmsg.pas;h=1c44acacf18cd4b437c528ac620b1c3c4c168f2d;hp=244b2ebd716ef55a21674fbd4b375f9c2324aad8;hb=a192c0b164766b2145a011938ee11dfa854a42c5;hpb=b55db3de3f8db2e7d30aec8bd2e54e812ccbd06e diff --git a/src/game/g_netmsg.pas b/src/game/g_netmsg.pas index 244b2eb..1c44aca 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;