Jypeli  9
The simple game programming library
CollisionHandler.cs
Siirry tämän tiedoston dokumentaatioon.
1 using Jypeli.Effects;
2 
3 namespace Jypeli.Assets
4 {
8  public static class CollisionHandler
9  {
15  public static void DestroyObject( PhysicsObject collidingObject, PhysicsObject targetObject )
16  {
17  collidingObject.Destroy();
18  }
19 
25  public static void DestroyTarget( PhysicsObject collidingObject, PhysicsObject targetObject )
26  {
27  targetObject.Destroy();
28  }
29 
35  public static void DestroyBoth( PhysicsObject collidingObject, PhysicsObject targetObject )
36  {
37  collidingObject.Destroy();
38  targetObject.Destroy();
39  }
40 
47  public static CollisionHandler<PhysicsObject, PhysicsObject> ExplodeObject( double radius, bool destroyObject )
48  {
49  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
50  {
51  Explosion e = new Explosion( radius );
52  e.Position = collidingObject.Position;
53  Game.Instance.Add( e );
54 
55  if ( destroyObject )
56  collidingObject.Destroy();
57  };
58  }
59 
66  public static CollisionHandler<PhysicsObject, PhysicsObject> ExplodeTarget( double radius, bool destroyObject )
67  {
68  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
69  {
70  Explosion e = new Explosion( radius );
71  e.Position = targetObject.Position;
72  Game.Instance.Add( e );
73 
74  if ( destroyObject )
75  targetObject.Destroy();
76  };
77  }
78 
86  public static CollisionHandler<PhysicsObject, PhysicsObject> ExplodeBoth( double radius, bool destroyObject )
87  {
88  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
89  {
90  Explosion e = new Explosion( radius );
91  e.Position = Vector.Average( collidingObject.Position, targetObject.Position );
92  Game.Instance.Add( e );
93 
94  if ( destroyObject )
95  {
96  collidingObject.Destroy();
97  targetObject.Destroy();
98  }
99  };
100  }
101 
110  {
111  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
112  {
113  meter.Value += value;
114  };
115  }
116 
125  {
126  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
127  {
128  meter.Value += value;
129  };
130  }
131 
138  {
139  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
140  {
141  collidingObject.Hit( impulse );
142  };
143  }
144 
151  {
152  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
153  {
154  targetObject.Hit( impulse );
155  };
156  }
157 
163  public static CollisionHandler<PhysicsObject, PhysicsObject> PlaySound( string soundEffectName )
164  {
165  SoundEffect effect = Game.LoadSoundEffect( soundEffectName );
166 
167  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
168  {
169  effect.Play();
170  };
171  }
172 
180  {
181  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
182  {
183  expSystem.AddEffect( collidingObject.Position, numParticles );
184  };
185  }
186 
194  {
195  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
196  {
197  expSystem.AddEffect( targetObject.Position, numParticles );
198  };
199  }
200 
207  public static CollisionHandler<PhysicsObject, PhysicsObject> IncreaseObjectSize( double width, double height )
208  {
209  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
210  {
211  if ( collidingObject.Width + width <= 0 ) return;
212  if ( collidingObject.Height + height <= 0 ) return;
213 
214  collidingObject.Size += new Vector( width, height );
215  };
216  }
217 
224  public static CollisionHandler<PhysicsObject, PhysicsObject> IncreaseTargetSize( double width, double height )
225  {
226  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
227  {
228  if ( targetObject.Width + width <= 0 ) return;
229  if ( targetObject.Height + height <= 0 ) return;
230 
231  targetObject.Size += new Vector( width, height );
232  };
233  }
234 
241  {
242  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
243  {
244  collidingObject.Color = color;
245  };
246  }
247 
254  {
255  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
256  {
257  targetObject.Color = color;
258  };
259  }
260 
266  public static void SetRandomColor( PhysicsObject collidingObject, PhysicsObject targetObject )
267  {
268  collidingObject.Color = RandomGen.NextColor();
269  }
270 
277  public static void SetRandomTargetColor( PhysicsObject collidingObject, PhysicsObject targetObject )
278  {
279  targetObject.Color = RandomGen.NextColor();
280  }
281 
288  {
289  return delegate( PhysicsObject collidingObject, PhysicsObject targetObject )
290  {
291  Game.Instance.MessageDisplay.Add( message );
292  };
293  }
294  }
295 }
Jypeli.DoubleMeter
Mittari, joka mittaa double-tyyppisiä arvoja. Sidottavissa näyttöihin, kuten ValueDisplay ja BarGa...
Definition: DoubleMeter.cs:11
Jypeli.PhysicsObject.Size
override Vector Size
Definition: Dimensions.cs:41
Jypeli.Assets.CollisionHandler.ExplodeTarget
static CollisionHandler< PhysicsObject, PhysicsObject > ExplodeTarget(double radius, bool destroyObject)
Räjäyttää olion johon törmätään.
Definition: CollisionHandler.cs:66
Jypeli.Assets.CollisionHandler.IncreaseTargetSize
static CollisionHandler< PhysicsObject, PhysicsObject > IncreaseTargetSize(double width, double height)
Kasvattaa törmäyskohteen kokoa (tai pienentää negatiivisilla arvoilla)
Definition: CollisionHandler.cs:224
Jypeli.SoundEffect
Ääniefekti. Yhdestä efektistä voi luoda CreateSound-metodilla monta ääntä (Sound),...
Definition: SoundEffect.cs:17
Jypeli.Assets.CollisionHandler.SetRandomColor
static void SetRandomColor(PhysicsObject collidingObject, PhysicsObject targetObject)
Vaihtaa törmäävän olion värin satunnaiseen.
Definition: CollisionHandler.cs:266
Jypeli
Definition: Automobile.cs:5
Jypeli.MessageDisplay.Add
void Add(string message)
Lisää uuden viestin näkymään.
Definition: MessageDisplay.cs:208
Jypeli.Assets.Explosion
Räjähdys.
Definition: Explosion.cs:38
Jypeli.Assets.CollisionHandler.AddMeterValue
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.
Definition: CollisionHandler.cs:124
Jypeli.Vector.Average
static Vector Average(IEnumerable< Vector > vectors)
Palauttaa kahden tai useamman vektorin keskiarvon.
Definition: Vector.cs:277
Jypeli.Game.MessageDisplay
MessageDisplay MessageDisplay
Viestinäyttö, johon voi laittaa viestejä.
Definition: Widgets.cs:9
Jypeli.Assets.CollisionHandler.SetTargetColor
static CollisionHandler< PhysicsObject, PhysicsObject > SetTargetColor(Color color)
Vaihtaa törmäyskohteen väriä.
Definition: CollisionHandler.cs:253
Jypeli.Assets.CollisionHandler.AddEffectOnObject
static CollisionHandler< PhysicsObject, PhysicsObject > AddEffectOnObject(ExplosionSystem expSystem, int numParticles)
Lisää efektin törmäävän olion kohdalle.
Definition: CollisionHandler.cs:179
Jypeli.Assets.CollisionHandler.DestroyObject
static void DestroyObject(PhysicsObject collidingObject, PhysicsObject targetObject)
Tuhoaa törmäävän olion.
Definition: CollisionHandler.cs:15
Jypeli.RandomGen
Satunnaisgeneraattori. Luo satunnaisia arvoja, mm. lukuja, vektoreita sekä kulmia.
Definition: RandomGen.cs:39
Jypeli.Game.Instance
static Game Instance
Käynnissä olevan pelin pääolio.
Definition: Game.cs:90
Jypeli.Assets.CollisionHandler.ExplodeBoth
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.
Definition: CollisionHandler.cs:86
Jypeli.Game.Add
void Add(Light light)
Lisää valon peliin. Nykyisellään valoja voi olla ainoastaan yksi kappale. Toistaiseksi ei tuettu Wind...
Definition: Effects.cs:27
Jypeli.Assets.CollisionHandler.HitObject
static CollisionHandler< PhysicsObject, PhysicsObject > HitObject(Vector impulse)
Lyö törmäävää oliota vektorin määräämällä suunnalla ja voimalla.
Definition: CollisionHandler.cs:137
Jypeli.Assets.CollisionHandler.IncreaseObjectSize
static CollisionHandler< PhysicsObject, PhysicsObject > IncreaseObjectSize(double width, double height)
Kasvattaa törmäävän olion kokoa (tai pienentää negatiivisilla arvoilla)
Definition: CollisionHandler.cs:207
Jypeli.Assets.CollisionHandler.SetRandomTargetColor
static void SetRandomTargetColor(PhysicsObject collidingObject, PhysicsObject targetObject)
Vaihtaa törmäyskohteen värin satunnaiseen.
Definition: CollisionHandler.cs:277
Jypeli.RandomGen.NextColor
static Color NextColor()
Palauttaa satunnaisen värin.
Definition: RandomGen.cs:154
Jypeli.Assets.CollisionHandler.DestroyTarget
static void DestroyTarget(PhysicsObject collidingObject, PhysicsObject targetObject)
Tuhoaa olion johon törmätään.
Definition: CollisionHandler.cs:25
Jypeli.Assets.CollisionHandler.SetColor
static CollisionHandler< PhysicsObject, PhysicsObject > SetColor(Color color)
Vaihtaa törmäävän olion väriä.
Definition: CollisionHandler.cs:240
Jypeli.Color
Väri.
Definition: Color.cs:13
Jypeli.PhysicsObject.Position
override Vector Position
Definition: Dimensions.cs:27
Jypeli.Assets.CollisionHandler.AddEffectOnTarget
static CollisionHandler< PhysicsObject, PhysicsObject > AddEffectOnTarget(ExplosionSystem expSystem, int numParticles)
Lisää efektin sen olion kohdalle, johon törmätään.
Definition: CollisionHandler.cs:193
Jypeli.Assets.CollisionHandler.ExplodeObject
static CollisionHandler< PhysicsObject, PhysicsObject > ExplodeObject(double radius, bool destroyObject)
Räjäyttää törmäävän olion.
Definition: CollisionHandler.cs:47
Jypeli.Vector
2D-vektori.
Definition: Vector.cs:59
Jypeli.Assets.CollisionHandler
Kokoelma valmiita törmäyksenkäsittelijöitä.
Definition: CollisionHandler.cs:9
Jypeli.IntMeter
Mittari, joka mittaa int-tyyppisiä arvoja. Sidottavissa näyttöihin, kuten ValueDisplay ja BarGauge...
Definition: IntMeter.cs:11
Jypeli.Assets.CollisionHandler.AddMeterValue
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.
Definition: CollisionHandler.cs:109
Jypeli.Game.LoadSoundEffect
static SoundEffect LoadSoundEffect(string name)
Lataa ääniefektin contentista.
Definition: Content.cs:151
Jypeli.PhysicsObject
Definition: Collisions.cs:6
Jypeli.Effects
Definition: ExplosionSystem.cs:4
Jypeli.Assets
Definition: Automobile.cs:5
Jypeli.Assets.CollisionHandler.DestroyBoth
static void DestroyBoth(PhysicsObject collidingObject, PhysicsObject targetObject)
Tuhoaa molemmat törmäävät oliot.
Definition: CollisionHandler.cs:35
Jypeli.Assets.CollisionHandler.ShowMessage
static CollisionHandler< PhysicsObject, PhysicsObject > ShowMessage(string message)
Näyttää viestin MessageDisplayssä.
Definition: CollisionHandler.cs:287
Jypeli.Assets.CollisionHandler.HitTarget
static CollisionHandler< PhysicsObject, PhysicsObject > HitTarget(Vector impulse)
Lyö oliota johon törmätään vektorin määräämällä suunnalla ja voimalla.
Definition: CollisionHandler.cs:150
Jypeli.PhysicsObject.Hit
virtual void Hit(Vector impulse)
Kohdistaa kappaleeseen impulssin. Tällä kappaleen saa nopeasti liikkeeseen.
Definition: Movement.cs:87
Jypeli.Effects.ExplosionSystem
Järjestelmä räjähdyksille
Definition: ExplosionSystem.cs:9
Jypeli.Game
Definition: Content.cs:46
Jypeli.SoundEffect.Play
bool Play()
Soittaa äänen.
Definition: SoundEffect.cs:125
Jypeli.Assets.CollisionHandler.PlaySound
static CollisionHandler< PhysicsObject, PhysicsObject > PlaySound(string soundEffectName)
Soittaa ääniefektin.
Definition: CollisionHandler.cs:163
Jypeli.Effects.ParticleSystem.AddEffect
void AddEffect(double x, double y, int numberOfParticles)
Lisää efektin kentälle
Definition: ParticleSystem.cs:192