Jypeli 10
The simple game programming library
CollisionHandler.cs
Siirry tämän tiedoston dokumentaatioon.
1using Jypeli.Effects;
2
3namespace 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}
Kokoelma valmiita törmäyksenkäsittelijöitä.
static CollisionHandler< PhysicsObject, PhysicsObject > ShowMessage(string message)
Näyttää viestin MessageDisplayssä.
static CollisionHandler< PhysicsObject, PhysicsObject > HitObject(Vector impulse)
Lyö törmäävää oliota vektorin määräämällä suunnalla ja voimalla.
static void DestroyObject(PhysicsObject collidingObject, PhysicsObject targetObject)
Tuhoaa törmäävän olion.
static CollisionHandler< PhysicsObject, PhysicsObject > ExplodeObject(double radius, bool destroyObject)
Räjäyttää törmäävän olion.
static CollisionHandler< PhysicsObject, PhysicsObject > PlaySound(string soundEffectName)
Soittaa ääniefektin.
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.
static void SetRandomColor(PhysicsObject collidingObject, PhysicsObject targetObject)
Vaihtaa törmäävän olion värin satunnaiseen.
static void DestroyBoth(PhysicsObject collidingObject, PhysicsObject targetObject)
Tuhoaa molemmat törmäävät oliot.
static CollisionHandler< PhysicsObject, PhysicsObject > IncreaseObjectSize(double width, double height)
Kasvattaa törmäävän olion kokoa (tai pienentää negatiivisilla arvoilla)
static void SetRandomTargetColor(PhysicsObject collidingObject, PhysicsObject targetObject)
Vaihtaa törmäyskohteen värin satunnaiseen.
static CollisionHandler< PhysicsObject, PhysicsObject > SetTargetColor(Color color)
Vaihtaa törmäyskohteen väriä.
static CollisionHandler< PhysicsObject, PhysicsObject > ExplodeTarget(double radius, bool destroyObject)
Räjäyttää olion johon törmätään.
static CollisionHandler< PhysicsObject, PhysicsObject > HitTarget(Vector impulse)
Lyö oliota johon törmätään vektorin määräämällä suunnalla ja voimalla.
static CollisionHandler< PhysicsObject, PhysicsObject > AddEffectOnObject(ExplosionSystem expSystem, int numParticles)
Lisää efektin törmäävän olion kohdalle.
static void DestroyTarget(PhysicsObject collidingObject, PhysicsObject targetObject)
Tuhoaa olion johon törmätään.
static CollisionHandler< PhysicsObject, PhysicsObject > IncreaseTargetSize(double width, double height)
Kasvattaa törmäyskohteen kokoa (tai pienentää negatiivisilla arvoilla)
static CollisionHandler< PhysicsObject, PhysicsObject > SetColor(Color color)
Vaihtaa törmäävän olion väriä.
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 CollisionHandler< PhysicsObject, PhysicsObject > AddEffectOnTarget(ExplosionSystem expSystem, int numParticles)
Lisää efektin sen olion kohdalle, johon törmätään.
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.
Mittari, joka mittaa double-tyyppisiä arvoja. Sidottavissa näyttöihin, kuten ValueDisplay ja BarGa...
Definition: DoubleMeter.cs:11
Järjestelmä räjähdyksille
void AddEffect(double x, double y, int numberOfParticles)
Lisää efektin kentälle
static SoundEffect LoadSoundEffect(string name)
Lataa ääniefektin contentista.
Definition: Content.cs:157
MessageDisplay MessageDisplay
Viestinäyttö, johon voi laittaa viestejä.
Definition: Widgets.cs:9
void Add(Light light)
Lisää valon peliin. Nykyisellään valoja voi olla ainoastaan yksi kappale. Toistaiseksi ei tuettu Wind...
Definition: Effects.cs:27
static Game Instance
Käynnissä olevan pelin pääolio.
Definition: Game.cs:96
override Vector?? Position
Definition: Dimensions.cs:72
override void Destroy()
Tuhoaa olion. Tuhottu olio poistuu pelistä.
Definition: GameObject.cs:55
virtual Color Color
Väri, jonka värisenä olio piirretään, jos tekstuuria ei ole määritelty.
Definition: Appearance.cs:65
double Height
Olion korkeus (Y-suunnassa, korkeimmassa kohdassa).
double Width
Olion leveys (X-suunnassa, leveimmässä kohdassa).
Mittari, joka mittaa int-tyyppisiä arvoja. Sidottavissa näyttöihin, kuten ValueDisplay ja BarGauge...
Definition: IntMeter.cs:11
void Add(string message)
Lisää uuden viestin näkymään.
ValueType Value
Mittarin arvo.
Definition: Meter.cs:129
Kappale joka noudattaa fysiikan lakeja, johon voi törmätä. Vaatii että käytössä on fysiikkapeli.
Definition: Collisions.cs:7
override Vector?? Position
Definition: Dimensions.cs:30
virtual void Hit(Vector impulse)
Kohdistaa kappaleeseen impulssin. Tällä kappaleen saa nopeasti liikkeeseen.
Definition: Movement.cs:90
override Vector Size
Definition: Dimensions.cs:80
Satunnaisgeneraattori. Luo satunnaisia arvoja, mm. lukuja, vektoreita sekä kulmia.
Definition: RandomGen.cs:39
static Color NextColor()
Palauttaa satunnaisen värin.
Definition: RandomGen.cs:154
Ääniefekti. Yhdestä efektistä voi luoda CreateSound-metodilla monta ääntä (Sound),...
Definition: SoundEffect.cs:17
bool Play()
Soittaa äänen.
Definition: SoundEffect.cs:131
Väri.
Definition: Color.cs:13
2D-vektori.
Definition: Vector.cs:67
static Vector Average(IEnumerable< Vector > vectors)
Palauttaa kahden tai useamman vektorin keskiarvon.
Definition: Vector.cs:296