const { Color, Point } = require("telidon"); const Page = require("./page.js"); module.exports = class Menu extends Page { globalMenu = { "#": "./views/mainmenu.js", "#8378": "./views/test.js", "*": ()=>this.gotoPrev(), "*69": null, "*911": ()=>{throw new Error("Écran de la mort qui tue causé par l'utilisateur")}, } selection = ""; menu = {}; bgColor = new Color(0,0,0); fgColor = new Color(1,1,1); position = new Point(0.836,0); maxLength = 5; constructor(naplps) { super(naplps); } start() { //this.naplps.pointSetAbs(this.position); //this.naplps.textMode(); } data(byte) { if(byte == 13) { if(Object.keys(this.globalMenu).includes(this.selection)) { if(typeof this.globalMenu[this.selection] == "function") this.globalMenu[this.selection](); else this.goto(this.globalMenu[this.selection]); } else if(Object.keys(this.menu).includes(this.selection)) { if(typeof this.menu[this.selection] == "function") this.menu[this.selection](); else this.goto(this.menu[this.selection]); } else { this.naplps.bell(); if(this.selection.length > 0){ this.naplps.pdiMode(); this.naplps.pointSetAbs(this.position); this.naplps.setColor(this.bgColor); this.naplps.textMode(); this.naplps.write(this.selection); /*this.naplps.pdiMode(); this.naplps.pointSetAbs(this.position); this.naplps.setColor(this.fgColor); this.naplps.textMode();*/ this.selection = ""; } } } if((byte >= 48 && byte <= 57 && this.selection.length < this.maxLength) || ((byte == 35 || byte == 42) && this.selection.length == 0)) { this.naplps.pdiMode(); this.naplps.pointSetAbs(new Point(this.position.x + this.naplps.options.characterSize.x * this.selection.length, this.position.y)); this.selection += String.fromCharCode(byte); this.naplps.textMode(); this.naplps.writeBytes(byte); this.naplps.pdiMode(); } if(byte == 8) { if(this.selection.length > 0) { this.naplps.pdiMode(); this.naplps.pointSetAbs(this.position); this.naplps.setColor(this.bgColor); this.naplps.text(this.selection); this.naplps.pointSetAbs(this.position); this.naplps.setColor(this.fgColor); this.selection = this.selection.slice(0,-1); this.naplps.text(this.selection); } else { this.naplps.bell(); } } // TODO: if arrow keys, esc } leave() { } }