Skip to content

Instantly share code, notes, and snippets.

@enisn
Created December 26, 2020 16:38
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save enisn/1911bf8a2404f54e330738fe77c2d505 to your computer and use it in GitHub Desktop.
Save enisn/1911bf8a2404f54e330738fe77c2d505 to your computer and use it in GitHub Desktop.
using RAGE;
using System;
namespace TecoRP.Client
{
public class BasicInput
{
public static void GetInput(Action<string> action, string title = "", int maxLength = 32, string defaultText = null)
{
Chat.Activate(false);
RAGE.Game.Gxt.Add("TEMP_ASYNC_INPUT_TITLE", title);
RAGE.Game.Misc.DisplayOnscreenKeyboard(6, "TEMP_ASYNC_INPUT_TITLE", "p2", defaultText, "", "", "", maxLength);
Track(action);
}
public static void GetInput(Action<string, InputResultState> action, string title = "", int maxLength = 32, string defaultText = null)
{
Chat.Activate(false);
RAGE.Game.Gxt.Add("TEMP_ASYNC_INPUT_TITLE", title);
RAGE.Game.Misc.DisplayOnscreenKeyboard(6, "TEMP_ASYNC_INPUT_TITLE", "p2", defaultText, "", "", "", maxLength);
Track(action);
}
private static void Track(Action<string> action)
{
var state = RAGE.Game.Misc.UpdateOnscreenKeyboard();
if (state == 0)
{
RAGE.Task.Run(() => Track(action), 100);
return;
}
var result = RAGE.Game.Misc.GetOnscreenKeyboardResult();
action(result);
Chat.Activate(true);
}
private static void Track(Action<string, InputResultState> action)
{
var state = RAGE.Game.Misc.UpdateOnscreenKeyboard();
if (state == 0)
{
RAGE.Task.Run(() => Track(action), 100);
return;
}
var result = RAGE.Game.Misc.GetOnscreenKeyboardResult();
action(result, (InputResultState)state);
Chat.Activate(true);
}
public enum InputResultState
{
Completed = 1,
Canceled = 2,
Error = 3
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment