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