Jypeli  5
The simple game programming library
Events.cs
Siirry tämän tiedoston dokumentaatioon.
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 
6 namespace Jypeli
7 {
8  public partial class Game
9  {
14  {
15  Func<bool> condition;
16  Action handler;
17 
23  internal CustomEventHandler( Func<bool> condition, Action handler )
24  {
25  this.condition = condition;
26  this.handler = handler;
27  }
28 
32  public bool IsDestroyed { get; private set; }
33 
37  public bool IsUpdated { get { return true; } }
38 
42  public event Action Destroyed;
43 
47  public void Destroy()
48  {
49  IsDestroyed = true;
50  if ( Destroyed != null )
51  Destroyed();
52  }
53 
58  public void Update( Time time )
59  {
60  if ( condition() )
61  handler();
62  }
63  }
64 
65  private SynchronousList<CustomEventHandler> handlers = null;
66 
72  public CustomEventHandler AddCustomHandler( Func<bool> condition, Action handler)
73  {
74  if ( handlers == null )
75  handlers = new SynchronousList<CustomEventHandler>();
76 
77  var handlerObj = new CustomEventHandler( condition, handler );
78  handlers.Add( handlerObj );
79  return handlerObj;
80  }
81 
90  public CustomEventHandler AddCustomHandler<T>( T obj, Predicate<T> condition, Action<T> handler )
91  {
92  return this.AddCustomHandler( () => condition( obj ), () => handler( obj ) );
93  }
94 
105  public CustomEventHandler AddCustomHandler<T1, T2>( T1 obj1, T2 obj2, Func<T1, T2, bool> condition, Action<T1, T2> handler )
106  {
107  return this.AddCustomHandler( () => condition( obj1, obj2 ), () => handler( obj1, obj2 ) );
108  }
109 
122  public CustomEventHandler AddCustomHandler<T1, T2, T3>( T1 obj1, T2 obj2, T3 obj3, Func<T1, T2, T3, bool> condition, Action<T1, T2, T3> handler )
123  {
124  return this.AddCustomHandler( () => condition( obj1, obj2, obj3 ), () => handler( obj1, obj2, obj3 ) );
125  }
126 
130  protected void UpdateHandlers( Time time )
131  {
132  if (handlers == null)
133  return;
134 
135  handlers.Update( time );
136  }
137  }
138 }
CustomEventHandler AddCustomHandler(Func< bool > condition, Action handler)
Lisää vapaamuotoisen tapahtumankäsittelijän.
Definition: Events.cs:72
Vapaamuotoinen tapahtumankäsittelijä.
Definition: Events.cs:13
Action Destroyed
Tapahtuu, kun tapahtumankäsittelijä tuhotaan.
Definition: Events.cs:42
CustomEventHandler AddCustomHandler< T1, T2 >(T1 obj1, T2 obj2, Func< T1, T2, bool > condition, Action< T1, T2 > handler)
Lisää vapaamuotoisen tapahtumankäsittelijän.
Definition: Events.cs:105
CustomEventHandler AddCustomHandler< T >(T obj, Predicate< T > condition, Action< T > handler)
Lisää vapaamuotoisen tapahtumankäsittelijän.
Definition: Events.cs:90
void Update(Time time)
Lisää ja poistaa jonossa olevat elementit sekä kutsuu niiden Update-metodia.
void UpdateHandlers(Time time)
Kutsuu tapahtumankäsittelijöitä.
Definition: Events.cs:130
Rajapinta päivittyville olioille.
Definition: Updatable.cs:6
void Update(Time time)
Päivittää tapahtumankäsittelijää (Jypeli kutsuu)
Definition: Events.cs:58
Sisältää tiedon ajasta, joka on kulunut pelin alusta ja viime päivityksestä.
Definition: Time.cs:13
bool IsUpdated
Päivitetäänkö.
Definition: Events.cs:37
void Destroy()
Tuhoaa tapahtumankäsittelijän.
Definition: Events.cs:47
bool IsDestroyed
Onko käsittelijä tuhottu.
Definition: Events.cs:32
Synkroninen lista, eli lista joka päivittyy vasta kun sen Update-metodia kutsutaan. Jos listalle lisätään IUpdatable-rajapinnan toteuttavia olioita, kutsutaan myös niiden Update-metodeja samalla.
CustomEventHandler AddCustomHandler< T1, T2, T3 >(T1 obj1, T2 obj2, T3 obj3, Func< T1, T2, T3, bool > condition, Action< T1, T2, T3 > handler)
Lisää vapaamuotoisen tapahtumankäsittelijän.
Definition: Events.cs:122
Rajapinta olioille, jotka ovat tuhottavissa.
Definition: Destroyable.cs:8