mirror of
https://github.com/simon987/Much-Assembly-Required.git
synced 2025-04-16 01:06:43 +00:00
Added Hologram Projector Hardware. Added GET_WORLD_POS in LiDAR. Fixed Drill.
This commit is contained in:
parent
1a6f92a29d
commit
8c5dcd0fba
@ -1,6 +1,9 @@
|
|||||||
package net.simon987.cubotplugin;
|
package net.simon987.cubotplugin;
|
||||||
|
|
||||||
import net.simon987.server.game.*;
|
import net.simon987.server.game.ControllableUnit;
|
||||||
|
import net.simon987.server.game.Direction;
|
||||||
|
import net.simon987.server.game.GameObject;
|
||||||
|
import net.simon987.server.game.Updatable;
|
||||||
import net.simon987.server.user.User;
|
import net.simon987.server.user.User;
|
||||||
import org.json.simple.JSONObject;
|
import org.json.simple.JSONObject;
|
||||||
|
|
||||||
@ -11,7 +14,8 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit {
|
|||||||
private static final char MAP_INFO = 0x0080;
|
private static final char MAP_INFO = 0x0080;
|
||||||
public static final int ID = 1;
|
public static final int ID = 1;
|
||||||
|
|
||||||
private EffectType currentEmote = null;
|
private char hologram = 0;
|
||||||
|
private char lastHologram = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hit points
|
* Hit points
|
||||||
@ -45,11 +49,6 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (currentEmote != null) {
|
|
||||||
// getWorld().getQueuedGameEffects().add(new GameEffect(currentEmote, getX(), getY()));
|
|
||||||
currentEmote = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* CurrentAction is set during the code execution and this function is called right after
|
* CurrentAction is set during the code execution and this function is called right after
|
||||||
* If no action as been set, the action sent to the client is the action in currentAction that
|
* If no action as been set, the action sent to the client is the action in currentAction that
|
||||||
@ -57,6 +56,10 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit {
|
|||||||
*/
|
*/
|
||||||
lastAction = currentAction;
|
lastAction = currentAction;
|
||||||
currentAction = CubotAction.IDLE;
|
currentAction = CubotAction.IDLE;
|
||||||
|
|
||||||
|
//Same principle for hologram
|
||||||
|
lastHologram = hologram;
|
||||||
|
hologram = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -70,6 +73,8 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit {
|
|||||||
json.put("heldItem", heldItem);
|
json.put("heldItem", heldItem);
|
||||||
json.put("hp", hp);
|
json.put("hp", hp);
|
||||||
json.put("action", lastAction.ordinal());
|
json.put("action", lastAction.ordinal());
|
||||||
|
json.put("holo", (int) lastHologram);
|
||||||
|
|
||||||
if (parent != null) {
|
if (parent != null) {
|
||||||
json.put("parent", parent.getUsername()); //Only used client-side for now
|
json.put("parent", parent.getUsername()); //Only used client-side for now
|
||||||
}
|
}
|
||||||
@ -128,4 +133,12 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit {
|
|||||||
public CubotAction getAction() {
|
public CubotAction getAction() {
|
||||||
return lastAction;
|
return lastAction;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setHologram(char hologram) {
|
||||||
|
this.hologram = hologram;
|
||||||
|
}
|
||||||
|
|
||||||
|
public char getHologram() {
|
||||||
|
return lastHologram;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,7 @@ public class CubotDrill extends CpuHardware {
|
|||||||
|
|
||||||
} else if (a == GATHER_SLOW || a == GATHER_FAST) {
|
} else if (a == GATHER_SLOW || a == GATHER_FAST) {
|
||||||
|
|
||||||
if (cubot.getAction() != CubotAction.IDLE) {
|
if (cubot.getAction() == CubotAction.IDLE) {
|
||||||
int tile = cubot.getWorld().getTileMap().getTileAt(cubot.getX(), cubot.getY());
|
int tile = cubot.getWorld().getTileMap().getTileAt(cubot.getX(), cubot.getY());
|
||||||
|
|
||||||
if (tile == TileMap.IRON_TILE) {
|
if (tile == TileMap.IRON_TILE) {
|
||||||
|
49
Plugin Cubot/src/net/simon987/cubotplugin/CubotHologram.java
Normal file
49
Plugin Cubot/src/net/simon987/cubotplugin/CubotHologram.java
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
package net.simon987.cubotplugin;
|
||||||
|
|
||||||
|
import net.simon987.server.GameServer;
|
||||||
|
import net.simon987.server.assembly.CpuHardware;
|
||||||
|
import net.simon987.server.assembly.Status;
|
||||||
|
import org.json.simple.JSONObject;
|
||||||
|
|
||||||
|
public class CubotHologram extends CpuHardware {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hardware ID (Should be unique)
|
||||||
|
*/
|
||||||
|
static final char HWID = 0x0009;
|
||||||
|
|
||||||
|
public static final int DEFAULT_ADDRESS = 9;
|
||||||
|
|
||||||
|
private Cubot cubot;
|
||||||
|
|
||||||
|
public CubotHologram(Cubot cubot) {
|
||||||
|
this.cubot = cubot;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleInterrupt(Status status) {
|
||||||
|
|
||||||
|
char a = getCpu().getRegisterSet().getRegister("A").getValue();
|
||||||
|
cubot.setHologram(a);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public char getId() {
|
||||||
|
return HWID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static CubotHologram deserialize(JSONObject hwJSON) {
|
||||||
|
return new CubotHologram((Cubot) GameServer.INSTANCE.getGameUniverse().getObject((int) (long) hwJSON.get("cubot")));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JSONObject serialise() {
|
||||||
|
JSONObject json = new JSONObject();
|
||||||
|
json.put("hwid", (int) HWID);
|
||||||
|
json.put("cubot", cubot.getObjectId());
|
||||||
|
|
||||||
|
return json;
|
||||||
|
}
|
||||||
|
}
|
@ -26,6 +26,7 @@ public class CubotLidar extends CpuHardware implements JSONSerialisable {
|
|||||||
private static final int GET_POS = 1;
|
private static final int GET_POS = 1;
|
||||||
private static final int GET_PATH = 2;
|
private static final int GET_PATH = 2;
|
||||||
private static final int GET_MAP = 3;
|
private static final int GET_MAP = 3;
|
||||||
|
private static final int GET_WORLD_POS = 4;
|
||||||
|
|
||||||
private static final int MEMORY_MAP_START = 0x0100;
|
private static final int MEMORY_MAP_START = 0x0100;
|
||||||
private static final int MEMORY_PATH_START = 0x0000;
|
private static final int MEMORY_PATH_START = 0x0000;
|
||||||
@ -120,6 +121,12 @@ public class CubotLidar extends CpuHardware implements JSONSerialisable {
|
|||||||
getCpu().getMemory().set(i++, mapInfo[x][y]);
|
getCpu().getMemory().set(i++, mapInfo[x][y]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
case GET_WORLD_POS:
|
||||||
|
getCpu().getRegisterSet().getRegister("X").setValue(cubot.getWorld().getX());
|
||||||
|
getCpu().getRegisterSet().getRegister("Y").setValue(cubot.getWorld().getY());
|
||||||
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -51,6 +51,8 @@ public class CubotPlugin extends ServerPlugin implements GameObjectDeserializer,
|
|||||||
return CubotInventory.deserialize(hwJson);
|
return CubotInventory.deserialize(hwJson);
|
||||||
case Keyboard.HWID:
|
case Keyboard.HWID:
|
||||||
return Keyboard.deserialize(hwJson);
|
return Keyboard.deserialize(hwJson);
|
||||||
|
case CubotHologram.HWID:
|
||||||
|
return CubotHologram.deserialize(hwJson);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
@ -33,6 +33,8 @@ public class CpuInitialisationListener implements GameEventListener {
|
|||||||
drillHw.setCpu(cpu);
|
drillHw.setCpu(cpu);
|
||||||
CubotInventory invHw = new CubotInventory((Cubot) user.getControlledUnit());
|
CubotInventory invHw = new CubotInventory((Cubot) user.getControlledUnit());
|
||||||
invHw.setCpu(cpu);
|
invHw.setCpu(cpu);
|
||||||
|
CubotHologram emoteHw = new CubotHologram((Cubot) user.getControlledUnit());
|
||||||
|
emoteHw.setCpu(cpu);
|
||||||
|
|
||||||
cpu.attachHardware(legHw, CubotLeg.DEFAULT_ADDRESS);
|
cpu.attachHardware(legHw, CubotLeg.DEFAULT_ADDRESS);
|
||||||
cpu.attachHardware(laserHw, CubotLaser.DEFAULT_ADDRESS);
|
cpu.attachHardware(laserHw, CubotLaser.DEFAULT_ADDRESS);
|
||||||
@ -40,5 +42,7 @@ public class CpuInitialisationListener implements GameEventListener {
|
|||||||
cpu.attachHardware(keyboard, Keyboard.DEFAULT_ADDRESS);
|
cpu.attachHardware(keyboard, Keyboard.DEFAULT_ADDRESS);
|
||||||
cpu.attachHardware(drillHw, CubotDrill.DEFAULT_ADDRESS);
|
cpu.attachHardware(drillHw, CubotDrill.DEFAULT_ADDRESS);
|
||||||
cpu.attachHardware(invHw, CubotInventory.DEFAULT_ADDRESS);
|
cpu.attachHardware(invHw, CubotInventory.DEFAULT_ADDRESS);
|
||||||
|
cpu.attachHardware(invHw, CubotInventory.DEFAULT_ADDRESS);
|
||||||
|
cpu.attachHardware(emoteHw, CubotHologram.DEFAULT_ADDRESS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,55 +11,6 @@ public class Main {
|
|||||||
public static void main(String[] args){
|
public static void main(String[] args){
|
||||||
|
|
||||||
|
|
||||||
//TODO: Docs
|
|
||||||
/*
|
|
||||||
* - Intel 8086 p.14 design
|
|
||||||
* - Memory: Storage organisation: From a storage pov, 8086 memory spaces are
|
|
||||||
* organised as identical arrays of 16-bit words
|
|
||||||
* - Microprocessor
|
|
||||||
* - Instruction set
|
|
||||||
* -
|
|
||||||
*/
|
|
||||||
//TODO: Random number generator
|
|
||||||
//TODO: Clock hardware
|
|
||||||
//TODO: Floppy drive hardware (and item?)
|
|
||||||
//TODO: LEA instruction
|
|
||||||
//TODO: NOT instruction
|
|
||||||
//TODO: Battery Hardware
|
|
||||||
|
|
||||||
//---------------------------------
|
|
||||||
|
|
||||||
//TODO: favicon
|
|
||||||
//TODO: Email verification
|
|
||||||
//TODO: Real account page
|
|
||||||
// Change/reset password
|
|
||||||
//TODO: Object information Window (Hover, click ?)
|
|
||||||
//TODO: Inventory indicator (Multiple items)
|
|
||||||
//TODO: Software Interrupts (PIC): Interupt flag?
|
|
||||||
/*
|
|
||||||
* - INT/INTO instruction
|
|
||||||
* - IRET instruction
|
|
||||||
*/
|
|
||||||
//TODO: XCHG instruction
|
|
||||||
//TODO: SAL/SAR instruction
|
|
||||||
//TODO: ROL/ROR/RCL/RCR instruction
|
|
||||||
//TODO: LOOP/LOOPE/LOOPX/LOOPNE/LOOPNZ ?
|
|
||||||
//TODO: World goto (form)
|
|
||||||
//TODO: Save backup (keep X saves, Zip em)
|
|
||||||
//TODO: Log backup (keep X backups, Zip em)
|
|
||||||
//TODO: More tests
|
|
||||||
//TODO: Handle client disconnects
|
|
||||||
//TODO: Cache objects requests?
|
|
||||||
//TODO: Ability to toggle debug stuff
|
|
||||||
//TODO: Data segment, DB, DW, DD, DQ
|
|
||||||
//TODO: Set client animation speed relative to TICK_LENGTH
|
|
||||||
//TODO: Withdraw animation / action
|
|
||||||
//TODO: Prevent World creation out of bounds, warp around universe
|
|
||||||
//TODO: Multiple Biomass style (and yield, rarity)
|
|
||||||
//TODO: Clean sprites
|
|
||||||
//TODO: Auto-resize
|
|
||||||
|
|
||||||
|
|
||||||
LogManager.initialize();
|
LogManager.initialize();
|
||||||
ServerConfiguration config = new ServerConfiguration(new File("config.properties"));
|
ServerConfiguration config = new ServerConfiguration(new File("config.properties"));
|
||||||
|
|
||||||
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user