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

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