using eDriven.Core.Events;
public class GameModel : EventDispatcher
{
// ReSharper disable UnusedMember.Global
// ReSharper disable InconsistentNaming
public const string NUMBER_OF_LIVES_CHANGED = "numberOfLivesChanged";
public const string SCENE_CHANGED = "sceneChanged";
public const string PAUSE_CHANGED = "pauseChanged";
public const string RESET = "reset";
// ReSharper restore InconsistentNaming
// ReSharper restore UnusedMember.Global
#region Singleton
private static GameModel _instance;
private GameModel()
{
// constructor is protected!
}
///
/// Singleton instance
///
public static GameModel Instance
{
get
{
if (_instance == null)
{
_instance = new GameModel();
_instance.Initialize();
}
return _instance;
}
}
///
/// Initialization routine
/// Put inside the initialization stuff, if needed
///
private void Initialize()
{
// initialization here
}
#endregion
private bool _paused = true;
///
/// The example of event dispatching property
///
public bool Paused
{
get
{
return _paused;
}
set
{
if (value != _paused)
{
_paused = value;
ValueEvent ve = new ValueEvent(PAUSE_CHANGED);
ve.Value = _paused;
DispatchEvent(ve);
}
}
}
///
/// The example of event dispatching method
///
public void Reset()
{
ValueEvent ve = new ValueEvent(RESET);
DispatchEvent(ve);
}
#region Test properties
private float _lives = 3;
public float Lives
{
get
{
return _lives;
}
set
{
if (value != _lives)
{
_lives = value;
ValueEvent ve = new ValueEvent(NUMBER_OF_LIVES_CHANGED);
ve.Value = _lives;
DispatchEvent(ve);
}
}
}
private string _scene;
public string Scene
{
get
{
return _scene;
}
set
{
if (value != _scene)
{
_scene = value;
ValueEvent ve = new ValueEvent(SCENE_CHANGED);
ve.Value = _scene;
DispatchEvent(ve);
}
}
}
#endregion
}