Fix diplomacy/cheats menu stacking
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
*/
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using OpenRA.Traits;
|
||||
using OpenRA.Widgets;
|
||||
|
||||
@@ -27,6 +28,7 @@ namespace OpenRA.Mods.Cnc.Widgets
|
||||
{
|
||||
[ObjectCreator.UseCtor]
|
||||
public CncCheatsLogic([ObjectCreator.Param] Widget widget,
|
||||
[ObjectCreator.Param] Action onExit,
|
||||
[ObjectCreator.Param] World world)
|
||||
{
|
||||
var panel = widget.GetWidget("CHEATS_PANEL");
|
||||
@@ -67,7 +69,7 @@ namespace OpenRA.Mods.Cnc.Widgets
|
||||
panel.GetWidget<ButtonWidget>("GIVE_EXPLORATION_BUTTON").OnClick = () =>
|
||||
world.IssueOrder(new Order("DevGiveExploration", world.LocalPlayer.PlayerActor, false));
|
||||
|
||||
panel.GetWidget<ButtonWidget>("CLOSE_BUTTON").OnClick = Widget.CloseWindow;
|
||||
panel.GetWidget<ButtonWidget>("CLOSE_BUTTON").OnClick = () => { Widget.CloseWindow(); onExit(); };
|
||||
}
|
||||
|
||||
public void Order(World world, string order)
|
||||
|
||||
@@ -25,11 +25,12 @@ namespace OpenRA.Mods.Cnc.Widgets
|
||||
|
||||
[ObjectCreator.UseCtor]
|
||||
public CncDiplomacyLogic([ObjectCreator.Param] Widget widget,
|
||||
[ObjectCreator.Param] World world)
|
||||
[ObjectCreator.Param] Action onExit,
|
||||
[ObjectCreator.Param] World world)
|
||||
{
|
||||
this.world = world;
|
||||
var panel = widget.GetWidget("DIPLOMACY_PANEL");
|
||||
panel.GetWidget<ButtonWidget>("BACK_BUTTON").OnClick = Widget.CloseWindow;
|
||||
panel.GetWidget<ButtonWidget>("BACK_BUTTON").OnClick = () => { Widget.CloseWindow(); onExit(); };
|
||||
|
||||
var scrollpanel = panel.GetWidget<ScrollPanelWidget>("PLAYER_LIST");
|
||||
var itemTemplate = scrollpanel.GetWidget("PLAYER_TEMPLATE");
|
||||
|
||||
@@ -19,6 +19,9 @@ namespace OpenRA.Mods.Cnc.Widgets
|
||||
{
|
||||
public class CncIngameChromeLogic : IWidgetDelegate
|
||||
{
|
||||
enum MenuType { None, Diplomacy, Cheats }
|
||||
MenuType menu = MenuType.None;
|
||||
|
||||
static bool staticSetup;
|
||||
Widget ingameRoot;
|
||||
|
||||
@@ -61,10 +64,23 @@ namespace OpenRA.Mods.Cnc.Widgets
|
||||
var diplomacyButton = ingameRoot.GetWidget<ButtonWidget>("DIPLOMACY_BUTTON");
|
||||
var diplomacyAvailable = world.players.Values.Any(a => a != world.LocalPlayer && !a.NonCombatant);
|
||||
diplomacyButton.IsDisabled = () => !diplomacyAvailable;
|
||||
diplomacyButton.OnClick = () => Game.OpenWindow("DIPLOMACY_PANEL", new WidgetArgs());
|
||||
|
||||
diplomacyButton.OnClick = () =>
|
||||
{
|
||||
if (menu != MenuType.None)
|
||||
Widget.CloseWindow();
|
||||
|
||||
menu = MenuType.Diplomacy;
|
||||
Game.OpenWindow("DIPLOMACY_PANEL", new WidgetArgs() {{"onExit", () => menu = MenuType.None }});
|
||||
};
|
||||
|
||||
ingameRoot.GetWidget<ButtonWidget>("OPTIONS_BUTTON").OnClick = () =>
|
||||
{
|
||||
if (menu != MenuType.None)
|
||||
{
|
||||
Widget.CloseWindow();
|
||||
menu = MenuType.None;
|
||||
}
|
||||
|
||||
ingameRoot.IsVisible = () => false;
|
||||
Game.LoadWidget(world, "INGAME_MENU", Widget.RootWidget, new WidgetArgs()
|
||||
{
|
||||
@@ -73,7 +89,15 @@ namespace OpenRA.Mods.Cnc.Widgets
|
||||
};
|
||||
|
||||
var cheatsButton = ingameRoot.GetWidget<ButtonWidget>("CHEATS_BUTTON");
|
||||
cheatsButton.OnClick = () => Game.OpenWindow("CHEATS_PANEL", new WidgetArgs());
|
||||
cheatsButton.OnClick = () =>
|
||||
{
|
||||
if (menu != MenuType.None)
|
||||
Widget.CloseWindow();
|
||||
|
||||
menu = MenuType.Diplomacy;
|
||||
Game.OpenWindow("CHEATS_PANEL", new WidgetArgs() {{"onExit", () => menu = MenuType.None }});
|
||||
};
|
||||
|
||||
cheatsButton.IsVisible = () => world.LobbyInfo.GlobalSettings.AllowCheats;
|
||||
|
||||
var postgameBG = ingameRoot.GetWidget("POSTGAME_BG");
|
||||
|
||||
Reference in New Issue
Block a user