TurtleSlot is now guaranteed to be in range
This commit is contained in:
parent
815ccdaab9
commit
638d1acbe0
@ -119,23 +119,17 @@ class Turtle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static function selectSlot(slot:TurtleSlot):Outcome<Noise, Noise> {
|
public static function selectSlot(slot:TurtleSlot):Outcome<Noise, Noise> {
|
||||||
// TODO: slot in bounds?
|
var r = cc.Turtle.select(slot.toCCSlot());
|
||||||
|
|
||||||
var r = cc.Turtle.select(slot + 1);
|
|
||||||
|
|
||||||
return (r) ? Outcome.Success(null) : Outcome.Failure("Slot out of bounds");
|
return (r) ? Outcome.Success(null) : Outcome.Failure("Slot out of bounds");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getItemCount(?slot:TurtleSlot):Int {
|
public static function getItemCount(?slot:TurtleSlot):Int {
|
||||||
// TODO: slot in bounds?
|
return cc.Turtle.getItemCount(slot.toCCSlot());
|
||||||
|
|
||||||
return cc.Turtle.getItemCount(slot + 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getItemSpace(?slot:TurtleSlot):Int {
|
public static function getItemSpace(?slot:TurtleSlot):Int {
|
||||||
// TODO: slot in bounds?
|
return cc.Turtle.getItemSpace(slot.toCCSlot());
|
||||||
|
|
||||||
return cc.Turtle.getItemSpace(slot + 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function detect(dir:InteractDirections):Bool {
|
public static function detect(dir:InteractDirections):Bool {
|
||||||
@ -208,12 +202,12 @@ class Turtle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static function compareSlot(otherSlot:TurtleSlot):Bool {
|
public static function compareSlot(otherSlot:TurtleSlot):Bool {
|
||||||
return cc.Turtle.compareTo(otherSlot + 1);
|
return cc.Turtle.compareTo(otherSlot.toCCSlot());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function transfer(from:TurtleSlot, to:TurtleSlot, ?count:Int):Outcome<Noise, Noise> {
|
public static function transfer(from:TurtleSlot, to:TurtleSlot, ?count:Int):Outcome<Noise, Noise> {
|
||||||
selectSlot(from);
|
selectSlot(from);
|
||||||
var r = cc.Turtle.transferTo(to + 1, count);
|
var r = cc.Turtle.transferTo(to.toCCSlot(), count);
|
||||||
return r ? Outcome.Success(null) : Outcome.Failure(null);
|
return r ? Outcome.Success(null) : Outcome.Failure(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -258,7 +252,7 @@ class Turtle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static function getItemDetail(slot:TurtleSlot, ?detailed:Bool = false):Option<ItemInspect> {
|
public static function getItemDetail(slot:TurtleSlot, ?detailed:Bool = false):Option<ItemInspect> {
|
||||||
var r = cc.Turtle.getItemDetail(slot + 1); // FIXME: can take detailed as flag. Has to be fixed upstream
|
var r = cc.Turtle.getItemDetail(slot.toCCSlot()); // FIXME: can take detailed as flag. Has to be fixed upstream
|
||||||
|
|
||||||
if (r == null) {
|
if (r == null) {
|
||||||
return None;
|
return None;
|
||||||
|
26
src/kernel/turtle/TurtleSlot.hx
Normal file
26
src/kernel/turtle/TurtleSlot.hx
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
package kernel.turtle;
|
||||||
|
|
||||||
|
using tink.CoreApi;
|
||||||
|
|
||||||
|
/**
|
||||||
|
The slot nummber for turtle inventory. 0 based. Assured to be in range.
|
||||||
|
**/
|
||||||
|
abstract TurtleSlot(Int) to Int {
|
||||||
|
public function new(i:Int) {
|
||||||
|
if (i >= 0 && i < Turtle.MAX_SLOTS) {
|
||||||
|
this = i;
|
||||||
|
} else {
|
||||||
|
throw new Error("Slot not in range: " + i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@:from
|
||||||
|
public static function fromInt(i:Int) {
|
||||||
|
return new TurtleSlot(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
@:allow(kernel.turtle)
|
||||||
|
private inline function toCCSlot():Int {
|
||||||
|
return this + 1;
|
||||||
|
}
|
||||||
|
}
|
@ -22,8 +22,3 @@ typedef ItemInspect = {
|
|||||||
public var damage:Int;
|
public var damage:Int;
|
||||||
public var count:Int;
|
public var count:Int;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
The slot nummber for turtle inventory. 0 based.
|
|
||||||
**/
|
|
||||||
typedef TurtleSlot = Int;
|
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
package lib.turtle;
|
package lib.turtle;
|
||||||
|
|
||||||
import kernel.turtle.Types.ToolSide;
|
import kernel.turtle.Types.ToolSide;
|
||||||
import lua.Result;
|
|
||||||
import kernel.peripherals.Side;
|
|
||||||
import kernel.log.Log;
|
import kernel.log.Log;
|
||||||
import kernel.turtle.Types.TurtleSlot;
|
import kernel.turtle.TurtleSlot;
|
||||||
import kernel.turtle.Types.InteractDirections;
|
import kernel.turtle.Types.InteractDirections;
|
||||||
import kernel.turtle.Turtle;
|
import kernel.turtle.Turtle;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user