source: 2017/31/TaavettiV/Trumpsimulator/Trumpsimulator/Trumpsimulator/Trumpsimulator.cs @ 9426

Revision 9426, 27.6 KB checked in by nupeohje, 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;
8
9class Pelihahmo : PlatformCharacter
10{
11    public double nopeus = 300;
12    public double hyppyNopeus = 750;
13
14
15    private DoubleMeter elamaLaskuri = new DoubleMeter(10, 0, 10);
16    public DoubleMeter ElamaLaskuri { get { return elamaLaskuri; } }
17
18    public Pelihahmo(double leveys, double korkeus)
19        : base(leveys, korkeus)
20    {
21        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
22    }
23
24}
25
26class Caktus : PhysicsObject
27{
28    private IntMeter elamaLaskuri = new IntMeter(5, 0, 5);
29    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
30
31    public Caktus(double leveys, double korkeus)
32        : base(leveys, korkeus)
33    {
34        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
35    }
36
37}
38
39
40class Wife : PlatformCharacter
41{
42    private IntMeter elamaLaskuri = new IntMeter(1000000000, 0, 1000000000);
43    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
44    public Timer Ajastin;
45    public Wife(double leveys, double korkeus)
46        : base(leveys, korkeus)
47    {
48        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
49    }
50
51    public bool AloitaAjastin()
52    {
53        return true;
54    }
55}
56
57class Hilariclintons : PlatformCharacter
58{
59    private IntMeter elamaLaskuri = new IntMeter(20, 0, 20);
60    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
61    public Timer Ajastin;
62    public Hilariclintons(double leveys, double korkeus)
63        : base(leveys, korkeus)
64    {
65        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
66    }
67
68    public bool AloitaAjastin()
69    {
70        return true;
71    }
72}
73    class Asevihu : PlatformCharacter
74{
75    private DoubleMeter elamaLaskuri = new DoubleMeter(3, 0, 3);
76    public DoubleMeter ElamaLaskuri { get { return elamaLaskuri; } }
77    public Timer Ajastin;
78    public Asevihu(double leveys, double korkeus)
79        : base(leveys, korkeus)
80    {
81        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
82    }
83
84    public bool AloitaAjastin()
85    {
86        return true;
87    }
88}
89
90
91
92
93class Bombi : PlatformCharacter
94{
95    private IntMeter elamaLaskuri = new IntMeter(3, 0, 3);
96    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
97
98    public Bombi(double leveys, double korkeus)
99        : base(leveys, korkeus)
100    {
101        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
102    }
103
104}
105
106
107
108
109class Talo : PlatformCharacter
110{
111    private IntMeter elamaLaskuri = new IntMeter(10, 0, 10);
112    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
113
114    public Talo(double leveys, double korkeus)
115        : base(leveys, korkeus)
116    {
117        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
118    }
119
120}
121
122
123
124public class Trumpsimulator : PhysicsGame
125{
126   
127    const int RUUDUN_KOKO = 40;
128    const double flynopeus = 3000;
129    IntMeter pommilaskuri = new IntMeter(0, 0, 10000);
130
131    Image meksikolainen = LoadImage("meksikolainen");
132    Pelihahmo pelaaja1;
133    Pelihahmo pelaaja2;
134
135    DoubleMeter jetpacklaskuri;
136    DoubleMeter Ammolaskuri;
137    int kenttaNumero = 1;
138    Image bombiKuva = LoadImage("Bombi");
139    Image pelaajanKuva = LoadImage("trumphahmo");
140    Image tahtiKuva = LoadImage("one dollar");
141    Image wifekuva = LoadImage("untitled");
142    Image hilariclinton = LoadImage("hilari clinton");
143    SoundEffect maaliAani = LoadSoundEffect("maali");
144    Image olio6Kuva = LoadImage("tumbleweed");
145
146    private Image ulommanSavuHiukkasenKuva = LoadImage("white");
147
148    private Image savuHiukkasenKuva = LoadImage("smoke");
149
150    Smoke savu;
151
152    IntMeter pisteLaskuri;
153
154    void LuoPistelaskuri()
155    {
156        pisteLaskuri = new IntMeter(0);
157
158        Label pisteNaytto = new Label();
159        pisteNaytto.X = Screen.Left + 100;
160        pisteNaytto.Y = Screen.Top - 100;
161        pisteNaytto.TextColor = Color.Black;
162        pisteNaytto.Color = Color.White;
163
164        pisteNaytto.BindTo(pisteLaskuri);
165        pisteNaytto.IntFormatString = "{0} $";
166        Add(pisteNaytto);
167    }
168
169    public override void Begin()
170    {
171        ClearAll();
172        Gravity = new Vector(0, -1000);
173
174        jetpacklaskuri = new DoubleMeter(0, 0, 100);
175        Ammolaskuri = new DoubleMeter(0, 0, 100);
176        LuoKentta();
177        ammopalkki();
178        LisaaNappaimet();
179        LuoPistelaskuri();
180
181        Camera.Follow(pelaaja1);
182        Camera.ZoomFactor = 1.2;
183        Camera.StayInLevel = true;
184    }
185    void Rajayta(PhysicsObject tormaaja, PhysicsObject Kohde)
186    {
187        int pMaxMaara = 3;
188        // Alustetaan räjähdysjärjestelmä
189        // Parametrit:
190        // * kuva: mitä tekstuuria räjähdyksen
191        //   hiukkasten halutaan käyttävän
192        // * pMaxMaara: räjähdyksen käyttämien
193        //   hiukkasten eli partikkeleiden maksimimäärä
194        ExplosionSystem rajahdys =
195        new ExplosionSystem(LoadImage("tomasräjähdys"), pMaxMaara);
196        rajahdys.MaxScale = 100;
197
198
199        // Lisätään järjestelmä peliin
200        Add(rajahdys);
201
202        int pMaara = 50;
203        // "Käynnistetään" räjähdys
204        rajahdys.AddEffect(tormaaja.X, Kohde.Y, pMaara);
205        tormaaja.Destroy();
206    }
207    void tomas(Vector paikka, double leveys, double korkeus)
208    {
209        PlatformCharacter y = new PlatformCharacter(leveys * 0.8, korkeus * 1.0);
210        y.Position = paikka;
211
212
213
214
215        Add(y);
216        y.Tag = "y";
217        y.Image = LoadImage("tumbleweed");
218        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
219        tasoAivot.Speed = 200;
220
221        tasoAivot.FallsOffPlatforms = true;
222        tasoAivot.TriesToJump = true;
223
224        y.Brain = tasoAivot;
225
226    }
227
228    void bombi(Vector paikka, double leveys, double korkeus)
229    {
230        Asevihu p = new Asevihu(leveys * 2.0, korkeus * 2.0);
231        p.Position = paikka;
232        p.Image = bombiKuva;
233        Add(p);
234        p.Tag = "p";
235
236
237
238        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
239        tasoAivot.Speed = 100;
240
241        tasoAivot.FallsOffPlatforms = true;
242        tasoAivot.TriesToJump = true;
243
244        p.Brain = tasoAivot;
245
246        AddCollisionHandler(p, "pallo", (PhysicsObject a, PhysicsObject b)=> { p.ElamaLaskuri.Value -= 0.01; });
247    }
248
249    void paasiMaalin(PhysicsObject pelaaja, PhysicsObject maali)
250    {
251        kenttaNumero++;
252
253        ClearAll();
254        Begin();
255
256
257    }
258    void lisaaMaali(Vector paikka, double leveys, double korkeus)
259    {
260        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
261        maali.Tag = "maali";
262        maali.Position = paikka;
263        Add(maali);
264    }
265
266    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
267    {
268        ammus.Destroy();
269        if (kohde.Tag.Equals("A"))
270        {
271            (kohde as Asevihu).ElamaLaskuri.Value--;
272        }
273
274        if (kohde is Caktus)
275        {
276            (kohde as Caktus).ElamaLaskuri.Value--;
277        }
278
279        if (kohde is Talo)
280        {
281            (kohde as Talo).ElamaLaskuri.Value--;
282        }
283
284        if (kohde is Hilariclintons)
285        {
286            (kohde as Hilariclintons).ElamaLaskuri.Value--;
287        }
288    }
289
290    void AmmuAseella(PlatformCharacter ampuja)
291    {
292   
293        PhysicsObject ammus = ampuja.Weapon.Shoot();
294
295        if (ammus != null)
296        {
297            //ammus.Size *= 0.10;
298            ammus.Width = 20;
299            ammus.Height = 1;
300            //ammus.Image = ...
301            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
302        }
303
304    }
305    void avaaKKauppa()
306    {
307        MultiSelectWindow alkuValikko = new MultiSelectWindow("shop", "jetpack(10$)", "ammo(5$)", "atomi bommi(30$)");
308        Add(alkuValikko);
309
310        alkuValikko.AddItemHandler(0, ostajetpack);
311        alkuValikko.AddItemHandler(1, ostaammo);
312        alkuValikko.AddItemHandler(2, ostaatomibommi);
313    }
314    void ostajetpack()
315    {
316        if(pisteLaskuri.Value >= 10)
317        {
318            pisteLaskuri.Value -= 10;
319            jetpacklaskuri.Value = 100;
320        }
321    }
322
323    void ostaammo()
324    {
325        if (pisteLaskuri.Value >= 5)
326        {
327            pisteLaskuri.Value -= 5;
328            pelaaja1.Weapon.Ammo.Value += 5000;
329        }
330    }
331    void ostaatomibommi()
332    {
333        if (pisteLaskuri.Value >= 30)
334        {
335            pisteLaskuri.Value -= 30;
336            pommilaskuri.Value += 1;
337        }
338    }
339    void VihuAmmuAseella(PlatformCharacter ampuja)
340    {
341        if (ampuja.IsDestroyed) return;
342
343        PhysicsObject ammus = ampuja.Weapon.Shoot();
344
345        if (ammus != null)
346        {
347            //ammus.Size *= 0.10;
348            ammus.Width = 20;
349            ammus.Height = 1;
350            //ammus.Image = ...
351            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
352            AddCollisionHandler(ammus, "talo", Tormaataloon);
353        }
354
355    }
356
357    void Tormaataloon(PhysicsObject tormaa, PhysicsObject kohde)
358    {
359        (kohde as Talo).ElamaLaskuri.AddValue(-1);
360    }
361    void LuoKentta()
362    {
363
364        TileMap kentta = TileMap.FromLevelAsset("kentta" + kenttaNumero);
365        kentta.SetTileMethod('#', LisaaTaso);
366        kentta.SetTileMethod('*', Lisaadollar);
367        kentta.SetTileMethod('N', LisaaPelaaja);
368        kentta.SetTileMethod('K', lisaaMaali);
369        kentta.SetTileMethod('y', tomas);
370        kentta.SetTileMethod('A', Lisaaasevihu);
371        kentta.SetTileMethod('Q', wife);
372        kentta.SetTileMethod('H', Lisaahiekka);
373        kentta.SetTileMethod('R', LisaaRuoho);
374        kentta.SetTileMethod('Z', LisaaTalo);
375        kentta.SetTileMethod('h', hilariclintons);
376        kentta.SetTileMethod('M', LisaaMuuri);
377        kentta.SetTileMethod('G', LisaaTacoVihu);
378        kentta.SetTileMethod('W', Lisaaweed);
379        kentta.SetTileMethod('p', bombi);
380        kentta.SetTileMethod('C', Lisaacaktus);
381        kentta.SetTileMethod('I', Lisaailuminadi);
382        kentta.SetTileMethod('J', lisaajetpack);
383        kentta.SetTileMethod('X', Lisaamd);
384        kentta.SetTileMethod('t', Lisaatupakka);
385        kentta.SetTileMethod('%', LisaaMeksiko);
386        kentta.Optimize('H');
387        kentta.Optimize('R');
388        kentta.Optimize('#');
389
390        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
391
392
393        Level.CreateBorders();
394        Level.Background.CreateGradient(Color.White, Color.SeaGreen);
395        Level.Background.Image = LoadImage("taustakuvanewyork");
396    }
397    void hilariclintons(Vector paikka, double leveys, double korkeus)
398    {
399        Hilariclintons m = new Hilariclintons(leveys * 2.0, korkeus * 2.0);
400        m.Position = paikka;
401        m.Image =hilariclinton ;
402        Add(m);
403        m.Tag = "m";
404
405
406        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
407        tasoAivot.Speed = 1500;
408
409        tasoAivot.FallsOffPlatforms = true;
410        tasoAivot.TriesToJump = true;
411
412        m.Brain = tasoAivot;
413
414    }
415
416    void lisaajetpack(Vector paikka, double leveys, double korkeus)
417    {
418        PhysicsObject jetpack = PhysicsObject.CreateStaticObject(leveys, korkeus);
419        jetpack.Position = paikka;
420        jetpack.Image = LoadImage("jetpack picture");
421        jetpack.IgnoresCollisionResponse = true;
422        jetpack.Tag = "jetpack";
423
424        Add(jetpack);
425
426    }
427   
428
429    void ElamaLoppui()
430    {
431        MessageDisplay.Add("Elämät loppuivat, voi voi.");
432    }
433    void HeitaKranaatti(PlatformCharacter pelaaja)
434    {
435        if (pelaaja.IsDestroyed) return;
436
437        Grenade kranu = new Grenade(3.0);
438        pelaaja.Throw(kranu, Angle.FromDegrees(50), 10000);
439
440        kranu.Explosion.AddShockwaveHandler("A", KranaattiOsui);
441
442        kranu.Explosion.AddShockwaveHandler("p", KranaattiOsui);
443    }
444    void KranaattiOsui(IPhysicsObject rajahdyksenKohde, Vector v)
445    {
446        rajahdyksenKohde.Destroy();
447    }
448    void ydinpommi(IPhysicsObject rajahdyksenKohde, Vector v)
449    {
450        rajahdyksenKohde.Destroy();
451
452    }
453   
454    void Heitaydinpommi(PlatformCharacter pelaaja)
455    {
456        if (pelaaja.IsDestroyed)
457            return;
458
459        if (pommilaskuri.Value > 0)
460        {
461            pommilaskuri.Value -= 1;
462
463            Grenade kranu = new Grenade(180.0);
464            kranu.Explosion.MaxRadius = 4000;
465            kranu.Image = LoadImage("iluminadi");
466            pelaaja1.Throw(kranu, Angle.FromDegrees(50), 1000);
467
468            kranu.Explosion.AddShockwaveHandler("A", KranaattiOsui);
469
470            kranu.Explosion.AddShockwaveHandler("p", KranaattiOsui);
471        }
472       
473
474    }
475
476    void LisaaTaso(Vector paikka, double leveys, double korkeus)
477    {
478        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
479        taso.Position = paikka;
480        taso.Color = Color.Green;
481        Add(taso);
482        taso.TextureWrapSize = new Vector(leveys / RUUDUN_KOKO, korkeus / RUUDUN_KOKO);
483    }
484    void LisaaMeksiko(Vector paikka, double leveys, double korkeus)
485    {
486        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus*60);
487        taso.Position = paikka;
488        taso.Color = Color.Transparent;
489        Add(taso);
490        taso.Tag = "meksiko";
491        taso.IgnoresCollisionResponse = true;
492    }
493
494    void LisaaMuuri(Vector paikka, double leveys, double korkeus)
495    {
496        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
497        taso.Position = paikka;
498        taso.Color = Color.Green;
499        Add(taso);
500
501        taso.Image = LoadImage("muuri");
502    }
503
504
505
506    void Lisaaweed(Vector paikka, double leveys, double korkeus)
507    {
508        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
509        taso.Position = paikka;
510        taso.Color = Color.Green;
511        Add(taso);
512
513        taso.Image = LoadImage("weed");
514    }
515
516
517    void Lisaatupakka(Vector paikka, double leveys, double korkeus)
518    {
519        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
520        taso.Position = paikka;
521        taso.Color = Color.Green;
522        Add(taso);
523
524        taso.Image = LoadImage("tupakka");
525    }
526
527
528    void Lisaailuminadi(Vector paikka, double leveys, double korkeus)
529    {
530        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
531        taso.Position = paikka;
532        taso.Color = Color.Green;
533        Add(taso);
534
535        taso.Image = LoadImage("iluminadi");
536    }
537
538
539
540    void Lisaahiekka(Vector paikka, double leveys, double korkeus)
541    {
542        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
543        taso.Position = paikka;
544
545        Add(taso);
546        taso.Color = Color.Green;
547        taso.Image = LoadImage("hiekka");
548        taso.TextureWrapSize = new Vector(leveys / RUUDUN_KOKO, korkeus / RUUDUN_KOKO);
549        Add(taso);
550    }
551
552    void LisaaTalo(Vector paikka, double leveys, double korkeus)
553    {
554        Talo taso = new Talo(leveys, korkeus);
555        taso.Position = paikka;
556        taso.Color = Color.Green;
557        taso.Tag = "talo";
558        Add(taso);
559        taso.MakeStatic();
560
561        taso.Image = LoadImage("talo");
562
563    }
564
565
566    void LisaaRuoho(Vector paikka, double leveys, double korkeus)
567    {
568        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
569        taso.Position = paikka;
570
571        Add(taso);
572        taso.Color = Color.Green;
573        taso.Image = LoadImage("ruoho");
574        taso.TextureWrapSize = new Vector(leveys / RUUDUN_KOKO, korkeus / RUUDUN_KOKO);
575    }
576
577
578
579    void Lisaamd(Vector paikka, double leveys, double korkeus)
580    {
581        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys * 2, korkeus * 3);
582        taso.Position = paikka;
583        taso.Bottom = paikka.Y - RUUDUN_KOKO / 2;
584
585        Add(taso);
586        taso.Color = Color.Green;
587        taso.Image = LoadImage("md");
588        taso.TextureWrapSize = new Vector(leveys / RUUDUN_KOKO, korkeus / RUUDUN_KOKO);
589    }
590
591
592    void Lisaacaktus(Vector paikka, double leveys, double korkeus)
593    {
594        Caktus taso = new Caktus(leveys * 2, korkeus * 3);
595
596        taso.MakeStatic();
597        taso.Position = paikka;
598        taso.Y = paikka.Y + RUUDUN_KOKO / 2;
599
600        Add(taso);
601        taso.Color = Color.Green;
602        taso.Image = LoadImage("caktus");
603    }
604
605
606
607
608
609    void Lisaadollar(Vector paikka, double leveys, double korkeus)
610    {
611        PhysicsObject dollar = PhysicsObject.CreateStaticObject(leveys, korkeus);
612        dollar.IgnoresCollisionResponse = true;
613        dollar.Position = paikka;
614        dollar.Image = tahtiKuva;
615        dollar.Tag = "dollar";
616        Add(dollar);
617    }
618    void ammopalkki()
619    {
620        ProgressBar AmmoPalkki = new ProgressBar(150, 20);
621        AmmoPalkki.X = Screen.Left + 200;
622        AmmoPalkki.Y = Screen.Top - 50;
623        AmmoPalkki.BarColor = Color.Blue;
624        AmmoPalkki.BindTo(pelaaja1.Weapon.Ammo);
625        Add(AmmoPalkki);
626    }
627    void pelaajaKuoli()
628    {
629        MultiSelectWindow alkuValikko = new MultiSelectWindow("havisit pelin HAHAHAHAH",
630"Aloita peli", "Shop", "Lopeta");
631        Add(alkuValikko);
632
633        alkuValikko.AddItemHandler(0, Begin);
634        alkuValikko.AddItemHandler(1, avaaKKauppa);
635        alkuValikko.AddItemHandler(2, Exit);
636    }
637    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
638    {
639        pelaaja1 = new Pelihahmo(leveys, korkeus * 2.0);
640        pelaaja1.Position = paikka;
641        pelaaja1.Mass = 2.0;
642        pelaaja1.Image = pelaajanKuva;
643        pelaaja1.Tag = "pelaaja";
644        pelaaja1.Destroyed += pelaajaKuoli;
645        AddCollisionHandler(pelaaja1, "dollar", Tormaadollar);
646        AddCollisionHandler(pelaaja1, "jetpack", Tormaajetpack);
647        Add(pelaaja1);
648        AddCollisionHandler(pelaaja1, "p", CollisionHandler.ExplodeBoth(5110, true));
649        AddCollisionHandler(pelaaja1, "maali", paasiMaalin);
650        AddCollisionHandler(pelaaja1, "y", CollisionHandler.ExplodeBoth(9999999, true));
651        AddCollisionHandler(pelaaja1, "m", CollisionHandler.ExplodeBoth(999, true));
652
653        AddCollisionHandler(pelaaja1, "meksiko", (PhysicsObject a, PhysicsObject b) => Level.Background.Image=LoadImage("tausta"));
654
655        pelaaja1.Weapon = new AssaultRifle(30, 10);
656        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
657        pelaaja1.Weapon.InfiniteAmmo = false;
658        pelaaja1.Weapon.Ammo.Value = 100;
659        pelaaja1.Weapon.Ammo.MaxValue = 100;
660        pelaaja1.Weapon.Power.DefaultValue = 400;
661        pelaaja1.Weapon.AmmoIgnoresGravity = true;
662        pelaaja1.Weapon.AmmoIgnoresExplosions = true;
663        pelaaja1.Weapon.CanHitOwner = false;
664        pelaaja1.Weapon.Image = LoadImage("machine gun");
665        pelaaja1.Weapon.Y = 5;
666        pelaaja1.Weapon.FireRate = 12;
667
668        ProgressBar jetpackpalkki = new ProgressBar(150, 20);
669        jetpackpalkki.X = Screen.Right - 150;
670        jetpackpalkki.Y = Screen.Top - 20;
671        jetpackpalkki.BindTo(jetpacklaskuri);
672        jetpackpalkki.BarColor = Color.SkyBlue;
673        Add(jetpackpalkki);
674
675        ProgressBar elamaPalkki = new ProgressBar(150, 20);
676        elamaPalkki.X = Screen.Left + 150;
677        elamaPalkki.Y = Screen.Top - 20;
678        elamaPalkki.BindTo(pelaaja1.ElamaLaskuri);
679        Add(elamaPalkki);
680    }
681
682
683    void LisaaNappaimet()
684    {
685        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
686        Keyboard.Listen(Key.Escape, ButtonState.Pressed, avaaKKauppa, "Lopeta peli");
687        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, "Lopeta peli", pelaaja1);
688        Keyboard.Listen(Key.X, ButtonState.Down, Camera.Zoom, "zoom", 1.1);
689        Keyboard.Listen(Key.C, ButtonState.Down, Camera.Zoom, "zoom", 0.1);
690        Keyboard.Listen(Key.E, ButtonState.Pressed, HeitaKranaatti, "heitä kranaatti", pelaaja1);
691        Keyboard.Listen(Key.Q, ButtonState.Pressed, Heitaydinpommi, "heitä ydinpommi", pelaaja1);
692        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -pelaaja1.nopeus);
693        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja1, pelaaja1.nopeus);
694        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, pelaaja1.hyppyNopeus);
695        Keyboard.Listen(Key.Space, ButtonState.Down, fly, "pelaaja lentää", pelaaja1, flynopeus);
696        Keyboard.Listen(Key.Space, ButtonState.Released, LopetaSavuttaminen, null, pelaaja1 );
697        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
698
699        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
700
701        //ControllerOne.Listen(Button.A, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
702        //ControllerOne.Listen(Button.D, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
703        //ControllerOne.Listen(Button.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
704
705        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
706
707
708
709        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
710        Keyboard.Listen(Key.Escape, ButtonState.Pressed, avaaKKauppa, "Lopeta peli");
711    //    Keyboard.Listen(Key.P, ButtonState.Down, AmmuAseella, "Lopeta peli", pelaaja2);
712       
713       
714        Keyboard.Listen(Key.L, ButtonState.Down, HeitaKranaatti, "heitä kranaatti", pelaaja2);
715        Keyboard.Listen(Key.M, ButtonState.Down, Heitaydinpommi, "heitä ydinpommi", pelaaja2);
716        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, -pelaaja1.nopeus);
717        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja2, pelaaja1.nopeus);
718        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, pelaaja1.hyppyNopeus);
719        Keyboard.Listen(Key.O, ButtonState.Down, fly, "pelaaja lentää", pelaaja2, flynopeus);
720       
721       
722   }
723    void Liikuta(PlatformCharacter hahmo, double nopeus)
724    {
725        hahmo.Walk(nopeus);
726    }
727
728    void Hyppaa(PlatformCharacter hahmo, double nopeus)
729    {
730        hahmo.Jump(nopeus);
731    }
732    void VihuAmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
733    {
734        ammus.Destroy();
735        if (kohde.Tag.ToString() == "pelaaja")
736        {
737            (kohde as Pelihahmo).ElamaLaskuri.Value--;
738        }
739
740        if (kohde is Wife)
741        {
742            (kohde as Wife).ElamaLaskuri.Value--;
743        }
744    }
745    void asevihuOsui(PhysicsObject ammus, PhysicsObject kohde)
746    {
747        ammus.Destroy();
748        if (kohde.Tag == "pelaaja1")
749        {
750            kohde.Destroy();
751        }
752    }
753    void Lisaaasevihu(Vector paikka, double leveys, double korkeus)
754    {
755        Asevihu asevihu = new Asevihu(leveys * 2.0, korkeus * 2.0);
756        asevihu.Position = paikka;
757        asevihu.Image = meksikolainen;
758        Add(asevihu);
759        asevihu.Tag = "A";
760
761        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
762        tasoAivot.Speed = 100;
763       
764        tasoAivot.FallsOffPlatforms = true;
765        tasoAivot.TriesToJump = true;
766
767        asevihu.Brain = tasoAivot;
768
769        asevihu.Weapon = new AssaultRifle(30, 10);
770        asevihu.Weapon.ProjectileCollision = VihuAmmusOsui;
771
772        Timer aikaLaskuri = new Timer();
773        aikaLaskuri.Interval = 1.0;
774        aikaLaskuri.Timeout += () => VihuAmmuAseella(asevihu);
775        aikaLaskuri.Start();
776
777        AddCollisionHandler(asevihu, "pallo", (PhysicsObject a, PhysicsObject b) => { asevihu.ElamaLaskuri.Value -= 0.01; });
778    }
779
780    void LisaaTacoVihu(Vector paikka, double leveys, double korkeus)
781    {
782        Asevihu tacovihu = new Asevihu(leveys * 2.0, korkeus * 2.0);
783        tacovihu.Position = paikka;
784        tacovihu.Image = LoadImage("mexivotacoduude");
785        Add(tacovihu);
786        tacovihu.Tag = "A";
787
788        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
789        tasoAivot.Speed = 100;
790
791        tasoAivot.FallsOffPlatforms = true;
792        tasoAivot.TriesToJump = true;
793
794        tacovihu.Brain = tasoAivot;
795
796        //tacovihu.Weapon = new AssaultRifle(30, 10);
797        //tacovihu.Weapon.ProjectileCollision = VihuAmmusOsui;
798
799        Timer aikaLaskuri = new Timer();
800        aikaLaskuri.Interval = 5.2;
801        aikaLaskuri.Timeout += delegate
802        {
803            Grenade kranu = new Grenade(7.2);
804            kranu.Image = LoadImage("tacobom");
805            tacovihu.Throw(kranu, Angle.FromDegrees(300), 1000);
806
807        };
808        aikaLaskuri.Start();
809
810        tacovihu.Destroyed += aikaLaskuri.Stop;
811    }
812
813    void Tormaadollar(PhysicsObject hahmo, PhysicsObject dollar)
814    {
815        maaliAani.Play();
816        MessageDisplay.Add("Keräsit dollarin!");
817        dollar.Destroy();
818        pisteLaskuri.Value += 352645275;
819    }
820
821    void Tormaajetpack(PhysicsObject hahmo, PhysicsObject jetpack)
822    {
823        maaliAani.Play();
824        MessageDisplay.Add("Keräsit jetpack!");
825        jetpack.Destroy();
826
827        jetpacklaskuri.Value = 100;
828    }
829   
830    void fly(PlatformCharacter hahmo, double nopeus)
831    {
832        if (jetpacklaskuri.Value > 0)
833        {
834            hahmo.Push(new Vector(0, nopeus));
835            jetpacklaskuri.Value -= 0.1;
836
837            for (int i = 0; i < 5; i++)
838            {
839                PhysicsObject pallo = new PhysicsObject(5, 5);
840                pallo.Color = Color.Orange;
841                pallo.Shape = Shape.Hexagon;
842                pallo.Tag = "pallo";
843                pallo.Velocity = new Vector(0, -100);
844                pallo.FadeColorTo(Color.Transparent, 2);
845                pallo.IgnoresCollisionResponse = true;
846                pallo.LifetimeLeft = TimeSpan.FromSeconds(2);
847                pallo.Position = pelaaja1.Position;
848                pallo.X += RandomGen.NextDouble(-10, 10);
849               
850               
851               
852                Add(pallo);
853               
854            }
855
856            if (savu == null)
857            {
858                savu = new Smoke(savuHiukkasenKuva, 10);
859
860                Timer savusiirrin = new Timer();
861                savusiirrin.Interval = 0.1;
862                savusiirrin.Timeout += delegate {
863                    if (savu == null)
864                    {
865                        savusiirrin.Stop();
866                        return;
867                    }
868                    savu.Position = pelaaja1.Position;
869                };
870                savusiirrin.Start();
871
872                savu.Position = pelaaja1.Position;
873                savu.OuterParticleImage = ulommanSavuHiukkasenKuva;
874                Wind = new Vector(0, -20);//voit säätää savupilven suuntaa
875                Add(savu);
876            }
877      }
878    }
879
880    void LopetaSavuttaminen(Pelihahmo pelaaja1)
881    {
882        if (savu != null)
883            savu.Destroy();
884        savu = null;
885    }
886
887
888    void wife(Vector paikka, double leveys, double korkeus)
889    {
890        pelaaja2 = new Pelihahmo(leveys * 0.8, korkeus * 3.0);
891        pelaaja2.Position = paikka;
892        pelaaja2.Bottom = paikka.Y + RUUDUN_KOKO / 2;
893        pelaaja2.Image = wifekuva;
894        Add(pelaaja2);
895        pelaaja2.Tag = "Q";
896
897
898
899        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
900        tasoAivot.Speed = 100;
901
902        tasoAivot.FallsOffPlatforms = true;
903        tasoAivot.TriesToJump = true;
904
905        //pelaaja2.Brain = tasoAivot;
906
907        AddCollisionHandler(pelaaja2, "pallo", (PhysicsObject a, PhysicsObject b) => { pelaaja2.ElamaLaskuri.Value -= 0.01; });
908
909    }
910
911
912
913}
Note: See TracBrowser for help on using the repository browser.