From 095ae105c5c599c6d409e6610bd583169f83c66e Mon Sep 17 00:00:00 2001
From: kearney <chris.kearney@urbanairship.com>
Date: Fri, 29 Aug 2014 15:24:23 -0700
Subject: [PATCH] min/max health and a prompt with health info

---
 .../java/com/comandante/creeper/Main.java     |  2 +-
 .../creeper/entity/EntityManager.java         |  2 +-
 .../creeper/managers/FightManager.java        | 12 +--
 .../com/comandante/creeper/npc/NpcStats.java  |  6 +-
 .../com/comandante/creeper/player/Player.java |  2 +-
 .../creeper/player/PlayerManager.java         | 11 ++-
 .../creeper/player/PlayerStats.java           |  3 +-
 .../com/comandante/creeper/stat/Stats.java    | 77 +++++++++----------
 .../comandante/creeper/stat/StatsBuilder.java | 14 +++-
 .../comandante/creeper/stat/StatsTester.java  |  8 +-
 10 files changed, 74 insertions(+), 63 deletions(-)

diff --git a/src/main/java/com/comandante/creeper/Main.java b/src/main/java/com/comandante/creeper/Main.java
index 8c1fa10b..0e1705e7 100644
--- a/src/main/java/com/comandante/creeper/Main.java
+++ b/src/main/java/com/comandante/creeper/Main.java
@@ -32,7 +32,7 @@ public class Main {
 
         EntityManager entityManager = new EntityManager(roomManager, playerManager, db);
 
-        Stats chrisBrianStats = new StatsBuilder().setStrength(7).setWillpower(8).setAim(6).setAgile(5).setArmorRating(4).setMeleSkill(10).setHealth(100).setWeaponRatingMin(10).setWeaponRatingMax(20).setNumberweaponOfRolls(1).createStats();
+        Stats chrisBrianStats = new StatsBuilder().setStrength(7).setWillpower(8).setAim(6).setAgile(5).setArmorRating(4).setMeleSkill(10).setCurrentHealth(100).setMaxHealth(100).setWeaponRatingMin(10).setWeaponRatingMax(20).setNumberweaponOfRolls(1).createStats();
         if (playerManager.getPlayerMetadata(createPlayerId("chris")) == null) {
             System.out.println("Creating Chris User.");
             playerManager.savePlayerMetadata(new PlayerMetadata("chris", "poop", new String(Base64.encodeBase64("chris".getBytes())), chrisBrianStats));
diff --git a/src/main/java/com/comandante/creeper/entity/EntityManager.java b/src/main/java/com/comandante/creeper/entity/EntityManager.java
index 20451bd8..2ef351a7 100644
--- a/src/main/java/com/comandante/creeper/entity/EntityManager.java
+++ b/src/main/java/com/comandante/creeper/entity/EntityManager.java
@@ -73,7 +73,7 @@ public class EntityManager {
     public void updateNpcHealth(String npcId, int amt) {
         synchronized (npcId){
             Npc npcEntity = getNpcEntity(npcId);
-            npcEntity.getStats().setHealth(npcEntity.getStats().getHealth() + amt);
+            npcEntity.getStats().setCurrentHealth(npcEntity.getStats().getCurrentHealth() + amt);
         }
     }
 
diff --git a/src/main/java/com/comandante/creeper/managers/FightManager.java b/src/main/java/com/comandante/creeper/managers/FightManager.java
index 26fa7680..06269ca1 100644
--- a/src/main/java/com/comandante/creeper/managers/FightManager.java
+++ b/src/main/java/com/comandante/creeper/managers/FightManager.java
@@ -31,8 +31,8 @@ public class FightManager {
         Stats npcStats = npc.getStats();
         Stats playerStats = playerMetadata.getStats();
 
-        while (npcStats.getHealth() > 0) {
-            if (playerStats.getHealth() <= 0) {
+        while (npcStats.getCurrentHealth() > 0) {
+            if (playerStats.getCurrentHealth() <= 0) {
                 break;
             }
             fightTurn(playerStats, npcStats, 3, player, npc);
@@ -40,13 +40,13 @@ public class FightManager {
 
         playerManager.savePlayerMetadata(playerMetadata);
 
-        if (playerStats.getHealth() <= 0) {
+        if (playerStats.getCurrentHealth() <= 0) {
             channelUtils.write(player.getPlayerId(), "You died.");
             channelUtils.writeToRoom(player.getPlayerId(), player.getPlayerName() + " is now dead.");
             return;
         }
 
-        if (npcStats.getHealth() <= 0) {
+        if (npcStats.getCurrentHealth() <= 0) {
             channelUtils.writeNoPrompt(player.getPlayerId(), "You killed " + npc.getName());
             channelUtils.writeToRoom(player.getPlayerId(), npc.getDieMessage());
             entityManager.deleteNpcEntity(npc.getEntityId());
@@ -56,7 +56,7 @@ public class FightManager {
 
     public void fightTurn(Stats challenger, Stats victim, int numRoundsPerTurns, Player player, Npc npc) {
         for (int i = 0; i < numRoundsPerTurns; i++) {
-            if (challenger.getHealth() <= 0 || victim.getHealth() <= 0) {
+            if (challenger.getCurrentHealth() <= 0 || victim.getCurrentHealth() <= 0) {
                 return;
             }
             fightRound(challenger, victim, player, npc);
@@ -80,7 +80,7 @@ public class FightManager {
         } catch (InterruptedException e) {
             e.printStackTrace();
         }
-        if (victim.getHealth() <= 0) {
+        if (victim.getCurrentHealth() <= 0) {
             return;
         }
         int chanceToHitBack = getChanceToHit(victim, challenger);
diff --git a/src/main/java/com/comandante/creeper/npc/NpcStats.java b/src/main/java/com/comandante/creeper/npc/NpcStats.java
index 160cd732..9e5e34dc 100644
--- a/src/main/java/com/comandante/creeper/npc/NpcStats.java
+++ b/src/main/java/com/comandante/creeper/npc/NpcStats.java
@@ -10,7 +10,8 @@ public class NpcStats {
             .setAgile(1)
             .setArmorRating(5)
             .setMeleSkill(5)
-            .setHealth(100)
+            .setCurrentHealth(100)
+            .setMaxHealth(100)
             .setWeaponRatingMin(5)
             .setWeaponRatingMax(10)
             .setNumberweaponOfRolls(1);
@@ -22,7 +23,8 @@ public class NpcStats {
             .setAgile(1)
             .setArmorRating(5)
             .setMeleSkill(5)
-            .setHealth(150)
+            .setCurrentHealth(150)
+            .setMaxHealth(150)
             .setWeaponRatingMin(5)
             .setWeaponRatingMax(10)
             .setNumberweaponOfRolls(1);
diff --git a/src/main/java/com/comandante/creeper/player/Player.java b/src/main/java/com/comandante/creeper/player/Player.java
index f46abed8..ef7dcd9d 100644
--- a/src/main/java/com/comandante/creeper/player/Player.java
+++ b/src/main/java/com/comandante/creeper/player/Player.java
@@ -51,7 +51,7 @@ public class Player extends CreeperEntity {
     @Override
     public void run() {
 
-        if (gameManager.getPlayerManager().getPlayerMetadata(Main.createPlayerId(playerName)).getStats().getHealth() < 100) {
+        if (gameManager.getPlayerManager().getPlayerMetadata(Main.createPlayerId(playerName)).getStats().getCurrentHealth() < 100) {
             gameManager.getPlayerManager().updatePlayerHealth(Main.createPlayerId(playerName), 10);
             gameManager.getChannelUtils().writeNoPrompt(Main.createPlayerId(playerName), "Health healed by 10.");
         }
diff --git a/src/main/java/com/comandante/creeper/player/PlayerManager.java b/src/main/java/com/comandante/creeper/player/PlayerManager.java
index 3b866b3c..7cd94ff7 100644
--- a/src/main/java/com/comandante/creeper/player/PlayerManager.java
+++ b/src/main/java/com/comandante/creeper/player/PlayerManager.java
@@ -49,9 +49,16 @@ public class PlayerManager {
     }
 
     public String getPrompt(String playerId, Integer roomId) {
+
+        Player player = getPlayer(playerId);
+        PlayerMetadata playerMetadata = getPlayerMetadata(playerId);
+        int currentHealth = playerMetadata.getStats().getCurrentHealth();
+        int maxHealth = playerMetadata.getStats().getMaxHealth();
         StringBuilder sb = new StringBuilder()
                 .append("[")
-                .append(getPlayer(playerId).getPlayerName())
+                .append(player.getPlayerName())
+                .append(" health: ")
+                .append(currentHealth).append("/").append(maxHealth)
                 .append(" roomId:")
                 .append(roomId)
                 .append((" users:"))
@@ -119,7 +126,7 @@ public class PlayerManager {
         synchronized (playerId) {
             PlayerMetadata playerMetadata = getPlayerMetadata(playerId);
             Stats stats = playerMetadata.getStats();
-            stats.setHealth(stats.getHealth() + amount);
+            stats.setCurrentHealth(stats.getCurrentHealth() + amount);
             savePlayerMetadata(playerMetadata);
         }
     }
diff --git a/src/main/java/com/comandante/creeper/player/PlayerStats.java b/src/main/java/com/comandante/creeper/player/PlayerStats.java
index c998797b..099a16fb 100644
--- a/src/main/java/com/comandante/creeper/player/PlayerStats.java
+++ b/src/main/java/com/comandante/creeper/player/PlayerStats.java
@@ -12,7 +12,8 @@ public class PlayerStats {
             .setAgile(1)
             .setArmorRating(2)
             .setMeleSkill(10)
-            .setHealth(100)
+            .setCurrentHealth(100)
+            .setMaxHealth(100)
             .setWeaponRatingMin(10)
             .setWeaponRatingMax(20)
             .setNumberweaponOfRolls(1);
diff --git a/src/main/java/com/comandante/creeper/stat/Stats.java b/src/main/java/com/comandante/creeper/stat/Stats.java
index 0db340c2..cc304b7d 100644
--- a/src/main/java/com/comandante/creeper/stat/Stats.java
+++ b/src/main/java/com/comandante/creeper/stat/Stats.java
@@ -9,33 +9,12 @@ public class Stats implements Serializable {
     private int agile;
     private int armorRating;
     private int meleSkill;
-    private int health;
+    private int currentHealth;
+    private int maxHealth;
     private int weaponRatingMax;
     private int weaponRatingMin;
     private int numberweaponOfRolls;
 
-    public Stats(int strength,
-                 int willpower,
-                 int aim,
-                 int agile,
-                 int armorRating,
-                 int meleSkill,
-                 int health,
-                 int weaponRatingMax,
-                 int weaponRatingMin,
-                 int numberweaponOfRolls) {
-        this.strength = strength;
-        this.willpower = willpower;
-        this.aim = aim;
-        this.agile = agile;
-        this.armorRating = armorRating;
-        this.meleSkill = meleSkill;
-        this.health = health;
-        this.weaponRatingMax = weaponRatingMax;
-        this.weaponRatingMin = weaponRatingMin;
-        this.numberweaponOfRolls = numberweaponOfRolls;
-    }
-
     public int getStrength() {
         return strength;
     }
@@ -84,12 +63,20 @@ public class Stats implements Serializable {
         this.meleSkill = meleSkill;
     }
 
-    public int getHealth() {
-        return health;
+    public int getCurrentHealth() {
+        return currentHealth;
+    }
+
+    public void setCurrentHealth(int currentHealth) {
+        this.currentHealth = currentHealth;
+    }
+
+    public int getMaxHealth() {
+        return maxHealth;
     }
 
-    public void setHealth(int health) {
-        this.health = health;
+    public void setMaxHealth(int maxHealth) {
+        this.maxHealth = maxHealth;
     }
 
     public int getWeaponRatingMax() {
@@ -116,19 +103,27 @@ public class Stats implements Serializable {
         this.numberweaponOfRolls = numberweaponOfRolls;
     }
 
-    @Override
-    public String toString() {
-        return "Stats{" +
-                "strength=" + strength +
-                ", willpower=" + willpower +
-                ", aim=" + aim +
-                ", agile=" + agile +
-                ", armorRating=" + armorRating +
-                ", meleSkill=" + meleSkill +
-                ", health=" + health +
-                ", weaponRatingMax=" + weaponRatingMax +
-                ", weaponRatingMin=" + weaponRatingMin +
-                ", numberweaponOfRolls=" + numberweaponOfRolls +
-                '}';
+    public Stats(int strength,
+                 int willpower,
+                 int aim,
+                 int agile,
+                 int armorRating,
+                 int meleSkill,
+                 int currentHealth,
+                 int maxHealth,
+                 int weaponRatingMax,
+                 int weaponRatingMin,
+                 int numberweaponOfRolls) {
+        this.strength = strength;
+        this.willpower = willpower;
+        this.aim = aim;
+        this.agile = agile;
+        this.armorRating = armorRating;
+        this.meleSkill = meleSkill;
+        this.currentHealth = currentHealth;
+        this.maxHealth = maxHealth;
+        this.weaponRatingMax = weaponRatingMax;
+        this.weaponRatingMin = weaponRatingMin;
+        this.numberweaponOfRolls = numberweaponOfRolls;
     }
 }
diff --git a/src/main/java/com/comandante/creeper/stat/StatsBuilder.java b/src/main/java/com/comandante/creeper/stat/StatsBuilder.java
index e3330ab2..39b44d3a 100644
--- a/src/main/java/com/comandante/creeper/stat/StatsBuilder.java
+++ b/src/main/java/com/comandante/creeper/stat/StatsBuilder.java
@@ -7,7 +7,8 @@ public class StatsBuilder {
     private int agile;
     private int armorRating;
     private int meleSkill;
-    private int health;
+    private int currentHealth;
+    private int maxHealth;
     private int weaponRatingMax;
     private int weaponRatingMin;
     private int numberweaponOfRolls;
@@ -42,8 +43,13 @@ public class StatsBuilder {
         return this;
     }
 
-    public StatsBuilder setHealth(int health) {
-        this.health = health;
+    public StatsBuilder setCurrentHealth(int currentHealth) {
+        this.currentHealth = currentHealth;
+        return this;
+    }
+
+    public StatsBuilder setMaxHealth(int maxHealth) {
+        this.maxHealth = maxHealth;
         return this;
     }
 
@@ -63,6 +69,6 @@ public class StatsBuilder {
     }
 
     public Stats createStats() {
-        return new Stats(strength, willpower, aim, agile, armorRating, meleSkill, health, weaponRatingMax, weaponRatingMin, numberweaponOfRolls);
+        return new Stats(strength, willpower, aim, agile, armorRating, meleSkill, currentHealth, maxHealth, weaponRatingMax, weaponRatingMin, numberweaponOfRolls);
     }
 }
\ No newline at end of file
diff --git a/src/main/java/com/comandante/creeper/stat/StatsTester.java b/src/main/java/com/comandante/creeper/stat/StatsTester.java
index a33462ac..1a23eeac 100644
--- a/src/main/java/com/comandante/creeper/stat/StatsTester.java
+++ b/src/main/java/com/comandante/creeper/stat/StatsTester.java
@@ -54,14 +54,14 @@ public class StatsTester {
 
         int turns = 0;
         while (true) {
-            if (challenger.getHealth() <= 0 || victim.getHealth() <= 0) {
+            if (challenger.getCurrentHealth() <= 0 || victim.getCurrentHealth() <= 0) {
                 break;
             }
             NO_TURNS++;
             damageToVictim = getAttack(challenger, victim);
             chanceToHitVictim = (challenger.getStrength() + challenger.getMeleSkill()) * 5 - victim.getAgile() * 5;
             if (randInt(0, 100) < chanceToHitVictim) {
-                victim.setHealth(victim.getHealth() - damageToVictim);
+                victim.setCurrentHealth(victim.getCurrentHealth() - damageToVictim);
                 TOTAL_DAMAGE_CHALLENGER = TOTAL_DAMAGE_CHALLENGER + damageToVictim;
                 NO_HITS_CHALLENGER++;
             } else {
@@ -71,7 +71,7 @@ public class StatsTester {
             chanceToHitChallenger = (victim.getStrength() + victim.getMeleSkill()) * 5 - (challenger.getAgile() * 5);
 
             if (randInt(0, 100) < chanceToHitChallenger) {
-                challenger.setHealth(challenger.getHealth() - damageToChallenger);
+                challenger.setCurrentHealth(challenger.getCurrentHealth() - damageToChallenger);
                 TOTAL_DAMAGE_VICTIM = TOTAL_DAMAGE_VICTIM + damageToVictim;
                 NO_HITS_VICTIM++;
             } else {
@@ -79,7 +79,7 @@ public class StatsTester {
             }
         }
 
-        if (challenger.getHealth() > victim.getHealth()) {
+        if (challenger.getCurrentHealth() > victim.getCurrentHealth()) {
             return true;
         } else {
             return false;
-- 
GitLab