source: 2013/24/HenryS/Wizard_Battle/Wizard_Battle/Wizard_Battle/Wizard_Battle.cs @ 4129

Revision 4129, 44.5 KB checked in by hejusiuk, 6 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Wizard_Battle : PhysicsGame
10{
11    const double nopeus = 350;
12    const double hyppyNopeus = 850;
13    const int RUUDUN_KOKO = 40;
14
15    List<Label> valikonKohdat;
16    List<Label> valikonKohdat2;
17
18    TileMap kentta;
19
20    PlatformCharacter pelaaja1;
21    PlatformCharacter pelaaja2;
22    PlatformCharacter pelaaja3;
23    PlatformCharacter pelaaja4;
24
25    AssaultRifle pyssy;
26
27    DoubleMeter elamaLaskuri;
28    DoubleMeter elamaLaskuri2;
29    DoubleMeter elamaLaskuri3;
30    DoubleMeter elamaLaskuri4;
31
32    IntMeter Lopunlaskuri;
33
34    bool saakoTeleportata = true;
35    bool saakoLuoda = true;
36    bool saakoHyokata = true;
37    bool saakoTehda = true;
38    bool saakoMuuttua = true;
39    bool saakoPiikittaa = true;
40    bool OnkoVesi = true;
41    bool saakoSuojata = true;
42    bool saakoSataa = true;
43    bool saakoHypata = true;
44    bool saakoTuliSuojata = true;
45    bool kaksiPelaajaa = true;
46    bool kolmePelaajaa = true;
47    bool neljaPelaajaa = true;
48    bool onkoLuotu = false;
49
50    Image pelaajanKuva = LoadImage("norsu");
51    Image tahtiKuva = LoadImage("tahti");
52    Image WVelho = LoadImage("BlueWizard");
53    Image DVelho = LoadImage("DarkWizard");
54    Image RVelho = LoadImage("RedWizard");
55    Image BVelho = LoadImage("BrownWizard");
56    Image Tulipallo = LoadImage("Fireball");
57    Image Tulipallo2 = LoadImage("Fireball2");
58    Image Tuli = LoadImage("Fire");
59    Image Vortex = LoadImage("Vortex");
60    Image Seinä = LoadImage("Mud");
61    private Image[] Piikki = LoadImages("Spike1", "Spike2", "Spike3");
62    Image Tulipyorre = LoadImage("Firevortex");
63    Image Hyoky = LoadImage("Tidal");
64    Image Vesipallo = LoadImage("Waterball");
65    Image Spike = LoadImage("Spike3");
66    Image Alusta = LoadImage("Platform");
67    Image ElamaPakkaus = LoadImage("crossred");
68    Image Tausta = LoadImage("background");
69    Image Tausta2 = LoadImage("background.2png");
70    Image Tausta3 = LoadImage("Space");
71    Image Laava = LoadImage("Lava");
72    Image Sade = LoadImage("Rain");
73
74    SoundEffect maaliAani = LoadSoundEffect("maali");
75
76    public override void Begin()
77    {
78        Valikko();
79    }
80
81    void Valikko()
82    {
83        ClearAll();
84        ControllerOne.Listen(Button.A, ButtonState.Pressed, nelinPeli, "Nelinpeli");
85        ControllerOne.Listen(Button.X, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
86        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
87        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
88        IsMouseVisible = true;
89        valikonKohdat = new List<Label>();
90        Label kohta1 = new Label("Kaksinpeli");
91        kohta1.Position = new Vector(0, 40);
92        valikonKohdat.Add(kohta1);
93        Label kohta2 = new Label("Kolminpeli");
94        kohta2.Position = new Vector(0, 0);
95        valikonKohdat.Add(kohta2);
96        Label kohta3 = new Label("Nelinpeli");
97        kohta3.Position = new Vector(0, -40);
98        valikonKohdat.Add(kohta3);
99        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
100        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, kaksinPeli, null);
101        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, kolminPeli, null);
102        Mouse.ListenOn(kohta3, MouseButton.Left, ButtonState.Pressed, nelinPeli, null);
103
104        foreach (Label valikonKohta in valikonKohdat)
105        {
106            Add(valikonKohta);
107        }
108
109
110    }
111
112    void ValikossaLiikkuminen(AnalogState hiirenTila)
113    {
114
115        foreach (Label Kohta in valikonKohdat)
116        {
117            if (Mouse.IsCursorOn(Kohta))
118            {
119                Kohta.TextColor = Color.Red;
120            }
121            else
122            {
123                Kohta.TextColor = Color.Black;
124            }
125
126        }
127    }
128
129    void KenttaValikko()
130    {
131        ClearAll();
132        ControllerOne.Listen(Button.A, ButtonState.Pressed, nelinPeli, "Nelinpeli");
133        ControllerOne.Listen(Button.B, ButtonState.Pressed, kolminPeli, "Kolminpeli");
134        ControllerOne.Listen(Button.Y, ButtonState.Pressed, kaksinPeli, "kaksinpeli");
135        ControllerOne.Listen(Button.X, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
136        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
137        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
138        IsMouseVisible = true;
139        valikonKohdat2 = new List<Label>();
140        Label kohta1 = new Label("Sunny field");
141        kohta1.Position = new Vector(0, 40);
142        valikonKohdat2.Add(kohta1);
143        Label kohta2 = new Label("Hell");
144        kohta2.Position = new Vector(0, 0);
145        valikonKohdat2.Add(kohta2);
146        Label kohta3 = new Label("Space");
147        kohta3.Position = new Vector(0, -40);
148        valikonKohdat2.Add(kohta3);
149        Mouse.ListenMovement(1.0, ValikossaLiikkuminen2, null);
150        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, LuoKentta, null);
151        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, LuoKentta2, null);
152        Mouse.ListenOn(kohta3, MouseButton.Left, ButtonState.Pressed, LuoKentta3, null);
153
154        foreach (Label valikonKohta2 in valikonKohdat2)
155        {
156            Add(valikonKohta2);
157        }
158
159
160    }
161
162    void ValikossaLiikkuminen2(AnalogState hiirenTila)
163    {
164
165        foreach (Label Kohta in valikonKohdat2)
166        {
167            if (Mouse.IsCursorOn(Kohta))
168            {
169                Kohta.TextColor = Color.Red;
170            }
171            else
172            {
173                Kohta.TextColor = Color.Black;
174            }
175
176        }
177    }
178
179    void kaksinPeli()
180    {
181        kolmePelaajaa = false;
182        neljaPelaajaa = false;
183        Lopunlaskuri = new IntMeter(0);
184        Lopunlaskuri.UpperLimit += Voitto;
185        Lopunlaskuri.MaxValue = 1;
186        KenttaValikko();
187
188    }
189    void kolminPeli()
190    {
191        kaksiPelaajaa = false;
192        neljaPelaajaa = false;
193        Lopunlaskuri = new IntMeter(0);
194        Lopunlaskuri.UpperLimit += Voitto;
195        Lopunlaskuri.MaxValue = 2;
196        KenttaValikko();
197    }
198    void nelinPeli()
199    {
200        kolmePelaajaa = false;
201        kaksiPelaajaa = false;
202        Lopunlaskuri = new IntMeter(0);
203        Lopunlaskuri.UpperLimit += Voitto;
204        Lopunlaskuri.MaxValue = 3;
205        KenttaValikko();
206    }
207
208    void LuoKentta()
209    {
210
211        ClearAll();
212        kentta = TileMap.FromLevelAsset("kentta1");
213        kentta.SetTileMethod('#', LisaaTaso);
214        kentta.SetTileMethod('¤', LisaaAlusta);
215        kentta.SetTileMethod('3', LuoEnkka);
216
217        Gravity = new Vector(0, -1000);
218        if (kaksiPelaajaa == true)
219        {
220            kentta.SetTileMethod('P', LuoPelaaja1);
221            kentta.SetTileMethod('D', LuoPelaaja2);
222            kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
223            LisaaNappaimet1();
224            LisaaNappaimet2();
225            LuoElamaLaskuri();
226            LuoElamaLaskuri2();
227
228        }
229        if (kolmePelaajaa == true)
230        {
231            kentta.SetTileMethod('P', LuoPelaaja1);
232            kentta.SetTileMethod('D', LuoPelaaja2);
233            kentta.SetTileMethod('R', LuoPelaaja3);
234            kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
235            LisaaNappaimet1();
236            LisaaNappaimet2();
237            LisaaNappaimet3();
238            LuoElamaLaskuri();
239            LuoElamaLaskuri2();
240            LuoElamaLaskuri3();
241        }
242        if (neljaPelaajaa == true)
243        {
244            kentta.SetTileMethod('P', LuoPelaaja1);
245            kentta.SetTileMethod('D', LuoPelaaja2);
246            kentta.SetTileMethod('R', LuoPelaaja3);
247            kentta.SetTileMethod('B', LuoPelaaja4);
248            kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
249            LisaaNappaimet1();
250            LisaaNappaimet2();
251            LisaaNappaimet3();
252            LisaaNappaimet4();
253            LuoElamaLaskuri();
254            LuoElamaLaskuri2();
255            LuoElamaLaskuri3();
256            LuoElamaLaskuri4();
257        }
258
259        Level.CreateBorders();
260        Camera.ZoomToLevel();
261        Camera.StayInLevel = true;
262        Level.Background.Image = Tausta;
263        Level.Background.FitToLevel(); 
264
265    }
266
267    void LuoKentta2()
268    {
269
270        ClearAll();
271        kentta = TileMap.FromLevelAsset("kentta2");
272        kentta.SetTileMethod('#', LisaaTaso2);
273        kentta.SetTileMethod('&', LisaaLiikkuva);
274        kentta.SetTileMethod('3', LuoEnkka);
275
276        Gravity = new Vector(0, -1000);
277        if (kaksiPelaajaa == true)
278        {
279            kentta.SetTileMethod('P', LuoPelaaja1);
280            kentta.SetTileMethod('D', LuoPelaaja2);
281            kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
282            LisaaNappaimet1();
283            LisaaNappaimet2();
284            LuoElamaLaskuri();
285            LuoElamaLaskuri2();
286
287        }
288        if (kolmePelaajaa == true)
289        {
290            kentta.SetTileMethod('P', LuoPelaaja1);
291            kentta.SetTileMethod('D', LuoPelaaja2);
292            kentta.SetTileMethod('R', LuoPelaaja3);
293            kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
294            LisaaNappaimet1();
295            LisaaNappaimet2();
296            LisaaNappaimet3();
297            LuoElamaLaskuri();
298            LuoElamaLaskuri2();
299            LuoElamaLaskuri3();
300        }
301        if (neljaPelaajaa == true)
302        {
303            kentta.SetTileMethod('P', LuoPelaaja1);
304            kentta.SetTileMethod('D', LuoPelaaja2);
305            kentta.SetTileMethod('R', LuoPelaaja3);
306            kentta.SetTileMethod('B', LuoPelaaja4);
307            kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
308            LisaaNappaimet1();
309            LisaaNappaimet2();
310            LisaaNappaimet3();
311            LisaaNappaimet4();
312            LuoElamaLaskuri();
313            LuoElamaLaskuri2();
314            LuoElamaLaskuri3();
315            LuoElamaLaskuri4();
316        }
317
318        Level.CreateBorders();
319        Camera.ZoomToLevel();
320        Camera.StayInLevel = true;
321        Level.Background.Image = Tausta2;
322        Level.Background.FitToLevel();
323    }
324
325    void LuoKentta3()
326    {
327
328        ClearAll();
329        kentta = TileMap.FromLevelAsset("kentta3");
330        kentta.SetTileMethod('#', LisaaTahti);
331        kentta.SetTileMethod('&', LisaaLiikkuvaTahti);
332        kentta.SetTileMethod('/', LisaaLiikkuvaTahti2);
333        kentta.SetTileMethod('3', LuoEnkka);
334
335        Gravity = new Vector(0, -500);
336        if (kaksiPelaajaa == true)
337        {
338            kentta.SetTileMethod('P', LuoPelaaja1);
339            kentta.SetTileMethod('D', LuoPelaaja2);
340            kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
341            LisaaNappaimet1();
342            LisaaNappaimet2();
343            LuoElamaLaskuri();
344            LuoElamaLaskuri2();
345
346        }
347        if (kolmePelaajaa == true)
348        {
349            kentta.SetTileMethod('P', LuoPelaaja1);
350            kentta.SetTileMethod('D', LuoPelaaja2);
351            kentta.SetTileMethod('R', LuoPelaaja3);
352            kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
353            LisaaNappaimet1();
354            LisaaNappaimet2();
355            LisaaNappaimet3();
356            LuoElamaLaskuri();
357            LuoElamaLaskuri2();
358            LuoElamaLaskuri3();
359        }
360        if (neljaPelaajaa == true)
361        {
362            kentta.SetTileMethod('P', LuoPelaaja1);
363            kentta.SetTileMethod('D', LuoPelaaja2);
364            kentta.SetTileMethod('R', LuoPelaaja3);
365            kentta.SetTileMethod('B', LuoPelaaja4);
366            kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
367            LisaaNappaimet1();
368            LisaaNappaimet2();
369            LisaaNappaimet3();
370            LisaaNappaimet4();
371            LuoElamaLaskuri();
372            LuoElamaLaskuri2();
373            LuoElamaLaskuri3();
374            LuoElamaLaskuri4();
375        }
376
377        Level.CreateBorders();
378        Camera.ZoomToLevel();
379        Camera.StayInLevel = true;
380        Level.Background.Image = Tausta3;
381        Level.Background.FitToLevel();
382    }
383
384
385    void LisaaTaso(Vector paikka, double leveys, double korkeus)
386    {
387        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
388        taso.Position = paikka;
389        taso.Image = Seinä;
390        Add(taso);
391    }
392    void LisaaTaso2(Vector paikka, double leveys, double korkeus)
393    {
394        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
395        taso.Position = paikka;
396        taso.Image = Laava;
397        Add(taso);
398    }
399    void LisaaTahti(Vector paikka, double leveys, double korkeus)
400    {
401        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
402        taso.Position = paikka;
403        taso.Image = Laava;
404        Add(taso);
405    }
406    void LisaaLiikkuvaTahti(Vector paikka, double leveys, double korkeus)
407    {
408        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
409        taso.Position = paikka;
410        taso.Image = Laava;
411        Add(taso);
412        taso.Oscillate(Vector.UnitX, 400, 0.1);
413    }
414    void LisaaLiikkuvaTahti2(Vector paikka, double leveys, double korkeus)
415    {
416        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
417        taso.Position = paikka;
418        taso.Image = Laava;
419        Add(taso);
420        taso.Oscillate(Vector.UnitY, 360, 0.1);
421    }
422    void LisaaLiikkuva(Vector paikka, double leveys, double korkeus)
423    {
424        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
425        taso.Position = paikka;
426        taso.Image = Laava;
427        Add(taso);
428        taso.Oscillate(Vector.UnitY, 360, 0.1);
429    }
430    void LisaaAlusta(Vector paikka, double leveys, double korkeus)
431    {
432        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
433        taso.Position = paikka;
434        taso.Image = Alusta;
435        Add(taso);
436    }
437    void LuoEnkka(Vector paikka, double leveys, double korkeus)
438    {
439        Timer.SingleShot(30, TeeEnkka);
440    }
441    void TeeEnkka()
442    {
443        if (onkoLuotu == false)
444        {
445            PhysicsObject EnkkaPakkaus = PhysicsObject.CreateStaticObject(40.0, 40.0);
446            EnkkaPakkaus.X = 800;
447            EnkkaPakkaus.Y = 440;
448            EnkkaPakkaus.Image = ElamaPakkaus;
449            Add(EnkkaPakkaus);
450            AddCollisionHandler(EnkkaPakkaus, LisaaEnkkaa);
451            onkoLuotu = true;
452        }
453    }
454    void LisaaEnkkaa(PhysicsObject tormaaja, PhysicsObject kohde)
455    {
456        tormaaja.Destroy();
457        if (kohde == pelaaja1)
458        {
459            elamaLaskuri.Value += 20;
460            onkoLuotu = false;
461        }
462        if (kohde == pelaaja2)
463        {
464            elamaLaskuri2.Value += 20;
465            onkoLuotu = false;
466        }
467        if (kohde == pelaaja3)
468        {
469            elamaLaskuri3.Value += 20;
470            onkoLuotu = false;
471        }
472        if (kohde == pelaaja4)
473        {
474            elamaLaskuri4.Value += 20;
475            onkoLuotu = false;
476        }
477        Timer.SingleShot(30, TeeEnkka);
478    }
479
480
481    void LuoPelaaja1(Vector paikka, double leveys, double korkeus)
482    {
483        pelaaja1 = new PlatformCharacter(80.0, 80.0);
484        pelaaja1.Position = paikka;
485        pelaaja1.Mass = 4.0;
486        pelaaja1.Image = WVelho;
487        Add(pelaaja1);
488        pelaaja1.Weapon = new AssaultRifle(30, 10);
489        pelaaja1.Weapon.Ammo.Value = 1000;
490        pelaaja1.Weapon.ProjectileCollision = AmmusOsui3;
491        pelaaja1.Weapon.FireRate = 0.7;
492        pelaaja1.Weapon.IsVisible = false;
493    }
494    void AmmusOsui3(PhysicsObject ammus, PhysicsObject kohde)
495    {
496        ammus.Destroy();
497
498        if (kohde == pelaaja2)
499        {
500            elamaLaskuri2.Value -= 10;
501        }
502        if (kohde == pelaaja3)
503        {
504            elamaLaskuri3.Value -= 10;
505        }
506        if (kohde == pelaaja4)
507        {
508            elamaLaskuri4.Value -= 10;
509        }
510    }
511
512
513    void LuoPelaaja2(Vector paikka, double leveys, double korkeus)
514    {
515        pelaaja2 = new PlatformCharacter(80.0, 80.0);
516        pelaaja2.Position = paikka;
517        pelaaja2.Mass = 4.0;
518        pelaaja2.Image = DVelho;
519        Add(pelaaja2);
520        pelaaja2.Weapon = new AssaultRifle(30, 10);
521        pelaaja2.Weapon.Ammo.Value = 1000;
522        pelaaja2.Weapon.ProjectileCollision = AmmusOsui;
523        pelaaja2.Weapon.FireRate = 0.7;
524        pelaaja2.Weapon.IsVisible = false;
525        pyssy = new AssaultRifle(30, 10);
526        pyssy.Ammo.Value = 1000;
527        pyssy.ProjectileCollision = AmmusOsui4;
528        pyssy.FireRate = 0.1;
529        pyssy.IsVisible = false;
530        pyssy.Power.Value = 100;
531        pyssy.Power.DefaultValue = 100;
532        pelaaja2.Add(pyssy);
533
534    }
535    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
536    {
537
538        ammus.Destroy();
539
540        if (kohde == pelaaja1)
541        {
542            elamaLaskuri.Value -= 10;
543        }
544
545        if (kohde == pelaaja3)
546        {
547            elamaLaskuri3.Value -= 10;
548        }
549        if (kohde == pelaaja4)
550        {
551            elamaLaskuri4.Value -= 10;
552        }
553    }
554    void AmmusOsui4(PhysicsObject ammus, PhysicsObject kohde)
555    {
556
557        ammus.Destroy();
558
559        if (kohde == pelaaja1)
560        {
561            elamaLaskuri.Value -= 15;
562            pelaaja1.Position = Level.GetRandomPosition();
563            PhysicsObject pimeys = PhysicsObject.CreateStaticObject(90.0, 100.0);
564            pimeys.Position = pelaaja1.Position;
565            pimeys.IgnoresCollisionResponse = true;
566            pimeys.Image = Vortex;
567            pimeys.MaximumLifetime = TimeSpan.FromSeconds(0.3);
568            Add(pimeys, -2);
569            maaliAani.Play();
570        }
571        if (kohde == pelaaja2)
572        {
573            elamaLaskuri2.Value -= 5;
574            pelaaja2.Position = Level.GetRandomPosition();
575            PhysicsObject pimeys = PhysicsObject.CreateStaticObject(90.0, 100.0);
576            pimeys.Position = pelaaja2.Position;
577            pimeys.IgnoresCollisionResponse = true;
578            pimeys.Image = Vortex;
579            pimeys.MaximumLifetime = TimeSpan.FromSeconds(0.3);
580            Add(pimeys, -2);
581            maaliAani.Play();
582        }
583
584        if (kohde == pelaaja3)
585        {
586            elamaLaskuri3.Value -= 15;
587            pelaaja3.Position = Level.GetRandomPosition();
588            PhysicsObject pimeys = PhysicsObject.CreateStaticObject(90.0, 100.0);
589            pimeys.Position = pelaaja3.Position;
590            pimeys.IgnoresCollisionResponse = true;
591            pimeys.Image = Vortex;
592            pimeys.MaximumLifetime = TimeSpan.FromSeconds(0.3);
593            Add(pimeys, -2);
594            maaliAani.Play();
595        }
596        if (kohde == pelaaja4)
597        {
598            elamaLaskuri4.Value -= 15;
599            pelaaja4.Position = Level.GetRandomPosition();
600            PhysicsObject pimeys = PhysicsObject.CreateStaticObject(90.0, 100.0);
601            pimeys.Position = pelaaja4.Position;
602            pimeys.IgnoresCollisionResponse = true;
603            pimeys.Image = Vortex;
604            pimeys.MaximumLifetime = TimeSpan.FromSeconds(0.3);
605            Add(pimeys, -2);
606            maaliAani.Play();
607        }
608    }
609
610    void LuoPelaaja3(Vector paikka, double leveys, double korkeus)
611    {
612        pelaaja3 = new PlatformCharacter(80.0, 80.0);
613        pelaaja3.Position = paikka;
614        pelaaja3.Mass = 4.0;
615        pelaaja3.Image = RVelho;
616        Add(pelaaja3);
617        pelaaja3.Weapon = new AssaultRifle(30, 10);
618        pelaaja3.Weapon.Ammo.Value = 1000;
619        pelaaja3.Weapon.ProjectileCollision = AmmusOsui2;
620        pelaaja3.Weapon.FireRate = 0.7;
621        pelaaja3.Weapon.IsVisible = false;
622    }
623
624    void AmmusOsui2(PhysicsObject ammus, PhysicsObject kohde)
625    {
626        ammus.Destroy();
627
628        if (kohde == pelaaja1)
629        {
630            elamaLaskuri.Value -= 10;
631            PhysicsObject tulta = new PhysicsObject(50.0, 70.0);
632            tulta.Position = pelaaja1.Position;
633            tulta.Image = Tuli;
634            tulta.IgnoresCollisionResponse = true;
635            Add(tulta, 2);
636            FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja1);
637            seuraajanAivot.Speed = 1000;
638            seuraajanAivot.Active = true;
639            tulta.Brain = seuraajanAivot;
640            tulta.MaximumLifetime = TimeSpan.FromSeconds(1.0);
641
642        }
643        if (kohde == pelaaja2)
644        {
645            elamaLaskuri2.Value -= 10;
646            PhysicsObject tulta = new PhysicsObject(50.0, 70.0);
647            tulta.Position = pelaaja2.Position;
648            tulta.Image = Tuli;
649            tulta.IgnoresCollisionResponse = true;
650            Add(tulta, 2);
651            FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja2);
652            seuraajanAivot.Speed = 1000;
653            seuraajanAivot.Active = true;
654            tulta.Brain = seuraajanAivot;
655            tulta.MaximumLifetime = TimeSpan.FromSeconds(1.0);
656
657        }
658        if (kohde == pelaaja4)
659        {
660            elamaLaskuri4.Value -= 10;
661            PhysicsObject tulta = new PhysicsObject(50.0, 70.0);
662            tulta.Position = pelaaja4.Position;
663            tulta.Image = Tuli;
664            tulta.IgnoresCollisionResponse = true;
665            Add(tulta, 2);
666            FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja4);
667            seuraajanAivot.Speed = 1000;
668            seuraajanAivot.Active = true;
669            tulta.Brain = seuraajanAivot;
670            tulta.MaximumLifetime = TimeSpan.FromSeconds(1.0);
671
672        }
673    }
674
675    void LuoPelaaja4(Vector paikka, double leveys, double korkeus)
676    {
677        pelaaja4 = new PlatformCharacter(80.0, 80.0);
678        pelaaja4.Position = paikka;
679        pelaaja4.Mass = 4.0;
680        pelaaja4.Image = BVelho;
681        Add(pelaaja4);
682    }
683
684    void LisaaNappaimet1()
685    {
686        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
687        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
688
689        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Water wizard liikkuu vasemmalle", pelaaja1, -nopeus);
690        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Water wizard liikkuu oikealle", pelaaja1, nopeus);
691        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Water wizard hyppää", pelaaja1, hyppyNopeus);
692        Keyboard.Listen(Key.E, ButtonState.Pressed, AmmuAseella3, "Water wizard hyökkää", pelaaja1);
693        Keyboard.Listen(Key.Q, ButtonState.Down, TeeVesipallo, "Water wizard hyökkää", pelaaja1);
694        Keyboard.Listen(Key.X, ButtonState.Down, TeeVesisade, "Water wizard hyökkää", pelaaja1);
695        Keyboard.Listen(Key.Z, ButtonState.Down, TeeVesisuoja, "Water wizard suoja", pelaaja1);
696
697        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
698
699        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Water wizard liikkuu vasemmalle", pelaaja1, -nopeus);
700        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Water wizard liikkuu oikealle", pelaaja1, nopeus);
701        ControllerOne.Listen(Button.DPadUp, ButtonState.Pressed, Hyppaa, "Water wizard hyppää", pelaaja1, hyppyNopeus);
702        ControllerOne.Listen(Button.Y, ButtonState.Pressed, AmmuAseella3, "Water wizard Hyökkää", pelaaja1);
703        ControllerOne.Listen(Button.B, ButtonState.Pressed, TeeVesipallo, "Water wizard muuttuu näkymättömäksi", pelaaja1);
704        ControllerOne.Listen(Button.X, ButtonState.Pressed, TeeVesisuoja, "Water wizard Hyökkää", pelaaja1);
705        ControllerOne.Listen(Button.A, ButtonState.Pressed, TeeVesisade, "Water wizard Hyökkää", pelaaja1);
706
707
708    }
709
710    void LisaaNappaimet2()
711    {
712        Keyboard.Listen(Key.F, ButtonState.Down, Liikuta, "Dark wizard liikkuu vasemmalle", pelaaja2, -nopeus);
713        Keyboard.Listen(Key.H, ButtonState.Down, Liikuta, "Dark wizard liikkuu oikealle", pelaaja2, nopeus);
714        Keyboard.Listen(Key.T, ButtonState.Pressed, Hyppaa, "Dark wizard hyppää", pelaaja2, hyppyNopeus);
715        Keyboard.Listen(Key.R, ButtonState.Pressed, Teleport, "Dark wizard Teleporttaa", pelaaja2);
716        Keyboard.Listen(Key.Y, ButtonState.Pressed, AmmuAseella2, "Dark wizard Hyökkää", pelaaja2);
717        Keyboard.Listen(Key.B, ButtonState.Pressed, Nakymaton, "Dark wizard muuttuu näkymättömäksi", pelaaja2);
718        Keyboard.Listen(Key.V, ButtonState.Pressed, AmmuAseella4, "Dark wizard Hyökkää", pelaaja2);
719
720        ControllerTwo.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Dark wizard liikkuu vasemmalle", pelaaja2, -nopeus);
721        ControllerTwo.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Dark wizard liikkuu oikealle", pelaaja2, nopeus);
722        ControllerTwo.Listen(Button.DPadUp, ButtonState.Pressed, Hyppaa, "Dark wizard hyppää", pelaaja2, hyppyNopeus);
723        ControllerTwo.Listen(Button.Y, ButtonState.Pressed, Teleport, "Dark wizard teleporttaa", pelaaja2);
724        ControllerTwo.Listen(Button.B, ButtonState.Pressed, AmmuAseella2, "Dark wizard ampuu", pelaaja2);
725        ControllerTwo.Listen(Button.X, ButtonState.Pressed, Nakymaton, "Dark wizard muuttuu näkymättömäksi", pelaaja2);
726        ControllerTwo.Listen(Button.A, ButtonState.Pressed, AmmuAseella4, "Dark wizard ampuu", pelaaja2);
727
728    }
729
730    void LisaaNappaimet3()
731    {
732        Keyboard.Listen(Key.J, ButtonState.Down, Liikuta, "Fire wizard liikkuu vasemmalle", pelaaja3, -nopeus);
733        Keyboard.Listen(Key.L, ButtonState.Down, Liikuta, "Fire wizard liikkuu oikealle", pelaaja3, nopeus);
734        Keyboard.Listen(Key.I, ButtonState.Pressed, Hyppaa, "Fire wizard hyppää", pelaaja3, hyppyNopeus);
735        Keyboard.Listen(Key.O, ButtonState.Down, AmmuAseella, "Fire wizard ampuu", pelaaja3);
736        Keyboard.Listen(Key.U, ButtonState.Down, TeePyorre, "Fire wizard suojaa", pelaaja3);
737        Keyboard.Listen(Key.P, ButtonState.Down, TeeTulisuoja, "Fire wizard suojaa", pelaaja3);
738        Keyboard.Listen(Key.M, ButtonState.Down, Tulihyppy, "Fire wizard hyppää", pelaaja3);
739
740        ControllerThree.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "´Fire wizard liikkuu vasemmalle", pelaaja3, -nopeus);
741        ControllerThree.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Fire wizard liikkuu oikealle", pelaaja3, nopeus);
742        ControllerThree.Listen(Button.DPadUp, ButtonState.Pressed, Hyppaa, "Fire wizard hyppää", pelaaja3, hyppyNopeus);
743        ControllerThree.Listen(Button.Y, ButtonState.Pressed, TeePyorre, "Fire wizard ampuu", pelaaja3);
744        ControllerThree.Listen(Button.B, ButtonState.Pressed, AmmuAseella, "Fire wizard ampuu", pelaaja3);
745        ControllerThree.Listen(Button.X, ButtonState.Pressed, TeeTulisuoja, "Fire wizard suojaa", pelaaja3);
746        ControllerThree.Listen(Button.A, ButtonState.Pressed, Tulihyppy, "Fire wizard hyppää", pelaaja3);
747
748    }
749
750    void LisaaNappaimet4()
751    {
752        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Earth wizard liikkuu vasemmalle", pelaaja4, -nopeus);
753        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Earth wizard liikkuu oikealle", pelaaja4, nopeus);
754        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Earth wizard hyppää", pelaaja4, hyppyNopeus);
755        Keyboard.Listen(Key.Enter, ButtonState.Down, TeeSeina, "Earth wizard suojaa", pelaaja4);
756        Keyboard.Listen(Key.RightShift, ButtonState.Down, Piikit, "Earth wizard hyökkää", pelaaja4);
757        Keyboard.Listen(Key.RightControl, ButtonState.Down, Piikit2, "Earth wizard hyökkää alaspäin", pelaaja4);
758
759        ControllerFour.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Earth wizard liikkuu vasemmalle", pelaaja4, -nopeus);
760        ControllerFour.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Earth wizard liikkuu oikealle", pelaaja4, nopeus);
761        ControllerFour.Listen(Button.DPadUp, ButtonState.Pressed, Hyppaa, "Earth wizard hyppää", pelaaja4, hyppyNopeus);
762        ControllerFour.Listen(Button.Y, ButtonState.Pressed, TeeSeina, "Earth wizard suojaa", pelaaja4);
763        ControllerFour.Listen(Button.B, ButtonState.Pressed, Piikit, "Earth wizard hyökkää", pelaaja4);
764        ControllerFour.Listen(Button.A, ButtonState.Pressed, Piikit2, "Earth wizard hyökkää alaspäin", pelaaja4);
765    }
766
767    void TeeVesisade(PlatformCharacter pelaaja)
768    {
769        if (saakoSataa == true)
770        {
771            PhysicsObject sade = new PhysicsObject(75.0, 100.0);
772            sade.X = pelaaja1.X + 300;
773            sade.Y = pelaaja1.Y + 200;
774            sade.MaximumLifetime = TimeSpan.FromSeconds(5);
775            sade.Image = Sade;
776            Add(sade);
777            PhysicsObject sade2 = new PhysicsObject(75.0, 100.0);
778            sade2.X = pelaaja1.X - 300;
779            sade2.Y = pelaaja1.Y + 200;
780            sade2.MaximumLifetime = TimeSpan.FromSeconds(5);
781            sade2.Image = Sade;
782            Add(sade2);
783            sade.IgnoresCollisionResponse = true;
784            sade.IgnoresCollisionResponse = true;
785            AddCollisionHandler(sade, sadeOsui);
786            AddCollisionHandler(sade2, sadeOsui);
787            saakoSataa = false;
788            Timer.SingleShot(2, saaSataa);
789        }
790    }
791    void saaSataa()
792    {
793        saakoSataa = true;
794    }
795    void sadeOsui(PhysicsObject tormaaja, PhysicsObject kohde)
796    {
797        tormaaja.Destroy();
798
799        if (kohde == pelaaja4)
800        {
801            elamaLaskuri4.Value -= 5;
802        }
803        if (kohde == pelaaja2)
804        {
805            elamaLaskuri2.Value -= 5;
806        }
807        if (kohde == pelaaja3)
808        {
809            elamaLaskuri3.Value -= 5;
810        }
811    }
812
813    void Piikit(PlatformCharacter pelaaja)
814    {
815        if (saakoHyokata == true)
816        {
817            LuoPiikki(pelaaja4.X + 100, pelaaja4.Y);
818            LuoPiikki(pelaaja4.X + 200, pelaaja4.Y);
819            LuoPiikki(pelaaja4.X + 300, pelaaja4.Y);
820            LuoPiikki(pelaaja4.X - 100, pelaaja4.Y);
821            LuoPiikki(pelaaja4.X - 200, pelaaja4.Y);
822            LuoPiikki(pelaaja4.X - 300, pelaaja4.Y);
823            saakoHyokata = false;
824            Timer.SingleShot(5, saaHyokata);
825        }
826    }
827
828    void saaHyokata()
829    {
830        saakoHyokata = true;
831    }
832
833    void LuoPiikki(double x, double y)
834    {
835        PhysicsObject piikki = new PhysicsObject(40.0, 100.0);
836        piikki.X = x;
837        piikki.Y = y;
838        piikki.IgnoresGravity = true;
839        piikki.Animation = new Animation(Piikki);
840        piikki.Animation.FPS = 3;
841        piikki.Animation.StopOnLastFrame = true;
842        piikki.Animation.Start(1);
843        piikki.MaximumLifetime = TimeSpan.FromSeconds(2);
844        Add(piikki);
845        piikki.IgnoresCollisionResponse = true;
846        AddCollisionHandler(piikki, piikkiOsui);
847    }
848
849    void TeeVesisuoja(PlatformCharacter pelaaja)
850    {
851        if (saakoSuojata == true)
852        {
853            LuoVesisuoja(pelaaja1.X + 100, pelaaja1.Y);
854            LuoVesisuoja(pelaaja1.X, pelaaja1.Y + 100);
855            LuoVesisuoja(pelaaja1.X - 100, pelaaja1.Y);
856            LuoVesisuoja(pelaaja1.X, pelaaja1.Y - 100);
857            LuoVesisuoja(pelaaja1.X - 75, pelaaja1.Y - 75);
858            LuoVesisuoja(pelaaja1.X + 75, pelaaja1.Y + 75);
859            LuoVesisuoja(pelaaja1.X - 75, pelaaja1.Y + 75);
860            LuoVesisuoja(pelaaja1.X + 75, pelaaja1.Y - 75);
861            saakoSuojata = false;
862            Timer.SingleShot(5, saaSuojata);
863        }
864    }
865
866    void saaSuojata()
867    {
868        saakoSuojata = true;
869    }
870
871    void LuoVesisuoja(double x, double y)
872    {
873        PhysicsObject Vesipalloo = PhysicsObject.CreateStaticObject(60.0, 60.0);
874        Vesipalloo.X = x;
875        Vesipalloo.Y = y;
876        Vesipalloo.IgnoresGravity = true;
877        Vesipalloo.MaximumLifetime = TimeSpan.FromSeconds(2);
878        Vesipalloo.Image = Vesipallo;
879        Add(Vesipalloo);
880    }
881
882    void TeeTulisuoja(PlatformCharacter pelaaja)
883    {
884        if (saakoTuliSuojata == true)
885        {
886            LuoTulisuoja(pelaaja3.X + 100, pelaaja3.Y);
887            LuoTulisuoja(pelaaja3.X, pelaaja3.Y + 100);
888            LuoTulisuoja(pelaaja3.X - 100, pelaaja3.Y);
889            LuoTulisuoja(pelaaja3.X, pelaaja3.Y - 100);
890            LuoTulisuoja(pelaaja3.X - 75, pelaaja3.Y - 75);
891            LuoTulisuoja(pelaaja3.X + 75, pelaaja3.Y + 75);
892            LuoTulisuoja(pelaaja3.X - 75, pelaaja3.Y + 75);
893            LuoTulisuoja(pelaaja3.X + 75, pelaaja3.Y - 75);
894            saakoTuliSuojata = false;
895            Timer.SingleShot(5, saaTuliSuojata);
896        }
897    }
898
899    void saaTuliSuojata()
900    {
901        saakoTuliSuojata = true;
902    }
903
904    void LuoTulisuoja(double x, double y)
905    {
906        PhysicsObject Tulipalloo = PhysicsObject.CreateStaticObject(60.0, 60.0);
907        Tulipalloo.X = x;
908        Tulipalloo.Y = y;
909        Tulipalloo.IgnoresGravity = true;
910        Tulipalloo.MaximumLifetime = TimeSpan.FromSeconds(2);
911        Tulipalloo.Image = Tulipallo2;
912        Add(Tulipalloo);
913    }
914
915
916    void piikkiOsui(PhysicsObject tormaaja, PhysicsObject kohde)
917    {
918        if (kohde == pelaaja1)
919        {
920            elamaLaskuri.Value -= 10;
921        }
922        if (kohde == pelaaja2)
923        {
924            elamaLaskuri2.Value -= 10;
925        }
926        if (kohde == pelaaja3)
927        {
928            elamaLaskuri3.Value -= 10;
929        }
930    }
931
932
933
934    void Piikit2(PlatformCharacter pelaaja)
935    {
936        if (saakoPiikittaa == true)
937        {
938            PhysicsObject piikki2 = new PhysicsObject(100.0, 300.0);
939            piikki2.X = pelaaja4.X;
940            piikki2.Y = pelaaja4.Y - 190;
941            piikki2.IgnoresGravity = true;
942            piikki2.Animation = new Animation(Piikki);
943            piikki2.Animation.FPS = 3;
944            piikki2.Animation.StopOnLastFrame = true;
945            piikki2.Animation.Start(1);
946            piikki2.MaximumLifetime = TimeSpan.FromSeconds(3);
947            piikki2.Angle = Angle.FromDegrees(180);
948            Add(piikki2);
949            piikki2.IgnoresCollisionResponse = true;
950            AddCollisionHandler(piikki2, piikkiOsui2);
951            saakoPiikittaa = false;
952            Timer.SingleShot(7, SaaPiikittaa);
953        }
954
955    }
956
957    void SaaPiikittaa()
958    {
959        saakoPiikittaa = true;
960    }
961
962    void piikkiOsui2(PhysicsObject tormaaja, PhysicsObject kohde)
963    {
964        if (kohde == pelaaja1)
965        {
966            elamaLaskuri.Value -= 15;
967        }
968        if (kohde == pelaaja2)
969        {
970            elamaLaskuri2.Value -= 15;
971        }
972        if (kohde == pelaaja3)
973        {
974            elamaLaskuri3.Value -= 15;
975        }
976    }
977
978    void TeeSeina(PlatformCharacter pelaaja)
979    {
980        if (saakoLuoda == true)
981        {
982            PhysicsObject suoja = PhysicsObject.CreateStaticObject(20.0, 100.0);
983            suoja.Y = pelaaja4.Y;
984            suoja.X = pelaaja4.X + 70;
985            suoja.Image = Seinä;
986            suoja.MaximumLifetime = TimeSpan.FromSeconds(2);
987            Add(suoja);
988            PhysicsObject suoja2 = PhysicsObject.CreateStaticObject(20.0, 100.0);
989            suoja2.Y = pelaaja4.Y;
990            suoja2.X = pelaaja4.X - 70;
991            suoja2.Image = Seinä;
992            suoja2.MaximumLifetime = TimeSpan.FromSeconds(2);
993            Add(suoja2);
994            saakoLuoda = false;
995            Timer.SingleShot(7, Luonti);
996        }
997
998    }
999
1000    void Luonti()
1001    {
1002        saakoLuoda = true;
1003    }
1004
1005    void Nakymaton(PlatformCharacter pelaaja)
1006    {
1007        if (saakoMuuttua == true)
1008        {
1009            pelaaja2.IsVisible = false;
1010            Timer.SingleShot(5, NakyyTaas);
1011            saakoMuuttua = false;
1012            Timer.SingleShot(15, SaaMuuttua);
1013        }
1014
1015    }
1016
1017    void NakyyTaas()
1018    {
1019        pelaaja2.IsVisible = true;
1020    }
1021
1022    void SaaMuuttua()
1023    {
1024        saakoMuuttua = true;
1025    }
1026
1027    void TeePyorre(PlatformCharacter pelaaja)
1028    {
1029        if (saakoTehda == true)
1030        {
1031            PhysicsObject pyorre = new PhysicsObject(200.0, 500.0);
1032            pyorre.Y = pelaaja3.Y;
1033            pyorre.X = pelaaja3.X;
1034            pyorre.Image = Tulipyorre;
1035            pyorre.MaximumLifetime = TimeSpan.FromSeconds(2);
1036            pyorre.IgnoresCollisionResponse = true;
1037            Add(pyorre, -1);
1038            FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja3);
1039            seuraajanAivot.Speed = 1000;
1040            seuraajanAivot.Active = true;
1041            pyorre.Brain = seuraajanAivot;
1042            AddCollisionHandler(pyorre, pyorreOsui);
1043            saakoTehda = false;
1044            Timer.SingleShot(7, Pyorre);
1045
1046        }
1047
1048    }
1049
1050    void Pyorre()
1051    {
1052        saakoTehda = true;
1053    }
1054
1055    void pyorreOsui(PhysicsObject tormaaja, PhysicsObject kohde)
1056    {
1057
1058        if (kohde == pelaaja1)
1059        {
1060            elamaLaskuri.Value -= 10;
1061        }
1062        if (kohde == pelaaja2)
1063        {
1064            elamaLaskuri2.Value -= 10;
1065        }
1066        if (kohde == pelaaja4)
1067        {
1068            elamaLaskuri4.Value -= 10;
1069        }
1070    }
1071    void TeeVesipallo(PlatformCharacter pelaaja)
1072    {
1073        if (OnkoVesi == true)
1074        {
1075            PhysicsObject pyorre = new PhysicsObject(400.0, 400.0);
1076            pyorre.Y = pelaaja1.Y;
1077            pyorre.X = pelaaja1.X;
1078            pyorre.Image = Vesipallo;
1079            pyorre.MaximumLifetime = TimeSpan.FromSeconds(2);
1080            pyorre.IgnoresCollisionResponse = true;
1081            Add(pyorre, -1);
1082            FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja1);
1083            seuraajanAivot.Speed = 1000;
1084            seuraajanAivot.Active = true;
1085            pyorre.Brain = seuraajanAivot;
1086            AddCollisionHandler(pyorre, VesiOsui);
1087            OnkoVesi = false;
1088            Timer.SingleShot(7, Vetta);
1089
1090        }
1091
1092    }
1093
1094    void Vetta()
1095    {
1096        OnkoVesi = true;
1097    }
1098
1099    void VesiOsui(PhysicsObject tormaaja, PhysicsObject kohde)
1100    {
1101        if (kohde == pelaaja3)
1102        {
1103            elamaLaskuri3.Value -= 10;
1104        }
1105        if (kohde == pelaaja2)
1106        {
1107            elamaLaskuri2.Value -= 10;
1108        }
1109        if (kohde == pelaaja4)
1110        {
1111            elamaLaskuri4.Value -= 10;
1112        }
1113    }
1114
1115    void AmmuAseella(PlatformCharacter pelaaja)
1116    {
1117        PhysicsObject ammus = pelaaja.Weapon.Shoot();
1118
1119        if (ammus != null)
1120        {
1121            ammus.Width = 100;
1122            ammus.Height = 50;
1123            ammus.Image = Tulipallo;
1124            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
1125        }
1126    }
1127
1128    void AmmuAseella2(PlatformCharacter pelaaja)
1129    {
1130        PhysicsObject ammus2 = pelaaja.Weapon.Shoot();
1131
1132        if (ammus2 != null)
1133        {
1134            ammus2.Size *= 5;
1135            ammus2.Image = tahtiKuva;
1136            ammus2.MaximumLifetime = TimeSpan.FromSeconds(2.0);
1137            ammus2.ApplyTorque(-2000);
1138        }
1139
1140
1141
1142    }
1143    void AmmuAseella3(PlatformCharacter pelaaja)
1144    {
1145        PhysicsObject ammus2 = pelaaja.Weapon.Shoot();
1146
1147        if (ammus2 != null)
1148        {
1149            ammus2.Size *= 5;
1150            ammus2.Image = Vesipallo;
1151            ammus2.MaximumLifetime = TimeSpan.FromSeconds(2.0);
1152        }
1153
1154
1155
1156    }
1157    void AmmuAseella4(PlatformCharacter pelaaja)
1158    {
1159        pyssy.Angle = pelaaja.FacingDirection.Angle;
1160        PhysicsObject ammus2 = pyssy.Shoot();
1161
1162        if (ammus2 != null)
1163        {
1164            ammus2.Size *= 8;
1165            ammus2.Image = Vortex;
1166            ammus2.MaximumLifetime = TimeSpan.FromSeconds(2.0);
1167        }
1168
1169    }
1170
1171
1172    void Teleport(PlatformCharacter pelaaja)
1173    {
1174        if (saakoTeleportata == true)
1175        {
1176            PhysicsObject pimeys = PhysicsObject.CreateStaticObject(90.0, 100.0);
1177            pimeys.Position = pelaaja2.Position;
1178            pimeys.IgnoresCollisionResponse = true;
1179            pimeys.Image = Vortex;
1180            pimeys.MaximumLifetime = TimeSpan.FromSeconds(0.3);
1181            Add(pimeys, -2);
1182            maaliAani.Play();
1183            pelaaja2.Position = Level.GetRandomPosition();
1184            PhysicsObject pimeys2 = PhysicsObject.CreateStaticObject(90.0, 100.0);
1185            pimeys2.Position = pelaaja2.Position;
1186            pimeys2.IgnoresCollisionResponse = true;
1187            pimeys2.Image = Vortex;
1188            pimeys2.MaximumLifetime = TimeSpan.FromSeconds(0.3);
1189            Add(pimeys2, -2);
1190            saakoTeleportata = false;
1191            Timer.SingleShot(7, SaaTeleportata);
1192
1193        }
1194    }
1195
1196    void SaaTeleportata()
1197    {
1198        saakoTeleportata = true;
1199    }
1200
1201
1202    void Liikuta(PlatformCharacter hahmo, double nopeus)
1203    {
1204        hahmo.Walk(nopeus);
1205    }
1206
1207    void Hyppaa(PlatformCharacter hahmo, double nopeus)
1208    {
1209        hahmo.Jump(nopeus);
1210    }
1211    void Tulihyppy(PlatformCharacter hahmo)
1212    {
1213        if(saakoHypata == true)
1214        {
1215        pelaaja3.Hit(new Vector(0, 7000));
1216        PhysicsObject tulta = new PhysicsObject(50.0, 70.0);
1217        tulta.Y = pelaaja3.Y - 50;
1218        tulta.X = pelaaja3.X;
1219        tulta.Image = Tuli;
1220        tulta.Angle = Angle.FromDegrees(180);
1221        tulta.IgnoresCollisionResponse = true;
1222        tulta.IgnoresGravity = true;
1223        Add(tulta, 2);
1224        saakoHypata = false;
1225        Timer.SingleShot(3, saaHypata);
1226        tulta.MaximumLifetime = TimeSpan.FromSeconds(0.1);
1227            }
1228    }
1229    void saaHypata()
1230{
1231    saakoHypata = true;
1232}
1233    void LuoElamaLaskuri()
1234    {
1235        Label Elamat = new Label("Water wizard");
1236        Elamat.X = Screen.Left + 150;
1237        Elamat.Y = Screen.Top - 30;
1238        Add(Elamat);
1239
1240        elamaLaskuri = new DoubleMeter(150);
1241        elamaLaskuri.MaxValue = 150;
1242        elamaLaskuri.LowerLimit += ElamaLoppui;
1243
1244        ProgressBar elamaPalkki = new ProgressBar(150, 20);
1245        elamaPalkki.X = Screen.Left + 150;
1246        elamaPalkki.Y = Screen.Top - 50;
1247        elamaPalkki.BarColor = Color.Red;
1248        elamaPalkki.BorderColor = Color.Black;
1249        elamaPalkki.BindTo(elamaLaskuri);
1250        Add(elamaPalkki);
1251    }
1252
1253    void ElamaLoppui()
1254    {
1255        pelaaja1.Destroy();
1256        Lopunlaskuri.Value += 1;
1257
1258    }
1259
1260    void LuoElamaLaskuri2()
1261    {
1262        Label Elamat2 = new Label("Dark wizard");
1263        Elamat2.X = Screen.Right - 150;
1264        Elamat2.Y = Screen.Top - 30;
1265        Add(Elamat2);
1266
1267        elamaLaskuri2 = new DoubleMeter(150);
1268        elamaLaskuri2.MaxValue = 150;
1269        elamaLaskuri2.LowerLimit += ElamaLoppui2;
1270
1271        ProgressBar elamaPalkki2 = new ProgressBar(150, 20);
1272        elamaPalkki2.X = Screen.Right - 150;
1273        elamaPalkki2.Y = Screen.Top - 50;
1274        elamaPalkki2.BarColor = Color.Red;
1275        elamaPalkki2.BorderColor = Color.Black;
1276        elamaPalkki2.BindTo(elamaLaskuri2);
1277        Add(elamaPalkki2);
1278    }
1279
1280    void ElamaLoppui2()
1281    {
1282        pelaaja2.Destroy();
1283        Lopunlaskuri.Value += 1;
1284    }
1285
1286    void LuoElamaLaskuri3()
1287    {
1288        Label Elamat3 = new Label("Fire wizard");
1289        Elamat3.X = Screen.Left + 150;
1290        Elamat3.Y = Screen.Bottom + 50;
1291        Add(Elamat3);
1292
1293        elamaLaskuri3 = new DoubleMeter(150);
1294        elamaLaskuri3.MaxValue = 150;
1295        elamaLaskuri3.LowerLimit += ElamaLoppui3;
1296
1297        ProgressBar elamaPalkki3 = new ProgressBar(150, 20);
1298        elamaPalkki3.X = Screen.Left + 150;
1299        elamaPalkki3.Y = Screen.Bottom + 30;
1300        elamaPalkki3.BarColor = Color.Red;
1301        elamaPalkki3.BorderColor = Color.Black;
1302        elamaPalkki3.BindTo(elamaLaskuri3);
1303        Add(elamaPalkki3);
1304    }
1305
1306    void ElamaLoppui3()
1307    {
1308        pelaaja3.Destroy();
1309        Lopunlaskuri.Value += 1;
1310    }
1311
1312    void LuoElamaLaskuri4()
1313    {
1314        Label Elamat4 = new Label("Earth wizard");
1315        Elamat4.X = Screen.Right - 150;
1316        Elamat4.Y = Screen.Bottom + 50;
1317        Add(Elamat4);
1318
1319        elamaLaskuri4 = new DoubleMeter(150);
1320        elamaLaskuri4.MaxValue = 150;
1321        elamaLaskuri4.LowerLimit += ElamaLoppui4;
1322
1323        ProgressBar elamaPalkki4 = new ProgressBar(150, 20);
1324        elamaPalkki4.X = Screen.Right - 150;
1325        elamaPalkki4.Y = Screen.Bottom + 30;
1326        elamaPalkki4.BarColor = Color.Red;
1327        elamaPalkki4.BorderColor = Color.Black;
1328        elamaPalkki4.BindTo(elamaLaskuri4);
1329        Add(elamaPalkki4);
1330    }
1331
1332    void ElamaLoppui4()
1333    {
1334        pelaaja4.Destroy();
1335        Lopunlaskuri.Value += 1;
1336    }
1337
1338
1339
1340
1341    void Voitto()
1342    {
1343        ClearControls();
1344        Label tekstikentta = new Label("In the end only the strongest is left standing, as the others meet the cold void of oblivion");
1345        Add(tekstikentta);
1346        Timer.SingleShot(10, Valikko);
1347        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
1348    }
1349
1350}
Note: See TracBrowser for help on using the repository browser.