add a spectator player that shares shroud with everyone

closes #4607
This commit is contained in:
Matthias Mailänder
2014-03-08 06:57:56 +01:00
parent 1f18374733
commit fbf408b886
6 changed files with 31 additions and 10 deletions

View File

@@ -32,17 +32,18 @@ namespace OpenRA.Mods.RA.Widgets.Logic
static string LabelForPlayer(Player p)
{
return p != null ? "{0}'s view".F(p.PlayerName) : "World view";
return p != null ? p.PlayerName == "Everyone" ? "Combined view" : "{0}'s view".F(p.PlayerName) : "World view";
}
[ObjectCreator.UseCtor]
public ObserverShroudSelectorLogic(Widget widget, World world)
{
var views = world.Players.Where(p => !p.NonCombatant).Concat(new[] { (Player)null }).Select(
p => new CameraOption(LabelForPlayer(p),
() => world.RenderPlayer == p,
() => world.RenderPlayer = p
)).ToArray();
var views = world.Players.Where(p => (p.NonCombatant && p.Spectating)
|| !p.NonCombatant).Concat(new[] { (Player)null }).Select(
p => new CameraOption(LabelForPlayer(p),
() => world.RenderPlayer == p,
() => world.RenderPlayer = p
)).ToArray();
var shroudSelector = widget.Get<DropDownButtonWidget>("SHROUD_SELECTOR");
shroudSelector.GetText = () => LabelForPlayer(world.RenderPlayer);