X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_game.pas;h=aa4c189bc549556117f56d5eb802c14e04aaee8d;hb=0e101bd452c40da601236aaa2dd4106be47ddce1;hp=43ccf4ff22e1b3eb6ddce0e748c52477a87007e0;hpb=75125c8752adeb3dc9e2ea3841b3b64dc23268ce;p=d2df-sdl.git diff --git a/src/game/g_game.pas b/src/game/g_game.pas index 43ccf4f..aa4c189 100644 --- a/src/game/g_game.pas +++ b/src/game/g_game.pas @@ -383,7 +383,7 @@ uses g_triggers, g_monsters, e_sound, CONFIG, g_language, g_net, ENet, e_msg, g_netmsg, g_netmaster, - sfs, wadreader; + sfs, wadreader, g_system; var @@ -894,7 +894,7 @@ begin gDelayedEvents[n].DENum := Num; gDelayedEvents[n].DEStr := Str; if DEType = DE_GLOBEVENT then - gDelayedEvents[n].Time := (GetTimer() {div 1000}) + Time + gDelayedEvents[n].Time := (sys_GetTicks() {div 1000}) + Time else gDelayedEvents[n].Time := gTime + Time; Result := n; @@ -2126,13 +2126,9 @@ begin if NetUseMaster then begin - if gTime >= NetTimeToMaster then + if (gTime >= NetTimeToMaster) or g_Net_Slist_IsConnectionInProgress then begin - if (NetMHost = nil) or (NetMPeer = nil) then - begin - g_Net_Slist_Connect(false); // non-blocking connection to the master - end; - + if (not g_Net_Slist_IsConnectionActive) then g_Net_Slist_Connect(false); // non-blocking connection to the master g_Net_Slist_Update; NetTimeToMaster := gTime + NetMasterRate; end; @@ -2191,7 +2187,7 @@ begin KeyPress(IK_F10); end; - Time := GetTimer() {div 1000}; + Time := sys_GetTicks() {div 1000}; // Îáðàáîòêà îòëîæåííûõ ñîáûòèé: if gDelayedEvents <> nil then @@ -2547,7 +2543,7 @@ var begin e_TextureFontGetSize(gStdFont, ww2, hh2); - g_ProcessMessages(); + sys_HandleInput; if g_Console_Action(ACTION_SCORES) then begin @@ -3736,7 +3732,7 @@ var begin if gExit = EXIT_QUIT then Exit; - Time := GetTimer() {div 1000}; + Time := sys_GetTicks() {div 1000}; FPSCounter := FPSCounter+1; if Time - FPSTime >= 1000 then begin @@ -4102,7 +4098,7 @@ begin g_Game_DeleteTestMap(); gExit := EXIT_QUIT; - PushExitEvent(); + sys_RequestQuit; end; procedure g_FatalError(Text: String); @@ -4160,7 +4156,7 @@ end; procedure g_Game_ChangeResolution(newWidth, newHeight: Word; nowFull, nowMax: Boolean); begin - g_Window_SetSize(newWidth, newHeight, nowFull); + sys_SetDisplayMode(newWidth, newHeight, gBPP, nowFull); end; procedure g_Game_AddPlayer(Team: Byte = TEAM_NONE); @@ -4610,6 +4606,10 @@ begin NetState := NET_STATE_AUTH; g_Game_SetLoadingText(_lc[I_LOAD_CONNECT], 0, False); + + // create (or update) map/resource databases + g_Res_CreateDatabases(true); + // Ñòàðòóåì êëèåíò if not g_Net_Connect(Addr, Port) then begin @@ -4675,6 +4675,7 @@ begin NetState := NET_STATE_NONE; Exit; end; + e_LogWritefln('using downloaded map wad [%s] for [%s]`', [newResPath, WadName], TMsgType.Notify); end; newResPath := ExtractRelativePath(MapsDir, newResPath); @@ -4824,7 +4825,7 @@ begin end else begin - gWADHash := MD5File(nws); + if (g_Game_IsNet) then gWADHash := MD5File(nws); //writeln('********: nws=', nws, ' : Map=', Map, ' : nw=', NewWAD, ' : resname=', ResName); g_Game_LoadWAD(NewWAD); end; @@ -4906,11 +4907,7 @@ begin // Ìàñòåðñåðâåð if NetUseMaster then begin - if (NetMHost = nil) or (NetMPeer = nil) then - begin - // let the connection be blocking here, why not? - g_Net_Slist_Connect(); - end; + if (not g_Net_Slist_IsConnectionActive) then g_Net_Slist_Connect(false); // non-blocking connection to the master g_Net_Slist_Update; end; @@ -5010,9 +5007,10 @@ end; procedure g_Game_ClientWAD(NewWAD: String; const WHash: TMD5Digest); var - gWAD: String; + gWAD, xwad: String; begin if not g_Game_IsClient then Exit; + //e_LogWritefln('*** g_Game_ClientWAD: `%s`', [NewWAD]); gWAD := g_Res_DownloadMapWAD(ExtractFileName(NewWAD), WHash); if gWAD = '' then @@ -5022,7 +5020,9 @@ begin Exit; end; - NewWAD := ExtractRelativePath(MapsDir, gWAD); + xwad := ExtractRelativePath(MapsDir, gWAD); + e_LogWritefln('using downloaded client map wad [%s] for [%s]`', [xwad, NewWAD], TMsgType.Notify); + NewWAD := xwad; g_Game_LoadWAD(NewWAD); { @@ -5531,14 +5531,17 @@ begin begin NetUseMaster := StrToIntDef(P[1], Byte(NetUseMaster)) > 0; if g_Game_IsServer and g_Game_IsNet then + begin if NetUseMaster then begin - if NetMPeer = nil then g_Net_Slist_Connect(); + if (not g_Net_Slist_IsConnectionActive) then g_Net_Slist_Connect(false); // non-blocking connection to the master g_Net_Slist_Update(); end else - if NetMPeer <> nil then - g_Net_Slist_Disconnect(); + begin + if (not g_Net_Slist_IsConnectionActive) then g_Net_Slist_Disconnect(); + end; + end; end; g_Console_Add(cmd + ' = ' + IntToStr(Byte(NetUseMaster)));