diff --git a/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj b/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj index 4425d1d80e..f32f60a411 100644 --- a/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj +++ b/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj @@ -74,7 +74,6 @@ - diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj index bb21104cb3..968be6d787 100644 --- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj +++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj @@ -326,7 +326,6 @@ - @@ -361,6 +360,7 @@ + diff --git a/OpenRA.Mods.Cnc/Widgets/Logic/CncCheatsLogic.cs b/OpenRA.Mods.RA/Widgets/Logic/CheatsLogic.cs similarity index 65% rename from OpenRA.Mods.Cnc/Widgets/Logic/CncCheatsLogic.cs rename to OpenRA.Mods.RA/Widgets/Logic/CheatsLogic.cs index 9e127b74f5..f07d7db388 100644 --- a/OpenRA.Mods.Cnc/Widgets/Logic/CncCheatsLogic.cs +++ b/OpenRA.Mods.RA/Widgets/Logic/CheatsLogic.cs @@ -9,55 +9,54 @@ #endregion using System; +using OpenRA; using OpenRA.Traits; using OpenRA.Widgets; -namespace OpenRA.Mods.Cnc.Widgets.Logic +namespace OpenRA.Mods.RA.Widgets.Logic { - public class CncCheatsLogic + public class CheatsLogic { [ObjectCreator.UseCtor] - public CncCheatsLogic(Widget widget, Action onExit, World world) + public CheatsLogic(Widget widget, Action onExit, World world) { - var panel = widget; - var devTrait = world.LocalPlayer.PlayerActor.Trait(); - var shroudCheckbox = panel.GetWidget("DISABLE_SHROUD"); + + var shroudCheckbox = widget.GetWidget("DISABLE_SHROUD"); shroudCheckbox.IsChecked = () => devTrait.DisableShroud; shroudCheckbox.OnClick = () => Order(world, "DevShroud"); - var pathCheckbox = panel.GetWidget("SHOW_UNIT_PATHS"); + var pathCheckbox = widget.GetWidget("SHOW_UNIT_PATHS"); pathCheckbox.IsChecked = () => devTrait.PathDebug; pathCheckbox.OnClick = () => Order(world, "DevPathDebug"); - - panel.GetWidget("GIVE_CASH").OnClick = () => + widget.GetWidget("GIVE_CASH").OnClick = () => world.IssueOrder(new Order("DevGiveCash", world.LocalPlayer.PlayerActor, false)); - var fastBuildCheckbox = panel.GetWidget("INSTANT_BUILD"); + var fastBuildCheckbox = widget.GetWidget("INSTANT_BUILD"); fastBuildCheckbox.IsChecked = () => devTrait.FastBuild; fastBuildCheckbox.OnClick = () => Order(world, "DevFastBuild"); - var fastChargeCheckbox = panel.GetWidget("INSTANT_CHARGE"); + var fastChargeCheckbox = widget.GetWidget("INSTANT_CHARGE"); fastChargeCheckbox.IsChecked = () => devTrait.FastCharge; fastChargeCheckbox.OnClick = () => Order(world, "DevFastCharge"); - var allTechCheckbox = panel.GetWidget("ENABLE_TECH"); + var allTechCheckbox = widget.GetWidget("ENABLE_TECH"); allTechCheckbox.IsChecked = () => devTrait.AllTech; allTechCheckbox.OnClick = () => Order(world, "DevEnableTech"); - var powerCheckbox = panel.GetWidget("UNLIMITED_POWER"); + var powerCheckbox = widget.GetWidget("UNLIMITED_POWER"); powerCheckbox.IsChecked = () => devTrait.UnlimitedPower; powerCheckbox.OnClick = () => Order(world, "DevUnlimitedPower"); - var buildAnywhereCheckbox = panel.GetWidget("BUILD_ANYWHERE"); + var buildAnywhereCheckbox = widget.GetWidget("BUILD_ANYWHERE"); buildAnywhereCheckbox.IsChecked = () => devTrait.BuildAnywhere; buildAnywhereCheckbox.OnClick = () => Order(world, "DevBuildAnywhere"); - panel.GetWidget("GIVE_EXPLORATION").OnClick = () => + widget.GetWidget("GIVE_EXPLORATION").OnClick = () => world.IssueOrder(new Order("DevGiveExploration", world.LocalPlayer.PlayerActor, false)); - panel.GetWidget("CLOSE").OnClick = () => { Ui.CloseWindow(); onExit(); }; + widget.GetWidget("CLOSE").OnClick = () => { Ui.CloseWindow(); onExit(); }; } public void Order(World world, string order) diff --git a/OpenRA.Mods.RA/Widgets/Logic/DeveloperModeLogic.cs b/OpenRA.Mods.RA/Widgets/Logic/DeveloperModeLogic.cs deleted file mode 100644 index 74e9183e3e..0000000000 --- a/OpenRA.Mods.RA/Widgets/Logic/DeveloperModeLogic.cs +++ /dev/null @@ -1,71 +0,0 @@ -#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 OpenRA; -using OpenRA.Traits; -using OpenRA.Widgets; - -namespace OpenRA.Mods.RA.Widgets.Logic -{ - public class DeveloperModeLogic - { - [ObjectCreator.UseCtor] - public DeveloperModeLogic(World world) - { - var devmodeBG = Ui.Root.GetWidget("INGAME_ROOT").GetWidget("DEVELOPERMODE_BG"); - var devModeButton = Ui.Root.GetWidget("INGAME_DEVELOPERMODE_BUTTON"); - devModeButton.OnClick = () => devmodeBG.Visible ^= true; - - var devTrait = world.LocalPlayer.PlayerActor.Trait(); - - var shroudCheckbox = devmodeBG.GetWidget("CHECKBOX_SHROUD"); - shroudCheckbox.IsChecked = () => devTrait.DisableShroud; - shroudCheckbox.OnClick = () => Order(world, "DevShroud"); - - var pathCheckbox = devmodeBG.GetWidget("CHECKBOX_PATHDEBUG"); - pathCheckbox.IsChecked = () => devTrait.PathDebug; - pathCheckbox.OnClick = () => Order(world, "DevPathDebug"); - - var fastBuildCheckbox = devmodeBG.GetWidget("INSTANT_BUILD"); - fastBuildCheckbox.IsChecked = () => devTrait.FastBuild; - fastBuildCheckbox.OnClick = () => Order(world, "DevFastBuild"); - - var fastChargeCheckbox = devmodeBG.GetWidget("INSTANT_CHARGE"); - fastChargeCheckbox.IsChecked = () => devTrait.FastCharge; - fastChargeCheckbox.OnClick = () => Order(world, "DevFastCharge"); - - var allTechCheckbox = devmodeBG.GetWidget("ENABLE_TECH"); - allTechCheckbox.IsChecked = () => devTrait.AllTech; - allTechCheckbox.OnClick = () => Order(world, "DevEnableTech"); - - var powerCheckbox = devmodeBG.GetWidget("UNLIMITED_POWER"); - powerCheckbox.IsChecked = () => devTrait.UnlimitedPower; - powerCheckbox.OnClick = () => Order(world, "DevUnlimitedPower"); - - var buildAnywhereCheckbox = devmodeBG.GetWidget("BUILD_ANYWHERE"); - buildAnywhereCheckbox.IsChecked = () => devTrait.BuildAnywhere; - buildAnywhereCheckbox.OnClick = () => Order(world, "DevBuildAnywhere"); - - devmodeBG.GetWidget("GIVE_CASH").OnClick = () => - world.IssueOrder(new Order("DevGiveCash", world.LocalPlayer.PlayerActor, false)); - - devmodeBG.GetWidget("GIVE_EXPLORATION").OnClick = () => - world.IssueOrder(new Order("DevGiveExploration", world.LocalPlayer.PlayerActor, false)); - - devModeButton.IsVisible = () => { return world.LobbyInfo.GlobalSettings.AllowCheats; }; - } - - public void Order(World world, string order) - { - world.IssueOrder(new Order(order, world.LocalPlayer.PlayerActor, false)); - } - } -} diff --git a/OpenRA.Mods.RA/Widgets/Logic/IngameChromeLogic.cs b/OpenRA.Mods.RA/Widgets/Logic/IngameChromeLogic.cs index 9de9312164..07608f583e 100644 --- a/OpenRA.Mods.RA/Widgets/Logic/IngameChromeLogic.cs +++ b/OpenRA.Mods.RA/Widgets/Logic/IngameChromeLogic.cs @@ -30,6 +30,13 @@ namespace OpenRA.Mods.RA.Widgets.Logic r.GetWidget("INGAME_OPTIONS_BUTTON").OnClick = () => optionsBG.Visible = !optionsBG.Visible; + + var cheatsButton = gameRoot.GetWidget("CHEATS_BUTTON"); + cheatsButton.OnClick = () => + { + Game.OpenWindow("CHEATS_PANEL", new WidgetArgs() {{"onExit", () => {} }}); + }; + cheatsButton.IsVisible = () => world.LocalPlayer != null && world.LobbyInfo.GlobalSettings.AllowCheats; optionsBG.GetWidget("DISCONNECT").OnClick = () => LeaveGame(optionsBG); diff --git a/mods/cnc/chrome/cheats.yaml b/mods/cnc/chrome/cheats.yaml index 05e54df373..4e6b8a08e4 100644 --- a/mods/cnc/chrome/cheats.yaml +++ b/mods/cnc/chrome/cheats.yaml @@ -1,5 +1,5 @@ Container@CHEATS_PANEL: - Logic:CncCheatsLogic + Logic:CheatsLogic X:(WINDOW_RIGHT - WIDTH)/2 Y:(WINDOW_BOTTOM - 110)/2 Width:590 diff --git a/mods/ra/chrome/cheats.yaml b/mods/ra/chrome/cheats.yaml new file mode 100644 index 0000000000..6c5ed21dca --- /dev/null +++ b/mods/ra/chrome/cheats.yaml @@ -0,0 +1,76 @@ +Background@CHEATS_PANEL: + Logic:CheatsLogic + X:(WINDOW_RIGHT - WIDTH)/2 + Y:(WINDOW_BOTTOM - HEIGHT)/2 + Width:350 + Height:420 + Visible:true + Children: + Label@LABEL_TITLE: + X:(PARENT_RIGHT - WIDTH)/2 + Y:20 + Width:250 + Height:25 + Text:Developer Mode + Align:Center + Checkbox@DISABLE_SHROUD: + X:30 + Y:50 + Height:20 + Width:PARENT_RIGHT - 30 + Text:Disable Shroud + Button@GIVE_EXPLORATION + X:30 + Y:80 + Width:200 + Height:20 + Text: Give Exploration + Checkbox@SHOW_UNIT_PATHS: + X:30 + Y:110 + Width:PARENT_RIGHT - 30 + Height:20 + Text:Show Unit Paths + Button@GIVE_CASH: + X:30 + Y:140 + Width:200 + Height:20 + Text: Give Cash + Checkbox@INSTANT_BUILD: + X:30 + Y:170 + Width:PARENT_RIGHT - 30 + Height:20 + Text:Instant Build Speed + Checkbox@INSTANT_CHARGE: + X:30 + Y:200 + Width:PARENT_RIGHT - 30 + Height:20 + Text:Support Powers Charge Instantly + Checkbox@ENABLE_TECH: + X:30 + Y:230 + Width:PARENT_RIGHT - 30 + Height:20 + Text:Build Everything + Checkbox@UNLIMITED_POWER: + X:30 + Y:260 + Width:PARENT_RIGHT - 30 + Height:20 + Text:Unlimited Power + Checkbox@BUILD_ANYWHERE: + X:30 + Y:290 + Width:PARENT_RIGHT - 30 + Height:20 + Text:Build Anywhere + Button@CLOSE: + X:30 + Y:360 + Width:PARENT_RIGHT - 30 + Height:20 + Text:Close + Key:escape diff --git a/mods/ra/chrome/ingame.yaml b/mods/ra/chrome/ingame.yaml index 798b76dbbf..1ff583d0fa 100644 --- a/mods/ra/chrome/ingame.yaml +++ b/mods/ra/chrome/ingame.yaml @@ -73,12 +73,12 @@ Container@INGAME_ROOT: Height:25 Text:Diplomacy Font:Bold - Button@INGAME_DEVELOPERMODE_BUTTON: + Button@CHEATS_BUTTON: X:324 Y:0 Width:160 Height:25 - Text:Developer Mode + Text:Cheats Visible:false Font:Bold RadarBin@INGAME_RADAR_BIN: @@ -199,75 +199,6 @@ Container@INGAME_ROOT: Width: 760 Height: 30 UseContrast: yes - Background@DEVELOPERMODE_BG: - Logic:DeveloperModeLogic - X:(WINDOW_RIGHT - WIDTH)/2 - Y:(WINDOW_BOTTOM - HEIGHT)/2 - Width:350 - Height:370 - Visible:false - Children: - Label@LABEL_TITLE: - X:(PARENT_RIGHT - WIDTH)/2 - Y:20 - Width:250 - Height:25 - Text:Developer Mode - Align:Center - Checkbox@CHECKBOX_SHROUD - X:30 - Y:50 - Height:20 - Width:PARENT_RIGHT - 30 - Text:Disable Shroud - Button@GIVE_EXPLORATION - X:30 - Y:80 - Width:200 - Height:20 - Text: Give Exploration - Checkbox@CHECKBOX_PATHDEBUG: - X:30 - Y:110 - Width:PARENT_RIGHT - 30 - Height:20 - Text:Show Unit Paths - Button@GIVE_CASH - X:30 - Y:140 - Width:200 - Height:20 - Text: Give Cash - Checkbox@INSTANT_BUILD - X:30 - Y:170 - Width:PARENT_RIGHT - 30 - Height:20 - Text:Instant Build Speed - Checkbox@INSTANT_CHARGE - X:30 - Y:200 - Width:PARENT_RIGHT - 30 - Height:20 - Text:Support Powers Charge Instantly - Checkbox@ENABLE_TECH - X:30 - Y:230 - Width:PARENT_RIGHT - 30 - Height:20 - Text:Build Everything - Checkbox@UNLIMITED_POWER - X:30 - Y:260 - Width:PARENT_RIGHT - 30 - Height:20 - Text:Unlimited Power - Checkbox@BUILD_ANYWHERE - X:30 - Y:290 - Width:PARENT_RIGHT - 30 - Height:20 - Text:Build Anywhere Background@PERF_BG: ClickThrough:true Background:dialog4 diff --git a/mods/ra/mod.yaml b/mods/ra/mod.yaml index cb6e3e4de5..142c488fb7 100644 --- a/mods/ra/mod.yaml +++ b/mods/ra/mod.yaml @@ -63,6 +63,8 @@ ChromeLayout: mods/ra/chrome/replaybrowser.yaml mods/ra/chrome/dropdowns.yaml mods/ra/chrome/modchooser.yaml + mods/ra/chrome/cheats.yaml + Weapons: mods/ra/weapons.yaml