void Update() { HandleInteractions(); onUpdate?.Invoke(this); _currentScreen?.GetComponent <TerminalBehavior>()?.OnScreenUpdate(this); if (_booted) { _effectIntensity = Mathf.Clamp(_effectIntensity - effectRate, -3.0F, 1.0F); ApplyEffects(_effectIntensity); } }
public void Boot() { if (!_booted) { onBoot?.Invoke(this); if (!(bootScreen is null)) { _currentScreen = Instantiate(bootScreen, canvas.transform); _currentScreen.GetComponent <TerminalBehavior>()?.OnScreenLoad(this); } ResetMonitor(); ApplyEffects(_effectIntensity); _booted = true; } }
public async Task <bool> SendCustom(string cmd) { bool timeout = await Task.Run(() => { return(Wait(ref _Completed, CompletionTimeout)); }); if (timeout) { Log(new TimeoutException(), Default.msgControllerTimeout); return(false); } CommandExecutionCompleted = false; try { Port.WriteLine(cmd); } catch (Exception e) { Log(e, string.Format("{0} Info: {1}", Default.msgPortWriteError, cmd)); return(false); } TerminalQueue.Enqueue(() => { TerminalEvent?.Invoke(this, new TerminalEventArgs(cmd)); }); return(await Task.Run(() => { return !Wait(ref _Completed, CompletionTimeout); })); }
private void ParseLine(string line) { Trace("Parser invoked"); TerminalQueue.Enqueue(() => { TerminalEvent?.Invoke(this, new TerminalEventArgs(line)); }); if (line.EndsWith(ErrorDesignator)) { new Thread(DeviceErrorThreadStart).Start(new TerminalEventArgs(line)); return; } if (IsConnected) { if (line.Length == ConnectionSignature.Length) { if (line.SequenceEqual(ConnectionSignature)) { OnUnexpectedDisconnect(); return; } } if (!CommandExecutionCompleted) { if (line.Length == CompletionSignature.Length) { if (line.SequenceEqual(CompletionSignature)) { CommandExecutionCompleted = true; return; } } } if (AcquisitionInProgress) { if (line.Length == EndOfAcquisitionSignature.Length) { if (line.SequenceEqual(EndOfAcquisitionSignature)) { AcquisitionInProgress = false; return; } } try { string[] parsed = line.Split(Splitter); byte c = byte.Parse(parsed[0], NumberStyles.HexNumber, CultureInfo.InvariantCulture); float v = float.Parse(parsed[1].Trim(ToTrim), CultureInfo.InvariantCulture); DataQueue.Enqueue(() => { AcquisitionDataReceived?.Invoke(this, new AcquisitionEventArgs(c, v)); }); } catch (Exception exc) { new Thread(DataErrorEventThreadStart).Start(new DataErrorEventArgs(exc, line)); } } else { if (line.Length == AcquisitionSignature.Length) { if (line.SequenceEqual(AcquisitionSignature)) { AcquisitionInProgress = true; return; } } } } else { if (line.Length == ConnectionSignature.Length) { if (line.SequenceEqual(ConnectionSignature)) { IsConnected = true; return; } } } }
void Start() { onStart?.Invoke(this); }
public void Exit() { onExit?.Invoke(this); _currentScreen?.GetComponent <TerminalBehavior>()?.OnScreenExit(this); ApplyEffects(0.0F); }
public void TerminalMethod(string value) { terminalEvent.Invoke(value); }