DEADSOFTWARE

Net: Don't process network in ProcessLoading() for client's code
[d2df-sdl.git] / src / game / g_game.pas
index d1246ba0c7dabdc027035501fe4fee5bd9bfc6a7..b1a10ea8ba434ccaf0394d86b186678309e2ffaa 100644 (file)
@@ -350,6 +350,7 @@ var
   gWeaponAction: Array [0..1, WP_FACT..WP_LACT] of Boolean; // [player, weapon_action]
   gSelectWeapon: Array [0..1, WP_FIRST..WP_LAST] of Boolean; // [player, weapon]
   gInterReadyCount: Integer = 0;
+  gMaxBots: Integer = 127;
 
   g_dbg_ignore_bounds: Boolean = false;
   r_smallmap_h: Integer = 0; // 0: left; 1: center; 2: right
@@ -4853,12 +4854,6 @@ begin
     begin
       if (NetEvent.kind = ENET_EVENT_TYPE_RECEIVE) then
       begin
-        if (NetEvent.channelID = NET_CHAN_DOWNLOAD_EX) then
-        begin
-          // ignore all download packets, they're processed by separate code
-          enet_packet_destroy(NetEvent.packet);
-          continue;
-        end;
         Ptr := NetEvent.packet^.data;
         if not InMsg.Init(Ptr, NetEvent.packet^.dataLength, True) then
         begin
@@ -4958,8 +4953,7 @@ begin
       end;
     end;
 
-    ProcessLoading(true);
-
+    ProcessLoading(True);
     if g_Net_UserRequestExit() then
     begin
       State := 0;
@@ -5162,6 +5156,11 @@ begin
 
   if NetMode = NET_SERVER then
   begin
+  // reset full state flags
+    if NetClients <> nil then
+      for I := 0 to High(NetClients) do
+        NetClients[I].FullUpdateSent := False;
+
     MH_SEND_GameEvent(NET_EV_MAPSTART, gGameSettings.GameMode, Map);
 
   // Ìàñòåðñåðâåð
@@ -5807,6 +5806,12 @@ begin
                          (gsTimeLimit div 60) mod 60,
                           gsTimeLimit mod 60]));
   end
+  else if cmd = 'g_max_bots' then
+  begin
+    if Length(P) > 1 then
+      gMaxBots := nclamp(StrToIntDef(P[1], gMaxBots), 0, 127);
+    g_Console_Add('g_max_bots = ' + IntToStr(gMaxBots));
+  end
   else if cmd = 'g_maxlives' then
   begin
     if Length(P) > 1 then
@@ -7803,7 +7808,7 @@ begin
     name := e_CatPath(dir, Filename + '.png');
     s := createDiskFile(name);
     try
-      e_MakeScreenshot(s, gWinSizeX, gWinSizeX);
+      e_MakeScreenshot(s, gWinSizeX, gWinSizeY);
       s.Free;
       g_Console_Add(Format(_lc[I_CONSOLE_SCREENSHOT], [name]))
     except
@@ -8296,8 +8301,7 @@ begin
   end;
 
   g_ActiveWindow := nil;
-
-  ProcessLoading(true);
+  ProcessLoading(True);
 end;
 
 procedure g_Game_StepLoading(Value: Integer = -1);
@@ -8311,10 +8315,11 @@ begin
     end
     else
       CurValue := Value;
+
     if (ShowCount > LOADING_SHOW_STEP) or (Value > -1) then
     begin
       ShowCount := 0;
-      ProcessLoading();
+      ProcessLoading(False);
     end;
   end;
 end;