From 740f86c87d2f37d6f028a31009c7649f7c303223 Mon Sep 17 00:00:00 2001 From: Chris Kearney <chris@kearneymail.com> Date: Sat, 6 May 2017 22:56:47 -0700 Subject: [PATCH] fix time printing --- .../creeper/common/FriendlyTime.java | 7 ++- .../com/comandante/creeper/player/Player.java | 4 +- .../creeper/server/auth/GameAuth.java | 2 + .../GameAuthorizationAndRegistration.java | 58 +++++++++++++++++++ .../command/commands/FriendlyTimeTest.java | 2 +- 5 files changed, 69 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/comandante/creeper/server/auth/GameAuthorizationAndRegistration.java diff --git a/src/main/java/com/comandante/creeper/common/FriendlyTime.java b/src/main/java/com/comandante/creeper/common/FriendlyTime.java index 3ce40b7b..7ef02e28 100644 --- a/src/main/java/com/comandante/creeper/common/FriendlyTime.java +++ b/src/main/java/com/comandante/creeper/common/FriendlyTime.java @@ -84,8 +84,13 @@ public class FriendlyTime { if (minutes > 1) { sb.append(minutes).append("m"); } - } else { + } else if (minutes > 0) { + sb.append(minutes).append("m"); + if (seconds > 1) { sb.append(seconds).append("s"); + } + } else { + sb.append(seconds).append("s"); } return sb.toString(); } diff --git a/src/main/java/com/comandante/creeper/player/Player.java b/src/main/java/com/comandante/creeper/player/Player.java index e585f58b..9a06d63d 100644 --- a/src/main/java/com/comandante/creeper/player/Player.java +++ b/src/main/java/com/comandante/creeper/player/Player.java @@ -603,7 +603,7 @@ public class Player extends CreeperEntity { if (currentRoom == null) { Integer currentRoomId = getPlayerMetadata().getCurrentRoomId(); if (currentRoomId != null) { - return gameManager.getRoomManager().getRoom(currentRoomId); + this.currentRoom = gameManager.getRoomManager().getRoom(currentRoomId); } } return currentRoom; @@ -611,6 +611,7 @@ public class Player extends CreeperEntity { public void setCurrentRoomAndPersist(Room currentRoom) { // Persisting lazily so that performance doesn't suffer. + setCurrentRoom(currentRoom); gameManager.getEventProcessor().addEvent(() -> { synchronized (interner.intern(playerId)) { PlayerMetadata playerMetadata = getPlayerMetadata(); @@ -618,7 +619,6 @@ public class Player extends CreeperEntity { savePlayerMetadata(playerMetadata); } }); - setCurrentRoom(currentRoom); } public void setCurrentRoom(Room room) { diff --git a/src/main/java/com/comandante/creeper/server/auth/GameAuth.java b/src/main/java/com/comandante/creeper/server/auth/GameAuth.java index 834d3291..be556c9a 100644 --- a/src/main/java/com/comandante/creeper/server/auth/GameAuth.java +++ b/src/main/java/com/comandante/creeper/server/auth/GameAuth.java @@ -40,9 +40,11 @@ public class GameAuth implements CreeperAuthenticator { Player player = new Player(username, gameManager); if (currentRoom != null) { player.setCurrentRoomAndPersist(currentRoom); + currentRoom.addPresentPlayer(player.getPlayerId()); } else { currentRoom = player.getCurrentRoom(); if (currentRoom != null) { + currentRoom.addPresentPlayer(player.getPlayerId()); player.setCurrentRoom(player.getCurrentRoom()); } } diff --git a/src/main/java/com/comandante/creeper/server/auth/GameAuthorizationAndRegistration.java b/src/main/java/com/comandante/creeper/server/auth/GameAuthorizationAndRegistration.java new file mode 100644 index 00000000..f5611c93 --- /dev/null +++ b/src/main/java/com/comandante/creeper/server/auth/GameAuthorizationAndRegistration.java @@ -0,0 +1,58 @@ +package com.comandante.creeper.server.auth; + +import com.comandante.creeper.Main; +import com.comandante.creeper.core_game.GameManager; +import com.comandante.creeper.player.Player; +import com.comandante.creeper.player.PlayerMetadata; +import com.comandante.creeper.world.model.Room; +import org.jboss.netty.channel.Channel; + +import java.util.Optional; + +public class GameAuthorizationAndRegistration implements CreeperAuthenticator { + + private final GameManager gameManager; + + public GameAuthorizationAndRegistration(GameManager gameManager) { + this.gameManager = gameManager; + } + + @Override + public boolean authenticateAndRegisterPlayer(String username, String password, Channel channel) { + PlayerMetadata playerMetadata = gameManager.getPlayerManager().getPlayerMetadata(Main.createPlayerId(username)); + if (playerMetadata == null) { + return false; + } + if (!playerMetadata.getPassword().equals(password)) { + return false; + } + Room currentRoom = null; + if (gameManager.getPlayerManager().doesPlayerExist(username)) { + currentRoom = gameManager.getPlayerManager().getPlayerByUsername(username).getCurrentRoom(); + gameManager.getPlayerManager().removePlayer(username); + } else { + Optional<Room> playerCurrentRoom = gameManager.getRoomManager().getPlayerCurrentRoom(Main.createPlayerId(username)); + if (playerCurrentRoom.isPresent()) { + currentRoom = playerCurrentRoom.get(); + } + } + + Player player = new Player(username, gameManager); + if (currentRoom != null) { + player.setCurrentRoomAndPersist(currentRoom); + currentRoom.addPresentPlayer(player.getPlayerId()); + } else { + currentRoom = player.getCurrentRoom(); + if (currentRoom != null) { + currentRoom.addPresentPlayer(player.getPlayerId()); + player.setCurrentRoom(player.getCurrentRoom()); + } + } + player.setChannel(channel); + gameManager.getPlayerManager().addPlayer(player); + if (currentRoom == null) { + gameManager.placePlayerInLobby(player); + } + return true; + } +} diff --git a/src/test/com/comandante/creeper/command/commands/FriendlyTimeTest.java b/src/test/com/comandante/creeper/command/commands/FriendlyTimeTest.java index 5f2b8567..7ab0aab6 100644 --- a/src/test/com/comandante/creeper/command/commands/FriendlyTimeTest.java +++ b/src/test/com/comandante/creeper/command/commands/FriendlyTimeTest.java @@ -9,7 +9,7 @@ public class FriendlyTimeTest { @Test public void testFriendlyParsing() throws Exception { - FriendlyTime friendlyTime = new FriendlyTime(30949); + FriendlyTime friendlyTime = new FriendlyTime(400); System.out.println("Friendly Long: " + friendlyTime.getFriendlyFormatted()); -- GitLab