From: JBM Date: Sun, 14 Jun 2020 22:39:49 +0000 (+0200) Subject: FIX IT. (and curse Java) X-Git-Url: https://troll.desast.re/troll.git/commitdiff_plain/e0290aa2bf6fe6c998d30101fcad648baa2cfcd5?ds=inline FIX IT. (and curse Java) --- diff --git a/src/main/java/com/codingame/game/JavaLimitationError.java b/src/main/java/com/codingame/game/JavaLimitationError.java new file mode 100644 index 0000000..4778a13 --- /dev/null +++ b/src/main/java/com/codingame/game/JavaLimitationError.java @@ -0,0 +1,3 @@ +package com.codingame.game; + +class JavaLimitationError extends InternalError {} diff --git a/src/main/java/com/codingame/game/LeagueManager.java b/src/main/java/com/codingame/game/LeagueManager.java index fe2187c..78f15f1 100644 --- a/src/main/java/com/codingame/game/LeagueManager.java +++ b/src/main/java/com/codingame/game/LeagueManager.java @@ -21,6 +21,9 @@ class LeagueManager { } MapLevel mapLevel; + enum FixLevel { SOMETIMES, NEVER } + FixLevel fixLevel; + @Inject LeagueManager(MultiplayerGameManager gameManager) { @@ -37,5 +40,6 @@ class LeagueManager { : level <= 2 ? MapLevel.DISCRETE : MapLevel.CONTINUOUS; + fixLevel = level <= 1 ? FixLevel.SOMETIMES : FixLevel.NEVER; } } diff --git a/src/main/java/com/codingame/game/Referee.java b/src/main/java/com/codingame/game/Referee.java index fb99ef9..7a718e9 100644 --- a/src/main/java/com/codingame/game/Referee.java +++ b/src/main/java/com/codingame/game/Referee.java @@ -81,7 +81,17 @@ public class Referee extends AbstractReferee { case Throw: try { player.model.consumeStones(player.stoneThrow); } catch (Model.Player.ThrewMoreStonesThanHad e) { - if (model.random.nextInt(10) > 0) { + boolean FIX_IT; + switch (league.fixLevel) { + case SOMETIMES: + FIX_IT = model.random.nextInt(10) > 0; + break; + case NEVER: + FIX_IT = false; + break; + default: throw new JavaLimitationError(); + } + if (FIX_IT) { player.view.threwMoreStonesThanHad(); player.stoneThrow = player.model.consumeMaxStones(); } @@ -92,7 +102,17 @@ public class Referee extends AbstractReferee { } } catch (Model.Player.FailedToThrowStonesAndShouldHave e) { - if (model.random.nextInt(10) > 0) { + boolean FIX_IT; + switch (league.fixLevel) { + case SOMETIMES: + FIX_IT = model.random.nextInt(10) > 0; + break; + case NEVER: + FIX_IT = false; + break; + default: throw new JavaLimitationError(); + } + if (FIX_IT) { player.view.failedToThrowStonesAndShouldHave(); player.stoneThrow = player.model.consumeMinStones(); }