axiosengine/axios/Engine/AxiosEvents.cs

137 lines
4.3 KiB
C#

using System;
using FarseerPhysics.SamplesFramework;
using GameStateManagement;
namespace Axios.Engine
{
public abstract class AxiosEvents
{
protected Boolean _hasFocus;
public bool HasFocus
{
get
{
return this._hasFocus;
}
set
{
this._hasFocus = value;
}
}
public delegate void AxiosHandler(object sender, AxiosGameScreen gameScreen, InputState input);
public delegate void AxiosGameObjectHandler(AxiosGameObject sender);
#region GameObjectEventMethods
public virtual void OnFocusEnter(AxiosGameScreen gameScreen, InputState input)
{
this.HasFocus = true;
this.OnEvent(FocusEnter, gameScreen, input);
}
public virtual void OnFocusLeave(AxiosGameScreen gameScreen, InputState input)
{
this.HasFocus = false;
this.OnEvent(FocusLeave, gameScreen, input);
}
public virtual void OnMouseHover(AxiosGameScreen gameScreen, InputState input)
{
this.OnEvent(MouseHover, gameScreen, input);
}
public virtual void OnMouseLeave(AxiosGameScreen gameScreen, InputState input)
{
this.OnEvent(MouseLeave, gameScreen, input);
}
public virtual void OnValueChange(AxiosGameScreen gameScreen, InputState input)
{
this.OnEvent(ValueChange, gameScreen, input);
}
public virtual void OnMouseDown(AxiosGameScreen gameScreen, InputState input)
{
this.OnEvent(MouseDown, gameScreen, input);
}
public virtual void OnMouseUp(AxiosGameScreen gameScreen, InputState input)
{
this.OnEvent(MouseUp, gameScreen, input);
}
public virtual void OnScaleChange(AxiosGameObject gameObject)
{
if (this.ScaleChanged != null)
this.ScaleChanged(gameObject);
}
private void OnEvent(AxiosHandler e, AxiosGameScreen gameScreen, InputState input)
{
AxiosHandler handle = e;
if (handle != null)
handle(this, gameScreen, input);
}
#endregion
#region GameObjectEvents
/// <summary>
/// This event is fired when the the object looses focus
/// </summary>
/// <param name="sender">The object sending the event</param>
/// <param name="gameScreen">The gamescreen that this happened on</param>
/// <param name="kworld">The current version of the kosmos world</param>
public event AxiosHandler FocusLeave;
public event AxiosHandler MouseHover;
public event AxiosHandler MouseLeave;
public event AxiosHandler MouseDown;
public event AxiosHandler MouseUp;
/// <summary>
/// This event is fired when the the object gains focus
/// </summary>
/// <param name="sender">The object sending the event</param>
/// <param name="gameScreen">The gamescreen that this happened on</param>
/// <param name="kworld">The current version of the kosmos world</param>
public event AxiosHandler FocusEnter;
/// <summary>
/// This event is fired when the object's value changes
/// </summary>
/// <param name="sender">The object sending the event</param>
/// <param name="gameScreen">The gamescreen that this happened on</param>
/// <param name="kworld">The current version of the kosmos world</param>
public event AxiosHandler ValueChange;
public event AxiosGameObjectHandler RemoveObject;
public event AxiosGameObjectHandler ScaleChanged;
#endregion
protected virtual void OnRemove(AxiosGameObject gameObject)
{
RemoveObject(gameObject);
}
protected void RemoveEvents()
{
this.MouseDown = null;
this.MouseHover = null;
this.MouseLeave = null;
this.MouseUp = null;
this.FocusEnter = null;
this.FocusLeave = null;
}
}
}