This commit is contained in:
Woosle Park
2019-03-25 22:39:21 -04:00
parent c50cc8c364
commit 5b019b3e63
11 changed files with 248 additions and 1 deletions

View File

@@ -11,6 +11,8 @@ import net.simon987.server.game.item.Item;
import net.simon987.server.game.item.ItemVoid;
import net.simon987.server.game.objects.*;
import net.simon987.server.user.User;
import net.simon987.server.event.GameEvent;
import net.simon987.cubotplugin.event.*;
import org.bson.Document;
import org.json.simple.JSONObject;
@@ -22,6 +24,14 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit, Me
private static final char MAP_INFO = 0x0200;
/**
* Walk Distance
*/
private int walkDistance;
/**
* Death Count
*/
private int deathCount;
/**
* Hit points
*/
@@ -126,6 +136,8 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit, Me
hp = document.getInteger("hp");
shield = document.getInteger("shield");
deathCount = 0;
walkDistance = 0;
setDirection(Direction.getDirection(document.getInteger("direction")));
IServerConfiguration config = GameServer.INSTANCE.getConfig();
@@ -164,6 +176,9 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit, Me
//Couldn't walk
currentAction = Action.IDLE;
}
walkDistance++;
GameEvent event = new WalkDistanceEvent(this,walkDistance);
GameServer.INSTANCE.getEventDispatcher().dispatch(event);
} else {
currentAction = Action.IDLE;
}
@@ -263,6 +278,7 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit, Me
lastConsoleMessagesBuffer.clear();
currentStatus = 0;
lastStatus = 0;
walkDistance = 0;
addStatus(CubotStatus.FACTORY_NEW);
for (HardwareModule module : hardwareAddresses.values()) {
@@ -272,6 +288,10 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit, Me
@Override
public boolean onDeadCallback() {
deathCount++;
GameEvent event = new DeathCountEvent(this,deathCount);
GameServer.INSTANCE.getEventDispatcher().dispatch(event);
reset();
//Teleport to spawn point

View File

@@ -0,0 +1,29 @@
package net.simon987.cubotplugin.event;
import net.simon987.server.event.GameEvent;
import net.simon987.server.game.objects.GameObject;
public class DeathCountEvent extends GameEvent {
public DeathCountEvent(){
}
public DeathCountEvent(GameObject object, int c) {
setSource(object);
if(c>=0){
object.setCounter(c);
}else{
object.setCounter(0);
}
}
@Override
public GameObject getSource() {
return (GameObject) super.getSource();
}
public int getCounter() {
return (int) getSource().getCounter();
}
}

View File

@@ -0,0 +1,27 @@
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 {
@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) {
LogManager.LOGGER.info(((ControllableUnit) object).getParent().getUsername() + " Death Count " +
Integer.toString(object.getCounter()));
((ControllableUnit) object).getParent().getStats().setInt("deathCount",
DeathCountEvent.getCounter());
}
}
}

View File

@@ -0,0 +1,29 @@
package net.simon987.cubotplugin.event;
import net.simon987.server.event.GameEvent;
import net.simon987.server.game.objects.GameObject;
public class TotalExecutionTimeEvent extends GameEvent {
public TotalExecutionTimeEvent(){
}
public TotalExecutionTimeEvent(GameObject object, double c) {
setSource(object);
if(c>=0){
object.setTime(c);
}else{
object.setTime(0);
}
}
@Override
public GameObject getSource() {
return (GameObject) super.getSource();
}
public double getTime() {
return (int) getSource().getTime();
}
}

View File

@@ -0,0 +1,27 @@
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 TotalExecutionTimeListener implements GameEventListener {
@Override
public Class getListenedEventType() {
return TotalExecutionTimeEvent.class;
}
@Override
public void handle(GameEvent event) {
TotalExecutionTimeEvent TotalExecutionTimeEvent = (TotalExecutionTimeEvent) event;
GameObject object = TotalExecutionTimeEvent.getSource();
if (object instanceof ControllableUnit) {
LogManager.LOGGER.info(((ControllableUnit) object).getParent().getUsername() + " Death Count " +
Double.toString(object.getTime()));
((ControllableUnit) object).getParent().getStats().setDouble("totalExecutionTime",
TotalExecutionTimeEvent.getTime());
}
}
}

View File

@@ -0,0 +1,31 @@
package net.simon987.cubotplugin.event;
import net.simon987.server.event.GameEvent;
import net.simon987.server.game.objects.GameObject;
public class WalkDistanceEvent extends GameEvent {
private int count;
public WalkDistanceEvent(){
}
public WalkDistanceEvent(GameObject object, int c) {
setSource(object);
if(c>=0){
object.setCounter(c);
}else{
object.setCounter(0);
}
}
@Override
public GameObject getSource() {
return (GameObject) super.getSource();
}
public int getCounter() {
return (int) getSource().getCounter();
}
}

View File

@@ -0,0 +1,27 @@
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 WalkDistanceListener implements GameEventListener {
@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) {
LogManager.LOGGER.info(((ControllableUnit) object).getParent().getUsername() + " Death Count " +
Integer.toString(object.getCounter()));
((ControllableUnit) object).getParent().getStats().setInt("walkDistance",
WalkDistanceEvent.getCounter());
}
}
}