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