From 972b47e1f6a9bdaceff7556631ff5d2938785a59 Mon Sep 17 00:00:00 2001 From: kearney <chris.kearney@urbanairship.com> Date: Tue, 19 Aug 2014 17:08:55 -0700 Subject: [PATCH] stuff --- pom.xml | 5 ++++ .../command/DefaultCommandHandler.java | 2 ++ .../creeper/command/DefaultCommandType.java | 3 ++- .../creeper/managers/GameManager.java | 26 +++++++++++++++++++ .../creeper/managers/PlayerManager.java | 4 +++ .../server/CreeperSimpleAuthenticator.java | 5 +--- 6 files changed, 40 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 8dfe950a..413a0d18 100644 --- a/pom.xml +++ b/pom.xml @@ -28,6 +28,11 @@ <artifactId>jansi</artifactId> <version>1.9</version> </dependency> + <dependency> + <groupId>org.mapdb</groupId> + <artifactId>mapdb</artifactId> + <version>1.0.6</version> + </dependency> </dependencies> <build> diff --git a/src/main/java/com/comandante/creeper/command/DefaultCommandHandler.java b/src/main/java/com/comandante/creeper/command/DefaultCommandHandler.java index 582e6a43..7c45299f 100644 --- a/src/main/java/com/comandante/creeper/command/DefaultCommandHandler.java +++ b/src/main/java/com/comandante/creeper/command/DefaultCommandHandler.java @@ -46,6 +46,8 @@ public class DefaultCommandHandler { case GOSSIP: gameManager.gossip(player, originalMessage.replaceFirst("^gossip ", "")); break; + case WHO: + gameManager.who(player); case UNKNOWN: gameManager.currentRoomLogic(creeperSession, event); break; diff --git a/src/main/java/com/comandante/creeper/command/DefaultCommandType.java b/src/main/java/com/comandante/creeper/command/DefaultCommandType.java index 5c2d6758..0c97f248 100644 --- a/src/main/java/com/comandante/creeper/command/DefaultCommandType.java +++ b/src/main/java/com/comandante/creeper/command/DefaultCommandType.java @@ -12,7 +12,8 @@ public enum DefaultCommandType implements CommandType { MOVE_WEST(new HashSet<String>(Arrays.asList("w", "West")), false, "Move west."), SAY(new HashSet<String>(Arrays.asList("say")), true, "Say something to the current room."), GOSSIP(new HashSet<String>(Arrays.asList("gossip")), true, "Gossip to the entire server."), - UNKNOWN(new HashSet<String>(Arrays.asList("gossip")), true, "Gossip to the entire server."); + WHO(new HashSet<String>(Arrays.asList("who")), true, "List who is logged into the server."), + UNKNOWN(new HashSet<String>(Arrays.asList("")), true, ""); private Set<String> validCommandTriggers; private boolean caseSensitive; diff --git a/src/main/java/com/comandante/creeper/managers/GameManager.java b/src/main/java/com/comandante/creeper/managers/GameManager.java index d365d828..f597b9b9 100644 --- a/src/main/java/com/comandante/creeper/managers/GameManager.java +++ b/src/main/java/com/comandante/creeper/managers/GameManager.java @@ -70,6 +70,32 @@ public class GameManager { return ImmutableSet.copyOf(players); } + public void who(Player player) { + Set<Player> allPlayers = getAllPlayers(); + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append(new Ansi().fg(Ansi.Color.CYAN).toString()); + stringBuilder.append("User\r\n----\r\n"); + for (Player allPlayer: allPlayers) { + stringBuilder.append(allPlayer.getPlayerName()).append("\r\n"); + } + stringBuilder.append(new Ansi().reset().toString()); + player.getChannel().write(stringBuilder.toString() + "\r\n"); + } + + public Set<Player> getAllPlayers() { + ImmutableSet.Builder<Player> builder = ImmutableSet.builder(); + Iterator<Map.Entry<Integer, Room>> rooms = roomManager.getRooms(); + while (rooms.hasNext()) { + Map.Entry<Integer, Room> next = rooms.next(); + Room room = next.getValue(); + Set<Player> presentPlayers = getPresentPlayers(room); + for (Player player: presentPlayers) { + builder.add(player); + } + } + return builder.build(); + } + public void movePlayer(Movement movement) { synchronized (Interners.newStrongInterner()) { Room sourceRoom = roomManager.getRoom(movement.getSourceRoomId()); diff --git a/src/main/java/com/comandante/creeper/managers/PlayerManager.java b/src/main/java/com/comandante/creeper/managers/PlayerManager.java index 759ecbb3..ea5a3d7c 100644 --- a/src/main/java/com/comandante/creeper/managers/PlayerManager.java +++ b/src/main/java/com/comandante/creeper/managers/PlayerManager.java @@ -3,6 +3,8 @@ package com.comandante.creeper.managers; import com.comandante.creeper.model.Player; import org.apache.commons.codec.binary.Base64; +import org.mapdb.DBMaker; +import org.mapdb.HTreeMap; import java.util.Iterator; import java.util.concurrent.ConcurrentHashMap; @@ -16,6 +18,8 @@ public class PlayerManager { } public Player getPlayerByUsername(String username) { + HTreeMap<String, Player> objectObjectHTreeMap = DBMaker.newTempHashMap(); + return getPlayer(new String(Base64.encodeBase64(username.getBytes()))); } diff --git a/src/main/java/com/comandante/creeper/server/CreeperSimpleAuthenticator.java b/src/main/java/com/comandante/creeper/server/CreeperSimpleAuthenticator.java index 454707a9..42412013 100644 --- a/src/main/java/com/comandante/creeper/server/CreeperSimpleAuthenticator.java +++ b/src/main/java/com/comandante/creeper/server/CreeperSimpleAuthenticator.java @@ -20,10 +20,7 @@ public class CreeperSimpleAuthenticator implements CreeperAuthenticator { userMap = new HashMap<String, String>(); userMap.put("chris", "poop"); userMap.put("brian", "poop"); - userMap.put("test1", "poop"); - userMap.put("test2", "poop"); - userMap.put("test3", "poop"); - userMap.put("test4", "poop"); + userMap.put("sean", "poop"); } @Override -- GitLab