mirror of
https://github.com/simon987/Much-Assembly-Required.git
synced 2025-04-20 02:56:44 +00:00
Added many debug commands
This commit is contained in:
parent
95a14ad1ab
commit
6a1519d97d
@ -6,7 +6,6 @@ import com.mongodb.DBObject;
|
|||||||
import net.simon987.server.GameServer;
|
import net.simon987.server.GameServer;
|
||||||
import net.simon987.server.game.GameObject;
|
import net.simon987.server.game.GameObject;
|
||||||
import net.simon987.server.game.Updatable;
|
import net.simon987.server.game.Updatable;
|
||||||
import org.json.simple.JSONArray;
|
|
||||||
import org.json.simple.JSONObject;
|
import org.json.simple.JSONObject;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
@ -112,14 +111,6 @@ public class Factory extends GameObject implements Updatable {
|
|||||||
json.put("y", getY());
|
json.put("y", getY());
|
||||||
json.put("t", ID);
|
json.put("t", ID);
|
||||||
|
|
||||||
JSONArray tmpNpcArray = new JSONArray();
|
|
||||||
|
|
||||||
for (NonPlayerCharacter npc : npcs) {
|
|
||||||
tmpNpcArray.add(npc.getObjectId());
|
|
||||||
}
|
|
||||||
|
|
||||||
json.put("n", tmpNpcArray);
|
|
||||||
|
|
||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,8 +1,19 @@
|
|||||||
package net.simon987.server.webserver;
|
package net.simon987.server.webserver;
|
||||||
|
|
||||||
|
import com.mongodb.DBObject;
|
||||||
|
import com.mongodb.util.JSON;
|
||||||
|
import net.simon987.server.GameServer;
|
||||||
|
import net.simon987.server.game.ControllableUnit;
|
||||||
|
import net.simon987.server.game.GameObject;
|
||||||
|
import net.simon987.server.game.World;
|
||||||
import net.simon987.server.logging.LogManager;
|
import net.simon987.server.logging.LogManager;
|
||||||
|
import net.simon987.server.user.User;
|
||||||
import org.json.simple.JSONObject;
|
import org.json.simple.JSONObject;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
public class DebugHandler implements MessageHandler {
|
public class DebugHandler implements MessageHandler {
|
||||||
@Override
|
@Override
|
||||||
public void handle(OnlineUser user, JSONObject json) {
|
public void handle(OnlineUser user, JSONObject json) {
|
||||||
@ -16,15 +27,65 @@ public class DebugHandler implements MessageHandler {
|
|||||||
if (json.containsKey("command")) {
|
if (json.containsKey("command")) {
|
||||||
|
|
||||||
JSONObject response = new JSONObject();
|
JSONObject response = new JSONObject();
|
||||||
|
response.put("t", "debug");
|
||||||
|
|
||||||
switch (command) {
|
switch (command) {
|
||||||
|
|
||||||
case "":
|
case "setTileAt":
|
||||||
|
|
||||||
|
response.put("message", setTileAt(
|
||||||
|
(int) (long) json.get("x"),
|
||||||
|
(int) (long) json.get("y"),
|
||||||
|
(int) (long) json.get("newTile"),
|
||||||
|
(int) (long) json.get("worldX"),
|
||||||
|
(int) (long) json.get("worldY")));
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "createWorld":
|
||||||
|
response.put("message", createWorld(
|
||||||
|
(int) (long) json.get("worldX"),
|
||||||
|
(int) (long) json.get("worldY")));
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
case "killAll":
|
||||||
|
response.put("message", killAll(
|
||||||
|
(int) (long) json.get("x"),
|
||||||
|
(int) (long) json.get("y"),
|
||||||
|
(int) (long) json.get("worldX"),
|
||||||
|
(int) (long) json.get("worldY")));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "objInfo":
|
||||||
|
response.put("message", objInfo(
|
||||||
|
(int) (long) json.get("x"),
|
||||||
|
(int) (long) json.get("y"),
|
||||||
|
(int) (long) json.get("worldX"),
|
||||||
|
(int) (long) json.get("worldY")));
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "userInfo":
|
||||||
|
response.put("message", userInfo((String) json.get("username")));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "moveObj":
|
||||||
|
response.put("message", moveObj(
|
||||||
|
(long) json.get("objectId"),
|
||||||
|
(int) (long) json.get("x"),
|
||||||
|
(int) (long) json.get("y")));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "spawnObj":
|
||||||
|
response.put("message", spawnObj(
|
||||||
|
(int) (long) json.get("worldX"),
|
||||||
|
(int) (long) json.get("worldY"),
|
||||||
|
(String) json.get("data")));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
LogManager.LOGGER.severe("Unknown command: " + command);
|
LogManager.LOGGER.severe("Unknown command: " + command);
|
||||||
response.put("t", "debug");
|
|
||||||
response.put("message", "Unknown command " + command);
|
response.put("message", "Unknown command " + command);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -34,4 +95,147 @@ public class DebugHandler implements MessageHandler {
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a world at coordinates
|
||||||
|
*/
|
||||||
|
private String createWorld(int worldX, int worldY) {
|
||||||
|
|
||||||
|
World world = GameServer.INSTANCE.getGameUniverse().getWorld(worldX, worldY, true);
|
||||||
|
|
||||||
|
if (world != null) {
|
||||||
|
|
||||||
|
return "Success";
|
||||||
|
|
||||||
|
} else {
|
||||||
|
return "Couldn't create world";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Change the tile at coordinate
|
||||||
|
*/
|
||||||
|
private String setTileAt(int x, int y, int newTile, int worldX, int worldY) {
|
||||||
|
World world = GameServer.INSTANCE.getGameUniverse().getWorld(worldX, worldY, false);
|
||||||
|
|
||||||
|
if (world != null) {
|
||||||
|
|
||||||
|
world.getTileMap().setTileAt(newTile, x, y);
|
||||||
|
return "Success";
|
||||||
|
|
||||||
|
} else {
|
||||||
|
return "Error: World is uncharted";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String spawnObj(int worldX, int worldY, String data) {
|
||||||
|
|
||||||
|
World world = GameServer.INSTANCE.getGameUniverse().getWorld(worldX, worldY, false);
|
||||||
|
|
||||||
|
try {
|
||||||
|
DBObject dbObj = (DBObject) JSON.parse(data);
|
||||||
|
dbObj.put("i", GameServer.INSTANCE.getGameUniverse().getNextObjectId());
|
||||||
|
|
||||||
|
GameObject object = GameObject.deserialize(dbObj);
|
||||||
|
|
||||||
|
if (object != null) {
|
||||||
|
world.addObject(object);
|
||||||
|
|
||||||
|
return "Created object " + object.getObjectId();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
return "Couldn't deserialise the object";
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
return Arrays.toString(e.getStackTrace()).replaceAll(", ", "\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private String killAll(int x, int y, int worldX, int worldY) {
|
||||||
|
|
||||||
|
World world = GameServer.INSTANCE.getGameUniverse().getWorld(worldX, worldY, false);
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
ArrayList<GameObject> objs = world.getGameObjectsAt(x, y);
|
||||||
|
|
||||||
|
for (GameObject o : objs) {
|
||||||
|
o.setDead(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
return "Killed " + objs.size() + " objects";
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
|
||||||
|
return Arrays.toString(e.getStackTrace()).replaceAll(", ", "\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String objInfo(int x, int y, int worldX, int worldY) {
|
||||||
|
|
||||||
|
World world = GameServer.INSTANCE.getGameUniverse().getWorld(worldX, worldY, false);
|
||||||
|
try {
|
||||||
|
|
||||||
|
Collection<GameObject> objs = world.getGameObjects();
|
||||||
|
String str = objs.size() + "\n";
|
||||||
|
|
||||||
|
for (GameObject obj : objs) {
|
||||||
|
|
||||||
|
if (obj.isAt(x, y) || (obj.getX() == x && obj.getY() == y)) {
|
||||||
|
str += "Mongo:" + obj.mongoSerialise() + "\n";
|
||||||
|
str += "JSON :" + obj.serialise().toJSONString() + "\n\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return str;
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
|
||||||
|
return Arrays.toString(e.getStackTrace()).replaceAll(", ", "\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String moveObj(long objectId, int x, int y) {
|
||||||
|
|
||||||
|
GameObject object = GameServer.INSTANCE.getGameUniverse().getObject(objectId);
|
||||||
|
|
||||||
|
if (object != null) {
|
||||||
|
|
||||||
|
object.setX(x);
|
||||||
|
object.setY(y);
|
||||||
|
|
||||||
|
return "Sucess";
|
||||||
|
} else {
|
||||||
|
return "Object not found: " + objectId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String userInfo(String username) {
|
||||||
|
|
||||||
|
User user = GameServer.INSTANCE.getGameUniverse().getUser(username);
|
||||||
|
|
||||||
|
if (user != null) {
|
||||||
|
|
||||||
|
String str = "Showing information for user " + username + "\n";
|
||||||
|
|
||||||
|
str += "isGuest: " + user.isGuest() + "\n";
|
||||||
|
|
||||||
|
ControllableUnit unit = user.getControlledUnit();
|
||||||
|
str += "ControlledUnit: " + unit.getObjectId() + " at (" + unit.getX() + ", " + unit.getY() + ")\n";
|
||||||
|
|
||||||
|
str += "CPU:" + user.getCpu() + "\n";
|
||||||
|
str += "Code: " + user.getUserCode();
|
||||||
|
|
||||||
|
return str;
|
||||||
|
|
||||||
|
|
||||||
|
} else {
|
||||||
|
return "User not found";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user