using UnityEngine; using System; using System.Collections; using System.Runtime.InteropServices; using System.IO; namespace ConsoleWindows { public class ConsoleInput { public event System.Action OnInputText; public string inputString; public void ClearLine() { Console.CursorLeft = 0; Console.Write( new String( ' ', Console.BufferWidth ) ); Console.CursorTop--; Console.CursorLeft = 0; } public void RedrawInputLine() { if ( inputString.Length == 0 ) return; if ( Console.CursorLeft > 0 ) ClearLine(); //System.Console.ForegroundColor = ConsoleColor.Green; System.Console.Write( inputString ); } internal void OnBackspace() { if ( inputString.Length < 1 ) return; inputString = inputString.Substring( 0, inputString.Length - 1 ); RedrawInputLine(); } internal void OnEscape() { ClearLine(); inputString = ""; } internal void OnEnter() { ClearLine(); //System.Console.ForegroundColor = ConsoleColor.Green; System.Console.WriteLine( "> " + inputString ); var strtext = inputString; inputString = ""; if ( OnInputText != null ) { OnInputText( strtext ); } } public void Update() { if ( !Console.KeyAvailable ) return; var key = Console.ReadKey(); if ( key.Key == ConsoleKey.Enter ) { OnEnter(); return; } if ( key.Key == ConsoleKey.Backspace ) { OnBackspace(); return; } if ( key.Key == ConsoleKey.Escape ) { OnEscape(); return; } if ( key.KeyChar != '\u0000' ) { inputString += key.KeyChar; RedrawInputLine(); return; } } } }