Make TextFieldWidget generic; Hook up teamchat and make it actually work in the lobby

This commit is contained in:
Paul Chote
2010-07-10 21:15:21 +12:00
parent 50f3aecf53
commit d91fc0d8e7
4 changed files with 31 additions and 8 deletions

View File

@@ -69,6 +69,23 @@ namespace OpenRA.Widgets.Delegates
Game.LobbyInfoChanged += UpdatePlayerList;
Chrome.chatWidget = lobby.GetWidget("CHAT_DISPLAY") as ChatDisplayWidget;
bool teamChat = false;
var chatLabel = lobby.GetWidget("LABEL_CHATTYPE") as LabelWidget;
var chatTextField = lobby.GetWidget("CHAT_TEXTFIELD") as TextFieldWidget;
chatTextField.OnEnterKey = text =>
{
var order = (teamChat) ? Order.TeamChat( text ) : Order.Chat( text );
Game.IssueOrder( order );
};
chatTextField.OnTabKey = text =>
{
teamChat ^= true;
chatLabel.Text = (teamChat) ? "Team:" : "Chat:";
};
}
void UpdatePlayerList()

View File

@@ -25,9 +25,11 @@ namespace OpenRA.Widgets
{
class TextFieldWidget : Widget
{
string TextBuffer = "";
public string TextBuffer = "";
public int VisualHeight = 1;
public Action<string> OnEnterKey = text => {};
public Action<string> OnTabKey = text => {};
public TextFieldWidget()
: base()
{
@@ -83,10 +85,13 @@ namespace OpenRA.Widgets
if (e.KeyChar == '\r')
{
if (TextBuffer.Length > 0)
Game.IssueOrder( Order.Chat( TextBuffer ) );
OnEnterKey(TextBuffer);
TextBuffer = "";
}
if (e.KeyChar == '\t')
OnTabKey(TextBuffer);
TypeChar(e.KeyChar);
return true;
}