renamed Pos and Pos3

This commit is contained in:
2024-10-14 21:40:26 +02:00
parent 08f41ccb0b
commit e0f8d274e7
25 changed files with 236 additions and 131 deletions

View File

@@ -4,7 +4,7 @@ import kernel.turtle.TurtleMutex;
import kernel.turtle.Turtle;
import kernel.peripherals.Peripherals.Peripheral;
import kernel.log.Log;
import lib.Pos;
import lib.ScreenPos;
import cc.HTTP.HTTPResponse;
import lua.TableTools;
import lua.Coroutine;
@@ -38,11 +38,11 @@ class KernelEvents {
distance:Null<Float>
}>;
public static var onMonitorResize(default, null):Signal<String>;
public static var onMonitorTouch(default, null):Signal<{addr:String, pos:Pos}>;
public static var onMouseClick(default, null):Signal<{button:ButtonType, pos:Pos}>;
public static var onMouseDrag(default, null):Signal<{button:ButtonType, pos:Pos}>;
public static var onMouseScroll(default, null):Signal<{dir:Int, pos:Pos}>;
public static var onMouseUp(default, null):Signal<{button:ButtonType, pos:Pos}>;
public static var onMonitorTouch(default, null):Signal<{addr:String, pos:ScreenPos}>;
public static var onMouseClick(default, null):Signal<{button:ButtonType, pos:ScreenPos}>;
public static var onMouseDrag(default, null):Signal<{button:ButtonType, pos:ScreenPos}>;
public static var onMouseScroll(default, null):Signal<{dir:Int, pos:ScreenPos}>;
public static var onMouseUp(default, null):Signal<{button:ButtonType, pos:ScreenPos}>;
public static var onPaste(default, null):Signal<String>;
public static var onPeripheral(default, null):Signal<String>;
public static var onPeripheralDetach(default, null):Signal<String>;
@@ -75,11 +75,11 @@ class KernelEvents {
distance:Null<Float>
}> = Signal.trigger();
private static final onMonitorResizeTrigger:SignalTrigger<String> = Signal.trigger();
private static final onMonitorTouchTrigger:SignalTrigger<{addr:String, pos:Pos}> = Signal.trigger();
private static final onMouseClickTrigger:SignalTrigger<{button:ButtonType, pos:Pos}> = Signal.trigger();
private static final onMouseDragTrigger:SignalTrigger<{button:ButtonType, pos:Pos}> = Signal.trigger();
private static final onMouseScrollTrigger:SignalTrigger<{dir:Int, pos:Pos}> = Signal.trigger();
private static final onMouseUpTrigger:SignalTrigger<{button:ButtonType, pos:Pos}> = Signal.trigger();
private static final onMonitorTouchTrigger:SignalTrigger<{addr:String, pos:ScreenPos}> = Signal.trigger();
private static final onMouseClickTrigger:SignalTrigger<{button:ButtonType, pos:ScreenPos}> = Signal.trigger();
private static final onMouseDragTrigger:SignalTrigger<{button:ButtonType, pos:ScreenPos}> = Signal.trigger();
private static final onMouseScrollTrigger:SignalTrigger<{dir:Int, pos:ScreenPos}> = Signal.trigger();
private static final onMouseUpTrigger:SignalTrigger<{button:ButtonType, pos:ScreenPos}> = Signal.trigger();
private static final onPasteTrigger:SignalTrigger<String> = Signal.trigger();
private static final onPeripheralTrigger:SignalTrigger<String> = Signal.trigger();
private static final onPeripheralDetachTrigger:SignalTrigger<String> = Signal.trigger();

View File

