diff --git a/src/game/g_game.pas b/src/game/g_game.pas
index 43ccf4ff22e1b3eb6ddce0e748c52477a87007e0..aa4c189bc549556117f56d5eb802c14e04aaee8d 100644 (file)
--- a/src/game/g_game.pas
+++ b/src/game/g_game.pas
g_triggers, g_monsters, e_sound, CONFIG,
g_language, g_net,
ENet, e_msg, g_netmsg, g_netmaster,
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
var
gDelayedEvents[n].DENum := Num;
gDelayedEvents[n].DEStr := Str;
if DEType = DE_GLOBEVENT then
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;
else
gDelayedEvents[n].Time := gTime + Time;
Result := n;
if NetUseMaster then
begin
if NetUseMaster then
begin
- if gTime >= NetTimeToMaster then
+ if (gTime >= NetTimeToMaster) or g_Net_Slist_IsConnectionInProgress then
begin
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;
g_Net_Slist_Update;
NetTimeToMaster := gTime + NetMasterRate;
end;
KeyPress(IK_F10);
end;
KeyPress(IK_F10);
end;
- Time := GetTimer() {div 1000};
+ Time := sys_GetTicks() {div 1000};
// Îáðàáîòêà îòëîæåííûõ ñîáûòèé:
if gDelayedEvents <> nil then
// Îáðàáîòêà îòëîæåííûõ ñîáûòèé:
if gDelayedEvents <> nil then
begin
e_TextureFontGetSize(gStdFont, ww2, hh2);
begin
e_TextureFontGetSize(gStdFont, ww2, hh2);
- g_ProcessMessages();
+ sys_HandleInput;
if g_Console_Action(ACTION_SCORES) then
begin
if g_Console_Action(ACTION_SCORES) then
begin
begin
if gExit = EXIT_QUIT then Exit;
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
FPSCounter := FPSCounter+1;
if Time - FPSTime >= 1000 then
begin
g_Game_DeleteTestMap();
gExit := EXIT_QUIT;
g_Game_DeleteTestMap();
gExit := EXIT_QUIT;
- PushExitEvent();
+ sys_RequestQuit;
end;
procedure g_FatalError(Text: String);
end;
procedure g_FatalError(Text: String);
procedure g_Game_ChangeResolution(newWidth, newHeight: Word; nowFull, nowMax: Boolean);
begin
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);
end;
procedure g_Game_AddPlayer(Team: Byte = TEAM_NONE);
NetState := NET_STATE_AUTH;
g_Game_SetLoadingText(_lc[I_LOAD_CONNECT], 0, False);
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
// Ñòàðòóåì êëèåíò
if not g_Net_Connect(Addr, Port) then
begin
NetState := NET_STATE_NONE;
Exit;
end;
NetState := NET_STATE_NONE;
Exit;
end;
+ e_LogWritefln('using downloaded map wad [%s] for [%s]`', [newResPath, WadName], TMsgType.Notify);
end;
newResPath := ExtractRelativePath(MapsDir, newResPath);
end;
newResPath := ExtractRelativePath(MapsDir, newResPath);
end
else
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;
//writeln('********: nws=', nws, ' : Map=', Map, ' : nw=', NewWAD, ' : resname=', ResName);
g_Game_LoadWAD(NewWAD);
end;
// Ìàñòåðñåðâåð
if NetUseMaster then
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;
g_Net_Slist_Update;
end;
procedure g_Game_ClientWAD(NewWAD: String; const WHash: TMD5Digest);
var
procedure g_Game_ClientWAD(NewWAD: String; const WHash: TMD5Digest);
var
- gWAD: String;
+ gWAD, xwad: String;
begin
if not g_Game_IsClient then Exit;
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
gWAD := g_Res_DownloadMapWAD(ExtractFileName(NewWAD), WHash);
if gWAD = '' then
Exit;
end;
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);
{
g_Game_LoadWAD(NewWAD);
{
begin
NetUseMaster := StrToIntDef(P[1], Byte(NetUseMaster)) > 0;
if g_Game_IsServer and g_Game_IsNet then
begin
NetUseMaster := StrToIntDef(P[1], Byte(NetUseMaster)) > 0;
if g_Game_IsServer and g_Game_IsNet then
+ begin
if NetUseMaster 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
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)));
end;
g_Console_Add(cmd + ' = ' + IntToStr(Byte(NetUseMaster)));