source: 2013/27/HenrikS/Masa Majava/MasaMajavanMaailma/MasaMajavanMaailma/Peli.cs @ 4738

Revision 4738, 46.6 KB checked in by hesasnel, 6 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 Loukku : PhysicsObject
10{
11    public Timer HyokkaysTimer;
12
13    public Loukku(double leveys, double korkeus)
14        : base(leveys, korkeus)
15    {
16    }
17
18    public override void Destroy()
19    {
20        HyokkaysTimer.Stop();
21        base.Destroy();
22    }
23}
24
25public class Peli : PhysicsGame
26{
27    const double nopeus = 532;
28    const double hyppyNopeus = 1691;
29    const double lentonopeus = 21400;
30    const double leijuntanopeus = 1000;
31    const int RUUDUN_KOKO = 40;
32    bool jetPakKeratty = false;
33    bool onkoAse = false;
34
35    PlatformCharacter pelaaja1;
36    DoubleMeter ESmittari = new DoubleMeter(0);
37    DoubleMeter Elama;
38    int Liikeesto = 0;
39    IntMeter kepit = new IntMeter(0);
40
41    Image pelaajanKuvaOikea = LoadImage("Masaoikea");
42    Image[] pelaajanKavelykuvatOikea = LoadImages("Masaoikea", "Masajuoksuoikea");
43    Image[] pelaajanKavelykuvatVasen = LoadImages("Masavasen", "Masajuoksuvasen");
44    Image Kivi = LoadImage("Kivi");
45    Image tahtiKuva = LoadImage("tahti");
46    Image pelaajanKuvaVasen = LoadImage("Masavasen");
47    Image PelaajajuokseeOikea = LoadImage("Masajuoksuvasen");
48    Image PelaajajuokseeVasen = LoadImage("Masajuoksuoikea");
49    Image Pelaajalentaa = LoadImage("Masalentaa");
50    Image Jetpack = LoadImage("Jetpak");
51    Image Polttoaine = LoadImage("Euroshopper");
52    Image Plussa = LoadImage("ES plus");
53    Image Juusto = LoadImage("Juusto");
54    Image ruohikko = LoadImage("Maanpinta");
55    Image multa = LoadImage("Multa");
56    Image kallio = LoadImage("Kallio");
57    Image Kiitara = LoadImage("Kitara");
58    Image masahakkaaOikea = LoadImage("Masakitara");
59    Image masahakkaaOikeaPAM = LoadImage("MasakitaraPAM");
60    Image tausta = LoadImage("Tausta");
61    Image luolaTausta = LoadImage("Luola tausta");
62    Image vuoretTausta = LoadImage("Taustavuoret");
63    Image lootikko = LoadImage("Laatikko");
64    Image Kyltti = LoadImage("Kyltti");
65    Image masahakkaaVasen = LoadImage("MasakitaraVasen");
66    Image masahakkaaVasenTUM = LoadImage("MasakitaraTUM");
67    Image Maaali = LoadImage("Maali");
68    Image vasenlookku = LoadImage("Loukku toisin päin");
69    Image lookku = LoadImage("Loukku");
70    Image loukkuhyokkaus = LoadImage("Loukkuhyökkäys");
71    Image loukkuhyokkausvasen = LoadImage("LoukkuhyökkäysVasen");
72    Image isoloukkuhyokkausvasen = LoadImage("IsoLoukkuHyökkäysVasen");
73    Image loukkutör = LoadImage("PieniLoukkuTör");
74
75    Image multaseina = LoadImage("Multa seinä");
76    Image lopetusnaytto = LoadImage("Loppu näyttö");
77    Image ylaosa = LoadImage("Yläosa");
78    Image alaosa = LoadImage("Alaosa");
79    Image ylaosator = LoadImage("YläosaTör");
80    Image alaosator = LoadImage("AlaosaTör");
81
82    Animation LentoAnimaatio;
83    // Image kyltti = LoadImage("Kyltti");
84
85    ListenContext jetPackOhjaimet;
86    ListenContext normaaliOhjaus;
87
88    ExplosionSystem hajotus;
89    ExplosionSystem hajotus2;
90
91    bool masaKatsooOikealle = true;
92    bool onkoilmassa = false;
93
94    SoundEffect maaliAani = LoadSoundEffect("maali");
95    int kenttatilanne = 0;
96
97    bool SkipFrame = false;
98
99    public override void Begin()
100    {
101        SetWindowSize(1024, 768, true);
102        UusiPeli();
103    }
104
105    public void UusiPeli()
106    {
107        Elama = new DoubleMeter(10);
108        Elama.MaxValue = 10;
109
110        aloitapeli(kenttatilanne);
111        lisaaKeppimittari();
112        lisaaElamamittari();
113
114        hajotus = new ExplosionSystem(LoadImage("Lentävälauta"), 50);
115
116        Add(hajotus);
117
118        hajotus2 = new ExplosionSystem(LoadImage("Hammas"), 50);
119        hajotus2.MinScale = 35;
120        hajotus2.MaxScale = 35;
121        Add(hajotus2);
122    }
123
124    protected override void Update(Time time)
125    {
126        base.Update(time);
127
128        if (kepit.Value == 100)
129        {
130
131            Elama.MaxValue += 5;
132            Elama.Value = Elama.MaxValue;
133            kepit.Value = 0;
134        }
135
136
137        if (!pelaaja1.IsDestroyed && pelaaja1 != null)
138        {
139            if (pelaaja1.Top < Level.Bottom)
140            {
141                pelaaja1.Destroy();
142                UusiPeli();
143            }
144        }
145
146    }
147
148    void aloitapeli(int kenttanumero)
149    {
150
151        //ClearAll();
152        double esMaara = 0;
153        if (ESmittari != null) { esMaara = ESmittari.Value; }
154
155        double klapiMaara = 0;
156        if (kepit != null) { klapiMaara = kepit.Value; }
157
158        double enuMaara = 10;
159        if (Elama != null) { enuMaara = Elama.Value; }
160
161        ClearControls();
162        ClearGameObjects();
163        lisaaElamamittari();
164        lisaaKeppimittari();
165        PoistaIsotLoukut();
166
167        Gravity = new Vector(0, -2800);
168        if (kenttanumero == 0)
169        {
170            luoDebug();
171        }
172        if (kenttanumero == 1)
173        {
174            luoKentta();
175        }
176        if (kenttanumero == 2)
177        {
178            luokentta2();
179            lisaaESmittari(esMaara);
180        }
181        if (kenttanumero == 3)
182        {
183            luokentta3();
184            lisaaESmittari(esMaara);
185        }
186        if (kenttanumero == 4)
187        {
188            luokentta4();
189        }
190        LisaaNappaimet();
191
192        if (jetPakKeratty)
193            jetPackOhjaimet.Enable();
194
195        Camera.Follow(pelaaja1);
196        Camera.ZoomFactor = 1.2;
197        Camera.StayInLevel = true;
198       
199    }
200
201    private void PoistaIsotLoukut()
202    {
203        foreach (var loukku in GetObjectsWithTag("isoVasenLoukku"))
204        {
205            loukku.Destroy();
206        }
207    }
208
209
210    #region uusi kentänluonti
211
212    void LuoKentta(String kenttatiedosto, Color taustavari, Image taustakuva)
213    {
214        TileMap kentta = TileMap.FromFile(kenttatiedosto);
215        kentta.SetTileMethod('*', lisaaTahti);
216        kentta.SetTileMethod('M', lisaaPelaaja);
217        kentta.SetTileMethod('O', lisaaMaankamara);
218        kentta.SetTileMethod('S', lisaaMaa);
219        kentta.SetTileMethod('J', lisaaJetpak);
220        kentta.SetTileMethod('E', lisaaES);
221        kentta.SetTileMethod('L', lisaaLaatikko);
222        kentta.SetTileMethod('K', lisaaKitara);
223        kentta.SetTileMethod('m', lisaaMaali);
224        kentta.SetTileMethod('l', lisaaloukku);
225        kentta.SetTileMethod('t', lisaaMaali2);
226        kentta.SetTileMethod('j', lisaaJuusto);
227        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
228
229        Level.CreateBorders();
230        Level.BackgroundColor = Color.DarkBlue;
231        GameObject tausta = new GameObject(Screen.Width, Screen.Height);
232        tausta.Image = taustakuva;
233        Add(tausta, -2);
234        Level.Background.FitToLevel();
235        Layers[-2].RelativeTransition = new Vector(0.1, 0.1);
236    }
237
238    #endregion
239
240    #region Vanha kentänluonti
241    void luoDebug()
242    {
243        TileMap debug = TileMap.FromFile("Debug.txt");
244        debug.SetTileMethod('*', lisaaTahti);
245        debug.SetTileMethod('M', lisaaPelaaja);
246        debug.SetTileMethod('O', lisaaMaankamara);
247        debug.SetTileMethod('S', lisaaMaa);
248        debug.SetTileMethod('J', lisaaJetpak);
249        debug.SetTileMethod('E', lisaaES);
250        debug.SetTileMethod('L', lisaaLaatikko);
251        debug.SetTileMethod('K', lisaaKitara);
252        debug.SetTileMethod('m', lisaaMaali);
253        debug.SetTileMethod('l', lisaaloukku);
254        debug.SetTileMethod('t', lisaaMaali2);
255        debug.SetTileMethod('j', lisaaJuusto);
256        debug.SetTileMethod('I', lisaaIsoLoukku);
257        debug.SetTileMethod('k', lisaakyltti);
258        debug.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
259
260        Level.CreateBorders();
261        Level.BackgroundColor = Color.DarkBlue;
262        GameObject taustakuva = new GameObject(Screen.Width, Screen.Height);
263        taustakuva.Image = tausta;
264        Add(taustakuva, -2);
265        Level.Background.FitToLevel();
266        Layers[-2].RelativeTransition = new Vector(0.1, 0.1);
267    }
268    void luoKentta()
269    {
270        TileMap kentta = TileMap.FromFile("kentta1.txt");
271
272        kentta.SetTileMethod('*', lisaaTahti);
273        kentta.SetTileMethod('M', lisaaPelaaja);
274        kentta.SetTileMethod('O', lisaaMaankamara);
275        kentta.SetTileMethod('S', lisaaMaa);
276        kentta.SetTileMethod('J', lisaaJetpak);
277        kentta.SetTileMethod('E', lisaaES);
278        kentta.SetTileMethod('L', lisaaLaatikko);
279        kentta.SetTileMethod('K', lisaaKitara);
280        kentta.SetTileMethod('m', lisaaMaali);
281        kentta.SetTileMethod('l', lisaaloukku);
282        kentta.SetTileMethod('t', lisaaMaali2);
283        kentta.SetTileMethod('j', lisaaJuusto);
284        kentta.SetTileMethod('I', lisaaIsoLoukku);
285        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
286
287        Level.CreateBorders();
288        Level.BackgroundColor = Color.DarkBlue;
289        GameObject taustakuva = new GameObject(Screen.Width, Screen.Height);
290        taustakuva.Image = tausta;
291        Add(taustakuva, -2);
292        Level.Background.FitToLevel();
293        Layers[-2].RelativeTransition = new Vector(0.1, 0.1);
294
295
296    }
297
298    void luokentta2()
299    {
300        TileMap kentta2 = TileMap.FromFile("kentta2a.txt");
301
302        kentta2.SetTileMethod('*', lisaaTahti);
303        kentta2.SetTileMethod('M', lisaaPelaaja);
304        kentta2.SetTileMethod('O', lisaaMaankamara);
305        kentta2.SetTileMethod('S', lisaaMaa);
306        kentta2.SetTileMethod('J', lisaaJetpak);
307        kentta2.SetTileMethod('E', lisaaES);
308        kentta2.SetTileMethod('L', lisaaLaatikko);
309        kentta2.SetTileMethod('K', lisaaKitara);
310        kentta2.SetTileMethod('m', lisaaMaali);
311        kentta2.SetTileMethod('l', lisaaloukku);
312        kentta2.SetTileMethod('t', lisaaMaali2);
313        kentta2.SetTileMethod('R', lisaaKivi);
314        kentta2.SetTileMethod('s', lisaaSeina);
315        kentta2.SetTileMethod('j', lisaaJuusto);
316        kentta2.SetTileMethod('P', lisaaESplus);
317        kentta2.SetTileMethod('k', lisaakyltti);
318        kentta2.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
319
320        Level.CreateBorders();
321
322
323
324        Level.BackgroundColor = Color.Charcoal;
325        GameObject taustakuva = new GameObject(Screen.Width, Screen.Height);
326        taustakuva.Image = luolaTausta;
327        Level.Background.FitToLevel();
328        Add(taustakuva, -2);
329
330        Layers[-2].RelativeTransition = new Vector(0.1, 0.1);
331        Add(hajotus);
332        Add(hajotus2);
333    }
334
335    void luokentta3()
336    {
337        TileMap kentta3 = TileMap.FromFile("kentta2b.txt");
338
339        kentta3.SetTileMethod('*', lisaaTahti);
340        kentta3.SetTileMethod('M', lisaaPelaaja);
341        kentta3.SetTileMethod('O', lisaaMaankamara);
342        kentta3.SetTileMethod('S', lisaaMaa);
343        kentta3.SetTileMethod('J', lisaaJetpak);
344        kentta3.SetTileMethod('E', lisaaES);
345        kentta3.SetTileMethod('L', lisaaLaatikko);
346        kentta3.SetTileMethod('K', lisaaKitara);
347        kentta3.SetTileMethod('m', lisaaMaali);
348        kentta3.SetTileMethod('l', lisaaloukku);
349        kentta3.SetTileMethod('t', lisaaMaali2);
350        kentta3.SetTileMethod('R', lisaaKivi);
351        kentta3.SetTileMethod('s', lisaaSeina);
352        kentta3.SetTileMethod('j', lisaaJuusto);
353        kentta3.SetTileMethod('r', lisaaKallio);
354        kentta3.SetTileMethod('P', lisaaESplus);
355        kentta3.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
356
357        kentta3.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
358
359        PhysicsObject vasenReuna = Level.CreateLeftBorder();
360        vasenReuna.IsVisible = false;
361
362        PhysicsObject oikeaReuna = Level.CreateRightBorder();
363        oikeaReuna.IsVisible = false;
364
365        PhysicsObject ylaReuna = Level.CreateTopBorder();
366        ylaReuna.IsVisible = false;
367
368        Level.BackgroundColor = Color.DarkBlue;
369        GameObject taustakuva = new GameObject(Screen.Width, Screen.Height);
370        taustakuva.Image = vuoretTausta;
371        Level.Background.FitToLevel();
372        Add(taustakuva, -2);
373        Layers[-2].RelativeTransition = new Vector(0.1, 0.1);
374        Add(hajotus);
375        Add(hajotus2);
376    }
377
378    void luokentta4()
379    {
380        Level.BackgroundColor = Color.White;
381        GameObject taustakuva = new GameObject(Screen.Width, Screen.Height);
382        taustakuva.Image = lopetusnaytto;
383        Level.Background.FitToLevel();
384        Add(taustakuva, -2);
385        Layers[-2].RelativeTransition = new Vector(0.1, 0.1);
386    }
387
388    #endregion
389
390    void lisaaKivi(Vector paikka, double leveys, double korkeus)
391    {
392        PhysicsObject kivi = PhysicsObject.CreateStaticObject(50, 50);
393        kivi.Image = Kivi;
394        kivi.Tag = "KIVI";
395        kivi.Position = paikka;
396        Add(kivi);
397    }
398
399    void lisaaSeina(Vector paikka, double leveys, double korkeus)
400    {
401        PhysicsObject seina = PhysicsObject.CreateStaticObject(400, 800);
402        seina.IgnoresCollisionResponse = true;
403        seina.Image = multaseina;
404        seina.Tag = "Seina";
405        seina.Position = paikka;
406
407        Add(seina, -1);
408    }
409
410    void lisaaJuusto(Vector paikka, double leveys, double korkeus)
411    {
412        PhysicsObject juusto = PhysicsObject.CreateStaticObject(90, 70);
413        juusto.IgnoresCollisionResponse = true;
414        juusto.Image = Juusto;
415        juusto.Tag = "Juusto";
416        juusto.Position = paikka;
417        Add(juusto);
418    }
419
420    void lisaakyltti(Vector paikka, double leveys, double korkeus)
421    {
422        PhysicsObject kyltti = new PhysicsObject(85, 120);
423        kyltti.IgnoresGravity = true;
424        kyltti.IgnoresCollisionResponse = true;
425        kyltti.Image = Kyltti;
426        kyltti.Tag = "Kyltti";
427        kyltti.Position = paikka;
428
429
430        Add(kyltti);
431    }
432
433    void lisaaESplus(Vector paikka, double leveys, double korkeus)
434    {
435        PhysicsObject ESplus = new PhysicsObject(90, 90);
436        ESplus.IgnoresGravity = true;
437        ESplus.IgnoresCollisionResponse = true;
438        ESplus.Image = Plussa;
439        ESplus.Tag = "ESplus";
440        ESplus.Position = paikka;
441        Add(ESplus);
442    }
443
444    void lisaaLaatikko(Vector paikka, double leveys, double korkeus)
445    {
446        PhysicsObject laatikko = PhysicsObject.CreateStaticObject(200, 200);
447        laatikko.Image = lootikko;
448        laatikko.Tag = "laatikko";
449        laatikko.Position = paikka;
450        Add(laatikko);
451    }
452
453    void lisaaloukku(Vector paikka, double leveys, double korkeus)
454    {
455        PhysicsObject loukku = new PhysicsObject(110, 115);
456        loukku.Image = vasenlookku;
457        loukku.IgnoresCollisionResponse = true;
458        loukku.IgnoresGravity = true;
459        loukku.Tag = "vasenloukku";
460        loukku.Shape = Shape.FromImage(vasenlookku);
461
462        Timer vartiointi = new Timer();
463        vartiointi.Interval = 0.1;
464        vartiointi.Timeout += delegate { vihollishyokkaus(loukku, vartiointi); };
465        vartiointi.Start();
466        AddCollisionHandler(loukku, delegate(PhysicsObject l, PhysicsObject kohde) { LoukkuOsuu(loukku, kohde, vartiointi); });
467        loukku.Position = paikka;
468        Add(loukku);
469    }
470
471    void lisaaIsoLoukku(Vector paikka, double leveys, double korkeus)
472    {
473        Loukku isoLoukku = new Loukku(350, 350);
474        isoLoukku.Image = vasenlookku;
475        isoLoukku.IgnoresCollisionResponse = true;
476        isoLoukku.IgnoresGravity = true;
477        isoLoukku.Tag = "isoVasenLoukku";
478        isoLoukku.Shape = Shape.FromImage(vasenlookku);
479
480        Timer isoVartiointi = new Timer();
481        isoVartiointi.Interval = 0.1;
482        isoVartiointi.Timeout += delegate { isoVihollishyokkaus(isoLoukku); };
483        isoVartiointi.Start();
484        //AddCollisionHandler(isoLoukku, delegate(PhysicsObject l, PhysicsObject kohde) { isoLoukkuOsuu(isoLoukku, kohde, isoVartiointi); });
485        isoLoukku.Position = paikka;
486        Add(isoLoukku, 3);
487
488        isoLoukku.HyokkaysTimer = isoVartiointi;
489    }
490
491    void lisaaoikealoukku(Vector paikka, double leveys, double korkeus)
492    {
493        PhysicsObject oikealoukku = PhysicsObject.CreateStaticObject(60, 60);
494        oikealoukku.Image = lookku;
495        oikealoukku.Tag = "loukku";
496        oikealoukku.Position = paikka;
497        Add(oikealoukku);
498    }
499    void lisaaKitara(Vector paikka, double leveys, double korkeus)
500    {
501        if (onkoAse)
502        {
503            return;
504        }
505        PhysicsObject kitara = new PhysicsObject(65, 120);
506        kitara.IgnoresGravity = true;
507        kitara.IgnoresCollisionResponse = true;
508        kitara.Image = Kiitara;
509        kitara.Tag = "Kitara";
510        kitara.Position = paikka;
511        Add(kitara);
512    }
513
514    void lisaaTahti(Vector paikka, double leveys, double korkeus)
515    {
516        PhysicsObject tahti = new PhysicsObject(70, 60);
517        tahti.IgnoresGravity = true;
518        tahti.IgnoresCollisionResponse = true;
519        tahti.Shape = Shape.Rectangle;
520        tahti.Image = tahtiKuva;
521        tahti.Tag = "tahti";
522        tahti.Position = paikka;
523        Add(tahti);
524    }
525
526    void lisaaMaankamara(Vector paikka, double leveys, double korkeus)
527    {
528        PhysicsObject maankamara = PhysicsObject.CreateStaticObject(40, 40);
529        maankamara.Image = ruohikko;
530        maankamara.Position = paikka;
531        maankamara.Tag = "maankamara";
532        Add(maankamara);
533    }
534
535    void lisaaMaa(Vector paikka, double leveys, double korkeus)
536    {
537        PhysicsObject maa = PhysicsObject.CreateStaticObject(40, 40);
538        maa.Image = multa;
539        maa.Position = paikka;
540        maa.Tag = "maa";
541        Add(maa);
542    }
543    void lisaaKallio(Vector paikka, double leveys, double korkeus)
544    {
545        PhysicsObject Kallio = PhysicsObject.CreateStaticObject(40, 40);
546        Kallio.Image = kallio;
547        Kallio.Position = paikka;
548        Kallio.Tag = "Kallio";
549        Add(Kallio);
550    }
551
552    void lisaaJetpak(Vector paikka, double leveys, double korkeus)
553    {
554        if (jetPakKeratty)
555        {
556            return;
557        }
558
559        PhysicsObject jetpak = new PhysicsObject(65, 90);
560        jetpak.IgnoresGravity = true;
561        jetpak.IgnoresCollisionResponse = true;
562        jetpak.Image = Jetpack;
563        jetpak.Tag = "jetpak";
564        jetpak.Position = paikka;
565        Add(jetpak);
566
567    }
568
569    void lisaaES(Vector paikka, double leveys, double korkeus)
570    {
571        PhysicsObject es = new PhysicsObject(40, 80);
572        es.Image = Polttoaine;
573        es.IgnoresCollisionResponse = true;
574        es.IgnoresGravity = true;
575        es.Tag = "ES";
576        es.Position = paikka;
577        Add(es);
578    }
579
580    void lisaaMaali(Vector paikka, double leveys, double korkeus)
581    {
582        PhysicsObject maali = PhysicsObject.CreateStaticObject(100, 120);
583        maali.IgnoresCollisionResponse = true;
584        maali.Shape = Shape.FromImage(Maaali);
585        maali.Image = Maaali;
586        maali.Tag = "Maali";
587        maali.Position = paikka;
588        Add(maali);
589    }
590
591    void lisaaMaali2(Vector paikka, double leveys, double korkeus)
592    {
593        PhysicsObject Maali2 = PhysicsObject.CreateStaticObject(100, 120);
594        Maali2.IgnoresCollisionResponse = true;
595        Maali2.Shape = Shape.FromImage(Maaali);
596        Maali2.Image = Maaali;
597        Maali2.Tag = "Maali2";
598        Maali2.Position = paikka;
599        Add(Maali2);
600    }
601
602    void lisaaPelaaja(Vector paikka, double leveys, double korkeus)
603    {
604        pelaaja1 = new PlatformCharacter(80, 120);
605        pelaaja1.CollisionIgnoreGroup = 1;
606        pelaaja1.Tag = "pelaaja";
607        PelaajanAnimaatiot();
608        pelaaja1.Mass = 4.0;
609        AddCollisionHandler(pelaaja1, osuTahteen);
610        AddCollisionHandler(pelaaja1, osuJetpakiin);
611        AddCollisionHandler(pelaaja1, osuKitaraan);
612        AddCollisionHandler(pelaaja1, osuMaaliin);
613        AddCollisionHandler(pelaaja1, osuToiseenMaaliin);
614        AddCollisionHandler(pelaaja1, "Juusto", CollisionHandler.AddMeterValue(Elama, 5));
615        AddCollisionHandler(pelaaja1, "Juusto", CollisionHandler.DestroyTarget);
616        AddCollisionHandler(pelaaja1, osuKylttiin);
617        AddCollisionHandler(pelaaja1, maassa);
618
619
620        if (jetPakKeratty)
621        {
622            //jetPackOhjaimet.Enable();
623            AddCollisionHandler(pelaaja1, osuES);
624        }
625
626        AddCollisionHandler(pelaaja1, "loukku", osuLoukkuun);
627        AddCollisionHandler(pelaaja1, "vasenloukku", osuLoukkuun);
628        AddCollisionHandler(pelaaja1, osuIsoonLoukkuun);
629        //pelaaja1.Shape = Shape.Circle;
630        pelaaja1.Position = paikka;
631        Add(pelaaja1, 1);
632    }
633
634
635    void PelaajanAnimaatiot()
636    {
637        pelaaja1.AnimWalk = new Animation(pelaajanKavelykuvatOikea);
638        pelaaja1.AnimWalk.FPS = 10;
639        pelaaja1.AnimIdle = new Animation(pelaajanKuvaOikea);
640        pelaaja1.AnimIdle.FPS = 1;
641        //    pelaaja1.AnimFall = new Animation(pelaajanKuvaOikea);
642        //    pelaaja1.AnimFall.FPS = 1;
643        pelaaja1.Image = pelaajanKuvaOikea;
644
645        SkipFrame = true;
646
647        Image[] lento = new Image[] { Pelaajalentaa };
648
649        LentoAnimaatio = new Animation(lento);
650
651    }
652
653    void VaihdaResoluutio()
654    {
655        SetWindowSize(1280, 768, true);
656    }
657
658    void LisaaNappaimet()
659    {
660        jetPackOhjaimet = ControlContext.CreateSubcontext();
661        normaaliOhjaus = ControlContext.CreateSubcontext();
662
663        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
664        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
665
666        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus).InContext(normaaliOhjaus);
667        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus).InContext(normaaliOhjaus);
668        Keyboard.Listen(Key.X, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus).InContext(normaaliOhjaus);
669
670        Keyboard.Listen(Key.D1, ButtonState.Pressed, VaihdaResoluutio, "Vaihda resoluutio");
671
672        //if (jetPakKeratty)
673        //{
674
675            Keyboard.Listen(Key.X, ButtonState.Down, kaytajetpak, "Käyttää Jetpakiä", pelaaja1, lentonopeus, 0.035).InContext(jetPackOhjaimet);
676            Keyboard.Listen(Key.X, ButtonState.Released, PelaajanAnimaatiot, "Lopettaa lennon").InContext(jetPackOhjaimet);
677            ControllerOne.Listen(Button.A, ButtonState.Down, kaytajetpak, "Käyttää Jetpakiä", pelaaja1, lentonopeus, 0.035).InContext(jetPackOhjaimet);
678            ControllerOne.Listen(Button.A, ButtonState.Released, PelaajanAnimaatiot, "Lopettaa lennon").InContext(jetPackOhjaimet);
679
680
681
682        Keyboard.Listen(Key.Space, ButtonState.Pressed, delegate() { pelaaja1.Stop(); }, null).InContext(jetPackOhjaimet);
683        ControllerOne.Listen(Button.RightTrigger, ButtonState.Pressed, delegate() { pelaaja1.Stop(); }, null).InContext(jetPackOhjaimet);
684        ControllerOne.Listen(Button.RightShoulder, ButtonState.Pressed, delegate() { pelaaja1.Stop(); }, null).InContext(jetPackOhjaimet);
685        Keyboard.Listen(Key.Space, ButtonState.Down, leijunta, null, pelaaja1, true).InContext(jetPackOhjaimet);
686        ControllerOne.Listen (Button.RightTrigger, ButtonState.Down, leijunta, null, pelaaja1, true).InContext(jetPackOhjaimet);
687        ControllerOne.Listen (Button.RightShoulder, ButtonState.Down, leijunta, null, pelaaja1, true).InContext(jetPackOhjaimet);
688        Keyboard.Listen(Key.Space, ButtonState.Released, leijunta, null, pelaaja1, false).InContext(jetPackOhjaimet);
689        ControllerOne.Listen(Button.RightShoulder, ButtonState.Released, leijunta, null, pelaaja1, false).InContext(jetPackOhjaimet);
690        ControllerOne.Listen(Button.RightTrigger, ButtonState.Released, leijunta, null, pelaaja1, false).InContext(jetPackOhjaimet);
691
692        jetPackOhjaimet.Disable();
693
694        //}
695
696        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
697        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus).InContext(normaaliOhjaus);
698        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus).InContext(normaaliOhjaus);
699        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.114, liikutaTatilla, "Pelaaja liikkuu", pelaaja1, nopeus).InContext(normaaliOhjaus);
700        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus).InContext(normaaliOhjaus);
701       
702        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus).InContext(normaaliOhjaus);
703
704        normaaliOhjaus.Enable();
705
706        if ( onkoAse )
707        {
708            asetaAseKontrollit();
709        }
710    }
711
712    void lisaaESmittari(double esMaara)
713    {
714        ESmittari = LuoESmittari(600, 500, esMaara);
715        Label ES = new Label("Energiajuoma");
716        ES.X = 300;
717        ES.Y = 380;
718        ES.TextColor = Color.LightGreen;
719        ES.BorderColor = Color.Blue;
720        ES.Color = Color.DarkBlue;
721
722        Add(ES);
723    }
724
725    DoubleMeter LuoESmittari(double x, double y, double esMaara)
726    {
727        DoubleMeter mittari = new DoubleMeter(esMaara);
728        Label naytto = new Label();
729        naytto.BindTo(mittari);
730        naytto.X = 300;
731        naytto.Y = 350;
732        naytto.TextColor = Color.LightGreen;
733        naytto.BorderColor = Color.Blue;
734        naytto.Color = Color.DarkBlue;
735        mittari.MaxValue = 20;
736        Add(naytto);
737        return mittari;
738
739
740
741    }
742    void lisaaKeppimittari()
743    {
744
745        Label klapit = new Label("Klapit");
746        klapit.X = -300;
747        klapit.Y = 380;
748        klapit.TextColor = Color.LightGreen;
749        klapit.BorderColor = Color.Blue;
750        klapit.Color = Color.DarkBlue;
751        Add(klapit);
752
753        LuoKeppiMittari();
754    }
755
756    void LuoKeppiMittari()
757    {
758
759        Label keppinaytto = new Label();
760        keppinaytto.BindTo(kepit);
761        keppinaytto.X = -300;
762        keppinaytto.Y = 350;
763        keppinaytto.TextColor = Color.LightGreen;
764        keppinaytto.BorderColor = Color.Blue;
765        keppinaytto.Color = Color.DarkBlue;
766
767        Add(keppinaytto);
768
769    }
770
771    void lisaaElamamittari()
772    {
773        Label enu = new Label("Terveys");
774        enu.X = 0;
775        enu.Y = 380;
776        enu.TextColor = Color.LightGreen;
777        enu.BorderColor = Color.Blue;
778        enu.Color = Color.DarkBlue;
779        Add(enu);
780
781        LuoElamaMittari();
782    }
783
784    void LuoElamaMittari()
785    {
786        Label nautto = new Label();
787        nautto.BindTo(Elama);
788        nautto.X = 0;
789        nautto.Y = 350;
790        nautto.TextColor = Color.LightGreen;
791        nautto.BorderColor = Color.Blue;
792        nautto.Color = Color.DarkBlue;
793        Add(nautto);
794    }
795
796    bool IsDpadUpDown()
797    {
798        return Microsoft.Xna.Framework.Input.GamePad.GetState(Microsoft.Xna.Framework.PlayerIndex.One).IsButtonDown(Microsoft.Xna.Framework.Input.Buttons.DPadUp);
799    }
800
801    void kaytajetpak(PlatformCharacter hahmo, double nopeus, double mittariVahennys)
802    {
803        if (ESmittari.Value > 0.0 && (Keyboard.GetKeyState(Key.Up) == ButtonState.Down || IsDpadUpDown() || ControllerOne.LeftThumbDirection.Y >= 0.15))
804        {
805            hahmo.Push(new Vector(0, nopeus));
806            ESmittari.Value -= mittariVahennys;
807            pelaaja1.AnimWalk = null;
808            pelaaja1.AnimIdle = null;
809            pelaaja1.PlayAnimation(LentoAnimaatio);
810            onkoilmassa = true;
811        }
812     
813    }
814
815    void leijunta(PlatformCharacter hahmo, bool leijuuko)
816    {
817        if (ESmittari.Value > 0.0)
818        {
819            pelaaja1.AnimWalk = null;
820            pelaaja1.AnimIdle = null;
821            pelaaja1.PlayAnimation(LentoAnimaatio);
822            ESmittari.Value -= 0.02;
823            pelaaja1.IgnoresGravity = leijuuko;
824        }
825        else
826        {
827            pelaaja1.IgnoresGravity = false;
828        }
829    }
830
831    PhysicsObject ase;
832
833    void hakkaa(PlatformCharacter hahmo)
834    {
835       // pelaaja1.AnimIdle = null;
836       // pelaaja1.AnimWalk = null;
837        ase = new PhysicsObject(75, 35);
838        ase.IgnoresCollisionResponse = true;
839        ase.Y = pelaaja1.Y;
840        if (Keyboard.GetKeyState(Key.Up) == ButtonState.Down || IsDpadUpDown()|| ControllerOne.LeftThumbDirection.Y >= 0.18)
841        {
842
843            if ( pelaaja1.FacingDirection == Direction.Right)// masaKatsooOikealle)
844            {
845                ase.X = pelaaja1.X - 75;
846
847
848            }
849
850            else
851            {
852                ase.X = pelaaja1.X + 75;
853            }
854
855            ase.IgnoresGravity = true;
856            Add(ase);
857            AxleJoint liitos = new AxleJoint(pelaaja1, ase, pelaaja1.Position);
858            Add(liitos);
859            //ase.MomentOfInertia = 10;
860
861            normaaliOhjaus.Disable();
862            pelaaja1.IgnoresGravity = true; 
863            pelaaja1.Stop();
864           
865
866 
867            ase.Hit(new Vector(0, /*ase.MomentOfInertia **/ 500 + pelaaja1.Acceleration.Y));
868            Timer.SingleShot(0.8, toinenAjastinlaukesi);
869            Timer.SingleShot(0.875, vielYksAjastinlaukesi);
870        }
871
872        else
873        {
874
875
876
877            if (masaKatsooOikealle)
878            {
879                ase.X = pelaaja1.X + 75;
880                ase.CanRotate = false;
881                Add(ase);
882                AxleJoint liitos = new AxleJoint(pelaaja1, ase, pelaaja1.Position);
883                Add(liitos);
884
885                ase.X = pelaaja1.X - 75;
886            }
887            else
888            {
889                ase.X = pelaaja1.X - 75;
890                ase.CanRotate = false;
891                Add(ase);
892                AxleJoint liitos = new AxleJoint(pelaaja1, ase, pelaaja1.Position);
893                Add(liitos);
894
895                ase.X = pelaaja1.X + 75;
896            }
897            Timer.SingleShot(0.11, ajastinlaukesi);
898        }
899        AddCollisionHandler(ase, "laatikko", osuLaatikkoon);
900        AddCollisionHandler(ase, "vasenloukku", hakkaaLoukkua);
901        AddCollisionHandler(ase, "loukku", hakkaaLoukkua);
902        AddCollisionHandler(ase, "loukkuJumissa", hakkaaLoukkua);
903
904        Keyboard.Disable(Key.Z);
905        ControllerOne.Disable(Button.X);
906
907
908        if (!onkoilmassa)
909        {
910            Keyboard.Disable(Key.Left);
911            Keyboard.Disable(Key.Right);
912            ControllerOne.Disable(Button.DPadRight);
913            ControllerOne.Disable(Button.DPadLeft);
914            ControllerOne.Disable(AnalogControl.LeftStick);
915            ControllerOne.Disable(AnalogControl.RightStick);
916
917
918            pelaaja1.Velocity = new Vector(0, 0);
919        }
920
921        if (pelaaja1.FacingDirection == Direction.Left)
922        {
923            //pelaaja1.Image = masahakkaaVasen;
924           // pelaaja1.Image = masahakkaaOikea;
925            // pelaaja1.Shape = Shape.FromImage(masahakkaaVasen);
926        }
927        else
928        {
929          //  pelaaja1.Image = masahakkaaOikea;
930            // pelaaja1.Shape = Shape.FromImage(masahakkaaOikea);
931        }
932    }
933
934    void asetaAseKontrollit ()
935    {
936        Keyboard.Listen(Key.Z, ButtonState.Pressed, hakkaa, "Hakkaa kitaralla", pelaaja1);
937        ControllerOne.Listen(Button.X, ButtonState.Pressed, hakkaa, "Hakkaa kitaralla", pelaaja1);
938    }
939
940    void ajastinlaukesi()
941    {
942        if (pelaaja1.FacingDirection == Direction.Left)
943        {
944           // pelaaja1.Image = masahakkaaOikeaPAM;
945
946        }
947        else
948        {
949
950           // pelaaja1.Image = masahakkaaOikeaPAM;
951
952        }
953
954
955        Timer.SingleShot(0.06, toinenAjastinlaukesi);
956        Timer.SingleShot(0.135, vielYksAjastinlaukesi);
957    }
958
959    void toinenAjastinlaukesi()
960    {
961
962        ase.Destroy();
963        PelaajanAnimaatiot();
964        pelaaja1.IgnoresGravity = false;
965        normaaliOhjaus.Enable();
966
967
968
969
970        /*  if (masaKatsooOikealle)
971          {
972              pelaaja1.Shape = Shape.FromImage(pelaajanKuvaOikea);
973          }
974          else
975          {
976              pelaaja1.Shape = Shape.FromImage(pelaajanKuvaVasen);
977        }*/
978
979    }
980
981    void vielYksAjastinlaukesi()
982    {
983        Keyboard.EnableAll();
984        ControllerOne.EnableAll();
985    }
986
987    void liikutaTatilla(AnalogState tatinTila, PlatformCharacter hahmo, double nopeus)
988    {
989        liikuta(hahmo, tatinTila.StateVector.X * nopeus);
990    }
991
992    void liikuta(PlatformCharacter hahmo, double nopeus)
993    {
994        if (!SkipFrame)
995        {
996            if (nopeus < 0)
997                masaKatsooOikealle = false;
998            else
999                masaKatsooOikealle = true;
1000
1001            PhysicsObject seina = etsiviereinenseina(hahmo);
1002            PhysicsObject lattia = etsiLattia(hahmo);
1003
1004            if (seina != null && lattia == null)
1005            {
1006                if (masaKatsooOikealle)
1007                {
1008                    masaKatsooOikealle = false;
1009                    hahmo.Turn(Direction.Left);
1010                }
1011                else
1012                {
1013                    masaKatsooOikealle = true;
1014                    hahmo.Turn(Direction.Right);
1015                }
1016            }
1017            if (Liikeesto != Math.Sign(nopeus))
1018            {
1019                if (Liikeesto == 1)
1020                {
1021                    hahmo.Walk(nopeus + Liikeesto * nopeus * 1.53);
1022                }
1023
1024                else if (Liikeesto == -1)
1025                {
1026                    hahmo.Walk((nopeus - Liikeesto * nopeus * 1.53));
1027                }
1028                else
1029                {
1030                    hahmo.Walk(nopeus);
1031                }
1032            }
1033
1034        }
1035        else SkipFrame = false;
1036        if (masaKatsooOikealle)
1037        {
1038            pelaaja1.Shape = Shape.FromImage(pelaajanKuvaOikea);
1039        }
1040        else
1041        {
1042            pelaaja1.Shape = Shape.FromImage(pelaajanKuvaVasen);
1043        }
1044    }
1045    //IntMeter hyppyvoima = new IntMeter(18);
1046    void  hyppaa(PlatformCharacter hahmo, double nopeus)
1047    {
1048
1049        onkoilmassa = hahmo.Jump(nopeus);
1050
1051        if (!onkoilmassa)
1052        {
1053            PhysicsObject seina = etsiviereinenseina(hahmo);
1054            if (seina != null)
1055            {
1056             
1057                Timer ajastin = new Timer();
1058                Timer ajastin2 = new Timer();
1059                ajastin.Interval = 0.001;
1060                ajastin.Timeout += delegate()
1061                {
1062                    Vector vastasuunta = Math.Sign(hahmo.X - seina.X) * Vector.UnitX * 200;
1063                    //hahmo.Hit(new Vector(Math.Sign(vastasuunta.X) * 50, 50));
1064                    hahmo.Velocity = new Vector(Math.Sign(vastasuunta.X) * 756, 848);
1065                    Liikeesto = -Math.Sign(vastasuunta.X);
1066                };
1067                ajastin.Start();
1068                onkoilmassa = true;
1069                ajastin2.Start();
1070                Timer.SingleShot(0.25, delegate()
1071                {
1072                    ajastin.Stop();
1073
1074                });
1075                Timer.SingleShot(0.62, delegate()
1076                {
1077
1078                    Liikeesto = 0;
1079                });
1080                //onkoilmassa = hahmo.Jump(nopeus);
1081                //hahmo.ForceJump(vastasuunta.Y * 100000);
1082            }
1083        }
1084        //else if (!onkoilmassa)
1085        //{
1086        //    onkoilmassa = hahmo.Jump(nopeus);
1087        //}
1088
1089        //tätä ei ehkä tarvi:
1090        //   if (hahmo.Jump(nopeus)) hyppyvoima = new IntMeter(18);
1091        // else if (hyppyvoima.Value-- > 0) hahmo.ForceJump(35);
1092    }
1093
1094    PhysicsObject etsiLattia(PlatformCharacter hahmo)
1095    {
1096        return (PhysicsObject)GetFirstObject(olio =>
1097            (
1098                (Math.Abs(olio.Y - (hahmo.Y - hahmo.Height / 2 - 10)) < hahmo.Height) &&
1099                (Math.Abs(olio.X - hahmo.X) < olio.Width / 2) &&
1100                (olio is PhysicsObject) &&
1101                (double.IsInfinity(((PhysicsObject)olio).Mass))
1102            )
1103        );
1104    }
1105    PhysicsObject etsiviereinenseina(PlatformCharacter hahmo)
1106    {
1107        double etaisyys = (hahmo.FacingDirection == Direction.Left ? -hahmo.Width : hahmo.Width) * 0.5;
1108        return (PhysicsObject)GetFirstObject(olio =>
1109            (
1110                (Math.Abs(olio.Y - hahmo.Y) < hahmo.Height) &&
1111                (Math.Abs(olio.X - (hahmo.X + etaisyys)) < olio.Width / 2) &&
1112                (olio is PhysicsObject) &&
1113                (double.IsInfinity(((PhysicsObject)olio).Mass))
1114            )
1115        );
1116    }
1117
1118
1119    void maassa(PhysicsObject hahmo, PhysicsObject kohde)
1120    {
1121        if
1122        (kohde.Y < pelaaja1.Y && double.IsInfinity(kohde.Mass))
1123        {
1124            onkoilmassa = false;
1125        }
1126
1127    }
1128
1129
1130    void vihollishyokkaus(PhysicsObject loukku, Timer ajastin)
1131    {
1132        // pelaajan pitää olla loukun vasemmalla puolella 300:n päässä
1133        if (loukku.X - pelaaja1.X > 0 && loukku.X - pelaaja1.X < 400 && loukku.Y - pelaaja1.Y < 140 && loukku.Y - pelaaja1.Y > -140)
1134        {
1135            if (loukku.Image == vasenlookku)
1136            {
1137                // loukkua pitää nostaa hieman kun alottaa hyökkäyksen,
1138                // jottei raavi maata ja jää jumiin
1139                loukku.Y = loukku.Y + 25;
1140            }
1141
1142            loukku.Velocity = new Vector(-1000, 0);
1143            loukku.Shape = Shape.FromImage(loukkuhyokkausvasen);
1144            loukku.Height = 150;
1145            loukku.Image = loukkuhyokkausvasen;
1146        }
1147    }
1148
1149    void isoVihollishyokkaus(Loukku isoLoukku)
1150    {
1151        if (isoLoukku.X - pelaaja1.X > 0 && isoLoukku.X - pelaaja1.X < 550 && isoLoukku.Y - pelaaja1.Y < 540 && isoLoukku.Y - pelaaja1.Y > -300)
1152        {
1153
1154            //hyokkayskaynnissa = true;
1155            PhysicsObject Ylaosa = new PhysicsObject(400, 100);
1156            Ylaosa.IgnoresCollisionResponse = true;
1157            Ylaosa.IgnoresGravity = true;
1158            Ylaosa.Velocity = new Vector(-650, 0);
1159            Ylaosa.Image = ylaosa;
1160            Ylaosa.Shape = Shape.FromImage(ylaosator);
1161            Ylaosa.Tag = "Ylaosa";
1162            Ylaosa.X = isoLoukku.X -= 0;
1163            Ylaosa.Y = isoLoukku.Y += 300;
1164            Add(Ylaosa, 3);
1165            PhysicsObject Alaosa = new PhysicsObject(400, 150);
1166            Alaosa.Shape = Shape.FromImage(alaosator);
1167            Alaosa.Image = alaosa;
1168            Alaosa.Velocity = new Vector(-650, 0);
1169            Alaosa.IgnoresCollisionResponse = true;
1170            Alaosa.IgnoresGravity = true;
1171            Alaosa.Tag = "Alaosa";
1172            Alaosa.X = isoLoukku.X;
1173            Alaosa.Y = isoLoukku.Y - 400;
1174            Add(Alaosa, 3);
1175
1176            isoLoukku.X += 8;
1177            isoLoukku.Y -= 185;
1178            isoLoukku.Velocity = new Vector(-650, 0);
1179
1180            isoLoukku.Height = 280;
1181            isoLoukku.Width = 400;
1182            isoLoukku.Image = isoloukkuhyokkausvasen;
1183
1184            isoLoukku.HyokkaysTimer.Stop();
1185
1186        }
1187    }
1188
1189    void osuTahteen(PhysicsObject hahmo, PhysicsObject kohde)
1190    {
1191        if (kohde.Tag.ToString() == "tahti")
1192        {
1193            kepit.Value += 1;
1194            kohde.Destroy();
1195        }
1196
1197    }
1198    void osuPlussaan(PhysicsObject hahmo, PhysicsObject kohde)
1199    {
1200        //  if (kohde.Tag.ToString() == "ESplus")
1201        //{
1202        //  mittari.MaxValue += 10;
1203
1204        //       }
1205    }
1206
1207    void osuJuustoon(PhysicsObject hahmo, PhysicsObject kohde)
1208    {
1209        if (kohde.Tag.ToString() == "Juusto")
1210        {
1211            Elama.Value += 5;
1212            kohde.Destroy();
1213        }
1214    }
1215
1216    void hakkaaLoukkua(PhysicsObject ase, PhysicsObject kohde)
1217    {
1218        int pMaara = 50;
1219        double x = kohde.X;
1220        double y = kohde.Y;
1221
1222        hajotus2.AddEffect(x, y, pMaara);
1223        kohde.Destroy();
1224    }
1225
1226    void osuLoukkuun(PhysicsObject hahmo, PhysicsObject kohde)
1227    {
1228        Timer ajastin = new Timer();
1229        Elama.Value -= 2.5;
1230        Timer.SingleShot(0.01, delegate()
1231        {
1232
1233
1234            //Keyboard.Disable(Key.Z);
1235            //Keyboard.Disable(Key.Left);
1236            //Keyboard.Disable(Key.Right);
1237            //Keyboard.Disable(Key.X);
1238            //Keyboard.Disable(Key.Up);
1239
1240            normaaliOhjaus.Disable();
1241
1242            ajastin.Interval = 0.001;
1243            ajastin.Timeout += delegate() { pelaaja1.Velocity = new Vector(-700, 750); };
1244            ajastin.Start();
1245
1246        });
1247
1248        Timer.SingleShot(0.265, delegate()
1249        {
1250            ajastin.Stop();
1251//            Keyboard.EnableAll();
1252            normaaliOhjaus.Enable();
1253            //Gravity = new Vector(0, -2800);
1254        });
1255
1256        if (Elama.Value == 0)
1257        {
1258            //aloitapeli(kenttatilanne);
1259            UusiPeli();
1260        }
1261
1262    }
1263
1264    void osuIsoonLoukkuun(PhysicsObject hahmo, PhysicsObject kohde)
1265    {
1266        if (kohde.Tag.ToString() == "Alaosa" || kohde.Tag.ToString() == "Ylaosa")
1267        {
1268            Timer Ajastin = new Timer();
1269            Elama.Value -= 3.5;
1270            Timer.SingleShot(0.01, delegate()
1271           {
1272               normaaliOhjaus.Disable();
1273              /* Keyboard.Disable(Key.Down);
1274               Keyboard.Disable(Key.Left);
1275               Keyboard.Disable(Key.Right);
1276               Keyboard.Disable(Key.Space);
1277               Keyboard.Disable(Key.Up);*/
1278               pelaaja1.Velocity = new Vector(0, 0);
1279
1280               Ajastin.Interval = 0.001;
1281               Ajastin.Timeout += delegate() { pelaaja1.Velocity = new Vector(-700, 750); };
1282               Ajastin.Start();
1283
1284               Timer.SingleShot(0.24745, delegate()
1285            {
1286
1287                Ajastin.Stop();
1288               // Keyboard.EnableAll();
1289                normaaliOhjaus.Enable();
1290
1291                Gravity = new Vector(0, -2800);
1292            });
1293           });
1294            Timer.SingleShot(0.35, delegate()
1295            {
1296                Keyboard.EnableAll();
1297            });
1298
1299        }
1300        if (Elama.Value <= 0)
1301        {
1302            UusiPeli();
1303        }
1304    }
1305
1306    void LoukkuOsuu(PhysicsObject loukku, PhysicsObject kohde, Timer ajastin)
1307    {
1308        if (kohde != pelaaja1 && !kohde.Tag.Equals("maankamara") && !kohde.Tag.Equals(""))
1309        {
1310            loukku.Velocity = new Vector(0, 0);
1311            ajastin.Stop();
1312
1313
1314            loukku.MakeStatic();
1315            //loukku.Shape = Shape.Rectangle;
1316            loukku.Shape = Shape.FromImage(loukkutör);
1317            loukku.IgnoresCollisionResponse = false;
1318            loukku.Tag = "loukkuJumissa";
1319        }
1320    }
1321
1322    void osuKitaraan(PhysicsObject hahmo, PhysicsObject kohde)
1323    {
1324        if (kohde.Tag.ToString() == "Kitara")
1325        {
1326            onkoAse = true;
1327            Label label = new Label("Masa majava: Kitara...mitä minä tällä tekisin? Soittaisin musiikkia?");
1328            label.TextColor = Color.Black;
1329            label.Color = Color.White;
1330            Label label2 = new Label("Masa majava: Hei! Nyt keksin! Painamalla 'Alas' minä voisin...");
1331            label2.TextColor = Color.Black;
1332            label2.Color = Color.White;
1333            //Add(label);
1334            Timer.SingleShot(4, delegate()
1335            {
1336                label.Destroy();
1337                //     Add(label2);
1338            }
1339            );
1340            Timer.SingleShot(8, label2.Destroy);
1341
1342            asetaAseKontrollit();
1343            kohde.Destroy();
1344        }
1345    }
1346
1347    void osuLaatikkoon(PhysicsObject ase, PhysicsObject kohde)
1348    {
1349        /*if (!masaLyo)
1350        {
1351            hahmo.Hit(new Vector(-Math.Sign(kohde.X - hahmo.X) * 100, 0));
1352            return;
1353        }*/
1354
1355
1356
1357        int pMaara = 50;
1358        double x = kohde.X;
1359        double y = kohde.Y;
1360
1361        hajotus.AddEffect(x, y, pMaara);
1362
1363
1364        Label label = new Label("Masa majava: Siitäs sait, tyhmä loota.");
1365        label.TextColor = Color.Black;
1366        label.Color = Color.White;
1367        // Add(label);
1368        Timer.SingleShot(3, delegate()
1369        {
1370            label.Destroy();
1371        });
1372
1373
1374        kohde.Destroy();
1375    }
1376
1377
1378    void osuJetpakiin(PhysicsObject hahmo, PhysicsObject kohde)
1379    {
1380        if (kohde.Tag.ToString() == "jetpak")
1381        {
1382            jetPakKeratty = true;
1383
1384            Label label = new Label("Masa majava: Voi pojat, jetpack! Tällähän voi lentää painamalla 'Ylös'!");
1385            label.TextColor = Color.Black;
1386            label.Color = Color.White;
1387            lisaaESmittari(0);
1388
1389            Label label2 = new Label("Masa majava: Siihen tarvitaan vain hieman ES polttoaineeksi!");
1390            label2.TextColor = Color.Black;
1391            label2.Color = Color.White;
1392            //Add(label);
1393            Timer.SingleShot(3, delegate()
1394            {
1395                label.Destroy();
1396                //Add(label2);
1397            }
1398            );
1399
1400            Timer.SingleShot(3, label2.Destroy);
1401            Label jetpak = new Label("Energiajuoma");
1402            jetpak.X = 300;
1403            jetpak.Y = 380;
1404            jetpak.TextColor = Color.LightGreen;
1405            jetpak.BorderColor = Color.Blue;
1406            jetpak.Color = Color.DarkBlue;
1407            Add(jetpak);
1408
1409            jetPackOhjaimet.Enable();
1410
1411            kohde.Destroy();
1412            AddCollisionHandler(pelaaja1, osuES);
1413        }
1414    }
1415
1416    void osuES(PhysicsObject hahmo, PhysicsObject kohde)
1417    {
1418        if (kohde.Tag.ToString() == "ES")
1419        {
1420
1421
1422            kohde.Destroy();
1423            ESmittari.Value += 5;
1424        }
1425    }
1426
1427    void osuMaaliin(PhysicsObject hahmo, PhysicsObject kohde)
1428    {
1429        if (kohde.Tag.ToString() == "Maali")
1430        {
1431            kenttatilanne += 1;
1432
1433            //Timer zoomaaja = new Timer();
1434            //  zoomaaja.Interval = 0.00000001;
1435            //     zoomaaja.Timeout += teeSiirtyma;
1436            //       zoomaaja.Start();
1437            //teeSiirtyma();
1438            aloitapeli(kenttatilanne);
1439        }
1440
1441    }
1442
1443    //double zoom = 1.005;
1444
1445    //private void teeSiirtyma()
1446    //{
1447    //     Camera.Zoom (zoom);
1448
1449
1450
1451    //}
1452    void osuToiseenMaaliin(PhysicsObject hahmo, PhysicsObject kohde)
1453    {
1454        if (kohde.Tag.ToString() == "Maali2")
1455        {
1456            kenttatilanne += 2;
1457            aloitapeli(kenttatilanne);
1458        }
1459    }
1460    void osuKylttiin(PhysicsObject hahmo, PhysicsObject kohde)
1461    {
1462        if (kohde.Tag.ToString() == "Kyltti")
1463        {
1464            Label label = new Label("Lehmät sanoo muu.");
1465            label.TextColor = Color.Black;
1466            label.Color = Color.White;
1467            Add(label);
1468            Label label2 = new Label("Masa majava: Mistä minä jetpakin tähän hätään saisin?");
1469            label2.TextColor = Color.Black;
1470            label2.Color = Color.White;
1471            Timer.SingleShot(3, delegate()
1472             {
1473                 label.Destroy();
1474                 // Add(label2);
1475                 Timer.SingleShot(3, delegate()
1476                 {
1477                     label2.Destroy();
1478                 });
1479             });
1480        }
1481    }
1482}
1483
Note: See TracBrowser for help on using the repository browser.