Add separate chat panel for spectators and players

Forces the chat and performance panels to be re-initialized when a
player transitions to spectators. This ensures that spectators don't
get to see faction themed widgets.
This commit is contained in:
Ivaylo Draganov
2021-07-11 17:25:17 +03:00
committed by Paul Chote
parent edd3a2eb75
commit 2d0e7040db
11 changed files with 46 additions and 8 deletions

View File

@@ -19,7 +19,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
[ObjectCreator.UseCtor]
public AddFactionSuffixLogic(Widget widget, World world)
{
if (world.LocalPlayer == null)
if (world.LocalPlayer == null || world.LocalPlayer.Spectating)
return;
if (!ChromeMetrics.TryGet("FactionSuffix-" + world.LocalPlayer.Faction.InternalName, out string faction))

View File

@@ -0,0 +1,25 @@
#region Copyright & License Information
/*
* Copyright 2007-2021 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using OpenRA.Widgets;
namespace OpenRA.Mods.Common.Widgets.Logic
{
public class LoadIngameChatLogic : ChromeLogic
{
[ObjectCreator.UseCtor]
public LoadIngameChatLogic(Widget widget, World world)
{
var root = widget.Get("CHAT_ROOT");
Game.LoadWidget(world, "CHAT_PANEL", root, new WidgetArgs() { { "isMenuChat", false } });
}
}
}

View File

@@ -54,7 +54,6 @@ namespace OpenRA.Mods.Common.Widgets.Logic
}
Game.LoadWidget(world, "DEBUG_WIDGETS", worldRoot, new WidgetArgs());
Game.LoadWidget(world, "CHAT_PANEL", worldRoot, new WidgetArgs() { { "isMenuChat", false } });
world.GameOver += () =>
{