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

@@ -43,8 +43,9 @@ namespace OpenRA.Network
if (client != null && Chrome.chatWidget != null)
{
var player = Game.world.players.Values.FirstOrDefault(p => p.Index == client.Index);
var isAlly = player != null && Game.world.LocalPlayer != null
&& player.Stances[Game.world.LocalPlayer] == Stance.Ally;
var isAlly = (world.GameHasStarted) ?
player != null && Game.world.LocalPlayer != null && player.Stances[Game.world.LocalPlayer] == Stance.Ally :
client.Team == Game.LocalClient.Team;
if (isAlly)
Chrome.chatWidget.AddLine(client, "(Team) " + order.TargetString);

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,8 +25,10 @@ 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;
}

View File

@@ -500,8 +500,8 @@ Container:
Height:190
Notification: beepy2.aud
#rabeep1.aud for ra
Label@LABEL_LOBBY_TEAM:
Id:LABEL_LOBBY_TEAM
Label@LABEL_CHATTYPE:
Id:LABEL_CHATTYPE
Width:70
Height:25
X:0