i don't even know anymore

This commit is contained in:
2022-12-17 15:08:07 +01:00
parent 2b8aa06117
commit a7dbdff535
15 changed files with 387 additions and 43 deletions

View File

@@ -1,7 +1,6 @@
package bin;
import lib.TermHandle;
import kernel.fs.FileHandler.WriteHandle;
import lib.CLIBase;
class HelloWorld extends CLIBase {

76
src/bin/Net.hx Normal file
View File

@@ -0,0 +1,76 @@
package bin;
import kernel.peripherals.Peripherals.Peripheral;
import kernel.net.Routing;
import haxe.ds.ReadOnlyArray;
import lib.TermHandle;
import lib.CLIBase;
class Net extends CLIBase {
private var handle:TermHandle;
public function invoke(handle:TermHandle):Bool {
this.handle = handle;
var subcommand = handle.args[0];
var subcommand_args = handle.args.slice(1);
switch (subcommand) {
case "route":
return route(subcommand_args);
case "iface":
return iface(subcommand_args);
case "help":
printHelp();
return true;
case "ping":
ping(subcommand_args);
default:
handle.writeLn("Unknown subcommand: " + subcommand);
printHelp();
return false;
}
return true;
}
private function printHelp() {
handle.writeLn("net route");
handle.writeLn("net iface");
handle.writeLn("net help");
}
private function route(args:ReadOnlyArray<String>):Bool {
var routes = Routing.instance.getRouteTable();
for(k => v in routes) {
handle.writeLn('${k} => ${v.interf.name()}(${v.cost})');
}
return true;
}
private function iface(args:ReadOnlyArray<String>):Bool {
var modems = Peripheral.instance.getModems();
for (modem in modems) {
handle.writeLn(modem.name());
}
return true;
}
function ping(args:ReadOnlyArray<String>) {
if (args.length != 1) {
handle.writeLn("Usage: net ping id");
}
var toID:Null<Int> = Std.parseInt(args[0]);
if (toID == null) {
handle.writeLn("Invalid ID");
}
// var result = kernel.net.Net.instance.ping(toID);
}
}

View File

@@ -139,6 +139,8 @@ class Terminal {
switch (name) {
case "hello":
return new HelloWorld();
case "net":
return new Net();
default:
return null;
}

68
src/bin/TurtleRemote.hx Normal file
View File

@@ -0,0 +1,68 @@
package bin;
import lib.ui.reactive.TurtleController;
import util.ObservableValue;
import kernel.turtle.Turtle;
import util.DummyObservable;
import lib.ui.reactive.TextElement;
import lib.ui.reactive.ReactiveUI;
import kernel.ui.WindowManager;
import kernel.ui.WindowContext;
class TurtleRemote {
private var context:WindowContext;
private var ui:ReactiveUI;
public function new() {
}
public function execute() {
this.context = WindowManager.instance.createNewContext();
// var fuelText = new ObservableValue("");
// function updateFuel() {
// fuelText.set('Fuel: ${Turtle.instance.getFuelLevel()} / ${Turtle.instance.getFuelLimit()}');
// }
// updateFuel();
// var fuel = new TextElement(fuelText);
// var bForward = new TextElement(DummyObservable.dummy("Forward"),Black,White,{
// onClick: function() {
// Turtle.instance.forward();
// updateFuel();
// }
// });
// var bBackward = new TextElement(DummyObservable.dummy("Backward"),Black,White,{
// onClick: function() {
// Turtle.instance.back();
// updateFuel();
// }
// });
// var bLeft = new TextElement(DummyObservable.dummy("Turn left"),Black,White,{
// onClick: function() {
// Turtle.instance.turnLeft();
// }
// });
// var bRight = new TextElement(DummyObservable.dummy("Turn right"),Black,White,{
// onClick: function() {
// Turtle.instance.turnRight();
// }
// });
var ctl = new TurtleController();
this.ui = new ReactiveUI(this.context,[ctl]);
this.ui.render();
WindowManager.instance.focusContextToOutput(context,"main");
}
}