ui for opening and closing slots

This commit is contained in:
Chris Forbes
2010-08-24 17:22:36 +12:00
parent d4f43a399e
commit 997501bb12
2 changed files with 16 additions and 1 deletions

View File

@@ -161,6 +161,11 @@ namespace OpenRA.Server
throw new InvalidOperationException("Already got 8 players"); throw new InvalidOperationException("Already got 8 players");
} }
static int ChooseFreeSlot()
{
return lobbyInfo.Slots.First(s => !s.Closed && s.Bot == null).Index;
}
static void AcceptConnection() static void AcceptConnection()
{ {
var newConn = new Connection { socket = listener.AcceptSocket() }; var newConn = new Connection { socket = listener.AcceptSocket() };
@@ -195,6 +200,7 @@ namespace OpenRA.Server
State = Session.ClientState.NotReady, State = Session.ClientState.NotReady,
SpawnPoint = 0, SpawnPoint = 0,
Team = 0, Team = 0,
Slot = ChooseFreeSlot(),
}); });
Log.Write("server", "Client {0}: Accepted connection from {1}", Log.Write("server", "Client {0}: Accepted connection from {1}",

View File

@@ -261,6 +261,12 @@ namespace OpenRA.Widgets.Delegates
template = EmptySlotTemplateHost.Clone(); template = EmptySlotTemplateHost.Clone();
var name = template.GetWidget<ButtonWidget>("NAME"); var name = template.GetWidget<ButtonWidget>("NAME");
name.GetText = () => s.Closed ? "Closed" : "Open"; name.GetText = () => s.Closed ? "Closed" : "Open";
name.OnMouseUp = _ =>
{
Game.IssueOrder(
Order.Command((s.Closed ? "slot_open " : "slot_close ") + s.Index));
return true;
};
} }
else else
{ {
@@ -271,7 +277,10 @@ namespace OpenRA.Widgets.Delegates
var join = template.GetWidget<ButtonWidget>("JOIN"); var join = template.GetWidget<ButtonWidget>("JOIN");
if (join != null) if (join != null)
{
join.OnMouseUp = _ => { Game.IssueOrder(Order.Command("slot " + s.Index)); return true; }; join.OnMouseUp = _ => { Game.IssueOrder(Order.Command("slot " + s.Index)); return true; };
join.IsVisible = () => !s.Closed;
}
} }
else if (c.Index == Game.LocalClient.Index && c.State != Session.ClientState.Ready) else if (c.Index == Game.LocalClient.Index && c.State != Session.ClientState.Ready)
{ {
@@ -406,4 +415,4 @@ namespace OpenRA.Widgets.Delegates
return true; return true;
} }
} }
} }