91 lines
1.8 KiB
Ucode
91 lines
1.8 KiB
Ucode
//-----------------------------------------------------------
|
|
//
|
|
//-----------------------------------------------------------
|
|
class utvInputPage extends ut2k3guIPage;
|
|
|
|
var string TypedStr;
|
|
var bool bIgnoreKeys;
|
|
|
|
function InitComponent(GUIController MyController, GUIComponent MyOwner)
|
|
{
|
|
super.InitComponent(MyController, MyOwner);
|
|
|
|
bIgnoreKeys = true;
|
|
TypedStr = "";
|
|
}
|
|
|
|
function bool MyOnDraw (Canvas canvas)
|
|
{
|
|
local PlayerController pc;
|
|
|
|
pc = PlayerOwner();
|
|
|
|
if ((pc != none) && (pc.myhud != none)) {
|
|
pc.myhud.DrawTypingPrompt (Canvas, "UTVSAY " $ TypedStr);
|
|
}
|
|
else {
|
|
Log ("rotv: Current player has no hud, closing chat");
|
|
Controller.CloseMenu ();
|
|
return true;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
function bool MyOnKeyType(out byte Key, optional string Unicode)
|
|
{
|
|
if (bIgnoreKeys)
|
|
return true;
|
|
|
|
if (Key >= 0x20) {
|
|
if (Unicode != "")
|
|
TypedStr = TypedStr $ Unicode;
|
|
else
|
|
TypedStr = TypedStr $ Chr (Key);
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
function bool MyOnKeyEvent(out byte Key, out byte Action, float delta)
|
|
{
|
|
if (Action == 1) { //press
|
|
bIgnoreKeys = false;
|
|
}
|
|
if (Key == 0x1b) { //escape
|
|
Controller.CloseMenu ();
|
|
return true;
|
|
}
|
|
else if (Action != 1) {
|
|
return false;
|
|
}
|
|
else if (Key == 0x0d) { //enter
|
|
if (TypedStr != "") {
|
|
class'utvReplication'.default.ChatString = TypedStr;
|
|
}
|
|
Controller.CloseMenu ();
|
|
|
|
return true;
|
|
}
|
|
else if (Key == 0x08 || Key == 0x25) { //backspace, left
|
|
if (Len (TypedStr) > 0)
|
|
TypedStr = Left (TypedStr, Len (TypedStr) - 1);
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
defaultproperties
|
|
{
|
|
bRequire640x480=false
|
|
bAllowedAsLast=true
|
|
OpenSound=none
|
|
bRenderWorld=true
|
|
|
|
OnDraw=MyOnDraw
|
|
OnKeyType=MyOnKeyType
|
|
OnKeyEvent=MyOnKeyEvent
|
|
}
|