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;
|
||||
|
||||
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 org.json.simple.JSONObject;
|
||||
|
||||
@ -11,7 +14,8 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit {
|
||||
private static final char MAP_INFO = 0x0080;
|
||||
public static final int ID = 1;
|
||||
|
||||
private EffectType currentEmote = null;
|
||||
private char hologram = 0;
|
||||
private char lastHologram = 0;
|
||||
|
||||
/**
|
||||
* 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
|
||||
* 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;
|
||||
currentAction = CubotAction.IDLE;
|
||||
|
||||
//Same principle for hologram
|
||||
lastHologram = hologram;
|
||||
hologram = 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -70,6 +73,8 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit {
|
||||
json.put("heldItem", heldItem);
|
||||
json.put("hp", hp);
|
||||
json.put("action", lastAction.ordinal());
|
||||
json.put("holo", (int) lastHologram);
|
||||
|
||||
if (parent != null) {
|
||||
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() {
|
||||
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) {
|
||||
|
||||
if (cubot.getAction() != CubotAction.IDLE) {
|
||||
if (cubot.getAction() == CubotAction.IDLE) {
|
||||
int tile = cubot.getWorld().getTileMap().getTileAt(cubot.getX(), cubot.getY());
|
||||
|
||||
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_PATH = 2;
|
||||
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_PATH_START = 0x0000;
|
||||
@ -120,6 +121,12 @@ public class CubotLidar extends CpuHardware implements JSONSerialisable {
|
||||
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);
|
||||
case Keyboard.HWID:
|
||||
return Keyboard.deserialize(hwJson);
|
||||
case CubotHologram.HWID:
|
||||
return CubotHologram.deserialize(hwJson);
|
||||
}
|
||||
|
||||
return null;
|
||||
|
@ -33,6 +33,8 @@ public class CpuInitialisationListener implements GameEventListener {
|
||||
drillHw.setCpu(cpu);
|
||||
CubotInventory invHw = new CubotInventory((Cubot) user.getControlledUnit());
|
||||
invHw.setCpu(cpu);
|
||||
CubotHologram emoteHw = new CubotHologram((Cubot) user.getControlledUnit());
|
||||
emoteHw.setCpu(cpu);
|
||||
|
||||
cpu.attachHardware(legHw, CubotLeg.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(drillHw, CubotDrill.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){
|
||||
|
||||
|
||||
//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();
|
||||
ServerConfiguration config = new ServerConfiguration(new File("config.properties"));
|
||||
|
||||
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user