source: 2011/24/LauriK/Call of garden Modern carrotfare 2/Call of garden Modern carrotfare 2/Peli.cs @ 2447

Revision 2447, 26.4 KB checked in by lavevake, 10 years ago (diff)

Beta 2.1

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
12    const double nopeus = 200;
13    const double hyppyNopeus = 1000;
14    const int RUUDUN_KOKO = 40;
15
16    public int kentanNro = 0;
17
18    public int elamat = 100;
19
20    ScoreList topLista = new ScoreList(10, false, 0);
21
22    PlatformCharacter porkkana;
23    PhysicsObject hautakivi;
24    PhysicsObject kuolluttomaatti;
25    PhysicsObject lipas;
26    PhysicsObject uusikranaatti;
27    PhysicsObject raha;
28
29    public bool pelaajallaOnLaser = false;
30
31    string cheat1 = "LaserBlast";
32    string cheat2 = "MoonGravity";
33    string cheat3 = "ClearAll";
34   
35    IntMeter panoslaskuri;
36    IntMeter pistelaskuri;
37    IntMeter kranaattiLaskuri;
38
39    List<GameObject> rajahdyksenTomaattiUhrit;
40    List<GameObject> rajahdyksenPorkkanaUhri;
41
42    Image[] pelaajanKuva = LoadImages("porkkana");
43    Image[] pelaajanKuvaPeilattu;
44    Image pelaajanKuvaKuolleena = LoadImage("rip");
45    Image[] vihollisenKuva = LoadImages("tomaatti");
46    Image[] vihollisenKuvaPeilattu;
47    Image vihollisenKuvaKuolleena = LoadImage("tomaattikuolleena");
48    Image lippaanKuva = LoadImage("Lipas2");
49    Image kranaatinKuva = LoadImage("ydinpommi");
50    Image uudenKranaatinKuva = LoadImage("Laatikko");
51    Image RahanKuva = LoadImage("Raha");
52    Image alustus1 = LoadImage("alustus1");
53    Image alustus2 = LoadImage("alustus2");
54    //Image alustus3 = LoadImage("alustus3");
55    Image maalinKuva = LoadImage("Maali");
56    Image alkuvalikko = LoadImage("alkuvalikko");
57    Image peliPaattyi = LoadImage("pelipaattyi");
58
59    ExplosionSystem rajahdys;
60    int pMaxMaara = 5000000;
61
62    public override void Begin()
63    {
64        if (DataStorage.Exists("pisteet.xlm"))
65        {
66            topLista = DataStorage.Load<ScoreList>(topLista, "pisteet.xlm");
67        }     
68         
69        rajahdyksenTomaattiUhrit = new List<GameObject>();
70        rajahdyksenPorkkanaUhri = new List<GameObject>();
71       
72        pelaajanKuvaPeilattu = Image.Mirror(pelaajanKuva);
73        vihollisenKuvaPeilattu = Image.Mirror(vihollisenKuva);
74       
75        SeuraavaKentta(kentanNro);
76       
77        Gravity = new Vector(0, -1000);
78
79        rajahdys = new ExplosionSystem(LoadImage("rajahdys"), pMaxMaara);
80        rajahdys.MaxLifetime = 1.0;
81        rajahdys.MaxScale = 0.1;
82        Add(rajahdys);
83    }
84
85    public void Valikko()
86    {
87        Camera.Reset();
88
89        ClearAll();
90
91        Level.Background.Image = alkuvalikko;
92        Level.Background.Width = Screen.Width;
93        Level.Background.Height = Screen.Height;
94
95        Label versio = new Label();
96        versio.SizeMode = TextSizeMode.Wrapped;
97        versio.Width = Screen.Width - 100;
98        versio.Height = Screen.Height;
99        versio.X = 500;
100        versio.Y = -95;
101        versio.TextColor = Color.Green;
102        versio.Font = Font.DefaultLargeBold;
103        Add(versio);
104        versio.Text = "Beta 2.1";
105       
106        MediaPlayer.Play("alkuaani");
107
108        ClearControls();
109
110        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
111        Keyboard.Listen(Key.Enter, ButtonState.Pressed, SeuraavaKentta, "Aloita peli", 1);
112
113        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
114        ControllerOne.Listen(Button.Start, ButtonState.Pressed, SeuraavaKentta, "Aloita peli", 1);
115
116    }
117   
118    public void SeuraavaKentta(int kentanNro)
119    {
120        pelaajallaOnLaser = false;
121       
122        if (kentanNro == 0) Valikko();
123        if (kentanNro == 1) luoAlustus1();
124        else if (kentanNro == 2) luoAlustus2();
125        //else if (kentanNro == 3) luoAlustus3();
126        else if (kentanNro > 2) LopetaPeli();
127    }
128
129    private void luoAlustus1()
130    {
131       
132        Camera.Reset();
133
134        ClearAll();
135       
136        Level.Background.Image = alustus1;
137        Level.Background.Width = Screen.Width;
138        Level.Background.Height = Screen.Height;
139
140        MediaPlayer.Play("alustus1aani");
141
142        ClearControls();
143
144        Keyboard.Listen(Key.Enter, ButtonState.Pressed, TeeKentta1, "Aloita kenttä");
145
146        ControllerOne.Listen(Button.Start, ButtonState.Pressed, TeeKentta1,"Aloita kenttä");
147
148        MessageDisplay.TextColor = Color.White;
149    }
150
151    void luoAlustus2()
152    {
153        Camera.Reset();
154       
155        ClearAll();
156       
157        Level.Background.Image = alustus2;
158        Level.Background.Width = Screen.Width;
159        Level.Background.Height = Screen.Height;
160
161        MediaPlayer.Play("alustus2aani");
162
163        ClearControls();
164
165        Keyboard.Listen(Key.Enter, ButtonState.Pressed, TeeKentta2, "Aloita kenttä");
166
167        ControllerOne.Listen(Button.Start, ButtonState.Pressed, TeeKentta2, "Aloita kenttä");
168
169        MessageDisplay.TextColor = Color.White;
170    }
171
172    //void luoAlustus3()
173    //{
174    //    Camera.Reset();
175
176    //    ClearAll();
177
178    //    Level.Background.Image = alustus3;
179    //    Level.Background.Width = Screen.Width;
180    //    Level.Background.Height = Screen.Height;
181
182    //    MediaPlayer.Play("alustus3aani");
183
184    //    ClearControls();
185
186    //    Keyboard.Listen(Key.Enter, ButtonState.Pressed, TeeKentta3, "Aloita kenttä");
187
188    //    ControllerOne.Listen(Button.Start, ButtonState.Pressed, TeeKentta3, "Aloita kenttä");
189
190    //    MessageDisplay.TextColor = Color.White;
191    //}
192               
193    PhysicsObject lisaaTaso()
194    {
195        PhysicsObject taso = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
196        taso.Color = Color.Green;
197        return taso;
198    }
199
200    PhysicsObject lisaaTaso2()
201    {
202        PhysicsObject taso2 = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
203        taso2.Color = Color.Gray;
204        return taso2;
205    }
206
207    PhysicsObject lisaaTaso3()
208    {
209        PhysicsObject taso3 = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
210        taso3.Color = Color.Yellow;
211        return taso3;
212    }
213   
214    PlatformCharacter lisaaPelaaja()
215    {
216        porkkana = new PlatformCharacter(40, 40);
217        porkkana.Mass = 4.0;
218
219        if (pelaajallaOnLaser == true)
220        {
221            porkkana.Weapon = new LaserGun(60, 30);
222            porkkana.Weapon.Ammo.Value = 10;
223            porkkana.Weapon.Y = -3;
224            porkkana.Weapon.X = 0;
225            porkkana.Weapon.ProjectileCollision = AmmusOsui;
226        }
227
228        if (pelaajallaOnLaser == false)
229        {
230            porkkana.Weapon = new AssaultRifle(60, 30);
231            porkkana.Weapon.Ammo.Value = 10;
232            porkkana.Weapon.Y = -3;
233            porkkana.Weapon.X = 0;
234            porkkana.Weapon.ProjectileCollision = AmmusOsui;
235        }
236       
237        AddCollisionHandler(porkkana, LipasKranaattiOsuma);
238
239        porkkana.IgnoresExplosions = true;
240
241        porkkana.RightWalkingAnimation = new Animation(pelaajanKuva);
242        porkkana.LeftWalkingAnimation = new Animation(pelaajanKuvaPeilattu);
243
244        rajahdyksenPorkkanaUhri.Add(porkkana);
245       
246        return porkkana;
247    }
248
249    PlatformCharacter lisaaTomaatti()
250    {
251        PlatformCharacter tomaatti = new PlatformCharacter(40, 40);
252        tomaatti.Mass = 4.0;
253
254        tomaatti.Tag = "Vihollinen";
255
256        tomaatti.IgnoresGravity = false;
257
258        FollowerBrain SeuraajanAivot = new FollowerBrain();
259        tomaatti.Brain = SeuraajanAivot;
260        SeuraajanAivot.Target = porkkana;
261        SeuraajanAivot.Speed = 100;
262        SeuraajanAivot.TargetFollowDistance = 500;
263        SeuraajanAivot.TargetCloseDistance = 50;
264        SeuraajanAivot.StopWhenTargetClose = false;
265        AddCollisionHandler(tomaatti, TomaattiOsui);
266
267        tomaatti.RightWalkingAnimation = new Animation(vihollisenKuva);
268        tomaatti.LeftWalkingAnimation = new Animation(vihollisenKuvaPeilattu);
269       
270        rajahdyksenTomaattiUhrit.Add(tomaatti);
271
272        Timer.SingleShot(2, delegate { Seuraa(SeuraajanAivot); });
273
274        return tomaatti;
275
276    }
277
278    void Seuraa(FollowerBrain aivot)
279    {
280        aivot.Target = porkkana;
281    }
282
283    PlatformCharacter lisaaTomaatti2()
284    {
285        PlatformCharacter tomaatti2 = new PlatformCharacter(40, 40);
286        tomaatti2.Mass = 4.0;
287
288        tomaatti2.Tag = "Vihollinen2";
289
290        tomaatti2.Weapon = new AssaultRifle(60, 30);
291        tomaatti2.Weapon.Ammo.Value = 10;
292        tomaatti2.Weapon.Y = 0;
293        tomaatti2.Weapon.X = 0;
294        tomaatti2.Weapon.ProjectileCollision = AmmusOsui;
295       
296        Timer ampumaAjastin = new Timer();
297        ampumaAjastin.Interval = 2.0;
298        ampumaAjastin.Trigger += vihollinenAmpuu;
299        ampumaAjastin.Tag = tomaatti2;
300        ampumaAjastin.Start();
301
302        tomaatti2.RightWalkingAnimation = new Animation(vihollisenKuva);
303        tomaatti2.LeftWalkingAnimation = new Animation(vihollisenKuvaPeilattu);
304
305        rajahdyksenTomaattiUhrit.Add(tomaatti2);
306
307        return tomaatti2;
308    }
309   
310    void lisaaNappaimet()
311    {
312        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
313        Keyboard.Listen(Key.Escape, ButtonState.Pressed, SeuraavaKentta, "Poistu valikkoon", 0);
314        Keyboard.Listen(Key.A, ButtonState.Pressed, cheatIkkuna, "Avaa cheatikkuna");
315
316        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", porkkana, -nopeus);
317        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", porkkana, nopeus);
318        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", porkkana, hyppyNopeus);
319
320        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu rynnäkkökiväärillä");
321        Keyboard.Listen(Key.W, ButtonState.Down, TahtaaYlos, "Tähtää ylös rynnäkkökiväärillä");
322        Keyboard.Listen(Key.S, ButtonState.Down, TahtaaAlas, "Tähtää alas rynnäkkökiväärillä");
323        Keyboard.Listen(Key.Q, ButtonState.Pressed, HeitaKranaatti, "Heitä kranaatti");
324
325        ControllerOne.Listen(Button.Start, ButtonState.Pressed, SeuraavaKentta, "Poistu valikkoon", 0);
326        ControllerOne.Listen(Button.Back, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
327       
328        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.01, liikutaTatilla, "Pelaaja liikkuu", porkkana);
329        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", porkkana, hyppyNopeus);
330
331        ControllerOne.Listen(Button.RightTrigger, ButtonState.Down, AmmuAseella, "Ammu rynnäkkökiväärillä");
332        ControllerOne.ListenAnalog(AnalogControl.RightStick, 0.01, tahtaaTatilla, "Tähtää rynnäkkökiväärillä");
333        ControllerOne.Listen(Button.LeftTrigger, ButtonState.Pressed, HeitaKranaatti, "Heitä kranaatti");   
334    }
335
336    void liikuta(PlatformCharacter hahmo, double nopeus)
337    {
338        hahmo.Walk(nopeus);
339    }
340
341    void hyppaa(PlatformCharacter hahmo, double nopeus)
342    {
343        hahmo.Jump(nopeus);
344    }
345
346    void liikutaTatilla(AnalogState tatintila, PlatformCharacter hahmo)
347    {
348        Vector tatinAsento = tatintila.StateVector;
349        hahmo.Walk(tatinAsento.X*nopeus);
350
351    }
352
353    void AmmuAseella()
354    {
355        PhysicsObject ammus = porkkana.Weapon.Shoot();
356
357        if (ammus != null)
358        {
359            ammus.Size *= 1;
360            ammus.Restitution = 0.5;
361            ammus.MaximumLifetime = TimeSpan.FromSeconds(1.5);
362        }
363    }
364   
365    void TahtaaYlos()
366    {
367        if (porkkana.FacingDirection == Direction.Right)
368        {
369            porkkana.Weapon.Angle += Angle.FromDegrees(5);
370        }
371        if (porkkana.FacingDirection == Direction.Left)
372        {
373            porkkana.Weapon.Angle += Angle.FromDegrees(-5);
374        }
375
376
377    }
378
379    void TahtaaAlas()
380    {
381        if (porkkana.FacingDirection == Direction.Right)
382        {
383            porkkana.Weapon.Angle += Angle.FromDegrees(-5);
384        }
385        if (porkkana.FacingDirection == Direction.Left)
386        {
387            porkkana.Weapon.Angle += Angle.FromDegrees(5);
388        }
389    }
390   
391    void tahtaaTatilla(AnalogState toisentatintila)
392    {
393            Vector toisentatinAsento = toisentatintila.StateVector;
394            porkkana.Weapon.Angle = toisentatinAsento.Angle;
395    }   
396   
397    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
398    {
399
400        if (kohde.Tag.ToString() == "Vihollinen" || kohde.Tag.ToString() == "Vihollinen2")
401        {
402            ammus.Destroy();
403            kohde.Brain = null;
404            TomaattiKuoli(kohde);
405            kohde.IgnoresCollisionResponse = true;
406            rajahdys.AddEffect(kohde.Position, 50);
407
408        }
409    }
410
411    void Ammus2Osui(PhysicsObject ammus2, PhysicsObject kohde)
412    {
413
414        if (kohde == porkkana)
415        {
416            ammus2.Destroy();;
417           
418            //porkkana.IgnoresCollisionResponse = true;
419
420            porkkana.Stop();
421
422            MediaPlayer.Play("pling");
423
424            porkkana.Destroy();
425
426            LuoHautakivi();
427
428            LopetaPeli();
429
430        }
431    }
432   
433    void LopetaPeli()
434    {
435        HighScoreWindow topIkkuna = new HighScoreWindow("Call of garden: Modern carrotfare",
436            "Parhaat pisteet",
437            "Onneksi olkoon, pääsit listalle pisteillä %p! Syötä nimesi:",
438            topLista, pistelaskuri.Value);
439        topIkkuna.Closed += TallennaPisteet;
440        Add(topIkkuna);       
441    }
442   
443    void LuoHautakivi()
444    {
445        hautakivi = new PhysicsObject(40, 40);
446        hautakivi.Mass = 100000000000.0;
447
448        hautakivi.IgnoresExplosions = true;
449
450        hautakivi.Image = pelaajanKuvaKuolleena;
451
452        hautakivi.Position = porkkana.Position;
453        Add(hautakivi);
454
455    }
456
457    void TomaattiKuoli(PhysicsObject tomaatti)
458    {
459        tomaatti.Destroy();
460
461        MediaPlayer.Play("ketshup");
462
463        pistelaskuri.Value += 100; 
464
465        kuolluttomaatti = new PhysicsObject(50, 50);
466        kuolluttomaatti.Mass = 4.0;
467
468        kuolluttomaatti.IgnoresCollisionResponse = true;
469
470        kuolluttomaatti.IgnoresGravity = true;
471
472        kuolluttomaatti.IgnoresExplosions = true;
473
474        kuolluttomaatti.Image = vihollisenKuvaKuolleena;
475
476        kuolluttomaatti.Position = tomaatti.Position;
477        Add(kuolluttomaatti);
478
479        LuoLipas(kuolluttomaatti.X - 30, kuolluttomaatti.Y);
480        LuoKranaatti(kuolluttomaatti.X + 30, kuolluttomaatti.Y);
481    }
482
483    void TomaattiOsui(PhysicsObject tomaatti, PhysicsObject kohde)
484    {
485        if (kohde == porkkana)
486        {         
487            tomaatti.Stop();
488            tomaatti.Brain.Active = false;
489
490            //porkkana.IgnoresCollisionResponse = true;
491
492            porkkana.Stop();
493
494            MediaPlayer.Play("pling");
495
496            porkkana.Destroy();
497
498            LuoHautakivi();
499
500            LopetaPeli();
501     
502        }
503
504    }
505
506    void LuoPanosLaskuri()
507    {
508        panoslaskuri = new IntMeter(0);
509
510        Label panosnaytto = new Label();
511        panosnaytto.X = Screen.Right - 100;
512        panosnaytto.Y = Screen.Top - 100;
513        panosnaytto.TextColor = Color.Red;
514       
515        panosnaytto.BindTo(porkkana.Weapon.Ammo);
516        Add(panosnaytto);
517
518        Label panosteksti = new Label("Panoksia jäljellä: ");
519        panosteksti.X = Screen.Right - 200;
520        panosteksti.Y = Screen.Top - 100;
521        panosteksti.TextColor = Color.Red;
522
523        Add(panosteksti); 
524    }
525   
526    void LuoPisteLaskuri()
527    {
528        pistelaskuri = new IntMeter(0);
529       
530        Label pistenaytto = new Label();
531        pistenaytto.X = Screen.Right - 100;
532        pistenaytto.Y = Screen.Top - 150;
533        pistenaytto.TextColor = Color.Red;
534
535        pistenaytto.BindTo(pistelaskuri);
536        Add(pistenaytto);
537
538        Label pisteteksti = new Label("Pisteitä: ");
539        pisteteksti.X = Screen.Right - 200;
540        pisteteksti.Y = Screen.Top - 150;
541        pisteteksti.TextColor = Color.Red;
542
543        Add(pisteteksti);
544    }
545
546    PhysicsObject LuoLipas()
547    {
548        lipas = new PhysicsObject(20, 20);
549        lipas.Mass = 2.0;
550
551        lipas.Image = lippaanKuva;
552
553        lipas.IgnoresExplosions = true;
554
555        lipas.Tag = "Lipas";
556
557        Add(lipas);
558        return lipas;
559    }
560
561    void LuoLipas(double x, double y)
562    {
563        LuoLipas().Position = new Vector(x,y);
564    }
565
566    void LipasKranaattiOsuma(PhysicsObject porkkana, PhysicsObject kohde)
567    {
568        if (kohde.Tag.ToString() == "Lipas")
569        {
570            ((PlatformCharacter)porkkana).Weapon.Ammo.Value +=5;
571            kohde.Destroy();
572        }
573        if (kohde.Tag.ToString() == "Kranaatti")
574        {
575            kranaattiLaskuri.Value++;
576            kohde.Destroy();
577        }
578       
579    }
580
581    void HeitaKranaatti()
582    {
583       
584        if (kranaattiLaskuri.Value > 0)
585        {
586            Grenade kranaatti = new Grenade(10.0);
587            kranaatti.Image = kranaatinKuva;
588            kranaatti.Mass = 1.0;
589            kranaatti.ExplosionRadius = 100.0;
590           
591            kranaattiLaskuri.Value -= 1;
592
593            kranaatti.X = porkkana.X;
594            kranaatti.Y = porkkana.Y;
595            Add(kranaatti);
596            Vector kranaatinlento = Vector.FromLengthAndAngle(700.0, porkkana.Weapon.Angle);
597            kranaatti.Hit(kranaatinlento);
598            kranaatti.Destroyed += new Action(delegate { kranaatti_Destroyed(kranaatti); });
599        }
600    }
601
602    void kranaatti_Destroyed(Grenade s)
603    {
604        foreach (PhysicsObject item in rajahdyksenTomaattiUhrit)
605        {
606            if (Vector.Distance(s.Position, item.Position) < s.ExplosionRadius)
607            {
608                TomaattiKuoli(item);
609                rajahdys.AddEffect(item.Position, 50);
610            }
611        }
612       
613        foreach (GameObject item in rajahdyksenPorkkanaUhri)
614        {
615            if (Vector.Distance(s.Position, item.Position) < s.ExplosionRadius)
616            {
617                elamat -= 50;
618               
619                if (elamat < 1)
620                {
621                    porkkana.Stop();
622
623                    MediaPlayer.Play("pling");
624
625                    porkkana.Destroy();
626
627                    LuoHautakivi();
628
629                    LopetaPeli();
630     
631                }               
632            }
633        }       
634    }
635
636    void vihollinenAmpuu(Timer ampumaAjastin)
637    {
638        PlatformCharacter tomaatti2 = ampumaAjastin.Tag as PlatformCharacter;
639       
640        Vector ampumaSuunta = (porkkana.Position - tomaatti2.Position).Normalize();
641        tomaatti2.Weapon.Angle = ampumaSuunta.Angle;
642
643        PhysicsObject vihu = ampumaAjastin.Tag as PhysicsObject;
644       
645        PhysicsObject ammus2 = tomaatti2.Weapon.Shoot();
646       
647        if (ammus2 != null)
648        {
649            ammus2.Size *= 5;
650            ammus2.MaximumLifetime = TimeSpan.FromSeconds(1.5);
651            ammus2.IgnoresGravity = true;
652        }
653    }
654
655    void LuoKranaattiLaskuri ()
656    {
657        kranaattiLaskuri= new IntMeter(3);
658        kranaattiLaskuri.MinValue = 0;
659        Label kranaattiNaytto = new Label();
660        kranaattiNaytto.X = Screen.Right - 100;
661        kranaattiNaytto.Y = Screen.Top - 50;
662        kranaattiNaytto.TextColor = Color.Red;
663
664               
665        kranaattiNaytto.BindTo(kranaattiLaskuri);
666        Add( kranaattiNaytto);
667
668        Label kranaattiteksti = new Label("Kranaatteja jäljellä: ");
669        kranaattiteksti.X = Screen.Right - 200;
670        kranaattiteksti.Y = Screen.Top - 50;
671        kranaattiteksti.TextColor = Color.Red;
672
673        Add(kranaattiteksti); 
674    }
675
676    PhysicsObject LuoKranaatti()
677    {
678        uusikranaatti = new PhysicsObject(40, 20);
679        uusikranaatti.Mass = 2.0;
680
681        uusikranaatti.Image = uudenKranaatinKuva;
682
683        uusikranaatti.IgnoresExplosions = true;
684
685        uusikranaatti.Tag = "Kranaatti";
686
687        Add(uusikranaatti);
688        return uusikranaatti;
689    }
690
691    void LuoKranaatti(double x, double y)
692    {
693        LuoKranaatti().Position = new Vector(x, y);
694    }
695
696    PhysicsObject LuoMaali()
697    {
698        PhysicsObject maali = new PhysicsObject(40, 40);
699        maali.Image = maalinKuva;
700        maali.Mass = 4.0;
701        maali.Tag = "maali";
702        AddCollisionHandler(maali, MaaliinOsuma);
703        return maali;
704    }
705
706    void MaaliinOsuma(PhysicsObject maali, PhysicsObject kohde)
707    {
708            if (kentanNro == 1 ||  kohde == porkkana || maali.Tag == maali)
709            {
710                pistelaskuri.Value += 500;
711                kentanNro = 2;
712                SeuraavaKentta(kentanNro);
713                kentanNro = 2;
714            }
715
716            else if (kentanNro == 2 || kohde == porkkana || maali.Tag == maali)
717            {
718                pistelaskuri.Value += 500;
719                kentanNro = 3;
720                maali.Destroy();
721                SeuraavaKentta(kentanNro);
722                kentanNro = 3;
723            }     
724    }
725
726    void TallennaPisteet(Window sender)
727    {
728        DataStorage.Save<ScoreList>(topLista, "pisteet.xlm");
729
730        MediaPlayer.Stop();
731       
732        //Label lopetus = new Label();
733        //lopetus.SizeMode = TextSizeMode.Wrapped;
734        //lopetus.Width = Screen.Width -100;
735        //lopetus.Height = Screen.Height;
736        //lopetus.TextColor = Color.Orange;
737        //lopetus.Font = Font.DefaultLargeBold;
738        //Add(lopetus);
739        //lopetus.Text = "                                  Peli päättyi.\n" +
740        //"Paina Escape/Start mennäksesi valikkoon tai Enter/A aloittaaksesi alusta.";
741
742        //ClearControls();
743
744        ClearAll();
745       
746        Level.Background.Image = peliPaattyi;
747        Level.Background.Width = Screen.Width;
748        Level.Background.Height = Screen.Height;
749       
750        Keyboard.Listen(Key.Enter, ButtonState.Pressed, SeuraavaKentta, "Aloita alusta", 1);
751       
752        Keyboard.Listen(Key.Escape, ButtonState.Pressed, SeuraavaKentta, "Poistu valikkoon", 0);
753
754        ControllerOne.Listen(Button.Start, ButtonState.Down, SeuraavaKentta, "Poistu valikkoon", 0);
755
756        ControllerOne.Listen(Button.A, ButtonState.Pressed, SeuraavaKentta, "Aloita alusta", 1);
757
758    }
759
760    PhysicsObject LuoRaha()
761    {
762        raha = new PhysicsObject(40, 40);
763        raha.Mass = 4.0;
764        raha.Image = RahanKuva;
765        AddCollisionHandler(raha, RahaanTormays);
766        return raha;
767    }
768
769    void RahaanTormays(PhysicsObject raha, PhysicsObject kohde)
770    {
771        if(kohde == porkkana)
772        {
773            pistelaskuri.Value += 100;
774            raha.Destroy();
775        }
776    }
777
778    void TeeKentta1()
779    {       
780        MediaPlayer.Stop();
781       
782        TileMap kentta = TileMap.FromFile("kentta1.txt");
783        kentta['#'] = lisaaTaso;
784        kentta['K'] = lisaaTaso2;
785        kentta['G'] = lisaaTaso3;
786        kentta['N'] = lisaaPelaaja;
787        kentta['E'] = lisaaTomaatti;
788        kentta['L'] = LuoLipas;
789        kentta['A'] = LuoKranaatti;
790        kentta['T'] = lisaaTomaatti2;
791        kentta['M'] = LuoMaali;
792        kentta['R'] = LuoRaha;
793        kentta['G'] = lisaaTaso3;
794        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
795        Level.CreateBorders();
796        Level.Background.CreateGradient(Color.Blue, Color.Black);
797
798        Gravity = new Vector(0, -1000);
799       
800        LuoPanosLaskuri();
801        LuoPisteLaskuri();
802        LuoKranaattiLaskuri();
803
804        Camera.Follow(porkkana);
805
806        Camera.ZoomFactor = 0.5;
807        Camera.StayInLevel = true;
808
809        lisaaNappaimet();
810    }
811
812    void TeeKentta2()
813    {       
814       
815        MediaPlayer.Stop();       
816       
817        TileMap kentta = TileMap.FromFile("kentta2.txt");
818        kentta['#'] = lisaaTaso;
819        kentta['K'] = lisaaTaso2;
820        kentta['G'] = lisaaTaso3;
821        kentta['N'] = lisaaPelaaja;
822        kentta['E'] = lisaaTomaatti;
823        kentta['L'] = LuoLipas;
824        kentta['A'] = LuoKranaatti;
825        kentta['T'] = lisaaTomaatti2;
826        kentta['M'] = LuoMaali;
827        kentta['R'] = LuoRaha;
828        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
829        Level.CreateBorders();
830        Level.Background.CreateGradient(Color.Black, Color.Blue);
831
832        Gravity = new Vector(0, -1000);
833       
834        LuoPanosLaskuri();
835        LuoPisteLaskuri();
836        LuoKranaattiLaskuri();
837
838        Camera.Follow(porkkana);
839
840        Camera.ZoomFactor = 2.0;
841        Camera.StayInLevel = true;
842       
843        lisaaNappaimet();
844    }
845   
846    //void TeeKentta3()
847    //{
848    //    MediaPlayer.Stop();
849
850    //    TileMap kentta = TileMap.FromFile("kentta3.txt");
851    //    kentta['#'] = lisaaTaso;
852    //    kentta['K'] = lisaaTaso2;
853    //    kentta['G'] = lisaaTaso3;
854    //    kentta['N'] = lisaaPelaaja;
855    //    kentta['E'] = lisaaTomaatti;
856    //    kentta['L'] = LuoLipas;
857    //    kentta['A'] = LuoKranaatti;
858    //    kentta['T'] = lisaaTomaatti2;
859    //    kentta['M'] = LuoMaali;
860    //    kentta['R'] = LuoRaha;
861    //    kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
862    //    Level.CreateBorders();
863    //    Level.Background.CreateGradient(Color.Black, Color.Blue);
864
865    //    Gravity = new Vector(0, -1000);
866
867    //    LuoPanosLaskuri();
868    //    LuoPisteLaskuri();
869    //    LuoKranaattiLaskuri();
870
871    //    Camera.Follow(porkkana);
872
873    //    Camera.ZoomFactor = 1.0;
874    //    Camera.StayInLevel = true;
875
876    //    lisaaNappaimet();
877    //
878    //}
879
880    void cheatIkkuna()
881    {
882        InputWindow cheatIkkuna = new InputWindow("Cheatikkuna", "Anna cheatkoodi");
883        cheatIkkuna.TextEntered += ProcessInput;
884        Add(cheatIkkuna);
885    }
886
887    void ProcessInput(InputWindow cheatikkuna)
888    {
889        string vastaus = cheatikkuna.InputBox.Text;
890
891        if (vastaus == cheat1)
892        {
893            pelaajallaOnLaser = true;
894            kentanNro = 1;
895            SeuraavaKentta(kentanNro);
896            MessageDisplay.Add("Laserase aktivoitu!");
897
898        }
899
900        if (vastaus == cheat2)
901        {
902            Gravity = new Vector(0, -250);
903            MessageDisplay.Add("Pieni painovoima aktivoitu!");
904        }
905
906        if (vastaus == cheat3)
907        {
908            Gravity = new Vector(0, -1000);
909            pelaajallaOnLaser = false;
910            MessageDisplay.Add("Kaikki cheatit poistettu!");
911        }
912
913        else
914        {
915            MessageDisplay.Add("Väärä koodi!");
916        }
917 
918    }
919}             
Note: See TracBrowser for help on using the repository browser.