source: 2012/23/LeoL/Tasohyppelypeli1.cs @ 2853

Revision 2853, 35.1 KB checked in by lemilaht, 8 years ago (diff)

Bug Fixed

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class tasohyppelypeli : PhysicsGame
10{
11    string CurrentLevelFile = String.Empty;
12    SoundEffect JousiAani = LoadSoundEffect("Ampuu");
13    DoubleMeter elamaMittari;
14    DoubleMeter elamaMittari2;
15    DoubleMeter elamaMittari3;
16    DoubleMeter P2elamaMittari;
17    DoubleMeter P3elamaMittari;
18    Image Ampujankuva = LoadImage("Ampuja");
19    Image DemoninKuva = LoadImage("Dem1.anm");
20    Image olionKuva = LoadImage("cafgar.anm");
21    Image magenKuva = LoadImage("Mage");
22    Image maalinKuva = LoadImage("Maali");
23    Image hunterKuva = LoadImage("HUntelaar");
24    Image kavlorKuva = LoadImage("Kavlor");
25    Image[] pelaajanAnim = LoadImages("pelaaja", "Pelaaja2", "Pelaaja3");
26    Image[] pelaajanAnimPeilattu;
27    Image p2Kuva = LoadImage("P2");
28
29    double nopeusYlos = 1250;
30    Vector nopeusOikea = new Vector(250, 0);
31    Vector nopeusVasen = new Vector(-250, 0);
32    Image pelaajanKuva = LoadImage("pelaaja");
33
34    PlatformCharacter pelaaja;
35    PlatformCharacter pelaaja2;
36    PlatformCharacter pelaaja3;
37
38    public override void Begin()
39    {
40        ClearAll();
41        MultiSelectWindow valikko = new MultiSelectWindow("Welcome to game",
42        "P1", "P2", "Exit Game");
43        valikko.ItemSelected += PainettiinValikonNappia;
44        Add(valikko);
45    }
46        void PainettiinValikonNappia(int valinta)
47    {
48        switch (valinta)
49        {
50            case 0:
51                P1MSW();
52                break;
53
54            case 1:
55                P2MSW();
56                break;
57
58            case 2:
59                Exit();
60                break;
61        }
62    }
63   
64
65    void LuoKenttä(string levelFile)
66    {
67        TileMap ruudut = TileMap.FromLevelAsset(levelFile);
68        ruudut.SetTileMethod('_', LuoPalikka);
69        ruudut.SetTileMethod('.', LuoSeina);
70        ruudut.SetTileMethod('"', LuoPiikki);
71        ruudut.SetTileMethod('!', LuoPelaaja);
72        ruudut.SetTileMethod('+', LuoCafgar);
73        ruudut.SetTileMethod('#', LuoDemoni);
74        ruudut.SetTileMethod('-', LuoAmpuja);
75        ruudut.SetTileMethod('=', LuoMaali);
76        ruudut.SetTileMethod('M', LuoMage);
77        ruudut.SetTileMethod('H', LuoHunter);
78        ruudut.SetTileMethod('K', LuoKavlor);
79        ruudut.SetTileMethod('E', EPotion);
80        ruudut.Execute(20, 20);
81        Level.Background.Color = Color.ForestGreen;
82        Camera.Follow(pelaaja);
83        Gravity = new Vector(0, -5000);
84
85        CurrentLevelFile = levelFile;
86    }
87    void LuoKenttä2(string levelFile)
88    {
89        TileMap ruudut = TileMap.FromLevelAsset(levelFile);
90        ruudut.SetTileMethod('_', LuoPalikka);
91        ruudut.SetTileMethod('.', LuoSeina);
92        ruudut.SetTileMethod('"', LuoPiikki);
93        ruudut.SetTileMethod('3', LuoPelaaja3);
94        ruudut.SetTileMethod('+', LuoCafgar);
95        ruudut.SetTileMethod('#', LuoDemoni);
96        ruudut.SetTileMethod('-', LuoAmpuja);
97        ruudut.SetTileMethod('=', LuoMaali);
98        ruudut.SetTileMethod('M', LuoMage);
99        ruudut.SetTileMethod('H', LuoHunter);
100        ruudut.SetTileMethod('K', LuoKavlor);
101        ruudut.SetTileMethod('E', EPotion);
102        ruudut.SetTileMethod('2', LuoPelaaja2);
103        ruudut.Execute(20, 20);
104        Level.Background.Color = Color.ForestGreen;
105        Camera.Follow(pelaaja3);
106        Gravity = new Vector(0, -5000);
107
108        CurrentLevelFile = levelFile;
109    }
110
111    void LuoPalikka(Vector paikka, double leveys, double korkeus)
112    {
113        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
114        palikka.Position = paikka;
115        palikka.Shape = Shape.Rectangle;
116        palikka.Color = Color.DarkBrown;
117        Add(palikka);
118    }
119
120    void LuoSeina(Vector paikka, double leveys, double korkeus)
121    {
122        PhysicsObject seina = PhysicsObject.CreateStaticObject(leveys, korkeus);
123        seina.Position = paikka;
124        seina.Shape = Shape.Rectangle;
125        seina.Color = Color.DarkBrown;
126        Add(seina);
127    }
128
129    void LuoPiikki(Vector paikka, double leveys, double korkeus)
130    {
131        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
132        piikki.Position = paikka;
133        piikki.Shape = Shape.Triangle;
134        piikki.Color = Color.Black;
135        piikki.Tag = "piikki";
136        Add(piikki);
137    }
138
139    void AsetaOhjaimet()
140    {
141        Keyboard.Listen(Key.Escape, ButtonState.Down, Begin, "Poistu pelistä");
142        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja liikkuu vasemmalle", pelaaja, nopeusVasen);
143        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero);
144        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppy, "Pelaaja 1: Pelaaaja hyppää  ylös", pelaaja, nopeusYlos);
145        Keyboard.Listen(Key.D, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Pelaaja Liikkuu Oikealle", pelaaja, nopeusOikea);
146        Keyboard.Listen(Key.D, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero);
147        Keyboard.Listen(Key.E, ButtonState.Pressed, PelaajaLyo, null);
148        Keyboard.Listen(Key.Q, ButtonState.Pressed, PelaajaLyo2, null);
149 
150       
151       
152    }
153    void AsetaOhjaimet2()
154    {
155        Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus2, "Pelaaja2 liikkuu vasemmalle", pelaaja2, nopeusVasen);
156        Keyboard.Listen(Key.Left, ButtonState.Released, AsetaNopeus2, null, pelaaja2, Vector.Zero);
157        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppy2, "Pelaaja 1: Pelaaaja hyppää  ylös", pelaaja2, nopeusYlos);
158        Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus2, "Pelaaja 1: Pelaaja Liikkuu Oikealle", pelaaja2, nopeusOikea);
159        Keyboard.Listen(Key.Right, ButtonState.Released, AsetaNopeus2, null, pelaaja2, Vector.Zero);
160
161        Keyboard.Listen(Key.Escape, ButtonState.Down, Begin, "Poistu pelistä");
162        Keyboard.Listen(Key.P, ButtonState.Down, Begin, "End Game");
163        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus3, "Pelaaja liikkuu vasemmalle", pelaaja3, nopeusVasen);
164        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus3, null, pelaaja3, Vector.Zero);
165        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppy3, "Pelaaja 1: Pelaaaja hyppää  ylös", pelaaja3, nopeusYlos);
166        Keyboard.Listen(Key.D, ButtonState.Down, AsetaNopeus3, "Pelaaja 1: Pelaaja Liikkuu Oikealle", pelaaja3, nopeusOikea);
167        Keyboard.Listen(Key.D, ButtonState.Released, AsetaNopeus3, null, pelaaja3, Vector.Zero);
168        Keyboard.Listen(Key.E, ButtonState.Pressed, PelaajaLyo4, null);
169        Keyboard.Listen(Key.Q, ButtonState.Pressed, PelaajaLyo3, null);
170    }
171
172    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
173    {
174        pelaaja = new PlatformCharacter(20, 40);
175        pelaaja.Position = paikka;
176        pelaaja.Color = Color.Aquamarine;
177        pelaaja.Image = pelaajanKuva;
178        pelaaja.CanRotate = false;
179        AddCollisionHandler(pelaaja, "piikki", PelaajaKuolee);
180        AddCollisionHandler(pelaaja, "Demoni", PelaajaMenettaa);
181        AddCollisionHandler(pelaaja, "Ampuja", PelaajaMenettaa2);
182        AddCollisionHandler(pelaaja, "cafgar", PelaajaMenettaa2);
183        AddCollisionHandler(pelaaja, "maali", SaavutitMaalin);
184        AddCollisionHandler(pelaaja, "peruna", LisaaElamaa);
185        PelaajanElamat();
186        pelaaja.Mass = 5000;
187        pelaaja.Weapon = new PlasmaCannon(20, 5);
188        pelaaja.Weapon.IsVisible = false;
189        Add(pelaaja);
190    }
191    void LuoPelaaja3(Vector paikka, double leveys, double korkeus)
192    {
193        pelaaja3 = new PlatformCharacter(20, 40);
194        pelaaja3.Position = paikka;
195        pelaaja3.Color = Color.Aquamarine;
196        pelaaja3.Image = pelaajanKuva;
197        pelaaja3.CanRotate = false;
198        AddCollisionHandler(pelaaja3, "piikki", Pelaaja3Kuolee);
199        AddCollisionHandler(pelaaja3, "Demoni", Pelaaja3Menettaa);
200        AddCollisionHandler(pelaaja3, "Ampuja", Pelaaja3Menettaa2);
201        AddCollisionHandler(pelaaja3, "cafgar", Pelaaja3Menettaa2);
202        AddCollisionHandler(pelaaja3, "maali", SaavutitMaalin3);
203        AddCollisionHandler(pelaaja3, "peruna", LisaaElamaa3);
204        PelaajanElamat3();
205        pelaaja3.Tag = "pelaaja";
206        pelaaja3.Mass = 5000;
207        pelaaja3.Weapon = new PlasmaCannon(20, 5);
208        pelaaja3.Weapon.IsVisible = false;
209        Add(pelaaja3);
210    }
211    void LuoPelaaja2(Vector paikka, double leveys, double korkeus)
212    {
213        pelaaja2 = new PlatformCharacter(20, 40);
214        pelaaja2.Position = paikka;
215        pelaaja2.Color = Color.Aquamarine;
216        pelaaja2.Image = p2Kuva;
217        pelaaja2.CanRotate = false;
218        AddCollisionHandler(pelaaja2, "piikki", Pelaaja2Kuolee);
219        AddCollisionHandler(pelaaja2, "Demoni", Pelaaja2Menettaa);
220        AddCollisionHandler(pelaaja2, "Ampuja", Pelaaja2Menettaa2);
221        AddCollisionHandler(pelaaja2, "cafgar", Pelaaja2Menettaa2);
222        AddCollisionHandler(pelaaja2, "maali", SaavutitMaalin2);
223        AddCollisionHandler(pelaaja2, "peruna", LisaaElamaa2);
224        PelaajanElamat2();
225        pelaaja2.Mass = 5000;
226       
227        Add(pelaaja2);
228    }
229
230    void AsetaNopeus(PhysicsObject Pelaaja, Vector nopeus)
231    {
232        Pelaaja.Velocity = nopeus;
233    }
234    void AsetaNopeus2(PhysicsObject Pelaaja2, Vector nopeus)
235    {
236        Pelaaja2.Velocity = nopeus;
237    }
238    void AsetaNopeus3(PhysicsObject Pelaaja3, Vector nopeus)
239    {
240        Pelaaja3.Velocity = nopeus;
241    }
242
243
244
245    void PelaajaKuolee(PhysicsObject pelaaja, PhysicsObject kohde)
246    {
247        pelaaja.Destroy();
248        Replay();
249    }
250    void Pelaaja2Kuolee(PhysicsObject pelaaja, PhysicsObject kohde)
251    {
252        pelaaja.Destroy();
253        Replay2();
254    }
255    void Pelaaja3Kuolee(PhysicsObject pelaaja, PhysicsObject kohde)
256    {
257        pelaaja.Destroy();
258        Replay2();
259    }
260
261    void LuoCafgar(Vector paikka, double leveys, double korkeus)
262    {
263        PhysicsObject Cafgar = new PhysicsObject(20, 40);
264        Cafgar.Position = paikka;
265        Cafgar.Image = olionKuva;
266        Cafgar.Color = Color.Black;
267        Cafgar.Tag = "cafgar";
268        Cafgar.Brain = Aivot();
269
270        Cafgar.Brain.Active = true;
271        Cafgar.CanRotate = false;
272        CafgarinElamat(Cafgar);
273        AddCollisionHandler(Cafgar, "ase", CafgarMenettaa);
274        Add(Cafgar);
275    }
276
277    void LuoDemoni(Vector paikka, double leveys, double korkeus)
278    {
279        PhysicsObject Demoni = PhysicsObject.CreateStaticObject(20, 40);
280        Demoni.Position = paikka;
281        Demoni.Image = DemoninKuva;
282        Demoni.Color = Color.Black;
283        Demoni.Tag = "Demoni";
284        Demoni.Brain = Aivot();
285        Demoni.Brain = Aivot2();
286        AddCollisionHandler(Demoni, "piikki", DemoniTuhoutuu);
287        AddCollisionHandler(Demoni, "Ampuja", DemoniKuolee);
288        AddCollisionHandler(Demoni, "ammus", DemoniKuolee);
289        Demoni.Mass = 500;
290        Add(Demoni);
291    }
292    void DemoniTuhoutuu(PhysicsObject Demoni, PhysicsObject kohde)
293    {
294        Demoni.Destroy();
295    }
296    void Hyppy(PlatformCharacter pelaaja, double hypynVoima)
297    {
298        pelaaja.Jump(hypynVoima);
299    }
300    void Hyppy2(PlatformCharacter pelaaja2, double hypynVoima)
301    {
302        pelaaja2.Jump(hypynVoima);
303    }
304    void Hyppy3(PlatformCharacter pelaaja3, double hypynVoima)
305    {
306        pelaaja3.Jump(hypynVoima);
307    }
308    Brain Aivot()
309    {
310        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
311        seuraajanAivot.Speed = 150;
312        seuraajanAivot.TargetFollowDistance = 200;
313        seuraajanAivot.FollowAlways = true;
314        seuraajanAivot.TargetCloseDistance = 20;
315        seuraajanAivot.StopWhenTargetClose = false;
316        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella;
317        return seuraajanAivot;
318    }
319    Brain Aivot2()
320    {
321        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja3);
322        seuraajanAivot.Speed = 150;
323        seuraajanAivot.TargetFollowDistance = 200;
324        seuraajanAivot.FollowAlways = true;
325        seuraajanAivot.TargetCloseDistance = 20;
326        seuraajanAivot.StopWhenTargetClose = false;
327        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella;
328        return seuraajanAivot;
329    }
330
331
332    void mitaTapahtuuKunOllaanLahella(object lahettajaAivot, EventArgs e)
333    {
334    }
335
336    void DemoniKuolee(PhysicsObject tormaaja, PhysicsObject kohde)
337    {
338        kohde.Destroy();
339    }
340
341    Brain AivotAmpuja()
342    {
343        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
344        seuraajanAivot.Speed = 0;
345        seuraajanAivot.TargetFollowDistance = 200;
346        seuraajanAivot.FollowAlways = true;
347        seuraajanAivot.TargetCloseDistance = 200;
348        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella2;
349        return seuraajanAivot;
350    }
351
352
353    void mitaTapahtuuKunOllaanLahella2(object lahettajaAivot, EventArgs e)
354    {
355        ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Angle = (pelaaja.Position - (lahettajaAivot as Brain).Owner.Position).Angle;
356        PhysicsObject ammus = ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Shoot();
357        if (ammus != null)
358        {
359            AddCollisionHandler(ammus, pelaaja, PelaajaMenettaa2);
360            ammus.Tag = "ammus";
361        }
362    }
363
364    void LuoAmpuja(Vector paikka, double leveys, double korkeus)
365    {
366
367        PlatformCharacter Ampuja = new PlatformCharacter(20, 20);
368        Ampuja.IgnoresGravity = true;
369        Ampuja.IgnoresPhysicsLogics = true;
370        Ampuja.MaxVelocity = 0.0;
371        Ampuja.Position = paikka;
372        Ampuja.Image = Ampujankuva;
373        Ampuja.Color = Color.Black;
374        Ampuja.Tag = "Ampuja";
375        Ampuja.Brain = AivotAmpuja();
376        Ampuja.Weapon = new PlasmaCannon(5, 3);
377        Ampuja.Weapon.TimeBetweenUse = TimeSpan.FromSeconds(1);
378        Add(Ampuja);
379    }
380
381    void PelaajaMenettaa()
382    {
383    }
384
385    void PelaajanElamat()
386    {
387        elamaMittari = new DoubleMeter(50);
388        elamaMittari.MaxValue = 50;
389        ProgressBar elamaPalkki = new ProgressBar(150, 10);
390        elamaPalkki.BindTo(elamaMittari);
391        Add(elamaPalkki);
392
393        elamaPalkki.X = Screen.Right - 150;
394        elamaPalkki.Y = Screen.Top - 10;
395        //elamaPalkki.Angle = Angle.RightAngle;
396        elamaPalkki.BarColor = Color.Green;
397        elamaPalkki.BorderColor = Color.White;
398        //elamaPalkki.Angle = Angle.FromDegrees(90);
399        elamaMittari.Value = 50;
400        elamaMittari.LowerLimit += PelaajaTuhoutuu;
401    }
402
403    void PelaajaMenettaa(PhysicsObject pelaaja, PhysicsObject kohde)
404    {
405        elamaMittari.Value -= 3;
406    }
407
408    void PelaajaTuhoutuu(double mittarinArvo)
409    {
410        pelaaja.Destroy();
411        MessageDisplay.Add("Dead");
412
413        Replay();
414    }
415
416    void PelaajaMenettaa2(PhysicsObject pelaaja, PhysicsObject kohde)
417    {
418        elamaMittari.Value -= 5;
419    }
420    void PelaajanElamat2()
421    {
422        P2elamaMittari = new DoubleMeter(50);
423        P2elamaMittari.MaxValue = 50;
424        ProgressBar P2elamaPalkki = new ProgressBar(150, 10);
425        P2elamaPalkki.BindTo(P2elamaMittari);
426        Add(P2elamaPalkki);
427
428       P2elamaPalkki.X = Screen.Right - 150;
429       P2elamaPalkki.Y = Screen.Top - 10;
430       P2elamaPalkki.BarColor = Color.Navy;
431       P2elamaPalkki.BorderColor = Color.White;
432        P2elamaMittari.Value = 50;
433        P2elamaMittari.LowerLimit += Pelaaja2Tuhoutuu;
434    }
435
436    void Pelaaja2Menettaa(PhysicsObject pelaaja2, PhysicsObject kohde)
437    {
438        P2elamaMittari.Value -= 3;
439    }
440
441    void Pelaaja2Tuhoutuu(double mittarinArvo)
442    {
443        pelaaja.Destroy();
444        MessageDisplay.Add("Dead");
445
446        Replay2();
447    }
448    void LisaaElamaa2(PhysicsObject pelaaja2, PhysicsObject potion)
449    {
450        potion.Destroy();
451        P2elamaMittari.Value += 50;
452
453    }
454
455    void Pelaaja2Menettaa2(PhysicsObject pelaaja, PhysicsObject kohde)
456    {
457        elamaMittari.Value -= 5;
458    }
459    void PelaajanElamat3()
460    {
461        P3elamaMittari = new DoubleMeter(50);
462        P3elamaMittari.MaxValue = 50;
463        ProgressBar P3elamaPalkki = new ProgressBar(150, 10);
464        P3elamaPalkki.BindTo(P3elamaMittari);
465        Add(P3elamaPalkki);
466
467        P3elamaPalkki.X = Screen.Right - 150;
468        P3elamaPalkki.Y = Screen.Top - 20;
469        P3elamaPalkki.BarColor = Color.Green;
470        P3elamaPalkki.BorderColor = Color.White;
471        P3elamaMittari.Value = 50;
472        P3elamaMittari.LowerLimit += Pelaaja3Tuhoutuu;
473    }
474
475    void Pelaaja3Menettaa(PhysicsObject pelaaja2, PhysicsObject kohde)
476    {
477        P3elamaMittari.Value -= 3;
478    }
479
480    void Pelaaja3Tuhoutuu(double mittarinArvo)
481    {
482        pelaaja.Destroy();
483        MessageDisplay.Add("Dead");
484
485        Replay2();
486    }
487    void LisaaElamaa3(PhysicsObject pelaaja2, PhysicsObject potion)
488    {
489        potion.Destroy();
490        P3elamaMittari.Value += 50;
491
492    }
493
494    void Pelaaja3Menettaa2(PhysicsObject pelaaja, PhysicsObject kohde)
495    {
496        elamaMittari3.Value -= 5;
497    }
498
499    void PelaajaLyo()
500    {
501        PhysicsObject Miekka = new PhysicsObject(5, 5);
502        Miekka.IsVisible = false;
503        Miekka.Position = pelaaja.Position;
504        Miekka.Tag = "ase";
505        AddCollisionHandler(Miekka, "Demoni", DemoniKuolee);
506        AddCollisionHandler(Miekka, "Ampuja", DemoniKuolee);
507        AddCollisionHandler(Miekka, "mage", DemoniKuolee);
508        Miekka.Push(new Vector(20, 0));
509        Add(Miekka);
510        pelaaja.Animation = new Animation(pelaajanAnim);
511        pelaaja.Animation.Start();
512        pelaaja.Animation.Played += new Action(AnimValm);
513        pelaaja.Animation.FPS = 10;
514
515
516    }
517
518    void AnimValm()
519    {
520        pelaaja.Animation.Stop();
521    }
522
523    void PelaajaLyo2()
524    {
525        PhysicsObject Miekka2 = new PhysicsObject(5, 5);
526        Miekka2.IsVisible = false;
527        Miekka2.Position = pelaaja.Position;
528        Miekka2.Tag = "ase";
529        Miekka2.Push(new Vector(-20, 0));
530        AddCollisionHandler(Miekka2, "Demoni", DemoniKuolee);
531        AddCollisionHandler(Miekka2, "Ampuja", DemoniKuolee);
532        AddCollisionHandler(Miekka2, "mage", DemoniKuolee);
533        Add(Miekka2);
534
535        pelaaja.Animation = new Animation(pelaajanAnimPeilattu);
536        pelaaja.Animation.Start();
537        pelaaja.Animation.Played += new Action(AnimValm2);
538        pelaaja.Animation.FPS = 10;
539
540    }
541
542    void AnimValm2()
543    {
544        pelaaja.Animation.Stop();
545    }
546    void PelaajaLyo4()
547    {
548        PhysicsObject Miekka3 = new PhysicsObject(5, 5);
549        Miekka3.IsVisible = false;
550        Miekka3.Position = pelaaja3.Position;
551        Miekka3.Tag = "ase";
552        AddCollisionHandler(Miekka3, "Demoni", DemoniKuolee);
553        AddCollisionHandler(Miekka3, "Ampuja", DemoniKuolee);
554        AddCollisionHandler(Miekka3, "mage", DemoniKuolee);
555        Miekka3.Push(new Vector(20, 0));
556        Add(Miekka3);
557        pelaaja3.Animation = new Animation(pelaajanAnim);
558        pelaaja3.Animation.Start();
559        pelaaja3.Animation.Played += new Action(AnimValm3);
560        pelaaja3.Animation.FPS = 10;
561
562
563    }
564
565    void AnimValm3()
566    {
567        pelaaja3.Animation.Stop();
568    }
569
570    void PelaajaLyo3()
571    {
572        PhysicsObject Miekka4 = new PhysicsObject(5, 5);
573        Miekka4.IsVisible = false;
574        Miekka4.Position = pelaaja3.Position;
575        Miekka4.Tag = "ase";
576        Miekka4.Push(new Vector(-20, 0));
577        AddCollisionHandler(Miekka4, "Demoni", DemoniKuolee);
578        AddCollisionHandler(Miekka4, "Ampuja", DemoniKuolee);
579        AddCollisionHandler(Miekka4, "mage", DemoniKuolee);
580        Add(Miekka4);
581
582        pelaaja.Animation = new Animation(pelaajanAnimPeilattu);
583        pelaaja.Animation.Start();
584        pelaaja.Animation.Played += new Action(AnimValm5);
585        pelaaja.Animation.FPS = 10;
586
587    }
588
589    void AnimValm5()
590    {
591        pelaaja3.Animation.Stop();
592    }
593
594
595    void PainettiinValikonNappiaP1(int valinta)
596    {
597        switch (valinta)
598        {
599            case 0:
600                Aloitus("Tutorial map", "Road To War");
601                break;
602
603            case 1:
604                Aloitus("kartta", "Field Forces");
605                break;
606
607            case 2:
608                Aloitus("Kentta2", "Far From Victory");
609                break;
610
611            case 3:
612                Aloitus("Kentta3", "Field Forces");
613                break;
614
615            case 4:
616                Begin();
617                break;
618
619            case 5:
620                Exit();
621                break;
622        }
623    }
624    void PainettiinValikonNappiaP2(int valinta)
625    {
626        switch (valinta)
627        {
628            case 0:
629                Aloitus2("Tutorial map", "Road To War");
630                break;
631
632            case 1:
633                Aloitus2("kartta", "Field Forces");
634                break;
635
636            case 2:
637                Aloitus2("Kentta2", "Far From Victory");
638                break;
639
640            case 3:
641                Aloitus2("Kentta3", "Field Forces");
642                break;
643
644            case 4:
645                Begin();
646                break;
647
648            case 5:
649                Exit();
650                break;
651        }
652    }
653
654
655    void Aloitus(string levelFile, string kappale)
656    {
657
658        pelaajanAnimPeilattu = Image.Mirror(pelaajanAnim);
659
660        LuoKenttä(levelFile);
661        MediaPlayer.Stop();
662        MediaPlayer.Play(kappale);
663        AsetaOhjaimet();
664    }
665    void Aloitus2(string levelFile, string kappale)
666    {
667
668        pelaajanAnimPeilattu = Image.Mirror(pelaajanAnim);
669
670        LuoKenttä2(levelFile);
671        MediaPlayer.Stop();
672        MediaPlayer.Play(kappale);
673        AsetaOhjaimet2();
674    }
675
676
677    void LuoMaali(Vector paikka, double leveys, double korkeus)
678    {
679        PhysicsObject maali = PhysicsObject.CreateStaticObject(40, 80);
680        maali.Position = paikka;
681        maali.Image = maalinKuva;
682        maali.Tag = "maali";
683        maali.Color = Color.Blue;
684
685        Add(maali);
686    }
687    void SaavutitMaalin(PhysicsObject pelaaja, PhysicsObject kohde)
688    {
689        MediaPlayer.Stop();
690        MediaPlayer.Play("Opening The");
691        YouWin();
692    }
693    void SaavutitMaalin2(PhysicsObject pelaaja, PhysicsObject kohde)
694    {
695        MediaPlayer.Stop();
696        MediaPlayer.Play("Opening The");
697        YouWin2();
698    }
699    void SaavutitMaalin3(PhysicsObject pelaaja, PhysicsObject kohde)
700    {
701        MediaPlayer.Stop();
702        MediaPlayer.Play("Opening The");
703        YouWin2();
704    }
705    void Replay()
706    {
707        ClearAll();
708        MediaPlayer.Stop();
709        MediaPlayer.Play("The Defeated");
710        MultiSelectWindow valikko2 = new MultiSelectWindow("You Died",
711        "Replay", "Menu", "End");
712        valikko2.ItemSelected += PainettiinValikonNappia2;
713        Add(valikko2);
714    }
715    void PainettiinValikonNappia2(int valinta)
716    {
717        switch (valinta)
718        {
719
720            case 0:
721                AloitaUudelleen();
722                break;
723
724            case 1:
725                Begin();
726                break;
727
728            case 2:
729                Exit();
730                break;
731        }
732    }
733    void YouWin()
734    {
735        ClearAll();
736        MultiSelectWindow valikko3 = new MultiSelectWindow("You Win",
737        "Replay", "Menu", "End");
738        valikko3.ItemSelected += PainettiinValikonNappia3;
739        Add(valikko3);
740    }
741    void PainettiinValikonNappia3(int valinta)
742    {
743        switch (valinta)
744        {
745            case 0:
746                AloitaUudelleen();
747                break;
748
749            case 1:
750                Begin();
751                break;
752
753            case 2:
754                Exit();
755                break;
756        }
757    }
758    void YouWin2()
759    {
760        ClearAll();
761        MultiSelectWindow valikko3 = new MultiSelectWindow("You Win",
762        "Replay", "Menu", "End");
763        valikko3.ItemSelected += PainettiinValikonNappiaP2W;
764        Add(valikko3);
765    }
766    void PainettiinValikonNappiaP2W(int valinta)
767    {
768        switch (valinta)
769        {
770            case 0:
771                AloitaUudelleen2();
772                break;
773
774            case 1:
775                Begin();
776                break;
777
778            case 2:
779                Exit();
780                break;
781        }
782    }
783
784    void AloitaUudelleen()
785    {
786        ClearAll();
787        pelaajanAnimPeilattu = Image.Mirror(pelaajanAnim);
788        LuoKenttä(CurrentLevelFile);
789        AsetaOhjaimet();
790    }
791    void AloitaUudelleen2()
792    {
793        ClearAll();
794        pelaajanAnimPeilattu = Image.Mirror(pelaajanAnim);
795        LuoKenttä2(CurrentLevelFile);
796        AsetaOhjaimet();
797    }
798
799    Brain AivotMage2()
800    {
801        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
802        seuraajanAivot.Speed = 20;
803        seuraajanAivot.TargetFollowDistance = 200;
804        seuraajanAivot.FollowAlways = true;
805        seuraajanAivot.TargetCloseDistance = 300;
806        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella23;
807        return seuraajanAivot;
808    }
809
810    void mitaTapahtuuKunOllaanLahella23(object lahettajaAivot, EventArgs e)
811    {
812        //Magen ase on sen lapsiolio eli Objects-listassa paikassa 0.
813
814        PhysicsObject mage = (lahettajaAivot as Brain).Owner as PhysicsObject;
815
816        if (mage == null || mage.Objects.Count < 1) return;
817
818        PlasmaCannon mageAse = (PlasmaCannon)mage.Objects[0];
819        mageAse.Angle = (pelaaja.Position - (lahettajaAivot as Brain).Owner.Position).Angle;
820        PhysicsObject ammus = mageAse.Shoot();
821
822        if (ammus != null)
823        {
824            AddCollisionHandler(ammus, pelaaja, PelaajaMenettaa2);
825            ammus.Tag = "ammus";
826        }
827    }
828        Brain AivotMage()
829    {
830        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
831        seuraajanAivot.Speed = 20;
832        seuraajanAivot.TargetFollowDistance = 200;
833        seuraajanAivot.FollowAlways = true;
834        seuraajanAivot.TargetCloseDistance = 300;
835        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella3;
836        return seuraajanAivot;
837    }
838
839        void mitaTapahtuuKunOllaanLahella3(object lahettajaAivot, EventArgs e)
840        {
841            //Magen ase on sen lapsiolio eli Objects-listassa paikassa 0.
842
843            PhysicsObject mage = (lahettajaAivot as Brain).Owner as PhysicsObject;
844
845            if (mage == null || mage.Objects.Count < 1) return;
846
847            PlasmaCannon mageAse = (PlasmaCannon)mage.Objects[0];
848            mageAse.Angle = (pelaaja3.Position - (lahettajaAivot as Brain).Owner.Position).Angle;
849            PhysicsObject ammus = mageAse.Shoot();
850
851            if (ammus != null)
852            {
853                AddCollisionHandler(ammus, pelaaja3, Pelaaja3Menettaa2);
854                ammus.Tag = "ammus";
855            }
856        }
857    void LuoMage(Vector paikka, double leveys, double korkeus)
858    {
859
860        PhysicsObject Mage = new PhysicsObject(20, 40);
861        Mage.IgnoresGravity = true;
862        Mage.CanRotate = false;
863        Mage.Position = paikka;
864        Mage.Image = magenKuva;
865        Mage.IsVisible = true;
866        Mage.Color = Color.Black;
867        Mage.Tag = "mage";
868        Mage.Brain = AivotMage();
869        Mage.Brain = AivotMage2();
870        PlasmaCannon pyssy = new PlasmaCannon(20, 5);
871        Mage.Add(pyssy);
872        pyssy.TimeBetweenUse = TimeSpan.FromSeconds(1);
873        pyssy.IsVisible = false;
874        Add(Mage);
875    }
876    Brain AivotHunter()
877    {
878        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
879        seuraajanAivot.Speed = 300;
880        seuraajanAivot.TargetFollowDistance = 200;
881        seuraajanAivot.FollowAlways = true;
882        seuraajanAivot.TargetCloseDistance = 200;
883
884
885
886        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella4;
887        return seuraajanAivot;
888    }
889    Brain AivotHunter2()
890    {
891        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja3);
892        seuraajanAivot.Speed = 300;
893        seuraajanAivot.TargetFollowDistance = 200;
894        seuraajanAivot.FollowAlways = true;
895        seuraajanAivot.TargetCloseDistance = 200;
896
897
898
899        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella24;
900        return seuraajanAivot;
901    }
902
903
904    void mitaTapahtuuKunOllaanLahella4(object lahettajaAivot, EventArgs e)
905    {
906        ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Angle = (pelaaja.Position - (lahettajaAivot as Brain).Owner.Position).Angle;
907        PhysicsObject ammus = ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Shoot();
908        if (ammus != null)
909        {
910            AddCollisionHandler(ammus, pelaaja, PelaajaMenettaa2);
911            ammus.Tag = "ammus";
912        }
913    }
914    void mitaTapahtuuKunOllaanLahella24(object lahettajaAivot, EventArgs e)
915    {
916        ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Angle = (pelaaja3.Position - (lahettajaAivot as Brain).Owner.Position).Angle;
917        PhysicsObject ammus = ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Shoot();
918        if (ammus != null)
919        {
920            AddCollisionHandler(ammus, pelaaja3, Pelaaja3Menettaa2);
921            ammus.Tag = "ammus";
922        }
923    }
924    void LuoHunter(Vector paikka, double leveys, double korkeus)
925    {
926
927        PlatformCharacter hunter = new PlatformCharacter(20, 40);
928
929        hunter.MaxVelocity = 400.400;
930        hunter.Position = paikka;
931        hunter.Image = hunterKuva;
932        hunter.Color = Color.Black;
933        hunter.Tag = "Ampuja";
934        hunter.Brain = AivotHunter();
935        hunter.Brain = AivotHunter2();
936        AddCollisionHandler(hunter, "piikki", HuntKuoli);
937        hunter.Weapon = new PlasmaCannon(5, 3);
938        hunter.Weapon.TimeBetweenUse = TimeSpan.FromSeconds(3);
939        hunter.Weapon.IsVisible = false;
940        Add(hunter);
941    }
942    void LuoKavlor(Vector paikka, double leveys, double korkeus)
943    {
944
945        PhysicsObject kavlor = new PhysicsObject(20, 40);
946
947        kavlor.MaxVelocity = 400.400;
948        kavlor.Position = paikka;
949        kavlor.Image = kavlorKuva;
950        kavlor.Color = Color.Black;
951        kavlor.Tag = "kavlor";
952        kavlor.Brain = AivotKavlor();
953        kavlor.CanRotate = false;
954        PlasmaCannon pyssy = new PlasmaCannon(20, 5);
955        kavlor.Add(pyssy);
956        pyssy.TimeBetweenUse = TimeSpan.FromSeconds(3);
957        pyssy.IsVisible = false;
958        KavlorinElamat(kavlor);
959        AddCollisionHandler(kavlor, "ase", KavlorMenettaa);
960        Add(kavlor);
961    }
962    void HuntKuoli(PhysicsObject hunter, PhysicsObject kohde)
963    {
964        hunter.Destroy();
965    }
966    void CafgarinElamat(PhysicsObject Cafgar)
967    {
968        elamaMittari2 = new DoubleMeter(25);
969        elamaMittari2.MaxValue = 50;
970        ProgressBar elamaPalkki2 = new ProgressBar(150, 10);
971        elamaPalkki2.BindTo(elamaMittari2);
972        Add(elamaPalkki2);
973
974        elamaPalkki2.X = Screen.Right - 150;
975        elamaPalkki2.Y = Screen.Top - 30;
976        //elamaPalkki.Angle = Angle.RightAngle;
977        elamaPalkki2.BarColor = Color.Red;
978        elamaPalkki2.BorderColor = Color.White;
979        //elamaPalkki.Angle = Angle.FromDegrees(90);
980        elamaMittari2.Value = 50;
981        //        elamaMittari.LowerLimit += CafgarKuolee;
982        elamaMittari2.LowerLimit += delegate
983        {
984            Cafgar.Destroy();
985            YouWin();
986        };
987    }
988
989    void CafgarMenettaa(PhysicsObject Cafgar, PhysicsObject kohde)
990    {
991        elamaMittari2.Value -= 5;
992    }
993    void KavlorinElamat(PhysicsObject Kavlor)
994    {
995        elamaMittari3 = new DoubleMeter(25);
996        elamaMittari3.MaxValue = 50;
997        ProgressBar elamaPalkki3 = new ProgressBar(150, 10);
998        elamaPalkki3.BindTo(elamaMittari3);
999        Add(elamaPalkki3);
1000
1001        elamaPalkki3.X = Screen.Right - 150;
1002        elamaPalkki3.Y = Screen.Top - 30;
1003        //elamaPalkki.Angle = Angle.RightAngle;
1004        elamaPalkki3.BarColor = Color.Purple;
1005        elamaPalkki3.BorderColor = Color.White;
1006        //elamaPalkki.Angle = Angle.FromDegrees(90);
1007        elamaMittari3.Value = 50;
1008        //        elamaMittari.LowerLimit += CafgarKuolee;
1009        elamaMittari3.LowerLimit += delegate
1010        {
1011            Kavlor.Destroy();
1012            YouWin();
1013        };
1014    }
1015
1016    void KavlorMenettaa(PhysicsObject Kavlor, PhysicsObject kohde)
1017    {
1018        elamaMittari3.Value -= 5;
1019    }
1020    Brain AivotKavlor()
1021    {
1022        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
1023        seuraajanAivot.Speed = 300;
1024        seuraajanAivot.TargetFollowDistance = 100;
1025        seuraajanAivot.FollowAlways = true;
1026        seuraajanAivot.TargetCloseDistance = 200;
1027        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella5;
1028        return seuraajanAivot;
1029    }
1030
1031    void mitaTapahtuuKunOllaanLahella5(object lahettajaAivot, EventArgs e)
1032    {
1033        //Magen ase on sen lapsiolio eli Objects-listassa paikassa 0.
1034
1035        PhysicsObject kavlor = (lahettajaAivot as Brain).Owner as PhysicsObject;
1036
1037        if (kavlor == null || kavlor.Objects.Count < 1) return;
1038
1039        PlasmaCannon kavlorAse = (PlasmaCannon)kavlor.Objects[0];
1040        kavlorAse.Angle = (pelaaja.Position - (lahettajaAivot as Brain).Owner.Position).Angle;
1041        PhysicsObject ammus = kavlorAse.Shoot();
1042
1043        if (ammus != null)
1044        {
1045            AddCollisionHandler(ammus, pelaaja, PelaajaMenettaa2);
1046            ammus.Tag = "ammus";
1047        }
1048    }
1049    void EPotion(Vector paikka, double leveys, double korkeus)
1050    {
1051        PhysicsObject potion = new PhysicsObject(20, 20);
1052        potion.Position = paikka;
1053        potion.CanRotate = false;
1054        potion.Shape = Shape.Heart;
1055        potion.Color = Color.Red;
1056        potion.Tag = "peruna";
1057        Add(potion);
1058    }
1059    void LisaaElamaa(PhysicsObject pelaaja, PhysicsObject potion)
1060    {
1061        potion.Destroy();
1062        elamaMittari.Value += 50;
1063       
1064    }
1065    void P1MSW()
1066    {
1067        MultiSelectWindow valikko = new MultiSelectWindow("One Player",
1068        "tutorial", "Level 1", "Level 2", "Level 3", "Menu", "Exit");
1069        valikko.ItemSelected += PainettiinValikonNappiaP1;
1070        Add(valikko);
1071    }
1072    void P2MSW()
1073    {
1074        MultiSelectWindow valikko = new MultiSelectWindow("Two Players",
1075        "tutorial", "Level 1", "Level 2", "Level 3", "Menu", "Exit");
1076        valikko.ItemSelected += PainettiinValikonNappiaP2;
1077        Add(valikko);
1078    }
1079    void Replay2()
1080    {
1081        ClearAll();
1082        MediaPlayer.Stop();
1083        MediaPlayer.Play("The Defeated");
1084        MultiSelectWindow valikko2 = new MultiSelectWindow("You Died",
1085        "Replay", "Menu", "End");
1086        valikko2.ItemSelected += PainettiinValikonNappiaP22;
1087        Add(valikko2);
1088    }
1089    void PainettiinValikonNappiaP22(int valinta)
1090    {
1091        switch (valinta)
1092        {
1093
1094            case 0:
1095                AloitaUudelleen2();
1096                break;
1097
1098            case 1:
1099                Begin();
1100                break;
1101
1102            case 2:
1103                Exit();
1104                break;
1105        }
1106    }
1107}
Note: See TracBrowser for help on using the repository browser.