diff --git a/src/main/java/com/comandante/creeper/Main.java b/src/main/java/com/comandante/creeper/Main.java index 75bf9dea467e200002b4362c20ac9b0051665fbf..f7ad94ebe9e98f181346d8f877aee721a849a9ac 100644 --- a/src/main/java/com/comandante/creeper/Main.java +++ b/src/main/java/com/comandante/creeper/Main.java @@ -99,7 +99,7 @@ public class Main { MapsManager mapsManager = new MapsManager(creeperConfiguration, roomManager); ChannelUtils channelUtils = new ChannelUtils(playerManager, roomManager); EntityManager entityManager = new EntityManager(mapDBCreeperStorage, roomManager, playerManager); - GameManager gameManager = new GameManager(creeperConfiguration, roomManager, playerManager, entityManager, mapsManager, channelUtils, HttpClients.createDefault()); + GameManager gameManager = new GameManager(mapDBCreeperStorage, creeperConfiguration, roomManager, playerManager, entityManager, mapsManager, channelUtils, HttpClients.createDefault()); startUpMessage("Reading world from disk."); WorldStorage worldExporter = new WorldStorage(roomManager, mapsManager, gameManager.getFloorManager(), entityManager, gameManager); diff --git a/src/main/java/com/comandante/creeper/command/commands/admin/RestartCommand.java b/src/main/java/com/comandante/creeper/command/commands/admin/RestartCommand.java index 3d7bc959c8ff679b0aec27725f5ff7bae1f9db36..6743b3d0d123ea5fa647087166e84f2b393f05da 100644 --- a/src/main/java/com/comandante/creeper/command/commands/admin/RestartCommand.java +++ b/src/main/java/com/comandante/creeper/command/commands/admin/RestartCommand.java @@ -1,6 +1,5 @@ package com.comandante.creeper.command.commands.admin; -import com.comandante.creeper.Main; import com.comandante.creeper.command.commands.Command; import com.comandante.creeper.core_game.GameManager; import com.comandante.creeper.player.PlayerRole; @@ -8,15 +7,10 @@ import com.google.common.collect.Sets; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.MessageEvent; -import java.io.File; -import java.lang.management.ManagementFactory; import java.util.Arrays; import java.util.List; import java.util.Set; -/** - * Created by chrisk on 5/13/17. - */ public class RestartCommand extends Command { @@ -33,17 +27,8 @@ public class RestartCommand extends Command { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { execCommandThreadSafe(ctx, e, BounceIrcBotCommand.class, () -> { - StringBuilder cmd = new StringBuilder(); - cmd.append(System.getProperty("java.home") + File.separator + "bin" + File.separator + "java "); - for (String jvmArg : ManagementFactory.getRuntimeMXBean().getInputArguments()) { - cmd.append(jvmArg + " "); - } - cmd.append("-cp ").append(ManagementFactory.getRuntimeMXBean().getClassPath()).append(" "); - cmd.append(Main.class.getName()).append(" "); -// for (String arg : args) { -// cmd.append(arg).append(" "); -// } - Runtime.getRuntime().exec(cmd.toString() + " server.config"); + gameManager.getMapDBCreeperStorage().stopAsync(); + gameManager.getMapDBCreeperStorage().awaitTerminated(); System.exit(0); }); } diff --git a/src/main/java/com/comandante/creeper/core_game/GameManager.java b/src/main/java/com/comandante/creeper/core_game/GameManager.java index 6fb4ea6bb4c6f1e300f468ecd356f45d161309ab..0e3c3b34d0b9070df1ec17a287d69a1c4c8da1a2 100644 --- a/src/main/java/com/comandante/creeper/core_game/GameManager.java +++ b/src/main/java/com/comandante/creeper/core_game/GameManager.java @@ -26,10 +26,7 @@ import com.comandante.creeper.stats.Levels; import com.comandante.creeper.stats.Stats; import com.comandante.creeper.stats.StatsBuilder; import com.comandante.creeper.stats.modifier.StatsModifierFactory; -import com.comandante.creeper.storage.FilebasedJsonStorage; -import com.comandante.creeper.storage.ItemStorage; -import com.comandante.creeper.storage.MerchantStorage; -import com.comandante.creeper.storage.NpcStorage; +import com.comandante.creeper.storage.*; import com.comandante.creeper.world.FloorManager; import com.comandante.creeper.world.MapsManager; import com.comandante.creeper.world.RoomManager; @@ -92,6 +89,7 @@ public class GameManager { private final HttpClient httpclient; private final Gson gson; private final FilebasedJsonStorage filebasedJsonStorage; + private final MapDBCreeperStorage mapDBCreeperStorage; public MerchantStorage getMerchantStorage() { return merchantStorage; @@ -100,7 +98,8 @@ public class GameManager { private final MerchantStorage merchantStorage; - public GameManager(CreeperConfiguration creeperConfiguration, RoomManager roomManager, PlayerManager playerManager, EntityManager entityManager, MapsManager mapsManager, ChannelCommunicationUtils channelUtils, HttpClient httpClient) { + public GameManager(MapDBCreeperStorage mapDBCreeperStorage, CreeperConfiguration creeperConfiguration, RoomManager roomManager, PlayerManager playerManager, EntityManager entityManager, MapsManager mapsManager, ChannelCommunicationUtils channelUtils, HttpClient httpClient) { + this.mapDBCreeperStorage = mapDBCreeperStorage; this.roomManager = roomManager; this.playerManager = playerManager; this.entityManager = entityManager; @@ -135,6 +134,10 @@ public class GameManager { this.httpclient = httpClient; } + public MapDBCreeperStorage getMapDBCreeperStorage() { + return mapDBCreeperStorage; + } + public Gson getGson() { return gson; } diff --git a/src/main/java/com/comandante/creeper/core_game/service/TimeTracker.java b/src/main/java/com/comandante/creeper/core_game/service/TimeTracker.java index 66b9601c5ab3681e8752026e5079971b2cb4d8ea..95f4dc82de558c66dad76662597cbfda697ca8ae 100644 --- a/src/main/java/com/comandante/creeper/core_game/service/TimeTracker.java +++ b/src/main/java/com/comandante/creeper/core_game/service/TimeTracker.java @@ -23,11 +23,11 @@ public class TimeTracker extends CreeperEntity { @Override public void run() { - TimeOfDay timeOfDay = determineTimeOfDay(); - if (timeOfDay != currentTimeOfDay) { - announceChange(timeOfDay); - } - currentTimeOfDay = timeOfDay; + TimeOfDay timeOfDay = determineTimeOfDay(); + if (timeOfDay != currentTimeOfDay) { + announceChange(timeOfDay); + } + currentTimeOfDay = timeOfDay; } private void announceChange(TimeOfDay timeOfDay) { diff --git a/src/test/com/comandante/creeper/player/combat_simuation/NpcTestHarness.java b/src/test/com/comandante/creeper/player/combat_simuation/NpcTestHarness.java index 4d0df8fa76c2bdc8bef229e14e4a3d39fcb5007f..ae2ec5ae805da2baf37eba7180e3f92718d1e7ff 100644 --- a/src/test/com/comandante/creeper/player/combat_simuation/NpcTestHarness.java +++ b/src/test/com/comandante/creeper/player/combat_simuation/NpcTestHarness.java @@ -307,7 +307,7 @@ public class NpcTestHarness { RoomManager roomManager = new RoomManager(playerManager); MapsManager mapsManager = new MapsManager(creeperConfiguration, roomManager); EntityManager entityManager = new EntityManager(mapDBCreeperStorage, roomManager, playerManager); - GameManager gameManager = new GameManager(creeperConfiguration, roomManager, playerManager, entityManager, mapsManager, channelUtils, HttpClients.createDefault()); + GameManager gameManager = new GameManager(null, creeperConfiguration, roomManager, playerManager, entityManager, mapsManager, channelUtils, HttpClients.createDefault()); WorldStorage worldExporter = new WorldStorage(roomManager, mapsManager, gameManager.getFloorManager(), entityManager, gameManager); worldExporter.buildTestworld(); ConfigureCommands.configure(gameManager);