source: 2012/27/HenrikS/MasaMajavanMaailma/MasaMajavanMaailma/MasaMajavanMaailma/Peli.cs @ 3870

Revision 3870, 34.4 KB checked in by hniemi, 10 years ago (diff)

Tavarat turvaan.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Peli : PhysicsGame
10{
11    const double nopeus = 400;
12    const double hyppyNopeus = 270;
13    const double lentonopeus = 10000;
14    const int RUUDUN_KOKO = 40;
15    bool onkoJetPak = false;
16    bool hyokkayskaynnissa = false;
17
18    PlatformCharacter pelaaja1;
19    DoubleMeter ESmittari = new DoubleMeter(0);
20    DoubleMeter Elama;
21    IntMeter kepit = new IntMeter(0);
22
23    Image pelaajanKuvaOikea = LoadImage("Masaoikea");
24    Image[] pelaajanKavelykuvatOikea = LoadImages("Masaoikea", "Masajuoksuoikea");
25    Image[] pelaajanKavelykuvatVasen = LoadImages("Masavasen", "Masajuoksuvasen");
26    Image Kivi = LoadImage("Kivi");
27    Image tahtiKuva = LoadImage("tahti");
28    Image pelaajanKuvaVasen = LoadImage("Masavasen");
29    Image PelaajajuokseeOikea = LoadImage("Masajuoksuvasen");
30    Image PelaajajuokseeVasen = LoadImage("Masajuoksuoikea");
31    Image Pelaajalentaa = LoadImage("Masalentaa");
32    Image Jetpack = LoadImage("Jetpak");
33    Image Polttoaine = LoadImage("Euroshopper");
34    Image Plussa = LoadImage("ES plus");
35    Image Juusto = LoadImage("Juusto");
36    Image ruohikko = LoadImage("Maanpinta");
37    Image multa = LoadImage("Multa");
38    Image kallio = LoadImage("Kallio");
39    Image Kiitara = LoadImage("Kitara");
40    Image masahakkaaOikea = LoadImage("Masakitara");
41    Image masahakkaaOikeaPAM = LoadImage("MasakitaraPAM");
42    Image tausta = LoadImage("Tausta");
43    Image luolaTausta = LoadImage("Luola tausta");
44    Image vuoretTausta = LoadImage("Taustavuoret");
45    Image lootikko = LoadImage("Laatikko");
46    Image masahakkaaVasen = LoadImage("MasakitaraVasen");
47    Image masahakkaaVasenTUM = LoadImage("MasakitaraTUM");
48    Image Maaali = LoadImage("Maali");
49    Image vasenlookku = LoadImage("Loukku toisin päin");
50    Image lookku = LoadImage("Loukku");
51    Image loukkuhyokkaus = LoadImage("Loukkuhyökkäys");
52    Image loukkuhyokkausvasen = LoadImage("LoukkuhyökkäysVasen");
53    Image isoloukkuhyokkausvasen = LoadImage("IsoLoukkuHyökkäysVasen");
54    Image loukkutör = LoadImage("PieniLoukkuTör");
55     
56    Image multaseina = LoadImage("Multa seinä");
57    Image lopetusnaytto = LoadImage("Loppu näyttö");
58    Image ylaosa = LoadImage("Yläosa");
59    Image alaosa = LoadImage("Alaosa");
60    Image ylaosator = LoadImage("YläosaTör");
61    Image alaosator = LoadImage("AlaosaTör");
62
63    Animation LentoAnimaatio;
64    // Image kyltti = LoadImage("Kyltti");
65
66    ExplosionSystem hajotus;
67    ExplosionSystem hajotus2;
68
69    bool masaKatsooOikealle = true;
70    bool masaLyo = false;
71
72    SoundEffect maaliAani = LoadSoundEffect("maali");
73    int kenttatilanne = 1;
74
75    bool SkipFrame = false;
76
77    public override void Begin()
78    {
79        Elama = new DoubleMeter(10);
80        Elama.MaxValue = 10;
81
82        aloitapeli(kenttatilanne);
83        lisaaKeppimittari();
84        lisaaElamamittari();
85     
86
87        hajotus = new ExplosionSystem(LoadImage("Lentävälauta"), 50);
88
89        Add(hajotus);
90
91        hajotus2 = new ExplosionSystem(LoadImage("Hammas"), 50);
92        hajotus2.MinScale = 35;
93        hajotus2.MaxScale = 35;
94        Add(hajotus2);
95    }
96
97    protected override void Update(Time time)
98    {
99        base.Update(time);
100
101        if (kepit.Value == 100)
102        {
103
104            Elama.MaxValue += 5;
105            Elama.Value = Elama.MaxValue;
106            kepit.Value = 0;
107        }
108       
109
110        if (!pelaaja1.IsDestroyed && pelaaja1 != null)
111        {
112            if (pelaaja1.Top < Level.Bottom)
113            {
114                pelaaja1.Destroy();
115                Begin();
116            }
117        }
118    }
119    void aloitapeli(int kenttanumero)
120    {
121        //ClearAll();
122        double esMaara = 0;
123        if (ESmittari != null) { esMaara = ESmittari.Value; }
124
125        double klapiMaara = 0;
126        if (kepit != null) { klapiMaara = kepit.Value; }
127
128        double enuMaara = 10;
129        if (Elama != null) { enuMaara = Elama.Value; }
130
131        ClearGameObjects();
132        lisaaElamamittari();
133        lisaaKeppimittari();
134
135        Gravity = new Vector(0, -2000);
136        if (kenttanumero == 0)
137        {
138            luoDebug();
139        }
140        if (kenttanumero == 1)
141        {
142            luoKentta();
143        }
144        if (kenttanumero == 2)
145        {
146            luokentta2();
147            lisaaESmittari(esMaara);
148        }
149        if (kenttanumero == 3)
150        {
151            luokentta3();
152            lisaaESmittari(esMaara);
153        }
154        if (kenttanumero == 4)
155        {
156            luokentta4();
157
158//            lisaaESmittari(esMaara);
159        }
160        lisaaNappaimet();
161
162        Camera.Follow(pelaaja1);
163        Camera.ZoomFactor = 1.2;
164        Camera.StayInLevel = true;
165
166    }
167
168    #region uusi kentänluonti
169
170    void LuoKentta(String kenttatiedosto, Color taustavari, Image taustakuva)
171    {
172        TileMap kentta = TileMap.FromFile(kenttatiedosto);
173        kentta.SetTileMethod('*', lisaaTahti);
174        kentta.SetTileMethod('M', lisaaPelaaja);
175        kentta.SetTileMethod('O', lisaaMaankamara);
176        kentta.SetTileMethod('S', lisaaMaa);
177        kentta.SetTileMethod('J', lisaaJetpak);
178        kentta.SetTileMethod('E', lisaaES);
179        kentta.SetTileMethod('L', lisaaLaatikko);
180        kentta.SetTileMethod('K', lisaaKitara);
181        kentta.SetTileMethod('m', lisaaMaali);
182        kentta.SetTileMethod('l', lisaaloukku);
183        kentta.SetTileMethod('t', lisaaMaali2);
184        kentta.SetTileMethod('j', lisaaJuusto);
185        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
186
187        Level.CreateBorders();
188        Level.BackgroundColor = Color.DarkBlue;
189        GameObject tausta = new GameObject(Screen.Width, Screen.Height);
190        tausta.Image = taustakuva;
191        Add(tausta, -2);
192        Level.Background.FitToLevel();
193        Layers[-2].RelativeTransition = new Vector(0.1, 0.1);
194    }
195
196    #endregion
197
198
199    #region Vanha kentänluonti
200    void luoDebug()
201    {
202        TileMap debug = TileMap.FromFile("Debug.txt");
203        debug.SetTileMethod('*', lisaaTahti);
204        debug.SetTileMethod('M', lisaaPelaaja);
205        debug.SetTileMethod('O', lisaaMaankamara);
206        debug.SetTileMethod('S', lisaaMaa);
207        debug.SetTileMethod('J', lisaaJetpak);
208        debug.SetTileMethod('E', lisaaES);
209        debug.SetTileMethod('L', lisaaLaatikko);
210        debug.SetTileMethod('K', lisaaKitara);
211        debug.SetTileMethod('m', lisaaMaali);
212        debug.SetTileMethod('l', lisaaloukku);
213        debug.SetTileMethod('t', lisaaMaali2);
214        debug.SetTileMethod('j', lisaaJuusto);
215        debug.SetTileMethod('I', lisaaIsoLoukku);
216        debug.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
217
218        Level.CreateBorders();
219        Level.BackgroundColor = Color.DarkBlue;
220        GameObject taustakuva = new GameObject(Screen.Width, Screen.Height);
221        taustakuva.Image = tausta;
222        Add(taustakuva, -2);
223        Level.Background.FitToLevel();
224        Layers[-2].RelativeTransition = new Vector(0.1, 0.1);
225    }
226    void luoKentta()
227    {
228        TileMap kentta = TileMap.FromFile("kentta1.txt");
229
230        kentta.SetTileMethod('*', lisaaTahti);
231        kentta.SetTileMethod('M', lisaaPelaaja);
232        kentta.SetTileMethod('O', lisaaMaankamara);
233        kentta.SetTileMethod('S', lisaaMaa);
234        kentta.SetTileMethod('J', lisaaJetpak);
235        kentta.SetTileMethod('E', lisaaES);
236        kentta.SetTileMethod('L', lisaaLaatikko);
237        kentta.SetTileMethod('K', lisaaKitara);
238        kentta.SetTileMethod('m', lisaaMaali);
239        kentta.SetTileMethod('l', lisaaloukku);
240        kentta.SetTileMethod('t', lisaaMaali2);
241        kentta.SetTileMethod('j', lisaaJuusto);
242        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
243
244        Level.CreateBorders();
245        Level.BackgroundColor = Color.DarkBlue;
246        GameObject taustakuva = new GameObject(Screen.Width, Screen.Height);
247        taustakuva.Image = tausta;
248        Add(taustakuva, -2);
249        Level.Background.FitToLevel();
250        Layers[-2].RelativeTransition = new Vector(0.1, 0.1);
251       
252       
253    }
254
255    void luokentta2()
256    {
257        TileMap kentta2 = TileMap.FromFile("kentta2.txt");
258
259        kentta2.SetTileMethod('*', lisaaTahti);
260        kentta2.SetTileMethod('M', lisaaPelaaja);
261        kentta2.SetTileMethod('O', lisaaMaankamara);
262        kentta2.SetTileMethod('S', lisaaMaa);
263        kentta2.SetTileMethod('J', lisaaJetpak);
264        kentta2.SetTileMethod('E', lisaaES);
265        kentta2.SetTileMethod('L', lisaaLaatikko);
266        kentta2.SetTileMethod('K', lisaaKitara);
267        kentta2.SetTileMethod('m', lisaaMaali);
268        kentta2.SetTileMethod('l', lisaaloukku);
269        kentta2.SetTileMethod('t', lisaaMaali2);
270        kentta2.SetTileMethod('k', lisaaKivi);
271        kentta2.SetTileMethod('s', lisaaSeina);
272        kentta2.SetTileMethod('j', lisaaJuusto);
273        kentta2.SetTileMethod('P', lisaaESplus);
274        kentta2.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
275
276        Level.CreateBorders();
277 
278
279
280        Level.BackgroundColor = Color.Charcoal;
281        GameObject taustakuva = new GameObject(Screen.Width, Screen.Height);
282        taustakuva.Image = luolaTausta;
283        Level.Background.FitToLevel();
284        Add(taustakuva, -2);
285       
286        Layers[-2].RelativeTransition = new Vector(0.1, 0.1);
287        Add(hajotus);
288        Add(hajotus2);
289    }
290
291    void luokentta3()
292    {
293        TileMap kentta3 = TileMap.FromFile("kentta2b.txt");
294
295        kentta3.SetTileMethod('*', lisaaTahti);
296        kentta3.SetTileMethod('M', lisaaPelaaja);
297        kentta3.SetTileMethod('O', lisaaMaankamara);
298        kentta3.SetTileMethod('S', lisaaMaa);
299        kentta3.SetTileMethod('J', lisaaJetpak);
300        kentta3.SetTileMethod('E', lisaaES);
301        kentta3.SetTileMethod('L', lisaaLaatikko);
302        kentta3.SetTileMethod('K', lisaaKitara);
303        kentta3.SetTileMethod('m', lisaaMaali);
304        kentta3.SetTileMethod('l', lisaaloukku);
305        kentta3.SetTileMethod('t', lisaaMaali2);
306        kentta3.SetTileMethod('k', lisaaKivi);
307        kentta3.SetTileMethod('s', lisaaSeina);
308        kentta3.SetTileMethod('j', lisaaJuusto);
309        kentta3.SetTileMethod('r', lisaaKallio);
310        kentta3.SetTileMethod('P', lisaaESplus);
311        kentta3.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
312
313        kentta3.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
314
315        PhysicsObject vasenReuna = Level.CreateLeftBorder();
316        vasenReuna.IsVisible = false;
317
318        PhysicsObject oikeaReuna = Level.CreateRightBorder();
319        oikeaReuna.IsVisible = false;
320
321        PhysicsObject ylaReuna = Level.CreateTopBorder();
322        ylaReuna.IsVisible = false;
323
324        Level.BackgroundColor = Color.DarkBlue;
325        GameObject taustakuva = new GameObject(Screen.Width, Screen.Height);
326        taustakuva.Image = vuoretTausta;
327        Level.Background.FitToLevel();
328        Add(taustakuva, -2);
329        Layers[-2].RelativeTransition = new Vector(0.1, 0.1);
330        Add(hajotus);
331        Add (hajotus2);
332    }
333
334    void luokentta4()
335    {
336        Level.BackgroundColor = Color.White;
337        GameObject taustakuva = new GameObject(Screen.Width, Screen.Height);
338        taustakuva.Image = lopetusnaytto;
339        Level.Background.FitToLevel();
340        Add(taustakuva, -2);
341        Layers[-2].RelativeTransition = new Vector(0.1, 0.1);
342    }
343
344    #endregion
345
346    void lisaaKivi(Vector paikka, double leveys, double korkeus)
347    {
348        PhysicsObject kivi = PhysicsObject.CreateStaticObject(50, 50);
349        kivi.Image = Kivi;
350        kivi.Tag = "KIVI";
351        kivi.Position = paikka;
352        Add(kivi);
353    }
354
355    void lisaaSeina(Vector paikka, double leveys, double korkeus)
356    {
357        PhysicsObject seina = PhysicsObject.CreateStaticObject(400, 800);
358        seina.IgnoresCollisionResponse = true;
359        seina.Image = multaseina;
360        seina.Tag = "Seina";
361        seina.Position = paikka;
362
363        Add(seina, -1);
364    }
365   
366    void lisaaJuusto(Vector paikka, double leveys, double korkeus)
367    {
368        PhysicsObject juusto = PhysicsObject.CreateStaticObject(90, 70);
369        juusto.IgnoresCollisionResponse = true;
370        juusto.Image = Juusto;
371        juusto.Tag = "Juusto";
372        juusto.Position = paikka;
373        Add(juusto);
374    }
375
376    void lisaaESplus(Vector paikka, double leveys, double korkeus)
377    {
378        PhysicsObject ESplus = PhysicsObject.CreateStaticObject(90, 90);
379        ESplus.IgnoresCollisionResponse = true;
380        ESplus.Image = Plussa;
381        ESplus.Tag = "ESplus";
382        ESplus.Position = paikka;
383        Add(ESplus);
384    }
385
386    void lisaaLaatikko(Vector paikka, double leveys, double korkeus)
387    {
388        PhysicsObject laatikko = PhysicsObject.CreateStaticObject(200, 200);
389        laatikko.Image = lootikko;
390        laatikko.Tag = "laatikko";
391        laatikko.Position = paikka;
392        Add(laatikko);
393    }
394
395    void lisaaloukku(Vector paikka, double leveys, double korkeus)
396    {
397        PhysicsObject loukku = new PhysicsObject(110, 115);
398        loukku.Image = vasenlookku;
399        loukku.IgnoresCollisionResponse = true;
400        loukku.IgnoresGravity = true;
401        loukku.Tag = "vasenloukku";
402        loukku.Shape = Shape.FromImage(vasenlookku);
403
404        Timer vartiointi = new Timer();
405        vartiointi.Interval = 0.1;
406        vartiointi.Timeout += delegate { vihollishyokkaus(loukku, vartiointi); };
407        vartiointi.Start();
408        AddCollisionHandler(loukku, delegate(PhysicsObject l, PhysicsObject kohde) { LoukkuOsuu(loukku, kohde, vartiointi); });
409        loukku.Position = paikka;
410        Add(loukku);
411    }
412
413    void lisaaIsoLoukku(Vector paikka, double leveys, double korkeus)
414    {
415        PhysicsObject isoLoukku = new PhysicsObject(350, 350);
416        isoLoukku.Image = vasenlookku;
417        isoLoukku.IgnoresCollisionResponse = true;
418        isoLoukku.IgnoresGravity = true;
419        isoLoukku.Tag = "isoVasenLoukku";
420        isoLoukku.Shape = Shape.FromImage(vasenlookku);
421
422        Timer isoVartiointi = new Timer();
423        isoVartiointi.Interval = 0.1;
424        isoVartiointi.Timeout += delegate { isoVihollishyokkaus(isoLoukku, isoVartiointi); };
425        isoVartiointi.Start();
426        //AddCollisionHandler(isoLoukku, delegate(PhysicsObject l, PhysicsObject kohde) { isoLoukkuOsuu(isoLoukku, kohde, isoVartiointi); });
427        isoLoukku.Position = paikka;
428        Add(isoLoukku, 3);
429
430    }
431
432    void lisaaoikealoukku(Vector paikka, double leveys, double korkeus)
433    {
434        PhysicsObject oikealoukku = PhysicsObject.CreateStaticObject(60, 60);
435        oikealoukku.Image = lookku;
436        oikealoukku.Tag = "loukku";
437        oikealoukku.Position = paikka;
438        Add(oikealoukku);
439    }
440    void lisaaKitara(Vector paikka, double leveys, double korkeus)
441    {
442        PhysicsObject kitara = PhysicsObject.CreateStaticObject(65, 120);
443        kitara.IgnoresCollisionResponse = true;
444        kitara.Image = Kiitara;
445        kitara.Tag = "Kitara";
446        kitara.Position = paikka;
447        Add(kitara);
448    }
449
450    void lisaaTahti(Vector paikka, double leveys, double korkeus)
451    {
452        PhysicsObject tahti = PhysicsObject.CreateStaticObject(70, 60);
453        tahti.IgnoresCollisionResponse = true;
454        tahti.Shape = Shape.FromImage(tahtiKuva);
455        tahti.Image = tahtiKuva;
456        tahti.Tag = "tahti";
457        tahti.Position = paikka;
458        Add(tahti);
459    }
460
461    void lisaaMaankamara(Vector paikka, double leveys, double korkeus)
462    {
463        PhysicsObject maankamara = PhysicsObject.CreateStaticObject(40, 40);
464        maankamara.Image = ruohikko;
465        maankamara.Position = paikka;
466        maankamara.Tag = "maankamara";
467        Add(maankamara);
468    }
469
470    void lisaaMaa(Vector paikka, double leveys, double korkeus)
471    {
472        PhysicsObject maa = PhysicsObject.CreateStaticObject(40, 40);
473        maa.Image = multa;
474        maa.Position = paikka;
475        maa.Tag = "maa";
476        Add(maa);
477    }
478    void lisaaKallio(Vector paikka, double leveys, double korkeus)
479    {
480        PhysicsObject Kallio = PhysicsObject.CreateStaticObject(40, 40);
481        Kallio.Image = kallio;
482        Kallio.Position = paikka;
483        Kallio.Tag = "Kallio";
484        Add(Kallio);
485    }
486
487    void lisaaJetpak(Vector paikka, double leveys, double korkeus)
488    {
489        PhysicsObject jetpak = PhysicsObject.CreateStaticObject(65, 90);
490        jetpak.IgnoresCollisionResponse = true;
491        jetpak.Image = Jetpack;
492        jetpak.Tag = "jetpak";
493        jetpak.Position = paikka;
494        Add(jetpak);
495    }
496
497    void lisaaES(Vector paikka, double leveys, double korkeus)
498    {
499        PhysicsObject es = PhysicsObject.CreateStaticObject(40, 80);
500        es.Image = Polttoaine;
501        es.IgnoresCollisionResponse = true;
502        es.Tag = "ES";
503        es.Position = paikka;
504        Add(es);
505    }
506
507    void lisaaMaali(Vector paikka, double leveys, double korkeus)
508    {
509        PhysicsObject maali = PhysicsObject.CreateStaticObject(100, 120);
510        maali.IgnoresCollisionResponse = true;
511        maali.Shape = Shape.FromImage(Maaali);
512        maali.Image = Maaali;
513        maali.Tag = "Maali";
514        maali.Position = paikka;
515        Add(maali);
516    }
517
518    void lisaaMaali2(Vector paikka, double leveys, double korkeus)
519    {
520        PhysicsObject Maali2 = PhysicsObject.CreateStaticObject(100, 120);
521        Maali2.IgnoresCollisionResponse = true;
522        Maali2.Shape = Shape.FromImage(Maaali);
523        Maali2.Image = Maaali;
524        Maali2.Tag = "Maali2";
525        Maali2.Position = paikka;
526        Add(Maali2);
527    }
528
529    void lisaaPelaaja(Vector paikka, double leveys, double korkeus)
530    {
531        pelaaja1 = new PlatformCharacter(80, 120);
532        pelaaja1.CollisionIgnoreGroup = 1;
533        pelaaja1.Tag = "pelaaja";
534        PelaajanAnimaatiot();
535        pelaaja1.Mass = 4.0;
536        AddCollisionHandler(pelaaja1, osuTahteen);
537        AddCollisionHandler(pelaaja1, osuJetpakiin);
538        AddCollisionHandler(pelaaja1, "laatikko", osuLaatikkoon);
539        AddCollisionHandler(pelaaja1, osuKitaraan);
540        AddCollisionHandler(pelaaja1, osuMaaliin);
541        AddCollisionHandler(pelaaja1, osuToiseenMaaliin);
542        AddCollisionHandler(pelaaja1, "Juusto", CollisionHandler.AddMeterValue(Elama, 5));
543        AddCollisionHandler(pelaaja1, "Juusto", CollisionHandler.DestroyTarget);
544       
545        if (onkoJetPak)
546        {
547            AddCollisionHandler(pelaaja1, osuES);
548        }
549
550
551
552        AddCollisionHandler(pelaaja1, osuLoukkuun);
553        AddCollisionHandler(pelaaja1, osuIsoonLoukkuun);
554        //pelaaja1.Shape = Shape.Circle;
555        pelaaja1.Position = paikka;
556        Add(pelaaja1, 1);
557    }
558
559    void PelaajanAnimaatiot()
560    {
561        pelaaja1.AnimWalk = new Animation(pelaajanKavelykuvatOikea);
562        pelaaja1.AnimWalk.FPS = 10;
563        pelaaja1.AnimIdle = new Animation(pelaajanKuvaOikea);
564        pelaaja1.AnimIdle.FPS = 1;
565
566        SkipFrame = true;
567
568        Image[] lento = new Image[]{Pelaajalentaa};
569
570        LentoAnimaatio = new Animation(lento);
571
572    }
573
574    void lisaaNappaimet()
575    {
576        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
577        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
578
579        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
580        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
581        Keyboard.Listen(Key.Space, ButtonState.Down, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
582        if (onkoJetPak)
583        {
584            Keyboard.Listen(Key.Up, ButtonState.Down, kaytajetpak, "Käyttää Jetpakiä", pelaaja1, lentonopeus);
585            Keyboard.Listen(Key.Up, ButtonState.Released, PelaajanAnimaatiot, "Lopettaa lennon");
586
587            ControllerOne.Listen(Button.DPadUp, ButtonState.Down, kaytajetpak, "Käyttää Jetpakiä", pelaaja1, lentonopeus);
588            ControllerOne.Listen(Button.DPadUp, ButtonState.Released, PelaajanAnimaatiot, "Lopettaa lennon");
589        }
590
591        ControllerOne.Listen(Button.DPadDown, ButtonState.Pressed, hakkaa, "Hakkaa kitaralla", pelaaja1);
592        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
593        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
594        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
595        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
596    }
597
598    void lisaaESmittari(double esMaara)
599    {
600        ESmittari = LuoESmittari(600, 500, esMaara);
601        Label ES = new Label("ES");
602        ES.X = 300;
603        ES.Y = 380;
604        ES.TextColor = Color.LightGreen;
605        ES.BorderColor = Color.Blue;
606        ES.Color = Color.DarkBlue;
607
608        Add(ES);
609    }
610
611    DoubleMeter LuoESmittari(double x, double y, double esMaara)
612    {
613        DoubleMeter mittari = new DoubleMeter(esMaara);
614        Label naytto = new Label();
615        naytto.BindTo(mittari);
616        naytto.X = 300;
617        naytto.Y = 350;
618        naytto.TextColor = Color.LightGreen;
619        naytto.BorderColor = Color.Blue;
620        naytto.Color = Color.DarkBlue;
621        mittari.MaxValue = 20;
622        Add(naytto);
623        return mittari;
624
625
626
627    }
628    void lisaaKeppimittari()
629    {
630       
631        Label klapit = new Label("Klapit");
632        klapit.X = -300;
633        klapit.Y = 380;
634        klapit.TextColor = Color.LightGreen;
635        klapit.BorderColor = Color.Blue;
636        klapit.Color = Color.DarkBlue;
637        Add(klapit);
638
639        LuoKeppiMittari();
640    }
641
642    void LuoKeppiMittari()
643    {
644       
645        Label keppinaytto = new Label();
646        keppinaytto.BindTo(kepit);
647        keppinaytto.X = -300;
648        keppinaytto.Y = 350;
649        keppinaytto.TextColor = Color.LightGreen;
650        keppinaytto.BorderColor = Color.Blue;
651        keppinaytto.Color = Color.DarkBlue;
652
653        Add(keppinaytto);
654
655       
656    }
657
658    void lisaaElamamittari()
659    {
660        Label enu = new Label("Terveys");
661        enu.X = 0;
662        enu.Y = 380;
663        enu.TextColor = Color.LightGreen;
664        enu.BorderColor = Color.Blue;
665        enu.Color = Color.DarkBlue;
666        Add(enu);
667
668        LuoElamaMittari();
669    }
670
671    void LuoElamaMittari()
672    {
673        Label nautto = new Label();
674        nautto.BindTo(Elama);
675        nautto.X = 0;
676        nautto.Y = 350;
677        nautto.TextColor = Color.LightGreen;
678        nautto.BorderColor = Color.Blue;
679        nautto.Color = Color.DarkBlue;
680        Add(nautto);
681    }
682
683    void kaytajetpak(PlatformCharacter hahmo, double nopeus)
684    {
685        if (ESmittari.Value > 0.0)
686        {
687            hahmo.Push(new Vector(0, nopeus));
688            ESmittari.Value -= 0.035;
689            pelaaja1.AnimWalk = null;
690            /*
691            pelaaja1.LeftWalkingAnimation = null;
692            pelaaja1.RightWalkingAnimation = null;
693             */
694            pelaaja1.AnimIdle = null;
695            pelaaja1.PlayAnimation(LentoAnimaatio);
696            /*
697            pelaaja1.RightIdleAnimation = null;
698            pelaaja1.LeftIdleAnimation = null;
699            pelaaja1.Animation = new Animation(Pelaajalentaa);
700            pelaaja1.Animation.Start();
701             */
702        }
703    }
704
705    void hakkaa(PlatformCharacter hahmo)
706    {
707        pelaaja1.Width = 170;
708
709        pelaaja1.AnimIdle = null;
710        pelaaja1.AnimWalk = null;
711
712       
713        pelaaja1.Image = masahakkaaOikea;
714        pelaaja1.Shape = Shape.FromImage(masahakkaaOikea);
715        Timer.SingleShot(0.15, ajastinlaukesi);
716    }
717
718    void ajastinlaukesi()
719    {
720     
721        pelaaja1.Image = masahakkaaOikeaPAM;
722        pelaaja1.Shape = Shape.FromImage(masahakkaaOikeaPAM);
723        masaLyo = true;
724        Timer.SingleShot(0.15, toinenAjastinlaukesi);
725
726    }
727
728    void toinenAjastinlaukesi()
729    {
730
731        pelaaja1.Animation = null;
732        PelaajanAnimaatiot();
733        masaLyo = false;
734        pelaaja1.Width = 75;
735        pelaaja1.Shape = Shape.Circle;
736
737
738    }
739
740    void liikuta(PlatformCharacter hahmo, double nopeus)
741    {
742        if (!SkipFrame)
743        {
744            if (nopeus < 0)
745                masaKatsooOikealle = false;
746            else
747                masaKatsooOikealle = true;
748            hahmo.Walk(nopeus);
749        }
750        else SkipFrame = false;
751        if (masaKatsooOikealle)
752        {
753            pelaaja1.Shape = Shape.FromImage(pelaajanKuvaOikea);
754        }
755        else
756        {
757            pelaaja1.Shape = Shape.FromImage(pelaajanKuvaVasen);
758        }
759    }
760    IntMeter hyppyvoima = new IntMeter(18);
761    void hyppaa(PlatformCharacter hahmo, double nopeus)
762    {
763        //hahmo.Jump(nopeus);
764        if (hahmo.Jump(nopeus)) hyppyvoima = new IntMeter(18);
765        else if (hyppyvoima.Value-- > 0) hahmo.ForceJump(35);
766    }
767    void vihollishyokkaus(PhysicsObject loukku, Timer ajastin)
768    {
769        // pelaajan pitää olla loukun vasemmalla puolella 300:n päässä
770        if (loukku.X - pelaaja1.X > 0 && loukku.X - pelaaja1.X < 400 && loukku.Y - pelaaja1.Y < 140 && loukku.Y - pelaaja1.Y > -140)
771        {
772            if (loukku.Image == vasenlookku)
773            {
774                // loukkua pitää nostaa hieman kun alottaa hyökkäyksen,
775                // jottei raavi maata ja jää jumiin
776                loukku.Y = loukku.Y + 25;
777            }
778
779            loukku.Velocity = new Vector(-1000, 0);
780            loukku.Shape = Shape.FromImage(loukkuhyokkausvasen);
781            loukku.Height = 150;
782            loukku.Image = loukkuhyokkausvasen;
783        }
784    }
785
786    void isoVihollishyokkaus(PhysicsObject isoLoukku, Timer ajastin)
787    {
788        if (  hyokkayskaynnissa == false && isoLoukku.X - pelaaja1.X > 0 && isoLoukku.X - pelaaja1.X < 550 && isoLoukku.Y - pelaaja1.Y < 540 && isoLoukku.Y - pelaaja1.Y > -300)
789        {
790
791            hyokkayskaynnissa = true;
792            PhysicsObject Ylaosa = new PhysicsObject(400, 100);
793            Ylaosa.IgnoresCollisionResponse = true;
794            Ylaosa.IgnoresGravity = true;
795            Ylaosa.Velocity = new Vector(-650, 0);
796            Ylaosa.Image = ylaosa;
797            Ylaosa.Shape = Shape.FromImage(ylaosator);
798            Ylaosa.Tag = "Ylaosa";
799            Ylaosa.X = isoLoukku.X -= 0;
800            Ylaosa.Y = isoLoukku.Y += 300;
801            Add(Ylaosa, 3);
802            PhysicsObject Alaosa = new PhysicsObject(400,150);
803            Alaosa.Shape = Shape.FromImage(alaosator);
804            Alaosa.Image = alaosa;
805            Alaosa.Velocity = new Vector(-650, 0);
806            Alaosa.IgnoresCollisionResponse = true;
807            Alaosa.IgnoresGravity = true;
808            Alaosa.Tag = "Alaosa";
809            Alaosa.X = isoLoukku.X;
810            Alaosa.Y = isoLoukku.Y - 400;
811            Add (Alaosa, 3);
812
813            isoLoukku.X += 8;
814            isoLoukku.Y -= 185;
815            isoLoukku.Velocity = new Vector(-650, 0);
816           
817            isoLoukku.Height = 280;
818            isoLoukku.Width = 400;
819            isoLoukku.Image = isoloukkuhyokkausvasen;
820           
821
822           
823        }
824    }
825
826    void osuTahteen(PhysicsObject hahmo, PhysicsObject kohde)
827    {
828        if (kohde.Tag.ToString() == "tahti")
829        {
830            kepit.Value += 1;
831            kohde.Destroy();
832        }
833
834    }
835    void osuPlussaan(PhysicsObject hahmo, PhysicsObject kohde)
836    {
837      //  if (kohde.Tag.ToString() == "ESplus")
838        //{
839          //  mittari.MaxValue += 10;
840
841 //       }
842    }
843
844    void osuJuustoon(PhysicsObject hahmo, PhysicsObject kohde)
845    {
846        if (kohde.Tag.ToString() == "Juusto")
847        {
848            Elama.Value += 5;
849            kohde.Destroy();
850        }
851    }
852
853    void osuLoukkuun(PhysicsObject hahmo, PhysicsObject kohde)
854    {
855        if (kohde.Tag.ToString() == "vasenloukku" && (masaLyo == true) || (kohde.Tag.ToString() == "loukkuJumissa" && (masaLyo == true)))
856        {
857           
858
859
860            int pMaara = 50;
861            double x = kohde.X;
862            double y = kohde.Y;
863
864            hajotus2.AddEffect(x, y, pMaara);
865            kohde.Destroy();
866        }
867        else if (kohde.Tag.ToString() == "vasenloukku")
868        {
869            Elama.Value -= 2.5;
870            Timer.SingleShot(0, delegate()
871            {
872                Keyboard.DisableAll();
873                pelaaja1.Velocity = new Vector(0, 0);
874
875            });
876            Timer.SingleShot(0.40, delegate()
877            {
878                Keyboard.EnableAll();
879            });
880        }
881
882
883        else if (kohde.Tag.ToString() == "loukku")
884        {
885            Elama.Value -= 2.5;
886        }
887        if (Elama.Value == 0)
888        {
889            //aloitapeli(kenttatilanne);
890            Begin();
891        }
892
893    }
894
895    void osuIsoonLoukkuun(PhysicsObject hahmo, PhysicsObject kohde)
896    {
897        if (kohde.Tag.ToString() == "Alaosa" || kohde.Tag.ToString() == "Ylaosa")
898        {
899            Elama.Value -= 3.5;
900            Timer.SingleShot (0, delegate()
901           
902           {
903            Keyboard.DisableAll();
904            pelaaja1.Velocity = new Vector(0, 0);
905           
906           });
907            Timer.SingleShot(0.40, delegate()
908            {
909                Keyboard.EnableAll();
910            });
911
912        }
913        if (Elama.Value <= 0)
914        {
915            Begin();
916        }
917    }
918
919    void LoukkuOsuu(PhysicsObject loukku, PhysicsObject kohde, Timer ajastin)
920    {
921        if (kohde != pelaaja1 && kohde.Tag != "maankamara" && kohde.Tag != "")
922        {
923            loukku.Velocity = new Vector(0, 0);
924            ajastin.Stop();
925
926
927            loukku.MakeStatic();
928            //loukku.Shape = Shape.Rectangle;
929            loukku.Shape = Shape.FromImage (loukkutör);
930            loukku.IgnoresCollisionResponse = false;
931            loukku.Tag = "loukkuJumissa";
932        }
933
934    }
935
936
937    void osuKitaraan(PhysicsObject hahmo, PhysicsObject kohde)
938    {
939        if (kohde.Tag.ToString() == "Kitara")
940        {
941            Label label = new Label("Masa majava: Kitara...mitä minä tällä tekisin? Soittaisin musiikkia?");
942            label.TextColor = Color.Black;
943            label.Color = Color.White;
944            Label label2 = new Label("Masa majava: Hei! Nyt keksin! Painamalla 'Alas' minä voisin...");
945            label2.TextColor = Color.Black;
946            label2.Color = Color.White;
947            Add(label);
948            Timer.SingleShot(4, delegate()
949            {
950                label.Destroy();
951                Add(label2);
952            }
953            );
954            Timer.SingleShot(8, label2.Destroy);
955
956            Keyboard.Listen(Key.Down, ButtonState.Pressed, hakkaa, "Hakkaa kitaralla", pelaaja1);
957            kohde.Destroy();
958        }
959    }
960
961    void osuLaatikkoon(PhysicsObject hahmo, PhysicsObject kohde)
962    {
963        if (!masaLyo) return;
964       
965
966
967        int pMaara = 50;
968        double x = kohde.X;
969        double y = kohde.Y;
970
971        hajotus.AddEffect(x, y, pMaara);
972
973
974        Label label = new Label("Masa majava: Siitäs sait, tyhmä loota.");
975        label.TextColor = Color.Black;
976        label.Color = Color.White;
977        Add(label);
978        Timer.SingleShot(3, delegate()
979        {
980            label.Destroy();
981        });
982
983
984        kohde.Destroy();
985    }
986
987
988    void osuJetpakiin(PhysicsObject hahmo, PhysicsObject kohde)
989    {
990        if (kohde.Tag.ToString() == "jetpak")
991        {
992            onkoJetPak = true;
993
994            Label label = new Label("Masa majava: Voi pojat, jetpack! Tällähän voi lentää painamalla 'Ylös'!");
995            label.TextColor = Color.Black;
996            label.Color = Color.White;
997            lisaaESmittari(0);
998
999            Label label2 = new Label("Masa majava: Siihen tarvitaan vain hieman ES polttoaineeksi!");
1000            label2.TextColor = Color.Black;
1001            label2.Color = Color.White;
1002            Add(label);
1003            Timer.SingleShot(3, delegate()
1004            {
1005                label.Destroy();
1006                Add(label2);
1007            }
1008            );
1009
1010            Timer.SingleShot(3, label2.Destroy);
1011            Label jetpak = new Label("ES");
1012            jetpak.X = 300;
1013            jetpak.Y = 380;
1014            jetpak.TextColor = Color.LightGreen;
1015            jetpak.BorderColor = Color.Blue;
1016            jetpak.Color = Color.DarkBlue;
1017            Add(jetpak);
1018
1019            kohde.Destroy();
1020            AddCollisionHandler(pelaaja1, osuES);
1021            Keyboard.Listen(Key.Up, ButtonState.Down, kaytajetpak, "Käyttää Jetpakiä", pelaaja1, lentonopeus);
1022            Keyboard.Listen(Key.Up, ButtonState.Released, PelaajanAnimaatiot, "Lopettaa lennon");
1023            ControllerOne.Listen(Button.DPadUp, ButtonState.Down, kaytajetpak, "Käyttää Jetpakiä", pelaaja1, lentonopeus);
1024            ControllerOne.Listen(Button.DPadUp, ButtonState.Released, PelaajanAnimaatiot, "Lopettaa lennon");
1025        }
1026    }
1027
1028    void osuES(PhysicsObject hahmo, PhysicsObject kohde)
1029    {
1030        if (kohde.Tag.ToString() == "ES")
1031        {
1032
1033           
1034            kohde.Destroy();
1035            ESmittari.Value += 5;
1036        }
1037    }
1038
1039    void osuMaaliin(PhysicsObject hahmo, PhysicsObject kohde)
1040    {
1041        if (kohde.Tag.ToString() == "Maali")
1042        {
1043            kenttatilanne += 1;
1044            aloitapeli(kenttatilanne);
1045        }
1046
1047
1048
1049    }
1050    void osuToiseenMaaliin(PhysicsObject hahmo, PhysicsObject kohde)
1051    {
1052        if (kohde.Tag.ToString() == "Maali2")
1053        {
1054            kenttatilanne += 2;
1055            aloitapeli(kenttatilanne);
1056        }
1057    }
1058    void osuKylttiin(PhysicsObject hahmo, PhysicsObject kohde)
1059    {
1060        if (kohde.Tag.ToString() == "Kyltti")
1061        {
1062            Label label = new Label("Kyltti: Ei pääsyä ellei sinulla ole jetpackiä. Et tule selviämään ilman sitä.");
1063            label.TextColor = Color.Black;
1064            label.Color = Color.White;
1065            Add(label);
1066            Label label2 = new Label("Masa majava: Mistä minä jetpakin tähän hätään saisin?");
1067            label2.TextColor = Color.Black;
1068            label2.Color = Color.White;
1069            Timer.SingleShot(3, delegate()
1070            {
1071                label.Destroy();
1072                Add(label2);
1073                Timer.SingleShot(3, delegate()
1074                {
1075                    label2.Destroy();
1076                });
1077            });
1078        }
1079    }
1080}
1081
Note: See TracBrowser for help on using the repository browser.