diff --git a/src/main/java/calculationEngine/environment/TestItems.java b/src/main/java/calculationEngine/environment/TestItems.java deleted file mode 100644 index a22cd98..0000000 --- a/src/main/java/calculationEngine/environment/TestItems.java +++ /dev/null @@ -1,18 +0,0 @@ -package calculationEngine.environment; - -import calculationEngine.entities.CeInventory; -import calculationEngine.entities.NoPlaceInInventoryException; - -public class TestItems { - public static void main(String[] args) throws NoPlaceInInventoryException { - System.out.println(CeLoot.lootItem("cage").toString()); - CeInventory inventory = new CeInventory(); - inventory.addItemToInventory(CeLoot.lootItem("cage")); - System.out.println("Amount: " + inventory.getSlots()[0].getAmount()); // should be 1 - inventory.addItemToInventory(CeLoot.lootItem("cage")); - System.out.println("Amount: " + inventory.getSlots()[0].getAmount()); // should be 2 - inventory.addItemToInventory(CeLoot.lootItem("aHealingPotion")); - System.out.println(inventory.getSlots()[1].getItem().toString()); - - } -} diff --git a/src/main/java/calculationEngine/CeExecuterService.java b/src/main/java/calculationengine/CeExecuterServiceUtils.java similarity index 93% rename from src/main/java/calculationEngine/CeExecuterService.java rename to src/main/java/calculationengine/CeExecuterServiceUtils.java index 10d6ff4..6a7fcf0 100644 --- a/src/main/java/calculationEngine/CeExecuterService.java +++ b/src/main/java/calculationengine/CeExecuterServiceUtils.java @@ -1,10 +1,10 @@ -package calculationEngine; +package calculationengine; import config.BattleConstants; import java.util.concurrent.*; -public class CeExecuterService { +public class CeExecuterServiceUtils { private static final ThreadPoolExecutor executorService = (ThreadPoolExecutor) Executors.newFixedThreadPool(4); private static final boolean debug = BattleConstants.battleDebug; diff --git a/src/main/java/calculationEngine/battle/CeBattle.java b/src/main/java/calculationengine/battle/CeBattle.java similarity index 94% rename from src/main/java/calculationEngine/battle/CeBattle.java rename to src/main/java/calculationengine/battle/CeBattle.java index 2579a86..75c52ee 100644 --- a/src/main/java/calculationEngine/battle/CeBattle.java +++ b/src/main/java/calculationengine/battle/CeBattle.java @@ -1,9 +1,13 @@ -package calculationEngine.battle; - -import calculationEngine.CeExecuterService; -import calculationEngine.entities.*; -import calculationEngine.environment.CeItem; -import calculationEngine.environment.CeItemTypes; +package calculationengine.battle; + +import calculationengine.CeExecuterServiceUtils; +import calculationengine.entities.CeAi; +import calculationengine.entities.CeAttack; +import calculationengine.entities.CeBeastTypes; +import calculationengine.entities.CeEntity; +import calculationengine.entities.CePlayer; +import calculationengine.environment.CeItem; +import calculationengine.environment.CeItemTypes; import config.BattleConstants; import java.util.Random; @@ -33,7 +37,7 @@ public CeBattle(CePlayer cePlayer1, CePlayer cePlayer2) { this.cePlayer2 = cePlayer2; this.cePlayer1.setNumber(1); this.cePlayer2.setNumber(2); - CeExecuterService.addThreadToExecutor(this); + CeExecuterServiceUtils.addThreadToExecutor(this); } public CeBattle(CePlayer cePlayer1, CeAi cePlayer2) { diff --git a/src/main/java/calculationEngine/battle/CeCatching.java b/src/main/java/calculationengine/battle/CeCatching.java similarity index 83% rename from src/main/java/calculationEngine/battle/CeCatching.java rename to src/main/java/calculationengine/battle/CeCatching.java index 0834b12..9b0edec 100644 --- a/src/main/java/calculationEngine/battle/CeCatching.java +++ b/src/main/java/calculationengine/battle/CeCatching.java @@ -1,18 +1,18 @@ -package calculationEngine.battle; +package calculationengine.battle; -import calculationEngine.entities.CeAttack; -import calculationEngine.entities.CeBeastTypes; -import calculationEngine.entities.CeEntity; -import calculationEngine.entities.CePlayer; -import calculationEngine.environment.CeItem; -import config.GlobalConfig; +import calculationengine.entities.CeAttack; +import calculationengine.entities.CeBeastTypes; +import calculationengine.entities.CeEntity; +import calculationengine.entities.CePlayer; +import calculationengine.environment.CeItem; +import config.GlobalConstants; import java.util.Random; public class CeCatching { private static Random random = new Random(); private static String debugInfo; - private final static boolean bDebug = GlobalConfig.DEBUG_CONSOLE_OUT; + private final static boolean bDebug = GlobalConstants.DEBUG_CONSOLE_OUT; public static boolean isCaught(CePlayer player, CeEntity beast, CeItem cage) { diff --git a/src/main/java/calculationEngine/battle/CeDamage.java b/src/main/java/calculationengine/battle/CeDamage.java similarity index 92% rename from src/main/java/calculationEngine/battle/CeDamage.java rename to src/main/java/calculationengine/battle/CeDamage.java index da6578e..4878b16 100644 --- a/src/main/java/calculationEngine/battle/CeDamage.java +++ b/src/main/java/calculationengine/battle/CeDamage.java @@ -1,15 +1,15 @@ -package calculationEngine.battle; +package calculationengine.battle; -import calculationEngine.entities.CeAttack; -import calculationEngine.entities.CeEntity; -import config.GlobalConfig; +import calculationengine.entities.CeAttack; +import calculationengine.entities.CeEntity; +import config.GlobalConstants; import java.util.Random; public class CeDamage { private static Random random = new Random(); private static String debugInfo; - private final static boolean bDebug = GlobalConfig.DEBUG_CONSOLE_OUT; + private final static boolean bDebug = GlobalConstants.DEBUG_CONSOLE_OUT; public static int calculateDamage(CeEntity attacker, CeEntity defender, CeAttack ceAttack) { //roll to d50 to get a quasi normal distribution diff --git a/src/main/java/calculationEngine/battle/testBattle.java b/src/main/java/calculationengine/battle/TestBattle.java similarity index 73% rename from src/main/java/calculationEngine/battle/testBattle.java rename to src/main/java/calculationengine/battle/TestBattle.java index a2daac8..7c083ea 100644 --- a/src/main/java/calculationEngine/battle/testBattle.java +++ b/src/main/java/calculationengine/battle/TestBattle.java @@ -1,33 +1,34 @@ -package calculationEngine.battle; +package calculationengine.battle; -import calculationEngine.CeExecuterService; -import calculationEngine.entities.*; -import calculationEngine.environment.CeLoot; -import calculationEngine.environment.CeRegions; +import calculationengine.CeExecuterServiceUtils; +import calculationengine.entities.CeAi; +import calculationengine.entities.CeAttack; +import calculationengine.entities.CeAttacks; +import calculationengine.entities.CeBeastTypes; +import calculationengine.entities.CeEntity; +import calculationengine.entities.CeNature; +import calculationengine.entities.CePlayer; +import calculationengine.entities.CeStats; +import calculationengine.entities.ItemNotInInventoryException; +import calculationengine.environment.CeLootUtils; +import calculationengine.environment.CeRegions; import java.util.ArrayList; import java.util.List; -public class testBattle { +public class TestBattle { public static void main(String[] args) throws Exception { -// simulateAiBattle(); + simulateAiBattle(); simulateCatch(); - CeExecuterService.shutdownExecutor(); + CeExecuterServiceUtils.shutdownExecutor(); } private static void simulateCatch() throws Exception { - List team = new ArrayList<>(); - List attacks = new ArrayList<>(); - attacks.add(new CeAttack(CeAttacks.Punch)); - CePlayer cePlayer1 = new CePlayer(new CeStats(CeBeastTypes.PlayerStandard, CeNature.ANGRY, 1, 100, 100, 50, 200, 200, 200, 1), attacks, team, false); - - team.add(new CeEntity(CeRegions.ArkhamCity, cePlayer1)); - cePlayer1.setTeam(team); - cePlayer1.setActiveMonsterIndex(0); + CePlayer cePlayer1 = init(); for (int i = 0; i < 1; i++) { - cePlayer1.getInventory().addItemToInventory(CeLoot.lootItem("cage")); + cePlayer1.getInventory().addItemToInventory(CeLootUtils.lootItem("cage")); } CeAi cePlayer2 = new CeAi(cePlayer1, CeRegions.ArkhamCity); CeBattle battle = new CeBattle(cePlayer1, cePlayer2); @@ -38,7 +39,7 @@ private static void simulateCatch() throws Exception { if (battle.getTurn().getNumber() == cePlayer1.getNumber()) { System.out.println("[Test Battle]: Turn of: Player 1"); try { - boolean caught = battle.catchBeast(CeLoot.lootItem("cage")); + boolean caught = battle.catchBeast(CeLootUtils.lootItem("cage")); if (caught) System.out.println("[Test Battle]: Beast caught! CONGRATS"); else System.out.println("[Test Battle]: Beast doesn't like you"); } catch (ItemNotInInventoryException itemNotInInventoryException) { @@ -49,22 +50,28 @@ private static void simulateCatch() throws Exception { battle.endBatte(); } } } else { - System.out.println("[Test Battle]: End of fight"); - } - Thread.sleep(10); + System.out.println("[Test Battle]: End of fight"); } - System.out.println("[Test Battle]: End of fight"); + Thread.sleep(10); } + System.out.println("[Test Battle]: End of fight"); + } - private static void simulateAiBattle() throws InterruptedException { - + private static CePlayer init() { List team = new ArrayList<>(); List attacks = new ArrayList<>(); attacks.add(new CeAttack(CeAttacks.Punch)); CePlayer cePlayer1 = new CePlayer(new CeStats(CeBeastTypes.PlayerStandard, CeNature.ANGRY, 1, 100, 100, 50, 200, 200, 200, 1), attacks, team, false); + team.add(new CeEntity(CeRegions.ArkhamCity, cePlayer1)); cePlayer1.setTeam(team); cePlayer1.setActiveMonsterIndex(0); + return cePlayer1; + } + + private static void simulateAiBattle() throws InterruptedException { + + CePlayer cePlayer1 = init(); CeAi cePlayer2 = new CeAi(cePlayer1, CeRegions.ArkhamCity); CeBattle battle = new CeBattle(cePlayer1, cePlayer2); System.out.println("[Test Battle]: Battle started"); diff --git a/src/main/java/calculationEngine/battle/WrongItemException.java b/src/main/java/calculationengine/battle/WrongItemException.java similarity index 71% rename from src/main/java/calculationEngine/battle/WrongItemException.java rename to src/main/java/calculationengine/battle/WrongItemException.java index cbec3d0..96c8e5f 100644 --- a/src/main/java/calculationEngine/battle/WrongItemException.java +++ b/src/main/java/calculationengine/battle/WrongItemException.java @@ -1,6 +1,6 @@ -package calculationEngine.battle; +package calculationengine.battle; -import calculationEngine.environment.CeItem; +import calculationengine.environment.CeItem; public class WrongItemException extends Exception{ public WrongItemException(CeItem item, String expected) { diff --git a/src/main/java/calculationEngine/entities/CeAi.java b/src/main/java/calculationengine/entities/CeAi.java similarity index 90% rename from src/main/java/calculationEngine/entities/CeAi.java rename to src/main/java/calculationengine/entities/CeAi.java index 66019b6..15591bd 100644 --- a/src/main/java/calculationEngine/entities/CeAi.java +++ b/src/main/java/calculationengine/entities/CeAi.java @@ -1,7 +1,7 @@ -package calculationEngine.entities; +package calculationengine.entities; -import calculationEngine.battle.CeBattle; -import calculationEngine.environment.CeRegions; +import calculationengine.battle.CeBattle; +import calculationengine.environment.CeRegions; import config.BattleConstants; import java.util.ArrayList; @@ -45,7 +45,7 @@ private void finishAIConstruction(CeEntity ceBeast){ ); this.setTeam(team); if (debug) System.out.println("[AI Construction]: AI CREATION: " + ceBeast.toString()); - this.setCeStats(new CeStats(ceBeast.getCeStats())); + this.setCeStats(ceBeast.getCeStats()); this.getCeStats().setMaxHitPoints(0); this.getCeStats().setCurrentHitPoints(0); this.currentMonster = this.getTeam().get(0); diff --git a/src/main/java/calculationEngine/entities/CeAttack.java b/src/main/java/calculationengine/entities/CeAttack.java similarity index 98% rename from src/main/java/calculationEngine/entities/CeAttack.java rename to src/main/java/calculationengine/entities/CeAttack.java index 9eaea81..f3b958f 100644 --- a/src/main/java/calculationEngine/entities/CeAttack.java +++ b/src/main/java/calculationengine/entities/CeAttack.java @@ -1,4 +1,4 @@ -package calculationEngine.entities; +package calculationengine.entities; import config.EntityConstants; diff --git a/src/main/java/calculationEngine/entities/CeAttacks.java b/src/main/java/calculationengine/entities/CeAttacks.java similarity index 98% rename from src/main/java/calculationEngine/entities/CeAttacks.java rename to src/main/java/calculationengine/entities/CeAttacks.java index 79130fa..18369ca 100644 --- a/src/main/java/calculationEngine/entities/CeAttacks.java +++ b/src/main/java/calculationengine/entities/CeAttacks.java @@ -1,4 +1,4 @@ -package calculationEngine.entities; +package calculationengine.entities; public enum CeAttacks { diff --git a/src/main/java/calculationEngine/entities/CeBeastTypes.java b/src/main/java/calculationengine/entities/CeBeastTypes.java similarity index 96% rename from src/main/java/calculationEngine/entities/CeBeastTypes.java rename to src/main/java/calculationengine/entities/CeBeastTypes.java index 2c138ab..5a5e4cc 100644 --- a/src/main/java/calculationEngine/entities/CeBeastTypes.java +++ b/src/main/java/calculationengine/entities/CeBeastTypes.java @@ -1,4 +1,4 @@ -package calculationEngine.entities; +package calculationengine.entities; public enum CeBeastTypes { diff --git a/src/main/java/calculationEngine/entities/CeBeasts.java b/src/main/java/calculationengine/entities/CeBeasts.java similarity index 97% rename from src/main/java/calculationEngine/entities/CeBeasts.java rename to src/main/java/calculationengine/entities/CeBeasts.java index 54045e7..02ba964 100644 --- a/src/main/java/calculationEngine/entities/CeBeasts.java +++ b/src/main/java/calculationengine/entities/CeBeasts.java @@ -1,6 +1,6 @@ -package calculationEngine.entities; +package calculationengine.entities; -import calculationEngine.environment.CeRegions; +import calculationengine.environment.CeRegions; public enum CeBeasts { diff --git a/src/main/java/calculationEngine/entities/CeEntity.java b/src/main/java/calculationengine/entities/CeEntity.java similarity index 98% rename from src/main/java/calculationEngine/entities/CeEntity.java rename to src/main/java/calculationengine/entities/CeEntity.java index 64337fe..f79ff1d 100644 --- a/src/main/java/calculationEngine/entities/CeEntity.java +++ b/src/main/java/calculationengine/entities/CeEntity.java @@ -1,6 +1,6 @@ -package calculationEngine.entities; +package calculationengine.entities; -import calculationEngine.environment.CeRegions; +import calculationengine.environment.CeRegions; import java.util.ArrayList; import java.util.Arrays; diff --git a/src/main/java/calculationEngine/entities/CeInventory.java b/src/main/java/calculationengine/entities/CeInventory.java similarity index 66% rename from src/main/java/calculationEngine/entities/CeInventory.java rename to src/main/java/calculationengine/entities/CeInventory.java index 0ef9dc2..53f2b56 100644 --- a/src/main/java/calculationEngine/entities/CeInventory.java +++ b/src/main/java/calculationengine/entities/CeInventory.java @@ -1,25 +1,33 @@ -package calculationEngine.entities; +package calculationengine.entities; -import calculationEngine.battle.WrongItemException; -import calculationEngine.environment.CeItem; -import calculationEngine.environment.CeItemTypes; +import calculationengine.battle.WrongItemException; +import calculationengine.environment.CeItem; +import calculationengine.environment.CeItemTypes; import java.util.ArrayList; -import static calculationEngine.environment.CeItemTypes.*; -import static calculationEngine.environment.CeItemTypes.armorShoulder; +import static calculationengine.environment.CeItemTypes.armorChest; +import static calculationengine.environment.CeItemTypes.armorHead; +import static calculationengine.environment.CeItemTypes.armorLegs; +import static calculationengine.environment.CeItemTypes.armorShoes; +import static calculationengine.environment.CeItemTypes.armorShoulder; +import static calculationengine.environment.CeItemTypes.cage; +import static calculationengine.environment.CeItemTypes.consumable; +import static calculationengine.environment.CeItemTypes.weapon; public class CeInventory { - CeItem equippedArmorShoulder; - CeItem equippedArmorShoes; - CeItem equippedArmorLegs; - CeItem equippedArmorChest; - CeItem equippedArmorHead; - CeItem equippedWeapon; + private CeItem equippedArmorShoulder; + private CeItem equippedArmorShoes; + private CeItem equippedArmorLegs; + private CeItem equippedArmorChest; + private CeItem equippedArmorHead; + private CeItem equippedWeapon; - int maxItemSlots = 10; - CeSlot[] slots = new CeSlot[maxItemSlots]; + private CeStats playerStats; + + private int maxItemSlots = 10; + private CeSlot[] slots = new CeSlot[maxItemSlots]; public void loadSaveInventory(CeItem armorShoulder, CeItem armorShoes, CeItem armorLegs, CeItem armorChest, CeItem armorHead, CeItem weapon, CeSlot[] slots) { this.slots = slots; @@ -31,15 +39,16 @@ public void loadSaveInventory(CeItem armorShoulder, CeItem armorShoes, CeItem ar this.equippedWeapon = weapon; } - public CeInventory() { + public CeInventory(CeStats ceStats) { for (int i = 0; i < slots.length; i++) { slots[i] = new CeSlot(); } + this.playerStats = ceStats; } public void addItemToInventory(CeItem item) throws NoPlaceInInventoryException { if (item == null) { - throw new NullPointerException(); + throw new IllegalArgumentException(); } boolean foundSlot = false; boolean addedItem = false; @@ -69,15 +78,15 @@ public void useItem(CeItem item) throws ItemNotInInventoryException { for (CeSlot slot : slots) { CeItem slotItem = slot.getItem(); - if (slotItem != null) { - if (slotItem.compareTo(item)) { - matchingItem = true; - int remainingAmount = slot.decreaseAmount(); - if (remainingAmount <= 0) { - slot.reset(); - } - break; + if (slotItem != null && slotItem.compareTo(item)) { + matchingItem = true; + //TODO: Add switch case for item type and call correct Methods + slotItem.use(this.playerStats); + int remainingAmount = slot.decreaseAmount(); + if (remainingAmount <= 0) { + slot.reset(); } + break; } } if (!matchingItem) { @@ -131,56 +140,75 @@ public void setEquippedItem(CeItem equippedItem) throws WrongItemException { } private void setEquippedArmorShoulder(CeItem equippedArmorShoulder) throws WrongItemException { - if (this.equippedArmorShoulder != null) + if (this.equippedArmorShoulder != null) { + this.playerStats.removeBonusStats(this.equippedArmorShoulder.getItemBonusStats()); this.equippedArmorShoulder.unequip(); + // TODO: set to null + } if (equippedArmorShoulder.getType() == armorShoulder) { this.equippedArmorShoulder = equippedArmorShoulder; this.equippedArmorShoulder.equip(); + this.playerStats.applyBonusStats(equippedArmorShoulder.getItemBonusStats()); } else throw new WrongItemException(equippedArmorShoulder, "Armor type shoulderArmor"); } private void setEquippedArmorShoes(CeItem equippedArmorShoes) throws WrongItemException { - if (this.equippedArmorShoes != null) + if (this.equippedArmorShoes != null) { + this.playerStats.removeBonusStats(this.equippedArmorShoes.getItemBonusStats()); this.equippedArmorShoes.unequip(); + } if (equippedArmorShoes.getType() == armorShoes) { this.equippedArmorShoes = equippedArmorShoes; this.equippedArmorShoes.equip(); + this.playerStats.applyBonusStats(equippedArmorShoes.getItemBonusStats()); } else throw new WrongItemException(equippedArmorShoes, "Armor type armorShoes"); } private void setEquippedArmorLegs(CeItem equippedArmorLegs) throws WrongItemException { - if (this.equippedArmorLegs != null) + if (this.equippedArmorLegs != null) { + this.playerStats.removeBonusStats(this.equippedArmorLegs.getItemBonusStats()); this.equippedArmorLegs.unequip(); + } if (equippedArmorLegs.getType() == armorLegs) { this.equippedArmorLegs = equippedArmorLegs; this.equippedArmorLegs.equip(); + this.playerStats.applyBonusStats(equippedArmorLegs.getItemBonusStats()); } else throw new WrongItemException(equippedArmorLegs, "Armor type ArmorLegs"); } private void setEquippedArmorChest(CeItem equippedArmorChest) throws WrongItemException { - if (this.equippedArmorChest != null) + if (this.equippedArmorChest != null) { + this.playerStats.removeBonusStats(this.equippedArmorChest.getItemBonusStats()); this.equippedArmorChest.unequip(); + } if (equippedArmorChest.getType() == armorChest) { this.equippedArmorChest = equippedArmorChest; this.equippedArmorChest.equip(); + this.playerStats.applyBonusStats(equippedArmorChest.getItemBonusStats()); } else throw new WrongItemException(equippedArmorChest, "Armor type ArmorChest"); } private void setEquippedArmorHead(CeItem equippedArmorHead) throws WrongItemException { - if (this.equippedArmorHead != null) + if (this.equippedArmorHead != null) { + this.playerStats.removeBonusStats(this.equippedArmorHead.getItemBonusStats()); this.equippedArmorHead.unequip(); + } if (equippedArmorHead.getType() == armorHead) { this.equippedArmorHead = equippedArmorHead; this.equippedArmorHead.equip(); + this.playerStats.applyBonusStats(equippedArmorHead.getItemBonusStats()); } else throw new WrongItemException(equippedArmorHead, "Armor type armorHead"); } private void setEquippedWeapon(CeItem equippedWeapon) throws WrongItemException { - if (this.equippedWeapon != null) + if (this.equippedWeapon != null) { + this.playerStats.removeBonusStats(this.equippedWeapon.getItemBonusStats()); this.equippedWeapon.unequip(); + } if (equippedWeapon.getType() == weapon) { this.equippedWeapon = equippedWeapon; this.equippedWeapon.equip(); + this.playerStats.applyBonusStats(equippedWeapon.getItemBonusStats()); } else throw new WrongItemException(equippedWeapon, "Armor type weapon"); } @@ -215,4 +243,8 @@ public CeSlot[] getSlots() { public int getMaxItemSlots() { return maxItemSlots; } + + public void setPlayerStats(CeStats playerStats) { + this.playerStats = playerStats; + } } diff --git a/src/main/java/calculationEngine/entities/CeNature.java b/src/main/java/calculationengine/entities/CeNature.java similarity index 89% rename from src/main/java/calculationEngine/entities/CeNature.java rename to src/main/java/calculationengine/entities/CeNature.java index a3192c4..db0bdcc 100644 --- a/src/main/java/calculationEngine/entities/CeNature.java +++ b/src/main/java/calculationengine/entities/CeNature.java @@ -1,4 +1,4 @@ -package calculationEngine.entities; +package calculationengine.entities; import java.util.Random; diff --git a/src/main/java/calculationEngine/entities/CePlayer.java b/src/main/java/calculationengine/entities/CePlayer.java similarity index 90% rename from src/main/java/calculationEngine/entities/CePlayer.java rename to src/main/java/calculationengine/entities/CePlayer.java index 7ec563a..12cd21c 100644 --- a/src/main/java/calculationEngine/entities/CePlayer.java +++ b/src/main/java/calculationengine/entities/CePlayer.java @@ -1,6 +1,6 @@ -package calculationEngine.entities; +package calculationengine.entities; -import config.PlayerConfig; +import config.PlayerConstants; import java.util.List; @@ -10,14 +10,14 @@ public class CePlayer extends CeEntity { private boolean isAI; private int playerNumber; private int activeMonsterIndex = 0; - private final CeAttack[] playerStandardCeAttacks = PlayerConfig.PLAYER_STANDARD_CE_ATTACKS; + private final CeAttack[] playerStandardCeAttacks = PlayerConstants.PLAYER_STANDARD_CE_ATTACKS; private CeInventory inventory; public CePlayer(CeStats ceStats, List ceAttacks, List team, boolean isAI) { super(ceStats, ceAttacks, Integer.MAX_VALUE, false); this.team = team; this.isAI = isAI; - this.inventory = new CeInventory(); + this.inventory = new CeInventory(this.getCeStats()); } // Constructor for AI diff --git a/src/main/java/calculationEngine/entities/CeSlot.java b/src/main/java/calculationengine/entities/CeSlot.java similarity index 89% rename from src/main/java/calculationEngine/entities/CeSlot.java rename to src/main/java/calculationengine/entities/CeSlot.java index 54b8c14..18d0374 100644 --- a/src/main/java/calculationEngine/entities/CeSlot.java +++ b/src/main/java/calculationengine/entities/CeSlot.java @@ -1,6 +1,6 @@ -package calculationEngine.entities; +package calculationengine.entities; -import calculationEngine.environment.CeItem; +import calculationengine.environment.CeItem; public class CeSlot { diff --git a/src/main/java/calculationEngine/entities/CeStats.java b/src/main/java/calculationengine/entities/CeStats.java similarity index 66% rename from src/main/java/calculationEngine/entities/CeStats.java rename to src/main/java/calculationengine/entities/CeStats.java index bb7ccec..bab1f5c 100644 --- a/src/main/java/calculationEngine/entities/CeStats.java +++ b/src/main/java/calculationengine/entities/CeStats.java @@ -1,8 +1,8 @@ -package calculationEngine.entities; +package calculationengine.entities; +import calculationengine.environment.CeItemBonusStats; import config.AiConstants; import config.EntityConstants; -import config.PlayerConfig; import java.util.Random; @@ -18,6 +18,7 @@ public class CeStats { private int attack; private int defense; private int friendshipPoints; + private int critBonus = 0; private Random random = new Random(); @@ -36,7 +37,7 @@ public CeStats(CeBeastTypes type, CeNature nature, int level, int currentHitPoin } // Constructor for a new random Beast - public CeStats(CeBeasts beast, int playerLvl){ + public CeStats(CeBeasts beast, int playerLvl) { // calculate Level this.level = calcLvl(playerLvl); this.nature = CeNature.getRandomNature(); @@ -50,7 +51,7 @@ public CeStats(CeBeasts beast, int playerLvl){ this.defense = scaleOnLvl(beast.getBaseDefense(), this.level, beast.getDefenseLvlScaling()) + (random.nextInt(EntityConstants.DEFENSE_RANGE * 2) - EntityConstants.DEFENSE_RANGE); } - public CeStats(CeBeasts beast){ // dev constructor + public CeStats(CeBeasts beast) { // dev constructor this.type = beast.getType(); this.nature = CeNature.getRandomNature(); this.currentHitPoints = beast.getBaseHp(); @@ -64,7 +65,7 @@ public CeStats(CeBeasts beast){ // dev constructor } // AI NPC Constructor - public CeStats(int playerLvl, CeBeastTypes type){ + public CeStats(int playerLvl, CeBeastTypes type) { this.level = calcLvl(playerLvl); this.type = type; this.nature = CeNature.getRandomNature(); @@ -78,19 +79,6 @@ public CeStats(int playerLvl, CeBeastTypes type){ this.friendshipPoints = 0; } - public CeStats(CeStats ceStats){ - this.level = ceStats.getLevel(); - this.currentHitPoints = ceStats.getCurrentHitPoints(); - this.maxHitPoints = ceStats.getMaxHitPoints(); - this.speed = ceStats.getSpeed(); - this.stamina = ceStats.getStamina(); - this.attack = ceStats.getAttack(); - this.defense = ceStats.getDefense(); - this.friendshipPoints = ceStats.getFriendshipPoints(); - this.type = ceStats.getType(); - this.nature = ceStats.getNature(); - } - private int calcLvl(int playerLvl) { int tmpLevel = playerLvl + (random.nextInt(EntityConstants.LVL_RANGE * 2) - EntityConstants.LVL_RANGE); boolean lvlInRange = EntityConstants.MAX_LVL >= tmpLevel && EntityConstants.START_LVL <= tmpLevel; @@ -98,6 +86,24 @@ private int calcLvl(int playerLvl) { } + public void applyBonusStats(CeItemBonusStats ceItemBonusStats) { + this.attack += ceItemBonusStats.getAttack(); + this.defense += ceItemBonusStats.getDefense(); + this.maxHitPoints += ceItemBonusStats.getHealthPoints(); + this.speed += ceItemBonusStats.getSpeed(); + this.stamina += ceItemBonusStats.getStamina(); + this.critBonus += ceItemBonusStats.getCritBonus(); + } + + public void removeBonusStats(CeItemBonusStats ceItemBonusStats) { + this.attack -= ceItemBonusStats.getAttack(); + this.defense -= ceItemBonusStats.getDefense(); + this.maxHitPoints -= ceItemBonusStats.getHealthPoints(); + this.speed -= ceItemBonusStats.getSpeed(); + this.stamina -= ceItemBonusStats.getStamina(); + this.critBonus -= ceItemBonusStats.getCritBonus(); + } + public static int scaleOnLvl(int base, int lvl, int lvlScaling) { return base + lvl * lvlScaling; } @@ -153,4 +159,50 @@ public void setCurrentHitPoints(int currentHitPoints) { public void setMaxHitPoints(int maxHitPoints) { this.maxHitPoints = maxHitPoints; } + + public int getCritBonus() { + return critBonus; + } + + public void setSpeed(int speed) { + this.speed = speed; + } + + public void setStamina(int stamina) { + this.stamina = stamina; + } + + public void setAttack(int attack) { + this.attack = attack; + } + + public void setDefense(int defense) { + this.defense = defense; + } + + public void setFriendshipPoints(int friendshipPoints) { + this.friendshipPoints = friendshipPoints; + } + + public void setCritBonus(int critBonus) { + this.critBonus = critBonus; + } + + @Override + public String toString() { + return "CeStats{" + + "type=" + type + + ", nature=" + nature + + ", level=" + level + + ", currentHitPoints=" + currentHitPoints + + ", maxHitPoints=" + maxHitPoints + + ", speed=" + speed + + ", stamina=" + stamina + + ", attack=" + attack + + ", defense=" + defense + + ", friendshipPoints=" + friendshipPoints + + ", critBonus=" + critBonus + + ", random=" + random + + '}'; + } } diff --git a/src/main/java/calculationEngine/entities/ItemNotInInventoryException.java b/src/main/java/calculationengine/entities/ItemNotInInventoryException.java similarity index 70% rename from src/main/java/calculationEngine/entities/ItemNotInInventoryException.java rename to src/main/java/calculationengine/entities/ItemNotInInventoryException.java index cb77e2a..a8cc786 100644 --- a/src/main/java/calculationEngine/entities/ItemNotInInventoryException.java +++ b/src/main/java/calculationengine/entities/ItemNotInInventoryException.java @@ -1,6 +1,6 @@ -package calculationEngine.entities; +package calculationengine.entities; -import calculationEngine.environment.CeItem; +import calculationengine.environment.CeItem; public class ItemNotInInventoryException extends Exception { public ItemNotInInventoryException(CeItem item){ diff --git a/src/main/java/calculationEngine/entities/NoPlaceInInventoryException.java b/src/main/java/calculationengine/entities/NoPlaceInInventoryException.java similarity index 63% rename from src/main/java/calculationEngine/entities/NoPlaceInInventoryException.java rename to src/main/java/calculationengine/entities/NoPlaceInInventoryException.java index c661d90..321c3e6 100644 --- a/src/main/java/calculationEngine/entities/NoPlaceInInventoryException.java +++ b/src/main/java/calculationengine/entities/NoPlaceInInventoryException.java @@ -1,6 +1,4 @@ -package calculationEngine.entities; - -import calculationEngine.environment.CeItem; +package calculationengine.entities; public class NoPlaceInInventoryException extends Exception{ public NoPlaceInInventoryException() { diff --git a/src/main/java/calculationEngine/environment/CeItem.java b/src/main/java/calculationengine/environment/CeItem.java similarity index 85% rename from src/main/java/calculationEngine/environment/CeItem.java rename to src/main/java/calculationengine/environment/CeItem.java index a71e451..7956337 100644 --- a/src/main/java/calculationEngine/environment/CeItem.java +++ b/src/main/java/calculationengine/environment/CeItem.java @@ -1,5 +1,6 @@ -package calculationEngine.environment; +package calculationengine.environment; +import calculationengine.entities.CeStats; import org.json.JSONObject; public class CeItem { @@ -12,9 +13,7 @@ public class CeItem { private int uses; private CeItemBonusStats itemBonusStats; private String description; - - public CeItem() { - } + private CeItemEffects effect; public void setItemFromSaveGame(JSONObject itemJson) { this.equipped = itemJson.getBoolean("equipped"); //TODO: needs to be in the savegame JSON @@ -32,8 +31,9 @@ private void setItem(JSONObject itemJson) { this.unique = itemJson.getBoolean("unique"); this.type = CeItemTypes.valueOf(itemJson.getString("type")); this.uses = itemJson.getInt("uses"); - this.itemBonusStats = new CeItemBonusStats(CeLoot.jsonArrayToIntArray(itemJson.getJSONArray("bonusStats"))); + this.itemBonusStats = new CeItemBonusStats(CeLootUtils.jsonArrayToIntArray(itemJson.getJSONArray("bonusStats"))); this.description = itemJson.getString("description"); + this.effect = new CeItemEffects(itemJson.getJSONObject("effects")); } public void equip() { @@ -44,7 +44,8 @@ public void unequip() { this.equipped = false; } - public int use() { + public int use(CeStats ceStats) { + this.effect.use(ceStats); this.uses--; return this.uses; //return remaining uses, so they can be handled in the iventory handler } diff --git a/src/main/java/calculationEngine/environment/CeItemBonusStats.java b/src/main/java/calculationengine/environment/CeItemBonusStats.java similarity index 97% rename from src/main/java/calculationEngine/environment/CeItemBonusStats.java rename to src/main/java/calculationengine/environment/CeItemBonusStats.java index 02ba381..d682988 100644 --- a/src/main/java/calculationEngine/environment/CeItemBonusStats.java +++ b/src/main/java/calculationengine/environment/CeItemBonusStats.java @@ -1,4 +1,4 @@ -package calculationEngine.environment; +package calculationengine.environment; public class CeItemBonusStats { diff --git a/src/main/java/calculationengine/environment/CeItemEffects.java b/src/main/java/calculationengine/environment/CeItemEffects.java new file mode 100644 index 0000000..ae1a423 --- /dev/null +++ b/src/main/java/calculationengine/environment/CeItemEffects.java @@ -0,0 +1,74 @@ +package calculationengine.environment; + +import calculationengine.entities.CeStats; +import config.BattleConstants; +import org.json.JSONObject; + +public class CeItemEffects { + + private Effects effect; + private String description; + private int value; + + private static final boolean debug = BattleConstants.battleDebug; + + private enum Effects { + healing, + increaseSpeed, + increaseAttack, + increaseCritBonus, + increaseDefense, + catchBeast, + defaultEffect + } + + public CeItemEffects(JSONObject effectObject){ + this.effect = Effects.valueOf(effectObject.getString("type")); + this.value = effectObject.getInt("value"); + this.description = effectObject.getString("description"); + } + + public void use(CeStats ceStats){ + switch (this.effect.name()){ + case "healing": + int hitPoints = ceStats.getCurrentHitPoints(); + hitPoints += this.value; + ceStats.setCurrentHitPoints(hitPoints); + if (debug) System.out.println("[CeItemEffects] healing by " + this.value + " points"); + break; + case "increaseSpeed": + int speed = ceStats.getSpeed(); + speed += this.value; + ceStats.setSpeed(speed); + break; + case "increaseAttack": + int attack = ceStats.getAttack(); + attack += this.value; + ceStats.setAttack(attack); + break; + case "increaseCritBonus": + int critBonus = ceStats.getCritBonus(); + critBonus += this.value; + ceStats.setCritBonus(critBonus); + break; + case "increaseDefense": + int defense = ceStats.getDefense(); + defense += this.value; + ceStats.setDefense(defense); + break; + default: break; + } + } + + public Effects getEffect() { + return effect; + } + + public String getDescription() { + return description; + } + + public int getValue() { + return value; + } +} \ No newline at end of file diff --git a/src/main/java/calculationEngine/environment/CeItemTypes.java b/src/main/java/calculationengine/environment/CeItemTypes.java similarity index 79% rename from src/main/java/calculationEngine/environment/CeItemTypes.java rename to src/main/java/calculationengine/environment/CeItemTypes.java index e41017e..8d1c748 100644 --- a/src/main/java/calculationEngine/environment/CeItemTypes.java +++ b/src/main/java/calculationengine/environment/CeItemTypes.java @@ -1,4 +1,4 @@ -package calculationEngine.environment; +package calculationengine.environment; public enum CeItemTypes { diff --git a/src/main/java/calculationEngine/environment/CeLoot.java b/src/main/java/calculationengine/environment/CeLootUtils.java similarity index 93% rename from src/main/java/calculationEngine/environment/CeLoot.java rename to src/main/java/calculationengine/environment/CeLootUtils.java index 2707360..f104d01 100644 --- a/src/main/java/calculationEngine/environment/CeLoot.java +++ b/src/main/java/calculationengine/environment/CeLootUtils.java @@ -1,10 +1,10 @@ -package calculationEngine.environment; +package calculationengine.environment; import org.json.JSONArray; import org.json.JSONObject; -import static config.LootConfig.itemList; +import static config.LootConstants.itemList; -public class CeLoot { +public class CeLootUtils { public static CeItem lootItem(String itemKey) { JSONObject itemJson = new JSONObject(itemList.get(itemKey).toString()); diff --git a/src/main/java/calculationEngine/environment/CeRegions.java b/src/main/java/calculationengine/environment/CeRegions.java similarity index 71% rename from src/main/java/calculationEngine/environment/CeRegions.java rename to src/main/java/calculationengine/environment/CeRegions.java index ebb9743..2986bea 100644 --- a/src/main/java/calculationEngine/environment/CeRegions.java +++ b/src/main/java/calculationengine/environment/CeRegions.java @@ -1,4 +1,4 @@ -package calculationEngine.environment; +package calculationengine.environment; public enum CeRegions { IvoryForest, ArkhamCity, Dunwich, Marshlands, MiscatonicMountains; diff --git a/src/main/java/calculationengine/environment/TestItems.java b/src/main/java/calculationengine/environment/TestItems.java new file mode 100644 index 0000000..23b9ca7 --- /dev/null +++ b/src/main/java/calculationengine/environment/TestItems.java @@ -0,0 +1,52 @@ +package calculationengine.environment; + +import calculationengine.battle.WrongItemException; +import calculationengine.entities.CeAttack; +import calculationengine.entities.CeAttacks; +import calculationengine.entities.CeBeastTypes; +import calculationengine.entities.CeBeasts; +import calculationengine.entities.CeEntity; +import calculationengine.entities.CeInventory; +import calculationengine.entities.CeNature; +import calculationengine.entities.CePlayer; +import calculationengine.entities.CeStats; +import calculationengine.entities.ItemNotInInventoryException; +import calculationengine.entities.NoPlaceInInventoryException; + +import java.util.ArrayList; +import java.util.List; + +public class TestItems { + public static void main(String[] args) throws NoPlaceInInventoryException { + System.out.println(CeLootUtils.lootItem("cage").toString()); + CeInventory inventory = new CeInventory(new CeStats(CeBeasts.StinkenderFeuerFurz)); + inventory.addItemToInventory(CeLootUtils.lootItem("cage")); + System.out.println("Amount: " + inventory.getSlots()[0].getAmount()); // should be 1 + inventory.addItemToInventory(CeLootUtils.lootItem("cage")); + System.out.println("Amount: " + inventory.getSlots()[0].getAmount()); // should be 2 + inventory.addItemToInventory(CeLootUtils.lootItem("aHealingPotion")); + System.out.println(inventory.getSlots()[1].getItem().toString()); + + List team = new ArrayList<>(); + List attacks = new ArrayList<>(); + attacks.add(new CeAttack(CeAttacks.Punch)); + CePlayer cePlayer1 = new CePlayer(new CeStats(CeBeastTypes.PlayerStandard, CeNature.ANGRY, 1, 100, 100, 50, 200, 200, 200, 1), attacks, team, false); + + System.out.println(cePlayer1.getCeStats().getCurrentHitPoints()); + System.out.println(cePlayer1.getCeStats().toString()); + cePlayer1.getInventory().addItemToInventory(CeLootUtils.lootItem("aGreaterHealingPotion")); + try { + cePlayer1.getInventory().useItem(CeLootUtils.lootItem("aGreaterHealingPotion")); + System.out.println(cePlayer1.getCeStats().getCurrentHitPoints()); + } catch (ItemNotInInventoryException itemNotInInventoryException) { + itemNotInInventoryException.printStackTrace(); + } + cePlayer1.getInventory().addItemToInventory(CeLootUtils.lootItem("stickOfBeating")); + try { + cePlayer1.getInventory().setEquippedItem(CeLootUtils.lootItem("stickOfBeating")); + } catch (WrongItemException wrongItemException) { + wrongItemException.printStackTrace(); + } + System.out.println(cePlayer1.getCeStats().toString()); + } +} diff --git a/src/main/java/config/BattleConstants.java b/src/main/java/config/BattleConstants.java index bb37fa1..d77ef70 100644 --- a/src/main/java/config/BattleConstants.java +++ b/src/main/java/config/BattleConstants.java @@ -1,6 +1,6 @@ package config; -import calculationEngine.entities.CePlayer; +import calculationengine.entities.CePlayer; public class BattleConstants { diff --git a/src/main/java/config/GlobalConfig.java b/src/main/java/config/GlobalConstants.java similarity index 80% rename from src/main/java/config/GlobalConfig.java rename to src/main/java/config/GlobalConstants.java index 3ab5fbb..41fb7c8 100644 --- a/src/main/java/config/GlobalConfig.java +++ b/src/main/java/config/GlobalConstants.java @@ -1,6 +1,6 @@ package config; -public class GlobalConfig { +public class GlobalConstants { //ToDo: add if(DEBUG_CONSOLE_OUT) to all souts public static final boolean DEBUG_CONSOLE_OUT = false; } diff --git a/src/main/java/config/LootConfig.java b/src/main/java/config/LootConstants.java similarity index 76% rename from src/main/java/config/LootConfig.java rename to src/main/java/config/LootConstants.java index 350a351..b226a84 100644 --- a/src/main/java/config/LootConfig.java +++ b/src/main/java/config/LootConstants.java @@ -2,9 +2,9 @@ import org.json.JSONObject; -import static utilities.JsonReader.readJson; +import static utilities.JsonReaderUtils.readJson; -public class LootConfig { +public class LootConstants { public static final int dropCommon = 60; public static final int dropRare = 35; diff --git a/src/main/java/config/PlayerConfig.java b/src/main/java/config/PlayerConstants.java similarity index 72% rename from src/main/java/config/PlayerConfig.java rename to src/main/java/config/PlayerConstants.java index 50e887e..4882164 100644 --- a/src/main/java/config/PlayerConfig.java +++ b/src/main/java/config/PlayerConstants.java @@ -1,9 +1,9 @@ package config; -import calculationEngine.entities.CeAttack; -import calculationEngine.entities.CeAttacks; +import calculationengine.entities.CeAttack; +import calculationengine.entities.CeAttacks; -public class PlayerConfig { +public class PlayerConstants { public static final String[] PLAYER_ACTIONS = new String[] {"Attack", "Catch", "Tame", "Pick Beast", "Item"}; public static final CeAttack[] PLAYER_STANDARD_CE_ATTACKS = new CeAttack[]{new CeAttack(CeAttacks.Catch), new CeAttack(CeAttacks.Flee), new CeAttack(CeAttacks.Punch)}; diff --git a/src/main/java/config/TestConfig.java b/src/main/java/config/TestConstants.java similarity index 67% rename from src/main/java/config/TestConfig.java rename to src/main/java/config/TestConstants.java index d371ceb..7fc781a 100644 --- a/src/main/java/config/TestConfig.java +++ b/src/main/java/config/TestConstants.java @@ -1,5 +1,5 @@ package config; -public class TestConfig { +public class TestConstants { public static int ROBOT_SLEEP = 1000; } diff --git a/src/main/java/utilities/JsonReader.java b/src/main/java/utilities/JsonReaderUtils.java similarity index 76% rename from src/main/java/utilities/JsonReader.java rename to src/main/java/utilities/JsonReaderUtils.java index d9f1a32..176c6b6 100644 --- a/src/main/java/utilities/JsonReader.java +++ b/src/main/java/utilities/JsonReaderUtils.java @@ -2,13 +2,16 @@ import org.json.JSONObject; -import java.io.*; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; -public class JsonReader { +public class JsonReaderUtils { public static JSONObject readJson(String fileName) { - InputStream inputStream = JsonReader.class.getResourceAsStream(fileName); + InputStream inputStream = JsonReaderUtils.class.getResourceAsStream(fileName); StringBuilder sJson = new StringBuilder(); try { assert inputStream != null; diff --git a/src/main/resources/items.JSON b/src/main/resources/items.JSON index a74b79b..34b5f06 100644 --- a/src/main/resources/items.JSON +++ b/src/main/resources/items.JSON @@ -6,7 +6,11 @@ "description": "Cage to catch a litteBeast", "probability": "90", "uses": 1, - "effects": "Catch", + "effects": { + "description": "Catch a beast", + "type": "catchBeast", + "value": 0 + }, "unique": false, "type": "cage", "bonusStats":[ @@ -27,7 +31,11 @@ "description": "Heals a portion of your life", "probability": "80", "uses": 1, - "effects": "Heals 10HP", + "effects": { + "description": "Heals 10HP", + "type": "healing", + "value": 10 + }, "unique": false, "type": "consumable", "bonusStats":[ @@ -48,7 +56,11 @@ "description": "Heals a portion of your life", "probability": "20", "uses": 1, - "effects": "Heals 10HP", + "effects": { + "description": "Heals 10HP", + "type": "healing", + "value": 10 + }, "type": "consumable", "unique": false, "bonusStats":[ @@ -69,7 +81,11 @@ "description": "It's a stick, you can hit someone with it. Don't.", "probability": "80", "uses": 1, - "effects": "It hurts.", + "effects": { + "description": "It Hurts", + "type": "defaultEffect", + "value": 0 + }, "type": "weapon", "unique": false, "bonusStats":[ @@ -90,7 +106,11 @@ "description": "It's a stick, you can hit someone with it. Do.", "probability": "20", "uses": 1, - "effects": "It hurts.", + "effects": { + "description": "It hurts", + "type": "defaultEffect", + "value": 0 + }, "type": "weapon", "unique": false, "bonusStats":[ @@ -111,7 +131,11 @@ "description": "It's Zordons Hammer, what do you think it will do?", "probability": "90", "uses": 1, - "effects": "Hammers like crazy", + "effects": { + "description": "Hammers like crazy", + "type": "defaultEffect", + "value": 0 + }, "type": "weapon", "unique": false, "bonusStats":[ @@ -132,7 +156,11 @@ "description": "It's Karls Hammer, it hammers", "probability": "10", "uses": 1, - "effects": "Hammers like totally crazy", + "effects": { + "description": "Hammers like totally crazy", + "type": "defaultEffect", + "value": 0 + }, "type": "weapon", "unique": false, "bonusStats":[ diff --git a/src/test/java/calculationEngine.enviroment/CeInventoryTest.java b/src/test/java/calculationengine/enviroment/CeInventoryTest.java similarity index 74% rename from src/test/java/calculationEngine.enviroment/CeInventoryTest.java rename to src/test/java/calculationengine/enviroment/CeInventoryTest.java index 9b8b408..1e5a040 100644 --- a/src/test/java/calculationEngine.enviroment/CeInventoryTest.java +++ b/src/test/java/calculationengine/enviroment/CeInventoryTest.java @@ -1,23 +1,24 @@ -package calculationEngine.enviroment; +package calculationengine.enviroment; -import calculationEngine.entities.CeInventory; -import calculationEngine.entities.CeSlot; -import calculationEngine.entities.NoPlaceInInventoryException; -import calculationEngine.environment.CeItem; +import calculationengine.entities.CeBeasts; +import calculationengine.entities.CeInventory; +import calculationengine.entities.CeSlot; +import calculationengine.entities.CeStats; +import calculationengine.entities.NoPlaceInInventoryException; +import calculationengine.environment.CeItem; import org.json.JSONObject; import org.junit.Before; import org.junit.Test; -import org.mockito.Mockito; -import static config.LootConfig.itemList; -import static org.junit.Assert.*; +import static config.LootConstants.itemList; +import static org.junit.Assert.assertEquals; public class CeInventoryTest { - CeInventory ceInventory; + private CeInventory ceInventory; @Before public void setUp() { - ceInventory = new CeInventory(); + ceInventory = new CeInventory(new CeStats(CeBeasts.StinkenderFeuerFurz)); } @Test @@ -54,8 +55,8 @@ public void addItemTwoTimesToInventory() throws NoPlaceInInventoryException { assertEquals(itemAmount, amountToAdd); } - @Test(expected = NullPointerException.class) - public void addNullToInventory() throws NoPlaceInInventoryException { + @Test(expected = IllegalArgumentException.class) + public void addNullToInventory() throws IllegalArgumentException, NoPlaceInInventoryException { ceInventory.addItemToInventory(null); } diff --git a/src/test/resources/items.JSON b/src/test/resources/items.JSON index a74b79b..34b5f06 100644 --- a/src/test/resources/items.JSON +++ b/src/test/resources/items.JSON @@ -6,7 +6,11 @@ "description": "Cage to catch a litteBeast", "probability": "90", "uses": 1, - "effects": "Catch", + "effects": { + "description": "Catch a beast", + "type": "catchBeast", + "value": 0 + }, "unique": false, "type": "cage", "bonusStats":[ @@ -27,7 +31,11 @@ "description": "Heals a portion of your life", "probability": "80", "uses": 1, - "effects": "Heals 10HP", + "effects": { + "description": "Heals 10HP", + "type": "healing", + "value": 10 + }, "unique": false, "type": "consumable", "bonusStats":[ @@ -48,7 +56,11 @@ "description": "Heals a portion of your life", "probability": "20", "uses": 1, - "effects": "Heals 10HP", + "effects": { + "description": "Heals 10HP", + "type": "healing", + "value": 10 + }, "type": "consumable", "unique": false, "bonusStats":[ @@ -69,7 +81,11 @@ "description": "It's a stick, you can hit someone with it. Don't.", "probability": "80", "uses": 1, - "effects": "It hurts.", + "effects": { + "description": "It Hurts", + "type": "defaultEffect", + "value": 0 + }, "type": "weapon", "unique": false, "bonusStats":[ @@ -90,7 +106,11 @@ "description": "It's a stick, you can hit someone with it. Do.", "probability": "20", "uses": 1, - "effects": "It hurts.", + "effects": { + "description": "It hurts", + "type": "defaultEffect", + "value": 0 + }, "type": "weapon", "unique": false, "bonusStats":[ @@ -111,7 +131,11 @@ "description": "It's Zordons Hammer, what do you think it will do?", "probability": "90", "uses": 1, - "effects": "Hammers like crazy", + "effects": { + "description": "Hammers like crazy", + "type": "defaultEffect", + "value": 0 + }, "type": "weapon", "unique": false, "bonusStats":[ @@ -132,7 +156,11 @@ "description": "It's Karls Hammer, it hammers", "probability": "10", "uses": 1, - "effects": "Hammers like totally crazy", + "effects": { + "description": "Hammers like totally crazy", + "type": "defaultEffect", + "value": 0 + }, "type": "weapon", "unique": false, "bonusStats":[