@@ -1,6 +1,6 @@
package kernel;
import lib.Pos;
import lib.ScreenPos;
import kernel.ui.ITermWriteable;
import cc.Term;
import lib.Vec.Vec2;
@@ -39,7 +39,7 @@ class MainTerm implements ITermWriteable {
Term.scroll(y);
}
public function getCursorPos():Pos {
public function getCursorPos():ScreenPos {
var rtn = Term.getCursorPos();
return {
x: rtn.x - 1,
@@ -60,7 +60,7 @@ class MainTerm implements ITermWriteable {
Term.setCursorBlink(blink);
}
public function getSize():Pos {
public function getSize():ScreenPos {
var rtn = Term.getSize();
return {
x: rtn.width,

View File

@@ -5,7 +5,7 @@ import lib.KVStore;
import kernel.net.Net;
import kernel.net.INetworkInterface;
import kernel.net.Package;
import lib.Pos3;
import lib.WorldPos;
using tink.CoreApi;
@@ -18,17 +18,17 @@ class GPS {
private static var shouldRespond = true;
private static var shouldDoWholeNumberCheck = true;
private static var posAccuracy = 0; // 0 = unkown, 1 = (ins,best guess), 2 = (stored/manual,should be right), 3 = (gps,confirmed)
private static var cachedPosition:Pos3;
private static var lastPositionResponse:Array<{pos:Pos3, dist:Float}> = [];
private static var cachedPosition:WorldPos;
private static var lastPositionResponse:Array<{pos:WorldPos, dist:Float}> = [];
private static var futureResolve:(pos:Null<Pos3>) -> Void = null;
private static var futureResolve:(pos:Null<WorldPos>) -> Void = null;
@:allow(kernel.Init)
private static function init() {
loadCachedPosition();
}
public static function setManualPosition(pos:Pos3) {
public static function setManualPosition(pos:WorldPos) {
var kvstore = new KVStore("gps");
kvstore.set("mpos", pos);
kvstore.save();
@@ -40,12 +40,12 @@ class GPS {
}
@:allow(kernel.gps.INS)
private static function setINSPosition(pos:Pos3) {
private static function setINSPosition(pos:WorldPos) {
cachedPosition = pos;
posAccuracy = 1;
}
public static function getPosition():Null<Pos3> {
public static function getPosition():Null<WorldPos> {
return cachedPosition;
}
@@ -58,17 +58,17 @@ class GPS {
posAccuracy = 0;
}
public static function locate():Future<Null<Pos3>> {
public static function locate():Future<Null<WorldPos>> {
// TODO: implenet a timeout
// TODO: dont send a request twice if the last one is still pending or we moved
return new Future<Null<Pos3>>((resolve) -> {
return new Future<Null<WorldPos>>((resolve) -> {
futureResolve = resolve;
sendPositionRequest();
return null;
});
}
private static function resolveFuture(pos:Null<Pos3>) {
private static function resolveFuture(pos:Null<WorldPos>) {
futureResolve(pos);
}
@@ -85,8 +85,8 @@ class GPS {
var kvstore = new KVStore("gps");
kvstore.load();
var mPos:Null<Pos3> = kvstore.get("mpos"); // Manual set position
var cPos:Null<Pos3> = kvstore.get("cpos"); // Cached position
var mPos:Null<WorldPos> = kvstore.get("mpos"); // Manual set position
var cPos:Null<WorldPos> = kvstore.get("cpos"); // Cached position
if (mPos != null && cPos != null && mPos == cPos) {
// Both are the same, so we can use the cached position
@@ -163,7 +163,7 @@ class GPS {
}
}
private static function calculatePosition():Null<Pos3> {
private static function calculatePosition():Null<WorldPos> {
if (lastPositionResponse.length < 3)
return null;
@@ -219,7 +219,7 @@ class GPS {
/**
Determines the position(s) of a point given 3 other points and the distance to each of them.
**/
private static function trilateration(p1:Pos3, p2:Pos3, p3:Pos3, r1:Float, r2:Float, r3:Float):Pair<Pos3, Pos3> {
private static function trilateration(p1:WorldPos, p2:WorldPos, p3:WorldPos, r1:Float, r2:Float, r3:Float):Pair<WorldPos, WorldPos> {
var a2b = p2 - p1;
var a2c = p3 - p1;

View File

@@ -2,12 +2,12 @@ package kernel.gps;
import kernel.log.Log;
import kernel.turtle.Turtle;
import lib.Pos3;
import lib.WorldPos;
using tink.CoreApi;
class INS {
private static var heading:Null<Pos3> = null;
private static var heading:Null<WorldPos> = null;
private static var alingment:Int = 1; // 0 = degraded, 1 = not aligned, 2 = aligned
@:allow(kernel.turtle.Turtle)
@@ -68,7 +68,7 @@ class INS {
}
}
private static function move(dir:Null<Pos3>) {
private static function move(dir:Null<WorldPos>) {
var pos = GPS.getPosition();
if (pos == null || dir == null)
return;
@@ -76,7 +76,7 @@ class INS {
GPS.setINSPosition(newPos);
}
public static function getHeading():Null<Pos3> {
public static function getHeading():Null<WorldPos> {
return heading;
}
@@ -150,7 +150,7 @@ class INS {
}
}
private static function calcHeading(pos1:Pos3, pos2:Pos3, moved:Int):Null<Pos3> {
private static function calcHeading(pos1:WorldPos, pos2:WorldPos, moved:Int):Null<WorldPos> {
if (moved == 0) {
return pos1 - pos2;
} else if (moved == 1) {
@@ -184,7 +184,7 @@ class INS {
}
}
private static function rotatePos3ToRight(pos:Pos3):Pos3 {
private static function rotatePos3ToRight(pos:WorldPos):WorldPos {
if (pos.x == 0 && pos.z == -1) {
return {x: 1, y: 0, z: 0};
} else if (pos.x == -1 && pos.z == 0) {
@@ -198,7 +198,7 @@ class INS {
}
}
private static function rotatePos3ToLeft(pos3:Pos3):Pos3 {
private static function rotatePos3ToLeft(pos3:WorldPos):WorldPos {
return rotatePos3ToRight(rotatePos3ToRight(rotatePos3ToRight(pos3)));
}
}

View File

@@ -1,6 +1,6 @@
package kernel.net;
import lib.Pos3;
import lib.WorldPos;
typedef NetworkID = Int;
typedef GenericPackage = Package<Dynamic>;
@@ -12,7 +12,7 @@ enum PackageTypes {
RouteDiscover(reachableIDs:Array<{id:NetworkID, cost:Int}>);
RouteDiscoverResponse(reachableIDs:Array<{id:NetworkID, cost:Int}>);
RouteDiscoverUpdate(reachableIDs:Array<{id:NetworkID, cost:Int}>);
GPSResponse(pos:Pos3);
GPSResponse(pos:WorldPos);
GPSRequest();
}

View File

@@ -2,7 +2,7 @@ package kernel.peripherals;
import cc.Peripheral;
import lib.Rect;
import lib.Pos;
import lib.ScreenPos;
class Printer implements IPeripheral {
public static inline final TYPE_NAME:String = "printer";
@@ -25,11 +25,11 @@ class Printer implements IPeripheral {
public function write(text:String) {}
public function getCurserPos():Pos {
return new Pos({x: 0, y: 0});
public function getCurserPos():ScreenPos {
return new ScreenPos({x: 0, y: 0});
}
public function setCurserPos(pos:Pos) {
public function setCurserPos(pos:ScreenPos) {
this.native.setCursorPos(pos.x, pos.y);
}

View File

@@ -1,7 +1,7 @@
package kernel.peripherals;
import cc.Peripheral;
import lib.Pos;
import lib.ScreenPos;
import cc.Term.TerminalSize;
import kernel.ui.ITermWriteable;
import lib.Vec.Vec2;
@@ -59,7 +59,7 @@ class Screen implements ITermWriteable implements IPeripheral {
nativ.scroll(y);
}
public function getCursorPos():Pos {
public function getCursorPos():ScreenPos {
var rtn = nativ.getCursorPos();
return {
x: rtn.x - 1,

View File

@@ -1,6 +1,6 @@
package kernel.ui;
import lib.Pos;
import lib.ScreenPos;
import lib.Vec.Vec2;
import lib.Color;
import kernel.ui.ITermWriteable;
@@ -86,7 +86,7 @@ class BufferedVirtualTermWriter implements IVirtualTermWriter extends TermBuffer
super.scroll(y);
}
public override function getCursorPos():Pos {
public override function getCursorPos():ScreenPos {
if (isEnabled()) {
return target.getCursorPos();
} else {

View File

@@ -1,6 +1,6 @@
package kernel.ui;
import lib.Pos;
import lib.ScreenPos;
import lib.Color;
import lib.Vec.Vec2;
@@ -18,7 +18,7 @@ interface ITermWriteable {
/**
Even though CC is 1 based we use a 0 based index.
**/
public function getCursorPos():Pos;
public function getCursorPos():ScreenPos;
/**
Even though CC is 1 based we use a 0 based index.

View File

@@ -1,7 +1,7 @@
package kernel.ui;
import kernel.log.Log;
import lib.Pos;
import lib.ScreenPos;
import lib.Vec.Vec2;
import lib.Color;
@@ -110,8 +110,8 @@ class StatelessVirtualTermWriter implements IVirtualTermWriter {
target.scroll(y);
}
public inline function getCursorPos():Pos {
return enabled ? target.getCursorPos() : new Pos({x: 0, y: 0});
public inline function getCursorPos():ScreenPos {
return enabled ? target.getCursorPos() : new ScreenPos({x: 0, y: 0});
}
public inline function setCursorPos(x:Int, y:Int) {

View File

@@ -1,6 +1,6 @@
package kernel.ui;
import lib.Pos;
import lib.ScreenPos;
import lib.Vec.Vec2;
import lib.Color;
import kernel.ui.ITermWriteable;
@@ -18,7 +18,7 @@ class TermBuffer implements ITermWriteable {
**/
private var screenBuffer:Array<Array<Pixel>>;
private var cursorPos:Pos = {x: 0, y: 0};
private var cursorPos:ScreenPos = {x: 0, y: 0};
private var currentTextColor:Color = White;
private var currentBgColor:Color = Black;
private var cursorBlink:Bool = false;
@@ -91,7 +91,7 @@ class TermBuffer implements ITermWriteable {
target.setCursorBlink(cursorBlink);
}
private function safeWriteScreenBuffer(pos:Pos, char:String) {
private function safeWriteScreenBuffer(pos:ScreenPos, char:String) {
if (screenBuffer.length > pos.y && screenBuffer[pos.y].length > pos.x) {
screenBuffer[pos.y][pos.x].char = char;
screenBuffer[pos.y][pos.x].bg = currentBgColor;
@@ -121,7 +121,7 @@ class TermBuffer implements ITermWriteable {
]);
}
public function getCursorPos():Pos {
public function getCursorPos():ScreenPos {
return cursorPos;
}

View File

@@ -1,7 +1,7 @@
package kernel.ui;
import lib.ui.rendere.IUIEventDelegate;
import lib.Pos;
import lib.ScreenPos;
import lib.Color;
import kernel.ButtonType;
import lib.Vec.Vec2;
@@ -17,21 +17,21 @@ class WindowContext implements ITermWriteable {
@:allow(kernel.ui.WindowManager) private var eventDelegate:Null<IUIEventDelegate>;
public var onClick(default, null):Signal<{button:ButtonType, pos:Pos}>;
public var onClick(default, null):Signal<{button:ButtonType, pos:ScreenPos}>;
public var onKey(default, null):Signal<{keyCode:Int, isHeld:Bool}>;
public var onKeyUp(default, null):Signal<Int>;
public var onMouseDrag(default, null):Signal<{button:ButtonType, pos:Pos}>;
public var onMouseScroll(default, null):Signal<{dir:Int, pos:Pos}>;
public var onMouseUp(default, null):Signal<{button:ButtonType, pos:Pos}>;
public var onMouseDrag(default, null):Signal<{button:ButtonType, pos:ScreenPos}>;
public var onMouseScroll(default, null):Signal<{dir:Int, pos:ScreenPos}>;
public var onMouseUp(default, null):Signal<{button:ButtonType, pos:ScreenPos}>;
public var onPaste(default, null):Signal<String>;
public var onChar(default, null):Signal<String>;
@:allow(kernel.ui.WindowManager) private final onClickTrigger:SignalTrigger<{button:ButtonType, pos:Pos}>;
@:allow(kernel.ui.WindowManager) private final onClickTrigger:SignalTrigger<{button:ButtonType, pos:ScreenPos}>;
@:allow(kernel.ui.WindowManager) private final onKeyTrigger:SignalTrigger<{keyCode:Int, isHeld:Bool}>;
@:allow(kernel.ui.WindowManager) private final onKeyUpTrigger:SignalTrigger<Int>;
@:allow(kernel.ui.WindowManager) private final onMouseDragTrigger:SignalTrigger<{button:ButtonType, pos:Pos}>;
@:allow(kernel.ui.WindowManager) private final onMouseScrollTrigger:SignalTrigger<{dir:Int, pos:Pos}>;
@:allow(kernel.ui.WindowManager) private final onMouseUpTrigger:SignalTrigger<{button:ButtonType, pos:Pos}>;
@:allow(kernel.ui.WindowManager) private final onMouseDragTrigger:SignalTrigger<{button:ButtonType, pos:ScreenPos}>;
@:allow(kernel.ui.WindowManager) private final onMouseScrollTrigger:SignalTrigger<{dir:Int, pos:ScreenPos}>;
@:allow(kernel.ui.WindowManager) private final onMouseUpTrigger:SignalTrigger<{button:ButtonType, pos:ScreenPos}>;
@:allow(kernel.ui.WindowManager) private final onPasteTrigger:SignalTrigger<String>;
@:allow(kernel.ui.WindowManager) private final onCharTrigger:SignalTrigger<String>;
@@ -89,7 +89,7 @@ class WindowContext implements ITermWriteable {
writer.scroll(y);
}
public inline function getCursorPos():Pos {
public inline function getCursorPos():ScreenPos {
return writer.getCursorPos();
}