using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; namespace SuperPolarity { class Widget { public List Children; public Dictionary>> Listeners; public Vector2 Position; public SuperPolarity Game; protected bool Active; public Widget(SuperPolarity game, Vector2 position) { Game = game; Position = position; Active = false; Children = new List(); Listeners = new Dictionary>>(); } public void Activate() { Active = true; } public void Deactivate() { Active = false; } public virtual void AppendChild(Widget widget) { Children.Add(widget); } public virtual void Bind(string eventName, Action eventListener) { List> newListenerList; List> listenerList; bool foundListeners; if (!Listeners.ContainsKey(eventName)) { newListenerList = new List>(); Listeners.Add(eventName, newListenerList); } foundListeners = Listeners.TryGetValue(eventName, out listenerList); listenerList.Add(eventListener); } public virtual void Unbind(string eventName, Action eventListener) { // NOT YET IMPLEMENTED; } public virtual void Dispatch(string eventName, float value) { List> listenerList; bool foundListeners; foundListeners = Listeners.TryGetValue(eventName, out listenerList); if (!foundListeners) { return; } foreach (Action method in listenerList) { method(value); } } public virtual void Update(GameTime gameTime) { } public virtual void Draw(SpriteBatch spriteBatch) { } } }