From 82e18b0ccee9762850ca9476aebe242ea58974f2 Mon Sep 17 00:00:00 2001 From: Chris Kearney <chris@kearneymail.com> Date: Sun, 7 Aug 2016 18:43:34 -0700 Subject: [PATCH] new temperament field, persisting to json etc --- .../creeper/managers/GameManager.java | 4 ++- .../java/com/comandante/creeper/npc/Npc.java | 8 +++++- .../comandante/creeper/npc/NpcAdapter.java | 5 +++- .../comandante/creeper/npc/NpcBuilder.java | 9 ++++++- .../comandante/creeper/npc/Temperament.java | 25 +++++++++++++++++++ world/npcs/treeberserker.json | 1 + 6 files changed, 48 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/comandante/creeper/npc/Temperament.java diff --git a/src/main/java/com/comandante/creeper/managers/GameManager.java b/src/main/java/com/comandante/creeper/managers/GameManager.java index c62a9f05..14af45cb 100755 --- a/src/main/java/com/comandante/creeper/managers/GameManager.java +++ b/src/main/java/com/comandante/creeper/managers/GameManager.java @@ -414,7 +414,9 @@ public class GameManager { StringBuilder sb = new StringBuilder(); // passing an empty createState because of the "difference calculation" sb.append(Color.MAGENTA + "-+=[ " + Color.RESET).append(npc.getColorName()).append(Color.MAGENTA + " ]=+- " + Color.RESET).append("\r\n"); - sb.append("Level ").append(Levels.getLevel(npc.getStats().getExperience())).append(" ").append(npc.getLevelColor((int) playerLevel).getColor()).append("\r\n"); + sb.append("Level ").append(Levels.getLevel(npc.getStats().getExperience())).append(" ") + .append(npc.getLevelColor((int) playerLevel).getColor()) + .append(" [").append(npc.getTemperament().getFriendlyFormat()).append("]").append("\r\n"); sb.append(Color.MAGENTA + "Stats--------------------------------" + Color.RESET).append("\r\n"); sb.append(buildLookString(npc.getColorName(), npc.getStats(), new StatsBuilder().createStats())).append("\r\n"); if (npc.getEffects() != null && npc.getEffects().size() > 0) { diff --git a/src/main/java/com/comandante/creeper/npc/Npc.java b/src/main/java/com/comandante/creeper/npc/Npc.java index 17154718..98c0d23c 100644 --- a/src/main/java/com/comandante/creeper/npc/Npc.java +++ b/src/main/java/com/comandante/creeper/npc/Npc.java @@ -46,6 +46,7 @@ public class Npc extends CreeperEntity { private final String colorName; private final Stats stats; private final String dieMessage; + private final Temperament temperament; private final Set<Area> roamAreas; private final Set<String> validTriggers; private Loot loot; @@ -62,7 +63,7 @@ public class Npc extends CreeperEntity { private final Random random = new Random(); - protected Npc(GameManager gameManager, String name, String colorName, long lastPhraseTimestamp, Stats stats, String dieMessage, Set<Area> roamAreas, Set<String> validTriggers, Loot loot, Set<SpawnRule> spawnRules) { + protected Npc(GameManager gameManager, String name, String colorName, long lastPhraseTimestamp, Stats stats, String dieMessage, Temperament temperament, Set<Area> roamAreas, Set<String> validTriggers, Loot loot, Set<SpawnRule> spawnRules) { this.gameManager = gameManager; this.name = name; this.colorName = colorName; @@ -73,6 +74,7 @@ public class Npc extends CreeperEntity { this.validTriggers = validTriggers; this.loot = loot; this.spawnRules = spawnRules; + this.temperament = temperament; } @Override @@ -253,6 +255,10 @@ public class Npc extends CreeperEntity { return currentRoom; } + public Temperament getTemperament() { + return temperament; + } + public AtomicBoolean getIsAlive() { return isAlive; } diff --git a/src/main/java/com/comandante/creeper/npc/NpcAdapter.java b/src/main/java/com/comandante/creeper/npc/NpcAdapter.java index ce58b46d..2818044b 100644 --- a/src/main/java/com/comandante/creeper/npc/NpcAdapter.java +++ b/src/main/java/com/comandante/creeper/npc/NpcAdapter.java @@ -30,7 +30,7 @@ public class NpcAdapter extends TypeAdapter<Npc> { jsonWriter.name("name").value(npc.getName()); jsonWriter.name("colorName").value(npc.getColorName()); jsonWriter.name("dieMessage").value(npc.getDieMessage()); - + jsonWriter.name("temperament").value(npc.getDieMessage()); Loot loot = npc.getLoot(); jsonWriter.name("loot"); jsonWriter.beginObject(); @@ -106,6 +106,8 @@ public class NpcAdapter extends TypeAdapter<Npc> { jsonReader.nextName(); final String npcDieMessage = jsonReader.nextString(); jsonReader.nextName(); + final String temperament = jsonReader.nextString(); + jsonReader.nextName(); jsonReader.beginObject(); jsonReader.nextName(); final long lootGoldMin = jsonReader.nextLong(); @@ -205,6 +207,7 @@ public class NpcAdapter extends TypeAdapter<Npc> { NpcBuilder npcBuilder = new NpcBuilder() .setColorName(npcColorName) .setDieMessage(npcDieMessage) + .setTemperament(Temperament.get(temperament)) .setLoot(loot) .setName(npcName) .setRoamAreas(roamAreas) diff --git a/src/main/java/com/comandante/creeper/npc/NpcBuilder.java b/src/main/java/com/comandante/creeper/npc/NpcBuilder.java index 642bc548..cb111624 100644 --- a/src/main/java/com/comandante/creeper/npc/NpcBuilder.java +++ b/src/main/java/com/comandante/creeper/npc/NpcBuilder.java @@ -19,6 +19,7 @@ public class NpcBuilder { private Set<String> validTriggers; private Loot loot; private Set<SpawnRule> spawnRules; + private Temperament temperament; public NpcBuilder() { } @@ -34,6 +35,7 @@ public class NpcBuilder { this.loot = npc.getLoot(); this.spawnRules = npc.getSpawnRules(); this.gameManager = npc.getGameManager(); + this.temperament = npc.getTemperament(); } public NpcBuilder setGameManager(GameManager gameManager) { @@ -66,6 +68,11 @@ public class NpcBuilder { return this; } + public NpcBuilder setTemperament(Temperament temperament) { + this.temperament = temperament; + return this; + } + public NpcBuilder setRoamAreas(Set<Area> roamAreas) { this.roamAreas = roamAreas; return this; @@ -87,6 +94,6 @@ public class NpcBuilder { } public Npc createNpc() { - return new Npc(gameManager, name, colorName, lastPhraseTimestamp, stats, dieMessage, roamAreas, validTriggers, loot, spawnRules); + return new Npc(gameManager, name, colorName, lastPhraseTimestamp, stats, dieMessage, temperament, roamAreas, validTriggers, loot, spawnRules); } } \ No newline at end of file diff --git a/src/main/java/com/comandante/creeper/npc/Temperament.java b/src/main/java/com/comandante/creeper/npc/Temperament.java new file mode 100644 index 00000000..69ee1d12 --- /dev/null +++ b/src/main/java/com/comandante/creeper/npc/Temperament.java @@ -0,0 +1,25 @@ +package com.comandante.creeper.npc; + +public enum Temperament { + AGGRESSIVE("Aggressive"), + PASSIVE("Passive"); + + private final String friendlyFormat; + + Temperament(String friendlyFormat) { + this.friendlyFormat = friendlyFormat; + } + + public String getFriendlyFormat() { + return friendlyFormat; + } + + public static Temperament get(String s) { + for (Temperament t : Temperament.values()) { + if (t.name().equalsIgnoreCase(s)) { + return t; + } + } + return null; + } +} diff --git a/world/npcs/treeberserker.json b/world/npcs/treeberserker.json index f3a02a5e..6622f7fe 100755 --- a/world/npcs/treeberserker.json +++ b/world/npcs/treeberserker.json @@ -2,6 +2,7 @@ "name": "tree berserker", "colorName": "tree \u001B[1m\u001B[35mberserker\u001B[0m", "dieMessage": "a tree \u001B[1m\u001B[35mberserker\u001B[0m breathes his last breath in a pool of \u001B[1m\u001B[31mblood\u001B[0m", + "temperament": "passive", "loot": { "lootGoldMin": 7, "lootGoldMax": 14, -- GitLab