]> git.seodisparate.com - TurnBasedMinecraftMod/commitdiff
Fix turn-timer not matching server-side's value
authorStephen Seo <seo.disparate@gmail.com>
Thu, 21 Jul 2022 05:01:34 +0000 (14:01 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Thu, 21 Jul 2022 05:01:34 +0000 (14:01 +0900)
src/main/java/com/burnedkirby/TurnBasedMinecraft/client/BattleGui.java
src/main/java/com/burnedkirby/TurnBasedMinecraft/client/ClientProxy.java
src/main/java/com/burnedkirby/TurnBasedMinecraft/common/Battle.java
src/main/java/com/burnedkirby/TurnBasedMinecraft/common/CommonProxy.java
src/main/java/com/burnedkirby/TurnBasedMinecraft/common/networking/PacketBattleInfo.java
src/main/java/com/burnedkirby/TurnBasedMinecraft/common/networking/PacketBattleRequestInfo.java

index a5f4bb1691c17726561acf2ac40001551bb42098..39a76442d6a2d35ff249576a7dcd68c0de601756 100644 (file)
@@ -18,6 +18,8 @@ import java.util.concurrent.atomic.AtomicInteger;
 
 public class BattleGui extends Screen {
        private AtomicInteger timeRemaining;
+
+       private int timerMax;
        private boolean turnTimerEnabled;
        private long lastInstant;
        private long elapsedTime;
@@ -82,6 +84,7 @@ public class BattleGui extends Screen {
        public BattleGui() {
                super(new TextComponent("Battle Gui"));
                timeRemaining = new AtomicInteger((int) (Config.BATTLE_DECISION_DURATION_NANO_DEFAULT / 1000000000L));
+               timerMax = timeRemaining.get();
                lastInstant = System.nanoTime();
                elapsedTime = 0;
                state = MenuState.MAIN_MENU;
@@ -104,7 +107,7 @@ public class BattleGui extends Screen {
                if (TurnBasedMinecraftMod.proxy.getLocalBattle() != null) {
                        TurnBasedMinecraftMod.proxy.getLocalBattle().setState(Battle.State.DECISION);
                }
-               timeRemaining.set(TurnBasedMinecraftMod.proxy.getConfig().getDecisionDurationSeconds());
+               timeRemaining.set(timerMax);
                elapsedTime = 0;
                lastInstant = System.nanoTime();
                setState(MenuState.MAIN_MENU);
@@ -359,4 +362,8 @@ public class BattleGui extends Screen {
        public void setTurnTimerEnabled(boolean enabled) {
                turnTimerEnabled = enabled;
        }
+
+       public void setTurnTimerMax(int timerMax) {
+               this.timerMax = timerMax;
+       }
 }
index e57b67f7eb618a6bb3dbd8892d1caa7775170e12..7f073eb48aae75eb3e71cf1d308502c164f510fe 100644 (file)
@@ -60,6 +60,11 @@ public class ClientProxy extends CommonProxy {
         battleGui.setTurnTimerEnabled(enabled);
     }
 
+    @Override
+    public void setBattleGuiTurnTimerMax(int timeMax) {
+        battleGui.setTurnTimerMax(timeMax);
+    }
+
     @Override
     public void battleGuiTurnBegin() {
         battleGui.turnBegin();
index 6a8882ca10e0e9a4e4868490a444fb5b4b4877c6..cf192deb561c7fba90bcd468295180706310f2d2 100644 (file)
@@ -445,7 +445,7 @@ public class Battle {
         if (!isServer) {
             return;
         }
-        PacketBattleInfo infoPacket = new PacketBattleInfo(getSideAIDs(), getSideBIDs(), timer, !TurnBasedMinecraftMod.proxy.getConfig().isBattleDecisionDurationForever());
+        PacketBattleInfo infoPacket = new PacketBattleInfo(getSideAIDs(), getSideBIDs(), timer, TurnBasedMinecraftMod.proxy.getConfig().getDecisionDurationNanos(), !TurnBasedMinecraftMod.proxy.getConfig().isBattleDecisionDurationForever());
         for (Combatant p : players.values()) {
             TurnBasedMinecraftMod.getHandler().send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) p.entity), infoPacket);
         }
index 0d02f9faa9165c614f4821975a9c2308a3bd70d4..6f9ebdc37f34c8c9a753de53f01e367f6a765910 100644 (file)
@@ -63,6 +63,8 @@ public class CommonProxy
     public void setBattleGuiAsGui() {}
 
     public void setBattleGuiTurnTimerEnabled(boolean enabled) {}
+
+    public void setBattleGuiTurnTimerMax(int timeMax) {}
     
     public void battleGuiTurnBegin() {}
     
index 2d1ca6d0940fbf77962a4fa2576330640792a2fc..515fb0d8fe7be37b3162dc833d14e8fe84811c13 100644 (file)
@@ -16,6 +16,8 @@ public class PacketBattleInfo
     private Collection<Integer> sideA;
     private Collection<Integer> sideB;
     private long decisionNanos;
+
+    private long maxDecisionNanos;
     private boolean turnTimerEnabled;
     
     public PacketBattleInfo()
@@ -23,14 +25,16 @@ public class PacketBattleInfo
         sideA = new ArrayList<Integer>();
         sideB = new ArrayList<Integer>();
         decisionNanos = TurnBasedMinecraftMod.proxy.getConfig().getDecisionDurationNanos();
+        maxDecisionNanos = decisionNanos;
         turnTimerEnabled = false;
     }
 
-    public PacketBattleInfo(Collection<Integer> sideA, Collection<Integer> sideB, long decisionNanos, boolean turnTimerEnabled)
+    public PacketBattleInfo(Collection<Integer> sideA, Collection<Integer> sideB, long decisionNanos, long maxDecisionNanos, boolean turnTimerEnabled)
     {
         this.sideA = sideA;
         this.sideB = sideB;
         this.decisionNanos = decisionNanos;
+        this.maxDecisionNanos = maxDecisionNanos;
         this.turnTimerEnabled = turnTimerEnabled;
     }
 
@@ -44,6 +48,7 @@ public class PacketBattleInfo
                buf.writeInt(id);
        }
        buf.writeLong(msg.decisionNanos);
+        buf.writeLong(msg.maxDecisionNanos);
         buf.writeBoolean(msg.turnTimerEnabled);
     }
 
@@ -59,8 +64,9 @@ public class PacketBattleInfo
                sideB.add(buf.readInt());
        }
        long decisionNanos = buf.readLong();
