From 9a4795e90b484fbf40259b7c40c603a8f5d5da77 Mon Sep 17 00:00:00 2001 From: Chris Kearney <chris.kearney@urbanairship.com> Date: Sat, 6 Sep 2014 03:20:36 -0700 Subject: [PATCH] improved chat stuff, changing where i print the prompt to be a netty handler --- pom.xml | 6 ++ .../comandante/creeper/Items/ItemType.java | 4 +- .../creeper/Items/ItemUseHandler.java | 2 +- .../creeper/fight/FightManager.java | 8 +- .../comandante/creeper/fight/FightRun.java | 7 +- .../creeper/managers/GameManager.java | 26 +++--- .../com/comandante/creeper/npc/NpcMover.java | 2 +- .../comandante/creeper/npc/StreetHustler.java | 8 +- .../creeper/player/PlayerManager.java | 4 +- .../creeper/server/ChannelUtils.java | 82 +++---------------- .../server/CreeperAuthenticationHandler.java | 9 +- .../creeper/server/CreeperSession.java | 9 ++ .../creeper/server/command/Command.java | 3 + .../creeper/server/command/GossipCommand.java | 2 +- .../server/command/InventoryCommand.java | 2 - .../server/command/MovementCommand.java | 12 +-- .../creeper/server/command/SayCommand.java | 2 +- .../creeper/server/command/TellCommand.java | 2 +- .../server/command/UnknownCommand.java | 8 +- .../creeper/server/command/WhoCommand.java | 2 +- .../command/admin/DescriptionCommand.java | 2 +- .../server/command/admin/TagRoomCommand.java | 2 +- 22 files changed, 87 insertions(+), 117 deletions(-) diff --git a/pom.xml b/pom.xml index 52b4842c..09ac228c 100644 --- a/pom.xml +++ b/pom.xml @@ -53,8 +53,14 @@ <artifactId>metrics-core</artifactId> <version>3.0.2</version> </dependency> + <dependency> + <groupId>com.googlecode.concurrentlinkedhashmap</groupId> + <artifactId>concurrentlinkedhashmap-lru</artifactId> + <version>1.4</version> + </dependency> </dependencies> + <build> <plugins> <plugin> diff --git a/src/main/java/com/comandante/creeper/Items/ItemType.java b/src/main/java/com/comandante/creeper/Items/ItemType.java index c5a7e8c4..2d8c566b 100644 --- a/src/main/java/com/comandante/creeper/Items/ItemType.java +++ b/src/main/java/com/comandante/creeper/Items/ItemType.java @@ -18,8 +18,8 @@ public enum ItemType { 60), BEER(2, Arrays.asList("beer", "can of beer", "b"), - CYAN + "a dented can of beer" + RESET, - CYAN + "a beer" + RESET + " lies on the ground, unopened", + "a dented can of " + CYAN + "beer" + RESET, + "a " + CYAN + "beer" + RESET + " lies on the ground, unopened", "This beer looks sketch but you'll probably drink it anyways.", true, 2, diff --git a/src/main/java/com/comandante/creeper/Items/ItemUseHandler.java b/src/main/java/com/comandante/creeper/Items/ItemUseHandler.java index e0793446..ccdd84d9 100644 --- a/src/main/java/com/comandante/creeper/Items/ItemUseHandler.java +++ b/src/main/java/com/comandante/creeper/Items/ItemUseHandler.java @@ -63,7 +63,7 @@ public class ItemUseHandler { } private void writeToPlayer(String message) { - gameManager.getChannelUtils().writeNoPrompt(playerId, message); + gameManager.getChannelUtils().write(playerId, message); } private void incrementUses(Item item) { diff --git a/src/main/java/com/comandante/creeper/fight/FightManager.java b/src/main/java/com/comandante/creeper/fight/FightManager.java index b70fa3a3..b188db0f 100644 --- a/src/main/java/com/comandante/creeper/fight/FightManager.java +++ b/src/main/java/com/comandante/creeper/fight/FightManager.java @@ -52,9 +52,9 @@ public class FightManager { } if (damageToVictim > 0) { doNpcDamage(npc.getEntityId(), damageToVictim); - channelUtils.writeNoPromptNoAfterSpace(player.getPlayerId(), damageToVictim + Color.BOLD_ON + Color.RED + " damage" + Color.RESET + " done to " + npc.getColorName()); + channelUtils.write(player.getPlayerId(), damageToVictim + Color.BOLD_ON + Color.RED + " DAMAGE" + Color.RESET + " done to " + npc.getColorName(), true); } else { - channelUtils.writeNoPromptNoAfterSpace(player.getPlayerId(), "You miss " + npc.getName()); + channelUtils.write(player.getPlayerId(), "You MISS " + npc.getName() + "!", true); } try { Thread.sleep(600); @@ -68,9 +68,9 @@ public class FightManager { int damageBack = getAttack(victim, challenger); if (randInt(0, 100) < chanceToHitBack) { doPlayerDamage(player.getPlayerId(), damageBack); - channelUtils.writeNoPromptNoAfterSpace(player.getPlayerId(), npc.getColorName() + Color.BOLD_ON + Color.RED + " damages" + Color.RESET + " you for " + damageBack); + channelUtils.write(player.getPlayerId(), npc.getColorName() + Color.BOLD_ON + Color.RED + " DAMAGES" + Color.RESET + " you for " + damageBack, true); } else { - channelUtils.writeNoPromptNoAfterSpace(player.getPlayerId(), npc.getColorName() + " misses you"); + channelUtils.write(player.getPlayerId(), npc.getColorName() + " MISSES you!", true); } try { Thread.sleep(600); diff --git a/src/main/java/com/comandante/creeper/fight/FightRun.java b/src/main/java/com/comandante/creeper/fight/FightRun.java index 4d0c5759..b9caaea1 100644 --- a/src/main/java/com/comandante/creeper/fight/FightRun.java +++ b/src/main/java/com/comandante/creeper/fight/FightRun.java @@ -32,7 +32,7 @@ public class FightRun implements Callable<FightResults> { break; } gameManager.getFightManager().fightTurn(playerStats, npcStats, 3, player, npc); - gameManager.getChannelUtils().write(player.getPlayerId(), "Use an ability!"); + gameManager.getChannelUtils().write(player.getPlayerId(), "Use an ability!", true); gameManager.getPlayerManager().getSessionManager().getSession(player.getPlayerId()).setIsAbleToDoAbility(true); try { Thread.sleep(2200); @@ -48,19 +48,18 @@ public class FightRun implements Callable<FightResults> { if (playerStats.getCurrentHealth() <= 0) { - gameManager.getChannelUtils().write(player.getPlayerId(), "You died."); + gameManager.getChannelUtils().write(player.getPlayerId(), "You died.", true); gameManager.getChannelUtils().writeToRoom(player.getPlayerId(), player.getPlayerName() + " is now dead."); npc.setIsInFight(false); fightResults = new FightResultsBuilder().setNpcWon(true).setPlayerWon(false).createFightResults(); } if (npcStats.getCurrentHealth() <= 0) { - gameManager.getChannelUtils().writeNoPrompt(player.getPlayerId(), "You killed " + npc.getName()); + gameManager.getChannelUtils().write(player.getPlayerId(), "You killed " + npc.getName(), true); gameManager.getChannelUtils().writeToRoom(player.getPlayerId(), npc.getDieMessage()); gameManager.getEntityManager().deleteNpcEntity(npc.getEntityId()); fightResults = new FightResultsBuilder().setNpcWon(false).setPlayerWon(true).createFightResults(); } - gameManager.getChannelUtils().writeOnlyPrompt(player.getPlayerId()); return fightResults; } } diff --git a/src/main/java/com/comandante/creeper/managers/GameManager.java b/src/main/java/com/comandante/creeper/managers/GameManager.java index de1e8529..aef12391 100644 --- a/src/main/java/com/comandante/creeper/managers/GameManager.java +++ b/src/main/java/com/comandante/creeper/managers/GameManager.java @@ -139,10 +139,10 @@ public class GameManager { StringBuilder sb = new StringBuilder(); sb.append(playerMovement.getPlayer().getPlayerName()); sb.append(" ").append(playerMovement.getRoomExitMessage()); - channelUtils.writeNoPrompt(next.getPlayerId(), sb.toString()); + channelUtils.write(next.getPlayerId(), sb.toString(), true); } for (Player next : playerManager.getPresentPlayers(destinationRoom)) { - channelUtils.writeNoPrompt(next.getPlayerId(), playerMovement.getPlayer().getPlayerName() + " arrived."); + channelUtils.write(next.getPlayerId(), playerMovement.getPlayer().getPlayerName() + " arrived.", true); } destinationRoom.addPresentPlayer(playerMovement.getPlayer().getPlayerId()); } @@ -155,7 +155,7 @@ public class GameManager { if (next.getPlayerId().equals(player.getPlayerId())) { continue; } - channelUtils.write(next.getPlayerId(), player.getPlayerName() + " arrived."); + channelUtils.write(next.getPlayerId(), player.getPlayerName() + " arrived.", true); } } @@ -246,17 +246,17 @@ public class GameManager { sb.append(playerCurrentRoom.getRoomTitle()).append("\r\n\r\n"); sb.append(RESET); //java.lang.String wrap(java.lang.String str, int wrapLength, java.lang.String newLineStr, boolean wrapLongWords) - sb.append(WordUtils.wrap(playerCurrentRoom.getRoomDescription(), 80, "\r\n", true)).append("\r\n"); + sb.append(WordUtils.wrap(playerCurrentRoom.getRoomDescription(), 80, "\r\n", true)).append("\r\n").append("\r\n"); if (playerCurrentRoom.getMapData().isPresent()) { sb.append(playerCurrentRoom.getMapData().get()).append("\r\n"); } - sb.append(getExits(playerCurrentRoom, player)); + sb.append(getExits(playerCurrentRoom, player)).append("\r\n"); for (String searchPlayerId : playerCurrentRoom.getPresentPlayerIds()) { if (searchPlayerId.equals(player.getPlayerId())) { continue; } Player searchPlayer = playerManager.getPlayer(searchPlayerId); - sb.append(searchPlayer.getPlayerName()).append(" is here.\r\n").append(RESET); + sb.append(searchPlayer.getPlayerName()).append(" is here.").append(RESET).append("\r\n"); } for (String itemId : playerCurrentRoom.getItemIds()) { @@ -272,8 +272,14 @@ public class GameManager { Npc npcEntity = entityManager.getNpcEntity(npcId); sb.append("a ").append(npcEntity.getColorName()).append(" is here.\r\n"); } - sb.append("\r\n"); - channelUtils.write(player.getPlayerId(), sb.toString()); + String msg = null; + if (sb.toString().substring(sb.toString().length() - 2).equals("\r\n")) { + CharSequence charSequence = sb.toString().subSequence(0, sb.toString().length() - 2); + msg = charSequence.toString(); + } else { + msg = sb.toString(); + } + channelUtils.write(player.getPlayerId(), msg); } public void currentRoomLogic(CreeperSession creeperSession, MessageEvent e) { @@ -299,10 +305,10 @@ public class GameManager { for (String playerId : presentPlayerIds) { Player player = playerManager.getPlayer(playerId); if (player.getPlayerId().equals(sourcePlayerId)) { - channelUtils.writeNoPrompt(playerId, message); + channelUtils.write(playerId, message, true); continue; } - channelUtils.write(player.getPlayerId(), message); + channelUtils.write(player.getPlayerId(), message, true); } } } diff --git a/src/main/java/com/comandante/creeper/npc/NpcMover.java b/src/main/java/com/comandante/creeper/npc/NpcMover.java index 162843aa..aa247535 100644 --- a/src/main/java/com/comandante/creeper/npc/NpcMover.java +++ b/src/main/java/com/comandante/creeper/npc/NpcMover.java @@ -39,7 +39,7 @@ public class NpcMover { npcCurrentRoom.getNpcIds().remove(npcId); gameManager.roomSay(npcCurrentRoom.getRoomId(), npcEntity.getColorName() + " " + exitMessage, ""); gameManager.getRoomManager().getRoom(destinationRoomId).getNpcIds().add(npcId); - gameManager.roomSay(destinationRoomId, npcEntity.getColorName() + " has arrived.", ""); + gameManager.roomSay(destinationRoomId, npcEntity.getColorName() + " has arrived." , ""); } public String getExitMessage(Room room, Integer exitRoomId) { diff --git a/src/main/java/com/comandante/creeper/npc/StreetHustler.java b/src/main/java/com/comandante/creeper/npc/StreetHustler.java index 965a739f..b147bb89 100644 --- a/src/main/java/com/comandante/creeper/npc/StreetHustler.java +++ b/src/main/java/com/comandante/creeper/npc/StreetHustler.java @@ -13,15 +13,15 @@ import java.util.Set; import static com.comandante.creeper.server.Color.BOLD_ON; import static com.comandante.creeper.server.Color.RESET; -public class StreetHustler extends Npc { +public class + StreetHustler extends Npc { private final static long phraseIntervalMs = 300000; private final static String NAME = "street hustler"; private final static Set<String> validTriggers = new HashSet<String>(Arrays.asList(new String[] - {"s", "street", "hustler", NAME} + {"s", "street", "hustler","h", NAME} )); - private final static String colorName = Color.BOLD_ON + Color.MAGENTA + "s" + Color.YELLOW + "t" + Color.BLUE + "r" + Color.MAGENTA + "e" + Color.WHITE + "e" + Color.RED + "t" + Color.GREEN + " " + - Color.BOLD_ON + Color.YELLOW + "hustler" + RESET; + private final static String colorName = "street" + BOLD_ON + Color.MAGENTA + " hustler" + Color.RESET ; private final static String dieMessage = "a " + colorName + " breathes his last breath in a pool of " + BOLD_ON + Color.RED + "blood" + RESET; public StreetHustler(GameManager gameManager) { diff --git a/src/main/java/com/comandante/creeper/player/PlayerManager.java b/src/main/java/com/comandante/creeper/player/PlayerManager.java index e9de66f2..76b95495 100644 --- a/src/main/java/com/comandante/creeper/player/PlayerManager.java +++ b/src/main/java/com/comandante/creeper/player/PlayerManager.java @@ -113,7 +113,7 @@ public class PlayerManager { PlayerMetadata playerMetadata = getPlayerMetadata(player.getPlayerId()); Stats playerStats = playerMetadata.getStats(); - Table t = new Table(2, BorderStyle.UNICODE_BOX, + Table t = new Table(2, BorderStyle.CLASSIC_COMPATIBLE, ShownBorders.HEADER_AND_FOOTER); t.setColumnWidth(0, 14, 14); @@ -157,7 +157,7 @@ public class PlayerManager { } - public String buildPrompt(String playerId, Integer roomId) { + public String buildPrompt(String playerId) { boolean isFight = FightManager.isActiveFight(sessionManager.getSession(playerId)); Player player = getPlayer(playerId); PlayerMetadata playerMetadata = getPlayerMetadata(playerId); diff --git a/src/main/java/com/comandante/creeper/server/ChannelUtils.java b/src/main/java/com/comandante/creeper/server/ChannelUtils.java index 65319636..85487f08 100644 --- a/src/main/java/com/comandante/creeper/server/ChannelUtils.java +++ b/src/main/java/com/comandante/creeper/server/ChannelUtils.java @@ -17,29 +17,6 @@ public class ChannelUtils { this.roomManager = roomManager; } - public void writeNoPrompt(String playerId, String message) { - if (playerManager.getSessionManager().getSession(playerId).getGrabMultiLineInput().isPresent()) { - return; - } - write(playerId, message, false, true); - } - - public void writeNoPromptNoAfterSpace(String playerId, String message) { - if (playerManager.getSessionManager().getSession(playerId).getGrabMultiLineInput().isPresent()) { - return; - } - write(playerId, message, false, false); - } - - public void writeOnlyPrompt(String playerId) { - if (playerManager.getSessionManager().getSession(playerId).getGrabMultiLineInput().isPresent()) { - return; - } - Player player = playerManager.getPlayer(playerId); - Room playerCurrentRoom = roomManager.getPlayerCurrentRoom(player).get(); - player.getChannel().write(playerManager.buildPrompt(playerId, playerCurrentRoom.getRoomId())); - } - public void writeToRoom(String playerId, String message) { if (playerManager.getSessionManager().getSession(playerId).getGrabMultiLineInput().isPresent()) { return; @@ -48,66 +25,29 @@ public class ChannelUtils { Set<String> presentPlayerIds = playerCurrentRoom.getPresentPlayerIds(); for (String id : presentPlayerIds) { Player presentPlayer = playerManager.getPlayer(id); - writeNoPrompt(presentPlayer.getPlayerId(), message); - } + write(presentPlayer.getPlayerId(), message); } - + } public void write(String playerId, String message) { - if (playerManager.getSessionManager().getSession(playerId).getGrabMultiLineInput().isPresent()) { - return; - } - write(playerId, message, true, true); + write(playerId, message, false); } - public void write(String playerId, String message, boolean isPrompt, boolean isAfterSpace) { + public void write(String playerId, String message, boolean leadingBlankLine) { if (playerManager.getSessionManager().getSession(playerId).getGrabMultiLineInput().isPresent()) { return; } Player player = playerManager.getPlayer(playerId); - Room playerCurrentRoom = roomManager.getPlayerCurrentRoom(player).get(); + String lastMessage = playerManager.getSessionManager().getSession(playerId).getLastMessage(); StringBuilder sb = new StringBuilder(); - sb.append(message); - if (isAfterSpace) { - sb.append(("\r\n")); - } - if (isPrompt) { - sb.append(playerManager.buildPrompt(playerId, playerCurrentRoom.getRoomId())); - } - player.getChannel().write(sb.toString()); - } - - public static String sanitze(String msg) { - byte[] data = msg.getBytes(); - byte groomedData[] = new byte[data.length]; - int bytesCopied = 0; - - for (int i = 0; i < data.length; i++) { - switch (data[i]) { - case (byte) '\n': - if (i == 0 || i == 1) { - break; - } - if (i == data.length - 1 || i == data.length - 2) { - break; - } - case (byte) '\r': - if (i == 0 || i == 1) { - break; - } - if (i == data.length - 1 || i == data.length - 2) { - break; - } - default: - groomedData[bytesCopied++] = data[i]; + if (lastMessage != null && !lastMessage.substring(lastMessage.length() - 2).equals("\r\n")) { + if (leadingBlankLine) { + sb.append("\r\n"); } } - - byte packedData[] = new byte[bytesCopied]; - - System.arraycopy(groomedData, 0, packedData, 0, bytesCopied); - - return new String(packedData); + sb.append(message); + playerManager.getSessionManager().getSession(playerId).setLastMessage(sb.toString()); + player.getChannel().write(sb.toString()); } } diff --git a/src/main/java/com/comandante/creeper/server/CreeperAuthenticationHandler.java b/src/main/java/com/comandante/creeper/server/CreeperAuthenticationHandler.java index 65e7a2f3..11b726cf 100644 --- a/src/main/java/com/comandante/creeper/server/CreeperAuthenticationHandler.java +++ b/src/main/java/com/comandante/creeper/server/CreeperAuthenticationHandler.java @@ -1,5 +1,6 @@ package com.comandante.creeper.server; +import com.comandante.creeper.Main; import com.comandante.creeper.managers.GameManager; import com.google.common.base.Optional; import org.jboss.netty.channel.ChannelEvent; @@ -58,10 +59,14 @@ public class CreeperAuthenticationHandler extends SimpleChannelUpstreamHandler { doAuthentication(ctx, e); if (creeperSession.isAuthed()) { gameManager.getPlayerManager().getSessionManager().putSession(creeperSession); - gameManager.currentRoomLogic(creeperSession, e); + e.getChannel().getPipeline().remove(this); + e.getChannel().getPipeline().addLast("server_handler", new CreeperCommandHandler(gameManager)); + e.getChannel().setAttachment(creeperSession); + gameManager.currentRoomLogic(Main.createPlayerId(creeperSession.getUsername().get())); + gameManager.getChannelUtils().write(Main.createPlayerId(creeperSession.getUsername().get()), "\r\n" + gameManager.getPlayerManager().buildPrompt(Main.createPlayerId(creeperSession.getUsername().get()))); } } else { - gameManager.getPlayerManager().getSessionManager().putSession(creeperSession); + //gameManager.getPlayerManager().getSessionManager().putSession(creeperSession); e.getChannel().getPipeline().addLast("server_handler", new CreeperCommandHandler(gameManager)); e.getChannel().getPipeline().remove(this); e.getChannel().setAttachment(creeperSession); diff --git a/src/main/java/com/comandante/creeper/server/CreeperSession.java b/src/main/java/com/comandante/creeper/server/CreeperSession.java index dccd6a4e..cfeba11e 100644 --- a/src/main/java/com/comandante/creeper/server/CreeperSession.java +++ b/src/main/java/com/comandante/creeper/server/CreeperSession.java @@ -20,6 +20,7 @@ public class CreeperSession { private AtomicBoolean isAbleToDoAbility = new AtomicBoolean(false); private Optional<CreeperEntry<UUID, Command>> grabMultiLineInput = Optional.absent(); private final long sessionCreationTimestamp = System.currentTimeMillis(); + private String lastMessage; State state; @@ -32,6 +33,14 @@ public class CreeperSession { authed } + public String getLastMessage() { + return lastMessage; + } + + public void setLastMessage(String lastMessage) { + this.lastMessage = lastMessage; + } + public long getSessionCreationTimestamp() { return sessionCreationTimestamp; } diff --git a/src/main/java/com/comandante/creeper/server/command/Command.java b/src/main/java/com/comandante/creeper/server/command/Command.java index 299bc0c6..97836e56 100644 --- a/src/main/java/com/comandante/creeper/server/command/Command.java +++ b/src/main/java/com/comandante/creeper/server/command/Command.java @@ -36,6 +36,9 @@ public abstract class Command extends SimpleChannelUpstreamHandler { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { e.getChannel().getPipeline().remove(ctx.getHandler()); + String playerId = getPlayerId(extractCreeperSession(e.getChannel())); + String prompt = gameManager.getPlayerManager().buildPrompt(playerId); + gameManager.getChannelUtils().write(playerId, "\r\n" + prompt); super.messageReceived(ctx, e); } diff --git a/src/main/java/com/comandante/creeper/server/command/GossipCommand.java b/src/main/java/com/comandante/creeper/server/command/GossipCommand.java index 5f5448ba..2149afaa 100644 --- a/src/main/java/com/comandante/creeper/server/command/GossipCommand.java +++ b/src/main/java/com/comandante/creeper/server/command/GossipCommand.java @@ -48,7 +48,7 @@ public class GossipCommand extends Command { if (player.getPlayerId().equals(sourcePlayer.getPlayerId())) { getGameManager().getChannelUtils().write(playerId, stringBuilder.toString()); } else { - getGameManager().getChannelUtils().writeNoPrompt(player.getPlayerId(), stringBuilder.toString()); + getGameManager().getChannelUtils().write(player.getPlayerId(), stringBuilder.toString()); } } } finally { diff --git a/src/main/java/com/comandante/creeper/server/command/InventoryCommand.java b/src/main/java/com/comandante/creeper/server/command/InventoryCommand.java index fcc83a9b..3c2dec26 100644 --- a/src/main/java/com/comandante/creeper/server/command/InventoryCommand.java +++ b/src/main/java/com/comandante/creeper/server/command/InventoryCommand.java @@ -51,9 +51,7 @@ public class InventoryCommand extends Command { sb.append(" uses left."); } } - sb.append("\r\n"); } - sb.append("\r\n"); getGameManager().getChannelUtils().write(getPlayerId(session), sb.toString()); } finally { super.messageReceived(ctx, e); diff --git a/src/main/java/com/comandante/creeper/server/command/MovementCommand.java b/src/main/java/com/comandante/creeper/server/command/MovementCommand.java index 81af7973..d475d187 100644 --- a/src/main/java/com/comandante/creeper/server/command/MovementCommand.java +++ b/src/main/java/com/comandante/creeper/server/command/MovementCommand.java @@ -65,7 +65,7 @@ public class MovementCommand extends Command { if (northTriggers.contains(command.toLowerCase())) { if (!currentRoom.getNorthId().isPresent()) { channelUtils.write(getPlayerId(session), gameManager.getMapsManager().drawMap(currentRoom.getRoomId(), new Coords(9,9))); - channelUtils.write(getPlayerId(session), "There's no northern exit."); + channelUtils.write(getPlayerId(session), "There's no northern exit.\r\n"); return; } Room destinationRoom = gameManager.getRoomManager().getRoom(currentRoom.getNorthId().get()); @@ -74,7 +74,7 @@ public class MovementCommand extends Command { if (southTriggers.contains(command.toLowerCase())) { if (!currentRoom.getSouthId().isPresent()) { channelUtils.write(getPlayerId(session), gameManager.getMapsManager().drawMap(currentRoom.getRoomId(), new Coords(9,9))); - channelUtils.write(getPlayerId(session), "There's no southern exit."); + channelUtils.write(getPlayerId(session), "There's no southern exit.\r\n"); return; } Room destinationRoom = gameManager.getRoomManager().getRoom(currentRoom.getSouthId().get()); @@ -84,7 +84,7 @@ public class MovementCommand extends Command { if (eastTriggers.contains(command.toLowerCase())) { if (!currentRoom.getEastId().isPresent()) { channelUtils.write(getPlayerId(session), gameManager.getMapsManager().drawMap(currentRoom.getRoomId(), new Coords(9,9))); - channelUtils.write(getPlayerId(session), "There's no eastern exit."); + channelUtils.write(getPlayerId(session), "There's no eastern exit.\r\n"); return; } Room destinationRoom = gameManager.getRoomManager().getRoom(currentRoom.getEastId().get()); @@ -93,7 +93,7 @@ public class MovementCommand extends Command { if (westTriggers.contains(command.toLowerCase())) { if (!currentRoom.getWestId().isPresent()) { channelUtils.write(getPlayerId(session), gameManager.getMapsManager().drawMap(currentRoom.getRoomId(), new Coords(9,9))); - channelUtils.write(getPlayerId(session), "There's no western exit."); + channelUtils.write(getPlayerId(session), "There's no western exit.\r\n"); return; } Room destinationRoom = gameManager.getRoomManager().getRoom(currentRoom.getWestId().get()); @@ -102,7 +102,7 @@ public class MovementCommand extends Command { if (upTriggers.contains(command.toLowerCase())) { if (!currentRoom.getUpId().isPresent()) { channelUtils.write(getPlayerId(session), gameManager.getMapsManager().drawMap(currentRoom.getRoomId(), new Coords(9,9))); - channelUtils.write(getPlayerId(session), "There's no up exit."); + channelUtils.write(getPlayerId(session), "There's no up exit.\r\n"); return; } Room destinationRoom = gameManager.getRoomManager().getRoom(currentRoom.getUpId().get()); @@ -111,7 +111,7 @@ public class MovementCommand extends Command { if (downTriggers.contains(command.toLowerCase())) { if (!currentRoom.getDownId().isPresent()) { channelUtils.write(getPlayerId(session), gameManager.getMapsManager().drawMap(currentRoom.getRoomId(), new Coords(9,9))); - channelUtils.write(getPlayerId(session), "There's no down exit."); + channelUtils.write(getPlayerId(session), "There's no down exit.\r\n"); return; } Room destinationRoom = gameManager.getRoomManager().getRoom(currentRoom.getDownId().get()); diff --git a/src/main/java/com/comandante/creeper/server/command/SayCommand.java b/src/main/java/com/comandante/creeper/server/command/SayCommand.java index bdc82d21..8c4d6868 100644 --- a/src/main/java/com/comandante/creeper/server/command/SayCommand.java +++ b/src/main/java/com/comandante/creeper/server/command/SayCommand.java @@ -47,7 +47,7 @@ public class SayCommand extends Command { if (presentPlayer.getPlayerId().equals(sourcePlayer.getPlayerId())) { getGameManager().getChannelUtils().write(sourcePlayer.getPlayerId(), stringBuilder.toString()); } else { - getGameManager().getChannelUtils().writeNoPrompt(presentPlayer.getPlayerId(), stringBuilder.toString()); + getGameManager().getChannelUtils().write(presentPlayer.getPlayerId(), stringBuilder.toString()); } } } finally { diff --git a/src/main/java/com/comandante/creeper/server/command/TellCommand.java b/src/main/java/com/comandante/creeper/server/command/TellCommand.java index ee2ea0fb..fce91e3a 100644 --- a/src/main/java/com/comandante/creeper/server/command/TellCommand.java +++ b/src/main/java/com/comandante/creeper/server/command/TellCommand.java @@ -51,7 +51,7 @@ public class TellCommand extends Command { stringBuilder.append("*").append(sourcePlayer.getPlayerName()).append("* "); stringBuilder.append(tellMessage); stringBuilder.append(RESET); - getGameManager().getChannelUtils().writeNoPrompt(desintationPlayer.getPlayerId(), destinationPlayercolor + stringBuilder.toString()); + getGameManager().getChannelUtils().write(desintationPlayer.getPlayerId(), destinationPlayercolor + stringBuilder.toString()); getGameManager().getChannelUtils().write(sourcePlayer.getPlayerId(), stringBuilder.toString()); } finally { super.messageReceived(ctx, e); diff --git a/src/main/java/com/comandante/creeper/server/command/UnknownCommand.java b/src/main/java/com/comandante/creeper/server/command/UnknownCommand.java index f5a6ba3e..bf406a49 100644 --- a/src/main/java/com/comandante/creeper/server/command/UnknownCommand.java +++ b/src/main/java/com/comandante/creeper/server/command/UnknownCommand.java @@ -1,6 +1,7 @@ package com.comandante.creeper.server.command; import com.comandante.creeper.managers.GameManager; +import com.comandante.creeper.server.CreeperSession; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.MessageEvent; @@ -13,9 +14,12 @@ public class UnknownCommand extends Command { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { try { - getGameManager().getChannelUtils().writeOnlyPrompt(getPlayerId(extractCreeperSession(e.getChannel()))); + CreeperSession creeperSession = extractCreeperSession(e.getChannel()); + String playerId = getPlayerId(creeperSession); + getGameManager().getChannelUtils().write(playerId, getGameManager().getPlayerManager().buildPrompt(playerId), false); + e.getChannel().getPipeline().remove(ctx.getHandler()); } finally { - super.messageReceived(ctx, e); + //super.messageReceived(ctx, e); } } } 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 ddf8e4a0..0573e1f3 100644 --- a/src/main/java/com/comandante/creeper/server/command/WhoCommand.java +++ b/src/main/java/com/comandante/creeper/server/command/WhoCommand.java @@ -25,7 +25,7 @@ public class WhoCommand extends Command { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { try { - Table t = new Table(3, BorderStyle.UNICODE_BOX, + Table t = new Table(3, BorderStyle.CLASSIC_COMPATIBLE, ShownBorders.HEADER_AND_FIRST_COLLUMN); t.setColumnWidth(0, 8, 14); diff --git a/src/main/java/com/comandante/creeper/server/command/admin/DescriptionCommand.java b/src/main/java/com/comandante/creeper/server/command/admin/DescriptionCommand.java index c9fc1550..d0b989fb 100644 --- a/src/main/java/com/comandante/creeper/server/command/admin/DescriptionCommand.java +++ b/src/main/java/com/comandante/creeper/server/command/admin/DescriptionCommand.java @@ -41,7 +41,7 @@ public class DescriptionCommand extends Command { return; } final String playerId = getPlayerId(session); - gameManager.getChannelUtils().writeNoPrompt(playerId, "\n\n ENTERING MULTI LINE INPUT MODE. TYPE \"DONE\" ON AN EMPTY LINE TO EXIT"); + gameManager.getChannelUtils().write(playerId, "\n\n ENTERING MULTI LINE INPUT MODE. TYPE \"DONE\" ON AN EMPTY LINE TO EXIT"); session.setGrabMultiLineInput(Optional.of( new CreeperEntry<UUID, Command>(gameManager.getMultiLineInputManager().createNewMultiLineInput(), this))); //e.getChannel().getPipeline().addLast("multi_line", new MultiLineInputHandler(gameManager)); diff --git a/src/main/java/com/comandante/creeper/server/command/admin/TagRoomCommand.java b/src/main/java/com/comandante/creeper/server/command/admin/TagRoomCommand.java index c4084273..d61b84f0 100644 --- a/src/main/java/com/comandante/creeper/server/command/admin/TagRoomCommand.java +++ b/src/main/java/com/comandante/creeper/server/command/admin/TagRoomCommand.java @@ -36,7 +36,7 @@ public class TagRoomCommand extends Command { String tag = iterator.next(); sb.append(tag).append("\n"); } - gameManager.getChannelUtils().writeNoPromptNoAfterSpace(player.getPlayerId(), "tag\n---"); + gameManager.getChannelUtils().write(player.getPlayerId(), "tag\n---"); gameManager.getChannelUtils().write(player.getPlayerId(), sb.toString()); return; } -- GitLab