source: 2012/30/MiskaK/MW2(My Warfare 2)/MW2(My Warfare 2)/MW2(My Warfare 2)/MW2_My_Warfare_2_.cs @ 3734

Revision 3734, 20.9 KB checked in by mikrkana, 11 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class MW2_My_Warfare_2_ : PhysicsGame
10{
11
12    Pelaaja pelaaja1;
13    Pelaaja pelaaja2;
14   
15    PhysicsObject tähtäin;
16    AssaultRifle rynkky;
17    AssaultRifle rynkky2;
18    AssaultRifle pistooli;
19    AssaultRifle minigun;
20    AssaultRifle snipa;
21    AssaultRifle sinko;
22    PhysicsObject rynkynhylsy;
23
24    DoubleMeter pelaajan1terveys;
25    DoubleMeter pelaajan2terveys;
26
27    PhysicsObject laatikko;
28
29    int pMaxMaara = 1500;
30   
31    //Kenttä
32    Image kivenKuva = LoadImage("kivi");
33    Image piikkilankaKuva = LoadImage("piikkilanka");
34    Image pystypiikkilankaKuva = LoadImage("piikkilankapysty");
35    Image vaakapuunKuva = LoadImage("puuvaaka");
36    Image naamioverkonKuva = LoadImage("naamioverkko");
37    Image pelaaja1Kuva = LoadImage("pelaaja1");
38    Image rynkynhylsynKuva = LoadImage("rynkynhylsy");
39    Image pelaaja2Kuva = LoadImage("pelaaja2");
40    Image pystypuunKuva = LoadImage("puupysty");
41    Image laatikonKuva = LoadImage("kamaa");
42    Image bussinkuva = LoadImage("bussi");
43
44    //Partikkelit
45    Image kivisirpale1 = LoadImage("kivisirpale1");
46    Image kivisirpale2 = LoadImage("kivisirpale2");
47    Image kipinä1 = LoadImage("kipinä1");
48    Image veriroiske1 = LoadImage("veriroiske1");
49    Image puusirpale1 = LoadImage("puusirpale1");
50
51    public override void Begin()
52    {
53        LuoKenttä();
54        LuoPelaaja1();
55        LuoPelaaja2();
56        AsetaOhjaimet();
57
58
59       
60    }
61
62
63    #region kenttä
64    void LuoKenttä()
65    {
66        Level.BackgroundColor = Color.Black;
67
68        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kenttä1");
69
70        ruudut.SetTileMethod(Color.Rose, LuoBussi);
71        ruudut.SetTileMethod(Color.Black, LuoPiikkilanka);
72        ruudut.SetTileMethod(Color.Gray, LuoKivi);
73        ruudut.SetTileMethod(Color.Orange, LuoVaakaPuu);
74        ruudut.SetTileMethod(Color.Red, LuoPystypiikkilanka);
75        ruudut.SetTileMethod(Color.Blue, LuoPystyPuu);
76        ruudut.SetTileMethod(Color.Green, LuoNaamioverkko);
77        ruudut.SetTileMethod(Color.Purple, LuoLaatikko);
78       
79        ruudut.Execute(50, 50);
80        Camera.ZoomToLevel();
81
82       
83
84       
85    }
86
87    void LuoBussi(Vector paikka, double leveys, double korkeus)
88    {
89        PhysicsObject bussi = PhysicsObject.CreateStaticObject(161, 134);
90        bussi.Position = paikka;
91        bussi.Image = bussinkuva;
92        bussi.Shape = Shape.FromImage(bussinkuva);
93        Add(bussi);
94    }
95
96    void LuoPiikkilanka(Vector paikka, double leveys, double korkeus)
97    {
98        PhysicsObject piikkilanka = PhysicsObject.CreateStaticObject(leveys, korkeus);
99        piikkilanka.Position = paikka;
100        piikkilanka.Image = piikkilankaKuva;
101        piikkilanka.CollisionIgnoreGroup = 1;
102        Add(piikkilanka);
103
104    }
105
106    void LuoPystypiikkilanka(Vector paikka, double leveys, double korkeus)
107    {
108        PhysicsObject pystypiikkilanka = PhysicsObject.CreateStaticObject(leveys, korkeus);
109        pystypiikkilanka.Position = paikka;
110        pystypiikkilanka.Image = pystypiikkilankaKuva;
111        Add(pystypiikkilanka);
112
113    }
114
115    void LuoNaamioverkko(Vector paikka, double leveys, double korkeus)
116    {
117        PhysicsObject naamioverkko = PhysicsObject.CreateStaticObject(leveys, korkeus);
118        naamioverkko.Position = paikka;
119        naamioverkko.Image = naamioverkonKuva;
120        naamioverkko.CollisionIgnoreGroup = 1;
121        naamioverkko.IgnoresCollisionResponse = true;
122
123        Add(naamioverkko, 2);
124    }
125
126    void LuoKivi(Vector paikka, double leveys, double korkeus)
127    {
128        PhysicsObject kivi = PhysicsObject.CreateStaticObject(leveys, korkeus);
129        kivi.Position = paikka;
130        kivi.Image = kivenKuva;
131        kivi.CollisionIgnoreGroup = 1;
132       
133        kivi.Tag = "kivi";
134        Add(kivi);
135    }
136
137    void LuoVaakaPuu(Vector paikka, double leveys, double korkeus)
138    {
139        PhysicsObject vaakapuu = PhysicsObject.CreateStaticObject(leveys/4, korkeus);
140        vaakapuu.Position = paikka;
141        vaakapuu.Image = pystypuunKuva;
142        vaakapuu.CollisionIgnoreGroup = 1;
143        vaakapuu.Tag = "puu";
144        Add(vaakapuu);
145
146    }
147
148    void LuoPystyPuu(Vector paikka, double leveys, double korkeus)
149    {
150        PhysicsObject pystypuu = PhysicsObject.CreateStaticObject(leveys/2, korkeus);
151        pystypuu.Position = paikka;
152        pystypuu.Image = pystypuunKuva;
153        pystypuu.CollisionIgnoreGroup = 1;
154        pystypuu.Tag = "puu";
155        Add(pystypuu);
156    }
157
158    void LuoLaatikko(Vector paikka, double leveys, double korkeus)
159    {
160        laatikko = PhysicsObject.CreateStaticObject(leveys, korkeus);
161        laatikko.Position = paikka;
162        laatikko.Image = laatikonKuva;
163        AddCollisionHandler(laatikko, AnnaKamaa);
164        Add(laatikko);
165    }
166
167
168
169    #endregion
170
171    #region pelaaja1
172    void LuoPelaaja1()
173    {
174        pelaaja1 = new Pelaaja(28.5, 19.5);
175        pelaaja1.Image = pelaaja1Kuva;
176        pelaaja1.Shape = Shape.Circle;
177        pelaaja1.CanRotate = false;
178        pelaaja1.LinearDamping = 0.80;
179        pelaaja1.Tag = "pelaaja";
180        pelaaja1.Nro = 1;
181        Add(pelaaja1);
182
183       
184        AddCollisionHandler(pelaaja1, Pelaaja1Törmää);
185        LuoTähtäin();
186        LuoTerveysmittari1();
187    }
188
189    void Pelaaja1Törmää(PhysicsObject pelaaja1, PhysicsObject kohde)
190    {
191        if (kohde.Tag == "rynkynammus2")
192        {
193            pelaajan1terveys.Value = pelaajan1terveys.Value - 1;
194        }
195
196    }
197
198    void LuoTerveysmittari1()
199    {
200        ProgressBar elamaPalkki1 = new ProgressBar(150, 20);
201        elamaPalkki1.X = Screen.Left + 100;
202        elamaPalkki1.Y = Screen.Top - 30;
203        elamaPalkki1.BindTo(pelaaja1.Elamat);
204        Add(elamaPalkki1);
205        elamaPalkki1.BarColor = Color.Green;
206        elamaPalkki1.BorderColor = Color.White;
207
208    }
209
210    void LuoTähtäin()
211    {
212        tähtäin = new PhysicsObject(10.0, 10.0);
213        tähtäin.Shape = Shape.Circle;
214        tähtäin.Color = Color.Red;
215        tähtäin.IgnoresCollisionResponse = true;
216        tähtäin.IgnoresExplosions = true;
217        tähtäin.IgnoresPhysicsLogics = true;
218        Add(tähtäin, 3);
219
220        Mouse.ListenMovement(0.1, KuunteleLiiketta, null);
221        pelaaja1.Position.ToString();
222        tähtäin.Position.ToString();
223
224    }
225
226    void Pelaaja1Ampuu()
227    {
228        pelaaja1.Ammu();
229    }
230
231    void RynkynHylsy()
232    {
233        rynkynhylsy = new PhysicsObject(1, 5.5);
234        rynkynhylsy.Image = rynkynhylsynKuva;
235        rynkynhylsy.Position = pelaaja1.Position;
236        rynkynhylsy.Hit(new Vector(350.0, 0.0));
237        Add(rynkynhylsy);
238
239        rynkynhylsy.IgnoresCollisionResponse = true;
240        rynkynhylsy.AngularVelocity = 10.0;
241        rynkynhylsy.AngularDamping = 0.95;
242        rynkynhylsy.LinearDamping = RandomGen.NextDouble(0.90, 0.99);
243        rynkynhylsy.MaximumLifetime = TimeSpan.FromSeconds(3.0);
244
245    }
246
247    void KuunteleLiiketta(AnalogState hiirenTila)
248    {
249        tähtäin.X = Mouse.PositionOnWorld.X;
250        tähtäin.Y = Mouse.PositionOnWorld.Y;
251
252        Vector hiirenLiike = hiirenTila.MouseMovement;
253    }
254
255    void LiikutaPelaajaa(PhysicsObject pelaaja, Vector suunta)
256    {
257        pelaaja.Move(suunta * 300);
258    }
259
260    void koordinaatit()
261    {
262        Label tekstikentta = new Label();
263        Add(tekstikentta);
264       
265    }
266    #endregion
267
268    #region pelaaja2
269    void LuoPelaaja2()
270    {
271        pelaaja2 = new Pelaaja(28.5, 19.5);
272        pelaaja2.Image = pelaaja2Kuva;
273        pelaaja2.Shape = Shape.Circle;
274        pelaaja2.CanRotate = false;
275        pelaaja2.LinearDamping = 0.80;
276        pelaaja2.Nro = 2;
277        Add(pelaaja2);
278        AddCollisionHandler(pelaaja2, Pelaaja2Törmää);
279        pelaaja2.Tag = "pelaaja";
280        LuoTerveysmittari2();
281    }
282
283    void Pelaaja2Törmää(PhysicsObject pelaaja2, PhysicsObject kohde)
284    {
285        if (kohde.Tag == "rynkynammus1")
286        {
287            (pelaaja2 as Pelaaja).Elamat.Value--;
288        }
289    }
290
291    void LuoTerveysmittari2()
292    {
293       
294
295        ProgressBar elamaPalkki2 = new ProgressBar(150, 20);
296        elamaPalkki2.X = Screen.Right - 100;
297        elamaPalkki2.Y = Screen.Top - 30;
298        elamaPalkki2.BindTo(pelaaja2.Elamat);
299        Add(elamaPalkki2);
300        elamaPalkki2.BarColor = Color.Green;
301        elamaPalkki2.BorderColor = Color.White;
302    }
303
304    void Pelaaja2Ampuu()
305    {
306        pelaaja2.Ammu();
307    }
308
309    void LiikutaPelaajaa2(AnalogState tatinTila)
310    {
311        Vector tatinAsento = tatinTila.StateVector;
312        pelaaja2.Move(tatinAsento * 200);
313    }
314
315    void PyöritäPelaajaa2(AnalogState tatinTila)
316    {
317        Vector tatinAsento = tatinTila.StateVector;
318        pelaaja2.Angle = tatinAsento.Angle;
319    }
320
321    void RynkynHylsy2()
322    {
323        rynkynhylsy = new PhysicsObject(1, 5.5);
324        rynkynhylsy.Image = rynkynhylsynKuva;
325        rynkynhylsy.Position = pelaaja2.Position;
326        rynkynhylsy.Hit(new Vector(350.0, 0.0));
327        Add(rynkynhylsy);
328
329        rynkynhylsy.IgnoresCollisionResponse = true;
330        rynkynhylsy.AngularVelocity = 10.0;
331        rynkynhylsy.AngularDamping = 0.95;
332        rynkynhylsy.LinearDamping = RandomGen.NextDouble(0.90, 0.99);
333        rynkynhylsy.MaximumLifetime = TimeSpan.FromSeconds(3.0);
334
335    }
336
337    #endregion
338
339    #region aseet
340
341
342    AssaultRifle LuoRynkky()
343    {
344        rynkky = new AssaultRifle(30, 10);
345        rynkky.IsVisible = false;
346        rynkky.Ammo.Value = 90;
347        rynkky.MaxAmmoLifetime = TimeSpan.FromSeconds(1.5);
348        rynkky.ProjectileCollision = RynkynAmmusOsuu;
349        return rynkky;
350       
351    }
352
353    AssaultRifle LuoPistooli()
354    {
355        pistooli = new AssaultRifle(30, 10);
356        pistooli.Ammo.Value = 50;
357        pistooli.FireRate = 2;
358        pistooli.MaxAmmoLifetime = TimeSpan.FromSeconds(0.7);
359        pistooli.ProjectileCollision = PistoolinAmmusOsuu;
360
361       
362        return pistooli;
363       
364    }
365
366    AssaultRifle LuoMinigun()
367    {
368        minigun = new AssaultRifle(30, 10);
369        minigun.Ammo.Value = 1200;
370        minigun.FireRate = 30;
371        minigun.IsVisible = false;
372        minigun.MaxAmmoLifetime = TimeSpan.FromSeconds(1.0);
373        minigun.ProjectileCollision = MiniguninAmmusOsuu;
374        return minigun;
375    }
376
377    AssaultRifle LuoSnipa()
378    {
379        snipa = new AssaultRifle(30, 10);
380        snipa.Ammo.Value = 100;
381        snipa.FireRate = 1;
382        snipa.Power.DefaultValue = 500;
383        snipa.IsVisible = false;
384        snipa.MaxAmmoLifetime = TimeSpan.FromSeconds(5);
385        snipa.ProjectileCollision = SnipanAmmusOsuu;
386       
387        return snipa;
388    }
389
390    AssaultRifle LuoSinko()
391    {
392        sinko = new AssaultRifle(30, 10);
393        sinko.InfiniteAmmo = true;
394        sinko.Power.DefaultValue = 100;
395        sinko.IsVisible = false;
396        sinko.MaxAmmoLifetime = TimeSpan.FromSeconds(5);
397        sinko.ProjectileCollision = SingonAmmusOsuu;
398        return sinko;
399    }
400
401    void AnnaKamaa(PhysicsObject laatikko, PhysicsObject kohde)
402    {
403        if (kohde.Tag == "pelaaja")
404        {
405            Pelaaja pelaaja = (kohde as Pelaaja);
406            int ase = RandomGen.NextInt(1, 6);
407
408            if (ase == 1)
409            {
410                pelaaja.LisaaAse(LuoPistooli());
411                MessageDisplay.Add("Pelaaja" + pelaaja.Nro + " sai pistoolin!");
412            }
413
414            else if (ase == 2)
415            {
416                pelaaja.LisaaAse(LuoRynkky());
417                MessageDisplay.Add("Pelaaja" + pelaaja.Nro + " sai rynkyn!");
418            }
419
420            else if (ase == 3)
421            {
422                pelaaja.LisaaAse(LuoSnipa());
423                MessageDisplay.Add("Pelaaja" + pelaaja.Nro + " sai tarkkuuskiväärin!");
424            }
425
426            else if (ase == 4)
427            {
428                pelaaja.LisaaAse(LuoMinigun());
429                MessageDisplay.Add("Pelaaja" + pelaaja.Nro + " sai minigunin!");
430            }
431
432            else if (ase == 5)
433            {
434                pelaaja.LisaaAse(LuoSinko());
435                MessageDisplay.Add("Pelaaja" + pelaaja.Nro + " sai singon!"); 
436            }
437
438        }
439
440       
441
442    }
443
444   
445
446    #endregion
447
448    #region ohjaimet
449    void AsetaOhjaimet()
450    {
451        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
452
453        Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa,  "", pelaaja1, new Vector(0.0, 1.0));
454        Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, "", pelaaja1, new Vector(0.0, -1.0));
455        Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, "", pelaaja1, new Vector(-1.0, 0.0));
456        Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, "", pelaaja1, new Vector(1.0, 0.0));
457        Mouse.ListenWheel(VaihdaAsetta, "", pelaaja1);
458        Mouse.Listen(MouseButton.Left, ButtonState.Down, Pelaaja1Ampuu, null);
459
460        //Keyboeard.Listen(Key.2, buttons, VaihdaAsetta, null, pelaaja1, rynkky);
461
462        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.1, LiikutaPelaajaa2, null);
463        ControllerOne.ListenAnalog(AnalogControl.RightStick, 0.1, PyöritäPelaajaa2, null);
464        ControllerOne.Listen(Button.RightTrigger, ButtonState.Down, Pelaaja2Ampuu, null);
465
466        Keyboard.Listen(Key.K, ButtonState.Pressed, koordinaatit, null);
467
468        Camera.Follow(pelaaja1, pelaaja2);
469    }
470
471    #endregion
472
473    #region aseiden osumat
474
475    void KiviPartikkelit(double x, double y, int pMaara)
476    {
477        ExplosionSystem kivipartikkelit = new ExplosionSystem(LoadImage("kivisirpale1"), pMaxMaara);
478        Add(kivipartikkelit);
479
480        kivipartikkelit.MinScale = 1;
481        kivipartikkelit.MaxScale = 2;
482        kivipartikkelit.MaxLifetime = 0.5;
483        kivipartikkelit.MinLifetime = 0.2;
484        kivipartikkelit.MaxVelocity = 1;
485
486
487        kivipartikkelit.AddEffect(x, y, pMaara);
488
489    }
490
491    void KipinäPartikkelit(double x, double y, int pMaara)
492    {
493        ExplosionSystem kipinäpartikkelit = new ExplosionSystem(LoadImage("kipinä1"), pMaxMaara);
494        Add(kipinäpartikkelit);
495
496        kipinäpartikkelit.MinScale = 1;
497        kipinäpartikkelit.MaxScale = 2;
498        kipinäpartikkelit.MaxLifetime = 0.5;
499        kipinäpartikkelit.MinLifetime = 0.2;
500        kipinäpartikkelit.MaxVelocity = 1;
501       
502        kipinäpartikkelit.AddEffect(x, y, pMaara);
503    }
504
505    void PuuPartikkelit(double x, double y, int pMaara)
506    {
507        ExplosionSystem puupartikkelit = new ExplosionSystem(LoadImage("puusirpale1"), pMaxMaara);
508        Add(puupartikkelit);
509
510        puupartikkelit.MinScale = 1;
511        puupartikkelit.MaxScale = 2;
512        puupartikkelit.MaxLifetime = 0.5;
513        puupartikkelit.MinLifetime = 0.2;
514        puupartikkelit.MaxVelocity = 1;
515
516        puupartikkelit.AddEffect(x, y, pMaara);
517
518
519
520    }
521
522    void VeriPartikkelit(double x, double y, int pMaara)
523    {
524        ExplosionSystem veripartikkelit = new ExplosionSystem(LoadImage("veriroiske1"), pMaxMaara);
525        Add(veripartikkelit);
526
527        veripartikkelit.MinScale = 1;
528        veripartikkelit.MaxScale = 2;
529        veripartikkelit.MaxLifetime = 0.5;
530        veripartikkelit.MinLifetime = 0.2;
531        veripartikkelit.MaxVelocity = 1;
532       
533        veripartikkelit.AddEffect(x, y, pMaara);
534    }
535
536    void RäjähdysPartikkelit(double x, double y, int pMaara)
537    {
538        ExplosionSystem räjähdyspartikkelit = new ExplosionSystem(LoadImage("räjähdyspartikkeli2"), pMaxMaara);
539        Add(räjähdyspartikkelit);
540
541        räjähdyspartikkelit.MinScale = 10;
542        räjähdyspartikkelit.MaxScale = 20;
543        räjähdyspartikkelit.MaxLifetime = 0.8;
544        räjähdyspartikkelit.MinLifetime = 0.2;
545        räjähdyspartikkelit.MaxVelocity = 1.4;
546       
547        räjähdyspartikkelit.AddEffect(x, y, pMaara);
548
549
550    }
551
552    void RäjähdysPartikkelit2(double x, double y, int pMaara)
553    {
554        ExplosionSystem räjähdyspartikkelit2 = new ExplosionSystem(LoadImage("räjähdyspartikkeli2"), pMaxMaara);
555        Add(räjähdyspartikkelit2);
556
557        räjähdyspartikkelit2.MinScale = 5;
558        räjähdyspartikkelit2.MaxScale = 10;
559        räjähdyspartikkelit2.MaxLifetime = 1.0;
560        räjähdyspartikkelit2.MinLifetime = 0.2;
561        räjähdyspartikkelit2.MaxVelocity = 10.0;
562        räjähdyspartikkelit2.MinVelocity = 5.0;
563
564        räjähdyspartikkelit2.AddEffect(x, y, pMaara);
565
566
567    }
568
569   
570
571    void MiniguninAmmusOsuu(PhysicsObject ammus, PhysicsObject kohde)
572    {
573        if (kohde.Tag == "kivi")
574        {
575            KiviPartikkelit(ammus.X, ammus.Y, 40);
576        }
577
578        if (kohde.Tag == "puu")
579        {
580            PuuPartikkelit(ammus.X, ammus.Y, 40);
581        }
582
583        if (kohde.Tag == "pelaaja")
584        {
585            VeriPartikkelit(ammus.X, ammus.Y, 40);
586
587        }
588    }
589
590    void RynkynAmmusOsuu(PhysicsObject ammus, PhysicsObject kohde)
591    {
592        if (kohde.Tag == "kivi")
593        {
594            KiviPartikkelit(ammus.X, ammus.Y, 50);
595        }
596
597        if (kohde.Tag == "puu")
598        {
599            PuuPartikkelit(ammus.X, ammus.Y, 50);
600        }
601
602        if (kohde.Tag == "pelaaja")
603        {
604            VeriPartikkelit(ammus.X, ammus.Y, 50);
605           
606        }
607    }
608
609    void SnipanAmmusOsuu(PhysicsObject ammus, PhysicsObject kohde)
610    {
611        ammus.IgnoresCollisionResponse = true;
612
613        if (kohde.Tag == "kivi")
614        {
615            KiviPartikkelit(ammus.X, ammus.Y, 120);
616        }
617
618        if (kohde.Tag == "puu")
619        {
620            PuuPartikkelit(ammus.X, ammus.Y, 120);
621        }
622
623        if (kohde.Tag == "pelaaja")
624        {
625            VeriPartikkelit(ammus.X, ammus.Y, 200);
626           
627        }
628    }
629
630    void PistoolinAmmusOsuu(PhysicsObject ammus, PhysicsObject kohde)
631    {
632        if (kohde.Tag == "kivi")
633        {
634            KiviPartikkelit(ammus.X, ammus.Y, 30);
635        }
636
637        if (kohde.Tag == "puu")
638        {
639            PuuPartikkelit(ammus.X, ammus.Y, 30);
640        }
641
642        if (kohde.Tag == "pelaaja")
643        {
644            VeriPartikkelit(ammus.X, ammus.Y, 30);
645        }
646    }
647
648    void SingonAmmusOsuu(PhysicsObject ammus, PhysicsObject kohde)
649    {
650        RäjähdysPartikkelit(ammus.X, ammus.Y, 500);
651        //RäjähdysPartikkelit2(ammus.X, ammus.Y, 300);
652    }
653
654    #endregion
655
656
657
658    void VaihdaAsetta(Pelaaja pelaaja)
659    {
660        pelaaja.VaihdaAse(Mouse.WheelChange);
661    }
662
663    protected override void Update(Time time)
664    {
665        base.Update(time);
666        Vector suunta = (tähtäin.Position - pelaaja1.Position).Normalize();
667        pelaaja1.Angle = suunta.Angle;
668       
669       
670
671       
672    }
673}
674
675public class Pelaaja : PhysicsObject
676{
677    private List<Weapon> aseet;
678    private Weapon valittuAse = null;
679
680    public int Nro;
681
682    public DoubleMeter Elamat
683    {
684        get { return elamat; }
685        set { elamat = value; }
686    }
687    public DoubleMeter elamat;
688
689
690    public Pelaaja(double width, double height)
691        : base(width, height)
692    {
693        elamat = new DoubleMeter(10);
694        elamat.MaxValue = 10;
695        elamat.LowerLimit += Kuolema;
696        aseet = new List<Weapon>();
697    }
698
699    private void Kuolema()
700    {
701        Explosion rajahdys = new Explosion(50);
702        rajahdys.Position = this.Position;
703        Add(rajahdys);
704        this.Destroy();
705    }
706
707    public void LisaaAse(Weapon w)
708    {
709        if (!aseet.Contains(w))
710        {
711            aseet.Add(w);
712            this.Add(w);
713            if (aseet.Count == 1)
714                valittuAse = aseet[0];
715        }
716    }
717
718    public void PoistaAse(Weapon w)
719    {
720        if(!aseet.Contains(w))
721            aseet.Remove(w);
722    }
723
724    public void VaihdaAse(int suunta)
725    {
726        if (aseet != null && aseet.Count > 1)
727        {
728            foreach (Weapon ase in aseet)
729            {
730                ase.IsVisible = false;
731            }
732            if (suunta > 0)
733                if (aseet.IndexOf(valittuAse)+1 >= aseet.Count)
734                    valittuAse = aseet[0];
735                else
736                    valittuAse = aseet[aseet.IndexOf(valittuAse) + 1];
737            if (suunta < 0)
738                if (aseet.IndexOf(valittuAse) - 1 < 0)
739                    valittuAse = aseet[aseet.Count - 1];
740                else
741                    valittuAse = aseet[aseet.IndexOf(valittuAse) - 1];
742            valittuAse.IsVisible = true;
743        }
744    }
745
746    public PhysicsObject Ammu()
747    {
748        if (valittuAse != null)
749        {
750            PhysicsObject ammus = valittuAse.Shoot();
751            if (ammus != null)
752            {
753                ammus.Size *= 0.3;
754                return ammus;
755            }
756        }
757        return null;
758    }
759
760}
Note: See TracBrowser for help on using the repository browser.