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

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