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

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