2 using System.Collections.Generic;
5 using System.ComponentModel;
14 private Layer _layer = null;
16 private TimeSpan _maxLifetime = TimeSpan.MaxValue;
17 private bool _rotateImage =
true;
37 if ( Parent != null )
return Parent.
Layer;
49 public bool RotateImage
51 get {
return _rotateImage; }
52 set { _rotateImage = value; }
75 public bool IsUpdated {
get;
set; }
91 public object Tag {
get;
set; }
106 _brain = ( ( value != null ) ? value :
Brain.
None );
108 _brain.AddToGameEvent();
124 if ( AddedToGame != null )
126 Brain.AddToGameEvent();
139 if ( Removed != null )
146 public bool IsDestroyed {
get;
private set; }
155 if ( Destroyed != null )
175 [Save]
public abstract Vector Size {
get;
set; }
181 [Save]
public virtual Vector Position {
get;
set; }
192 public TimeSpan CreationTime {
get;
protected set; }
197 public TimeSpan Lifetime
206 public TimeSpan MaximumLifetime
208 get {
return _maxLifetime; }
211 _maxLifetime = value;
220 public TimeSpan LifetimeLeft
222 get {
return MaximumLifetime - Lifetime; }
227 MaximumLifetime = Lifetime + value;
229 catch ( OverflowException )
231 MaximumLifetime = TimeSpan.MaxValue;
241 get {
return Size.X; }
242 set { Size =
new Vector( value, Size.Y ); }
250 get {
return Size.Y; }
251 set { Size =
new Vector( Size.X, value ); }
259 public Vector AbsolutePosition
263 if ( Parent != null )
264 return Parent.AbsolutePosition + Parent.
UnitX * Position.
X + Parent.UnitY * Position.Y;
270 if ( Parent != null )
271 Position = value - Parent.AbsolutePosition;
282 public Angle AbsoluteAngle
286 if ( Parent != null )
287 return Parent.AbsoluteAngle + this.
Angle;
292 if ( Parent != null )
293 Angle = value - Parent.AbsoluteAngle;
304 get {
return Position.X - 0.5 * ( Size.Y * Math.Abs(
Angle.
Sin ) + Size.X * Math.Abs(
Angle.
Cos ) ); }
305 set { Position =
new Vector( value + Size.X / 2, Position.Y ); }
313 get {
return Position.X + 0.5 * ( Size.Y * Math.Abs(
Angle.
Sin ) + Size.X * Math.Abs(
Angle.
Cos ) ); }
314 set { Position =
new Vector( value - Size.X / 2, Position.Y ); }
322 get {
return Position.Y + 0.5 * ( Size.X * Math.Abs(
Angle.
Sin ) + Size.Y * Math.Abs(
Angle.
Cos ) ); }
323 set { Position =
new Vector( Position.X, value - Size.Y / 2 ); }
331 get {
return Position.Y - 0.5 * ( Size.X * Math.Abs(
Angle.
Sin ) + Size.Y * Math.Abs(
Angle.
Cos ) ); }
332 set { Position =
new Vector( Position.X, value + Size.Y / 2 ); }
338 public double AbsLeft
340 get {
return AbsolutePosition.X - 0.5 * ( Size.Y * Math.Abs(
Angle.
Sin ) + Size.X * Math.Abs(
Angle.
Cos ) ); }
346 public double AbsRight
348 get {
return AbsolutePosition.X + 0.5 * ( Size.Y * Math.Abs(
Angle.
Sin ) + Size.X * Math.Abs(
Angle.
Cos ) ); }
356 get {
return AbsolutePosition.Y + 0.5 * ( Size.X * Math.Abs(
Angle.
Sin ) + Size.Y * Math.Abs(
Angle.
Cos ) ); }
362 public double AbsBottom
364 get {
return AbsolutePosition.Y - 0.5 * ( Size.X * Math.Abs(
Angle.
Sin ) + Size.Y * Math.Abs(
Angle.
Cos ) ); }
378 Position =
new Vector( value, Position.Y );
393 Position =
new Vector( Position.X, value );
421 public Vector AbsoluteUnitX
430 public Vector AbsoluteUnitY
477 public abstract void MoveTo(
Vector location,
double speed, Action doWhenArrived );
490 MoveTo( location, speed, null );
499 [EditorBrowsable( EditorBrowsableState.Never )]
505 if ( Lifetime > MaximumLifetime )
static readonly Brain None
Tyhjät aivot, eivät sisällä mitään toiminnallisuutta.
Action Removed
Tapahtuu, kun olio poistetaan pelistä (tuhotaan tai ei).
static readonly Vector UnitX
Vaakasuuntainen yksikkövektori (pituus 1, suunta oikealle).
static Vector FromAngle(Angle angle)
Luo vektorin kulman perusteella yksikköpituudella.
virtual void Destroy()
Tuhoaa olion.
Rajapinta olioille, joilla on Tag-ominaisuus.
Suuntakulma (rajoitettu -180 ja 180 asteen välille) asteina ja radiaaneina. Tietoja kulmasta: http://...
TimeSpan SinceStartOfGame
Aika joka on kulunut pelin alusta.
Image CurrentFrame
Tällä hetkellä näkyvä ruutu animaatiosta.
void MoveTo(Vector location, double speed)
Yrittää siirtyä annettuun paikkaan annetulla nopeudella.
void OnRemoved()
Kutsutaan kun olio poistetaan pelistä.
Aivoluokka peliolioille. Voidaan käyttää tekoälyn ja tilannekohtaisten toimintamallien luomiseen peli...
Piste kokonaislukuruudukossa.
Sisältää tiedon ajasta, joka on kulunut pelin alusta ja viime päivityksestä.
void OnAddedToGame()
Kutsutaan kun olio lisätään peliin.
Peliluokka reaaliaikaisille peleille.
Action Destroyed
Tapahtuu, kun olio tuhotaan.
Vector LeftNormal
Vasen normaali.
virtual void Update(Time time)
Peliolion päivitys. Tätä kutsutaan, kun IsUpdated-ominaisuuden arvoksi on asetettu true ja olio on li...
Kaikille peliolioille yhteinen kantaluokka
Kerros. Vastaa olioiden piirtämisestä.
Action AddedToGame
Tapahtuu, kun olio lisätään peliin.
Yhteinen rajapinta kaikille peliolioille.
Sarja kuvia, jotka vaihtuvat halutulla nopeudella. Yksi animaatio koostuu yhdestä tai useammasta kuva...
static Time Time
Peliaika. Sisältää tiedon siitä, kuinka kauan peliä on pelattu (Time.SinceStartOfGame) ja kuinka kaua...
IGameObject Owner
Aivojen haltija.
Rajapinta olioille, jotka ovat tuhottavissa.