Fix C&C options menu fade effect.

This commit is contained in:
Paul Chote
2013-04-06 16:41:13 +13:00
parent 2cb634b8f5
commit fe091487cc
4 changed files with 13 additions and 4 deletions

View File

@@ -190,7 +190,8 @@ namespace OpenRA
else else
if (orderManager.NetFrameNumber == 0) if (orderManager.NetFrameNumber == 0)
orderManager.LastTickTime = Environment.TickCount; orderManager.LastTickTime = Environment.TickCount;
world.TickRender(worldRenderer);
viewport.Tick(); viewport.Tick();
} }
} }

View File

@@ -34,6 +34,7 @@ namespace OpenRA.Traits
} }
public interface ITick { void Tick(Actor self); } public interface ITick { void Tick(Actor self); }
public interface ITickRender { void TickRender(WorldRenderer wr, Actor self); }
public interface IRender { IEnumerable<Renderable> Render(Actor self, WorldRenderer wr); } public interface IRender { IEnumerable<Renderable> Render(Actor self, WorldRenderer wr); }
public interface IAutoSelectionSize { int2 SelectionSize(Actor self); } public interface IAutoSelectionSize { int2 SelectionSize(Actor self); }

View File

@@ -13,6 +13,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using OpenRA.Effects; using OpenRA.Effects;
using OpenRA.FileFormats; using OpenRA.FileFormats;
using OpenRA.Graphics;
using OpenRA.Network; using OpenRA.Network;
using OpenRA.Orders; using OpenRA.Orders;
using OpenRA.Support; using OpenRA.Support;
@@ -192,7 +193,12 @@ namespace OpenRA
while (frameEndActions.Count != 0) while (frameEndActions.Count != 0)
frameEndActions.Dequeue()(this); frameEndActions.Dequeue()(this);
}
// For things that want to update their render state once per tick, ignoring pause state
public void TickRender(WorldRenderer wr)
{
ActorsWithTrait<ITickRender>().Do(x => x.Trait.TickRender(wr, x.Actor));
} }
public IEnumerable<Actor> Actors { get { return actors; } } public IEnumerable<Actor> Actors { get { return actors; } }

View File

@@ -11,6 +11,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using OpenRA.FileFormats; using OpenRA.FileFormats;
using OpenRA.Graphics;
using OpenRA.Traits; using OpenRA.Traits;
namespace OpenRA.Mods.Cnc namespace OpenRA.Mods.Cnc
@@ -22,7 +23,7 @@ namespace OpenRA.Mods.Cnc
public object Create(ActorInitializer init) { return new CncMenuPaletteEffect(this); } public object Create(ActorInitializer init) { return new CncMenuPaletteEffect(this); }
} }
public class CncMenuPaletteEffect : IPaletteModifier, ITick public class CncMenuPaletteEffect : IPaletteModifier, ITickRender
{ {
public enum EffectType { None, Black, Desaturated } public enum EffectType { None, Black, Desaturated }
public readonly CncMenuPaletteEffectInfo Info; public readonly CncMenuPaletteEffectInfo Info;
@@ -40,7 +41,7 @@ namespace OpenRA.Mods.Cnc
to = type; to = type;
} }
public void Tick(Actor self) public void TickRender(WorldRenderer wr, Actor self)
{ {
if (remainingFrames > 0) if (remainingFrames > 0)
remainingFrames--; remainingFrames--;