#region Copyright & License Information /* * Copyright 2007-2017 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, either version 3 of * the License, or (at your option) any later version. For more * information, see COPYING. */ #endregion using OpenRA.Mods.Common.Traits; using OpenRA.Traits; using OpenRA.Widgets; namespace OpenRA.Mods.Common.Widgets.Logic { public class DebugMenuLogic : ChromeLogic { [ObjectCreator.UseCtor] public DebugMenuLogic(Widget widget, World world) { var devTrait = world.LocalPlayer.PlayerActor.Trait(); var debugVis = world.WorldActor.TraitOrDefault(); var visibilityCheckbox = widget.GetOrNull("DISABLE_VISIBILITY_CHECKS"); if (visibilityCheckbox != null) { visibilityCheckbox.IsChecked = () => devTrait.DisableShroud; visibilityCheckbox.OnClick = () => Order(world, "DevVisibility"); } var pathCheckbox = widget.GetOrNull("SHOW_UNIT_PATHS"); if (pathCheckbox != null) { pathCheckbox.IsChecked = () => devTrait.PathDebug; pathCheckbox.OnClick = () => Order(world, "DevPathDebug"); } var cashButton = widget.GetOrNull("GIVE_CASH"); if (cashButton != null) cashButton.OnClick = () => world.IssueOrder(new Order("DevGiveCash", world.LocalPlayer.PlayerActor, false)); var growResourcesButton = widget.GetOrNull("GROW_RESOURCES"); if (growResourcesButton != null) growResourcesButton.OnClick = () => world.IssueOrder(new Order("DevGrowResources", world.LocalPlayer.PlayerActor, false)); var fastBuildCheckbox = widget.GetOrNull("INSTANT_BUILD"); if (fastBuildCheckbox != null) { fastBuildCheckbox.IsChecked = () => devTrait.FastBuild; fastBuildCheckbox.OnClick = () => Order(world, "DevFastBuild"); } var fastChargeCheckbox = widget.GetOrNull("INSTANT_CHARGE"); if (fastChargeCheckbox != null) { fastChargeCheckbox.IsChecked = () => devTrait.FastCharge; fastChargeCheckbox.OnClick = () => Order(world, "DevFastCharge"); } var showCombatCheckbox = widget.GetOrNull("SHOW_COMBATOVERLAY"); if (showCombatCheckbox != null) { showCombatCheckbox.Disabled = debugVis == null; showCombatCheckbox.IsChecked = () => debugVis != null && debugVis.CombatGeometry; showCombatCheckbox.OnClick = () => debugVis.CombatGeometry ^= true; } var showGeometryCheckbox = widget.GetOrNull("SHOW_GEOMETRY"); if (showGeometryCheckbox != null) { showGeometryCheckbox.Disabled = debugVis == null; showGeometryCheckbox.IsChecked = () => debugVis != null && debugVis.RenderGeometry; showGeometryCheckbox.OnClick = () => debugVis.RenderGeometry ^= true; } var terrainGeometryTrait = world.WorldActor.Trait(); var showTerrainGeometryCheckbox = widget.GetOrNull("SHOW_TERRAIN_OVERLAY"); if (showTerrainGeometryCheckbox != null && terrainGeometryTrait != null) { showTerrainGeometryCheckbox.IsChecked = () => terrainGeometryTrait.Enabled; showTerrainGeometryCheckbox.OnClick = () => terrainGeometryTrait.Enabled ^= true; } var showDepthPreviewCheckbox = widget.GetOrNull("SHOW_DEPTH_PREVIEW"); if (showDepthPreviewCheckbox != null) { showDepthPreviewCheckbox.Disabled = debugVis == null; showDepthPreviewCheckbox.IsChecked = () => debugVis != null && debugVis.DepthBuffer; showDepthPreviewCheckbox.OnClick = () => debugVis.DepthBuffer ^= true; } var allTechCheckbox = widget.GetOrNull("ENABLE_TECH"); if (allTechCheckbox != null) { allTechCheckbox.IsChecked = () => devTrait.AllTech; allTechCheckbox.OnClick = () => Order(world, "DevEnableTech"); } var powerCheckbox = widget.GetOrNull("UNLIMITED_POWER"); if (powerCheckbox != null) { powerCheckbox.IsChecked = () => devTrait.UnlimitedPower; powerCheckbox.OnClick = () => Order(world, "DevUnlimitedPower"); } var buildAnywhereCheckbox = widget.GetOrNull("BUILD_ANYWHERE"); if (buildAnywhereCheckbox != null) { buildAnywhereCheckbox.IsChecked = () => devTrait.BuildAnywhere; buildAnywhereCheckbox.OnClick = () => Order(world, "DevBuildAnywhere"); } var explorationButton = widget.GetOrNull("GIVE_EXPLORATION"); if (explorationButton != null) explorationButton.OnClick = () => world.IssueOrder(new Order("DevGiveExploration", world.LocalPlayer.PlayerActor, false)); var noexplorationButton = widget.GetOrNull("RESET_EXPLORATION"); if (noexplorationButton != null) noexplorationButton.OnClick = () => world.IssueOrder(new Order("DevResetExploration", world.LocalPlayer.PlayerActor, false)); var showActorTagsCheckbox = widget.GetOrNull("SHOW_ACTOR_TAGS"); if (showActorTagsCheckbox != null) { showActorTagsCheckbox.Disabled = debugVis == null; showActorTagsCheckbox.IsChecked = () => debugVis != null && debugVis.ActorTags; showActorTagsCheckbox.OnClick = () => debugVis.ActorTags ^= true; } var showCustomTerrainCheckbox = widget.GetOrNull("SHOW_CUSTOMTERRAIN_OVERLAY"); if (showCustomTerrainCheckbox != null) { var customTerrainDebugTrait = world.WorldActor.TraitOrDefault(); showCustomTerrainCheckbox.Disabled = customTerrainDebugTrait == null; if (customTerrainDebugTrait != null) { showCustomTerrainCheckbox.IsChecked = () => customTerrainDebugTrait.Enabled; showCustomTerrainCheckbox.OnClick = () => customTerrainDebugTrait.Enabled ^= true; } } } public void Order(World world, string order) { world.IssueOrder(new Order(order, world.LocalPlayer.PlayerActor, false)); } } }