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

Revision 3676, 29.0 KB checked in by hesasnel, 11 years ago (diff)

Talletus.

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