Jypeli  5
The simple game programming library
CollisionHandler.cs
Siirry tämän tiedoston dokumentaatioon.
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Reflection;
6 using Jypeli.Effects;
7 
8 namespace Jypeli.Assets
9 {
13  public static class CollisionHandler
14  {
20  public static void DestroyObject( PhysicsObject collidingObject, PhysicsObject targetObject )
21  {
22  collidingObject.Destroy();
23  }
24 
30  public static void DestroyTarget( PhysicsObject collidingObject, PhysicsObject targetObject )
31  {
32  targetObject.Destroy();
33  }
34 
40  public static void DestroyBoth( PhysicsObject collidingObject, PhysicsObject targetObject )
41  {
42  collidingObject.Destroy();
43  targetObject.Destroy();
44  }
45 
52  public static CollisionHandler<PhysicsObject, PhysicsObject> ExplodeObject( double radius, bool destroyObject )
53  {
54  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
55  {
56  Explosion e = new Explosion( radius );
57  e.Position = collidingObject.Position;
58  Game.Instance.Add( e );
59 
60  if ( destroyObject )
61  collidingObject.Destroy();
62  };
63  }
64 
71  public static CollisionHandler<PhysicsObject, PhysicsObject> ExplodeTarget( double radius, bool destroyObject )
72  {
73  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
74  {
75  Explosion e = new Explosion( radius );
76  e.Position = targetObject.Position;
77  Game.Instance.Add( e );
78 
79  if ( destroyObject )
80  targetObject.Destroy();
81  };
82  }
83 
91  public static CollisionHandler<PhysicsObject, PhysicsObject> ExplodeBoth( double radius, bool destroyObject )
92  {
93  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
94  {
95  Explosion e = new Explosion( radius );
96  e.Position = Vector.Average( collidingObject.Position, targetObject.Position );
97  Game.Instance.Add( e );
98 
99  if ( destroyObject )
100  {
101  collidingObject.Destroy();
102  targetObject.Destroy();
103  }
104  };
105  }
106 
115  {
116  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
117  {
118  meter.Value += value;
119  };
120  }
121 
130  {
131  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
132  {
133  meter.Value += value;
134  };
135  }
136 
143  {
144  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
145  {
146  collidingObject.Hit( impulse );
147  };
148  }
149 
156  {
157  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
158  {
159  targetObject.Hit( impulse );
160  };
161  }
162 
168  public static CollisionHandler<PhysicsObject, PhysicsObject> PlaySound( string soundEffectName )
169  {
170  SoundEffect effect = Game.LoadSoundEffect( soundEffectName );
171 
172  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
173  {
174  effect.Play();
175  };
176  }
177 
185  {
186  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
187  {
188  expSystem.AddEffect( collidingObject.Position, numParticles );
189  };
190  }
191 
199  {
200  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
201  {
202  expSystem.AddEffect( targetObject.Position, numParticles );
203  };
204  }
205 
212  public static CollisionHandler<PhysicsObject, PhysicsObject> IncreaseObjectSize( double width, double height )
213  {
214  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
215  {
216  if ( collidingObject.Width + width <= 0 ) return;
217  if ( collidingObject.Height + height <= 0 ) return;
218 
219  collidingObject.Size += new Vector( width, height );
220  };
221  }
222 
229  public static CollisionHandler<PhysicsObject, PhysicsObject> IncreaseTargetSize( double width, double height )
230  {
231  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
232  {
233  if ( targetObject.Width + width <= 0 ) return;
234  if ( targetObject.Height + height <= 0 ) return;
235 
236  targetObject.Size += new Vector( width, height );
237  };
238  }
239 
246  {
247  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
248  {
249  collidingObject.Color = color;
250  };
251  }
252 
259  {
260  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
261  {
262  targetObject.Color = color;
263  };
264  }
265 
271  public static void SetRandomColor( PhysicsObject collidingObject, PhysicsObject targetObject )
272  {
273  collidingObject.Color = RandomGen.NextColor();
274  }
275 
282  public static void SetRandomTargetColor( PhysicsObject collidingObject, PhysicsObject targetObject )
283  {
284  targetObject.Color = RandomGen.NextColor();
285  }
286 
293  {
294  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
295  {
296  Game.Instance.MessageDisplay.Add( message );
297  };
298  }
299  }
300 }
Color Color
Väri, jonka värisenä olio piirretään, jos tekstuuria ei ole määritelty.
override void Destroy()
Tuhoaa olion. Tuhottu olio poistuu pelistä.
static CollisionHandler< PhysicsObject, PhysicsObject > AddEffectOnObject(ExplosionSystem expSystem, int numParticles)
Lisää efektin törmäävän olion kohdalle.
Satunnaisgeneraattori. Luo satunnaisia arvoja, mm. lukuja, vektoreita sekä kulmia.
Definition: RandomGen.cs:39
Järjestelmä räjähdyksille
Definition: Explosion.cs:9
Ääniefekti. Yhdestä efektistä voi luoda CreateSound-metodilla monta ääntä (Sound), jotka voivat soida yhtäaikaa. Ääntä ei tarvitse kuitenkaan luoda itse, jos vain kutsuu Play-metodia.
Definition: SoundEffect.cs:15
static void DestroyObject(PhysicsObject collidingObject, PhysicsObject targetObject)
Tuhoaa törmäävän olion.
bool Play()
Soittaa äänen.
Definition: SoundEffect.cs:101
override Vector Size
Olion koko (x on leveys, y on korkeus).
Definition: Dimensions.cs:63
Peliolio, joka noudattaa fysiikkamoottorin määräämiä fysiikan lakeja. Voidaan kuitenkin myös laittaa ...
Definition: Coefficients.cs:36
static CollisionHandler< PhysicsObject, PhysicsObject > AddEffectOnTarget(ExplosionSystem expSystem, int numParticles)
Lisää efektin sen olion kohdalle, johon törmätään.
static Game Instance
Definition: Game.cs:149
static CollisionHandler< PhysicsObject, PhysicsObject > ExplodeObject(double radius, bool destroyObject)
Räjäyttää törmäävän olion.
void AddEffect(double x, double y, int numberOfParticles)
Lisää efektin kentälle
static void DestroyBoth(PhysicsObject collidingObject, PhysicsObject targetObject)
Tuhoaa molemmat törmäävät oliot.
Mittari, joka mittaa double-tyyppisiä arvoja. Sidottavissa näyttöihin, kuten ValueDisplay ja BarGauge...
Definition: Meter.cs:515
void Add(IGameObject o)
Lisää olion peliin. Tavalliset oliot tulevat automaattisesti kerrokselle 0 ja ruutuoliot päällimmäise...
Definition: Game.cs:691
static Vector Average(IEnumerable< Vector > vectors)
Palauttaa kahden tai useamman vektorin keskiarvon.
Definition: Vector.cs:239
virtual void Hit(Vector impulse)
Kohdistaa kappaleeseen impulssin. Tällä kappaleen saa nopeasti liikkeeseen.
Definition: Movement.cs:147
static CollisionHandler< PhysicsObject, PhysicsObject > SetTargetColor(Color color)
Vaihtaa törmäyskohteen väriä.
static CollisionHandler< PhysicsObject, PhysicsObject > AddMeterValue(IntMeter meter, int value)
Lisää mittarin arvoa halutulla määrällä. Voit myös vähentää käyttämällä negatiivista lukua...
Peliluokka reaaliaikaisille peleille.
Definition: DebugScreen.cs:10
static void DestroyTarget(PhysicsObject collidingObject, PhysicsObject targetObject)
Tuhoaa olion johon törmätään.
static CollisionHandler< PhysicsObject, PhysicsObject > IncreaseObjectSize(double width, double height)
Kasvattaa törmäävän olion kokoa (tai pienentää negatiivisilla arvoilla)
static void SetRandomColor(PhysicsObject collidingObject, PhysicsObject targetObject)
Vaihtaa törmäävän olion värin satunnaiseen.
Mittari, joka mittaa int-tyyppisiä arvoja. Sidottavissa näyttöihin, kuten ValueDisplay ja BarGauge...
Definition: Meter.cs:387
static CollisionHandler< PhysicsObject, PhysicsObject > ExplodeBoth(double radius, bool destroyObject)
Räjäyttää molemmat törmäävät oliot. Räjähdys tulee olioiden törmäyskohtaan.
static Color NextColor()
Palauttaa satunnaisen värin.
Definition: RandomGen.cs:163
static CollisionHandler< PhysicsObject, PhysicsObject > HitObject(Vector impulse)
Lyö törmäävää oliota vektorin määräämällä suunnalla ja voimalla.
Väri.
Definition: Color.cs:13
static CollisionHandler< PhysicsObject, PhysicsObject > ExplodeTarget(double radius, bool destroyObject)
Räjäyttää olion johon törmätään.
static SoundEffect LoadSoundEffect(string name)
Lataa ääniefektin contentista.
Definition: Game.cs:1080
override Vector Position
Olion paikka koordinaatistossa. Käsittää sekä X- että Y-koordinaatin.
Definition: Dimensions.cs:49
double Width
Olion leveys (X-suunnassa, leveimmässä kohdassa).
static CollisionHandler< PhysicsObject, PhysicsObject > HitTarget(Vector impulse)
Lyö oliota johon törmätään vektorin määräämällä suunnalla ja voimalla.
2D-vektori.
Definition: Vector.cs:56
MessageDisplay MessageDisplay
Viestinäyttö, johon voi laittaa viestejä.
Definition: Game.cs:230
static CollisionHandler< PhysicsObject, PhysicsObject > PlaySound(string soundEffectName)
Soittaa ääniefektin.
Kokoelma valmiita törmäyksenkäsittelijöitä.
static CollisionHandler< PhysicsObject, PhysicsObject > IncreaseTargetSize(double width, double height)
Kasvattaa kohdeolion kokoa (tai pienentää negatiivisilla arvoilla)
static CollisionHandler< PhysicsObject, PhysicsObject > SetColor(Color color)
Vaihtaa törmäävän olion väriä.
static void SetRandomTargetColor(PhysicsObject collidingObject, PhysicsObject targetObject)
Vaihtaa törmäyskohteen värin satunnaiseen.
virtual Vector Position
Olion paikka. Jos olio on jonkun toisen peliolion lapsi, paikka on suhteessa tämän vanhempaan (Parent...
static CollisionHandler< PhysicsObject, PhysicsObject > ShowMessage(string message)
Näyttää viestin MessageDisplayssä.
static CollisionHandler< PhysicsObject, PhysicsObject > AddMeterValue(DoubleMeter meter, double value)
Lisää mittarin arvoa halutulla määrällä. Voit myös vähentää käyttämällä negatiivista lukua...
double Height
Olion korkeus (Y-suunnassa, korkeimmassa kohdassa).