]> git.r.bdr.sh - rbdr/super-polarity/blob - SuperPolarity/Widget.cs
Adds instructions to readme
[rbdr/super-polarity] / SuperPolarity / Widget.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using Microsoft.Xna.Framework;
6 using Microsoft.Xna.Framework.Graphics;
7
8 namespace SuperPolarity
9 {
10 class Widget
11 {
12 public List<Widget> Children;
13 public Dictionary<string, List<Action<float>>> Listeners;
14
15 public Vector2 Position;
16 public SuperPolarity Game;
17
18 protected bool Active;
19
20 public Widget(SuperPolarity game, Vector2 position)
21 {
22 Game = game;
23 Position = position;
24 Active = false;
25 Children = new List<Widget>();
26 Listeners = new Dictionary<string, List<Action<float>>>();
27 }
28
29 public void Activate()
30 {
31 Active = true;
32 }
33
34 public void Deactivate()
35 {
36 Active = false;
37 }
38
39 public virtual void AppendChild(Widget widget)
40 {
41 Children.Add(widget);
42 }
43
44 public virtual void Bind(string eventName, Action<float> eventListener)
45 {
46 List<Action<float>> newListenerList;
47 List<Action<float>> listenerList;
48 bool foundListeners;
49
50 if (!Listeners.ContainsKey(eventName))
51 {
52 newListenerList = new List<Action<float>>();
53 Listeners.Add(eventName, newListenerList);
54 }
55
56 foundListeners = Listeners.TryGetValue(eventName, out listenerList);
57
58 listenerList.Add(eventListener);
59 }
60
61 public virtual void Unbind(string eventName, Action<float> eventListener)
62 {
63 // NOT YET IMPLEMENTED;
64 }
65
66 public virtual void Dispatch(string eventName, float value)
67 {
68 List<Action<float>> listenerList;
69 bool foundListeners;
70
71 foundListeners = Listeners.TryGetValue(eventName, out listenerList);
72
73 if (!foundListeners)
74 {
75 return;
76 }
77
78 foreach (Action<float> method in listenerList)
79 {
80 method(value);
81 }
82 }
83
84 public virtual void Update(GameTime gameTime)
85 {
86 }
87
88 public virtual void Draw(SpriteBatch spriteBatch)
89 {
90 }
91 }
92 }