diff --git a/src/main/java/com/comandante/creeper/server/CreeperCommandRegistry.java b/src/main/java/com/comandante/creeper/server/CreeperCommandRegistry.java index 0106d1ba8e2b99570714a1c02ab283f8f6608361..929dcd8a579f7500d8504972816620f23102eb6e 100644 --- a/src/main/java/com/comandante/creeper/server/CreeperCommandRegistry.java +++ b/src/main/java/com/comandante/creeper/server/CreeperCommandRegistry.java @@ -17,7 +17,7 @@ public class CreeperCommandRegistry { private final HashMap<String, Command> creeperCommands = new HashMap<>(); public void addCommand(Command command) { - List<String> validTriggers = command.getValidTriggers(); + List<String> validTriggers = command.validTriggers; for (String trigger: validTriggers) { creeperCommands.put(trigger, command); } diff --git a/src/main/java/com/comandante/creeper/server/MultiLineInputHandler.java b/src/main/java/com/comandante/creeper/server/MultiLineInputHandler.java index 6b3a7f3f7f14982d9f85c5a6eba9712ecbcf5334..851ce1c254fe64ccb677ccf33316f7d6ce1be9a4 100644 --- a/src/main/java/com/comandante/creeper/server/MultiLineInputHandler.java +++ b/src/main/java/com/comandante/creeper/server/MultiLineInputHandler.java @@ -19,7 +19,7 @@ public class MultiLineInputHandler extends SimpleChannelUpstreamHandler { try { CreeperSession creeperSession = (CreeperSession) e.getChannel().getAttachment(); String message = (String) e.getMessage(); - if (message.equalsIgnoreCase("DONE")) { + if (message.equalsIgnoreCase("done")) { e.getChannel().getPipeline().addLast(UUID.randomUUID().toString(), creeperSession.getGrabMultiLineInput().get().getValue()); return; } 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 1687f092acfd4e906f6cbe329f0e8c2f7e0c4293..39e40f9926605cab35b418975e1014a6def9cc6d 100644 --- a/src/main/java/com/comandante/creeper/server/command/Command.java +++ b/src/main/java/com/comandante/creeper/server/command/Command.java @@ -1,8 +1,21 @@ package com.comandante.creeper.server.command; import com.comandante.creeper.Main; +import com.comandante.creeper.entity.EntityManager; +import com.comandante.creeper.fight.FightManager; import com.comandante.creeper.managers.GameManager; +import com.comandante.creeper.player.Player; +import com.comandante.creeper.player.PlayerManager; +import com.comandante.creeper.player.PlayerMetadata; +import com.comandante.creeper.server.ChannelUtils; import com.comandante.creeper.server.CreeperSession; +import com.comandante.creeper.world.Coords; +import com.comandante.creeper.world.FloorManager; +import com.comandante.creeper.world.MapMatrix; +import com.comandante.creeper.world.MapsManager; +import com.comandante.creeper.world.Room; +import com.comandante.creeper.world.RoomManager; +import com.comandante.creeper.world.WorldExporter; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.MessageEvent; @@ -14,16 +27,31 @@ import java.util.List; public abstract class Command extends SimpleChannelUpstreamHandler { - private final GameManager gameManager; - private final List<String> validTriggers; - private final String description; - private final boolean isAdminCommand; + public final List<String> validTriggers; + public final String description; + public final boolean isAdminCommand; + + public final GameManager gameManager; + public final FloorManager floorManager; + public final MapsManager mapsManager; + public final EntityManager entityManager; + public final RoomManager roomManager; + public final PlayerManager playerManager; + public final ChannelUtils channelUtils; + public final FightManager fightManager; + public CreeperSession creeperSession; + public Player player; + public Room currentRoom; + public String playerId; + public MapMatrix mapMatrix; + public Coords currentRoomCoords; + public List<String> originalMessageParts; + public WorldExporter worldExporter; + public PlayerMetadata playerMetadata; + protected Command(GameManager gameManager, List<String> validTriggers, String description) { - this.gameManager = gameManager; - this.validTriggers = validTriggers; - this.description = description; - this.isAdminCommand = false; + this(gameManager, validTriggers, description, false); } protected Command(GameManager gameManager, List<String> validTriggers, String description, boolean isAdminCommand) { @@ -31,6 +59,25 @@ public abstract class Command extends SimpleChannelUpstreamHandler { this.validTriggers = validTriggers; this.description = description; this.isAdminCommand = isAdminCommand; + this.floorManager = gameManager.getFloorManager(); + this.mapsManager = gameManager.getMapsManager(); + this.roomManager = gameManager.getRoomManager(); + this.entityManager = gameManager.getEntityManager(); + this.playerManager = gameManager.getPlayerManager(); + this.channelUtils = gameManager.getChannelUtils(); + this.fightManager = gameManager.getFightManager(); + this.worldExporter = new WorldExporter(roomManager, mapsManager, floorManager, entityManager); + } + + public void configure(MessageEvent e) { + this.creeperSession = extractCreeperSession(e.getChannel()); + this.player = playerManager.getPlayer(extractPlayerId(creeperSession)); + this.playerId = player.getPlayerId(); + this.currentRoom = gameManager.getRoomManager().getPlayerCurrentRoom(player).get(); + this.mapMatrix = mapsManager.getFloorMatrixMaps().get(currentRoom.getFloorId()); + this.currentRoomCoords = mapMatrix.getCoords(currentRoom.getRoomId()); + this.originalMessageParts = getOriginalMessageParts(e); + this.playerMetadata = gameManager.getPlayerManager().getPlayerMetadata(playerId); } @Override @@ -46,17 +93,6 @@ public abstract class Command extends SimpleChannelUpstreamHandler { return (CreeperSession) channel.getAttachment(); } - public GameManager getGameManager() { - return gameManager; - } - - public List<String> getValidTriggers() { - return validTriggers; - } - - public String getDescription() { - return description; - } public String extractPlayerId(CreeperSession creeperSession) { return Main.createPlayerId(creeperSession.getUsername().get()); @@ -71,4 +107,24 @@ public abstract class Command extends SimpleChannelUpstreamHandler { String origMessage = (String) e.getMessage(); return new ArrayList<>(Arrays.asList(origMessage.split(" "))); } + + public void write(String msg) { + channelUtils.write(playerId, msg); + } + + public void write(String msg, boolean leadingBlankLine) { + channelUtils.write(playerId, msg, leadingBlankLine); + } + + public void currentRoomLogic(){ + gameManager.currentRoomLogic(playerId); + } + + public void printMap() { + write(currentRoom.getMapData().get()); + } + + public String getPrompt() { + return playerManager.buildPrompt(playerId); + } } \ No newline at end of file diff --git a/src/main/java/com/comandante/creeper/server/command/DropCommand.java b/src/main/java/com/comandante/creeper/server/command/DropCommand.java index abb071044a7ec090702a13f4704ab143018d859f..c59d4852de7c275fc29c446950302c342f518ed9 100644 --- a/src/main/java/com/comandante/creeper/server/command/DropCommand.java +++ b/src/main/java/com/comandante/creeper/server/command/DropCommand.java @@ -2,9 +2,6 @@ package com.comandante.creeper.server.command; import com.comandante.creeper.Items.Item; import com.comandante.creeper.managers.GameManager; -import com.comandante.creeper.player.PlayerMetadata; -import com.comandante.creeper.world.Room; -import com.comandante.creeper.server.CreeperSession; import com.google.common.base.Joiner; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.MessageEvent; @@ -23,29 +20,24 @@ public class DropCommand extends Command { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { + configure(e); try { - GameManager gameManager = getGameManager(); - CreeperSession session = extractCreeperSession(e.getChannel()); - final String playerId = extractPlayerId(session); - List<String> origMessageParts = getOriginalMessageParts(e); - if (origMessageParts.size() == 1) { - gameManager.getChannelUtils().write(playerId, "No item specified."); + if (originalMessageParts.size() == 1) { + channelUtils.write(playerId, "No item specified."); return; } - origMessageParts.remove(0); - String itemTarget = Joiner.on(" ").join(origMessageParts); - for (String inventoryId : gameManager.getPlayerManager().getPlayerMetadata(playerId).getInventory()) { - Item itemEntity = gameManager.getEntityManager().getItemEntity(inventoryId); + originalMessageParts.remove(0); + String itemTarget = Joiner.on(" ").join(originalMessageParts); + for (String inventoryId : playerManager.getPlayerMetadata(playerId).getInventory()) { + Item itemEntity = entityManager.getItemEntity(inventoryId); if (itemEntity.getItemTriggers().contains(itemTarget)) { itemEntity.setWithPlayer(false); - Room playerCurrentRoom = gameManager.getRoomManager().getPlayerCurrentRoom(gameManager.getPlayerManager().getPlayer(playerId)).get(); - gameManager.placeItemInRoom(playerCurrentRoom.getRoomId(), itemEntity.getItemId()); - PlayerMetadata playerMetadata = gameManager.getPlayerManager().getPlayerMetadata(playerId); + gameManager.placeItemInRoom(currentRoom.getRoomId(), itemEntity.getItemId()); playerMetadata.removeInventoryEntityId(itemEntity.getItemId()); - gameManager.getPlayerManager().savePlayerMetadata(playerMetadata); + playerManager.savePlayerMetadata(playerMetadata); gameManager.getItemDecayManager().addItem(itemEntity); - gameManager.getEntityManager().addItem(itemEntity); - gameManager.roomSay(playerCurrentRoom.getRoomId(), gameManager.getPlayerManager().getPlayer(playerId).getPlayerName() + " dropped " + itemEntity.getItemName(), playerId); + entityManager.addItem(itemEntity); + gameManager.roomSay(currentRoom.getRoomId(), player.getPlayerName() + " dropped " + itemEntity.getItemName(), playerId); return; } } diff --git a/src/main/java/com/comandante/creeper/server/command/FightKillCommand.java b/src/main/java/com/comandante/creeper/server/command/FightKillCommand.java index 546977cb9ca274c0341c12f9d0a28eea88bae7f5..fb7b31975fce0f5a0dbb30ceb89153cbe042537b 100644 --- a/src/main/java/com/comandante/creeper/server/command/FightKillCommand.java +++ b/src/main/java/com/comandante/creeper/server/command/FightKillCommand.java @@ -5,9 +5,6 @@ import com.comandante.creeper.fight.FightResults; import com.comandante.creeper.fight.FightRun; import com.comandante.creeper.managers.GameManager; import com.comandante.creeper.npc.Npc; -import com.comandante.creeper.player.Player; -import com.comandante.creeper.world.Room; -import com.comandante.creeper.server.CreeperSession; import com.google.common.base.Joiner; import com.google.common.base.Optional; import org.jboss.netty.channel.ChannelHandlerContext; @@ -29,34 +26,31 @@ public class FightKillCommand extends Command { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { + configure(e); try { - CreeperSession creeperSession = extractCreeperSession(e.getChannel()); - Player player = getGameManager().getPlayerManager().getPlayer(extractPlayerId(creeperSession)); if (FightManager.isActiveFight(creeperSession)) { - getGameManager().getChannelUtils().write(player.getPlayerId(), "You are already in a fight!"); + write("You are already in a fight!"); return; } - List<String> originalMessageParts = getOriginalMessageParts(e); if (originalMessageParts.size() == 1) { - getGameManager().getChannelUtils().write(player.getPlayerId(), "You need to specify who you want to fight."); + write("You need to specify who you want to fight."); return; } originalMessageParts.remove(0); String target = Joiner.on(" ").join(originalMessageParts); - Room playerCurrentRoom = getGameManager().getRoomManager().getPlayerCurrentRoom(player).get(); - Set<String> npcIds = playerCurrentRoom.getNpcIds(); + Set<String> npcIds = currentRoom.getNpcIds(); for (String npcId : npcIds) { - Npc npcEntity = getGameManager().getEntityManager().getNpcEntity(npcId); + Npc npcEntity = entityManager.getNpcEntity(npcId); if (npcEntity.getValidTriggers().contains(target)) { npcEntity.setIsInFight(true); - FightRun fightRun = new FightRun(player, npcEntity, getGameManager()); - getGameManager().getChannelUtils().write(player.getPlayerId(), "You start a fight!", false); - Future<FightResults> fight = getGameManager().getFightManager().fight(fightRun); + FightRun fightRun = new FightRun(player, npcEntity, gameManager); + write("You start a fight!", false); + Future<FightResults> fight = fightManager.fight(fightRun); creeperSession.setActiveFight(Optional.of(fight)); return; } } - getGameManager().getChannelUtils().write(player.getPlayerId(), "There's no NPC here to fight by that name."); + write("There's no NPC here to fight by that name."); } finally { 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 be23e872a069c167e5a7cf2738d8b61cca0fe037..c1fa62602632a5e1f8ca03e0864c2d068c9fd222 100644 --- a/src/main/java/com/comandante/creeper/server/command/GossipCommand.java +++ b/src/main/java/com/comandante/creeper/server/command/GossipCommand.java @@ -3,7 +3,6 @@ package com.comandante.creeper.server.command; import com.comandante.creeper.managers.GameManager; import com.comandante.creeper.player.Player; -import com.comandante.creeper.server.CreeperSession; import com.google.common.base.Joiner; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.MessageEvent; @@ -27,28 +26,26 @@ public class GossipCommand extends Command { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { + configure(e); try { - CreeperSession session = extractCreeperSession(e.getChannel()); - String playerId = extractPlayerId(session); - List<String> origMessageParts = getOriginalMessageParts(e); - if (origMessageParts.size() == 1) { - getGameManager().getChannelUtils().write(playerId, "Nothing to gossip about?"); + if (originalMessageParts.size() == 1) { + write("Nothing to gossip about?"); return; } - origMessageParts.remove(0); - final String msg = Joiner.on(" ").join(origMessageParts); - Player sourcePlayer = getGameManager().getPlayerManager().getPlayer(playerId); - Iterator<Map.Entry<String, Player>> players = getGameManager().getPlayerManager().getPlayers(); + originalMessageParts.remove(0); + final String msg = Joiner.on(" ").join(originalMessageParts); + Iterator<Map.Entry<String, Player>> players = playerManager.getPlayers(); while (players.hasNext()) { - StringBuilder stringBuilder = new StringBuilder(); - Player player = players.next().getValue(); - stringBuilder.append(MAGENTA); - stringBuilder.append("[").append(sourcePlayer.getPlayerName()).append("] ").append(msg); - stringBuilder.append(RESET); - if (player.getPlayerId().equals(sourcePlayer.getPlayerId())) { - getGameManager().getChannelUtils().write(playerId, stringBuilder.toString()); + final Player next = players.next().getValue(); + final String gossipMessage = new StringBuilder() + .append(MAGENTA).append("[") + .append(player.getPlayerName()).append("] ") + .append(msg).append(RESET) + .toString(); + if (next.getPlayerId().equals(playerId)) { + write(gossipMessage); } else { - getGameManager().getChannelUtils().write(player.getPlayerId(), stringBuilder.toString()); + channelUtils.write(next.getPlayerId(), gossipMessage); } } } 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 eec7362d4c823a7b1ebb46661fd28eda1bdfc09b..5402b7c5ea6e0c7dc16651e7d077770dfc069c14 100644 --- a/src/main/java/com/comandante/creeper/server/command/InventoryCommand.java +++ b/src/main/java/com/comandante/creeper/server/command/InventoryCommand.java @@ -4,8 +4,6 @@ package com.comandante.creeper.server.command; import com.comandante.creeper.Items.Item; import com.comandante.creeper.Items.ItemType; import com.comandante.creeper.managers.GameManager; -import com.comandante.creeper.player.PlayerMetadata; -import com.comandante.creeper.server.CreeperSession; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.MessageEvent; @@ -26,12 +24,11 @@ public class InventoryCommand extends Command { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { + configure(e); try { - CreeperSession session = extractCreeperSession(e.getChannel()); - PlayerMetadata playerMetadata = getGameManager().getPlayerManager().getPlayerMetadata(extractPlayerId(session)); String[] inventory1 = playerMetadata.getInventory(); if (inventory1 == null) { - getGameManager().getChannelUtils().write(extractPlayerId(session), "You aren't carrying anything."); + write("You aren't carrying anything."); return; } ArrayList<String> inventory = new ArrayList<String>(Arrays.asList(playerMetadata.getInventory())); @@ -39,7 +36,7 @@ public class InventoryCommand extends Command { sb.append("You are carrying:\r\n"); sb.append(RESET); for (String inventoryId : inventory) { - Item item = getGameManager().getEntityManager().getItemEntity(inventoryId); + Item item = entityManager.getItemEntity(inventoryId); sb.append(item.getItemName()); int maxUses = ItemType.itemTypeFromCode(item.getItemTypeId()).getMaxUses(); if (maxUses > 0) { @@ -52,7 +49,7 @@ public class InventoryCommand extends Command { } } } - getGameManager().getChannelUtils().write(extractPlayerId(session), sb.toString()); + write(sb.toString()); } finally { super.messageReceived(ctx, e); } diff --git a/src/main/java/com/comandante/creeper/server/command/LookCommand.java b/src/main/java/com/comandante/creeper/server/command/LookCommand.java index 6f062f074ef3dc3681d5fca35e12aed04452abd2..af16fa5eadbdaff3321e76ebc52458fbcde50977 100644 --- a/src/main/java/com/comandante/creeper/server/command/LookCommand.java +++ b/src/main/java/com/comandante/creeper/server/command/LookCommand.java @@ -1,9 +1,8 @@ + package com.comandante.creeper.server.command; import com.comandante.creeper.managers.GameManager; import com.comandante.creeper.player.Player; -import com.comandante.creeper.world.Room; -import com.comandante.creeper.server.CreeperSession; import com.google.common.base.Joiner; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.MessageEvent; @@ -23,24 +22,20 @@ public class LookCommand extends Command { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { + configure(e); try { - CreeperSession creeperSession = extractCreeperSession(e.getChannel()); - List<String> originalMessageParts = getOriginalMessageParts(e); if (originalMessageParts.size() == 1) { - getGameManager().currentRoomLogic(extractPlayerId(creeperSession)); + currentRoomLogic(); return; } originalMessageParts.remove(0); String target = Joiner.on(" ").join(originalMessageParts); //Players - Player player = getGameManager().getPlayerManager().getPlayer(extractPlayerId(creeperSession)); - Room playerCurrentRoom = getGameManager().getRoomManager().getPlayerCurrentRoom(player).get(); - Set<String> presentPlayerIds = playerCurrentRoom.getPresentPlayerIds(); + Set<String> presentPlayerIds = currentRoom.getPresentPlayerIds(); for (String presentPlayerId : presentPlayerIds) { - Player presentPlayer = getGameManager().getPlayerManager().getPlayer(presentPlayerId); + Player presentPlayer = gameManager.getPlayerManager().getPlayer(presentPlayerId); if (presentPlayer.getPlayerName().equals(target)) { - getGameManager().getChannelUtils().write(extractPlayerId(creeperSession), - getGameManager().getPlayerManager().getLookString(player)); + write(playerManager.getLookString(player)); } } } finally { 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 048e774c46203ab63ab5023ab2eaf6db1cf9e8ed..67b755c53a935e23a794e139638c761bae8b4a47 100644 --- a/src/main/java/com/comandante/creeper/server/command/MovementCommand.java +++ b/src/main/java/com/comandante/creeper/server/command/MovementCommand.java @@ -3,11 +3,7 @@ package com.comandante.creeper.server.command; import com.comandante.creeper.fight.FightManager; import com.comandante.creeper.managers.GameManager; import com.comandante.creeper.player.PlayerMovement; -import com.comandante.creeper.player.Player; -import com.comandante.creeper.world.Coords; import com.comandante.creeper.world.Room; -import com.comandante.creeper.server.ChannelUtils; -import com.comandante.creeper.server.CreeperSession; import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; import org.jboss.netty.channel.ChannelHandlerContext; @@ -43,20 +39,12 @@ public class MovementCommand extends Command { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { + configure(e); try { - final GameManager gameManager = getGameManager(); - CreeperSession session = extractCreeperSession(e.getChannel()); - Player player = gameManager.getPlayerManager().getPlayer(extractPlayerId(session)); - Optional<Room> roomOptional = gameManager.getRoomManager().getPlayerCurrentRoom(player); - ChannelUtils channelUtils = gameManager.getChannelUtils(); - if (!roomOptional.isPresent()) { - throw new RuntimeException("Player is not in a world, movement failed!"); - } - if (FightManager.isActiveFight(session)) { - channelUtils.write(extractPlayerId(session), "You can't not move while in a fight!"); + if (FightManager.isActiveFight(creeperSession)) { + write("You can't not move while in a fight!"); return; } - Room currentRoom = roomOptional.get(); final String command = getRootCommand(e); PlayerMovement playerMovement = null; if (!validTriggers.contains(command.toLowerCase())) { @@ -64,63 +52,63 @@ public class MovementCommand extends Command { } if (northTriggers.contains(command.toLowerCase())) { if (!currentRoom.getNorthId().isPresent()) { - channelUtils.write(extractPlayerId(session), gameManager.getMapsManager().drawMap(currentRoom.getRoomId(), new Coords(9,9))); - channelUtils.write(extractPlayerId(session), "There's no northern exit.\r\n"); + printMap(); + write("There's no northern exit.\r\n"); return; } - Room destinationRoom = gameManager.getRoomManager().getRoom(currentRoom.getNorthId().get()); + Room destinationRoom = roomManager.getRoom(currentRoom.getNorthId().get()); playerMovement = new PlayerMovement(player, currentRoom.getRoomId(), destinationRoom.getRoomId(), this, "exited to the north.", "south"); } if (southTriggers.contains(command.toLowerCase())) { if (!currentRoom.getSouthId().isPresent()) { - channelUtils.write(extractPlayerId(session), gameManager.getMapsManager().drawMap(currentRoom.getRoomId(), new Coords(9,9))); - channelUtils.write(extractPlayerId(session), "There's no southern exit.\r\n"); + printMap(); + write("There's no southern exit.\r\n"); return; } - Room destinationRoom = gameManager.getRoomManager().getRoom(currentRoom.getSouthId().get()); - channelUtils.write(extractPlayerId(session), gameManager.getMapsManager().drawMap(currentRoom.getRoomId(), new Coords(9,9))); + Room destinationRoom = roomManager.getRoom(currentRoom.getSouthId().get()); + printMap(); playerMovement = new PlayerMovement(player, currentRoom.getRoomId(), destinationRoom.getRoomId(), this, "exited to the south.", "north"); } if (eastTriggers.contains(command.toLowerCase())) { if (!currentRoom.getEastId().isPresent()) { - channelUtils.write(extractPlayerId(session), gameManager.getMapsManager().drawMap(currentRoom.getRoomId(), new Coords(9,9))); - channelUtils.write(extractPlayerId(session), "There's no eastern exit.\r\n"); + printMap(); + write("There's no eastern exit.\r\n"); return; } - Room destinationRoom = gameManager.getRoomManager().getRoom(currentRoom.getEastId().get()); + Room destinationRoom = roomManager.getRoom(currentRoom.getEastId().get()); playerMovement = new PlayerMovement(player, currentRoom.getRoomId(), destinationRoom.getRoomId(), this, "exited to the east.", "west"); } if (westTriggers.contains(command.toLowerCase())) { if (!currentRoom.getWestId().isPresent()) { - channelUtils.write(extractPlayerId(session), gameManager.getMapsManager().drawMap(currentRoom.getRoomId(), new Coords(9,9))); - channelUtils.write(extractPlayerId(session), "There's no western exit.\r\n"); + printMap(); + write("There's no western exit.\r\n"); return; } - Room destinationRoom = gameManager.getRoomManager().getRoom(currentRoom.getWestId().get()); + Room destinationRoom = roomManager.getRoom(currentRoom.getWestId().get()); playerMovement = new PlayerMovement(player, currentRoom.getRoomId(), destinationRoom.getRoomId(), this, "exited to the west.", "east"); } if (upTriggers.contains(command.toLowerCase())) { if (!currentRoom.getUpId().isPresent()) { - channelUtils.write(extractPlayerId(session), gameManager.getMapsManager().drawMap(currentRoom.getRoomId(), new Coords(9,9))); - channelUtils.write(extractPlayerId(session), "There's no up exit.\r\n"); + printMap(); + write("There's no up exit.\r\n"); return; } - Room destinationRoom = gameManager.getRoomManager().getRoom(currentRoom.getUpId().get()); + Room destinationRoom = roomManager.getRoom(currentRoom.getUpId().get()); playerMovement = new PlayerMovement(player, currentRoom.getRoomId(), destinationRoom.getRoomId(), this, "exited to the west.", "down"); } if (downTriggers.contains(command.toLowerCase())) { if (!currentRoom.getDownId().isPresent()) { - channelUtils.write(extractPlayerId(session), gameManager.getMapsManager().drawMap(currentRoom.getRoomId(), new Coords(9,9))); - channelUtils.write(extractPlayerId(session), "There's no down exit.\r\n"); + printMap(); + write("There's no down exit.\r\n"); return; } - Room destinationRoom = gameManager.getRoomManager().getRoom(currentRoom.getDownId().get()); + Room destinationRoom = roomManager.getRoom(currentRoom.getDownId().get()); playerMovement = new PlayerMovement(player, currentRoom.getRoomId(), destinationRoom.getRoomId(), this, "exited to the west.", "up"); } gameManager.movePlayer(playerMovement); if (playerMovement != null) { player.setReturnDirection(Optional.of(playerMovement.getReturnDirection())); - gameManager.currentRoomLogic(playerMovement.getPlayer().getPlayerId()); + currentRoomLogic(); } } finally { super.messageReceived(ctx, e); diff --git a/src/main/java/com/comandante/creeper/server/command/PickUpCommand.java b/src/main/java/com/comandante/creeper/server/command/PickUpCommand.java index 470c889c8733f59591be9bd69e636559ea10f251..3ee972189c650c73e7a8c892d7c00b7260b4a909 100644 --- a/src/main/java/com/comandante/creeper/server/command/PickUpCommand.java +++ b/src/main/java/com/comandante/creeper/server/command/PickUpCommand.java @@ -2,9 +2,6 @@ package com.comandante.creeper.server.command; import com.comandante.creeper.Items.Item; import com.comandante.creeper.managers.GameManager; -import com.comandante.creeper.player.Player; -import com.comandante.creeper.world.Room; -import com.comandante.creeper.server.CreeperSession; import com.google.common.base.Joiner; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.MessageEvent; @@ -24,20 +21,17 @@ public class PickUpCommand extends Command { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { + configure(e); try { - List<String> originalMessageParts = getOriginalMessageParts(e); - CreeperSession session = extractCreeperSession(e.getChannel()); - Player player = getGameManager().getPlayerManager().getPlayer(extractPlayerId(session)); - Room playerCurrentRoom = getGameManager().getRoomManager().getPlayerCurrentRoom(player).get(); - Set<String> itemIds = playerCurrentRoom.getItemIds(); + Set<String> itemIds = currentRoom.getItemIds(); originalMessageParts.remove(0); String desiredPickUpItem = Joiner.on(" ").join(originalMessageParts); for (String next : itemIds) { - Item itemEntity = getGameManager().getEntityManager().getItemEntity(next); + Item itemEntity = entityManager.getItemEntity(next); if (itemEntity.getItemTriggers().contains(desiredPickUpItem)) { - getGameManager().acquireItem(player, itemEntity.getItemId()); - String playerName = getGameManager().getPlayerManager().getPlayer(extractPlayerId(session)).getPlayerName(); - getGameManager().roomSay(playerCurrentRoom.getRoomId(), playerName + " picked up " + itemEntity.getItemName(), extractPlayerId(session)); + gameManager.acquireItem(player, itemEntity.getItemId()); + String playerName = player.getPlayerName(); + gameManager.roomSay(currentRoom.getRoomId(), playerName + " picked up " + itemEntity.getItemName(), playerId); return; } } 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 b0235c736733dd670a18b45434ee32827f9cd1e3..1630b46609a399b0b1baaa1e5c5885afbf53e461 100644 --- a/src/main/java/com/comandante/creeper/server/command/SayCommand.java +++ b/src/main/java/com/comandante/creeper/server/command/SayCommand.java @@ -2,10 +2,7 @@ package com.comandante.creeper.server.command; import com.comandante.creeper.managers.GameManager; import com.comandante.creeper.player.Player; -import com.comandante.creeper.world.Room; -import com.comandante.creeper.server.CreeperSession; import com.google.common.base.Joiner; -import com.google.common.base.Optional; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.MessageEvent; @@ -27,27 +24,20 @@ public class SayCommand extends Command { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { + configure(e); try { - CreeperSession session = extractCreeperSession(e.getChannel()); - List<String> originalMessageParts = getOriginalMessageParts(e); originalMessageParts.remove(0); - Player sourcePlayer = getGameManager().getPlayerManager().getPlayer(extractPlayerId(session)); String message = Joiner.on(" ").join(originalMessageParts); - Optional<Room> playerCurrentRoomOpt = getGameManager().getRoomManager().getPlayerCurrentRoom(sourcePlayer); - if (!playerCurrentRoomOpt.isPresent()) { - throw new RuntimeException("playerCurrentRoom is missing!"); - } - Room playerCurrentRoom = playerCurrentRoomOpt.get(); - Set<Player> presentPlayers = getGameManager().getPlayerManager().getPresentPlayers(playerCurrentRoom); + Set<Player> presentPlayers = playerManager.getPresentPlayers(currentRoom); for (Player presentPlayer : presentPlayers) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(RED); - stringBuilder.append("<").append(sourcePlayer.getPlayerName()).append("> ").append(message); + stringBuilder.append("<").append(player.getPlayerName()).append("> ").append(message); stringBuilder.append(RESET); - if (presentPlayer.getPlayerId().equals(sourcePlayer.getPlayerId())) { - getGameManager().getChannelUtils().write(sourcePlayer.getPlayerId(), stringBuilder.toString()); + if (presentPlayer.getPlayerId().equals(playerId)) { + write(stringBuilder.toString()); } else { - getGameManager().getChannelUtils().write(presentPlayer.getPlayerId(), stringBuilder.toString()); + channelUtils.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 9d2f5380fbbb2711aadb23ef2d2f601f90c12905..2700de7d9cb1341f19163fd6dc1399d9e680a37f 100644 --- a/src/main/java/com/comandante/creeper/server/command/TellCommand.java +++ b/src/main/java/com/comandante/creeper/server/command/TellCommand.java @@ -2,7 +2,6 @@ package com.comandante.creeper.server.command; import com.comandante.creeper.managers.GameManager; import com.comandante.creeper.player.Player; -import com.comandante.creeper.server.CreeperSession; import com.google.common.base.Joiner; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.MessageEvent; @@ -24,35 +23,33 @@ public class TellCommand extends Command { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { + configure(e); try { - CreeperSession session = extractCreeperSession(e.getChannel()); - Player sourcePlayer = getGameManager().getPlayerManager().getPlayer(extractPlayerId(session)); - List<String> parts = getOriginalMessageParts(e); - if (parts.size() < 3) { - getGameManager().getChannelUtils().write(sourcePlayer.getPlayerId(), "tell failed, no message to send."); + if (originalMessageParts.size() < 3) { + write("tell failed, no message to send."); return; } //remove the literal 'tell' - parts.remove(0); - String destinationUsername = parts.get(0); - Player desintationPlayer = getGameManager().getPlayerManager().getPlayerByUsername(destinationUsername); + originalMessageParts.remove(0); + String destinationUsername = originalMessageParts.get(0); + Player desintationPlayer = playerManager.getPlayerByUsername(destinationUsername); if (desintationPlayer == null) { - getGameManager().getChannelUtils().write(sourcePlayer.getPlayerId(), "tell failed, unknown user."); + write("tell failed, unknown user."); return; } - if (desintationPlayer.getPlayerId().equals(sourcePlayer.getPlayerId())) { - getGameManager().getChannelUtils().write(sourcePlayer.getPlayerId(), "tell failed, you're talking to yourself."); + if (desintationPlayer.getPlayerId().equals(playerId)) { + write("tell failed, you're talking to yourself."); return; } - parts.remove(0); - String tellMessage = Joiner.on(" ").join(parts); + originalMessageParts.remove(0); + String tellMessage = Joiner.on(" ").join(originalMessageParts); StringBuilder stringBuilder = new StringBuilder(); String destinationPlayercolor = YELLOW; - stringBuilder.append("*").append(sourcePlayer.getPlayerName()).append("* "); + stringBuilder.append("*").append(player.getPlayerName()).append("* "); stringBuilder.append(tellMessage); stringBuilder.append(RESET); - getGameManager().getChannelUtils().write(desintationPlayer.getPlayerId(), destinationPlayercolor + stringBuilder.toString()); - getGameManager().getChannelUtils().write(sourcePlayer.getPlayerId(), stringBuilder.toString()); + channelUtils.write(desintationPlayer.getPlayerId(), destinationPlayercolor + stringBuilder.toString()); + write(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 860b39072a3201f3af0958b534ed5725c71e6075..e1c088feb75ba4c663bb2af994dd69e8c98347be 100644 --- a/src/main/java/com/comandante/creeper/server/command/UnknownCommand.java +++ b/src/main/java/com/comandante/creeper/server/command/UnknownCommand.java @@ -1,7 +1,6 @@ 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,13 +12,11 @@ public class UnknownCommand extends Command { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { + configure(e); try { - CreeperSession creeperSession = extractCreeperSession(e.getChannel()); - String playerId = extractPlayerId(creeperSession); - getGameManager().getChannelUtils().write(playerId, getGameManager().getPlayerManager().buildPrompt(playerId), false); + write(getPrompt(), false); e.getChannel().getPipeline().remove(ctx.getHandler()); } finally { - //super.messageReceived(ctx, e); } } } diff --git a/src/main/java/com/comandante/creeper/server/command/UseCommand.java b/src/main/java/com/comandante/creeper/server/command/UseCommand.java index c6055772413fd2fce059cc87ee5c9955cf3e032d..3ff1f7e4ff8b60ba9f89c6b8adb135c6150c869b 100644 --- a/src/main/java/com/comandante/creeper/server/command/UseCommand.java +++ b/src/main/java/com/comandante/creeper/server/command/UseCommand.java @@ -5,7 +5,6 @@ import com.comandante.creeper.Items.Item; import com.comandante.creeper.Items.ItemType; import com.comandante.creeper.Items.ItemUseHandler; import com.comandante.creeper.managers.GameManager; -import com.comandante.creeper.server.CreeperSession; import com.google.common.base.Joiner; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.MessageEvent; @@ -24,23 +23,22 @@ public class UseCommand extends Command { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { + configure(e); try { - CreeperSession session = extractCreeperSession(e.getChannel()); - List<String> originalMessageParts = getOriginalMessageParts(e); if (originalMessageParts.size() == 1) { - getGameManager().getChannelUtils().write(extractPlayerId(session), "No item specified."); + write("No item specified."); return; } originalMessageParts.remove(0); String itemTarget = Joiner.on(" ").join(originalMessageParts); - for (String inventoryId : getGameManager().getPlayerManager().getPlayerMetadata(extractPlayerId(session)).getInventory()) { - Item itemEntity = getGameManager().getEntityManager().getItemEntity(inventoryId); + for (String inventoryId : playerMetadata.getInventory()) { + Item itemEntity = entityManager.getItemEntity(inventoryId); if (itemEntity.getItemTriggers().contains(itemTarget)) { - new ItemUseHandler(itemEntity, session, getGameManager(), extractPlayerId(session)).handle(); + new ItemUseHandler(itemEntity, creeperSession, gameManager, playerId).handle(); return; } } - new ItemUseHandler(ItemType.UNKNOWN.create(), session, getGameManager(), extractPlayerId(session)).handle(); + new ItemUseHandler(ItemType.UNKNOWN.create(), creeperSession, gameManager, playerId).handle(); } finally { 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 2c3b2907f008707b87b5426ee810ce3489870547..490f728d64056a1784a2ace7cd2d78f211322283 100644 --- a/src/main/java/com/comandante/creeper/server/command/WhoCommand.java +++ b/src/main/java/com/comandante/creeper/server/command/WhoCommand.java @@ -24,6 +24,7 @@ public class WhoCommand extends Command { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { + configure(e); try { Table t = new Table(3, BorderStyle.CLASSIC_COMPATIBLE, ShownBorders.HEADER_AND_FIRST_COLLUMN); @@ -34,13 +35,13 @@ public class WhoCommand extends Command { t.addCell("player"); t.addCell("ip address"); t.addCell("logged in since"); - Set<Player> allPlayers = getGameManager().getAllPlayers(); + Set<Player> allPlayers = gameManager.getAllPlayers(); for (Player allPlayer : allPlayers) { t.addCell(allPlayer.getPlayerName()); t.addCell(allPlayer.getChannel().getRemoteAddress().toString().substring(1).split(":")[0]); t.addCell(extractCreeperSession(e.getChannel()).getPrettyDate()); } - getGameManager().getChannelUtils().write(extractPlayerId(extractCreeperSession(e.getChannel())), t.render()); + write(t.render()); } finally { super.messageReceived(ctx, e); } diff --git a/src/main/java/com/comandante/creeper/server/command/WhoamiCommand.java b/src/main/java/com/comandante/creeper/server/command/WhoamiCommand.java index a8183b87534b9d8a7c389f13d9381e33a90f7117..60e97de6eb6a50794680de13ac2b0df9d85b50d4 100644 --- a/src/main/java/com/comandante/creeper/server/command/WhoamiCommand.java +++ b/src/main/java/com/comandante/creeper/server/command/WhoamiCommand.java @@ -1,7 +1,6 @@ package com.comandante.creeper.server.command; import com.comandante.creeper.managers.GameManager; -import com.comandante.creeper.player.Player; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.MessageEvent; @@ -18,9 +17,9 @@ public class WhoamiCommand extends Command { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { + configure(e); try { - Player player = getGameManager().getPlayerManager().getPlayer(extractPlayerId(extractCreeperSession(e.getChannel()))); - getGameManager().getChannelUtils().write(player.getPlayerId(), player.getPlayerName()); + write(player.getPlayerName()); } finally { super.messageReceived(ctx, e); } diff --git a/src/main/java/com/comandante/creeper/server/command/admin/BuildCommand.java b/src/main/java/com/comandante/creeper/server/command/admin/BuildCommand.java index e69b28859ef7cff4fee9459b7312cd448faa722a..fac92b35cfb288dd7760356419e162ce1c44379a 100644 --- a/src/main/java/com/comandante/creeper/server/command/admin/BuildCommand.java +++ b/src/main/java/com/comandante/creeper/server/command/admin/BuildCommand.java @@ -1,23 +1,16 @@ package com.comandante.creeper.server.command.admin; -import com.comandante.creeper.entity.EntityManager; import com.comandante.creeper.managers.GameManager; -import com.comandante.creeper.player.Player; import com.comandante.creeper.player.PlayerMovement; -import com.comandante.creeper.server.ChannelUtils; -import com.comandante.creeper.server.CreeperSession; import com.comandante.creeper.server.command.Command; import com.comandante.creeper.world.Area; import com.comandante.creeper.world.BasicRoom; import com.comandante.creeper.world.BasicRoomBuilder; import com.comandante.creeper.world.Coords; -import com.comandante.creeper.world.FloorManager; import com.comandante.creeper.world.FloorModel; import com.comandante.creeper.world.MapMatrix; -import com.comandante.creeper.world.MapsManager; import com.comandante.creeper.world.RemoteExit; import com.comandante.creeper.world.Room; -import com.comandante.creeper.world.RoomManager; import com.comandante.creeper.world.WorldExporter; import com.google.common.base.Optional; import com.google.common.collect.Iterators; @@ -42,46 +35,34 @@ public class BuildCommand extends Command { @Override public synchronized void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { + configure(e); try { - - CreeperSession session = extractCreeperSession(e.getChannel()); - String playerId = extractPlayerId(session); - GameManager gameManager = getGameManager(); - Player player = gameManager.getPlayerManager().getPlayer(playerId); - Room currentRoom = gameManager.getRoomManager().getPlayerCurrentRoom(player).get(); - ChannelUtils utils = gameManager.getChannelUtils(); - MapsManager mapsManager = gameManager.getMapsManager(); - MapMatrix mapMatrix = mapsManager.getFloorMatrixMaps().get(currentRoom.getFloorId()); - Coords currentRoomCoords = mapMatrix.getCoords(currentRoom.getRoomId()); - EntityManager entityManager = gameManager.getEntityManager(); - FloorManager floorManager = gameManager.getFloorManager(); - - if (getOriginalMessageParts(e).size() > 1) { - String desiredBuildDirection = getOriginalMessageParts(e).get(1); + if (originalMessageParts.size() > 1) { + String desiredBuildDirection = originalMessageParts.get(1); if (desiredBuildDirection.equalsIgnoreCase("n") | desiredBuildDirection.equalsIgnoreCase("north")) { if (!currentRoom.getNorthId().isPresent() && mapMatrix.isNorthernMapSpaceEmpty(currentRoom.getRoomId())) { - buildBasicRoomAndProcessAllExits(player, currentRoom, mapMatrix.getNorthCords(currentRoomCoords), mapMatrix); + buildBasicRoomAndProcessAllExits(mapMatrix.getNorthCords(currentRoomCoords)); return; } } else if (desiredBuildDirection.equalsIgnoreCase("s") | desiredBuildDirection.equalsIgnoreCase("south")) { if (!currentRoom.getSouthId().isPresent() && mapMatrix.isSouthernMapSpaceEmpty(currentRoom.getRoomId())) { - buildBasicRoomAndProcessAllExits(player, currentRoom, mapMatrix.getSouthCoords(currentRoomCoords), mapMatrix); + buildBasicRoomAndProcessAllExits(mapMatrix.getSouthCoords(currentRoomCoords)); return; } } else if (desiredBuildDirection.equalsIgnoreCase("e") | desiredBuildDirection.equalsIgnoreCase("east")) { if (!currentRoom.getEastId().isPresent() && mapMatrix.isEasternMapSpaceEmpty(currentRoom.getRoomId())) { - buildBasicRoomAndProcessAllExits(player, currentRoom, mapMatrix.getEastCoords(currentRoomCoords), mapMatrix); + buildBasicRoomAndProcessAllExits(mapMatrix.getEastCoords(currentRoomCoords)); return; } } else if (desiredBuildDirection.equalsIgnoreCase("w") | desiredBuildDirection.equalsIgnoreCase("west")) { if (!currentRoom.getWestId().isPresent() && mapMatrix.isWesternMapSpaceEmpty(currentRoom.getRoomId())) { - buildBasicRoomAndProcessAllExits(player, currentRoom, mapMatrix.getSouthCoords(currentRoomCoords), mapMatrix); + buildBasicRoomAndProcessAllExits(mapMatrix.getSouthCoords(currentRoomCoords)); return; } } else if (desiredBuildDirection.equalsIgnoreCase("u") | desiredBuildDirection.equalsIgnoreCase("up")) { if (!currentRoom.getUpId().isPresent()) { - Integer newRoomId = findRoomId(); - Integer newFloorId = findFloorId(); + Integer newRoomId = findUnusedRoomId(); + Integer newFloorId = findUnusedFloorId(); mapMatrix.addRemote(currentRoom.getRoomId(), new RemoteExit(RemoteExit.Direction.UP, newRoomId)); FloorModel newFloorModel = newFloorModel(newFloorId, newRoomId, currentRoom.getRoomId(), RemoteExit.Direction.DOWN); BasicRoom basicRoom = newBasic() @@ -101,8 +82,8 @@ public class BuildCommand extends Command { } } else if (desiredBuildDirection.equalsIgnoreCase("d") | desiredBuildDirection.equalsIgnoreCase("down")) { if (!currentRoom.getDownId().isPresent()) { - Integer newRoomId = findRoomId(); - Integer newFloorId = findFloorId(); + Integer newRoomId = findUnusedRoomId(); + Integer newFloorId = findUnusedFloorId(); mapMatrix.addRemote(currentRoom.getRoomId(), new RemoteExit(RemoteExit.Direction.DOWN, newRoomId)); FloorModel newFloorModel = newFloorModel(newFloorId, newRoomId, currentRoom.getRoomId(), RemoteExit.Direction.UP); BasicRoom basicRoom = newBasic() @@ -121,7 +102,7 @@ public class BuildCommand extends Command { return; } } - utils.write(playerId, "Room already exists at that location."); + channelUtils.write(playerId, "Room already exists at that location."); } } finally { super.messageReceived(ctx, e); @@ -148,25 +129,24 @@ public class BuildCommand extends Command { return basicRoomBuilder; } - private void buildBasicRoomAndProcessAllExits(Player player, Room currentRoom, Coords newCords, MapMatrix mapMatrix) { - Integer newRroomId = findRoomId(); + private void buildBasicRoomAndProcessAllExits(Coords newCords) { + Integer newRroomId = findUnusedRoomId(); mapMatrix.setCoordsValue(newCords, newRroomId); BasicRoom basicRoom = newBasic() .setRoomId(newRroomId) .setFloorId(currentRoom.getFloorId()) .createBasicRoom(); - getGameManager().getEntityManager().addEntity(basicRoom); + entityManager.addEntity(basicRoom); rebuildExits(basicRoom, mapMatrix); rebuildExits(currentRoom, mapMatrix); processExits(basicRoom, mapMatrix); - getGameManager().getMapsManager().generateAllMaps(9, 9); - getGameManager().movePlayer(new PlayerMovement(player, currentRoom.getRoomId(), basicRoom.getRoomId(), null, "", "")); - getGameManager().currentRoomLogic(player.getPlayerId()); - getGameManager().getChannelUtils().write(player.getPlayerId(), "Room Created."); + mapsManager.generateAllMaps(9, 9); + gameManager.movePlayer(new PlayerMovement(player, currentRoom.getRoomId(), basicRoom.getRoomId(), null, "", "")); + gameManager.currentRoomLogic(player.getPlayerId()); + write("Room Created."); } private void processExits(BasicRoom basicRoom, MapMatrix mapMatrix) { - RoomManager roomManager = getGameManager().getRoomManager(); if (basicRoom.getNorthId().isPresent()) { rebuildExits(roomManager.getRoom(basicRoom.getNorthId().get()), mapMatrix); } @@ -206,19 +186,18 @@ public class BuildCommand extends Command { } } - private synchronized Integer findRoomId() { + private synchronized Integer findUnusedRoomId() { for (int i = 1; i < Integer.MAX_VALUE; i++) { - if (!getGameManager().getRoomManager().doesRoomIdExist(i)) { + if (!roomManager.doesRoomIdExist(i)) { return i; } } return 0; } - - private synchronized Integer findFloorId() { + private synchronized Integer findUnusedFloorId() { for (int i = 1; i < Integer.MAX_VALUE; i++) { - if (!getGameManager().getFloorManager().doesFloorIdExist(i)) { + if (!floorManager.doesFloorIdExist(i)) { return i; } } 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 0371e3cf49c5fedcdcba6e1210f3009c0e8f4582..e6f5d561b4c976d16cbbd909c20dfd6e5a1fb966 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 @@ -2,9 +2,6 @@ package com.comandante.creeper.server.command.admin; import com.comandante.creeper.CreeperEntry; import com.comandante.creeper.managers.GameManager; -import com.comandante.creeper.player.Player; -import com.comandante.creeper.world.Room; -import com.comandante.creeper.server.CreeperSession; import com.comandante.creeper.server.MultiLineInputManager; import com.comandante.creeper.server.command.Command; import com.google.common.base.Optional; @@ -27,22 +24,18 @@ public class DescriptionCommand extends Command { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { + configure(e); try { - GameManager gameManager = getGameManager(); - CreeperSession session = extractCreeperSession(e.getChannel()); - Player player = gameManager.getPlayerManager().getPlayer(extractPlayerId(session)); - if (session.getGrabMultiLineInput().isPresent()) { + if (creeperSession.getGrabMultiLineInput().isPresent()) { MultiLineInputManager multiLineInputManager = gameManager.getMultiLineInputManager(); - UUID uuid = session.getGrabMultiLineInput().get().getKey(); + UUID uuid = creeperSession.getGrabMultiLineInput().get().getKey(); String multiLineInput = multiLineInputManager.retrieveMultiLineInput(uuid); - Room playerCurrentRoom = gameManager.getRoomManager().getPlayerCurrentRoom(player).get(); - playerCurrentRoom.setRoomDescription(multiLineInput); - session.setGrabMultiLineInput(Optional.<CreeperEntry<UUID, Command>>absent()); + currentRoom.setRoomDescription(multiLineInput); + creeperSession.setGrabMultiLineInput(Optional.<CreeperEntry<UUID, Command>>absent()); return; } - final String playerId = extractPlayerId(session); - gameManager.getChannelUtils().write(playerId, "You are now in multi-line mode. Type \"done\" on an empty line to exit and save.\r\n"); - session.setGrabMultiLineInput(Optional.of( + write("You are now in multi-line mode. Type \"done\" on an empty line to exit and save.\r\n"); + creeperSession.setGrabMultiLineInput(Optional.of( new CreeperEntry<UUID, Command>(gameManager.getMultiLineInputManager().createNewMultiLineInput(), this))); } finally { super.messageReceived(ctx, e); diff --git a/src/main/java/com/comandante/creeper/server/command/admin/SaveWorldCommand.java b/src/main/java/com/comandante/creeper/server/command/admin/SaveWorldCommand.java index f2583166a2f627750d7ef5ddac0e82ec164a62c6..42324833a416f13cf39e2ad002331c9bd8e5cf1d 100644 --- a/src/main/java/com/comandante/creeper/server/command/admin/SaveWorldCommand.java +++ b/src/main/java/com/comandante/creeper/server/command/admin/SaveWorldCommand.java @@ -1,7 +1,6 @@ package com.comandante.creeper.server.command.admin; import com.comandante.creeper.managers.GameManager; -import com.comandante.creeper.world.WorldExporter; import com.comandante.creeper.server.command.Command; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.MessageEvent; @@ -22,14 +21,12 @@ public class SaveWorldCommand extends Command { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { - WorldExporter worldExporter = new WorldExporter( - getGameManager().getRoomManager(), - getGameManager().getMapsManager(), - getGameManager().getFloorManager(), - getGameManager().getEntityManager()); - - worldExporter.saveWorld(); - getGameManager().getChannelUtils().write(extractPlayerId(extractCreeperSession(e.getChannel())), "World saved."); - super.messageReceived(ctx, e); + configure(e); + try { + worldExporter.saveWorld(); + write("World saved."); + } finally { + super.messageReceived(ctx, e); + } } } 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 37a3731ec52cb8994a814b1db08893772bf968fd..11acf471742af5fbaf14c7561045baacd7b91bea 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 @@ -1,8 +1,6 @@ package com.comandante.creeper.server.command.admin; import com.comandante.creeper.managers.GameManager; -import com.comandante.creeper.player.Player; -import com.comandante.creeper.world.Room; import com.comandante.creeper.server.command.Command; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.MessageEvent; @@ -23,25 +21,22 @@ public class TagRoomCommand extends Command { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { + configure(e); try { - GameManager gameManager = getGameManager(); - Player player = gameManager.getPlayerManager().getPlayer(extractPlayerId(extractCreeperSession(e.getChannel()))); - Room playerCurrentRoom = gameManager.getRoomManager().getPlayerCurrentRoom(player).get(); - List<String> originalMessageParts = getOriginalMessageParts(e); originalMessageParts.remove(0); if (originalMessageParts.get(0).equalsIgnoreCase("list")) { StringBuilder sb = new StringBuilder(); - Iterator<String> iterator = playerCurrentRoom.getRoomTags().iterator(); + Iterator<String> iterator = currentRoom.getRoomTags().iterator(); while (iterator.hasNext()) { String tag = iterator.next(); sb.append(tag).append("\n"); } - gameManager.getChannelUtils().write(player.getPlayerId(), "tag\n---"); - gameManager.getChannelUtils().write(player.getPlayerId(), sb.toString()); + write("tag\n---"); + write(sb.toString()); return; } - playerCurrentRoom.addTag(originalMessageParts.get(0)); - gameManager.getChannelUtils().write(player.getPlayerId(), String.format("tagged world with tag: \"%s\".", originalMessageParts.get(0))); + currentRoom.addTag(originalMessageParts.get(0)); + write(String.format("tagged world with tag: \"%s\".", originalMessageParts.get(0))); } finally { super.messageReceived(ctx, e); } diff --git a/src/main/java/com/comandante/creeper/server/command/admin/TitleCommand.java b/src/main/java/com/comandante/creeper/server/command/admin/TitleCommand.java index 549aa52a7b70f537dccc91e970d3f63c27a9a8d0..e2114b842eefc7cd165c3bd2d0dd52a1334d132b 100644 --- a/src/main/java/com/comandante/creeper/server/command/admin/TitleCommand.java +++ b/src/main/java/com/comandante/creeper/server/command/admin/TitleCommand.java @@ -1,9 +1,6 @@ package com.comandante.creeper.server.command.admin; import com.comandante.creeper.managers.GameManager; -import com.comandante.creeper.player.Player; -import com.comandante.creeper.world.Room; -import com.comandante.creeper.server.CreeperSession; import com.comandante.creeper.server.command.Command; import com.google.common.base.Joiner; import org.jboss.netty.channel.ChannelHandlerContext; @@ -25,16 +22,11 @@ public class TitleCommand extends Command { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { + configure(e); try { - GameManager gameManager = getGameManager(); - List<String> originalMessageParts = getOriginalMessageParts(e); originalMessageParts.remove(0); - String join = Joiner.on(" ").join(originalMessageParts); - CreeperSession session = extractCreeperSession(e.getChannel()); - Player player = gameManager.getPlayerManager().getPlayer(extractPlayerId(session)); - Room playerCurrentRoom = gameManager.getRoomManager().getPlayerCurrentRoom(player).get(); - playerCurrentRoom.setRoomTitle(join); - gameManager.getChannelUtils().write(player.getPlayerId(), "Titled saved."); + currentRoom.setRoomTitle(Joiner.on(" ").join(originalMessageParts)); + write("Titled saved."); } finally { super.messageReceived(ctx, e); } diff --git a/src/main/java/com/comandante/creeper/world/MapsManager.java b/src/main/java/com/comandante/creeper/world/MapsManager.java index a4311b5751739a6bf1f400fdca61a5046c62116c..e028eba0ee9174f39f120be5cfe0103ea91ab3d0 100644 --- a/src/main/java/com/comandante/creeper/world/MapsManager.java +++ b/src/main/java/com/comandante/creeper/world/MapsManager.java @@ -29,10 +29,6 @@ public class MapsManager { } public String drawMap(Integer roomId, Coords max) { - System.out.println(roomId); - if (roomId.equals(67)) { - System.out.println("hi"); - } MapMatrix floorMatrix = floorMatrixMaps.get(roomManager.getRoom(roomId).getFloorId()); MapMatrix mapMatrix = floorMatrix.extractMatrix(roomId, max); return mapMatrix.renderMap(roomId, roomManager);