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

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