Show More
Commit Description:
Various UI improvements.
Commit Description:
Various UI improvements.
References:
File last commit:
Show/Diff file:
Action:
FNA/src/GameComponent.cs
150 lines | 2.5 KiB | text/x-csharp | CSharpLexer
150 lines | 2.5 KiB | text/x-csharp | CSharpLexer
r0 | #region License | |||
/* FNA - XNA4 Reimplementation for Desktop Platforms | ||||
* Copyright 2009-2020 Ethan Lee and the MonoGame Team | ||||
* | ||||
* Released under the Microsoft Public License. | ||||
* See LICENSE for details. | ||||
*/ | ||||
#endregion | ||||
#region Using Statements | ||||
using System; | ||||
#endregion | ||||
namespace Microsoft.Xna.Framework | ||||
{ | ||||
public class GameComponent : IGameComponent, IUpdateable, IComparable<GameComponent>, IDisposable | ||||
{ | ||||
#region Public Properties | ||||
public Game Game | ||||
{ | ||||
get; | ||||
private set; | ||||
} | ||||
public bool Enabled | ||||
{ | ||||
get | ||||
{ | ||||
return _enabled; | ||||
} | ||||
set | ||||
{ | ||||
if (_enabled != value) | ||||
{ | ||||
_enabled = value; | ||||
if (this.EnabledChanged != null) | ||||
{ | ||||
this.EnabledChanged(this, EventArgs.Empty); | ||||
} | ||||
OnEnabledChanged(this, null); | ||||
} | ||||
} | ||||
} | ||||
public int UpdateOrder | ||||
{ | ||||
get | ||||
{ | ||||
return _updateOrder; | ||||
} | ||||
set | ||||
{ | ||||
if (_updateOrder != value) | ||||
{ | ||||
_updateOrder = value; | ||||
if (this.UpdateOrderChanged != null) | ||||
{ | ||||
this.UpdateOrderChanged(this, EventArgs.Empty); | ||||
} | ||||
OnUpdateOrderChanged(this, null); | ||||
} | ||||
} | ||||
} | ||||
#endregion | ||||
#region Private Variables | ||||
bool _enabled = true; | ||||
int _updateOrder; | ||||
#endregion | ||||
#region Events | ||||
public event EventHandler<EventArgs> Disposed; | ||||
public event EventHandler<EventArgs> EnabledChanged; | ||||
public event EventHandler<EventArgs> UpdateOrderChanged; | ||||
#endregion | ||||
#region Public Constructors | ||||
public GameComponent(Game game) | ||||
{ | ||||
this.Game = game; | ||||
} | ||||
#endregion | ||||
#region Deconstructor | ||||
~GameComponent() | ||||
{ | ||||
Dispose(false); | ||||
} | ||||
#endregion | ||||
#region Public Dispose Method | ||||
/// <summary> | ||||
/// Shuts down the component. | ||||
/// </summary> | ||||
public void Dispose() | ||||
{ | ||||
Dispose(true); | ||||
GC.SuppressFinalize(this); | ||||
} | ||||
#endregion | ||||
#region Public Virtual Methods | ||||
public virtual void Initialize() {} | ||||
public virtual void Update(GameTime gameTime) {} | ||||
#endregion | ||||
#region Protected Virtual Methods | ||||
protected virtual void OnUpdateOrderChanged(object sender, EventArgs args) {} | ||||
protected virtual void OnEnabledChanged(object sender, EventArgs args) {} | ||||
/// <summary> | ||||
/// Shuts down the component. | ||||
/// </summary> | ||||
protected virtual void Dispose(bool disposing) | ||||
{ | ||||
if (disposing && Disposed != null) | ||||
{ | ||||
Disposed(this, EventArgs.Empty); | ||||
} | ||||
} | ||||
#endregion | ||||
#region IComparable<GameComponent> Members | ||||
int IComparable<GameComponent>.CompareTo(GameComponent other) | ||||
{ | ||||
return other.UpdateOrder - this.UpdateOrder; | ||||
} | ||||
#endregion | ||||
} | ||||
} | ||||