2012-08-09 09:45:04 +00:00
|
|
|
#region Using Statements
|
2011-11-08 00:37:48 +00:00
|
|
|
using System;
|
2012-08-29 12:46:08 +00:00
|
|
|
using ANX.Framework.NonXNA.Development;
|
2012-08-25 17:27:45 +00:00
|
|
|
|
2011-11-08 00:37:48 +00:00
|
|
|
|
|
|
|
#endregion // Using Statements
|
|
|
|
|
2012-08-09 09:45:04 +00:00
|
|
|
// This file is part of the ANX.Framework created by the
|
|
|
|
// "ANX.Framework developer group" and released under the Ms-PL license.
|
|
|
|
// For details see: http://anxframework.codeplex.com/license
|
2011-11-08 00:37:48 +00:00
|
|
|
|
|
|
|
namespace ANX.Framework
|
|
|
|
{
|
2012-08-29 12:46:08 +00:00
|
|
|
[PercentageComplete(100)]
|
|
|
|
[TestState(TestStateAttribute.TestState.Untested)]
|
2012-08-29 13:14:00 +00:00
|
|
|
[Developer("Glatzemann")]
|
2011-11-08 00:37:48 +00:00
|
|
|
public class GameComponent : IGameComponent, IUpdateable, IDisposable
|
|
|
|
{
|
|
|
|
private bool enabled = true;
|
2012-08-29 12:32:14 +00:00
|
|
|
private int updateOrder;
|
|
|
|
private Game game;
|
|
|
|
|
|
|
|
public event EventHandler<EventArgs> EnabledChanged;
|
|
|
|
public event EventHandler<EventArgs> UpdateOrderChanged;
|
|
|
|
public event EventHandler<EventArgs> Disposed;
|
2011-11-08 00:37:48 +00:00
|
|
|
|
|
|
|
public bool Enabled
|
|
|
|
{
|
|
|
|
get { return enabled; }
|
|
|
|
set
|
|
|
|
{
|
|
|
|
if (enabled != value)
|
|
|
|
{
|
|
|
|
enabled = value;
|
|
|
|
OnEnabledChanged(this, EventArgs.Empty);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public int UpdateOrder
|
|
|
|
{
|
|
|
|
get { return updateOrder; }
|
|
|
|
set
|
|
|
|
{
|
|
|
|
if (updateOrder != value)
|
|
|
|
{
|
|
|
|
updateOrder = value;
|
|
|
|
OnUpdateOrderChanged(this, EventArgs.Empty);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public Game Game
|
|
|
|
{
|
|
|
|
get { return game; }
|
|
|
|
}
|
|
|
|
|
|
|
|
public GameComponent(Game game)
|
|
|
|
{
|
|
|
|
this.game = game;
|
|
|
|
}
|
|
|
|
|
2011-11-18 11:04:26 +00:00
|
|
|
~GameComponent()
|
|
|
|
{
|
|
|
|
this.Dispose(false);
|
|
|
|
}
|
|
|
|
|
2011-11-08 00:37:48 +00:00
|
|
|
protected virtual void OnEnabledChanged(object sender, EventArgs args)
|
|
|
|
{
|
|
|
|
if (EnabledChanged != null)
|
|
|
|
{
|
|
|
|
EnabledChanged(sender, args);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
protected virtual void OnUpdateOrderChanged(object sender, EventArgs args)
|
|
|
|
{
|
|
|
|
if (UpdateOrderChanged != null)
|
|
|
|
{
|
|
|
|
UpdateOrderChanged(sender, args);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public virtual void Initialize()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
public virtual void Update(GameTime gameTime)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
public void Dispose()
|
|
|
|
{
|
|
|
|
this.Dispose(true);
|
|
|
|
GC.SuppressFinalize(this);
|
|
|
|
}
|
|
|
|
|
|
|
|
protected virtual void Dispose(bool disposing)
|
|
|
|
{
|
|
|
|
if (disposing)
|
|
|
|
{
|
|
|
|
if (this.Game != null)
|
|
|
|
{
|
|
|
|
this.Game.Components.Remove(this);
|
|
|
|
}
|
|
|
|
if (this.Disposed != null)
|
|
|
|
{
|
|
|
|
this.Disposed(this, EventArgs.Empty);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|