From 9d2f33d42cfa9093e51254fbdfd1c7df72b42070 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Sat, 27 Dec 2014 19:00:03 +0100 Subject: [PATCH] add a World type --- OpenRA.Game/Game.cs | 9 +++++---- OpenRA.Game/Graphics/WorldRenderer.cs | 4 ++-- OpenRA.Game/Network/UnitOrders.cs | 2 +- OpenRA.Game/World.cs | 12 ++++++++---- OpenRA.Mods.RA/Widgets/Logic/MusicPlayerLogic.cs | 2 +- 5 files changed, 17 insertions(+), 12 deletions(-) diff --git a/OpenRA.Game/Game.cs b/OpenRA.Game/Game.cs index 0315daef3c..4dad5599d2 100644 --- a/OpenRA.Game/Game.cs +++ b/OpenRA.Game/Game.cs @@ -135,7 +135,7 @@ namespace OpenRA } public static event Action BeforeGameStart = () => { }; - internal static void StartGame(string mapUID, bool isShellmap) + internal static void StartGame(string mapUID, WorldType type) { Cursor.SetCursor(null); BeforeGameStart(); @@ -146,14 +146,15 @@ namespace OpenRA map = ModData.PrepareMap(mapUID); using (new PerfTimer("NewWorld")) { - OrderManager.World = new World(map, OrderManager, isShellmap); + OrderManager.World = new World(map, OrderManager, type); OrderManager.World.Timestep = Timestep; } if (worldRenderer != null) worldRenderer.Dispose(); + worldRenderer = new WorldRenderer(OrderManager.World); - + using (new PerfTimer("LoadComplete")) OrderManager.World.LoadComplete(worldRenderer); @@ -375,7 +376,7 @@ namespace OpenRA var shellmap = ChooseShellmap(); using (new PerfTimer("StartGame")) - StartGame(shellmap, true); + StartGame(shellmap, WorldType.Shellmap); } static string ChooseShellmap() diff --git a/OpenRA.Game/Graphics/WorldRenderer.cs b/OpenRA.Game/Graphics/WorldRenderer.cs index 072adf1635..17408f9fc7 100644 --- a/OpenRA.Game/Graphics/WorldRenderer.cs +++ b/OpenRA.Game/Graphics/WorldRenderer.cs @@ -107,7 +107,7 @@ namespace OpenRA.Graphics { RefreshPalette(); - if (World.IsShellmap && !Game.Settings.Game.ShowShellmap) + if (World.Type == WorldType.Shellmap && !Game.Settings.Game.ShowShellmap) return; var renderables = GenerateRenderables(); @@ -156,7 +156,7 @@ namespace OpenRA.Graphics foreach (var r in g) r.RenderDebugGeometry(this); - if (!World.IsShellmap && Game.Settings.Game.AlwaysShowStatusBars) + if (World.Type == WorldType.Regular && Game.Settings.Game.AlwaysShowStatusBars) { foreach (var g in World.Actors.Where(a => !a.Destroyed && a.HasTrait() diff --git a/OpenRA.Game/Network/UnitOrders.cs b/OpenRA.Game/Network/UnitOrders.cs index 359e59e486..2c9727e6bd 100644 --- a/OpenRA.Game/Network/UnitOrders.cs +++ b/OpenRA.Game/Network/UnitOrders.cs @@ -103,7 +103,7 @@ namespace OpenRA.Network } Game.AddChatLine(Color.White, "Server", "The game has started."); - Game.StartGame(orderManager.LobbyInfo.GlobalSettings.Map, false); + Game.StartGame(orderManager.LobbyInfo.GlobalSettings.Map, WorldType.Regular); break; } diff --git a/OpenRA.Game/World.cs b/OpenRA.Game/World.cs index 73f9b07f77..83fd3e0224 100644 --- a/OpenRA.Game/World.cs +++ b/OpenRA.Game/World.cs @@ -22,6 +22,8 @@ using OpenRA.Traits; namespace OpenRA { + public enum WorldType { Regular, Shellmap } + public class World { static readonly Func FalsePredicate = (u, v) => false; @@ -109,6 +111,8 @@ namespace OpenRA public readonly TileSet TileSet; public readonly ActorMap ActorMap; public readonly ScreenMap ScreenMap; + public readonly WorldType Type; + readonly GameInformation gameInfo; public void IssueOrder(Order o) { OrderManager.IssueOrder(o); } /* avoid exposing the OM to mod code */ @@ -146,9 +150,9 @@ namespace OpenRA } } - internal World(Map map, OrderManager orderManager, bool isShellmap) + internal World(Map map, OrderManager orderManager, WorldType type) { - IsShellmap = isShellmap; + Type = type; OrderManager = orderManager; orderGenerator = new UnitOrderGenerator(); Map = map; @@ -242,7 +246,7 @@ namespace OpenRA public bool Paused { get; internal set; } public bool PredictedPaused { get; internal set; } public bool PauseStateLocked { get; set; } - public bool IsShellmap = false; + public int WorldTick { get; private set; } public void SetPauseState(bool paused) @@ -261,7 +265,7 @@ namespace OpenRA public void Tick() { - if (!Paused && (!IsShellmap || Game.Settings.Game.ShowShellmap)) + if (!Paused && (Type != WorldType.Shellmap || Game.Settings.Game.ShowShellmap)) { WorldTick++; diff --git a/OpenRA.Mods.RA/Widgets/Logic/MusicPlayerLogic.cs b/OpenRA.Mods.RA/Widgets/Logic/MusicPlayerLogic.cs index e73115be0e..bb7ee73634 100644 --- a/OpenRA.Mods.RA/Widgets/Logic/MusicPlayerLogic.cs +++ b/OpenRA.Mods.RA/Widgets/Logic/MusicPlayerLogic.cs @@ -84,7 +84,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic var installButton = widget.GetOrNull("INSTALL_BUTTON"); if (installButton != null) { - installButton.IsDisabled = () => world == null || !world.IsShellmap; + installButton.IsDisabled = () => world == null || world.Type != WorldType.Shellmap; var args = new string[] { "Install.Music=true" }; installButton.OnClick = () => {