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

Revision 2855, 35.1 KB checked in by anlakane, 10 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 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, pelaajanAnim, new Vector(20, 0));
148        Keyboard.Listen(Key.Q, ButtonState.Pressed, PelaajaLyo, null, pelaajanAnimPeilattu, new Vector(-20, 0));
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, PelaajaLyo, null, pelaajanAnim, new Vector(20, 0));
169        Keyboard.Listen(Key.Q, ButtonState.Pressed, PelaajaLyo, null, pelaajanAnimPeilattu, new Vector(-20, 0));
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
547    void PelaajaLyo(Image[] animaatio, Vector miekanSuunta)
548    {
549        PhysicsObject Miekka3 = new PhysicsObject(5, 5);
550        Miekka3.IsVisible = false;
551        Miekka3.Position = pelaaja3.Position;
552        Miekka3.Tag = "ase";
553        AddCollisionHandler(Miekka3, "Demoni", DemoniKuolee);
554        AddCollisionHandler(Miekka3, "Ampuja", DemoniKuolee);
555        AddCollisionHandler(Miekka3, "mage", DemoniKuolee);
556        Miekka3.Push(miekanSuunta);
557        Add(Miekka3);
558        pelaaja3.Animation = new Animation(animaatio);
559        pelaaja3.Animation.Start(1);
560        pelaaja3.Animation.FPS = 10;
561    }
562
563    //void PelaajaLyo3()
564    //{
565    //    PhysicsObject Miekka4 = new PhysicsObject(5, 5);
566    //    Miekka4.IsVisible = false;
567    //    Miekka4.Position = pelaaja3.Position;
568    //    Miekka4.Tag = "ase";
569    //    Miekka4.Push(new Vector(-20, 0));
570    //    AddCollisionHandler(Miekka4, "Demoni", DemoniKuolee);
571    //    AddCollisionHandler(Miekka4, "Ampuja", DemoniKuolee);
572    //    AddCollisionHandler(Miekka4, "mage", DemoniKuolee);
573    //    Add(Miekka4);
574
575    //    pelaaja3.Animation = new Animation(pelaajanAnimPeilattu);
576    //    pelaaja3.Animation.Start(1);     
577    //    pelaaja3.Animation.FPS = 10;
578
579    //}
580
581    void PainettiinValikonNappiaP1(int valinta)
582    {
583        switch (valinta)
584        {
585            case 0:
586                Aloitus("Tutorial map", "Road To War");
587                break;
588
589            case 1:
590                Aloitus("kartta", "Field Forces");
591                break;
592
593            case 2:
594                Aloitus("Kentta2", "Far From Victory");
595                break;
596
597            case 3:
598                Aloitus("Kentta3", "Field Forces");
599                break;
600
601            case 4:
602                Begin();
603                break;
604
605            case 5:
606                Exit();
607                break;
608        }
609    }
610    void PainettiinValikonNappiaP2(int valinta)
611    {
612        switch (valinta)
613        {
614            case 0:
615                Aloitus2("Tutorial map", "Road To War");
616                break;
617
618            case 1:
619                Aloitus2("kartta", "Field Forces");
620                break;
621
622            case 2:
623                Aloitus2("Kentta2", "Far From Victory");
624                break;
625
626            case 3:
627                Aloitus2("Kentta3", "Field Forces");
628                break;
629
630            case 4:
631                Begin();
632                break;
633
634            case 5:
635                Exit();
636                break;
637        }
638    }
639
640
641    void Aloitus(string levelFile, string kappale)
642    {
643
644        pelaajanAnimPeilattu = Image.Mirror(pelaajanAnim);
645
646        LuoKenttä(levelFile);
647        MediaPlayer.Stop();
648        MediaPlayer.Play(kappale);
649        AsetaOhjaimet();
650    }
651    void Aloitus2(string levelFile, string kappale)
652    {
653
654        pelaajanAnimPeilattu = Image.Mirror(pelaajanAnim);
655
656        LuoKenttä2(levelFile);
657        MediaPlayer.Stop();
658        MediaPlayer.Play(kappale);
659        AsetaOhjaimet2();
660    }
661
662
663    void LuoMaali(Vector paikka, double leveys, double korkeus)
664    {
665        PhysicsObject maali = PhysicsObject.CreateStaticObject(40, 80);
666        maali.Position = paikka;
667        maali.Image = maalinKuva;
668        maali.Tag = "maali";
669        maali.Color = Color.Blue;
670
671        Add(maali);
672    }
673    void SaavutitMaalin(PhysicsObject pelaaja, PhysicsObject kohde)
674    {
675        MediaPlayer.Stop();
676        MediaPlayer.Play("Opening The");
677        YouWin();
678    }
679    void SaavutitMaalin2(PhysicsObject pelaaja, PhysicsObject kohde)
680    {
681        MediaPlayer.Stop();
682        MediaPlayer.Play("Opening The");
683        YouWin2();
684    }
685    void SaavutitMaalin3(PhysicsObject pelaaja, PhysicsObject kohde)
686    {
687        MediaPlayer.Stop();
688        MediaPlayer.Play("Opening The");
689        YouWin2();
690    }
691    void Replay()
692    {
693        ClearAll();
694        MediaPlayer.Stop();
695        MediaPlayer.Play("The Defeated");
696        MultiSelectWindow valikko2 = new MultiSelectWindow("You Died",
697        "Replay", "Menu", "End");
698        valikko2.ItemSelected += PainettiinValikonNappia2;
699        Add(valikko2);
700    }
701    void PainettiinValikonNappia2(int valinta)
702    {
703        switch (valinta)
704        {
705
706            case 0:
707                AloitaUudelleen();
708                break;
709
710            case 1:
711                Begin();
712                break;
713
714            case 2:
715                Exit();
716                break;
717        }
718    }
719    void YouWin()
720    {
721        ClearAll();
722        MultiSelectWindow valikko3 = new MultiSelectWindow("You Win",
723        "Replay", "Menu", "End");
724        valikko3.ItemSelected += PainettiinValikonNappia3;
725        Add(valikko3);
726    }
727    void PainettiinValikonNappia3(int valinta)
728    {
729        switch (valinta)
730        {
731            case 0:
732                AloitaUudelleen();
733                break;
734
735            case 1:
736                Begin();
737                break;
738
739            case 2:
740                Exit();
741                break;
742        }
743    }
744    void YouWin2()
745    {
746        ClearAll();
747        MultiSelectWindow valikko3 = new MultiSelectWindow("You Win",
748        "Replay", "Menu", "End");
749        valikko3.ItemSelected += PainettiinValikonNappiaP2W;
750        Add(valikko3);
751    }
752    void PainettiinValikonNappiaP2W(int valinta)
753    {
754        switch (valinta)
755        {
756            case 0:
757                AloitaUudelleen2();
758                break;
759
760            case 1:
761                Begin();
762                break;
763
764            case 2:
765                Exit();
766                break;
767        }
768    }
769
770    void AloitaUudelleen()
771    {
772        ClearAll();
773        pelaajanAnimPeilattu = Image.Mirror(pelaajanAnim);
774        LuoKenttä(CurrentLevelFile);
775        AsetaOhjaimet();
776    }
777    void AloitaUudelleen2()
778    {
779        ClearAll();
780        pelaajanAnimPeilattu = Image.Mirror(pelaajanAnim);
781        LuoKenttä2(CurrentLevelFile);
782        AsetaOhjaimet2();
783    }
784
785    Brain AivotMage2()
786    {
787        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
788        seuraajanAivot.Speed = 20;
789        seuraajanAivot.TargetFollowDistance = 200;
790        seuraajanAivot.FollowAlways = true;
791        seuraajanAivot.TargetCloseDistance = 300;
792        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella23;
793        return seuraajanAivot;
794    }
795
796    void mitaTapahtuuKunOllaanLahella23(object lahettajaAivot, EventArgs e)
797    {
798        //Magen ase on sen lapsiolio eli Objects-listassa paikassa 0.
799
800        PhysicsObject mage = (lahettajaAivot as Brain).Owner as PhysicsObject;
801
802        if (mage == null || mage.Objects.Count < 1) return;
803
804        PlasmaCannon mageAse = (PlasmaCannon)mage.Objects[0];
805        mageAse.Angle = (pelaaja.Position - (lahettajaAivot as Brain).Owner.Position).Angle;
806        PhysicsObject ammus = mageAse.Shoot();
807
808        if (ammus != null)
809        {
810            AddCollisionHandler(ammus, pelaaja, PelaajaMenettaa2);
811            ammus.Tag = "ammus";
812        }
813    }
814        Brain AivotMage()
815    {
816        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
817        seuraajanAivot.Speed = 20;
818        seuraajanAivot.TargetFollowDistance = 200;
819        seuraajanAivot.FollowAlways = true;
820        seuraajanAivot.TargetCloseDistance = 300;
821        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella3;
822        return seuraajanAivot;
823    }
824
825        void mitaTapahtuuKunOllaanLahella3(object lahettajaAivot, EventArgs e)
826        {
827            //Magen ase on sen lapsiolio eli Objects-listassa paikassa 0.
828
829            PhysicsObject mage = (lahettajaAivot as Brain).Owner as PhysicsObject;
830
831            if (mage == null || mage.Objects.Count < 1) return;
832
833            PlasmaCannon mageAse = (PlasmaCannon)mage.Objects[0];
834            mageAse.Angle = (pelaaja3.Position - (lahettajaAivot as Brain).Owner.Position).Angle;
835            PhysicsObject ammus = mageAse.Shoot();
836
837            if (ammus != null)
838            {
839                AddCollisionHandler(ammus, pelaaja3, Pelaaja3Menettaa2);
840                ammus.Tag = "ammus";
841            }
842        }
843    void LuoMage(Vector paikka, double leveys, double korkeus)
844    {
845
846        PhysicsObject Mage = new PhysicsObject(20, 40);
847        Mage.IgnoresGravity = true;
848        Mage.CanRotate = false;
849        Mage.Position = paikka;
850        Mage.Image = magenKuva;
851        Mage.IsVisible = true;
852        Mage.Color = Color.Black;
853        Mage.Tag = "mage";
854        Mage.Brain = AivotMage();
855        Mage.Brain = AivotMage2();
856        PlasmaCannon pyssy = new PlasmaCannon(20, 5);
857        Mage.Add(pyssy);
858        pyssy.TimeBetweenUse = TimeSpan.FromSeconds(1);
859        pyssy.IsVisible = false;
860        Add(Mage);
861    }
862    Brain AivotHunter()
863    {
864        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
865        seuraajanAivot.Speed = 300;
866        seuraajanAivot.TargetFollowDistance = 200;
867        seuraajanAivot.FollowAlways = true;
868        seuraajanAivot.TargetCloseDistance = 200;
869
870
871
872        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella4;
873        return seuraajanAivot;
874    }
875    Brain AivotHunter2()
876    {
877        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja3);
878        seuraajanAivot.Speed = 300;
879        seuraajanAivot.TargetFollowDistance = 200;
880        seuraajanAivot.FollowAlways = true;
881        seuraajanAivot.TargetCloseDistance = 200;
882
883
884
885        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella24;
886        return seuraajanAivot;
887    }
888
889
890    void mitaTapahtuuKunOllaanLahella4(object lahettajaAivot, EventArgs e)
891    {
892        ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Angle = (pelaaja.Position - (lahettajaAivot as Brain).Owner.Position).Angle;
893        PhysicsObject ammus = ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Shoot();
894        if (ammus != null)
895        {
896            AddCollisionHandler(ammus, pelaaja, PelaajaMenettaa2);
897            ammus.Tag = "ammus";
898        }
899    }
900    void mitaTapahtuuKunOllaanLahella24(object lahettajaAivot, EventArgs e)
901    {
902        ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Angle = (pelaaja3.Position - (lahettajaAivot as Brain).Owner.Position).Angle;
903        PhysicsObject ammus = ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Shoot();
904        if (ammus != null)
905        {
906            AddCollisionHandler(ammus, pelaaja3, Pelaaja3Menettaa2);
907            ammus.Tag = "ammus";
908        }
909    }
910    void LuoHunter(Vector paikka, double leveys, double korkeus)
911    {
912
913        PlatformCharacter hunter = new PlatformCharacter(20, 40);
914
915        hunter.MaxVelocity = 400.400;
916        hunter.Position = paikka;
917        hunter.Image = hunterKuva;
918        hunter.Color = Color.Black;
919        hunter.Tag = "Ampuja";
920        hunter.Brain = AivotHunter();
921        hunter.Brain = AivotHunter2();
922        AddCollisionHandler(hunter, "piikki", HuntKuoli);
923        hunter.Weapon = new PlasmaCannon(5, 3);
924        hunter.Weapon.TimeBetweenUse = TimeSpan.FromSeconds(3);
925        hunter.Weapon.IsVisible = false;
926        Add(hunter);
927    }
928    void LuoKavlor(Vector paikka, double leveys, double korkeus)
929    {
930
931        PhysicsObject kavlor = new PhysicsObject(20, 40);
932
933        kavlor.MaxVelocity = 400.400;
934        kavlor.Position = paikka;
935        kavlor.Image = kavlorKuva;
936        kavlor.Color = Color.Black;
937        kavlor.Tag = "kavlor";
938        kavlor.Brain = AivotKavlor();
939        kavlor.CanRotate = false;
940        PlasmaCannon pyssy = new PlasmaCannon(20, 5);
941        kavlor.Add(pyssy);
942        pyssy.TimeBetweenUse = TimeSpan.FromSeconds(3);
943        pyssy.IsVisible = false;
944        KavlorinElamat(kavlor);
945        AddCollisionHandler(kavlor, "ase", KavlorMenettaa);
946        Add(kavlor);
947    }
948    void HuntKuoli(PhysicsObject hunter, PhysicsObject kohde)
949    {
950        hunter.Destroy();
951    }
952    void CafgarinElamat(PhysicsObject Cafgar)
953    {
954        elamaMittari2 = new DoubleMeter(25);
955        elamaMittari2.MaxValue = 50;
956        ProgressBar elamaPalkki2 = new ProgressBar(150, 10);
957        elamaPalkki2.BindTo(elamaMittari2);
958        Add(elamaPalkki2);
959
960        elamaPalkki2.X = Screen.Right - 150;
961        elamaPalkki2.Y = Screen.Top - 30;
962        //elamaPalkki.Angle = Angle.RightAngle;
963        elamaPalkki2.BarColor = Color.Red;
964        elamaPalkki2.BorderColor = Color.White;
965        //elamaPalkki.Angle = Angle.FromDegrees(90);
966        elamaMittari2.Value = 50;
967        //        elamaMittari.LowerLimit += CafgarKuolee;
968        elamaMittari2.LowerLimit += delegate
969        {
970            Cafgar.Destroy();
971            YouWin();
972        };
973    }
974
975    void CafgarMenettaa(PhysicsObject Cafgar, PhysicsObject kohde)
976    {
977        elamaMittari2.Value -= 5;
978    }
979    void KavlorinElamat(PhysicsObject Kavlor)
980    {
981        elamaMittari3 = new DoubleMeter(25);
982        elamaMittari3.MaxValue = 50;
983        ProgressBar elamaPalkki3 = new ProgressBar(150, 10);
984        elamaPalkki3.BindTo(elamaMittari3);
985        Add(elamaPalkki3);
986
987        elamaPalkki3.X = Screen.Right - 150;
988        elamaPalkki3.Y = Screen.Top - 30;
989        //elamaPalkki.Angle = Angle.RightAngle;
990        elamaPalkki3.BarColor = Color.Purple;
991        elamaPalkki3.BorderColor = Color.White;
992        //elamaPalkki.Angle = Angle.FromDegrees(90);
993        elamaMittari3.Value = 50;
994        //        elamaMittari.LowerLimit += CafgarKuolee;
995        elamaMittari3.LowerLimit += delegate
996        {
997            Kavlor.Destroy();
998            YouWin();
999        };
1000    }
1001
1002    void KavlorMenettaa(PhysicsObject Kavlor, PhysicsObject kohde)
1003    {
1004        elamaMittari3.Value -= 5;
1005    }
1006    Brain AivotKavlor()
1007    {
1008        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
1009        seuraajanAivot.Speed = 300;
1010        seuraajanAivot.TargetFollowDistance = 100;
1011        seuraajanAivot.FollowAlways = true;
1012        seuraajanAivot.TargetCloseDistance = 200;
1013        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella5;
1014        return seuraajanAivot;
1015    }
1016
1017    void mitaTapahtuuKunOllaanLahella5(object lahettajaAivot, EventArgs e)
1018    {
1019        //Magen ase on sen lapsiolio eli Objects-listassa paikassa 0.
1020
1021        PhysicsObject kavlor = (lahettajaAivot as Brain).Owner as PhysicsObject;
1022
1023        if (kavlor == null || kavlor.Objects.Count < 1) return;
1024
1025        PlasmaCannon kavlorAse = (PlasmaCannon)kavlor.Objects[0];
1026        kavlorAse.Angle = (pelaaja.Position - (lahettajaAivot as Brain).Owner.Position).Angle;
1027        PhysicsObject ammus = kavlorAse.Shoot();
1028
1029        if (ammus != null)
1030        {
1031            AddCollisionHandler(ammus, pelaaja, PelaajaMenettaa2);
1032            ammus.Tag = "ammus";
1033        }
1034    }
1035    void EPotion(Vector paikka, double leveys, double korkeus)
1036    {
1037        PhysicsObject potion = new PhysicsObject(20, 20);
1038        potion.Position = paikka;
1039        potion.CanRotate = false;
1040        potion.Shape = Shape.Heart;
1041        potion.Color = Color.Red;
1042        potion.Tag = "peruna";
1043        Add(potion);
1044    }
1045    void LisaaElamaa(PhysicsObject pelaaja, PhysicsObject potion)
1046    {
1047        potion.Destroy();
1048        elamaMittari.Value += 50;
1049       
1050    }
1051    void P1MSW()
1052    {
1053        MultiSelectWindow valikko = new MultiSelectWindow("One Player",
1054        "tutorial", "Level 1", "Level 2", "Level 3", "Menu", "Exit");
1055        valikko.ItemSelected += PainettiinValikonNappiaP1;
1056        Add(valikko);
1057    }
1058    void P2MSW()
1059    {
1060        MultiSelectWindow valikko = new MultiSelectWindow("Two Players",
1061        "tutorial", "Level 1", "Level 2", "Level 3", "Menu", "Exit");
1062        valikko.ItemSelected += PainettiinValikonNappiaP2;
1063        Add(valikko);
1064    }
1065    void Replay2()
1066    {
1067        ClearAll();
1068        MediaPlayer.Stop();
1069        MediaPlayer.Play("The Defeated");
1070        MultiSelectWindow valikko2 = new MultiSelectWindow("You Died",
1071        "Replay", "Menu", "End");
1072        valikko2.ItemSelected += PainettiinValikonNappiaP22;
1073        Add(valikko2);
1074    }
1075    void PainettiinValikonNappiaP22(int valinta)
1076    {
1077        switch (valinta)
1078        {
1079
1080            case 0:
1081                AloitaUudelleen2();
1082                break;
1083
1084            case 1:
1085                Begin();
1086                break;
1087
1088            case 2:
1089                Exit();
1090                break;
1091        }
1092    }
1093}
Note: See TracBrowser for help on using the repository browser.