+        long maxDecisionNanos = buf.readLong();
         boolean turnTimerEnabled = buf.readBoolean();
-       return new PacketBattleInfo(sideA, sideB, decisionNanos, turnTimerEnabled);
+        return new PacketBattleInfo(sideA, sideB, decisionNanos, maxDecisionNanos, turnTimerEnabled);
     }
     
     public static void handle(final PacketBattleInfo pkt, Supplier<NetworkEvent.Context> ctx) {
@@ -89,6 +95,7 @@ public class PacketBattleInfo
             TurnBasedMinecraftMod.proxy.setBattleGuiTime((int)(pkt.decisionNanos / 1000000000L));
             TurnBasedMinecraftMod.proxy.setBattleGuiBattleChanged();
             TurnBasedMinecraftMod.proxy.setBattleGuiTurnTimerEnabled(pkt.turnTimerEnabled);
+            TurnBasedMinecraftMod.proxy.setBattleGuiTurnTimerMax((int)(pkt.maxDecisionNanos / 1000000000L));
         });
         ctx.get().setPacketHandled(true);
     }
index b678983540a41aaaff117ee12a7ebb7993bddb34..c12620ed91eb98defb5424be616e6562aab7b893 100644 (file)
@@ -34,7 +34,7 @@ public class PacketBattleRequestInfo
             if(b == null) {
                 return;
             }
-            TurnBasedMinecraftMod.getHandler().reply(new PacketBattleInfo(b.getSideAIDs(), b.getSideBIDs(), b.getTimerNanos(), !TurnBasedMinecraftMod.proxy.getConfig().isBattleDecisionDurationForever()), ctx.get());
+            TurnBasedMinecraftMod.getHandler().reply(new PacketBattleInfo(b.getSideAIDs(), b.getSideBIDs(), b.getTimerNanos(), TurnBasedMinecraftMod.proxy.getConfig().getDecisionDurationNanos(), !TurnBasedMinecraftMod.proxy.getConfig().isBattleDecisionDurationForever()), ctx.get());
         });
         ctx.get().setPacketHandled(true);
     }