Longer delays between turns for better readability
authorWuzzy <Wuzzy2@mail.ru>
Mon, 10 Dec 2018 07:35:29 +0100
changeset 14400 9c7d5f595881
parent 14399 352ea82355ae
child 14401 6c21bd8547dd
Longer delays between turns for better readability The control was given too fast to the next hog, this made it hard to see damage and messages.
ChangeLog.txt
hedgewars/uGears.pas
--- a/ChangeLog.txt	Mon Dec 10 02:40:27 2018 +0100
+++ b/ChangeLog.txt	Mon Dec 10 07:35:29 2018 +0100
@@ -3,6 +3,7 @@
 =============== 1.0.0 (unreleased) =================
  + New chat command: “/help room” (shows room chat commands within the game)
  + Colorize switching arrows, pointing arrow and target cross in clan color
+ + Longer delays between turns so its easier to see damage and messages
  * King Mode: Fix team sometimes not being killed properly if king drowned
  * King Mode: Kill resurrected minions if king is not alive
  * Hide most HUD elements in cinematic mode
--- a/hedgewars/uGears.pas	Mon Dec 10 02:40:27 2018 +0100
+++ b/hedgewars/uGears.pas	Mon Dec 10 07:35:29 2018 +0100
@@ -62,12 +62,19 @@
 
 var delay: LongWord;
     delay2: LongWord;
-    step: (stInit, stDelay, stChDmg, stSweep, stTurnStats, stChWin1,
-    stTurnReact, stAfterDelay, stChWin2, stWater, stChWin3,
-    stChKing, stHealth, stSpawn, stNTurn);
+    step: (stInit, stDelay1, stChDmg, stSweep, stTurnStats, stChWin1,
+    stTurnReact, stDelay2, stChWin2, stWater, stChWin3,
+    stChKing, stSuddenDeath, stDelay3, stHealth, stSpawn, stDelay4,
+    stNTurn);
     NewTurnTick: LongWord;
     //SDMusic: shortstring;
 
+const delaySDStart = 1600;
+      delaySDWarning = 1000;
+      delayDamageTag = 500;
+      delayTurnReact = 1500;
+      delayFinal = 100;
+
 function CheckNoDamage: boolean; // returns TRUE in case of no damaged hhs
 var Gear: PGear;
     dmg: LongInt;
@@ -122,6 +129,15 @@
     end;
 end;
 
+function DoDelay: boolean;
+begin
+if delay <= 0 then
+    delay:= 1
+else
+    dec(delay);
+DoDelay:= delay = 0;
+end;
+
 function CheckMinionsDie: boolean;
 var Gear: PGear;
 begin
@@ -296,22 +312,17 @@
             ScriptCall('onEndTurn');
         inc(step)
         end;
-    stDelay:
-        begin
-        if delay = 0 then
-            delay:= cInactDelay
-        else
-            dec(delay);
-
-        if delay = 0 then
-            inc(step)
-        end;
-
+    stDelay1:
+        if DoDelay() then
+            inc(step);
     stChDmg:
     if CheckNoDamage then
         inc(step)
     else
-        step:= stDelay;
+        begin
+        delay:= delayDamageTag;
+        step:= stDelay1;
+        end;
 
     stSweep:
     if SweepDirty then
@@ -341,22 +352,16 @@
             begin
             uStats.TurnReaction;
             uStats.TurnStatsReset;
+            delay:= delayTurnReact;
             inc(step)
             end
         else
             inc(step, 2);
         end;
 
-    stAfterDelay:
-        begin
-        if delay = 0 then
-            delay:= cInactDelay
-        else
-            dec(delay);
-
-        if delay = 0 then
-            inc(step)
-            end;
+    stDelay2:
+        if DoDelay() then
+            inc(step);
     stChWin2:
         begin
         CheckForWin();
@@ -391,39 +396,65 @@
         else
             inc(step);
         end;
-    stHealth:
+    stSuddenDeath:
         begin
         if (cWaterRise <> 0) or (cHealthDecrease <> 0) then
             begin
             if (TotalRoundsPre = cSuddenDTurns) and (not SuddenDeath) and (not isInMultiShoot) then
-                StartSuddenDeath()
+                begin
+                StartSuddenDeath();
+                delay:= delaySDStart;
+                end
             else if (TotalRoundsPre < cSuddenDTurns) and (not isInMultiShoot) then
                 begin
                 i:= cSuddenDTurns - TotalRoundsPre;
                 s:= ansistring(inttostr(i));
                 if i = 1 then
-                    AddCaption(trmsg[sidRoundSD], capcolDefault, capgrpGameState)
+                    begin
+                    AddCaption(trmsg[sidRoundSD], capcolDefault, capgrpGameState);
+                    delay:= delaySDWarning;
+                    end
                 else if (i = 2) or ((i > 0) and ((i mod 50 = 0) or ((i <= 25) and (i mod 5 = 0)))) then
+                    begin
                     AddCaption(FormatA(trmsg[sidRoundsSD], s), capcolDefault, capgrpGameState);
+                    delay:= delaySDWarning;
+                    end
                 end;
+            inc(step);
+            end
+        else
+            inc(step, 2);
+        end;
+    stDelay3:
+        if DoDelay() then
+            inc(step);
+    stHealth:
+        begin
+        if bBetweenTurns
+        or isInMultiShoot
+        or (TotalRoundsPre = -1) then
+            inc(step)
+        else
+            begin
+            bBetweenTurns:= true;
+            HealthMachine;
+            step:= stChDmg
             end;
-            if bBetweenTurns
-            or isInMultiShoot
-            or (TotalRoundsPre = -1) then
-                inc(step)
-            else
-                begin
-                bBetweenTurns:= true;
-                HealthMachine;
-                step:= stChDmg
-                end
-            end;
+        end;
     stSpawn:
         begin
-        if not isInMultiShoot then
+        if (not isInMultiShoot) then
+            begin
             SpawnBoxOfSmth;
-        inc(step)
+            delay:= delayFinal;
+            inc(step);
+            end
+        else
+            inc(step, 2)
         end;
+    stDelay4:
+        if DoDelay() then
+            inc(step);
     stNTurn:
         begin
         if isInMultiShoot then
@@ -1367,7 +1398,7 @@
     //typed const
     delay:= 0;
     delay2:= 0;
-    step:= stDelay;
+    step:= stDelay1;
     upd:= 0;
 
     //SDMusic:= 'hell.ogg';