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

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