Jypeli  5
The simple game programming library
Brain.cs
Siirry tämän tiedoston dokumentaatioon.
1 #region MIT License
2 /*
3  * Copyright (c) 2009 University of Jyväskylä, Department of Mathematical
4  * Information Technology.
5  *
6  * Permission is hereby granted, free of charge, to any person obtaining a copy
7  * of this software and associated documentation files (the "Software"), to deal
8  * in the Software without restriction, including without limitation the rights
9  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10  * copies of the Software, and to permit persons to whom the Software is
11  * furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included in
14  * all copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22  * THE SOFTWARE.
23  */
24 #endregion
25 
26 /*
27  * Authors: Tero Jäntti, Tomi Karppinen, Janne Nikkanen.
28  */
29 
30 using System.ComponentModel;
31 using System;
32 
33 namespace Jypeli
34 {
40  public class Brain
41  {
45  public static readonly Brain None = new Brain();
46 
47  private bool active = true;
48 
52  public bool Active
53  {
54  get { return active; }
55  set { active = value; }
56  }
57 
61  public event Action<Brain> Updated;
62 
63  private IGameObject _owner;
64 
68  public IGameObject Owner
69  {
70  get { return _owner; }
71  set
72  {
73  if ( _owner == value ) return;
74  IGameObject prevOwner = _owner;
75  _owner = value;
76  if ( prevOwner != null ) OnRemove( prevOwner );
77  if ( value != null ) OnAdd( value );
78  }
79  }
80 
81  internal void AddToGameEvent()
82  {
83  OnAddToGame();
84  }
85 
86  public void DoUpdate( Time time )
87  {
88  if ( Active )
89  {
90  Update( time );
91  if ( Updated != null ) Updated( this );
92  }
93  }
94 
99  [EditorBrowsable( EditorBrowsableState.Never )]
100  protected virtual void OnAdd( IGameObject newOwner )
101  {
102  }
103 
108  [EditorBrowsable( EditorBrowsableState.Never )]
109  protected virtual void OnRemove( IGameObject prevOwner )
110  {
111  }
112 
117  [EditorBrowsable( EditorBrowsableState.Never )]
118  protected virtual void OnAddToGame() { }
119 
127  [EditorBrowsable( EditorBrowsableState.Never )]
128  protected virtual void Update( Time time ) { }
129 
136  [EditorBrowsable( EditorBrowsableState.Never )]
137  public virtual void OnCollision( IGameObject target )
138  {
139  }
140  }
141 }
static readonly Brain None
Tyhjät aivot, eivät sisällä mitään toiminnallisuutta.
Definition: Brain.cs:45
virtual void OnAddToGame()
Kutsutaan, kun aivojen omistaja lisätään peliin tai omistajaksi asetetaan olio, joka on jo lisätty pe...
Definition: Brain.cs:118
virtual void OnCollision(IGameObject target)
Kutsutaan, kun tapahtuu törmäys. Perivässä luokassa methodin kuuluu kutsua vastaavaa kantaluokan meth...
Definition: Brain.cs:137
virtual void OnAdd(IGameObject newOwner)
Kutsutaan, kun aivot lisätään oliolle.
Definition: Brain.cs:100
Aivoluokka peliolioille. Voidaan käyttää tekoälyn ja tilannekohtaisten toimintamallien luomiseen peli...
Definition: Brain.cs:40
Sisältää tiedon ajasta, joka on kulunut pelin alusta ja viime päivityksestä.
Definition: Time.cs:13
bool Active
Aivot käytössä tai pois käytöstä.
Definition: Brain.cs:53
Action< Brain > Updated
Tapahtuu kun aivoja päivitetään.
Definition: Brain.cs:61
virtual void OnRemove(IGameObject prevOwner)
Kutsutaan, kun aivot poistetaan oliolta.
Definition: Brain.cs:109
Yhteinen rajapinta kaikille peliolioille.
Definition: IGameObject.cs:14
virtual void Update(Time time)
Kutsutaan, kun tilaa päivitetään. Suurin osa päätöksenteosta tapahtuu täällä. Perivässä luokassa meth...
Definition: Brain.cs:128
IGameObject Owner
Aivojen haltija.
Definition: Brain.cs:69
void DoUpdate(Time time)
Definition: Brain.cs:86