diff --git a/client/src/main/java/player/MilitaryStrategy.java b/client/src/main/java/player/MilitaryStrategy.java index f7fda53..516bcc9 100644 --- a/client/src/main/java/player/MilitaryStrategy.java +++ b/client/src/main/java/player/MilitaryStrategy.java @@ -32,8 +32,8 @@ public Action chooseAction(Player player) { } } - if (player.wonder.getProp().get(player.wonder.getState()+1).y.get(CardPoints.MILITARY) != null && - (player.wonder.getProp().get(player.wonder.getState()+1).y.get(CardPoints.MILITARY) > mostMilitary.getCardPoints().get(CardPoints.MILITARY) && + if (!player.wonder.isWonderFinished() && player.wonder.getProp().get(player.wonder.getState()).y.get(CardPoints.MILITARY) != null && + (player.wonder.getProp().get(player.wonder.getState()).y.get(CardPoints.MILITARY) > mostMilitary.getCardPoints().get(CardPoints.MILITARY) && player.wonder.canUpgrade(player.resources))) { return new Action(mostMilitary, Action.WONDER); } else if (player.isBuildable(mostMilitary)) { diff --git a/client/src/main/java/wonder/Wonder.java b/client/src/main/java/wonder/Wonder.java index 18bd331..ad9ade2 100644 --- a/client/src/main/java/wonder/Wonder.java +++ b/client/src/main/java/wonder/Wonder.java @@ -79,7 +79,7 @@ public Wonder(String name) throws IOException { if (stages.size() > 0) { maxState = stages.size(); prop = new ArrayList<>(stages.size()); - for (int i = 0; i < stages.size(); i++) { + for (int i = maxState-1; i >= 0; i--) { EnumMap tmpMap = new EnumMap<>(Resource.class); EnumMap tmpMap2 = new EnumMap<>(CardPoints.class); JSONObject stage = card.getJSONObject(stages.get(i)); diff --git a/client/src/test/java/wonder/WonderTest.java b/client/src/test/java/wonder/WonderTest.java index a9ca680..34d58e6 100644 --- a/client/src/test/java/wonder/WonderTest.java +++ b/client/src/test/java/wonder/WonderTest.java @@ -38,13 +38,14 @@ void getMaxstate() { assertEquals(state,wonder.getMaxstate()); } - @Ignore //TODO this method return the reward in the reverse order state + @Test void getCurrentRewardsFromUpgrade() { //setup wonder = babyloneA // the key is fix at CardPoints so it can't never return Ressoure.COIN EnumMap oracle = new EnumMap(CardPoints.class); oracle.put(CardPoints.VICTORY, 3); assertEquals(oracle, this.wonder.getCurrentRewardsFromUpgrade()); //index/state = 0, cost stage 1 + assertEquals(oracle, this.wonder.getProp().get(this.wonder.getState()).y); //index/state = 0, cost stage 1 wonder.setState(wonder.getState() + 1); // stage one is build oracle = new EnumMap(CardPoints.class); @@ -103,7 +104,7 @@ void parseTest() throws IOException { } - @Ignore //TODO this method return the cost in the reverse order state + @Test void getCurrentUpgradeCost() { //setup wonder = babyloneA EnumMap oracle = new EnumMap(Resource.class);