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

Revision 2852, 32.5 KB checked in by lemilaht, 11 years ago (diff)

2P
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(pelaaja, "piikki", Pelaaja3Kuolee);
199        AddCollisionHandler(pelaaja, "Demoni", Pelaaja3Menettaa);
200        AddCollisionHandler(pelaaja, "Ampuja", Pelaaja3Menettaa2);
201        AddCollisionHandler(pelaaja, "cafgar", Pelaaja3Menettaa2);
202        AddCollisionHandler(pelaaja, "maali", SaavutitMaalin3);
203        AddCollisionHandler(pelaaja, "peruna", LisaaElamaa3);
204        PelaajanElamat3();
205        pelaaja3.Mass = 5000;
206        pelaaja3.Weapon = new PlasmaCannon(20, 5);
207        pelaaja3.Weapon.IsVisible = false;
208        Add(pelaaja3);
209    }
210    void LuoPelaaja2(Vector paikka, double leveys, double korkeus)
211    {
212        pelaaja2 = new PlatformCharacter(20, 40);
213        pelaaja2.Position = paikka;
214        pelaaja2.Color = Color.Aquamarine;
215        pelaaja2.Image = p2Kuva;
216        pelaaja2.CanRotate = false;
217        AddCollisionHandler(pelaaja2, "piikki", Pelaaja2Kuolee);
218        AddCollisionHandler(pelaaja2, "Demoni", Pelaaja2Menettaa);
219        AddCollisionHandler(pelaaja2, "Ampuja", Pelaaja2Menettaa2);
220        AddCollisionHandler(pelaaja2, "cafgar", Pelaaja2Menettaa2);
221        AddCollisionHandler(pelaaja2, "maali", SaavutitMaalin2);
222        AddCollisionHandler(pelaaja2, "peruna", LisaaElamaa2);
223        PelaajanElamat2();
224        pelaaja2.Mass = 5000;
225       
226        Add(pelaaja2);
227    }
228
229    void AsetaNopeus(PhysicsObject Pelaaja, Vector nopeus)
230    {
231        Pelaaja.Velocity = nopeus;
232    }
233    void AsetaNopeus2(PhysicsObject Pelaaja2, Vector nopeus)
234    {
235        Pelaaja2.Velocity = nopeus;
236    }
237    void AsetaNopeus3(PhysicsObject Pelaaja3, Vector nopeus)
238    {
239        Pelaaja3.Velocity = nopeus;
240    }
241
242
243
244    void PelaajaKuolee(PhysicsObject pelaaja, PhysicsObject kohde)
245    {
246        pelaaja.Destroy();
247        Replay();
248    }
249    void Pelaaja2Kuolee(PhysicsObject pelaaja, PhysicsObject kohde)
250    {
251        pelaaja.Destroy();
252        Replay2();
253    }
254    void Pelaaja3Kuolee(PhysicsObject pelaaja, PhysicsObject kohde)
255    {
256        pelaaja.Destroy();
257        Replay2();
258    }
259
260    void LuoCafgar(Vector paikka, double leveys, double korkeus)
261    {
262        PhysicsObject Cafgar = new PhysicsObject(20, 40);
263        Cafgar.Position = paikka;
264        Cafgar.Image = olionKuva;
265        Cafgar.Color = Color.Black;
266        Cafgar.Tag = "cafgar";
267        Cafgar.Brain = Aivot();
268
269        Cafgar.Brain.Active = true;
270        Cafgar.CanRotate = false;
271        CafgarinElamat(Cafgar);
272        AddCollisionHandler(Cafgar, "ase", CafgarMenettaa);
273        Add(Cafgar);
274    }
275
276    void LuoDemoni(Vector paikka, double leveys, double korkeus)
277    {
278        PhysicsObject Demoni = PhysicsObject.CreateStaticObject(20, 40);
279        Demoni.Position = paikka;
280        Demoni.Image = DemoninKuva;
281        Demoni.Color = Color.Black;
282        Demoni.Tag = "Demoni";
283        Demoni.Brain = Aivot();
284        AddCollisionHandler(Demoni, "piikki", DemoniTuhoutuu);
285        AddCollisionHandler(Demoni, "Ampuja", DemoniKuolee);
286        AddCollisionHandler(Demoni, "ammus", DemoniKuolee);
287        Demoni.Mass = 500;
288        Add(Demoni);
289    }
290    void DemoniTuhoutuu(PhysicsObject Demoni, PhysicsObject kohde)
291    {
292        Demoni.Destroy();
293    }
294    void Hyppy(PlatformCharacter pelaaja, double hypynVoima)
295    {
296        pelaaja.Jump(hypynVoima);
297    }
298    void Hyppy2(PlatformCharacter pelaaja2, double hypynVoima)
299    {
300        pelaaja2.Jump(hypynVoima);
301    }
302    void Hyppy3(PlatformCharacter pelaaja3, double hypynVoima)
303    {
304        pelaaja3.Jump(hypynVoima);
305    }
306    Brain Aivot()
307    {
308        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
309        seuraajanAivot.Speed = 150;
310        seuraajanAivot.TargetFollowDistance = 200;
311        seuraajanAivot.FollowAlways = true;
312        seuraajanAivot.TargetCloseDistance = 20;
313        seuraajanAivot.StopWhenTargetClose = false;
314        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella;
315        return seuraajanAivot;
316    }
317
318
319    void mitaTapahtuuKunOllaanLahella(object lahettajaAivot, EventArgs e)
320    {
321    }
322
323    void DemoniKuolee(PhysicsObject tormaaja, PhysicsObject kohde)
324    {
325        kohde.Destroy();
326    }
327
328    Brain AivotAmpuja()
329    {
330        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
331        seuraajanAivot.Speed = 0;
332        seuraajanAivot.TargetFollowDistance = 200;
333        seuraajanAivot.FollowAlways = true;
334        seuraajanAivot.TargetCloseDistance = 200;
335        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella2;
336        return seuraajanAivot;
337    }
338
339
340    void mitaTapahtuuKunOllaanLahella2(object lahettajaAivot, EventArgs e)
341    {
342        ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Angle = (pelaaja.Position - (lahettajaAivot as Brain).Owner.Position).Angle;
343        PhysicsObject ammus = ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Shoot();
344        if (ammus != null)
345        {
346            AddCollisionHandler(ammus, pelaaja, PelaajaMenettaa2);
347            ammus.Tag = "ammus";
348        }
349    }
350
351    void LuoAmpuja(Vector paikka, double leveys, double korkeus)
352    {
353
354        PlatformCharacter Ampuja = new PlatformCharacter(20, 20);
355        Ampuja.IgnoresGravity = true;
356        Ampuja.IgnoresPhysicsLogics = true;
357        Ampuja.MaxVelocity = 0.0;
358        Ampuja.Position = paikka;
359        Ampuja.Image = Ampujankuva;
360        Ampuja.Color = Color.Black;
361        Ampuja.Tag = "Ampuja";
362        Ampuja.Brain = AivotAmpuja();
363        Ampuja.Weapon = new PlasmaCannon(5, 3);
364        Ampuja.Weapon.TimeBetweenUse = TimeSpan.FromSeconds(1);
365        Add(Ampuja);
366    }
367
368    void PelaajaMenettaa()
369    {
370    }
371
372    void PelaajanElamat()
373    {
374        elamaMittari = new DoubleMeter(50);
375        elamaMittari.MaxValue = 50;
376        ProgressBar elamaPalkki = new ProgressBar(150, 10);
377        elamaPalkki.BindTo(elamaMittari);
378        Add(elamaPalkki);
379
380        elamaPalkki.X = Screen.Right - 150;
381        elamaPalkki.Y = Screen.Top - 10;
382        //elamaPalkki.Angle = Angle.RightAngle;
383        elamaPalkki.BarColor = Color.Green;
384        elamaPalkki.BorderColor = Color.White;
385        //elamaPalkki.Angle = Angle.FromDegrees(90);
386        elamaMittari.Value = 50;
387        elamaMittari.LowerLimit += PelaajaTuhoutuu;
388    }
389
390    void PelaajaMenettaa(PhysicsObject pelaaja, PhysicsObject kohde)
391    {
392        elamaMittari.Value -= 3;
393    }
394
395    void PelaajaTuhoutuu(double mittarinArvo)
396    {
397        pelaaja.Destroy();
398        MessageDisplay.Add("Dead");
399
400        Replay();
401    }
402
403    void PelaajaMenettaa2(PhysicsObject pelaaja, PhysicsObject kohde)
404    {
405        elamaMittari.Value -= 5;
406    }
407    void PelaajanElamat2()
408    {
409        P2elamaMittari = new DoubleMeter(50);
410        P2elamaMittari.MaxValue = 50;
411        ProgressBar P2elamaPalkki = new ProgressBar(150, 10);
412        P2elamaPalkki.BindTo(P2elamaMittari);
413        Add(P2elamaPalkki);
414
415       P2elamaPalkki.X = Screen.Right - 150;
416       P2elamaPalkki.Y = Screen.Top - 10;
417       P2elamaPalkki.BarColor = Color.Navy;
418       P2elamaPalkki.BorderColor = Color.White;
419        P2elamaMittari.Value = 50;
420        P2elamaMittari.LowerLimit += Pelaaja2Tuhoutuu;
421    }
422
423    void Pelaaja2Menettaa(PhysicsObject pelaaja2, PhysicsObject kohde)
424    {
425        P2elamaMittari.Value -= 3;
426    }
427
428    void Pelaaja2Tuhoutuu(double mittarinArvo)
429    {
430        pelaaja.Destroy();
431        MessageDisplay.Add("Dead");
432
433        Replay2();
434    }
435    void LisaaElamaa2(PhysicsObject pelaaja2, PhysicsObject potion)
436    {
437        potion.Destroy();
438        P2elamaMittari.Value += 50;
439
440    }
441
442    void Pelaaja2Menettaa2(PhysicsObject pelaaja, PhysicsObject kohde)
443    {
444        elamaMittari.Value -= 5;
445    }
446    void PelaajanElamat3()
447    {
448        P3elamaMittari = new DoubleMeter(50);
449        P3elamaMittari.MaxValue = 50;
450        ProgressBar P3elamaPalkki = new ProgressBar(150, 10);
451        P3elamaPalkki.BindTo(P3elamaMittari);
452        Add(P3elamaPalkki);
453
454        P3elamaPalkki.X = Screen.Left - 150;
455        P3elamaPalkki.Y = Screen.Top - 10;
456        P3elamaPalkki.BarColor = Color.Green;
457        P3elamaPalkki.BorderColor = Color.White;
458        P3elamaMittari.Value = 50;
459        P3elamaMittari.LowerLimit += Pelaaja3Tuhoutuu;
460    }
461
462    void Pelaaja3Menettaa(PhysicsObject pelaaja2, PhysicsObject kohde)
463    {
464        P2elamaMittari.Value -= 3;
465    }
466
467    void Pelaaja3Tuhoutuu(double mittarinArvo)
468    {
469        pelaaja.Destroy();
470        MessageDisplay.Add("Dead");
471
472        Replay2();
473    }
474    void LisaaElamaa3(PhysicsObject pelaaja2, PhysicsObject potion)
475    {
476        potion.Destroy();
477        P2elamaMittari.Value += 50;
478
479    }
480
481    void Pelaaja3Menettaa2(PhysicsObject pelaaja, PhysicsObject kohde)
482    {
483        elamaMittari.Value -= 5;
484    }
485
486    void PelaajaLyo()
487    {
488        PhysicsObject Miekka = new PhysicsObject(5, 5);
489        Miekka.IsVisible = false;
490        Miekka.Position = pelaaja.Position;
491        Miekka.Tag = "ase";
492        AddCollisionHandler(Miekka, "Demoni", DemoniKuolee);
493        AddCollisionHandler(Miekka, "Ampuja", DemoniKuolee);
494        AddCollisionHandler(Miekka, "mage", DemoniKuolee);
495        Miekka.Push(new Vector(20, 0));
496        Add(Miekka);
497        pelaaja.Animation = new Animation(pelaajanAnim);
498        pelaaja.Animation.Start();
499        pelaaja.Animation.Played += new Action(AnimValm);
500        pelaaja.Animation.FPS = 10;
501
502
503    }
504
505    void AnimValm()
506    {
507        pelaaja.Animation.Stop();
508    }
509
510    void PelaajaLyo2()
511    {
512        PhysicsObject Miekka2 = new PhysicsObject(5, 5);
513        Miekka2.IsVisible = false;
514        Miekka2.Position = pelaaja.Position;
515        Miekka2.Tag = "ase";
516        Miekka2.Push(new Vector(-20, 0));
517        AddCollisionHandler(Miekka2, "Demoni", DemoniKuolee);
518        AddCollisionHandler(Miekka2, "Ampuja", DemoniKuolee);
519        AddCollisionHandler(Miekka2, "mage", DemoniKuolee);
520        Add(Miekka2);
521
522        pelaaja.Animation = new Animation(pelaajanAnimPeilattu);
523        pelaaja.Animation.Start();
524        pelaaja.Animation.Played += new Action(AnimValm2);
525        pelaaja.Animation.FPS = 10;
526
527    }
528
529    void AnimValm2()
530    {
531        pelaaja.Animation.Stop();
532    }
533    void PelaajaLyo4()
534    {
535        PhysicsObject Miekka3 = new PhysicsObject(5, 5);
536        Miekka3.IsVisible = false;
537        Miekka3.Position = pelaaja.Position;
538        Miekka3.Tag = "ase";
539        AddCollisionHandler(Miekka3, "Demoni", DemoniKuolee);
540        AddCollisionHandler(Miekka3, "Ampuja", DemoniKuolee);
541        AddCollisionHandler(Miekka3, "mage", DemoniKuolee);
542        Miekka3.Push(new Vector(20, 0));
543        Add(Miekka3);
544        pelaaja3.Animation = new Animation(pelaajanAnim);
545        pelaaja3.Animation.Start();
546        pelaaja3.Animation.Played += new Action(AnimValm3);
547        pelaaja3.Animation.FPS = 10;
548
549
550    }
551
552    void AnimValm3()
553    {
554        pelaaja3.Animation.Stop();
555    }
556
557    void PelaajaLyo3()
558    {
559        PhysicsObject Miekka4 = new PhysicsObject(5, 5);
560        Miekka4.IsVisible = false;
561        Miekka4.Position = pelaaja.Position;
562        Miekka4.Tag = "ase";
563        Miekka4.Push(new Vector(-20, 0));
564        AddCollisionHandler(Miekka4, "Demoni", DemoniKuolee);
565        AddCollisionHandler(Miekka4, "Ampuja", DemoniKuolee);
566        AddCollisionHandler(Miekka4, "mage", DemoniKuolee);
567        Add(Miekka4);
568
569        pelaaja.Animation = new Animation(pelaajanAnimPeilattu);
570        pelaaja.Animation.Start();
571        pelaaja.Animation.Played += new Action(AnimValm5);
572        pelaaja.Animation.FPS = 10;
573
574    }
575
576    void AnimValm5()
577    {
578        pelaaja3.Animation.Stop();
579    }
580
581
582    void PainettiinValikonNappiaP1(int valinta)
583    {
584        switch (valinta)
585        {
586            case 0:
587                Aloitus("Tutorial map", "Road To War");
588                break;
589
590            case 1:
591                Aloitus("kartta", "Field Forces");
592                break;
593
594            case 2:
595                Aloitus("Kentta2", "Far From Victory");
596                break;
597
598            case 3:
599                Aloitus("Kentta3", "Field Forces");
600                break;
601
602            case 4:
603                Begin();
604                break;
605
606            case 5:
607                Exit();
608                break;
609        }
610    }
611    void PainettiinValikonNappiaP2(int valinta)
612    {
613        switch (valinta)
614        {
615            case 0:
616                Aloitus2("Tutorial map", "Road To War");
617                break;
618
619            case 1:
620                Aloitus2("kartta", "Field Forces");
621                break;
622
623            case 2:
624                Aloitus2("Kentta2", "Far From Victory");
625                break;
626
627            case 3:
628                Aloitus2("Kentta3", "Field Forces");
629                break;
630
631            case 4:
632                Begin();
633                break;
634
635            case 5:
636                Exit();
637                break;
638        }
639    }
640
641
642    void Aloitus(string levelFile, string kappale)
643    {
644
645        pelaajanAnimPeilattu = Image.Mirror(pelaajanAnim);
646
647        LuoKenttä(levelFile);
648        MediaPlayer.Stop();
649        MediaPlayer.Play(kappale);
650        AsetaOhjaimet();
651    }
652    void Aloitus2(string levelFile, string kappale)
653    {
654
655        pelaajanAnimPeilattu = Image.Mirror(pelaajanAnim);
656
657        LuoKenttä2(levelFile);
658        MediaPlayer.Stop();
659        MediaPlayer.Play(kappale);
660        AsetaOhjaimet2();
661    }
662
663
664    void LuoMaali(Vector paikka, double leveys, double korkeus)
665    {
666        PhysicsObject maali = PhysicsObject.CreateStaticObject(40, 80);
667        maali.Position = paikka;
668        maali.Image = maalinKuva;
669        maali.Tag = "maali";
670        maali.Color = Color.Blue;
671
672        Add(maali);
673    }
674    void SaavutitMaalin(PhysicsObject pelaaja, PhysicsObject kohde)
675    {
676        MediaPlayer.Stop();
677        MediaPlayer.Play("Opening The");
678        YouWin();
679    }
680    void SaavutitMaalin2(PhysicsObject pelaaja, PhysicsObject kohde)
681    {
682        MediaPlayer.Stop();
683        MediaPlayer.Play("Opening The");
684        YouWin2();
685    }
686    void SaavutitMaalin3(PhysicsObject pelaaja, PhysicsObject kohde)
687    {
688        MediaPlayer.Stop();
689        MediaPlayer.Play("Opening The");
690        YouWin2();
691    }
692    void Replay()
693    {
694        ClearAll();
695        MediaPlayer.Stop();
696        MediaPlayer.Play("The Defeated");
697        MultiSelectWindow valikko2 = new MultiSelectWindow("You Died",
698        "Replay", "Menu", "End");
699        valikko2.ItemSelected += PainettiinValikonNappia2;
700        Add(valikko2);
701    }
702    void PainettiinValikonNappia2(int valinta)
703    {
704        switch (valinta)
705        {
706
707            case 0:
708                AloitaUudelleen();
709                break;
710
711            case 1:
712                Begin();
713                break;
714
715            case 2:
716                Exit();
717                break;
718        }
719    }
720    void YouWin()
721    {
722        ClearAll();
723        MultiSelectWindow valikko3 = new MultiSelectWindow("You Win",
724        "Replay", "Menu", "End");
725        valikko3.ItemSelected += PainettiinValikonNappia3;
726        Add(valikko3);
727    }
728    void PainettiinValikonNappia3(int valinta)
729    {
730        switch (valinta)
731        {
732            case 0:
733                AloitaUudelleen();
734                break;
735
736            case 1:
737                Begin();
738                break;
739
740            case 2:
741                Exit();
742                break;
743        }
744    }
745    void YouWin2()
746    {
747        ClearAll();
748        MultiSelectWindow valikko3 = new MultiSelectWindow("You Win",
749        "Replay", "Menu", "End");
750        valikko3.ItemSelected += PainettiinValikonNappiaP2W;
751        Add(valikko3);
752    }
753    void PainettiinValikonNappiaP2W(int valinta)
754    {
755        switch (valinta)
756        {
757            case 0:
758                AloitaUudelleen2();
759                break;
760
761            case 1:
762                Begin();
763                break;
764
765            case 2:
766                Exit();
767                break;
768        }
769    }
770
771    void AloitaUudelleen()
772    {
773        ClearAll();
774        pelaajanAnimPeilattu = Image.Mirror(pelaajanAnim);
775        LuoKenttä(CurrentLevelFile);
776        AsetaOhjaimet();
777    }
778    void AloitaUudelleen2()
779    {
780        ClearAll();
781        pelaajanAnimPeilattu = Image.Mirror(pelaajanAnim);
782        LuoKenttä2(CurrentLevelFile);
783        AsetaOhjaimet();
784    }
785
786    Brain AivotMage()
787    {
788        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
789        seuraajanAivot.Speed = 20;
790        seuraajanAivot.TargetFollowDistance = 200;
791        seuraajanAivot.FollowAlways = true;
792        seuraajanAivot.TargetCloseDistance = 300;
793        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella3;
794        return seuraajanAivot;
795    }
796
797    void mitaTapahtuuKunOllaanLahella3(object lahettajaAivot, EventArgs e)
798    {
799        //Magen ase on sen lapsiolio eli Objects-listassa paikassa 0.
800
801        PhysicsObject mage = (lahettajaAivot as Brain).Owner as PhysicsObject;
802
803        if (mage == null || mage.Objects.Count < 1) return;
804
805        PlasmaCannon mageAse = (PlasmaCannon)mage.Objects[0];
806        mageAse.Angle = (pelaaja.Position - (lahettajaAivot as Brain).Owner.Position).Angle;
807        PhysicsObject ammus = mageAse.Shoot();
808
809        if (ammus != null)
810        {
811            AddCollisionHandler(ammus, pelaaja, PelaajaMenettaa2);
812            ammus.Tag = "ammus";
813        }
814    }
815
816    void LuoMage(Vector paikka, double leveys, double korkeus)
817    {
818
819        PhysicsObject Mage = new PhysicsObject(20, 40);
820        Mage.IgnoresGravity = true;
821        Mage.CanRotate = false;
822        Mage.Position = paikka;
823        Mage.Image = magenKuva;
824        Mage.IsVisible = true;
825        Mage.Color = Color.Black;
826        Mage.Tag = "mage";
827        Mage.Brain = AivotMage();
828        PlasmaCannon pyssy = new PlasmaCannon(20, 5);
829        Mage.Add(pyssy);
830        pyssy.TimeBetweenUse = TimeSpan.FromSeconds(0.5);
831        pyssy.IsVisible = false;
832        Add(Mage);
833    }
834    Brain AivotHunter()
835    {
836        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
837        seuraajanAivot.Speed = 300;
838        seuraajanAivot.TargetFollowDistance = 200;
839        seuraajanAivot.FollowAlways = true;
840        seuraajanAivot.TargetCloseDistance = 200;
841
842
843
844        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella4;
845        return seuraajanAivot;
846    }
847
848
849    void mitaTapahtuuKunOllaanLahella4(object lahettajaAivot, EventArgs e)
850    {
851        ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Angle = (pelaaja.Position - (lahettajaAivot as Brain).Owner.Position).Angle;
852        PhysicsObject ammus = ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Shoot();
853        if (ammus != null)
854        {
855            AddCollisionHandler(ammus, pelaaja, PelaajaMenettaa2);
856            ammus.Tag = "ammus";
857        }
858    }
859    void LuoHunter(Vector paikka, double leveys, double korkeus)
860    {
861
862        PlatformCharacter hunter = new PlatformCharacter(20, 40);
863
864        hunter.MaxVelocity = 400.400;
865        hunter.Position = paikka;
866        hunter.Image = hunterKuva;
867        hunter.Color = Color.Black;
868        hunter.Tag = "Ampuja";
869        hunter.Brain = AivotHunter();
870        AddCollisionHandler(hunter, "piikki", HuntKuoli);
871        hunter.Weapon = new PlasmaCannon(5, 3);
872        hunter.Weapon.TimeBetweenUse = TimeSpan.FromSeconds(3);
873        hunter.Weapon.IsVisible = false;
874        Add(hunter);
875    }
876    void LuoKavlor(Vector paikka, double leveys, double korkeus)
877    {
878
879        PhysicsObject kavlor = new PhysicsObject(20, 40);
880
881        kavlor.MaxVelocity = 400.400;
882        kavlor.Position = paikka;
883        kavlor.Image = kavlorKuva;
884        kavlor.Color = Color.Black;
885        kavlor.Tag = "kavlor";
886        kavlor.Brain = AivotKavlor();
887        kavlor.CanRotate = false;
888        PlasmaCannon pyssy = new PlasmaCannon(20, 5);
889        kavlor.Add(pyssy);
890        pyssy.TimeBetweenUse = TimeSpan.FromSeconds(3);
891        pyssy.IsVisible = false;
892        KavlorinElamat(kavlor);
893        AddCollisionHandler(kavlor, "ase", KavlorMenettaa);
894        Add(kavlor);
895    }
896    void HuntKuoli(PhysicsObject hunter, PhysicsObject kohde)
897    {
898        hunter.Destroy();
899    }
900    void CafgarinElamat(PhysicsObject Cafgar)
901    {
902        elamaMittari2 = new DoubleMeter(25);
903        elamaMittari2.MaxValue = 50;
904        ProgressBar elamaPalkki2 = new ProgressBar(150, 10);
905        elamaPalkki2.BindTo(elamaMittari2);
906        Add(elamaPalkki2);
907
908        elamaPalkki2.X = Screen.Right - 150;
909        elamaPalkki2.Y = Screen.Top - 20;
910        //elamaPalkki.Angle = Angle.RightAngle;
911        elamaPalkki2.BarColor = Color.Red;
912        elamaPalkki2.BorderColor = Color.White;
913        //elamaPalkki.Angle = Angle.FromDegrees(90);
914        elamaMittari2.Value = 50;
915        //        elamaMittari.LowerLimit += CafgarKuolee;
916        elamaMittari2.LowerLimit += delegate
917        {
918            Cafgar.Destroy();
919            YouWin();
920        };
921    }
922
923    void CafgarMenettaa(PhysicsObject Cafgar, PhysicsObject kohde)
924    {
925        elamaMittari2.Value -= 5;
926    }
927    void KavlorinElamat(PhysicsObject Kavlor)
928    {
929        elamaMittari3 = new DoubleMeter(25);
930        elamaMittari3.MaxValue = 50;
931        ProgressBar elamaPalkki3 = new ProgressBar(150, 10);
932        elamaPalkki3.BindTo(elamaMittari3);
933        Add(elamaPalkki3);
934
935        elamaPalkki3.X = Screen.Right - 150;
936        elamaPalkki3.Y = Screen.Top - 30;
937        //elamaPalkki.Angle = Angle.RightAngle;
938        elamaPalkki3.BarColor = Color.Purple;
939        elamaPalkki3.BorderColor = Color.White;
940        //elamaPalkki.Angle = Angle.FromDegrees(90);
941        elamaMittari3.Value = 50;
942        //        elamaMittari.LowerLimit += CafgarKuolee;
943        elamaMittari3.LowerLimit += delegate
944        {
945            Kavlor.Destroy();
946            YouWin();
947        };
948    }
949
950    void KavlorMenettaa(PhysicsObject Kavlor, PhysicsObject kohde)
951    {
952        elamaMittari3.Value -= 5;
953    }
954    Brain AivotKavlor()
955    {
956        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
957        seuraajanAivot.Speed = 300;
958        seuraajanAivot.TargetFollowDistance = 100;
959        seuraajanAivot.FollowAlways = true;
960        seuraajanAivot.TargetCloseDistance = 200;
961        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella5;
962        return seuraajanAivot;
963    }
964
965    void mitaTapahtuuKunOllaanLahella5(object lahettajaAivot, EventArgs e)
966    {
967        //Magen ase on sen lapsiolio eli Objects-listassa paikassa 0.
968
969        PhysicsObject kavlor = (lahettajaAivot as Brain).Owner as PhysicsObject;
970
971        if (kavlor == null || kavlor.Objects.Count < 1) return;
972
973        PlasmaCannon kavlorAse = (PlasmaCannon)kavlor.Objects[0];
974        kavlorAse.Angle = (pelaaja.Position - (lahettajaAivot as Brain).Owner.Position).Angle;
975        PhysicsObject ammus = kavlorAse.Shoot();
976
977        if (ammus != null)
978        {
979            AddCollisionHandler(ammus, pelaaja, PelaajaMenettaa2);
980            ammus.Tag = "ammus";
981        }
982    }
983    void EPotion(Vector paikka, double leveys, double korkeus)
984    {
985        PhysicsObject potion = new PhysicsObject(20, 20);
986        potion.Position = paikka;
987        potion.CanRotate = false;
988        potion.Shape = Shape.Heart;
989        potion.Color = Color.Red;
990        potion.Tag = "peruna";
991        Add(potion);
992    }
993    void LisaaElamaa(PhysicsObject pelaaja, PhysicsObject potion)
994    {
995        potion.Destroy();
996        elamaMittari.Value += 50;
997       
998    }
999    void P1MSW()
1000    {
1001        MultiSelectWindow valikko = new MultiSelectWindow("One Player",
1002        "tutorial", "Level 1", "Level 2", "Level 3", "Menu", "Exit");
1003        valikko.ItemSelected += PainettiinValikonNappiaP1;
1004        Add(valikko);
1005    }
1006    void P2MSW()
1007    {
1008        MultiSelectWindow valikko = new MultiSelectWindow("Two Players",
1009        "tutorial", "Level 1", "Level 2", "Level 3", "Menu", "Exit");
1010        valikko.ItemSelected += PainettiinValikonNappiaP2;
1011        Add(valikko);
1012    }
1013    void Replay2()
1014    {
1015        ClearAll();
1016        MediaPlayer.Stop();
1017        MediaPlayer.Play("The Defeated");
1018        MultiSelectWindow valikko2 = new MultiSelectWindow("You Died",
1019        "Replay", "Menu", "End");
1020        valikko2.ItemSelected += PainettiinValikonNappiaP22;
1021        Add(valikko2);
1022    }
1023    void PainettiinValikonNappiaP22(int valinta)
1024    {
1025        switch (valinta)
1026        {
1027
1028            case 0:
1029                AloitaUudelleen2();
1030                break;
1031
1032            case 1:
1033                Begin();
1034                break;
1035
1036            case 2:
1037                Exit();
1038                break;
1039        }
1040    }
1041}
Note: See TracBrowser for help on using the repository browser.