mirror of
https://github.com/simon987/Much-Assembly-Required.git
synced 2025-04-19 02:36:41 +00:00
Time function added
This commit is contained in:
parent
89f53a159a
commit
ba549c6012
@ -103,16 +103,6 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit, Me
|
||||
private Map<Integer, HardwareModule> hardwareAddresses = new HashMap<>();
|
||||
private Map<Class<? extends HardwareModule>, 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();
|
||||
|
@ -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();
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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();
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -58,7 +58,7 @@ public class UserStatsHelper {
|
||||
ArrayList<Map.Entry<User, Map<String, Integer>>> rows = new ArrayList<>();
|
||||
|
||||
ArrayList<Map.Entry<User, ArrayList>> vaults = new ArrayList<>(this.getTopNSetLength("completedVaults", n));
|
||||
ArrayList<Map.Entry<User, Integer>> deaths = new ArrayList<>(this.getTopN("deathCount", n));
|
||||
ArrayList<Map.Entry<User, Integer>> deaths = new ArrayList<>(this.getTopN("death", n));
|
||||
ArrayList<Map.Entry<User, Integer>> time = new ArrayList<>(this.getTopN("executionTime", n));
|
||||
ArrayList<Map.Entry<User, Integer>> distance = new ArrayList<>(this.getTopN("walkDistance", n));
|
||||
|
||||
@ -66,7 +66,7 @@ public class UserStatsHelper {
|
||||
User user = vaults.get(i).getKey();
|
||||
Map<String, Integer> 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));
|
||||
|
@ -26,7 +26,7 @@
|
||||
<tr>
|
||||
<td>$row.getKey().getUsername()</td>
|
||||
<td>$row.getValue().get("completedVaults")</td>
|
||||
<td>$row.getValue().get("deathCount")</td>
|
||||
<td>$row.getValue().get("death")</td>
|
||||
<td>$row.getValue().get("executionTime")</td>
|
||||
<td>$row.getValue().get("walkDistance")</td>
|
||||
</tr>
|
||||
|
Loading…
x
Reference in New Issue
Block a user