source: 2016/27/PaavoH/UltimateAdventure/UltimateAdventure/UltimateAdventure/UltimateAdventure.cs @ 8794

Revision 8794, 29.1 KB checked in by npo17_0, 4 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8using System.IO;
9
10public class UltimateAdventure : PhysicsGame
11{
12    double nopeus = 200;
13    const double JumpSpeed = 750;
14    const int RUUDUN_KOKO = 40;
15    IntMeter Pommit = new IntMeter(50);
16    Double Painovoima = -1000;
17    DoubleMeter DrownTime = new DoubleMeter (0.5);
18    bool saapiiskata = true;
19    bool saapommittaa = true;
20    bool NinjaIsRaged = false;
21    PushButton TextureButton;
22    PushButton FullScreenButton;
23    DoubleMeter aani = new DoubleMeter(0, 0, 1);
24    private IntMeter OxygenMeter;
25    List<string> destroybleThings = new List<string>(new string[]{ "PhysicsBlock", "moonstone", "turret", "snake", "silmamob","wizard","Ninja"});
26    List<string> JumpThings = new List<string>(new string[] { "PhysicsBlock", "moonstone", "turret", "NBO"});
27
28    PlatformCharacter pelaaja1;
29    IntMeter elamaLaskuri;
30
31    Image tahtiKuva = LoadImage("tahti");
32    Image Bpimage = LoadImage("stoneplatform");
33    Image silmamobimage = LoadImage("silmamob");
34    Image veripartikkeli = LoadImage("veripartikkeli");
35    Image playerhealth = LoadImage("playerhealth");
36    Image Bomb = LoadImage("bomb");
37    Image Arrow = LoadImage("Arrow");
38    Image PhysicBlockImage = LoadImage("PhysicBlockTexture");
39    Image TurretImage = LoadImage("TurretTextureV1");
40    Image Snake = LoadImage("snake");
41    Image Player = LoadImage("PlayerV2");
42    Image SpeedShoeImage = LoadImage("SpeedShoe");
43    Image MoonstoneImage = LoadImage("Moonstone");
44    Image WizardrWand = LoadImage("WizardingWandV3");
45    Image LogoImage = LoadImage("LogoV1");
46    Image NinjaImage = LoadImage("Ninja");
47    Image Ninjathings = LoadImage("NinjaThings");
48    Image WizParticle = LoadImage("WizardingParticle");
49    Image AchivementBottom = LoadImage("AchivementBottom");
50    //Image marsstone = LoadImage("marsstone");
51    Image OxygenBottleImage = LoadImage("OxygenBottle");
52    Image NinjaStarImage = LoadImage("Shurigen");
53    Image Empty = LoadImage("Empty");
54    Image LittleGreenMan = LoadImage("LittleGreenManV2");
55
56    SoundEffect maaliAani = LoadSoundEffect("maali");
57    SoundEffect WizardZap = LoadSoundEffect("WizardZap");
58    Animation Ruoskanimaatio;
59    Animation Snakiitio;
60
61    GameObject Logo;
62
63    double aanenvoimakkuus = 0.1;
64
65    public override void Begin()
66    {
67        Snakiitio = LoadAnimation("SnakeV2");
68        Ruoskanimaatio = LoadAnimation("ruoska");
69        DataSave tulos = null;
70        tulos = DataStorage.Load<DataSave>(tulos, "Options.xml");
71        SmoothTextures = tulos.IsSmoothTex;
72        IsFullScreen = tulos.FullScreen;
73        aani.Value = tulos.Volume;
74        LuoAlkuValikko();
75
76
77    }
78
79    void LuoAlkuValikko()
80    {
81        ClearAll();
82        LuoLogo();
83        IsMouseVisible = true;
84
85        PushButton RunGame = new PushButton("Start");
86        RunGame.Y = 80;
87        RunGame.Clicked +=  AloitaPeli;
88        RunGame.Size *= 1.5;
89        RunGame.TextScale *= 1.5;
90        Add(RunGame);
91
92        PushButton OptionsB = new PushButton("Options");
93        OptionsB.Y = 0;
94        OptionsB.Clicked += MenuOptions;
95        OptionsB.Size *= 1.5;
96        OptionsB.TextScale *= 1.5;
97        Add(OptionsB);
98
99        PushButton OSL = new PushButton("Select Level");
100        OSL.Y = -80;
101        OSL.Clicked += SelectLevel;
102        OSL.Size *= 1.5;
103        OSL.TextScale *= 1.5;
104        Add(OSL);
105
106        PushButton ExitB = new PushButton("Quit");
107        ExitB.Y = -160;
108        ExitB.Clicked += Exit;
109        ExitB.Size *= 1.5;
110        ExitB.TextScale *= 1.5;
111        Add(ExitB);
112
113        //MultiSelectWindow alkuValikko = new MultiSelectWindow("UltimateAdventure", "Aloita peli", "Options", "Avaa valittu kenttä","Trophies","Lopeta");
114        //
115        //alkuValikko.AddItemHandler(0, AloitaPeli);
116        //alkuValikko.AddItemHandler(1, MenuOptions);
117        //alkuValikko.AddItemHandler(2, SelectLevel);
118        //alkuValikko.AddItemHandler(3, Achivement);
119        //alkuValikko.AddItemHandler(4, Exit);
120
121        //Add(alkuValikko);
122    }
123    void LuoPeliValikko()
124    {
125        MultiSelectWindow Pelivalikko = new MultiSelectWindow(" ", "Jatka peliä", "Options", "Lopeta");
126
127        //Pelivalikko.AddItemHandler(0, AloitaPeli);
128        Pelivalikko.AddItemHandler(1, PeliOptions);
129        Pelivalikko.AddItemHandler(2, Exit);
130
131        Add(Pelivalikko);
132    }
133
134    void LuoLogo()
135    {
136        Logo = new GameObject(1000,120);
137        Logo.Y = Level.Top-100;
138        Logo.Image = LogoImage;
139        Add(Logo);
140
141        Label teksti = new Label("Beta");
142        teksti.X = Screen.Right - 470;
143        teksti.Y = Screen.Top - 300;
144        teksti.TextScale *= 1.5;
145        teksti.TextColor = Color.Black;
146        Add(teksti);
147    }
148    void AloitaPeli()
149    {
150        IsMouseVisible = false;
151        StartLevel("Layerbybit");
152        MediaPlayer.Play("Backroundmusic");
153        MediaPlayer.IsRepeating = true;
154    }
155
156    void Achivement()
157    {
158        GameObject Achivementbottom = new GameObject(300,70);
159        int Acloop = 0;
160        while (Acloop < 11)
161        {
162            Achivementbottom.Y = Level.Top - 100 * Acloop;
163            Acloop = Acloop + 1;
164        }
165        Achivementbottom.Image = AchivementBottom;
166        Add(Achivementbottom);
167        BackButton();
168        Logo.Destroy();
169        IsMouseVisible = true;
170    }
171    void StartLevel(String LevelName)
172    {
173        ClearAll();
174        Gravity = new Vector(0, Painovoima);
175
176        AddLevel(LevelName);
177        LisaaNappaimet();
178        LuoElamaLaskuri();
179        CreateOxygenMeter();
180        Camera.Follow(pelaaja1);
181        Camera.ZoomFactor = 2.8;
182        Camera.StayInLevel = true;
183
184        Label PommienMaara = new Label(Pommit);
185        PommienMaara.X = Screen.Right - 150;
186        PommienMaara.Y = Screen.Top - 150;
187        Add(PommienMaara);
188
189    }
190
191
192    void MenuOptions()
193    {
194        Options();
195        BackButton();
196    }
197    void Options()
198    {
199        Mouse.IsCursorVisible = true;
200        Slider liukusaadin = LuoSlider();
201        Add(liukusaadin);
202        TeeTextureButton();
203        TeeFullScreenButton();
204    }
205
206    void SelectLevel()
207    {
208        InputWindow AskWindow = new InputWindow("What level you want to play.");
209        AskWindow.TextEntered += ProcessInput;
210        Add(AskWindow);
211        BackButton();
212    }
213
214    void ProcessInput(InputWindow window)
215    {
216        string answer = window.InputBox.Text;
217        if (answer == null || answer == "") return;
218        FileStream stream = null;
219        bool success = true;
220        try 
221        {
222            stream = File.Open("Content\\" + answer+".xnb", FileMode.Open);
223        }
224        catch (FileNotFoundException f)
225        {
226            success = false;
227        }
228        finally
229        {
230            if(stream != null)
231                stream.Close();
232        }
233        if (success)
234            StartLevel(answer);
235        else
236            SelectLevel();
237    }
238   
239
240    void PeliOptions()
241    {
242        Options();
243        TeeSuljePeliOptions();
244    }
245    void TeeTextureButton()
246    {
247        TextureButton = new PushButton("" + SmoothTextures);
248        TextureButton.Y = -100;
249        TextureButton.Clicked += PaivitaTextureButton;
250        TextureButton.Tag = "Options";
251
252        Add(TextureButton);
253    }
254    void PaivitaTextureButton()
255    {
256        SmoothTextures = !SmoothTextures;
257        TextureButton.Text = "" + SmoothTextures;
258    }
259
260  void TeeFullScreenButton()
261  {
262      FullScreenButton = new PushButton("" + IsFullScreen);
263      FullScreenButton.Y = -150;
264      FullScreenButton.Clicked += PaivitaFullScreen;
265      FullScreenButton.Tag = "Options";
266
267      Add(FullScreenButton);
268  }
269
270  void PaivitaFullScreen()
271  {
272      if (IsFullScreen = false);
273      IsFullScreen = !IsFullScreen;
274      FullScreenButton.Text = "" + IsFullScreen;
275  }
276
277    Slider LuoSlider()
278    {
279
280        aani.Changed += MuutaAanenvoimakuutta;
281
282        Slider liukusaadin = new Slider(200, 20);
283        liukusaadin.BindTo(aani);
284        liukusaadin.Tag = "Options";
285        liukusaadin.X = 0;
286        liukusaadin.Y = 0;
287
288        liukusaadin.Color = Color.GreenYellow;
289        liukusaadin.Knob.Image = tahtiKuva;
290        liukusaadin.Track.Color = Color.Black;
291        liukusaadin.BorderColor = Color.LightBlue;
292
293        return liukusaadin;
294
295    }
296    void BackButton()
297    {
298        PushButton BackNappain = new PushButton("Back");
299        BackNappain.Y = -300;
300        BackNappain.Clicked += SaveOptions;
301        BackNappain.Clicked += LuoAlkuValikko;
302
303        Add(BackNappain);
304    }
305
306    void SaveOptions()
307    {
308        DataSave save = new DataSave();
309        save.IsSmoothTex = SmoothTextures;
310        save.Volume = aani.Value;
311        DataStorage.Save<DataSave>(save, "Options.xml");
312       
313
314    }
315    void TeeSuljePeliOptions()
316    {
317        PushButton SuljePeliOptions = new PushButton("Back");
318        SuljePeliOptions.Y = -300;
319        SuljePeliOptions.Tag = "Options";
320        SuljePeliOptions.Clicked += SaveOptions;
321        SuljePeliOptions.Clicked += JatkaPelia;
322
323        Add(SuljePeliOptions);
324    }
325
326    void JatkaPelia()
327    {
328        List<GameObject> Oliot = GetObjectsWithTag("Options");
329        foreach (GameObject item in Oliot)
330        {
331            item.Destroy();
332        }
333        IsMouseVisible = false;
334    }
335    void MuutaAanenvoimakuutta(double vanhaArvo, double uusiArvo)
336    {
337        aanenvoimakkuus = uusiArvo;
338        MessageDisplay.Add(aanenvoimakkuus.ToString());
339    }
340
341    void AddLevel(String LevelName)
342    {
343         TileMap level = TileMap.FromLevelAsset(LevelName);
344        level.SetTileMethod('#', LisaaSolid);
345        level.SetTileMethod('&', LisaaBp);
346        level.SetTileMethod('*', LisaaHealt);
347        level.SetTileMethod('o', LisaaPelaaja);
348        level.SetTileMethod('0', LisaaSilmamob);
349        level.SetTileMethod('5', LisaaSnakemob);
350        level.SetTileMethod('>', LisaaTurret);
351        level.SetTileMethod('☂', PhysicBlock);
352        level.SetTileMethod('7', LisaaSpeedBoots);
353        level.SetTileMethod('O', LisaaPommipakkaus);
354        level.SetTileMethod('U', Water);
355        level.SetTileMethod('W', Wizard);
356        level.SetTileMethod('C', Moonstone);
357        level.SetTileMethod('N', Ninja);
358        level.SetTileMethod('H', OxygenBottle);
359        level.SetTileMethod('L', LisaaLGM);
360        level.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
361        Level.CreateBorders();
362        Level.Background.CreateGradient(Color.SkyBlue, Color.SkyBlue);
363    }
364
365    void LisaaSolid(Vector paikka, double leveys, double korkeus)
366    {
367        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
368        taso.Position = paikka;
369        taso.Tag = "NBO";
370        taso.Color = RandomGen.NextColor();
371        Add(taso);
372    }
373
374    void LisaaBp(Vector paikka, double leveys, double korkeus)
375    {
376        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
377        taso.Position = paikka;
378        taso.Image = Bpimage;
379        taso.Tag = "PhysicsBlock";
380        Add(taso);
381    }
382
383    void LisaaTurret(Vector paikka, double leveys, double korkeus)
384    {
385        PhysicsObject Turret = PhysicsObject.CreateStaticObject(leveys, korkeus);
386        Turret.Position = paikka;
387        Turret.Image = TurretImage;
388        Turret.Tag = "turret";
389        Add(Turret);
390
391
392        Timer ajastin = new Timer();
393        ajastin.Interval = 0.1;
394        ajastin.Timeout += delegate
395        {
396            if (pelaaja1.X > Turret.X && Math.Abs(pelaaja1.Y - Turret.Y) < 20 && Turret.IsDestroyed == false)
397            {
398                PhysicsObject nuoli = new PhysicsObject(30, 5);
399                nuoli.Position = Turret.Position;
400                nuoli.Velocity = new Vector(1700, 0);
401                Add(nuoli);
402                nuoli.Image = Arrow;
403                nuoli.Tag = "nuoli";
404                //AddCollisionHandler(nuoli, CollisionHandler.DestroyObject);
405                ajastin.Stop();
406            }
407        };
408        ajastin.Start();
409    }
410
411    void PhysicBlock(Vector paikka, double leveys, double korkeus)
412    {
413        PhysicsObject PhysicBlock = new PhysicsObject(leveys, korkeus);
414        PhysicBlock.Position = paikka;
415        PhysicBlock.Image = PhysicBlockImage;
416        PhysicBlock.Mass = 200.0;
417        Add(PhysicBlock);
418    }
419
420    void Moonstone(Vector paikka, double leveys, double korkeus)
421    {
422        PhysicsObject Moonstone = PhysicsObject.CreateStaticObject(leveys, korkeus);
423        Moonstone.Position = paikka;
424        Moonstone.Image = MoonstoneImage;
425        Moonstone.Tag = "moonstone";
426        Add(Moonstone);
427    }
428
429
430    void Water(Vector paikka, double leveys, double korkeus)
431    {
432        GameObject Water = new GameObject(leveys, korkeus);
433        Water.Position = paikka;
434        Water.Color = new Color(0, 0, 100, 55);
435        Add(Water, 2);
436        Water.Tag = "Water";
437
438        Timer ajastin = new Timer();
439        ajastin.Interval = 0.1;
440        ajastin.Timeout += delegate
441        {
442            int palikoitaVasemmalla = GetObjectsAt(Water.Position + new Vector(-leveys, 0)).Count;
443            int palikoitaOikealla = GetObjectsAt(Water.Position + new Vector(leveys, 0)).Count;
444            int palikoitaAlhaalla = GetObjectsAt(Water.Position + new Vector(0, -korkeus)).Count;
445
446            if (palikoitaOikealla + palikoitaVasemmalla + palikoitaAlhaalla < 6)
447            {
448                Water.Destroy();
449                ajastin.Stop();
450            }
451        };
452        ajastin.Start();
453    }
454
455
456
457    void LisaaHealt(Vector paikka, double leveys, double korkeus)
458    {
459        PhysicsObject healt = PhysicsObject.CreateStaticObject(leveys, korkeus);
460        healt.IgnoresCollisionResponse = true;
461        healt.Position = paikka;
462        healt.Image = tahtiKuva;
463        healt.Tag = "healt";
464        Add(healt);
465    }
466
467    void LisaaPommipakkaus(Vector paikka, double leveys, double korkeus)
468    {
469        PhysicsObject Pommipakkaus = PhysicsObject.CreateStaticObject(leveys, korkeus);
470        Pommipakkaus.IgnoresCollisionResponse = true;
471        Pommipakkaus.Position = paikka;
472        //Pommipakkaus.Image = tahtiKuva;
473        Pommipakkaus.Tag = "Pommipakkaus";
474        Add(Pommipakkaus);
475    }
476    void LisaaSpeedBoots(Vector paikka, double leveys, double korkeus)
477    {
478        PhysicsObject SpeedShoe = PhysicsObject.CreateStaticObject(leveys, korkeus);
479        SpeedShoe.IgnoresCollisionResponse = true;
480        SpeedShoe.Position = paikka;
481        SpeedShoe.Tag = "SpeedBoots";
482        SpeedShoe.Image = SpeedShoeImage;
483        Add(SpeedShoe);
484    }
485    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
486    {
487        pelaaja1 = new PlatformCharacter(leveys, korkeus);
488        pelaaja1.Position = paikka;
489        pelaaja1.Mass = 4.0;
490        pelaaja1.Image = Player;
491        pelaaja1.Tag = "pelaaja";
492        pelaaja1.Mass = 100.0;
493        AddCollisionHandler(pelaaja1, "healt", TormaaHealtiin);
494        AddCollisionHandler(pelaaja1, "silmamob", TormaaSilmaMobiin);
495        AddCollisionHandler(pelaaja1, "snake", TormaaSnakeen);
496        AddCollisionHandler(pelaaja1, "nuoli", TormaaNuoleen);
497        AddCollisionHandler(pelaaja1, "SpeedBoots", TormaaSpeedBootsiin);
498        AddCollisionHandler(pelaaja1, "Pommipakkaus", TormaaPommipakkaukseen);
499        AddCollisionHandler(pelaaja1, "Ammo", AmmoTormaus);
500        AddCollisionHandler(pelaaja1, "OxygenBottle", OxygenBotle);
501        AddCollisionHandler(pelaaja1, "Lgm", TormaaLGM);
502        Add(pelaaja1);
503    }
504
505    void OxygenBottle(Vector paikka, double leveys, double korkeus)
506    {
507        PhysicsObject OxygenBottle = PhysicsObject.CreateStaticObject(leveys / 2, korkeus / 2);
508        OxygenBottle.IgnoresCollisionResponse = true;
509        OxygenBottle.Position = paikka;
510        OxygenBottle.Tag = "OxygenBottle";
511        OxygenBottle.Image = OxygenBottleImage;
512        Add(OxygenBottle);
513    }
514
515
516    void LisaaSilmamob(Vector paikka, double leveys, double korkeus)
517    {
518        PlatformCharacter SilmaMob = new PlatformCharacter(leveys, korkeus);
519        PlatformWandererBrain SilmaMobAivot = new PlatformWandererBrain();
520        SilmaMob.Position = paikka; 
521        SilmaMobAivot.Speed = 100;
522        SilmaMob.Tag = "silmamob";
523        SilmaMob.Image = silmamobimage;
524        SilmaMob.Brain = SilmaMobAivot;
525        Add(SilmaMob);
526    }
527
528    void LisaaSnakemob(Vector paikka, double leveys, double korkeus)
529    {
530        PlatformCharacter Snake = new PlatformCharacter(leveys, korkeus);
531        PlatformWandererBrain Snakeaivot = new PlatformWandererBrain();
532        Snakeaivot.Speed = 100;
533        Snake.Position = paikka;
534        Snake.Tag = "snake";
535        Snake.Brain = Snakeaivot;
536        Snake.Animation = new Animation(Snakiitio);
537        Snake.Animation.Start();
538
539        Add(Snake);
540        }
541
542    void LisaaLGM(Vector paikka, double leveys, double korkeus)
543    {
544        PlatformCharacter LGM = new PlatformCharacter(leveys, korkeus);
545        FollowerBrain LGMAivot = new FollowerBrain("pelaaja");
546        LGM.Position = paikka;
547        LGMAivot.Speed = 100;
548        LGM.Tag = "Lgm";
549        LGM.Image = LittleGreenMan;
550        LGM.Brain = LGMAivot;
551        Add(LGM);
552
553        foreach (String s in JumpThings)
554            AddCollisionHandler<PlatformCharacter,PhysicsObject>(LGM, s, LGMJump);
555
556        //Timer ajastin = new Timer();
557        //ajastin.Interval = 6;
558        //ajastin.Timeout += delegate { LGM.Jump(500); };
559        //ajastin.Start();
560    }
561
562    void Wizard(Vector paikka, double leveys, double korkeus)
563        {
564            PlatformCharacter Wizard = new PlatformCharacter(leveys, korkeus);
565            Wizard.Position = paikka;
566            Wizard.Image = Player;
567            Wizard.Tag = "Wizard";
568
569            FollowerBrain WizardBrain = new FollowerBrain(pelaaja1);
570            PlatformWandererBrain toisetAivot = new PlatformWandererBrain();
571            WizardBrain.FarBrain = toisetAivot;
572            Wizard.Brain = WizardBrain;
573            WizardBrain.DistanceClose = 10 * RUUDUN_KOKO;
574
575
576            Wizard.Weapon = new AssaultRifle(10, 10);
577            Wizard.Weapon.Position = new Vector(10, 0);
578            Wizard.Weapon.AttackSound = WizardZap;
579            Wizard.Weapon.Power.DefaultValue = 200;
580
581            Wizard.Weapon.Image = WizardrWand;
582            //Wizard.Weapon.Image = WizardrWand; Ammuksen kuvaksi
583            Add(Wizard);
584
585            const double ampumisEtaisyys = 10 * RUUDUN_KOKO;
586            WizardBrain.TargetClose += delegate
587            {
588                Timer shootingtimer = new Timer();
589                shootingtimer.Interval = 0.75;
590                shootingtimer.Timeout += delegate
591                {
592                    if (Vector.Distance(Wizard.Position, pelaaja1.Position) < ampumisEtaisyys)
593                    {
594                        PhysicsObject Ammus = Wizard.Weapon.Shoot();
595                        if (Ammus != null)
596                        {
597                            Ammus.Image = WizParticle;
598                            AddCollisionHandler(Ammus, CollisionHandler.DestroyObject);
599                            Ammus.Tag = "Ammo";
600                        }
601                    }
602                };
603                shootingtimer.Start();
604            };
605
606        }
607
608    void Ninja(Vector paikka, double leveys, double korkeus)
609     { 
610        PlatformCharacter Ninja = new PlatformCharacter(leveys /8 *3, korkeus);
611        Ninja.Position = paikka;
612        Ninja.Image = NinjaImage;
613        Ninja.Tag = "Ninja";
614        GameObject NinjaThings = new GameObject(leveys, korkeus);
615        NinjaThings.Image = Ninjathings;
616        Ninja.Add(NinjaThings);
617
618        FollowerBrain NinjaBrain = new FollowerBrain(pelaaja1);
619            PlatformWandererBrain toisetAivot = new PlatformWandererBrain();
620            NinjaBrain.FarBrain = toisetAivot;
621            Ninja.Brain = NinjaBrain;
622
623
624        Ninja.Weapon = new AssaultRifle(10, 10);
625        Ninja.Weapon.AttackSound = null;
626        Ninja.Weapon.Power.Value = 20;
627        Ninja.Weapon.Power.DefaultValue = 20;
628
629        Ninja.Weapon.Image = Empty;
630        Ninja.Tag = "NINZA";
631        Add(Ninja);
632
633        const double ampumisEtaisyys = 10 * RUUDUN_KOKO;
634        NinjaBrain.TargetClose += delegate
635        {
636            Timer shootingtimer = new Timer();
637            shootingtimer.Interval = 5;
638            shootingtimer.Timeout += delegate
639            {
640                if (Vector.Distance(Ninja.Position, pelaaja1.Position) < ampumisEtaisyys && NinjaIsRaged == true)
641                {
642                    PhysicsObject Ammus = Ninja.Weapon.Shoot();
643                    if (Ammus != null)
644                    {
645                        Ammus.Image = NinjaStarImage;
646                        AddCollisionHandler(Ammus, CollisionHandler.DestroyObject);
647                        Ammus.Tag = "Ammo";
648                    }
649                }
650            };
651            shootingtimer.Start();
652        };
653    }
654
655
656    void LisaaNappaimet()
657    {
658        //Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
659        Keyboard.Listen(Key.Escape, ButtonState.Pressed, LuoPeliValikko, "Lopeta peli");
660
661        if (ControllerOne.IsConnected == false)
662        { 
663
664        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "", pelaaja1, -1.0);
665        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "", pelaaja1, 1.0);
666        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "", pelaaja1, JumpSpeed);
667        Keyboard.Listen(Key.W, ButtonState.Pressed, Ui, "", pelaaja1);
668
669        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, Lyo, "Pelaaja Lyö", pelaaja1);
670        Mouse.Listen(MouseButton.Right, ButtonState.Pressed, HeitaPommi, "Pelaaja heittää pommin", pelaaja1);
671
672            }
673
674        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
675
676        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.1, LiikutaPelaajaa, "Liikuta pelaajaa tattia pyörittämällä.");
677        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "", pelaaja1, JumpSpeed);
678        ControllerOne.Listen(Button.A, ButtonState.Down, Ui, "", pelaaja1);
679        ControllerOne.Listen(Button.RightShoulder, ButtonState.Pressed, HeitaPommi, "Pelaaja heittää pommin", pelaaja1);
680        ControllerOne.Listen(Button.LeftShoulder, ButtonState.Pressed, Lyo, "Pelaaja Lyö", pelaaja1);
681    }
682
683    void LiikutaPelaajaa(AnalogState tatinTila)
684    {
685        Vector tatinAsento = tatinTila.StateVector;
686        pelaaja1.Walk(tatinAsento.X * nopeus);
687    }
688    void Lyo(PlatformCharacter hahmo)
689    {
690        if (saapiiskata == false)
691            return;
692
693        saapiiskata = false;
694
695        PhysicsObject temp = new PhysicsObject(50, 20);
696        //temp.IsVisible = false;
697        temp.IgnoresGravity = true;
698        temp.IgnoresCollisionResponse = true;
699        temp.Destroyed += delegate { saapiiskata = true; };
700        temp.Tag = "temp";
701        Add(temp);
702        temp.Animation = new Animation(Ruoskanimaatio);
703        temp.Animation.Start();
704
705        AddCollisionHandler(temp, "silmamob", CollisionHandler.DestroyTarget);
706        AddCollisionHandler(temp, "snake", CollisionHandler.DestroyTarget);
707        AddCollisionHandler(temp, "Lgm", CollisionHandler.DestroyTarget);
708        AddCollisionHandler(temp, "NINZA", NinjaRage);
709
710        Timer.SingleShot(0.1, temp.Destroy);
711
712        Timer ajastin = new Timer();
713        ajastin.Interval = 0.01;
714        ajastin.Timeout += delegate
715        {
716            if (hahmo.FacingDirection == Direction.Left)
717            {
718                temp.TextureWrapSize = new Vector(-1, 1);
719                temp.Position = new Vector((hahmo.Position.X - (hahmo.Width / 2) - (temp.Width * .35)), hahmo.Position.Y);
720            }
721            else
722            {
723                temp.TextureWrapSize = new Vector(1, 1);
724                temp.Position = new Vector((hahmo.Position.X + (hahmo.Width / 2) + (temp.Width * .35)), hahmo.Position.Y);
725            }
726        };
727        ajastin.Start();
728    }
729    void HeitaPommi(PlatformCharacter hahmo)
730    {
731        if (saapommittaa == false || Pommit.Value <= 0)
732            return;
733        Pommit.Value--;
734
735        saapommittaa = false;
736
737        Grenade Pommi = new Grenade(10.0);
738        for (int i = 0; i < destroybleThings.Count; i++)
739        {
740         Pommi.Explosion.AddShockwaveHandler(destroybleThings[i], DestroyCube);
741        }
742        Pommi.Explosion.AddShockwaveHandler(pelaaja1, PalyerTouchingExplo);
743        hahmo.Throw(Pommi, Angle.FromDegrees(30), 10000);
744        Pommi.Image = Bomb;
745
746        Timer.SingleShot(.2, delegate { saapommittaa = true; });
747    }
748
749    void Liikuta(PlatformCharacter hahmo, double suunta)
750    {
751        hahmo.Walk(nopeus * suunta);
752    }
753
754    void Hyppaa(PlatformCharacter hahmo, double nopeus)
755    {
756        hahmo.Jump(nopeus);
757    }
758
759    void Ui (PlatformCharacter hahmo)
760    {
761        GameObject alla = GetObjectAt(hahmo.Position - new Vector(0, RUUDUN_KOKO / 2 + 2));
762        if (alla != null && alla.Tag ==  "Water")
763        {
764            hahmo.Velocity = new Vector(0, 100);
765        }
766    }
767
768    void TormaaHealtiin(PhysicsObject hahmo, PhysicsObject healt)
769    {
770        maaliAani.Play(aanenvoimakkuus, 0.0, 0.0);
771        healt.Destroy();
772        elamaLaskuri.Value += 5;
773    }
774
775    void LuoElamaLaskuri()
776    {
777        elamaLaskuri = new IntMeter(10);
778        elamaLaskuri.MaxValue = 99;
779        elamaLaskuri.LowerLimit += ElamaLoppui;
780
781        Label ElamaKuva = new Label(playerhealth);
782        ElamaKuva.Size = new Vector(80, 80);
783        Add(ElamaKuva);
784
785        Label pisteNaytto = new Label();
786        pisteNaytto.X = Screen.Left + 100;
787        pisteNaytto.Y = Screen.Top - 100;
788        pisteNaytto.TextColor = Color.Black;
789        pisteNaytto.Color = Color.Red;
790        pisteNaytto.BindTo(elamaLaskuri);
791        Add(pisteNaytto);
792
793        ElamaKuva.X = pisteNaytto.X;
794        ElamaKuva.Y = pisteNaytto.Y;
795
796
797
798    }
799
800    void CreateOxygenMeter()
801    {
802        OxygenMeter = new IntMeter(10, 0, 10);
803        //OxygenMeter.LowerLimit += ElamaLoppui;
804
805        ProgressBar OxygenBar = new ProgressBar(500, 20);
806        OxygenBar.X = 0;
807        OxygenBar.Y = Screen.Top - 20;
808        OxygenBar.BindTo(OxygenMeter);
809        OxygenBar.Color = Color.MidnightBlue;
810        OxygenBar.BarColor = Color.LightBlue;
811        Add(OxygenBar);
812
813        Timer DrowningTimer = new Timer();
814        DrowningTimer.Interval = DrownTime;
815        DrowningTimer.Timeout += CheckDrowning;
816        DrowningTimer.Start();
817    }
818
819    void CheckDrowning()
820    {
821        GameObject Water = GetObjectAt(pelaaja1.Position, "Water", 1);
822        if (Water == null)
823        {
824            OxygenMeter.Value++;
825        }
826        else
827        {
828            OxygenMeter.Value--;
829
830            if (OxygenMeter.Value == 0)
831            {
832                elamaLaskuri.Value--;
833            }
834        }
835    }
836
837
838
839    void ElamaLoppui()
840    { 
841        pelaaja1.Destroy();
842        ControllerOne.Vibrate(0.7, 0.7, 0.0, 0.0, 0.3);
843        ExplosionSystem rajahdys = new ExplosionSystem(veripartikkeli, 100);
844        Add(rajahdys);
845        rajahdys.MaxScale = 1.0;
846        rajahdys.MaxVelocity = 20.0;
847        rajahdys.MinLifetime = 2.0;
848        int pMaara = 50;
849        Timer.SingleShot(3.0, ConfirmExit);
850
851
852
853        rajahdys.AddEffect(pelaaja1.X, pelaaja1.Y, pMaara);
854        //rajahdys.X = pelaaja1.X;
855        //rajahdys.Y = pelaaja1.Y;
856    }
857    void TormaaSilmaMobiin(PhysicsObject hahmo, PhysicsObject silmamob)
858    {
859        elamaLaskuri.Value -= 1;
860    }
861
862    void TormaaSnakeen(PhysicsObject hahmo, PhysicsObject Snake)
863    {
864        elamaLaskuri.Value -= 1;
865    }
866
867    void AmmoTormaus(PhysicsObject hahmo, PhysicsObject ammo)
868    {
869        elamaLaskuri.Value -= 9;
870    }
871
872    void TormaaLGM(PhysicsObject hahmo, PhysicsObject LGM)
873    {
874        elamaLaskuri.Value -= 1;
875    }
876
877    void TormaaNuoleen(PhysicsObject hahmo, PhysicsObject nuoli)
878    {
879        elamaLaskuri.Value -= 2;
880
881    }
882
883    void TormaaSpeedBootsiin(PhysicsObject hahmo, PhysicsObject SpeedBoots)
884    {
885        nopeus *= 2;
886        SpeedBoots.Destroy();
887        Timer.SingleShot(5.0, delegate { nopeus /= 2; });
888
889    }
890
891    void TormaaPommipakkaukseen(PhysicsObject hahmo, PhysicsObject Pommipakkaus)
892    {
893        Pommit.Value += 5;
894        Pommipakkaus.Destroy();
895    }
896
897    void OxygenBotle(PhysicsObject hahmo, PhysicsObject OxygenBottle)
898    {
899        DrownTime.Value+= 0.5;
900        OxygenBottle.Destroy();
901    }
902
903    void DestroyCube(IPhysicsObject destroyable, Vector v  )
904    {
905        destroyable.Destroy();
906    }
907    void PalyerTouchingExplo(IPhysicsObject pelaaja1, Vector v)
908    {
909        elamaLaskuri.Value -= 5;
910    }
911
912    void NinjaRage(PhysicsObject Ninja, PhysicsObject Temp)
913    {
914        NinjaIsRaged = true;
915    }
916
917    void LGMJump(PlatformCharacter LGM, PhysicsObject s)
918    {
919        if(LGM.Bottom + 3 < s.Top)
920            LGM.Jump(400);
921    }
922}
Note: See TracBrowser for help on using the repository browser.