diff --git a/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj b/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj
index d884380292..87187989c5 100644
--- a/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj
+++ b/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj
@@ -88,6 +88,7 @@
+
diff --git a/OpenRA.Mods.Cnc/Widgets/CncIngameChromeLogic.cs b/OpenRA.Mods.Cnc/Widgets/CncIngameChromeLogic.cs
index e03637c40b..96dd70ab88 100755
--- a/OpenRA.Mods.Cnc/Widgets/CncIngameChromeLogic.cs
+++ b/OpenRA.Mods.Cnc/Widgets/CncIngameChromeLogic.cs
@@ -85,99 +85,4 @@ namespace OpenRA.Mods.Cnc.Widgets
};
}
}
-
- public class CncIngameMenuLogic : IWidgetDelegate
- {
- Widget menu;
-
- [ObjectCreator.UseCtor]
- public CncIngameMenuLogic([ObjectCreator.Param] Widget widget,
- [ObjectCreator.Param] World world,
- [ObjectCreator.Param] Action onExit)
- {
- var resumeDisabled = false;
- menu = widget.GetWidget("INGAME_MENU");
- var mpe = world.WorldActor.Trait();
- mpe.Fade(CncMenuPaletteEffect.EffectType.Desaturated);
-
- bool hideButtons = false;
- menu.GetWidget("MENU_BUTTONS").IsVisible = () => !hideButtons;
-
- // TODO: Create a mechanism to do things like this cleaner. Also needed for scripted missions
- Action onQuit = () =>
- {
- Sound.Play("batlcon1.aud");
- resumeDisabled = true;
- world.WorldActor.QueueActivity(new Wait(30));
- world.WorldActor.QueueActivity(new CallFunc(() => mpe.Fade(CncMenuPaletteEffect.EffectType.Black)));
- world.WorldActor.QueueActivity(new Wait(mpe.Info.FadeLength));
- world.WorldActor.QueueActivity(new CallFunc(() =>
- {
- Game.DisconnectOnly();
- Widget.RootWidget.RemoveChildren();
- Game.LoadShellMap();
- }));
- };
-
- Action doNothing = () => {};
-
- menu.GetWidget("QUIT_BUTTON").OnClick = () =>
- PromptConfirmAction("Abort Mission", "Leave this game and return to the menu?", onQuit, doNothing);
-
- Action onSurrender = () => world.IssueOrder(new Order("Surrender", world.LocalPlayer.PlayerActor, false));
- var surrenderButton = menu.GetWidget("SURRENDER_BUTTON");
- surrenderButton.IsDisabled = () => (world.LocalPlayer == null || world.LocalPlayer.WinState != WinState.Undefined);
- surrenderButton.OnClick = () =>
- PromptConfirmAction("Surrender", "Are you sure you want to surrender?", onSurrender, doNothing);
-
- menu.GetWidget("MUSIC_BUTTON").OnClick = () =>
- {
- hideButtons = true;
- Widget.OpenWindow("MUSIC_PANEL", new WidgetArgs()
- {
- { "onExit", () => hideButtons = false },
- });
- };
-
- menu.GetWidget("PREFERENCES_BUTTON").OnClick = () =>
- {
- hideButtons = true;
- Widget.OpenWindow("SETTINGS_PANEL", new WidgetArgs()
- {
- { "world", world },
- { "onExit", () => hideButtons = false },
- });
- };
-
- var resumeButton = menu.GetWidget("RESUME_BUTTON");
- resumeButton.IsDisabled = () => resumeDisabled;
- resumeButton.OnClick = () =>
- {
- Widget.RootWidget.RemoveChild(menu);
- world.WorldActor.Trait().Fade(CncMenuPaletteEffect.EffectType.None);
- onExit();
- };
- }
-
- public void PromptConfirmAction(string title, string text, Action onConfirm, Action onCancel)
- {
- var prompt = menu.GetWidget("CONFIRM_PROMPT");
-
- prompt.GetWidget("PROMPT_TITLE").GetText = () => title;
- prompt.GetWidget("PROMPT_TEXT").GetText = () => text;
-
- prompt.GetWidget("CONFIRM_BUTTON").OnClick = () =>
- {
- prompt.IsVisible = () => false;
- onConfirm();
- };
-
- prompt.GetWidget("CANCEL_BUTTON").OnClick = () =>
- {
- prompt.IsVisible = () => false;
- onCancel();
- };
- prompt.IsVisible = () => true;
- }
- }
}
diff --git a/OpenRA.Mods.Cnc/Widgets/CncIngameMenuLogic.cs b/OpenRA.Mods.Cnc/Widgets/CncIngameMenuLogic.cs
new file mode 100755
index 0000000000..472c48975b
--- /dev/null
+++ b/OpenRA.Mods.Cnc/Widgets/CncIngameMenuLogic.cs
@@ -0,0 +1,113 @@
+#region Copyright & License Information
+/*
+ * Copyright 2007-2011 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. For more information,
+ * see COPYING.
+ */
+#endregion
+
+using System;
+using System.Drawing;
+using OpenRA.Mods.RA;
+using OpenRA.Widgets;
+using OpenRA.Mods.RA.Activities;
+
+namespace OpenRA.Mods.Cnc.Widgets
+{
+ public class CncIngameMenuLogic : IWidgetDelegate
+ {
+ Widget menu;
+
+ [ObjectCreator.UseCtor]
+ public CncIngameMenuLogic([ObjectCreator.Param] Widget widget,
+ [ObjectCreator.Param] World world,
+ [ObjectCreator.Param] Action onExit)
+ {
+ var resumeDisabled = false;
+ menu = widget.GetWidget("INGAME_MENU");
+ var mpe = world.WorldActor.Trait();
+ mpe.Fade(CncMenuPaletteEffect.EffectType.Desaturated);
+
+ bool hideButtons = false;
+ menu.GetWidget("MENU_BUTTONS").IsVisible = () => !hideButtons;
+
+ // TODO: Create a mechanism to do things like this cleaner. Also needed for scripted missions
+ Action onQuit = () =>
+ {
+ Sound.Play("batlcon1.aud");
+ resumeDisabled = true;
+ world.WorldActor.QueueActivity(new Wait(30));
+ world.WorldActor.QueueActivity(new CallFunc(() => mpe.Fade(CncMenuPaletteEffect.EffectType.Black)));
+ world.WorldActor.QueueActivity(new Wait(mpe.Info.FadeLength));
+ world.WorldActor.QueueActivity(new CallFunc(() =>
+ {
+ Game.DisconnectOnly();
+ Widget.RootWidget.RemoveChildren();
+ Game.LoadShellMap();
+ }));
+ };
+
+ Action doNothing = () => {};
+
+ menu.GetWidget("QUIT_BUTTON").OnClick = () =>
+ PromptConfirmAction("Abort Mission", "Leave this game and return to the menu?", onQuit, doNothing);
+
+ Action onSurrender = () => world.IssueOrder(new Order("Surrender", world.LocalPlayer.PlayerActor, false));
+ var surrenderButton = menu.GetWidget("SURRENDER_BUTTON");
+ surrenderButton.IsDisabled = () => (world.LocalPlayer == null || world.LocalPlayer.WinState != WinState.Undefined);
+ surrenderButton.OnClick = () =>
+ PromptConfirmAction("Surrender", "Are you sure you want to surrender?", onSurrender, doNothing);
+
+ menu.GetWidget("MUSIC_BUTTON").OnClick = () =>
+ {
+ hideButtons = true;
+ Widget.OpenWindow("MUSIC_PANEL", new WidgetArgs()
+ {
+ { "onExit", () => hideButtons = false },
+ });
+ };
+
+ menu.GetWidget("PREFERENCES_BUTTON").OnClick = () =>
+ {
+ hideButtons = true;
+ Widget.OpenWindow("SETTINGS_PANEL", new WidgetArgs()
+ {
+ { "world", world },
+ { "onExit", () => hideButtons = false },
+ });
+ };
+
+ var resumeButton = menu.GetWidget("RESUME_BUTTON");
+ resumeButton.IsDisabled = () => resumeDisabled;
+ resumeButton.OnClick = () =>
+ {
+ Widget.RootWidget.RemoveChild(menu);
+ world.WorldActor.Trait().Fade(CncMenuPaletteEffect.EffectType.None);
+ onExit();
+ };
+ }
+
+ public void PromptConfirmAction(string title, string text, Action onConfirm, Action onCancel)
+ {
+ var prompt = menu.GetWidget("CONFIRM_PROMPT");
+
+ prompt.GetWidget("PROMPT_TITLE").GetText = () => title;
+ prompt.GetWidget("PROMPT_TEXT").GetText = () => text;
+
+ prompt.GetWidget("CONFIRM_BUTTON").OnClick = () =>
+ {
+ prompt.IsVisible = () => false;
+ onConfirm();
+ };
+
+ prompt.GetWidget("CANCEL_BUTTON").OnClick = () =>
+ {
+ prompt.IsVisible = () => false;
+ onCancel();
+ };
+ prompt.IsVisible = () => true;
+ }
+ }
+}