Fix diplomacy/cheats menu stacking

This commit is contained in:
Paul Chote
2011-05-22 19:32:25 +12:00
parent cd756885a6
commit 7a2b78b1d8
3 changed files with 33 additions and 6 deletions

View File

@@ -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)

View File

@@ -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");

View File

@@ -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");