make turtle slot 0 based in kernel

This commit is contained in:
Djeeberjr 2022-04-12 01:02:04 +02:00
parent 8339c69ecc
commit 96c6595846

View File

@ -6,6 +6,7 @@ using tink.CoreApi;
class Turtle { class Turtle {
public static var instance:Turtle; public static var instance:Turtle;
public static var MAX_SLOTS(default, null):Int = 15;
@:allow(kernel.Init) @:allow(kernel.Init)
private function new() { private function new() {
@ -109,7 +110,7 @@ class Turtle {
public function selectSlot(slot:TurtleSlot):Outcome<Noise, Noise> { public function selectSlot(slot:TurtleSlot):Outcome<Noise, Noise> {
// TODO: slot in bounds? // TODO: slot in bounds?
var r = cc.Turtle.select(slot); 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");
} }
@ -117,13 +118,13 @@ class Turtle {
public function getItemCount(?slot:TurtleSlot):Int { public function getItemCount(?slot:TurtleSlot):Int {
// TODO: slot in bounds? // TODO: slot in bounds?
return cc.Turtle.getItemCount(slot); return cc.Turtle.getItemCount(slot + 1);
} }
public function getItemSpace(?slot:TurtleSlot):Int { public function getItemSpace(?slot:TurtleSlot):Int {
// TODO: slot in bounds? // TODO: slot in bounds?
return cc.Turtle.getItemSpace(slot); return cc.Turtle.getItemSpace(slot + 1);
} }
public function detect(dir:InteractDirections):Bool { public function detect(dir:InteractDirections):Bool {
@ -196,16 +197,16 @@ class Turtle {
} }
public function compareSlot(otherSlot:TurtleSlot):Bool { public function compareSlot(otherSlot:TurtleSlot):Bool {
return cc.Turtle.compareTo(otherSlot); return cc.Turtle.compareTo(otherSlot + 1);
} }
public function transferToSlot(to:TurtleSlot, ?count:Int):Outcome<Noise, Noise> { public function transferToSlot(to:TurtleSlot, ?count:Int):Outcome<Noise, Noise> {
var r = cc.Turtle.transferTo(to, count); var r = cc.Turtle.transferTo(to + 1, count);
return r ? Outcome.Success(null) : Outcome.Failure(null); return r ? Outcome.Success(null) : Outcome.Failure(null);
} }
public function getSelectedSlot():TurtleSlot { public function getSelectedSlot():TurtleSlot {
return cc.Turtle.getSelectedSlot(); return cc.Turtle.getSelectedSlot() - 1;
} }
public function getFuelLimit():Int { public function getFuelLimit():Int {
@ -245,7 +246,7 @@ class Turtle {
} }
public function getItemDetail(?detailed:Bool = false, ?slot:TurtleSlot):Option<ItemInspect> { public function getItemDetail(?detailed:Bool = false, ?slot:TurtleSlot):Option<ItemInspect> {
var r = cc.Turtle.getItemDetail(slot); // FIXME: can take detailed as flag. Has to be fixed upstream var r = cc.Turtle.getItemDetail(slot + 1); // FIXME: can take detailed as flag. Has to be fixed upstream
if (r == null) { if (r == null) {
return None; return None;