diff --git a/OpenRA.Game/Game.cs b/OpenRA.Game/Game.cs index 7fd0055914..b5de90524b 100644 --- a/OpenRA.Game/Game.cs +++ b/OpenRA.Game/Game.cs @@ -491,7 +491,11 @@ namespace OpenRA Sound.Tick(); Sync.CheckSyncUnchanged(world, orderManager.TickImmediate); - if (world != null) + if (world == null) + return; + + // Don't tick when the shellmap is disabled + if (world.ShouldTick) { var isNetTick = LocalTick % NetTickScale == 0; @@ -517,12 +521,13 @@ namespace OpenRA PerfHistory.Tick(); } - else - if (orderManager.NetFrameNumber == 0) - orderManager.LastTickTime = RunTime; + else if (orderManager.NetFrameNumber == 0) + orderManager.LastTickTime = RunTime; Sync.CheckSyncUnchanged(world, () => world.TickRender(worldRenderer)); } + else + PerfHistory.Tick(); } } } diff --git a/OpenRA.Game/World.cs b/OpenRA.Game/World.cs index 708e253c40..9e94843f07 100644 --- a/OpenRA.Game/World.cs +++ b/OpenRA.Game/World.cs @@ -262,6 +262,7 @@ namespace OpenRA public event Action ActorAdded = _ => { }; public event Action ActorRemoved = _ => { }; + public bool ShouldTick { get { return Type != WorldType.Shellmap || Game.Settings.Game.ShowShellmap; } } public bool Paused { get; internal set; } public bool PredictedPaused { get; internal set; } public bool PauseStateLocked { get; set; } @@ -284,7 +285,7 @@ namespace OpenRA public void Tick() { - if (!Paused && (Type != WorldType.Shellmap || Game.Settings.Game.ShowShellmap)) + if (!Paused) { WorldTick++; diff --git a/OpenRA.Mods.Common/Widgets/VqaPlayerWidget.cs b/OpenRA.Mods.Common/Widgets/VqaPlayerWidget.cs index ecb51c118e..45be7bae6b 100644 --- a/OpenRA.Mods.Common/Widgets/VqaPlayerWidget.cs +++ b/OpenRA.Mods.Common/Widgets/VqaPlayerWidget.cs @@ -37,14 +37,6 @@ namespace OpenRA.Mods.Common.Widgets Action onComplete; - readonly World world; - - [ObjectCreator.UseCtor] - public VqaPlayerWidget(World world) - { - this.world = world; - } - public void Load(string filename) { if (filename == cachedVideo) @@ -201,7 +193,7 @@ namespace OpenRA.Mods.Common.Widgets Game.Sound.StopVideo(); video.Reset(); videoSprite.Sheet.GetTexture().SetData(video.FrameData); - world.AddFrameEndTask(_ => onComplete()); + Game.RunAfterTick(onComplete); } public void CloseVideo()