From: Ketmar Dark <ketmar@ketmar.no-ip.org>
Date: Sat, 29 Sep 2018 22:35:12 +0000 (+0300)
Subject: slightly better prioritized weapon selection (code cleanup, should not affect the... 
X-Git-Url: http://deadsoftware.ru/gitweb?a=commitdiff_plain;h=fc965d7cd1a1889f7407070f2bc19bc4ac48fd01;p=d2df-sdl.git

slightly better prioritized weapon selection (code cleanup, should not affect the actual selection)
---

diff --git a/src/game/g_player.pas b/src/game/g_player.pas
index f4e5715..39aab01 100644
--- a/src/game/g_player.pas
+++ b/src/game/g_player.pas
@@ -3722,13 +3722,21 @@ begin
   // no cycling
   for i := 0 to High(wantThisWeapon) do wantThisWeapon[i] := false;
   wwc := 0;
+
+  curlidx := -1; // start from a weapon with a highest priority (-1, 'cause loop will immediately increment this index)
+
   for i := 0 to High(FWeapon) do
   begin
     if (FNextWeap and (1 shl i)) <> 0 then
     begin
       cwi := real2log(i);
-      if (cwi >= 0) then wantThisWeapon[cwi] := true;
-      Inc(wwc);
+      if (cwi >= 0) then
+      begin
+        wantThisWeapon[cwi] := true;
+        Inc(wwc);
+        // if we hit currently selected weapon, start seachring from it, so we'll get "next weaker" weapon
+        if (i = FCurrWeap) then curlidx := cwi; // compare real, start from logical
+      end;
     end;
   end;
 
@@ -3752,12 +3760,7 @@ begin
     exit;
   end;
 
-  // exclude currently selected weapon from the set
-  curlidx := real2log(FCurrWeap);
   //e_WriteLog(Format('*** wwc=%d; currweap=%d; logweap=%d', [wwc, FCurrWeap, curlidx]), TMsgType.Warning);
-  //e_WriteLog(Format('FCurrWeap=%d; curlidx=%d', [FCurrWeap, curlidx]), TMsgType.Warning);
-  //if (curlidx >= 0) then wantThisWeapon[curlidx] := false;
-  //if (wwc = 2) then begin Dec(wwc); end; // easy case: switch between two weapons
 
   // find next weapon to switch onto
   cwi := curlidx;