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

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