源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

93 lines
1.6 KiB

using UnityEngine;
using System;
using System.Collections;
using System.Runtime.InteropServices;
using System.IO;
namespace ConsoleWindows
{
public class ConsoleInput
{
public event System.Action<string> 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;
}
}
}
}