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

Revision 2444, 24.7 KB checked in by lavevake, 12 years ago (diff)

Beta 1.9

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