From 4f505eb6a100cf32c03ebafd00e42963f686f404 Mon Sep 17 00:00:00 2001 From: Tirili Date: Sun, 23 Oct 2011 13:13:43 +1300 Subject: [PATCH] Add ability to disable the shellmap --- OpenRA.Game/Game.cs | 6 +++--- OpenRA.Game/GameRules/Settings.cs | 1 + OpenRA.Game/Graphics/WorldRenderer.cs | 4 ++++ OpenRA.Game/Network/UnitOrders.cs | 2 +- OpenRA.Game/World.cs | 12 ++++++++++-- OpenRA.Mods.RA/Widgets/Logic/SettingsMenuLogic.cs | 4 ++++ mods/ra/chrome/settings.yaml | 7 +++++++ 7 files changed, 30 insertions(+), 6 deletions(-) mode change 100755 => 100644 OpenRA.Game/GameRules/Settings.cs diff --git a/OpenRA.Game/Game.cs b/OpenRA.Game/Game.cs index edde7307d1..fc1b924902 100755 --- a/OpenRA.Game/Game.cs +++ b/OpenRA.Game/Game.cs @@ -205,13 +205,13 @@ namespace OpenRA } public static event Action BeforeGameStart = () => {}; - internal static void StartGame(string mapUID) + internal static void StartGame(string mapUID, bool isShellmap) { BeforeGameStart(); var map = modData.PrepareMap(mapUID); viewport = new Viewport(new int2(Renderer.Resolution), map.Bounds, Renderer); - orderManager.world = new World(modData.Manifest, map, orderManager); + orderManager.world = new World(modData.Manifest, map, orderManager) { IsShellmap = isShellmap }; worldRenderer = new WorldRenderer(orderManager.world); if (orderManager.GameStarted) return; @@ -306,7 +306,7 @@ namespace OpenRA public static void LoadShellMap() { - StartGame(ChooseShellmap()); + StartGame(ChooseShellmap(), true); } static string ChooseShellmap() diff --git a/OpenRA.Game/GameRules/Settings.cs b/OpenRA.Game/GameRules/Settings.cs old mode 100755 new mode 100644 index 2a2e33c136..3932262047 --- a/OpenRA.Game/GameRules/Settings.cs +++ b/OpenRA.Game/GameRules/Settings.cs @@ -90,6 +90,7 @@ namespace OpenRA.GameRules public string[] Mods = { "ra" }; public bool TeamChatToggle = false; + public bool ShowShellmap = true; public bool ViewportEdgeScroll = true; public MouseScrollType MouseScroll = MouseScrollType.Standard; diff --git a/OpenRA.Game/Graphics/WorldRenderer.cs b/OpenRA.Game/Graphics/WorldRenderer.cs index bcd99599bb..9d7b5a1cb0 100644 --- a/OpenRA.Game/Graphics/WorldRenderer.cs +++ b/OpenRA.Game/Graphics/WorldRenderer.cs @@ -67,6 +67,10 @@ namespace OpenRA.Graphics public void Draw() { RefreshPalette(); + + if (world.IsShellmap && !Game.Settings.Game.ShowShellmap) + return; + var bounds = Game.viewport.ViewBounds(world); Game.Renderer.EnableScissor(bounds.Left, bounds.Top, bounds.Width, bounds.Height); diff --git a/OpenRA.Game/Network/UnitOrders.cs b/OpenRA.Game/Network/UnitOrders.cs index bb197a33af..b4dd41bbbc 100755 --- a/OpenRA.Game/Network/UnitOrders.cs +++ b/OpenRA.Game/Network/UnitOrders.cs @@ -94,7 +94,7 @@ namespace OpenRA.Network case "StartGame": { Game.AddChatLine(Color.White, "Server", "The game has started."); - Game.StartGame(orderManager.LobbyInfo.GlobalSettings.Map); + Game.StartGame(orderManager.LobbyInfo.GlobalSettings.Map, false); break; } diff --git a/OpenRA.Game/World.cs b/OpenRA.Game/World.cs index eb1389f922..ab47b333eb 100644 --- a/OpenRA.Game/World.cs +++ b/OpenRA.Game/World.cs @@ -151,11 +151,18 @@ namespace OpenRA // Will do bad things in multiplayer games public bool EnableTick = true; + public bool IsShellmap = false; + + bool ShouldTick() + { + if (!EnableTick) return false; + return !IsShellmap || Game.Settings.Game.ShowShellmap; + } public void Tick() { // Todo: Expose this as an order so it can be synced - if (EnableTick) + if (ShouldTick()) { using( new PerfSample("tick_idle") ) foreach( var ni in ActorsWithTrait() ) @@ -171,7 +178,8 @@ namespace OpenRA x.Trait.Tick( x.Actor ); }, "[{2}] Trait: {0} ({1:0.000} ms)", Game.Settings.Debug.LongTickThreshold ); - effects.DoTimed( e => e.Tick( this ), "[{2}] Effect: {0} ({1:0.000} ms)", Game.Settings.Debug.LongTickThreshold ); + effects.DoTimed( e => e.Tick( this ), "[{2}] Effect: {0} ({1:0.000} ms)", + Game.Settings.Debug.LongTickThreshold ); } while (frameEndActions.Count != 0) diff --git a/OpenRA.Mods.RA/Widgets/Logic/SettingsMenuLogic.cs b/OpenRA.Mods.RA/Widgets/Logic/SettingsMenuLogic.cs index 0cf124bd72..802058e534 100644 --- a/OpenRA.Mods.RA/Widgets/Logic/SettingsMenuLogic.cs +++ b/OpenRA.Mods.RA/Widgets/Logic/SettingsMenuLogic.cs @@ -65,6 +65,10 @@ namespace OpenRA.Mods.RA.Widgets.Logic teamchatCheckbox.IsChecked = () => Game.Settings.Game.TeamChatToggle; teamchatCheckbox.OnClick = () => Game.Settings.Game.TeamChatToggle ^= true; + var showShellmapCheckbox = general.GetWidget("SHOW_SHELLMAP"); + showShellmapCheckbox.IsChecked = () => Game.Settings.Game.ShowShellmap; + showShellmapCheckbox.OnClick = () => Game.Settings.Game.ShowShellmap ^= true; + // Audio var audio = bg.GetWidget("AUDIO_PANE"); diff --git a/mods/ra/chrome/settings.yaml b/mods/ra/chrome/settings.yaml index 462eb73189..c12a74f413 100644 --- a/mods/ra/chrome/settings.yaml +++ b/mods/ra/chrome/settings.yaml @@ -119,6 +119,13 @@ Background@SETTINGS_MENU: Width:200 Height:20 Text: Shift-Enter Toggles Team Chat + Checkbox@SHOW_SHELLMAP: + Id:SHOW_SHELLMAP + X:0 + Y:150 + Width:200 + Height:20 + Text: Show Shellmap Container@AUDIO_PANE: Id:AUDIO_PANE X:37