]> git.r.bdr.sh - rbdr/super-polarity/blobdiff - SuperPolarityMac/Widget.cs
Removes spaces.
[rbdr/super-polarity] / SuperPolarityMac / Widget.cs
diff --git a/SuperPolarityMac/Widget.cs b/SuperPolarityMac/Widget.cs
new file mode 100644 (file)
index 0000000..ea92cfd
--- /dev/null
@@ -0,0 +1,92 @@
+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<Widget> Children;
+        public Dictionary<string, List<Action<float>>> 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<Widget>();
+            Listeners = new Dictionary<string, List<Action<float>>>();
+        }
+
+        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<float> eventListener)
+        {
+            List<Action<float>> newListenerList;
+            List<Action<float>> listenerList;
+            bool foundListeners;
+
+            if (!Listeners.ContainsKey(eventName))
+            {
+                newListenerList = new List<Action<float>>();
+                Listeners.Add(eventName, newListenerList);
+            }
+
+            foundListeners = Listeners.TryGetValue(eventName, out listenerList);
+
+            listenerList.Add(eventListener);
+        }
+
+        public virtual void Unbind(string eventName, Action<float> eventListener)
+        {
+            // NOT YET IMPLEMENTED;
+        }
+
+        public virtual void Dispatch(string eventName, float value)
+        {
+            List<Action<float>> listenerList;
+            bool foundListeners;
+
+            foundListeners = Listeners.TryGetValue(eventName, out listenerList);
+
+            if (!foundListeners)
+            {
+                return;
+            }
+
+            foreach (Action<float> method in listenerList)
+            {
+                method(value);
+            }
+        }
+
+        public virtual void Update(GameTime gameTime)
+        {
+        }
+
+        public virtual void Draw(SpriteBatch spriteBatch)
+        {
+        }
+    }
+}