added type to IPerph
This commit is contained in:
parent
f124525d2d
commit
4dcc060e9a
@ -39,6 +39,10 @@ class Drive implements IPeripheral {
|
|||||||
return this.addr;
|
return this.addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getType():String {
|
||||||
|
return TYPE_NAME;
|
||||||
|
}
|
||||||
|
|
||||||
public inline function isDiskPresent(): Bool {
|
public inline function isDiskPresent(): Bool {
|
||||||
return this.native.isDiskPresent();
|
return this.native.isDiskPresent();
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
package kernel.peripherals;
|
package kernel.peripherals;
|
||||||
|
|
||||||
class EnergyStorage implements IPeripheral{
|
import lib.exporter.ExportConfig;
|
||||||
|
import lib.exporter.IExportable;
|
||||||
|
|
||||||
|
class EnergyStorage implements IPeripheral implements IExportable{
|
||||||
public static inline final TYPE_NAME:String = "energyCell";
|
public static inline final TYPE_NAME:String = "energyCell";
|
||||||
|
|
||||||
private final addr:String;
|
private final addr:String;
|
||||||
@ -22,4 +25,17 @@ class EnergyStorage implements IPeripheral{
|
|||||||
public function getAddr():String {
|
public function getAddr():String {
|
||||||
return this.addr;
|
return this.addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getType():String {
|
||||||
|
return TYPE_NAME;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function export():ExportConfig {
|
||||||
|
return {
|
||||||
|
getDelegates: [
|
||||||
|
"energy" => _ -> Number(this.getEnergy()),
|
||||||
|
"capacity" => _ -> Number(this.getEnergyCapacity()),
|
||||||
|
],
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,4 +2,5 @@ package kernel.peripherals;
|
|||||||
|
|
||||||
interface IPeripheral {
|
interface IPeripheral {
|
||||||
public function getAddr(): String;
|
public function getAddr(): String;
|
||||||
|
public function getType(): String;
|
||||||
}
|
}
|
||||||
|
@ -74,6 +74,10 @@ class Modem implements INetworkInterface implements IPeripheral {
|
|||||||
return this.addr;
|
return this.addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getType():String {
|
||||||
|
return TYPE_NAME;
|
||||||
|
}
|
||||||
|
|
||||||
public function getBaseRoutingCost():Int {
|
public function getBaseRoutingCost():Int {
|
||||||
if (this.native.isWireless()){
|
if (this.native.isWireless()){
|
||||||
return 2; // Prefere messages over cable
|
return 2; // Prefere messages over cable
|
||||||
|
@ -72,6 +72,31 @@ class Peripheral {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Cast peripheral to a specific type.
|
||||||
|
This is a temporary solution, maybe forever.
|
||||||
|
**/
|
||||||
|
public function getFromType(addr: String, type: String): Null<IPeripheral> {
|
||||||
|
switch (type){
|
||||||
|
case Computer.TYPE_NAME:
|
||||||
|
return getComputer(addr);
|
||||||
|
case Screen.TYPE_NAME:
|
||||||
|
return getScreen(addr);
|
||||||
|
case Drive.TYPE_NAME:
|
||||||
|
return getDrive(addr);
|
||||||
|
case EnergyStorage.TYPE_NAME:
|
||||||
|
return getEnergyStorage(addr);
|
||||||
|
case Modem.TYPE_NAME:
|
||||||
|
return getModem(addr);
|
||||||
|
case Printer.TYPE_NAME:
|
||||||
|
return getPrinter(addr);
|
||||||
|
case "redstone":
|
||||||
|
return getRedstone(addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public function getScreen(addr: String): Null<Screen> {
|
public function getScreen(addr: String): Null<Screen> {
|
||||||
var addr = safeGetAddr(addr, Screen.TYPE_NAME);
|
var addr = safeGetAddr(addr, Screen.TYPE_NAME);
|
||||||
if (addr == null) return null;
|
if (addr == null) return null;
|
||||||
@ -127,4 +152,14 @@ class Peripheral {
|
|||||||
public function getAllEnergyStorages(): Array<EnergyStorage> {
|
public function getAllEnergyStorages(): Array<EnergyStorage> {
|
||||||
return [ for (addr in findAddrByType(EnergyStorage.TYPE_NAME)) new EnergyStorage(addr)];
|
return [ for (addr in findAddrByType(EnergyStorage.TYPE_NAME)) new EnergyStorage(addr)];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getComputer(addr: String): Null<Computer> {
|
||||||
|
var addr = safeGetAddr(addr, Computer.TYPE_NAME);
|
||||||
|
if (addr == null) return null;
|
||||||
|
return new Computer(addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAllComputers(): Array<Computer> {
|
||||||
|
return [ for (addr in findAddrByType(Computer.TYPE_NAME)) new Computer(addr)];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,10 @@ class Printer implements IPeripheral {
|
|||||||
return addr;
|
return addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getType():String {
|
||||||
|
return TYPE_NAME;
|
||||||
|
}
|
||||||
|
|
||||||
public function write(text: String){
|
public function write(text: String){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -44,6 +44,7 @@ abstract BundleMask(Int) from cc.Colors.Color to cc.Colors.Color {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class Redstone implements IPeripheral implements IExportable {
|
class Redstone implements IPeripheral implements IExportable {
|
||||||
|
public static inline final TYPE_NAME:String = "redstone"; // TODO: there is technically not a type for redstone.
|
||||||
|
|
||||||
public final onChange:Signal<Noise>;
|
public final onChange:Signal<Noise>;
|
||||||
|
|
||||||
@ -74,6 +75,10 @@ class Redstone implements IPeripheral implements IExportable {
|
|||||||
return this.addr;
|
return this.addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getType():String {
|
||||||
|
return TYPE_NAME;
|
||||||
|
}
|
||||||
|
|
||||||
private function updateState() {
|
private function updateState() {
|
||||||
this.analogInputState = cc.Redstone.getAnalogInput(this.addr);
|
this.analogInputState = cc.Redstone.getAnalogInput(this.addr);
|
||||||
this.bundleInputState = cc.Redstone.getBundledInput(this.addr);
|
this.bundleInputState = cc.Redstone.getBundledInput(this.addr);
|
||||||
@ -125,7 +130,6 @@ class Redstone implements IPeripheral implements IExportable {
|
|||||||
|
|
||||||
public function export():ExportConfig {
|
public function export():ExportConfig {
|
||||||
return {
|
return {
|
||||||
type: "redstone",
|
|
||||||
getDelegates: [
|
getDelegates: [
|
||||||
"input" => (_) -> {return Bool(this.getInput());},
|
"input" => (_) -> {return Bool(this.getInput());},
|
||||||
"analog" => (_) -> {return Number(this.getAnalogInput());}
|
"analog" => (_) -> {return Number(this.getAnalogInput());}
|
||||||
|
@ -39,6 +39,10 @@ class Screen implements TermWriteable implements IPeripheral {
|
|||||||
return this.addr;
|
return this.addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getType():String {
|
||||||
|
return TYPE_NAME;
|
||||||
|
}
|
||||||
|
|
||||||
public function getTextScale():Float {
|
public function getTextScale():Float {
|
||||||
return nativ.getTextScale();
|
return nativ.getTextScale();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user