From ba549c601219d1cbca012135db2a0e578bdf69de Mon Sep 17 00:00:00 2001 From: Woosle Park Date: Thu, 11 Apr 2019 01:59:11 -0400 Subject: [PATCH] Time function added --- .../java/net/simon987/cubotplugin/Cubot.java | 25 +----------- .../net/simon987/cubotplugin/CubotPlugin.java | 5 +-- .../cubotplugin/event/DeathCountListener.java | 32 --------------- .../{DeathCountEvent.java => DeathEvent.java} | 4 +- .../cubotplugin/event/DeathListener.java | 25 ++++++++++++ .../cubotplugin/event/ExecutionTimeEvent.java | 23 ----------- .../event/ExecutionTimeListener.java | 33 ---------------- .../cubotplugin/event/RealLifeTimer.java | 39 ------------------- .../event/WalkDistanceListener.java | 39 ------------------- ...{WalkDistanceEvent.java => WalkEvent.java} | 4 +- .../cubotplugin/event/WalkListener.java | 26 +++++++++++++ .../java/net/simon987/server/GameServer.java | 2 + .../java/net/simon987/server/user/User.java | 4 ++ .../simon987/server/user/UserStatsHelper.java | 4 +- .../main/resources/templates/leaderboard.vm | 2 +- 15 files changed, 68 insertions(+), 199 deletions(-) delete mode 100644 Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/DeathCountListener.java rename Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/{DeathCountEvent.java => DeathEvent.java} (71%) create mode 100644 Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/DeathListener.java delete mode 100644 Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/ExecutionTimeEvent.java delete mode 100644 Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/ExecutionTimeListener.java delete mode 100644 Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/RealLifeTimer.java delete mode 100644 Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/WalkDistanceListener.java rename Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/{WalkDistanceEvent.java => WalkEvent.java} (70%) create mode 100644 Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/WalkListener.java diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Cubot.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Cubot.java index cbf80ef..311a019 100644 --- a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Cubot.java +++ b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Cubot.java @@ -103,16 +103,6 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit, Me private Map hardwareAddresses = new HashMap<>(); private Map, Integer> hardwareModules = new HashMap<>(); - /** - * In game timer - */ - private int time; - - /** - * Real Life Timer for getting execution time - */ - private RealLifeTimer timer; - /** * Cubot's brain box */ @@ -140,10 +130,6 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit, Me shield = document.getInteger("shield"); setDirection(Direction.getDirection(document.getInteger("direction"))); - timer = new RealLifeTimer(); - timer.run(); - time = timer.getTime(); - IServerConfiguration config = GameServer.INSTANCE.getConfig(); maxHp = config.getInt("cubot_max_hp"); maxShield = config.getInt("cubot_max_shield"); @@ -173,12 +159,6 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit, Me */ @Override public void update() { - int executionTime = timer.getTime(); - if(executionTime > time && currentAction != Action.IDLE){ - GameEvent event1 = new ExecutionTimeEvent(this, executionTime - time); - GameServer.INSTANCE.getEventDispatcher().dispatch(event1); - } - time = executionTime; if (currentAction == Action.WALKING) { if (spendEnergy(100)) { @@ -186,7 +166,7 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit, Me //Couldn't walk currentAction = Action.IDLE; }else{ - GameEvent event2 = new WalkDistanceEvent(this); + GameEvent event2 = new WalkEvent(this); GameServer.INSTANCE.getEventDispatcher().dispatch(event2); } } else { @@ -289,7 +269,6 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit, Me currentStatus = 0; lastStatus = 0; addStatus(CubotStatus.FACTORY_NEW); - time = timer.getTime(); for (HardwareModule module : hardwareAddresses.values()) { module.reset(); @@ -298,7 +277,7 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit, Me @Override public boolean onDeadCallback() { - GameEvent event = new DeathCountEvent(this); + GameEvent event = new DeathEvent(this); GameServer.INSTANCE.getEventDispatcher().dispatch(event); reset(); diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotPlugin.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotPlugin.java index ce6a8b9..5f1d7b2 100644 --- a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotPlugin.java +++ b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotPlugin.java @@ -19,9 +19,8 @@ public class CubotPlugin extends ServerPlugin { listeners.add(new PutItemCommandListener()); listeners.add(new PopItemCommandListener()); //Leaderboard - listeners.add(new DeathCountListener()); - listeners.add(new ExecutionTimeListener()); - listeners.add(new WalkDistanceListener()); + listeners.add(new DeathListener()); + listeners.add(new WalkListener()); GameRegistry registry = gameServer.getRegistry(); diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/DeathCountListener.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/DeathCountListener.java deleted file mode 100644 index b34d3f0..0000000 --- a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/DeathCountListener.java +++ /dev/null @@ -1,32 +0,0 @@ -package net.simon987.cubotplugin.event; - -import net.simon987.server.event.GameEvent; -import net.simon987.server.event.GameEventListener; -import net.simon987.server.game.objects.ControllableUnit; -import net.simon987.server.game.objects.GameObject; -import net.simon987.server.logging.LogManager; - -public class DeathCountListener implements GameEventListener { - - private int count = 0; - - @Override - public Class getListenedEventType() { - return DeathCountEvent.class; - } - - @Override - public void handle(GameEvent event) { - DeathCountEvent DeathCountEvent = (DeathCountEvent) event; - GameObject object = DeathCountEvent.getSource(); - if (object instanceof ControllableUnit) { - count = ((ControllableUnit) object).getParent().getStats().getInt("deathCount"); - count++; - LogManager.LOGGER.info(((ControllableUnit) object).getParent().getUsername() + " Death Count " + - Integer.toString(count)); - - ((ControllableUnit) object).getParent().getStats().setInt("deathCount", - count); - } - } -} \ No newline at end of file diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/DeathCountEvent.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/DeathEvent.java similarity index 71% rename from Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/DeathCountEvent.java rename to Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/DeathEvent.java index 91982d1..9d25837 100644 --- a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/DeathCountEvent.java +++ b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/DeathEvent.java @@ -3,9 +3,9 @@ package net.simon987.cubotplugin.event; import net.simon987.server.event.GameEvent; import net.simon987.server.game.objects.GameObject; -public class DeathCountEvent extends GameEvent { +public class DeathEvent extends GameEvent { - public DeathCountEvent(GameObject object) { + public DeathEvent(GameObject object) { setSource(object); } diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/DeathListener.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/DeathListener.java new file mode 100644 index 0000000..35cdd1d --- /dev/null +++ b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/DeathListener.java @@ -0,0 +1,25 @@ +package net.simon987.cubotplugin.event; + +import net.simon987.server.event.GameEvent; +import net.simon987.server.event.GameEventListener; +import net.simon987.server.game.objects.ControllableUnit; +import net.simon987.server.game.objects.GameObject; +import net.simon987.server.logging.LogManager; + +public class DeathListener implements GameEventListener { + + @Override + public Class getListenedEventType() { + return DeathEvent.class; + } + + @Override + public void handle(GameEvent event) { + DeathEvent DeathEvent = (DeathEvent) event; + GameObject object = DeathEvent.getSource(); + if (object instanceof ControllableUnit) { + ((ControllableUnit) object).getParent().getStats().incrementStat("death", + 1); + } + } +} \ No newline at end of file diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/ExecutionTimeEvent.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/ExecutionTimeEvent.java deleted file mode 100644 index 5125db8..0000000 --- a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/ExecutionTimeEvent.java +++ /dev/null @@ -1,23 +0,0 @@ -package net.simon987.cubotplugin.event; - -import net.simon987.server.event.GameEvent; -import net.simon987.server.game.objects.GameObject; - -public class ExecutionTimeEvent extends GameEvent { - - private int Time = 0; - - public ExecutionTimeEvent(GameObject object, int time) { - setSource(object); - this.Time = time; - } - - public int getTime(){ - return this.Time; - } - - @Override - public GameObject getSource() { - return (GameObject) super.getSource(); - } -} \ No newline at end of file diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/ExecutionTimeListener.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/ExecutionTimeListener.java deleted file mode 100644 index 99d7694..0000000 --- a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/ExecutionTimeListener.java +++ /dev/null @@ -1,33 +0,0 @@ -package net.simon987.cubotplugin.event; - -import net.simon987.server.event.GameEvent; -import net.simon987.server.event.GameEventListener; -import net.simon987.server.game.objects.ControllableUnit; -import net.simon987.server.game.objects.GameObject; -import net.simon987.server.logging.LogManager; - -public class ExecutionTimeListener implements GameEventListener { - - private int count = 0; - - @Override - public Class getListenedEventType() { - return ExecutionTimeEvent.class; - } - - @Override - public void handle(GameEvent event) { - ExecutionTimeEvent executionTimeEvent = (ExecutionTimeEvent) event; - GameObject object = executionTimeEvent.getSource(); - if (object instanceof ControllableUnit) { - count = ((ControllableUnit) object).getParent().getStats().getInt("executionTime"); - count += executionTimeEvent.getTime(); - - LogManager.LOGGER.info(((ControllableUnit) object).getParent().getUsername() + " Execution Time " + - count); - - ((ControllableUnit) object).getParent().getStats().setInt("executionTime", - count); - } - } -} \ No newline at end of file diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/RealLifeTimer.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/RealLifeTimer.java deleted file mode 100644 index 8c238c0..0000000 --- a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/RealLifeTimer.java +++ /dev/null @@ -1,39 +0,0 @@ -package net.simon987.cubotplugin.event; - -import java.util.Timer; -import java.util.TimerTask; - -public class RealLifeTimer{ - - private int time; - - private Timer timer; - - public RealLifeTimer(){ - timer = new Timer(); - time = 0; - } - - public RealLifeTimer(int startTime){ - timer = new Timer(); - time = startTime; - } - - public void run(){ - - timer.scheduleAtFixedRate(new TimerTask() { - public void run(){ - time++; - } - },0,1); - } - - public void stop(){ - timer.cancel(); - timer.purge(); - } - - public int getTime(){ - return this.time; - } -} \ No newline at end of file diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/WalkDistanceListener.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/WalkDistanceListener.java deleted file mode 100644 index da44006..0000000 --- a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/WalkDistanceListener.java +++ /dev/null @@ -1,39 +0,0 @@ -package net.simon987.cubotplugin.event; - -import net.simon987.server.event.GameEvent; -import net.simon987.server.event.GameEventListener; -import net.simon987.server.game.objects.ControllableUnit; -import net.simon987.server.game.objects.GameObject; -import net.simon987.server.logging.LogManager; -import net.simon987.server.user.UserStats; - -public class WalkDistanceListener implements GameEventListener { - - private int count = 0; - private int deaths = 0; - - @Override - public Class getListenedEventType() { - return WalkDistanceEvent.class; - } - - @Override - public void handle(GameEvent event) { - WalkDistanceEvent WalkDistanceEvent = (WalkDistanceEvent) event; - GameObject object = WalkDistanceEvent.getSource(); - if (object instanceof ControllableUnit) { - //When cubot dies walk counter resets - if(deaths<((ControllableUnit) object).getParent().getStats().getInt("deathCount")){ - count = 0; - deaths = ((ControllableUnit) object).getParent().getStats().getInt("deathCount"); - } - count++; - LogManager.LOGGER.info(((ControllableUnit) object).getParent().getUsername() + " walk distance " + - count); - //Walk distance is only saved if higher than current hightest distance for user - if(count>((ControllableUnit) object).getParent().getStats().getInt("walkDistance")) - ((ControllableUnit) object).getParent().getStats().setInt("walkDistance", - count); - } - } -} \ No newline at end of file diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/WalkDistanceEvent.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/WalkEvent.java similarity index 70% rename from Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/WalkDistanceEvent.java rename to Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/WalkEvent.java index 28b689c..f95c7e1 100644 --- a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/WalkDistanceEvent.java +++ b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/WalkEvent.java @@ -3,9 +3,9 @@ package net.simon987.cubotplugin.event; import net.simon987.server.event.GameEvent; import net.simon987.server.game.objects.GameObject; -public class WalkDistanceEvent extends GameEvent { +public class WalkEvent extends GameEvent { - public WalkDistanceEvent(GameObject object) { + public WalkEvent(GameObject object) { setSource(object); } diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/WalkListener.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/WalkListener.java new file mode 100644 index 0000000..9ffdc9a --- /dev/null +++ b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/WalkListener.java @@ -0,0 +1,26 @@ +package net.simon987.cubotplugin.event; + +import net.simon987.server.event.GameEvent; +import net.simon987.server.event.GameEventListener; +import net.simon987.server.game.objects.ControllableUnit; +import net.simon987.server.game.objects.GameObject; +import net.simon987.server.logging.LogManager; +import net.simon987.server.user.UserStats; + +public class WalkListener implements GameEventListener { + + @Override + public Class getListenedEventType() { + return WalkEvent.class; + } + + @Override + public void handle(GameEvent event) { + WalkEvent WalkEvent = (WalkEvent) event; + GameObject object = WalkEvent.getSource(); + if (object instanceof ControllableUnit) { + ((ControllableUnit) object).getParent().getStats().incrementStat("walkDistance", + 1); + } + } +} \ No newline at end of file diff --git a/Server/src/main/java/net/simon987/server/GameServer.java b/Server/src/main/java/net/simon987/server/GameServer.java index e7faa8e..426760b 100644 --- a/Server/src/main/java/net/simon987/server/GameServer.java +++ b/Server/src/main/java/net/simon987/server/GameServer.java @@ -176,6 +176,8 @@ public class GameServer implements Runnable { user.getControlledUnit().getCpu().reset(); int cost = user.getControlledUnit().getCpu().execute(timeout); user.getControlledUnit().spendEnergy(cost); + user.addTime(cost); + } catch (Exception e) { LogManager.LOGGER.severe("Error executing " + user.getUsername() + "'s code"); e.printStackTrace(); diff --git a/Server/src/main/java/net/simon987/server/user/User.java b/Server/src/main/java/net/simon987/server/user/User.java index 69f9dcc..10e4b79 100755 --- a/Server/src/main/java/net/simon987/server/user/User.java +++ b/Server/src/main/java/net/simon987/server/user/User.java @@ -70,6 +70,10 @@ public class User implements MongoSerializable { return user; } + public void addTime(int time){ + this.stats.incrementStat("executionTime", time); + } + public String getUserCode() { return userCode; } diff --git a/Server/src/main/java/net/simon987/server/user/UserStatsHelper.java b/Server/src/main/java/net/simon987/server/user/UserStatsHelper.java index a462842..ede4ba9 100644 --- a/Server/src/main/java/net/simon987/server/user/UserStatsHelper.java +++ b/Server/src/main/java/net/simon987/server/user/UserStatsHelper.java @@ -58,7 +58,7 @@ public class UserStatsHelper { ArrayList>> rows = new ArrayList<>(); ArrayList> vaults = new ArrayList<>(this.getTopNSetLength("completedVaults", n)); - ArrayList> deaths = new ArrayList<>(this.getTopN("deathCount", n)); + ArrayList> deaths = new ArrayList<>(this.getTopN("death", n)); ArrayList> time = new ArrayList<>(this.getTopN("executionTime", n)); ArrayList> distance = new ArrayList<>(this.getTopN("walkDistance", n)); @@ -66,7 +66,7 @@ public class UserStatsHelper { User user = vaults.get(i).getKey(); Map allStats = new HashMap(); allStats.put("completedVaults", vaults.get(i).getValue().size()); - allStats.put("deathCount", deaths.get(i).getValue()); + allStats.put("death", deaths.get(i).getValue()); allStats.put("executionTime", time.get(i).getValue()); allStats.put("walkDistance", distance.get(i).getValue()); rows.add(new AbstractMap.SimpleEntry<>(user, allStats)); diff --git a/Server/src/main/resources/templates/leaderboard.vm b/Server/src/main/resources/templates/leaderboard.vm index 998475e..e17059c 100644 --- a/Server/src/main/resources/templates/leaderboard.vm +++ b/Server/src/main/resources/templates/leaderboard.vm @@ -26,7 +26,7 @@ $row.getKey().getUsername() $row.getValue().get("completedVaults") - $row.getValue().get("deathCount") + $row.getValue().get("death") $row.getValue().get("executionTime") $row.getValue().get("walkDistance")