package kernel; import util.Signal; import lib.TermWriteable; import cc.Term; import util.Vec.Vec2; import util.Color; /** Represents the main computer screen. **/ class MainTerm implements TermWriteable{ public static final instance:MainTerm = new MainTerm(); private function new() { KernelEvents.instance.on("term_resize",params ->{ _onResize.emit(null); }); } public var onResize(get, null):SignalReadonly>; private var _onResize:Signal> = new Signal(); function get_onResize():SignalReadonly> { return _onResize; } public function write(text:String) { Term.write(text); } public function scroll(y:Int) { Term.scroll(y); } public function getCursorPos():Vec2 { var rtn = Term.getCursorPos(); return { x: rtn.x - 1, y: rtn.y - 1 } } public function setCursorPos(x:Int, y:Int) { Term.setCursorPos(x + 1,y + 1); } public function getCursorBlink():Bool { // Missing in api throw new haxe.exceptions.NotImplementedException(); } public function setCursorBlink(blink:Bool) { Term.setCursorBlink(blink); } public function getSize():Vec2 { var rtn = Term.getSize(); return { x: rtn.width, y: rtn.height, } } public function clear() { Term.clear(); } public function clearLine() { Term.clearLine(); } public function getTextColor():Color { return ColorConvert.ccToColor(Term.getTextColor()); } public function setTextColor(colour:Color) { Term.setTextColor(ColorConvert.colorToCC(colour)); } public function getBackgroundColor():Color { return ColorConvert.ccToColor(Term.getBackgroundColor()); } public function setBackgroundColor(color:Color) { Term.setBackgroundColor(ColorConvert.colorToCC(color)); } public function isColor():Bool { return Term.isColor(); } }