diff options
author | Thomas Leyh <leyh.thomas@web.de> | 2016-07-24 08:14:18 +0200 |
---|---|---|
committer | Thomas Leyh <leyh.thomas@web.de> | 2016-07-24 08:14:18 +0200 |
commit | ced3d03bdb3ce866d832e03fb212865140905a9a (patch) | |
tree | 2a16c2063a46d3c354ce1585029dda3124f6ad93 /V3/Effects/EffectsManager.cs | |
parent | 0394dccaf06e1009e591a6ff4d645895574724c1 (diff) | |
download | V3-release.tar.gz V3-release.tar.bz2 |
Diffstat (limited to 'V3/Effects/EffectsManager.cs')
-rw-r--r-- | V3/Effects/EffectsManager.cs | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/V3/Effects/EffectsManager.cs b/V3/Effects/EffectsManager.cs new file mode 100644 index 0000000..a175e34 --- /dev/null +++ b/V3/Effects/EffectsManager.cs @@ -0,0 +1,54 @@ +using System.Collections.Generic; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Content; +using Microsoft.Xna.Framework.Graphics; +using V3.Data; + +namespace V3.Effects +{ + // ReSharper disable once ClassNeverInstantiated.Global + public sealed class EffectsManager : IEffectsManager + { + private readonly ContentManager mContentManager; + private readonly IOptionsManager mOptionsManager; + private readonly List<IEffect> mActiveEffects = new List<IEffect>(); + + public EffectsManager(ContentManager contentManager, IOptionsManager optionsManager) + { + mContentManager = contentManager; + mOptionsManager = optionsManager; + } + + public void Update(GameTime gameTime) + { + var doneEffects = new List<IEffect>(); + foreach (var effect in mActiveEffects) + { + effect.Update(gameTime); + if (!effect.IsPlaying) + { + doneEffects.Add(effect); + } + } + foreach (var doneEffect in doneEffects) + { + mActiveEffects.Remove(doneEffect); + } + } + + public void Draw(SpriteBatch spriteBatch) + { + foreach (var effect in mActiveEffects) + { + effect.Draw(spriteBatch); + } + } + + public void PlayOnce(IEffect effect, Point position, Point size) + { + effect.LoadContent(mContentManager); + mActiveEffects.Add(effect); + effect.PlayOnce(position, size, mOptionsManager); + } + } +}
\ No newline at end of file |