source: 2017/31/PatrikK/Tasohyppelypeli/Tasohyppelypeli/Tasohyppelypeli/BEST_GAME_EVER.cs @ 9421

Revision 9421, 35.1 KB checked in by npo17_73, 23 months ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8class Kranaatinheitin:Cannon
9{
10    public Kranaatinheitin(double leveys, double korkeus)
11        : base(leveys, korkeus)
12    {
13       
14    }
15}
16
17public class Tasohyppelypeli : PhysicsGame
18{
19    double nopeus = 500;
20    double hyppyNopeus = 900;
21    int RUUDUN_KOKO = 40;
22    EasyHighScore topLista = new EasyHighScore();
23    Hahmo pelaaja1;
24    IntMeter pisteLaskuri = new IntMeter(0);
25    IntMeter tahtilaskuri= new IntMeter(0);
26    IntMeter tappolaskuri = new IntMeter(0);
27    IntMeter aivolaskuri = new IntMeter(0);
28    //DoubleMeter elamalaskuri;
29    Image pelaajanKuva = LoadImage("norsu");
30    Image tahtiKuva = LoadImage("tahti");
31    DoubleMeter ÄänenVoimakkuus = new DoubleMeter(0.5, 0, 1);
32    SoundEffect maaliAani = LoadSoundEffect("maali");
33    bool saaHeittaaKranaatin = true;
34    double kranaattiaika = 1.5;
35    List<Timer> ajastinlista = new List<Timer>();
36    int kenttaJossaOllaanNyt = 1;
37    bool huijattu = false;
38    bool alkuValikko = true;
39    double vaikeus = 1.0;
40
41    Weapon ostettuAse;
42
43
44    public override void Begin()
45    {
46        ClearAll();
47        AlkuTekstit();
48        ÄänenVoimakkuus.Changed += delegate { MediaPlayer.Volume = ÄänenVoimakkuus.Value; };
49        MediaPlayer.Play("background_music");
50        MediaPlayer.IsRepeating = true;
51
52        topLista.HighScoreWindow.Closed += (w) => AlkuValikko();
53        //IsFullScreen = true;
54    }
55    void AloitaPeli()
56    {
57        SmoothTextures = false;
58        ClearAll();
59        Gravity = new Vector(0, -1000);
60        IsMouseVisible = true;
61        LuoKentta();
62        HyvaksyKranaatti();
63        LisaaNappaimet();
64        LuoAivoLaskuri();
65        LuoPistelaskuri();
66        LuoTahtilaskuri();
67        LuoTappoLaskuri();
68        LuoElamaLaskuri();
69        Camera.Follow(pelaaja1);
70        Camera.ZoomFactor = 2.0;
71        Camera.StayInLevel = true;
72        huijattu = false;
73        alkuValikko = false;
74    }
75
76    void LuoKentta()
77    {
78       
79        TileMap kentta = TileMap.FromLevelAsset("kentta" + kenttaJossaOllaanNyt);
80               
81        kentta.SetTileMethod('#', LisaaTaso);
82        kentta.SetTileMethod('*', LisaaTahti);
83        kentta.SetTileMethod('N', LisaaPelaaja);
84        kentta.SetTileMethod('I', VihuSpawn);
85        kentta.SetTileMethod('P', TelePort);
86        kentta.SetTileMethod('S', Kauppa);
87        kentta.SetTileMethod('M', LisaaTahti1);
88        kentta.SetTileMethod('E', LisaaBox);
89
90        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
91        Level.CreateBorders();
92        //Level.Background.CreateGradient(Color.White, Color.SkyBlue);
93        Level.Background.Image = LoadImage("vortex");
94        //Level.Background.TextureWrapSize = new Vector(2.0, 1.0);
95        Level.Background.FitToLevel();
96        PushButton tauko = new PushButton(LoadImage("TAUKO"));
97        Add(tauko);
98        tauko.Size = new Vector(90, 90);
99        tauko.Left = Screen.Left;
100        tauko.Clicked += TaukoValikko;
101       
102    }
103    void LisaaBox(Vector paikka, double leveys, double korkeus)
104    {
105        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
106        tahti.IgnoresCollisionResponse = true;
107        tahti.Position = paikka;
108        tahti.Image = LoadImage("box");
109        tahti.Tag = "box";
110        Add(tahti);
111    }
112
113    void LisaaTaso(Vector paikka, double leveys, double korkeus)
114    {
115        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
116        taso.Position = paikka;
117        taso.Image = LoadImage("steel");
118        Add(taso);
119        //taso.MakeOneWay();
120       
121    }
122
123    void LisaaTahti(Vector paikka, double leveys, double korkeus)
124    {
125        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
126        tahti.IgnoresCollisionResponse = true;
127        tahti.Position = paikka;
128        tahti.Image = tahtiKuva;
129        tahti.Tag = "tahti";
130        Add(tahti);
131    }
132    void LisaaTahti1(Vector paikka, double leveys, double korkeus)
133    {
134        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
135        tahti.IgnoresCollisionResponse = true;
136        tahti.Position = paikka;
137        tahti.Image = LoadImage("star");
138        tahti.Tag = "star";
139        Add(tahti);
140    }
141    void Kauppa(Vector paikka, double leveys, double korkeus)
142    {
143        PhysicsObject store = PhysicsObject.CreateStaticObject(leveys * 2, korkeus * 2);
144        store.Position = paikka+new Vector(0.0,korkeus / 2.0);
145        store.Image = LoadImage("store");
146        Add(store,3);
147        int pMaxMaara = 100;
148        ExplosionSystem rajahdys =
149          new ExplosionSystem(LoadImage("dollar"), pMaxMaara);
150        Add(rajahdys);
151
152        double x = store.X;
153        double y = store.Y;
154        int pMaara = 1;
155        rajahdys.MaxScale = 70;
156        rajahdys.MinScale = 40;
157        rajahdys.MaxLifetime = 2;
158        rajahdys.MaxVelocity = 25;
159        Timer ajastin = new Timer();
160        ajastin.Interval = 0.1;
161        ajastin.Timeout += delegate { rajahdys.AddEffect(x, y, pMaara); };
162        ajastin.Start();
163        store.Tag = "store";
164        //taso.MakeOneWay();
165
166    }
167
168    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
169    {
170        pelaaja1 = new Hahmo(leveys, korkeus);
171        pelaaja1.Position = paikka;
172        pelaaja1.Mass = 400000.0;
173        pelaaja1.Image = pelaajanKuva;
174        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
175        AddCollisionHandler(pelaaja1, "star", TormaaTahteen1);
176        AddCollisionHandler(pelaaja1, "tele", TormaaTeleport);
177        AddCollisionHandler(pelaaja1, "box", TormaaBox);
178        AddCollisionHandler(pelaaja1, "store", delegate (PhysicsObject a,PhysicsObject b){ KauppaValikko(); });
179        Add(pelaaja1);
180        //pelaaja1 on PlatformCharacter-tyyppinen
181
182        pelaaja1.Weapon = new Cannon(30, 10);
183        pelaaja1.Weapon.ProjectileCollision = PelaajanAmmusOsui;
184        pelaaja1.Weapon.Image = LoadImage("cannon");
185        if (pelaaja1.Weapon is Cannon)
186            pelaaja1.Weapon.FireRate = 0.2;
187        pelaaja1.Weapon.AmmoIgnoresGravity = false;
188
189        if (ostettuAse is Kranaatinheitin)
190        {
191            OtaKranuHeitin();
192        }
193        else if(ostettuAse is LaserGun)
194        {
195            OtaLaser();
196        }
197        else if(ostettuAse is PlasmaCannon)
198        {
199            OtaPlasma();
200        }
201        else if(ostettuAse is AssaultRifle)
202        {
203            OtaRifle();
204        }
205
206        GameObject tahtain = new GameObject(30,30);
207        tahtain.Image = LoadImage("crosshair");
208        Add(tahtain);
209
210        Timer ammuajastinhajalle2 = new Timer();
211        ammuajastinhajalle2.Interval = 0.01;
212        ammuajastinhajalle2.Timeout += delegate { tahtain.Position = Mouse.PositionOnWorld; };
213        ammuajastinhajalle2.Start();
214
215
216        pelaaja1.Destroyed += GameOver;
217        //Ammusten määrä aluksi:
218        //pelaaja1.Weapon.Ammo.Value = 99999999;
219
220        //Mitä tapahtuu kun ammus osuu johonkin?
221        pelaaja1.Tag = "pelaaja1";
222
223        Timer ammuajastinhajalle = new Timer();
224        ammuajastinhajalle.Interval = 1;
225        ammuajastinhajalle.Timeout += delegate { pelaaja1.ElamaLaskuri.Value += 1; };
226        ammuajastinhajalle.Start();
227
228    }
229    void TormaaBox(PhysicsObject pelaaja, PhysicsObject box)
230    {
231        box.Destroy();
232        Timer.SingleShot(7, delegate { LisaaBox(box.Position, 40, 40); });
233        aivolaskuri.Value += 5;
234    }
235
236    void LisaaNappaimet()
237    {
238        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
239        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
240
241        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -1.0);
242        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, 1.0);
243        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
244        Keyboard.Listen(Key.T, ButtonState.Down, Rajayta, ("Räjäytä itsesi"));
245        Keyboard.Listen(Key.J, ButtonState.Pressed, Pala, ("Sytytä itsesi tuleen"));
246        Keyboard.Listen(Key.Space, ButtonState.Released, LentoLopuu, "Lopeta lento", pelaaja1);
247        Keyboard.Listen(Key.G, ButtonState.Pressed, HeitaKranaatti, ("Heitä kranaatti"), pelaaja1);
248        Keyboard.Listen(Key.Enter, ButtonState.Pressed, Konsoli, "Käytä huijauskoodeja - et pääse top 10:n");
249        Keyboard.Listen(Key.Space, ButtonState.Down, Lento, "Lennä");
250        Keyboard.Listen(Key.Space, ButtonState.Released, EiLento, null);
251        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
252        Mouse.ListenWheel(ZoomWheel, "Zoomaa");
253        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
254
255        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -1.0);
256        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, 1.0);
257        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
258
259        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
260    }
261    void ZoomWheel()
262    {
263        Camera.Zoom(Mouse.WheelChange * 0.1);
264    }
265    void Pala()
266    {
267        Flame liekki = new Flame(LoadImage("flame"));
268        liekki.Position = new Vector(0, 0);
269        Add(liekki);
270
271        Timer ammuajastinhajalle = new Timer();
272        ammuajastinhajalle.Interval = 0.1;
273        ammuajastinhajalle.Timeout += delegate { liekki.Position = pelaaja1.Position; };
274        ammuajastinhajalle.Start();
275    }
276    void Rajayta()
277    {
278        int pMaxMaara = 50;
279        ExplosionSystem rajahdys =
280          new ExplosionSystem(LoadImage("rajahdys"), pMaxMaara);
281
282        Add(rajahdys);
283
284        double x = pelaaja1.X;
285        double y = pelaaja1.Y;
286        int pMaara = 500;
287        rajahdys.MaxVelocity = 1;
288        rajahdys.MaxScale = 20;
289        rajahdys.MinScale = 10;
290        rajahdys.MaxLifetime = 2;
291        rajahdys.AddEffect(x, y, pMaara);
292    }
293
294    void Liikuta(PlatformCharacter hahmo, double suunta)
295    {
296        hahmo.Walk(nopeus * suunta);
297    }
298
299    void Hyppaa(PlatformCharacter hahmo, double nopeus)
300    {
301        hahmo.Jump(nopeus);
302    }
303    void Lento()
304    {
305        pelaaja1.IgnoresGravity = true;
306    }
307    void EiLento()
308    {
309        pelaaja1.IgnoresGravity = false;
310    }
311   
312
313    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
314    {
315        MessageDisplay.Add("Keräsit tähden!");
316        MessageDisplay.MaxMessageCount = 10;
317        tahti.Destroy();
318        tahtilaskuri.AddValue(1);
319       
320       
321    }
322    void TormaaTahteen1(PhysicsObject hahmo, PhysicsObject tahti)
323    {
324        MessageDisplay.Add("Keräsit tähden!");
325        MessageDisplay.MaxMessageCount = 10;
326        tahti.Destroy();
327        tahtilaskuri.AddValue(10);
328
329
330    }
331    void Lenna(PlatformCharacter hahmo, double nopeus)
332    {
333        hahmo.Push(new Vector(0, nopeus));
334        hahmo.IgnoresCollisionResponse = false;
335       
336    }
337    void LentoLopuu(PlatformCharacter hahmo)
338    {
339        hahmo.IgnoresCollisionResponse = false;
340    }
341    void NoClip(PlatformCharacter hahmo)
342    {
343        hahmo.IgnoresCollisionResponse = true;
344    }
345    void NoClipOff(PlatformCharacter hahmo)
346    {
347        hahmo.IgnoresCollisionResponse = false;
348    }
349    void VihunAmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
350    {
351       
352        if(kohde.Tag=="pelaaja1")
353        {
354            (kohde as Hahmo).ElamaLaskuri.Value -= 1;
355            (kohde as Hahmo).ElamaLaskuri.MaxValue += 1;
356        }
357    }
358    void PelaajanAmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
359    {
360
361        if (kohde.Tag == "VIHOLLINEN")
362        {
363            if (pelaaja1.Weapon is Cannon)
364                (kohde as Hahmo).ElamaLaskuri.Value -= 20.0;
365            else if (pelaaja1.Weapon is AssaultRifle)
366                (kohde as Hahmo).ElamaLaskuri.Value -= 3.0;
367            else if (pelaaja1.Weapon is PlasmaCannon)
368                (kohde as Hahmo).ElamaLaskuri.Value -= 5.0;
369            else if (pelaaja1.Weapon is LaserGun)
370                (kohde as Hahmo).ElamaLaskuri.Value -= 0.5;
371        }
372    }
373    void  AmmuAseella(PlatformCharacter pelaaja)
374    {
375        pelaaja.Weapon.AbsoluteAngle = (Mouse.PositionOnWorld - pelaaja1.Position).Angle;
376       
377        PhysicsObject ammus = pelaaja.Weapon.Shoot();
378
379        if (ammus != null)
380        {
381           
382            //ammus.Image = LoadImage("ammus");
383            if (pelaaja1.Weapon is Kranaatinheitin)
384            {
385                ammus.Image = LoadImage("grenade");
386                ammus.Size *= 1.5;
387                ammus.Destroyed+= delegate
388                {
389                    Explosion rajahdys = new Explosion(125);
390                    rajahdys.Position = ammus.Position;
391                    Add(rajahdys);
392                    rajahdys.AddShockwaveHandler("VIHOLLINEN", KranaattiOsui);
393
394                };
395                AddCollisionHandler(ammus, "VIHOLLINEN", CollisionHandler.DestroyObject);
396            }
397            else if (pelaaja1.Weapon is Cannon)
398            {
399                ammus.Image = LoadImage("cannonball");
400                ammus.Size *= 1.5;
401                ammus.IgnoresCollisionResponse = false;
402            }
403            else if (pelaaja1.Weapon is PlasmaCannon)
404            {
405                ammus.Image = LoadImage("plasma");
406                ammus.Size *= 5.0;
407                //ammus.CollisionIgnoreGroup = 3;
408            }
409               
410            else if (pelaaja1.Weapon is LaserGun)
411            {
412                ammus.Image = LoadImage("laser");
413                ammus.Width *= 30.0;
414                ammus.Velocity *= 0.7;
415                //ammus.CollisionIgnoreGroup = 3;
416            }
417            else if (pelaaja1.Weapon is AssaultRifle)
418            {
419                ammus.Image = LoadImage("bullet");
420                ammus.Size *= 1.5;
421                //ammus.CollisionIgnoreGroup = 3;
422            }
423               
424           
425            ammus.MaximumLifetime = TimeSpan.FromSeconds(5.0);
426            ammus.IgnoresCollisionResponse = false;
427           
428            pelaaja.Weapon.AttackSound.Stop();
429        }
430    }
431    void LisaaVihu(Vector paikka, double leveys, double korkeus)
432    {
433        Hahmo vihu = new Hahmo(leveys, korkeus);
434        vihu.Position = paikka;
435        vihu.Mass = 4.0;
436        vihu.Image = LoadImage("zombi");
437        vihu.Tag = "VIHOLLINEN";
438        Add(vihu);
439        vihu.CollisionIgnoreGroup = 3;
440        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
441        tasoAivot.Speed = 300;
442        tasoAivot.FallsOffPlatforms = true;
443        tasoAivot.JumpSpeed = 700;
444        tasoAivot.TriesToJump = true;
445        vihu.Brain = tasoAivot;
446        //pelaaja1 on PlatformCharacter-tyyppinen
447        vihu.Weapon = new AssaultRifle(30, 10);
448        vihu.Weapon.FireRate = 2;
449        vihu.Destroyed += delegate {aivolaskuri.AddValue(RandomGen.SelectOne(0,1)); };
450        //Ammusten määrä aluksi:
451        vihu.Weapon.Ammo.Value = 99999999;
452        vihu.Weapon.MaxAmmoLifetime = TimeSpan.FromSeconds(2.0);
453        //Mitä tapahtuu kun ammus osuu johonkin?
454        vihu.Weapon.ProjectileCollision = VihunAmmusOsui;
455       
456        Timer ammuajastinhajalle = new Timer();
457        ammuajastinhajalle.Interval = 2 * vaikeus;
458        ammuajastinhajalle.Timeout += delegate { VihuAmmuAseella(vihu); };
459        ammuajastinhajalle.Start();
460
461        vihu.Destroyed += delegate { tappolaskuri.Value += 1; ammuajastinhajalle.Stop(); };
462       
463    }
464    void VihuSpawn(Vector paikka, double leveys, double korkeus)
465    {
466        Timer spawntimer = new Timer();
467        spawntimer.Interval = 3.0 * vaikeus;
468        if (kenttaJossaOllaanNyt == 2)
469            spawntimer.Interval = 7.0 * vaikeus;
470        spawntimer.Timeout += delegate { LisaaVihu(paikka, leveys, korkeus); };
471        spawntimer.Start();
472        ajastinlista.Add(spawntimer);
473    }
474    void HeitaKranaatti(PlatformCharacter pelaaja)
475    {
476       
477       
478        if (saaHeittaaKranaatin)
479        {
480            Grenade kranu = new Grenade(2.0);
481            pelaaja.Throw(kranu, Angle.FromDegrees(45), 10000);
482            kranu.Explosion.AddShockwaveHandler("VIHOLLINEN", KranaattiOsui);
483            kranu.Size *= 5.0;
484            kranu.Explosion.Speed = 350;
485            AddCollisionHandler<Grenade, PhysicsObject>(kranu, "VIHOLLINEN", GrenadeCollide);
486
487            saaHeittaaKranaatin = false;
488            Timer.SingleShot(kranaattiaika, HyvaksyKranaatti);
489        }
490       
491
492    }
493    void KauppaValikko()
494    {
495        MultiSelectWindow Valikko = new MultiSelectWindow("Kauppa",
496"Osta konekivääri, 10 aivoa", "Osta plasma-ase, 25 aivoa", "Osta laser, 50 aivoa", "Osta kranaatinheitin, 100 aivoa");
497        Add(Valikko);
498        Valikko.AddItemHandler(0, OstaRifle);
499        Valikko.AddItemHandler(1, OstaPlasma);
500        Valikko.AddItemHandler(2, OstaLaser);
501        Valikko.AddItemHandler(3, OstaKranuHeitin);
502    }
503    void OstaRifle()
504    {
505        if(aivolaskuri.Value > 10)
506        {
507            aivolaskuri.Value -= 10;
508            OtaRifle();
509        }
510
511    }
512    void OtaRifle()
513    {
514 pelaaja1.Weapon = new AssaultRifle(30, 10);
515            pelaaja1.Weapon.ProjectileCollision = PelaajanAmmusOsui;
516            pelaaja1.Weapon.FireRate = 5;
517            pelaaja1.Weapon.Image = LoadImage("assaultrifle");
518        ostettuAse = pelaaja1.Weapon;
519    }
520    void OstaPlasma()
521    {
522        if(aivolaskuri.Value > 25)
523        {
524            aivolaskuri.Value -= 25;
525            OtaPlasma();
526        }
527       
528    }
529    void OtaPlasma()
530    {
531 pelaaja1.Weapon = new PlasmaCannon(30, 10);
532            pelaaja1.Weapon.ProjectileCollision = PelaajanAmmusOsui;
533            pelaaja1.Weapon.FireRate = 5;
534            pelaaja1.Weapon.Image = LoadImage("plasmacannon");
535        ostettuAse = pelaaja1.Weapon;
536    }
537    void OstaLaser()
538    {
539        if(aivolaskuri.Value > 50)
540        {
541            aivolaskuri.Value -= 50;
542            OtaLaser();
543        }
544       
545    }
546    void OtaLaser()
547    {
548 pelaaja1.Weapon = new LaserGun(30, 10);
549            pelaaja1.Weapon.ProjectileCollision = PelaajanAmmusOsui;
550            pelaaja1.Weapon.FireRate = 25;
551            pelaaja1.Weapon.Image = LoadImage("lasercannon");
552        ostettuAse = pelaaja1.Weapon;
553    }
554    void OstaKranuHeitin()
555    {
556        if (aivolaskuri.Value > 100)
557        {
558            aivolaskuri.Value -= 100;
559            OtaKranuHeitin();
560        }
561    }
562    void OtaKranuHeitin()
563    {
564 pelaaja1.Weapon = new Kranaatinheitin(30, 10);
565            pelaaja1.Weapon.ProjectileCollision = PelaajanAmmusOsui;
566            pelaaja1.Weapon.FireRate = 0.5;
567            pelaaja1.Weapon.Image = LoadImage("lol");
568        ostettuAse = pelaaja1.Weapon;
569    }
570    void VihuAmmuAseella(PlatformCharacter pelaaja)
571    {
572        PhysicsObject ammus = pelaaja.Weapon.Shoot();
573
574        if (ammus != null)
575        {
576            ammus.Size *= 3.5;
577            ammus.Image = LoadImage("bullet1");
578            ammus.MaximumLifetime = TimeSpan.FromSeconds(1.0);
579            ammus.IgnoresCollisionResponse = true;
580            pelaaja.Weapon.AttackSound.Stop();
581        }
582    }
583    void HyvaksyKranaatti()
584    {
585        saaHeittaaKranaatin = true;
586    }
587    void KranaattiOsui(IPhysicsObject rajahdyksenKohde, Vector v)
588    {
589        //rajahdyksenKohde.Destroy();
590        (rajahdyksenKohde as Hahmo).ElamaLaskuri.AddValue(-10);
591    }
592    void GrenadeCollide(Grenade kranu, PhysicsObject zombi)
593    {
594        kranu.Explode();
595        kranu.Explode();
596    }
597    void Konsoli()
598    {
599        if(vaikeus == 0.1)
600        {
601            return;
602        }
603
604        InputWindow kysymysIkkuna = new InputWindow("Huijauskoodi?");
605        kysymysIkkuna.TextEntered += ProcessInput;
606        Add(kysymysIkkuna);
607    }
608    void ProcessInput(InputWindow ikkuna)
609    {
610        string vastaus = ikkuna.InputBox.Text;
611        string[] palat = vastaus.Split(' ');
612        try
613        {
614            TeeKomento(palat);
615        }
616        catch
617        {
618            MessageDisplay.Add("Tuo on mahdotonta -_-");
619            MessageDisplay.X = 400;
620            MessageDisplay.Y = 400;
621            Timer.SingleShot(3, delegate { MessageDisplay.X = 0; MessageDisplay.Y = 0; });
622        }
623    }
624
625    void TeeKomento(string[] palat)
626    { 
627
628        // 1 osaiset komennot
629        if (palat.Length == 1)
630        {
631            string komento = palat[0];
632
633            if (komento == "exit")
634            {
635                Exit();
636            }
637            if(komento=="pysäytäspawni")
638            {
639                foreach(Timer spawntimer in ajastinlista)
640                {
641                    spawntimer.Stop();
642                }
643               
644               
645            }
646            if (komento == "aloitaspawni")
647            {
648                foreach (Timer spawntimer in ajastinlista)
649                {
650                    spawntimer.Start();
651                }
652
653            }
654            if(komento=="ClearAll")
655            {
656                ClearAll();
657                huijattu = false;
658                return;
659            }
660            if(komento=="vaikeus:vaikea")
661            {
662               
663                if(0.1 <= vaikeus)
664                {
665                    vaikeus = 0.1;
666                    huijattu = false;
667                    return;
668                }
669                else
670                {
671                    vaikeus = 0.1;
672                }
673            }
674            if (komento == "semigod")
675            {
676                pelaaja1.ElamaLaskuri.MaxValue = 10000;
677                pelaaja1.ElamaLaskuri.Value = 10000;
678                huijattu = false;
679                return;
680            }
681            if (komento == "god")
682            {
683                pelaaja1.ElamaLaskuri.MaxValue = 99999999;
684                pelaaja1.ElamaLaskuri.Value = pelaaja1.ElamaLaskuri.MaxValue;
685            }
686
687            if (komento == "häviä")
688            {
689                pelaaja1.Destroy();
690                huijattu = false;
691                return;
692            }
693            if (komento == "hyvaksykranu")
694            {
695                kranaattiaika = 0.01;
696                Keyboard.Listen(Key.G, ButtonState.Down, HeitaKranaatti, null, pelaaja1);
697            }
698           
699        }
700
701        // 2 osaiset komennot
702        if (palat.Length == 2)
703        {
704            string komento = palat[0];
705            double numero = double.Parse(palat[1]);
706
707            if (komento == "firerate")
708            {
709                pelaaja1.Weapon.FireRate = numero;
710            }
711
712            if (komento == "zombi")
713            {
714                for (int i = 0; i < numero; i++)
715                {
716                    LisaaVihu(pelaaja1.Position+RandomGen.NextVector(0,100),40,40);
717                    huijattu = false;
718                    return;
719                }
720            }
721
722            if(komento=="gravity")
723            {
724                Gravity = new Vector(0,numero);
725            }
726            if (komento == "speed")
727            {
728                nopeus = numero;
729            }
730            if(komento=="aivo")
731            {
732                aivolaskuri.Value = (int)numero;
733            }
734            if(komento=="MessageDisplayX")
735            {
736                MessageDisplay.X = numero;
737                huijattu = false;
738                return;
739            }
740            if (komento == "MessageDisplayY")
741            {
742                MessageDisplay.Y = numero;
743                huijattu = false;
744                return;
745            }
746
747            if (komento=="god")
748            {
749                pelaaja1.ElamaLaskuri.MaxValue = 99999999;
750                pelaaja1.ElamaLaskuri.Value = pelaaja1.ElamaLaskuri.MaxValue;
751            }
752            if(komento=="kranuheittoaika")
753            {
754                kranaattiaika = numero;
755            }
756            if(komento=="tähti")
757            {
758                tahtilaskuri.Value = (int)numero;
759            }
760            if(komento=="tahti")
761            {
762                tahtilaskuri.Value = (int)numero;
763                huijattu = false;
764                return;
765            }
766           
767        }
768
769
770        huijattu = true;
771    }
772    void TaukoValikko()
773    {
774        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin taukovalikko",
775"Palaa peliin", "Lopeta", "Asetukset","Aloita uudelleen","Tekijät" ,"Musiikki");
776        Add(alkuValikko);
777        alkuValikko.DefaultCancel = 3;
778        alkuValikko.Color = Color.Charcoal;
779        alkuValikko.AddItemHandler(0, Jatka); 
780        alkuValikko.AddItemHandler(1, Exit);
781        alkuValikko.AddItemHandler(2, AliOhjelma);
782        alkuValikko.AddItemHandler(3, UudelleenAloitus);
783        alkuValikko.AddItemHandler(4, Tekijat);
784        alkuValikko.AddItemHandler(5, Musiikki);
785
786
787    }
788    void AliOhjelma()
789    {
790        MultiSelectWindow Asetukset = new MultiSelectWindow("ASETUKSET",
791            "Palaa valikkoon", "Äänenvoimakkuus");
792        Add(Asetukset);
793        Asetukset.AddItemHandler(0, TaukoValikko);
794        Asetukset.AddItemHandler(1, AanenVoimakkuus);
795       
796       
797       // ÄänenVoimakkuus.Changed += ZoomaaKenttaa;
798
799       
800    }
801    void UudelleenAloitus()
802    {
803        AloitaPeli();
804    }
805    void Jatka()
806    {
807
808    }
809    void ParhaatPisteet()
810    {
811        topLista.Show();
812
813    }
814
815
816    void LuoPistelaskuri()
817    {
818        //pisteLaskuri = new IntMeter(0);
819
820        Label pisteNaytto = new Label();
821        pisteNaytto.X = Screen.Left + 100;
822        pisteNaytto.Y = Screen.Top - 100;
823        pisteNaytto.TextColor = Color.Black;
824        pisteNaytto.Color = Color.White;
825
826        pisteNaytto.BindTo(pisteLaskuri);
827        Add(pisteNaytto);
828    }
829    void AanenVoimakkuus()
830    {
831        Slider liukusaadin = new Slider(200, 20);
832        liukusaadin.BindTo(ÄänenVoimakkuus);
833        liukusaadin.Color = Color.Gray;
834        liukusaadin.InactiveColor = Color.Ivory;
835        liukusaadin.ActiveColor = Color.DarkJungleGreen;
836        Add(liukusaadin);
837        PushButton Takaisin = new PushButton("OK");
838        Takaisin.Clicked += delegate { liukusaadin.Destroy();Takaisin.Destroy();AliOhjelma(); };
839        Takaisin.Y = -100;
840        Add(Takaisin);
841    }
842    void TelePort(Vector paikka, double leveys, double korkeus)
843    {
844        PhysicsObject teleport = PhysicsObject.CreateStaticObject(leveys, korkeus);
845        teleport.Position = paikka;
846        teleport.Image = LoadImage("blackhole");
847        Add(teleport, 3);
848        teleport.Tag = "tele";
849        int pMaxMaara = 100;
850        ExplosionSystem rajahdys =
851          new ExplosionSystem(LoadImage("rajahdys"), pMaxMaara);
852        Add(rajahdys);
853
854        double x = teleport.X;
855        double y = teleport.Y;
856        int pMaara = 1;
857        rajahdys.MaxScale = 20;
858        rajahdys.MinScale = 10;
859        rajahdys.MaxLifetime = 2;
860        rajahdys.MaxVelocity = 5;
861        Timer ajastin = new Timer();
862        ajastin.Interval = 0.1;
863        ajastin.Timeout += delegate { rajahdys.AddEffect(x, y, pMaara); };
864        ajastin.Start();
865    }
866    void TormaaTeleport(PhysicsObject pelaaja1, PhysicsObject teleport)
867    {
868        if(tahtilaskuri.Value>100)
869        {
870            //if(kenttaJossaOllaanNyt==1) kenttaJossaOllaanNyt = 2;
871            //else if (kenttaJossaOllaanNyt == 2) kenttaJossaOllaanNyt = 1;
872            kenttaJossaOllaanNyt += 1;
873            if(kenttaJossaOllaanNyt == 5)
874            {
875                LoppuTekstit();
876            }
877            else
878            {
879                AloitaPeli();
880
881            }
882         
883        }
884    }
885    void LuoTahtilaskuri()
886    {
887        //tahtilaskuri =
888
889        Label pisteNaytto = new Label();
890        pisteNaytto.X = Screen.Left + 80;
891        pisteNaytto.Y = Screen.Top - 80;
892        pisteNaytto.TextColor = Color.Black;
893        pisteNaytto.Color = Color.White;
894
895        pisteNaytto.BindTo(tahtilaskuri);
896        Add(pisteNaytto);
897    }
898    void LuoElamaLaskuri()
899    {
900        //elamalaskuri = new DoubleMeter(25);
901        //elamalaskuri.MaxValue = 25;
902        //elamalaskuri.LowerLimit += pelaaja1.Destroy;
903
904        ProgressBar elamaPalkki = new ProgressBar(150, 20);
905        elamaPalkki.X = Screen.Left + 150;
906        elamaPalkki.Y = Screen.Top - 20;
907        elamaPalkki.BindTo(pelaaja1.ElamaLaskuri);
908        elamaPalkki.Color = Color.Black;
909        elamaPalkki.BorderColor = Color.Black;
910        Add(elamaPalkki);
911    }
912    void LuoTappoLaskuri()
913    {
914        //tappolaskuri = new IntMeter(0);
915
916        Label pisteNaytto = new Label();
917        pisteNaytto.X = Screen.Left + 60;
918        pisteNaytto.Y = Screen.Top - 60;
919        pisteNaytto.TextColor = Color.Black;
920        pisteNaytto.Color = Color.White;
921
922        pisteNaytto.BindTo(tappolaskuri);
923        Add(pisteNaytto);
924    }
925    void LuoAivoLaskuri()
926    {
927        //aivolaskuri = new IntMeter(0);
928
929        Label pisteNaytto = new Label();
930        pisteNaytto.X = Screen.Left + 40;
931        pisteNaytto.Y = Screen.Top - 40;
932        pisteNaytto.TextColor = Color.Black;
933        pisteNaytto.Color = Color.White;
934       
935
936        pisteNaytto.BindTo(aivolaskuri);
937        Add(pisteNaytto);
938    }
939    void GameOver()
940    {
941        if (huijattu)
942        {
943            Begin();
944        }
945        else
946        {
947            topLista.EnterAndShow(pisteLaskuri.Value + tahtilaskuri.Value + tappolaskuri.Value + aivolaskuri.Value);
948   
949
950        }
951       
952
953       
954       
955    }
956    void AlkuValikko()
957    {
958        ClearAll();
959        alkuValikko = true;
960        MultiSelectWindow Valikko = new MultiSelectWindow("Pelin alkuvalikko",
961"Aloita peli", "Parhaat pisteet", "Lopeta", "Tekijät", "Musiikki", "Vaikeustaso");
962        Add(Valikko);
963        Valikko.AddItemHandler(0, AloitaPeli);
964        Valikko.AddItemHandler(1, ParhaatPisteet);
965        Valikko.AddItemHandler(2, Exit);
966        Valikko.AddItemHandler(3, Tekijat);
967        Valikko.AddItemHandler(4, Musiikki);
968        Valikko.AddItemHandler(5, Difficulty);
969    }
970    void Tekijat()
971    {
972        MessageDisplay.Add("Tekijät: Patu");
973        MessageDisplay.MessageTime = new TimeSpan(0, 0, 7);
974        MessageDisplay.Add("Tehty Visual Studio 2015 ja avustajien avulla");
975        MessageDisplay.MessageTime = new TimeSpan(0, 0, 7);
976        MessageDisplay.Add("Koodauskieli: C#");
977        MessageDisplay.MessageTime = new TimeSpan(0, 0, 7);
978        MessageDisplay.X = 200;
979        MessageDisplay.Y = 200;
980        MessageDisplay.MaxMessageCount = 10;
981        if (alkuValikko)
982            AlkuValikko();
983        else
984            TaukoValikko();
985    }
986    void Difficulty()
987    {
988        MultiSelectWindow VaikeusValikko = new MultiSelectWindow("Vaikeustaso", "Helppo", "Keskivaikea", "Vaikea", "Mahdoton");
989        VaikeusValikko.AddItemHandler(0, Helppo);
990        VaikeusValikko.AddItemHandler(1, Keskivaikea);
991        VaikeusValikko.AddItemHandler(2, Vaikea);
992        VaikeusValikko.AddItemHandler(3, Mahdoton);
993        VaikeusValikko.AddItemHandler(4, AlkuValikko);
994        Add(VaikeusValikko);
995        MessageDisplay.Add("Mahdoton - sairaasti lagia");
996    }
997    void Helppo()
998    {
999        vaikeus = 2.0;
1000        AlkuValikko();
1001    }
1002    void Keskivaikea()
1003    {
1004        vaikeus = 1.5;
1005        AlkuValikko();
1006    }
1007    void Vaikea()
1008    {
1009        vaikeus = 1.0;
1010        AlkuValikko();
1011    }
1012    void Mahdoton()
1013    {
1014        vaikeus = 0.1;
1015        AlkuValikko();
1016    }
1017    void Musiikki()
1018    {
1019        MultiSelectWindow MusiikkiValikko = new MultiSelectWindow("Musiikki", "Default", "Musiikki1", "Musiikki2", "Ringtone remix", "Ringtone remix2", "Ei musiikkia");
1020        MusiikkiValikko.AddItemHandler(0, Default);
1021        MusiikkiValikko.AddItemHandler(1, Musiikki1);
1022        MusiikkiValikko.AddItemHandler(2, Musiikki2);
1023        MusiikkiValikko.AddItemHandler(3, Musiikki3);
1024        MusiikkiValikko.AddItemHandler(4, Musiikki4);
1025        MusiikkiValikko.AddItemHandler(5, EiMusiikkia);
1026        Add(MusiikkiValikko);
1027   
1028    }
1029    void Musiikki1()
1030    {
1031        MediaPlayer.Play("music1");
1032        if (alkuValikko)
1033            AlkuValikko();
1034        else
1035            TaukoValikko();
1036    }
1037    void Musiikki2()
1038    {
1039        MediaPlayer.Play("music2");
1040        if (alkuValikko)
1041            AlkuValikko();
1042        else
1043            TaukoValikko();
1044    }
1045    void Musiikki3()
1046    {
1047        MediaPlayer.Play("lol1");
1048        MediaPlayer.IsRepeating = true;
1049        if (alkuValikko)
1050            AlkuValikko();
1051        else
1052            TaukoValikko();
1053    }
1054    void Musiikki4()
1055    {
1056        MediaPlayer.Play("lol2");
1057        MediaPlayer.IsRepeating = true;
1058        if (alkuValikko)
1059            AlkuValikko();
1060        else
1061            TaukoValikko();
1062    }
1063    void EiMusiikkia()
1064    {
1065        MediaPlayer.IsMuted = true;
1066        if (alkuValikko)
1067            AlkuValikko();
1068        else
1069            TaukoValikko();
1070    }
1071    void Default()
1072    {
1073        MediaPlayer.Play("background_music");
1074        if (alkuValikko)
1075            AlkuValikko();
1076        else
1077            TaukoValikko();
1078    }
1079    void AlkuTekstit()
1080    {
1081        int pMaxMaara = 200;
1082        ExplosionSystem rajahdys =
1083          new ExplosionSystem(LoadImage("rajahdys"), pMaxMaara);
1084
1085        Add(rajahdys);
1086
1087        double x = 0;
1088        double y = 0;
1089        int pMaara = 500;
1090        rajahdys.MaxLifetime = 4;
1091        rajahdys.AddEffect(x, y, pMaara);
1092        Label teksti = new Label("Tehty Visual Studio 2015 avulla");
1093        Add(teksti);
1094        Label logo = new Label(LoadImage("logo"));
1095        logo.X = 0;
1096        logo.Y = 200;
1097        Add(logo);
1098        Timer.SingleShot(4, AlkuValikko);
1099    }
1100    void LoppuTekstit()
1101    {
1102        Label teksti = new Label("Tekijät:");
1103        Add(teksti);
1104        Label teksti1 = new Label("Patrik Käpyaho");
1105        teksti1.X = 0;
1106        teksti1.Y = -60;
1107        Add(teksti1);
1108        Label teksti2 = new Label("Avustajat:");
1109        teksti2.X = 0;
1110        teksti2.Y = -120;
1111        Add(teksti2);
1112        Label teksti3 = new Label("Simo, Jouni ja Mikko");
1113        teksti3.X = 0;
1114        teksti3.Y = -180;
1115        Add(teksti3);
1116        teksti3.Color = Color.MediumPurple;
1117        teksti2.Color = Color.MediumPurple;
1118        teksti1.Color = Color.MediumPurple;
1119        teksti.Color = Color.MediumPurple;
1120        Label logo = new Label(LoadImage("logo"));
1121        logo.X = 0;
1122        logo.Y = 200;
1123        Add(logo);
1124        Timer.SingleShot(4, GameOver);
1125    }
1126
1127
1128
1129
1130
1131}
1132class Hahmo : PlatformCharacter
1133{
1134    private DoubleMeter elamaLaskuri = new DoubleMeter(25, 0, 25);
1135    public DoubleMeter ElamaLaskuri { get { return elamaLaskuri; } }
1136
1137    public Hahmo(double leveys, double korkeus)
1138        : base(leveys, korkeus)
1139    {
1140        elamaLaskuri.LowerLimit += delegate {
1141            this.Destroy(); };
1142    }
1143}
Note: See TracBrowser for help on using the repository browser.