package kpc.common.kawa; import gnu.mapping.Procedure0; import kpc.api.Signal; import kpc.api.computer.OperatingSystem; import kpc.api.computer.Terminal; public final class get extends Procedure0 { private final OperatingSystem os; private final Terminal terminal; public get(OperatingSystem os, Terminal terminal) { this.os = os; this.terminal = terminal; } @Override public Object apply0() throws Throwable { Signal signal = this.os.pull(); if(signal.name().equals("char")){ if(signal.name().equals("__enter__")){ return null; } else if(signal.name().equals("__back__")){ this.terminal.backspace(); this.terminal.setCursorPos(this.terminal.getCursorX() - 1, this.terminal.getCursorY()); return -1; } else{ this.terminal.write("" + signal.args()[0].toString()); this.terminal.setCursorPos(this.terminal.getCursorX() + 1, this.terminal.getCursorY()); return signal.args()[0].toString(); } } else{ return null; } } }