Merge pull request #11559 from MUzzell/feature-10416

Added ready checkbox for spectating admins
This commit is contained in:
abcdefg30
2016-07-15 15:47:05 +02:00
committed by GitHub
6 changed files with 80 additions and 5 deletions

View File

@@ -60,7 +60,8 @@ namespace OpenRA.Mods.Common.Server
static void CheckAutoStart(S server)
{
var playerClients = server.LobbyInfo.Clients.Where(c => c.Bot == null && c.Slot != null);
// A spectating admin is included for checking these rules
var playerClients = server.LobbyInfo.Clients.Where(c => (c.Bot == null && c.Slot != null) || c.IsAdmin);
// Are all players ready?
if (!playerClients.Any() || playerClients.Any(c => c.State != Session.ClientState.Ready))
@@ -188,6 +189,7 @@ namespace OpenRA.Mods.Common.Server
client.SpawnPoint = 0;
client.Color = HSLColor.FromRGB(255, 255, 255);
server.SyncLobbyClients();
CheckAutoStart(server);
return true;
}
else

View File

@@ -708,7 +708,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
LobbyUtils.SetupEditableFactionWidget(template, slot, client, orderManager, factions);
LobbyUtils.SetupEditableTeamWidget(template, slot, client, orderManager, Map);
LobbyUtils.SetupEditableSpawnWidget(template, slot, client, orderManager, Map);
LobbyUtils.SetupEditableReadyWidget(template, slot, client, orderManager, Map, !Map.RulesLoaded || Map.InvalidCustomRules);
LobbyUtils.SetupEditableReadyWidget(template, slot, client, orderManager, Map);
}
else
{
@@ -754,6 +754,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
template = editableSpectatorTemplate.Clone();
LobbyUtils.SetupEditableNameWidget(template, null, c, orderManager);
if (client.IsAdmin)
LobbyUtils.SetupEditableReadyWidget(template, null, client, orderManager, Map);
}
else
{
@@ -764,6 +767,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
LobbyUtils.SetupNameWidget(template, null, client);
LobbyUtils.SetupKickWidget(template, null, client, orderManager, lobby,
() => panel = PanelType.Kick, () => panel = PanelType.Players);
if (client.IsAdmin)
LobbyUtils.SetupReadyWidget(template, null, client);
}
LobbyUtils.SetupClientWidget(template, c, orderManager, true);

View File

@@ -457,12 +457,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic
parent.Get<LabelWidget>("SPAWN").GetText = () => (c.SpawnPoint == 0) ? "-" : Convert.ToChar('A' - 1 + c.SpawnPoint).ToString();
}
public static void SetupEditableReadyWidget(Widget parent, Session.Slot s, Session.Client c, OrderManager orderManager, MapPreview map, bool forceDisable)
public static void SetupEditableReadyWidget(Widget parent, Session.Slot s, Session.Client c, OrderManager orderManager, MapPreview map)
{
var status = parent.Get<CheckboxWidget>("STATUS_CHECKBOX");
status.IsChecked = () => orderManager.LocalClient.IsReady || c.Bot != null;
status.IsVisible = () => true;
status.IsDisabled = () => c.Bot != null || map.Status != MapStatus.Available || forceDisable;
status.IsDisabled = () => c.Bot != null || map.Status != MapStatus.Available ||
!map.RulesLoaded || map.InvalidCustomRules;
var state = orderManager.LocalClient.IsReady ? Session.ClientState.NotReady : Session.ClientState.Ready;
status.OnClick = () => orderManager.IssueOrder(Order.Command("state {0}".F(state)));

View File

@@ -300,6 +300,20 @@ Container@LOBBY_PLAYER_BIN:
Text: Spectator
Align: Center
Font: Bold
Image@STATUS_IMAGE:
X: 521
Y: 4
Width: 20
Height: 20
ImageCollection: checkbox-bits
ImageName: checked
Visible: false
Checkbox@STATUS_CHECKBOX:
X: 527
Y: 2
Width: 20
Height: 20
Visible: false
Container@TEMPLATE_NONEDITABLE_SPECTATOR:
X: 5
Width: 530
@@ -350,6 +364,14 @@ Container@LOBBY_PLAYER_BIN:
Text: Spectator
Align: Center
Font: Bold
Image@STATUS_IMAGE:
X: 527
Y: 4
Width: 20
Height: 20
ImageCollection: checkbox-bits
ImageName: checked
Visible: false
Container@TEMPLATE_NEW_SPECTATOR:
X: 5
Width: 529

View File

@@ -291,6 +291,20 @@ Container@LOBBY_PLAYER_BIN:
Text: Spectator
Align: Center
Font: Bold
Checkbox@STATUS_CHECKBOX:
X: 525
Y: 2
Width: 20
Height: 20
Visible: false
Image@STATUS_IMAGE:
X: 527
Y: 4
Width: 20
Height: 20
ImageCollection: checkbox-bits
ImageName: checked
Visible: false
Container@TEMPLATE_NONEDITABLE_SPECTATOR:
X: 5
Width: 475
@@ -338,6 +352,14 @@ Container@LOBBY_PLAYER_BIN:
Text: Spectator
Align: Center
Font: Bold
Image@STATUS_IMAGE:
X: 527
Y: 4
Width: 20
Height: 20
ImageCollection: checkbox-bits
ImageName: checked
Visible: false
Container@TEMPLATE_NEW_SPECTATOR:
X: 5
Width: 475

View File

@@ -291,6 +291,20 @@ Container@LOBBY_PLAYER_BIN:
Text: Spectator
Align: Center
Font: Bold
Checkbox@STATUS_CHECKBOX:
X: 525
Y: 2
Width: 20
Height: 20
Visible: false
Image@STATUS_IMAGE:
X: 527
Y: 4
Width: 20
Height: 20
ImageCollection: checkbox-bits
ImageName: checked
Visible: false
Container@TEMPLATE_NONEDITABLE_SPECTATOR:
X: 5
Width: 475
@@ -338,6 +352,14 @@ Container@LOBBY_PLAYER_BIN:
Text: Spectator
Align: Center
Font: Bold
Image@STATUS_IMAGE:
X: 527
Y: 4
Width: 20
Height: 20
ImageCollection: checkbox-bits
ImageName: checked
Visible: false
Container@TEMPLATE_NEW_SPECTATOR:
X: 5
Width: 475