source: 2012/24/LauriK/Call of Garden Tomato oppression/Call of Garden Tomato oppression/Call of Garden Tomato oppression/Call_of_Garden_Tomato_oppression.cs @ 3132

Revision 3132, 27.5 KB checked in by sijoseha, 9 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Call_of_Garden_Tomato_oppression : PhysicsGame
10{   
11    const double nopeus = 200;
12    const double hyppyNopeus = 500;
13    const int RUUDUN_KOKO = 40;
14    int kenttaNro = 0;
15
16    Label otsikko;
17   
18    IntMeter pisteLaskuri;
19   
20    public bool IntelKeratty = false;
21    public bool pelaajallaOnAse = false;
22    public bool vihuEiAmmu = false;
23   
24    string cheat1 = "MaxAmmo";
25   
26    DoubleMeter voimaMittari;
27    IntMeter ammusLaskuri;
28    ScoreList topLista = new ScoreList(10, false, 0);
29
30    PlatformCharacter porkkana;
31
32    Image ValikkoTaustaKuva = LoadImage("city");
33   
34    Image kansio = LoadImage("kansio");
35   
36    Image lippaanKuva = LoadImage("Lipas2");
37   
38    Image aseenKuva = LoadImage("AsRifle");
39
40    Image rahanKuva = LoadImage("Raha");
41
42    Image piikkiKuva = LoadImage("Piikkilanka");
43   
44    Image paikallaanOikealle = LoadImage("Porkkana");
45    Image paikallaanVasemmalle;
46
47    Image[] kavelyOikealle = LoadImages("Porkkana", "Porkkana 1", "Porkkana 2", "Porkkana 3");
48    Image[] kavelyVasemmalle;
49 
50    Image[] potkuOikealle = LoadImages("Porkkana", "Porkkana 2.1", "Porkkana 2.2", "Porkkana 2.3");
51    Image[] potkuVasemmalle;
52
53    Image[] tomaatinKuva = LoadImages("tomaatti");
54    Image[] tomaatinKuvaPeilattu;
55
56    public override void Begin()
57    {
58        if (DataStorage.Exists("pisteet.xml"))
59        topLista = DataStorage.Load<ScoreList>(topLista, "pisteet.xml");
60
61        ClearAll();
62
63        MediaPlayer.Play("teema");
64
65        kenttaNro = 0;       
66        seuraavaKentta(kenttaNro); 
67    }
68
69    void valikko()
70    {
71        kenttaNro = 0;
72        ClearAll();
73       
74        MultiSelectWindow valikko = new MultiSelectWindow("",
75        "Start Game", "Highscores", "Controls", "Exit");
76        valikko.ItemSelected += PainettiinValikonNappia;
77        Add(valikko);
78        valikko.DefaultCancel = 3;
79        valikko.Color = Color.Transparent;
80        valikko.SetButtonColor(Color.Silver);
81        valikko.SelectionColor = Color.LimeGreen;
82
83        otsikko = new Label(5000, 5000);
84        otsikko.Text = "Call of Garden: Tomato Oppression";
85        otsikko.TextColor = Color.Ruby;
86        //otsikko.X = Screen.Center;
87        otsikko.Y = valikko.Y + 200;
88        otsikko.Font = Font.DefaultLargeBold;
89        Add(otsikko);
90
91        MessageDisplay.BackgroundColor = Color.Transparent;
92        MessageDisplay.TextColor = Color.Ruby;
93
94        MediaPlayer.Resume();
95        MediaPlayer.IsRepeating = true;
96        MediaPlayer.Volume = 1.0;
97
98        Level.Background.Image = ValikkoTaustaKuva;
99        Level.Background.Width = Screen.Width;
100        Level.Background.Height = Screen.Height;
101        Level.Background.Position = Screen.Center;
102
103    }
104
105    void AloitaPeli()
106    {
107        MediaPlayer.Pause();
108        MediaPlayer.IsRepeating = false;
109
110        otsikko.Destroy();
111       
112        Gravity = new Vector(0, -1000);
113
114        Level.Background.Image = null;
115
116        paikallaanVasemmalle = Image.Mirror(paikallaanOikealle);
117        kavelyVasemmalle = Image.Mirror(kavelyOikealle);
118
119        potkuVasemmalle = Image.Mirror(potkuOikealle);
120
121        tomaatinKuvaPeilattu = Image.Mirror(tomaatinKuva);
122
123        if (kenttaNro == 1)
124        {
125            luoKentta("kentta2");
126        }
127
128        else if (kenttaNro == 2)
129        {
130            luoKentta2("kentta2");
131        }
132
133        Camera.Follow(porkkana);
134        Camera.ZoomFactor = 1;
135        Camera.StayInLevel = true;
136    }
137   
138    void seuraavaKentta(int kenttaNro)
139    {
140        if (kenttaNro == 0) valikko();
141        else if (kenttaNro == 1) AloitaPeli();
142        else if (kenttaNro == 2) AloitaPeli();
143        //else if (kenttaNro == 3) LuoKentta("kentta3.txt");
144        else if (kenttaNro == 3) LopetaPeli();
145    }
146   
147    void luoKentta(string levelFile)
148    {
149        TileMap ruudut = TileMap.FromLevelAsset(levelFile);
150       
151        ruudut.SetTileMethod('P', lisaaPelaaja);
152        ruudut.SetTileMethod('T', lisaaTomaatti);
153        ruudut.SetTileMethod('-', lisaaTaso);
154        ruudut.SetTileMethod('_', lisaaTaso2);
155        ruudut.SetTileMethod('I', lisaaIntel);
156        ruudut.SetTileMethod('L', luoLipas);
157        ruudut.SetTileMethod('M', luoMaali);
158        ruudut.SetTileMethod('A', AseMaassa);
159        ruudut.SetTileMethod('R', luoRaha);
160        ruudut.SetTileMethod('p', luoPiikkiLanka);
161        ruudut.Execute(20, 20);
162
163        //Level.Background.Destroy();
164        Level.CreateBorders();
165        luoPisteLaskuri();
166        luoVoimaMittari();
167        lisaaNappaimet();
168       
169        Level.Background.Image = ValikkoTaustaKuva;
170        //Level.Background.Width = Screen.Width;
171        //Level.Background.Height = Screen.Height;
172        //Level.Background.Position = Screen.Center;
173        Level.Background.MovesWithCamera = false;
174        //GameObject taustaKuva = new GameObject(Screen.Width, Screen.Height);
175        //taustaKuva.Image = ValikkoTaustaKuva;
176        //taustaKuva.TextureFillsShape = true;
177        ////taustaKuva.Image.Height = Screen.Height;
178        //Add(taustaKuva, -3);
179        //Layers[-3].RelativeTransition = new Vector(0.5, 0.5);
180
181        Gravity = new Vector(0, -1000);
182    }
183
184    void luoKentta2(string levelFile)
185    {
186                TileMap ruudut = TileMap.FromLevelAsset(levelFile);
187       
188        ruudut.SetTileMethod('P', lisaaPelaaja);
189        ruudut.SetTileMethod('T', lisaaTomaatti);
190        ruudut.SetTileMethod('-', lisaaTaso);
191        ruudut.SetTileMethod('_', lisaaTaso2);
192        ruudut.SetTileMethod('I', lisaaIntel);
193        ruudut.SetTileMethod('L', luoLipas);
194        ruudut.SetTileMethod('M', luoMaali);
195        ruudut.SetTileMethod('A', AseMaassa);
196        ruudut.SetTileMethod('R', luoRaha);
197        ruudut.SetTileMethod('p', luoPiikkiLanka);
198        ruudut.Execute(20, 20);
199
200        //Level.Background.Destroy();
201        Level.CreateBorders();
202        luoPisteLaskuri();
203        luoVoimaMittari();
204        lisaaNappaimet();
205       
206        Level.Background.Image = ValikkoTaustaKuva;
207        //Level.Background.Width = Screen.Width;
208        //Level.Background.Height = Screen.Height;
209        //Level.Background.Position = Screen.Center;
210        Level.Background.MovesWithCamera = false;
211        //GameObject taustaKuva = new GameObject(Screen.Width, Screen.Height);
212        //taustaKuva.Image = ValikkoTaustaKuva;
213        //taustaKuva.TextureFillsShape = true;
214        ////taustaKuva.Image.Height = Screen.Height;
215        //Add(taustaKuva, -3);
216        //Layers[-3].RelativeTransition = new Vector(0.5, 0.5);
217
218        Gravity = new Vector(0, -1000);
219    }
220   
221    void lisaaTaso(Vector paikka, double leveys, double korkeus)
222    {
223        PhysicsObject taso = new PhysicsObject(leveys, korkeus);
224        taso.Mass = 4000000000000000000;
225        taso.IgnoresGravity = true;
226        taso.IgnoresCollisionResponse = false;
227        taso.Position = paikka;
228        taso.Color = Color.Gray;
229        Add(taso);
230    }
231
232    void lisaaPelaaja(Vector paikka, double leveys, double korkeus)
233    {
234        porkkana = new PlatformCharacter(leveys, korkeus);
235        porkkana.Mass = 4.0;
236        porkkana.Position = paikka;
237
238        porkkana.IgnoresExplosions = true;
239       
240        porkkana.Tag = "Porkkana";
241
242        porkkana.RightIdleAnimation = new Animation(paikallaanOikealle);
243        porkkana.LeftIdleAnimation = new Animation(paikallaanVasemmalle);
244
245        porkkana.RightWalkingAnimation = new Animation(kavelyOikealle);
246        porkkana.LeftWalkingAnimation = new Animation(kavelyVasemmalle);
247
248        //porkkana.Animation.FPS = 100;
249       
250        Add(porkkana);
251    }
252
253    void lisaaTomaatti(Vector paikka, double leveys, double korkeus)
254    {
255        PlatformCharacter tomaatti = new PlatformCharacter(leveys, korkeus);
256        tomaatti.Position = paikka;
257   
258        tomaatti.Mass = 0.5;
259       
260        tomaatti.Weapon = new AssaultRifle(10, 5);
261        tomaatti.Weapon.Ammo.Value = 100000;
262        //tomaatti.Weapon.Position = paikka;
263        //tomaatti.Weapon.Y = tomaatti.Y - 10;
264
265        tomaatti.RightWalkingAnimation = new Animation(tomaatinKuva);
266        tomaatti.LeftWalkingAnimation = new Animation(tomaatinKuvaPeilattu);
267
268        FollowerBrain seuraajanAivot = new FollowerBrain();
269        tomaatti.Brain = seuraajanAivot;
270        seuraajanAivot.Target = porkkana;
271        seuraajanAivot.Speed = 200;
272        seuraajanAivot.TargetFollowDistance = 300;
273        seuraajanAivot.FollowAlways = true;
274        seuraajanAivot.Active = false;
275        seuraajanAivot.TargetCloseDistance = 200;
276        seuraajanAivot.StopWhenTargetClose = false;
277
278        RandomMoverBrain randomAivot = new RandomMoverBrain();
279        tomaatti.Brain = randomAivot;
280        randomAivot.ChangeMovementSeconds = RandomGen.NextDouble(1, 20);
281
282        randomAivot.Active = true;
283             
284        PhysicsObject nakokentta = new PhysicsObject(100, 50);
285        nakokentta.Image = LoadImage("Varokentta");
286        nakokentta.Position = tomaatti.Position;
287        Add(nakokentta);
288        nakokentta.IgnoresCollisionResponse = true;
289
290        Timer nakokentanLiikuttamisAjastin = new Timer();
291        nakokentanLiikuttamisAjastin.Interval = 0.01;
292        nakokentanLiikuttamisAjastin.Start();
293        nakokentanLiikuttamisAjastin.Timeout += delegate
294        {
295            nakokentta.Position = tomaatti.Position;
296        };
297
298        DoubleMeter tomaattiMittari = new DoubleMeter(10);
299        tomaattiMittari.MaxValue = 10;
300        tomaattiMittari.MinValue = 0;
301       
302        ProgressBar tomaattiPalkki = new ProgressBar(15, 3);
303       
304        Timer mittarinLiikuttamisAjastin = new Timer();
305        mittarinLiikuttamisAjastin.Interval = 0.01;
306        mittarinLiikuttamisAjastin.Start();
307        mittarinLiikuttamisAjastin.Timeout += delegate
308        {
309            tomaattiPalkki.Position = tomaatti.Position;
310            tomaattiPalkki.Y = tomaatti.Y + 20;
311        };
312 
313        tomaattiPalkki.BindTo(tomaattiMittari);
314        Add(tomaattiPalkki,0);
315
316        tomaattiMittari.LowerLimit += delegate(double mittarinArvo)
317        {
318            PhysicsObject kuollutTomaatti = new PhysicsObject(1,1);
319            kuollutTomaatti.Size = tomaatti.Size;
320            kuollutTomaatti.Position = tomaatti.Position;
321            kuollutTomaatti.Y = tomaatti.Y + 10;
322            kuollutTomaatti.IgnoresExplosions = true;
323            kuollutTomaatti.IgnoresCollisionResponse = true;
324            kuollutTomaatti.IgnoresGravity = true;
325            tomaatti.X = 100000000;
326            tomaatti.Y = 100000000;
327            kuollutTomaatti.MaximumLifetime = TimeSpan.FromSeconds(5.0);
328            kuollutTomaatti.Image = LoadImage("Tomaattikuolleena");
329            pisteLaskuri.Value += 100;
330            MessageDisplay.Add("You killed a tomato!");
331            tomaattiPalkki.Destroy();
332            tomaatti.Destroy();
333            nakokentta.Destroy();
334            Add(kuollutTomaatti);
335        }
336        ;
337
338        tomaattiPalkki.X = tomaatti.X;
339        tomaattiPalkki.Y = tomaatti.Y + 20;
340        tomaattiPalkki.Image = LoadImage("tomaattipalkki_tyhja");
341        tomaattiPalkki.BarImage = LoadImage("tomaattipalkki_taysi");
342
343        Timer tomaattiHuomasi = new Timer();
344        tomaattiHuomasi.Interval = 0.1;
345        tomaattiHuomasi.Timeout += delegate
346        {
347            if (nakokentta.IsInside(porkkana.Position))
348            {
349                if (tomaatti.FacingDirection != porkkana.FacingDirection)
350                {
351                    if (vihuEiAmmu == false)
352                    {
353                        seuraajanAivot.Active = true;
354                        randomAivot.Active = false;
355                        MediaPlayer.Play("Warning");
356                        MediaPlayer.IsRepeating = true;
357                        VihuAmpuu(tomaatti);
358                    }
359                }
360            }
361
362            //else
363            //{
364            //    Timer.SingleShot(5, delegate
365            //    {
366            //        seuraajanAivot.Active = false;
367            //        randomAivot.Active = true;
368            //        MediaPlayer.Pause();
369            //    });
370            //}   
371        };
372        tomaattiHuomasi.Start();
373
374        AddCollisionHandler(tomaatti, "ammus", delegate (PhysicsObject p, PhysicsObject o)
375        {
376            tomaatinElamat(tomaatti, nakokentta, 5, tomaattiMittari);
377            pisteLaskuri.Value += 10;
378        }
379        );
380
381        AddCollisionHandler(tomaatti, "ammus", CollisionHandler.DestroyTarget);
382       
383        Keyboard.Listen(Key.Q, ButtonState.Pressed, delegate
384        {
385            if(tomaatti.FacingDirection == porkkana.FacingDirection && tomaatti.X-porkkana.X < 10 && tomaatti.X-porkkana.X > -10)
386            {
387                tomaatinElamat(tomaatti, nakokentta, 100, tomaattiMittari);
388                porkkana.Animation = new Animation(potkuOikealle);
389                porkkana.Animation.Start(5);
390                MessageDisplay.Add("You assasinated a tomato!");
391                pisteLaskuri.Value += 1000;
392            }
393           
394            else if (tomaatti.FacingDirection != porkkana.FacingDirection && tomaatti.X - porkkana.X < 10 && tomaatti.X - porkkana.X > -10)
395            {
396                tomaatinElamat(tomaatti, nakokentta, 10, tomaattiMittari);
397                pisteLaskuri.Value += 10;
398            }
399
400        }, "Lyö tomaattia");
401
402        Add(tomaatti);
403    }
404   
405    protected override void Update(Time time)
406    {
407
408        base.Update(time);
409
410    } 
411   
412    void tomaatinElamat(PlatformCharacter tomaatti, PhysicsObject nakokentta, double damage, DoubleMeter tomaattiMittari)
413    {
414        tomaattiMittari.Value -= damage;
415    }
416   
417
418    void lisaaTaso2(Vector paikka, double leveys, double korkeus)
419    {
420        PhysicsObject taso2 = PhysicsObject.CreateStaticObject(leveys, korkeus);
421        taso2.Color = Color.ForestGreen;
422        taso2.Position = paikka;
423        Add(taso2);
424    }
425
426    void lisaaIntel(Vector paikka, double leveys, double korkeus)
427    {
428        PhysicsObject Intel = new PhysicsObject(leveys, korkeus);
429        Intel.Position = paikka;
430        Intel.Image = kansio;
431        Intel.Mass = 4.0;
432
433        AddCollisionHandler<PhysicsObject, PlatformCharacter>(Intel, "Porkkana", PoimiIntel);
434
435        Add(Intel);
436    }
437
438    void PoimiIntel(PhysicsObject kansio, PlatformCharacter pelaaja)
439    {
440        kansio.Destroy();
441        MessageDisplay.Add("You picked up the files!\n Now return to the base.");
442        IntelKeratty = true;
443    }
444   
445   
446    void lisaaNappaimet()
447    {
448        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
449        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
450
451        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", porkkana, -nopeus);
452        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu vasemmalle", porkkana, nopeus);
453        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", porkkana, hyppyNopeus);
454       
455        Keyboard.Listen(Key.Space, ButtonState.Down, ammuAseella, "Ammu aseella");
456       
457        Keyboard.Listen(Key.W, ButtonState.Down, TahtaaYlos, "Tähtää ylös");
458        Keyboard.Listen(Key.S, ButtonState.Down, TahtaaAlas, "Tähtää alas");
459       
460        Keyboard.Listen(Key.A, ButtonState.Pressed, cheatIkkuna, "Avaa cheatikkuna");
461        Keyboard.Listen(Key.M, ButtonState.Pressed, musiikkiIkkuna, "Avaa musiikki-ikkuna");
462
463        ControllerOne.Listen(Button.Back, ButtonState.Pressed, ConfirmExit, "Poistu pelistä");
464
465        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", porkkana, -nopeus);
466        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", porkkana, nopeus);
467        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", porkkana, hyppyNopeus);
468
469        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
470    }
471
472    void liikuta(PlatformCharacter hahmo, double nopeus)
473    {
474        hahmo.Walk(nopeus);
475    }
476
477    void hyppaa(PlatformCharacter hahmo, double nopeus)
478    {
479        hahmo.Jump(nopeus);
480    }
481
482    void ammuAseella()
483    {
484        if (pelaajallaOnAse == true)
485        {
486
487            PhysicsObject ammus = porkkana.Weapon.Shoot();
488
489            if (ammus != null)
490            {
491                ammus.Tag = "ammus";
492                ammus.Size *= 0.5;
493                ammus.Restitution = 0.9;
494                ammus.MaximumLifetime = TimeSpan.FromSeconds(5);
495            }
496        }
497    }
498   
499    void TahtaaYlos()
500    {
501        if (pelaajallaOnAse == true)
502        {
503            if (porkkana.FacingDirection == Direction.Right)
504            {
505                porkkana.Weapon.Angle += Angle.FromDegrees(5);
506            }
507            if (porkkana.FacingDirection == Direction.Left)
508            {
509                porkkana.Weapon.Angle += Angle.FromDegrees(-5);
510            }
511        }
512    }
513
514    void TahtaaAlas()
515    {
516        if (pelaajallaOnAse == true)
517        {
518            if (porkkana.FacingDirection == Direction.Right)
519            {
520                porkkana.Weapon.Angle += Angle.FromDegrees(-5);
521            }
522            if (porkkana.FacingDirection == Direction.Left)
523            {
524                porkkana.Weapon.Angle += Angle.FromDegrees(5);
525            }
526        }
527    }
528
529    void cheatIkkuna()
530    {     
531        InputWindow cheatIkkuna = new InputWindow("CheatikkunaAnna cheatkoodi");
532        cheatIkkuna.TextEntered += ProcessInput;
533        Add(cheatIkkuna);
534    }
535
536    void musiikkiIkkuna()
537    {
538        MultiSelectWindow musiikkivalikko = new MultiSelectWindow("Choose song", "Pullava-song",
539        "Derp-song", "Super Mario- song", "Simpsons theme song", "Ghostbusters theme song", "Spy theme song", "Pause current song");
540        musiikkivalikko.ItemSelected += PainettiinMusiikkiValikonNappia;
541        Add(musiikkivalikko);
542    }
543   
544    void ProcessInput(InputWindow cheatikkuna)
545    {
546        string vastaus = cheatikkuna.InputBox.Text;
547
548        if (vastaus == cheat1)
549        {
550            if (pelaajallaOnAse == true)
551            {
552                porkkana.Weapon.Ammo.Value = 100;
553            }
554        }
555    }
556
557    void PainettiinValikonNappia(int valinta)
558    {
559        switch (valinta)
560        {
561            case 0:
562
563                kenttaNro++;
564                seuraavaKentta(kenttaNro);
565               
566                break;
567           
568            case 1:
569
570                Keyboard.Listen(Key.Enter, ButtonState.Pressed, valikko, "Palaa päävalikkoon");
571
572                HighScoreWindow topIkkuna = new HighScoreWindow(
573                "Highscores",
574                topLista );
575                topIkkuna.Closed += TallennaPisteet;
576                 
577                Add( topIkkuna );
578
579                break;
580           
581            case 2:
582
583                MediaPlayer.Pause();
584               
585                lisaaNappaimet();
586                ShowControlHelp();
587                ClearControls();
588                valikko();
589               
590                break;
591           
592            case 3:
593               
594                Exit();
595               
596                break;
597        } 
598    }
599
600    void PainettiinMusiikkiValikonNappia(int valinta)
601    {
602        switch (valinta)
603        {
604            case 0:
605                MediaPlayer.Play("Pullava");
606                MessageDisplay.Add("Pullava-song activated!");
607                break;
608            case 1:
609                MediaPlayer.Play("derp");
610                MessageDisplay.Add("Derp-song activated!");
611                break;
612            case 2:
613                MediaPlayer.Play("super mario");
614                MessageDisplay.Add("Super Mario-song activated!");
615                break;               
616            case 3:
617                MediaPlayer.Play("simpsons");
618                MessageDisplay.Add("Simpsons theme song activated!");
619                break;
620            case 4:
621                MediaPlayer.Play("ghostbusters");
622                MessageDisplay.Add("Ghostbusters theme song activated!");
623                break;
624           
625            case 5:
626                MediaPlayer.Play("teema");
627                MessageDisplay.Add("Spy theme activated!");
628                break;
629           
630            case 6:
631                MediaPlayer.Pause();
632                MessageDisplay.Add("Music paused!");
633                break;
634       
635        }
636
637    }
638
639    void VihuAmpuu(PlatformCharacter pahis)
640    {
641            Timer ajastin = new Timer();
642            ajastin.Interval = 0.01;
643            ajastin.Timeout += delegate
644            {
645                if (vihuEiAmmu == false)
646                {
647                    Vector suunta = (porkkana.Position - pahis.Position).Normalize();
648                    pahis.Angle = suunta.Angle;
649
650                    PhysicsObject VihuAmmus = pahis.Weapon.Shoot();
651
652                    pahis.Weapon.ProjectileCollision = VihuAmmusOsui;
653
654                    if (VihuAmmus != null)
655                    {
656                        VihuAmmus.Size *= 0.5;
657                        VihuAmmus.Restitution = 0.1;
658                        VihuAmmus.MaximumLifetime = TimeSpan.FromSeconds(5);
659                    }
660                }
661            };
662            ajastin.Start();
663    }
664
665    void VihuAmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
666    {
667        if (kohde.Tag.ToString() == "Porkkana")
668        {
669            porkkanaOttaaOsumaa(1);
670            ammus.Destroy();
671        }
672
673        else
674        {
675            ammus.Destroy();
676        }
677   
678    }
679
680    void porkkanaOttaaOsumaa(double maara)
681    {
682        voimaMittari.Value -= maara;
683
684        if (voimaMittari.Value < 1)
685        {
686            MessageDisplay.Add("You died!");
687            LopetaPeli();
688        }
689    }
690
691    void luoVoimaMittari()
692    {
693        voimaMittari = new DoubleMeter(10);
694        voimaMittari.MaxValue = 10;
695
696        ProgressBar voimaPalkki = new ProgressBar(150, 30);
697        voimaPalkki.BindTo(voimaMittari);
698        Add(voimaPalkki);
699
700        voimaPalkki.X = Screen.Right - 200;
701        voimaPalkki.Y = Screen.Top - 110;
702
703        voimaPalkki.Image = LoadImage("tyhjapalkki");
704        voimaPalkki.BarImage = LoadImage("taysipalkki");
705
706        Label voimaTeksti = new Label("Health: ");
707        voimaTeksti.TextColor = Color.White;
708        voimaTeksti.X = voimaPalkki.X - 100;
709        voimaTeksti.Y = voimaPalkki.Y;
710        Add(voimaTeksti);
711
712    }
713
714    void luoPisteLaskuri()
715    {
716        pisteLaskuri = new IntMeter(0);
717
718        Label pisteNaytto = new Label();
719        pisteNaytto.X = Screen.Left + 100;
720        pisteNaytto.Y = Screen.Top - 100;
721        pisteNaytto.TextColor = Color.White;
722
723        pisteNaytto.BindTo(pisteLaskuri);
724        Add(pisteNaytto);
725
726        Label pisteTeksti = new Label("Points: ");
727        pisteTeksti.X = Screen.Left + 50;
728        pisteTeksti.Y = Screen.Top - 100;
729        pisteTeksti.TextColor = Color.White;
730        Add(pisteTeksti);
731
732    }
733   
734    void LopetaPeli()
735    {
736        MediaPlayer.Stop();
737
738        vihuEiAmmu = true;
739       
740        MediaPlayer.Play("teema");
741       
742        HighScoreWindow topIkkuna = new HighScoreWindow(
743                             "Highscores",
744                             "Congratulations, you got a highscore: %p!\n Enter your name:",
745                             topLista, pisteLaskuri.Value);
746        topIkkuna.Closed += TallennaPisteet;
747        Add(topIkkuna);
748    }
749
750    void TallennaPisteet(Window sender)
751    {
752        MediaPlayer.Pause();
753        DataStorage.Save<ScoreList>(topLista, "pisteet.xml");
754        ClearAll();
755        ClearGameObjects();
756        Level.Background.Image = ValikkoTaustaKuva;
757        Level.Background.Width = Screen.Width;
758        Level.Background.Height = Screen.Height;
759        Level.Background.Position = Screen.Center;
760
761        valikko();
762    }
763
764    void LuoAmmusLaskin()
765    {
766        ammusLaskuri = new IntMeter(0);
767
768        Label ammusNaytto = new Label();
769        ammusNaytto.X = Screen.Left + 100;
770        ammusNaytto.Y = Screen.Top - 50;
771        ammusNaytto.TextColor = Color.White;
772
773        ammusNaytto.BindTo(porkkana.Weapon.Ammo);
774        Add(ammusNaytto);
775
776        Label ammusTeksti = new Label("Ammo: ");
777        ammusTeksti.X = Screen.Left + 50;
778        ammusTeksti.Y = Screen.Top - 50;
779        ammusTeksti.TextColor = Color.White;
780        Add(ammusTeksti);
781
782    }
783
784    void luoLipas(Vector paikka, double leveys, double korkeus)
785    {
786        PhysicsObject lipas = new PhysicsObject(leveys, korkeus);
787        lipas.Height = 10;
788        lipas.Width = 10;
789        lipas.Image = lippaanKuva;
790        lipas.Tag = "lipas";
791        lipas.Position = paikka;
792        Add(lipas);
793    }
794
795    void luoMaali(Vector paikka, double leveys, double korkeus)
796    {
797        PhysicsObject maali = new PhysicsObject(leveys, korkeus);
798        maali.Color = Color.Transparent;
799        maali.Mass = 4;
800        maali.Position = paikka;
801        maali.IgnoresCollisionResponse = true;
802        maali.IgnoresGravity = true;
803
804        Add(maali);
805
806        AddCollisionHandler(maali, porkkana, delegate
807        {
808            if (IntelKeratty == true)
809            {
810                pisteLaskuri.Value += 500;
811                kenttaNro++;
812                seuraavaKentta(kenttaNro);
813            }
814        });
815
816    }
817
818    void AseMaassa(Vector paikka, double leveys, double korkeus)
819    {
820        PhysicsObject ase = new PhysicsObject(aseenKuva);
821        ase.Position = paikka;
822        Add(ase);
823
824        AddCollisionHandler(ase, porkkana, delegate
825        {
826            pelaajaSaiAseen();
827            pisteLaskuri.Value += 50;
828            ase.Destroy();
829        });
830    }
831
832    void pelaajaSaiAseen()
833    {
834            porkkana.Weapon = new AssaultRifle(10, 5);
835            //porkkana.Weapon.Position = paikka;
836            //porkkana.Weapon.X = porkkana.X + 5;
837            porkkana.Weapon.Ammo.Value = 0;
838            porkkana.Weapon.Ammo.Value += 20;
839            LuoAmmusLaskin();
840            pelaajallaOnAse = true;
841
842            AddCollisionHandler<PhysicsObject, PhysicsObject>(porkkana, "lipas", delegate
843            {
844                porkkana.Weapon.Ammo.Value += 10;
845                pisteLaskuri.Value += 50;
846                MessageDisplay.Add("You picked up 10 ammo!");
847
848            });
849           
850            AddCollisionHandler(porkkana, "lipas", CollisionHandler.DestroyTarget);
851    }
852
853    void luoRaha(Vector paikka, double korkeus, double leveys)
854    {
855        PhysicsObject raha = new PhysicsObject(10, 10);
856        raha.Image = rahanKuva;
857        raha.Position = paikka;
858        Add(raha);
859
860        AddCollisionHandler(raha, porkkana, delegate
861        {
862            pisteLaskuri.Value += 100;
863        });
864
865        AddCollisionHandler(raha, porkkana, CollisionHandler.DestroyObject);
866    }
867
868    void luoPiikkiLanka(Vector paikka, double korkeus, double leveys)
869    {
870        PhysicsObject piikkiLanka = new PhysicsObject(korkeus, leveys);
871        piikkiLanka.Image = piikkiKuva;
872        piikkiLanka.Position = paikka;
873        piikkiLanka.Mass = 2000000;
874        Add(piikkiLanka);
875
876        AddCollisionHandler(piikkiLanka, porkkana, delegate
877        {
878            voimaMittari.Value -= 25;
879        });
880    }
881
882}
Note: See TracBrowser for help on using the repository browser.