From a41b51a62f170dcb81b8866eb4910bd662851678 Mon Sep 17 00:00:00 2001 From: Chris Kearney <chris.kearney@urbanairship.com> Date: Fri, 5 Sep 2014 22:20:23 -0700 Subject: [PATCH] prompt changes, spacing changes on command output. --- .../com/comandante/creeper/npc/NpcStats.java | 6 ++- .../creeper/player/PlayerManager.java | 52 +++++++++++++++---- .../creeper/player/PlayerStats.java | 3 +- .../creeper/server/ChannelUtils.java | 8 +-- .../creeper/server/CreeperSession.java | 11 ++++ .../creeper/server/command/WhoCommand.java | 23 ++++---- .../com/comandante/creeper/stat/Stats.java | 13 ++++- .../comandante/creeper/stat/StatsBuilder.java | 8 ++- 8 files changed, 92 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/comandante/creeper/npc/NpcStats.java b/src/main/java/com/comandante/creeper/npc/NpcStats.java index 9e5e34dc..ee18b2f2 100644 --- a/src/main/java/com/comandante/creeper/npc/NpcStats.java +++ b/src/main/java/com/comandante/creeper/npc/NpcStats.java @@ -14,7 +14,8 @@ public class NpcStats { .setMaxHealth(100) .setWeaponRatingMin(5) .setWeaponRatingMax(10) - .setNumberweaponOfRolls(1); + .setNumberweaponOfRolls(1) + .setExperience(100); public final static StatsBuilder DRUGGED_PIMP = new StatsBuilder() .setStrength(5) @@ -27,6 +28,7 @@ public class NpcStats { .setMaxHealth(150) .setWeaponRatingMin(5) .setWeaponRatingMax(10) - .setNumberweaponOfRolls(1); + .setNumberweaponOfRolls(1) + .setExperience(100); } diff --git a/src/main/java/com/comandante/creeper/player/PlayerManager.java b/src/main/java/com/comandante/creeper/player/PlayerManager.java index 825ba85d..e9de66f2 100644 --- a/src/main/java/com/comandante/creeper/player/PlayerManager.java +++ b/src/main/java/com/comandante/creeper/player/PlayerManager.java @@ -3,13 +3,17 @@ package com.comandante.creeper.player; import com.comandante.creeper.fight.FightManager; import com.comandante.creeper.managers.SessionManager; -import com.comandante.creeper.world.Room; +import com.comandante.creeper.server.Color; import com.comandante.creeper.stat.Stats; +import com.comandante.creeper.world.Room; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; import org.apache.commons.codec.binary.Base64; import org.mapdb.DB; import org.mapdb.HTreeMap; +import org.nocrala.tools.texttablefmt.BorderStyle; +import org.nocrala.tools.texttablefmt.ShownBorders; +import org.nocrala.tools.texttablefmt.Table; import java.util.Iterator; import java.util.Map; @@ -108,7 +112,39 @@ public class PlayerManager { public String getLookString(Player player) { PlayerMetadata playerMetadata = getPlayerMetadata(player.getPlayerId()); Stats playerStats = playerMetadata.getStats(); - return playerStats.toString(); + + Table t = new Table(2, BorderStyle.UNICODE_BOX, + ShownBorders.HEADER_AND_FOOTER); + + t.setColumnWidth(0, 14, 14); + t.setColumnWidth(1, 3, 5); + + t.addCell(player.getPlayerName()); + t.addCell(""); + t.addCell("Strength"); + t.addCell(Integer.toString(playerStats.getStrength())); + + t.addCell("Willpower"); + t.addCell(Integer.toString(playerStats.getWillpower())); + + t.addCell("Aim"); + t.addCell(Integer.toString(playerStats.getAim())); + + t.addCell("Agile"); + t.addCell(Integer.toString(playerStats.getAgile())); + + t.addCell("Armor"); + t.addCell(Integer.toString(playerStats.getArmorRating())); + + t.addCell("Mele"); + t.addCell(Integer.toString(playerStats.getMeleSkill())); + + t.addCell("Health"); + t.addCell(Integer.toString(playerStats.getMaxHealth())); + + t.addCell(Integer.toString(playerStats.getExperience())); + t.addCell("XP"); + return t.render(); } public void updatePlayerHealth(String playerId, int amount) { @@ -121,7 +157,7 @@ public class PlayerManager { } - public String getPrompt(String playerId, Integer roomId) { + public String buildPrompt(String playerId, Integer roomId) { boolean isFight = FightManager.isActiveFight(sessionManager.getSession(playerId)); Player player = getPlayer(playerId); PlayerMetadata playerMetadata = getPlayerMetadata(playerId); @@ -130,14 +166,10 @@ public class PlayerManager { StringBuilder sb = new StringBuilder() .append("[") .append(player.getPlayerName()) - .append(" health: ") - .append(currentHealth).append("/").append(maxHealth) - .append(" roomId:") - .append(roomId) - .append((" users:")) - .append(getNumberOfLoggedInUsers()); + .append("@creeper ") + .append(currentHealth).append("/").append(maxHealth); if (isFight) { - sb.append(" in battle! "); + sb.append(Color.RED + " ! " + Color.RESET); } sb.append("] "); return sb.toString(); diff --git a/src/main/java/com/comandante/creeper/player/PlayerStats.java b/src/main/java/com/comandante/creeper/player/PlayerStats.java index 099a16fb..84ec6920 100644 --- a/src/main/java/com/comandante/creeper/player/PlayerStats.java +++ b/src/main/java/com/comandante/creeper/player/PlayerStats.java @@ -16,5 +16,6 @@ public class PlayerStats { .setMaxHealth(100) .setWeaponRatingMin(10) .setWeaponRatingMax(20) - .setNumberweaponOfRolls(1); + .setNumberweaponOfRolls(1) + .setExperience(0); } diff --git a/src/main/java/com/comandante/creeper/server/ChannelUtils.java b/src/main/java/com/comandante/creeper/server/ChannelUtils.java index 5bd26a9e..4e5de622 100644 --- a/src/main/java/com/comandante/creeper/server/ChannelUtils.java +++ b/src/main/java/com/comandante/creeper/server/ChannelUtils.java @@ -37,7 +37,7 @@ public class ChannelUtils { } Player player = playerManager.getPlayer(playerId); Room playerCurrentRoom = roomManager.getPlayerCurrentRoom(player).get(); - player.getChannel().write(playerManager.getPrompt(playerId, playerCurrentRoom.getRoomId())); + player.getChannel().write(playerManager.buildPrompt(playerId, playerCurrentRoom.getRoomId())); } public void writeToRoom(String playerId, String message) { @@ -48,9 +48,6 @@ public class ChannelUtils { Set<String> presentPlayerIds = playerCurrentRoom.getPresentPlayerIds(); for (String id : presentPlayerIds) { Player presentPlayer = playerManager.getPlayer(id); - // if (presentPlayer.getPlayerId().equals(playerId)) { - // write(playerId, message); - // } else { writeNoPrompt(presentPlayer.getPlayerId(), message); } } @@ -70,13 +67,12 @@ public class ChannelUtils { Player player = playerManager.getPlayer(playerId); Room playerCurrentRoom = roomManager.getPlayerCurrentRoom(player).get(); StringBuilder sb = new StringBuilder(); - sb.append("\r\n"); sb.append(sanitze(message)); if (isAfterSpace) { sb.append(("\r\n")); } if (isPrompt) { - sb.append(playerManager.getPrompt(playerId, playerCurrentRoom.getRoomId())); + sb.append(playerManager.buildPrompt(playerId, playerCurrentRoom.getRoomId())); } player.getChannel().write(sb.toString()); } diff --git a/src/main/java/com/comandante/creeper/server/CreeperSession.java b/src/main/java/com/comandante/creeper/server/CreeperSession.java index c120a097..dccd6a4e 100644 --- a/src/main/java/com/comandante/creeper/server/CreeperSession.java +++ b/src/main/java/com/comandante/creeper/server/CreeperSession.java @@ -5,6 +5,8 @@ import com.comandante.creeper.fight.FightResults; import com.comandante.creeper.server.command.Command; import com.google.common.base.Optional; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.UUID; import java.util.concurrent.Future; import java.util.concurrent.atomic.AtomicBoolean; @@ -17,6 +19,7 @@ public class CreeperSession { private Optional<Future<FightResults>> activeFight = Optional.absent(); private AtomicBoolean isAbleToDoAbility = new AtomicBoolean(false); private Optional<CreeperEntry<UUID, Command>> grabMultiLineInput = Optional.absent(); + private final long sessionCreationTimestamp = System.currentTimeMillis(); State state; @@ -29,6 +32,14 @@ public class CreeperSession { authed } + public long getSessionCreationTimestamp() { + return sessionCreationTimestamp; + } + + public String getPrettyDate() { + return new SimpleDateFormat("d MMM yyyy, hh:mm aaa").format(new Date(getSessionCreationTimestamp())); + } + public Optional<Future<FightResults>> getActiveFight() { return activeFight; } diff --git a/src/main/java/com/comandante/creeper/server/command/WhoCommand.java b/src/main/java/com/comandante/creeper/server/command/WhoCommand.java index 9b15e295..ddf8e4a0 100644 --- a/src/main/java/com/comandante/creeper/server/command/WhoCommand.java +++ b/src/main/java/com/comandante/creeper/server/command/WhoCommand.java @@ -10,7 +10,6 @@ import org.nocrala.tools.texttablefmt.ShownBorders; import org.nocrala.tools.texttablefmt.Table; import java.util.Arrays; -import java.util.Date; import java.util.List; import java.util.Set; @@ -26,19 +25,20 @@ public class WhoCommand extends Command { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { try { - CellStyle numberStyle = new CellStyle(CellStyle.HorizontalAlign.right); - - Table t = new Table(3, BorderStyle.UNICODE_BOX_DOUBLE_BORDER, - ShownBorders.SURROUND_HEADER_FOOTER_AND_COLUMNS); + Table t = new Table(3, BorderStyle.UNICODE_BOX, + ShownBorders.HEADER_AND_FIRST_COLLUMN); t.setColumnWidth(0, 8, 14); - t.setColumnWidth(1, 7, 16); - t.setColumnWidth(2, 9, 16); + t.setColumnWidth(1, 14, 16); + t.setColumnWidth(2, 26, 26); + t.addCell("player"); + t.addCell("ip address"); + t.addCell("logged in since"); Set<Player> allPlayers = getGameManager().getAllPlayers(); for (Player allPlayer : allPlayers) { t.addCell(allPlayer.getPlayerName()); - t.addCell(allPlayer.getChannel().getRemoteAddress().toString()); - t.addCell(new Date().toString()); + t.addCell(allPlayer.getChannel().getRemoteAddress().toString().substring(1).split(":")[0]); + t.addCell(extractCreeperSession(e.getChannel()).getPrettyDate()); } getGameManager().getChannelUtils().write(getPlayerId(extractCreeperSession(e.getChannel())), t.render()); } finally { @@ -49,11 +49,11 @@ public class WhoCommand extends Command { public static void main(String[] args) { CellStyle numberStyle = new CellStyle(CellStyle.HorizontalAlign.right); - Table t = new Table(3, BorderStyle.DESIGN_DIM, + Table t = new Table(3, BorderStyle.UNICODE_BOX, ShownBorders.HEADER_ONLY); t.setColumnWidth(0, 22, 28); - t.setColumnWidth(1, 12, 22); + t.setColumnWidth(1, 15, 22); t.setColumnWidth(2, 9, 16); t.addCell("Chrisadfasdfas"); @@ -71,4 +71,5 @@ public class WhoCommand extends Command { System.out.println("\n\n\n\n" + t.render()); } + } diff --git a/src/main/java/com/comandante/creeper/stat/Stats.java b/src/main/java/com/comandante/creeper/stat/Stats.java index 1dc24ebb..a9fcbcc5 100644 --- a/src/main/java/com/comandante/creeper/stat/Stats.java +++ b/src/main/java/com/comandante/creeper/stat/Stats.java @@ -14,6 +14,15 @@ public class Stats implements Serializable { private int weaponRatingMax; private int weaponRatingMin; private int numberweaponOfRolls; + private int experience; + + public int getExperience() { + return experience; + } + + public void setExperience(int experience) { + this.experience = experience; + } public int getStrength() { return strength; @@ -113,7 +122,8 @@ public class Stats implements Serializable { int maxHealth, int weaponRatingMax, int weaponRatingMin, - int numberweaponOfRolls) { + int numberweaponOfRolls, + int experience) { this.strength = strength; this.willpower = willpower; this.aim = aim; @@ -125,6 +135,7 @@ public class Stats implements Serializable { this.weaponRatingMax = weaponRatingMax; this.weaponRatingMin = weaponRatingMin; this.numberweaponOfRolls = numberweaponOfRolls; + this.experience = experience; } @Override diff --git a/src/main/java/com/comandante/creeper/stat/StatsBuilder.java b/src/main/java/com/comandante/creeper/stat/StatsBuilder.java index 39b44d3a..0d3255e0 100644 --- a/src/main/java/com/comandante/creeper/stat/StatsBuilder.java +++ b/src/main/java/com/comandante/creeper/stat/StatsBuilder.java @@ -12,6 +12,7 @@ public class StatsBuilder { private int weaponRatingMax; private int weaponRatingMin; private int numberweaponOfRolls; + private int experience; public StatsBuilder setStrength(int strength) { this.strength = strength; @@ -68,7 +69,12 @@ public class StatsBuilder { return this; } + public StatsBuilder setExperience(int experience) { + this.experience = experience; + return this; + } + public Stats createStats() { - return new Stats(strength, willpower, aim, agile, armorRating, meleSkill, currentHealth, maxHealth, weaponRatingMax, weaponRatingMin, numberweaponOfRolls); + return new Stats(strength, willpower, aim, agile, armorRating, meleSkill, currentHealth, maxHealth, weaponRatingMax, weaponRatingMin, numberweaponOfRolls, experience); } } \ No newline at end of file -- GitLab