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

Revision 9427, 28.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('T', Lisaavaalit);
370        kentta.SetTileMethod('y', tomas);
371        kentta.SetTileMethod('A', Lisaaasevihu);
372        kentta.SetTileMethod('Q', wife);
373        kentta.SetTileMethod('H', Lisaahiekka);
374        kentta.SetTileMethod('R', LisaaRuoho);
375        kentta.SetTileMethod('Z', LisaaTalo);
376        kentta.SetTileMethod('h', hilariclintons);
377        kentta.SetTileMethod('M', LisaaMuuri);
378        kentta.SetTileMethod('G', LisaaTacoVihu);
379        kentta.SetTileMethod('W', Lisaaweed);
380        kentta.SetTileMethod('p', bombi);
381        kentta.SetTileMethod('C', Lisaacaktus);
382        kentta.SetTileMethod('I', Lisaailuminadi);
383        kentta.SetTileMethod('J', lisaajetpack);
384        kentta.SetTileMethod('X', Lisaamd);
385        kentta.SetTileMethod('t', Lisaatupakka);
386        kentta.SetTileMethod('%', LisaaMeksiko);
387        kentta.Optimize('H');
388        kentta.Optimize('R');
389        kentta.Optimize('#');
390
391        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
392
393
394        Level.CreateBorders();
395        Level.Background.CreateGradient(Color.White, Color.SeaGreen);
396        Level.Background.Image = LoadImage("taustakuvanewyork");
397    }
398    void hilariclintons(Vector paikka, double leveys, double korkeus)
399    {
400        Hilariclintons m = new Hilariclintons(leveys * 2.0, korkeus * 2.0);
401        m.Position = paikka;
402        m.Image =hilariclinton ;
403        Add(m);
404        m.Tag = "m";
405
406
407        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
408        tasoAivot.Speed = 1420;
409
410        tasoAivot.FallsOffPlatforms = true;
411        tasoAivot.TriesToJump = true;
412
413        m.Brain = tasoAivot;
414
415    }
416
417    void lisaajetpack(Vector paikka, double leveys, double korkeus)
418    {
419        PhysicsObject jetpack = PhysicsObject.CreateStaticObject(leveys, korkeus);
420        jetpack.Position = paikka;
421        jetpack.Image = LoadImage("jetpack picture");
422        jetpack.IgnoresCollisionResponse = true;
423        jetpack.Tag = "jetpack";
424
425        Add(jetpack);
426
427    }
428   
429
430    void ElamaLoppui()
431    {
432        MessageDisplay.Add("Elämät loppuivat, voi voi.");
433    }
434    void HeitaKranaatti(PlatformCharacter pelaaja)
435    {
436        if (pelaaja.IsDestroyed) return;
437
438        Grenade kranu = new Grenade(3.0);
439        pelaaja.Throw(kranu, Angle.FromDegrees(50), 10000);
440
441        kranu.Explosion.AddShockwaveHandler("A", KranaattiOsui);
442
443        kranu.Explosion.AddShockwaveHandler("p", KranaattiOsui);
444    }
445    void KranaattiOsui(IPhysicsObject rajahdyksenKohde, Vector v)
446    {
447        rajahdyksenKohde.Destroy();
448    }
449    void ydinpommi(IPhysicsObject rajahdyksenKohde, Vector v)
450    {
451        rajahdyksenKohde.Destroy();
452
453    }
454   
455    void Heitaydinpommi(PlatformCharacter pelaaja)
456    {
457        if (pelaaja.IsDestroyed)
458            return;
459
460        if (pommilaskuri.Value > 0)
461        {
462            pommilaskuri.Value -= 1;
463
464            Grenade kranu = new Grenade(180.0);
465            kranu.Explosion.MaxRadius = 4000;
466            kranu.Image = LoadImage("iluminadi");
467            pelaaja1.Throw(kranu, Angle.FromDegrees(50), 1000);
468
469            kranu.Explosion.AddShockwaveHandler("A", KranaattiOsui);
470
471            kranu.Explosion.AddShockwaveHandler("p", KranaattiOsui);
472        }
473       
474
475    }
476
477    void LisaaTaso(Vector paikka, double leveys, double korkeus)
478    {
479        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
480        taso.Position = paikka;
481        taso.Color = Color.Green;
482        Add(taso);
483        taso.TextureWrapSize = new Vector(leveys / RUUDUN_KOKO, korkeus / RUUDUN_KOKO);
484    }
485    void LisaaMeksiko(Vector paikka, double leveys, double korkeus)
486    {
487        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus*60);
488        taso.Position = paikka;
489        taso.Color = Color.Transparent;
490        Add(taso);
491        taso.Tag = "meksiko";
492        taso.IgnoresCollisionResponse = true;
493    }
494
495    void LisaaMuuri(Vector paikka, double leveys, double korkeus)
496    {
497        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
498        taso.Position = paikka;
499        taso.Color = Color.Green;
500        Add(taso);
501
502        taso.Image = LoadImage("muuri");
503    }
504
505
506
507    void Lisaaweed(Vector paikka, double leveys, double korkeus)
508    {
509        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
510        taso.Position = paikka;
511        taso.Color = Color.Green;
512        Add(taso);
513
514        taso.Image = LoadImage("weed");
515    }
516
517
518    void Lisaatupakka(Vector paikka, double leveys, double korkeus)
519    {
520        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
521        taso.Position = paikka;
522        taso.Color = Color.Green;
523        Add(taso);
524
525        taso.Image = LoadImage("tupakka");
526    }
527
528
529    void Lisaailuminadi(Vector paikka, double leveys, double korkeus)
530    {
531        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
532        taso.Position = paikka;
533        taso.Color = Color.Green;
534        Add(taso);
535
536        taso.Image = LoadImage("iluminadi");
537    }
538
539
540
541    void Lisaahiekka(Vector paikka, double leveys, double korkeus)
542    {
543        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
544        taso.Position = paikka;
545
546        Add(taso);
547        taso.Color = Color.Green;
548        taso.Image = LoadImage("hiekka");
549        taso.TextureWrapSize = new Vector(leveys / RUUDUN_KOKO, korkeus / RUUDUN_KOKO);
550        Add(taso);
551    }
552
553    void LisaaTalo(Vector paikka, double leveys, double korkeus)
554    {
555        Talo taso = new Talo(leveys, korkeus);
556        taso.Position = paikka;
557        taso.Color = Color.Green;
558        taso.Tag = "talo";
559        Add(taso);
560        taso.MakeStatic();
561
562        taso.Image = LoadImage("talo");
563
564    }
565    void Lisaavaalit(Vector paikka, double leveys, double korkeus)
566    {
567        //Talo taso = new Talo(leveys, korkeus);
568        PhysicsObject vaalit = PhysicsObject.CreateStaticObject(leveys * 10, korkeus * 10);
569        vaalit.Position = paikka;
570        vaalit.Color = Color.Green;
571        vaalit.Tag = "Vaalit";
572        Add(vaalit);
573        vaalit.MakeStatic();
574     
575        vaalit.Image = LoadImage("whitehouse");
576
577    }
578
579        void LisaaRuoho(Vector paikka, double leveys, double korkeus)
580    {
581        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
582        taso.Position = paikka;
583
584        Add(taso);
585        taso.Color = Color.Green;
586        taso.Image = LoadImage("ruoho");
587        taso.TextureWrapSize = new Vector(leveys / RUUDUN_KOKO, korkeus / RUUDUN_KOKO);
588    }
589
590
591
592    void Lisaamd(Vector paikka, double leveys, double korkeus)
593    {
594        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys * 2, korkeus * 3);
595        taso.Position = paikka;
596        taso.Bottom = paikka.Y - RUUDUN_KOKO / 2;
597
598        Add(taso);
599        taso.Color = Color.Green;
600        taso.Image = LoadImage("md");
601        taso.TextureWrapSize = new Vector(leveys / RUUDUN_KOKO, korkeus / RUUDUN_KOKO);
602    }
603
604
605    void Lisaacaktus(Vector paikka, double leveys, double korkeus)
606    {
607        Caktus taso = new Caktus(leveys * 2, korkeus * 3);
608
609        taso.MakeStatic();
610        taso.Position = paikka;
611        taso.Y = paikka.Y + RUUDUN_KOKO / 2;
612
613        Add(taso);
614        taso.Color = Color.Green;
615        taso.Image = LoadImage("caktus");
616    }
617
618
619
620
621
622    void Lisaadollar(Vector paikka, double leveys, double korkeus)
623    {
624        PhysicsObject dollar = PhysicsObject.CreateStaticObject(leveys, korkeus);
625        dollar.IgnoresCollisionResponse = true;
626        dollar.Position = paikka;
627        dollar.Image = tahtiKuva;
628        dollar.Tag = "dollar";
629        Add(dollar);
630    }
631    void ammopalkki()
632    {
633        ProgressBar AmmoPalkki = new ProgressBar(150, 20);
634        AmmoPalkki.X = Screen.Left + 200;
635        AmmoPalkki.Y = Screen.Top - 50;
636        AmmoPalkki.BarColor = Color.Blue;
637        AmmoPalkki.BindTo(pelaaja1.Weapon.Ammo);
638        Add(AmmoPalkki);
639    }
640    void pelaajaKuoli()
641    {
642        MultiSelectWindow alkuValikko = new MultiSelectWindow("havisit pelin HAHAHAHAH",
643"Aloita peli", "Shop", "Lopeta");
644        Add(alkuValikko);
645
646        alkuValikko.AddItemHandler(0, Begin);
647        alkuValikko.AddItemHandler(1, avaaKKauppa);
648        alkuValikko.AddItemHandler(2, Exit);
649    }
650    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
651    {
652        pelaaja1 = new Pelihahmo(leveys, korkeus * 2.0);
653        pelaaja1.Position = paikka;
654        pelaaja1.Mass = 2.0;
655        pelaaja1.Image = pelaajanKuva;
656        pelaaja1.Tag = "pelaaja";
657        pelaaja1.Destroyed += pelaajaKuoli;
658        AddCollisionHandler(pelaaja1, "dollar", Tormaadollar);
659        AddCollisionHandler(pelaaja1, "jetpack", Tormaajetpack);
660        Add(pelaaja1);
661        AddCollisionHandler(pelaaja1, "p", CollisionHandler.ExplodeBoth(5110, true));
662        AddCollisionHandler(pelaaja1, "maali", paasiMaalin);
663        AddCollisionHandler(pelaaja1, "Vaalit", Tormaavaalit);
664        AddCollisionHandler(pelaaja1, "y", CollisionHandler.ExplodeBoth(9999999, true));
665        AddCollisionHandler(pelaaja1, "m", CollisionHandler.ExplodeBoth(999, true));
666
667        AddCollisionHandler(pelaaja1, "meksiko", (PhysicsObject a, PhysicsObject b) => Level.Background.Image=LoadImage("tausta"));
668
669        pelaaja1.Weapon = new AssaultRifle(30, 10);
670        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
671        pelaaja1.Weapon.InfiniteAmmo = false;
672        pelaaja1.Weapon.Ammo.Value = 100;
673        pelaaja1.Weapon.Ammo.MaxValue = 100;
674        pelaaja1.Weapon.Power.DefaultValue = 400;
675        pelaaja1.Weapon.AmmoIgnoresGravity = true;
676        pelaaja1.Weapon.AmmoIgnoresExplosions = true;
677        pelaaja1.Weapon.CanHitOwner = false;
678        pelaaja1.Weapon.Image = LoadImage("machine gun");
679        pelaaja1.Weapon.Y = 5;
680        pelaaja1.Weapon.FireRate = 12;
681
682        ProgressBar jetpackpalkki = new ProgressBar(150, 20);
683        jetpackpalkki.X = Screen.Right - 150;
684        jetpackpalkki.Y = Screen.Top - 20;
685        jetpackpalkki.BindTo(jetpacklaskuri);
686        jetpackpalkki.BarColor = Color.SkyBlue;
687        Add(jetpackpalkki);
688
689        ProgressBar elamaPalkki = new ProgressBar(150, 20);
690        elamaPalkki.X = Screen.Left + 150;
691        elamaPalkki.Y = Screen.Top - 20;
692        elamaPalkki.BindTo(pelaaja1.ElamaLaskuri);
693        Add(elamaPalkki);
694    }
695
696
697    void LisaaNappaimet()
698    {
699        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
700        Keyboard.Listen(Key.Escape, ButtonState.Pressed, avaaKKauppa, "Lopeta peli");
701        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, "Lopeta peli", pelaaja1);
702        Keyboard.Listen(Key.X, ButtonState.Down, Camera.Zoom, "zoom", 1.1);
703        Keyboard.Listen(Key.C, ButtonState.Down, Camera.Zoom, "zoom", 0.1);
704        Keyboard.Listen(Key.E, ButtonState.Pressed, HeitaKranaatti, "heitä kranaatti", pelaaja1);
705        Keyboard.Listen(Key.Q, ButtonState.Pressed, Heitaydinpommi, "heitä ydinpommi", pelaaja1);
706        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -pelaaja1.nopeus);
707        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja1, pelaaja1.nopeus);
708        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, pelaaja1.hyppyNopeus);
709        Keyboard.Listen(Key.Space, ButtonState.Down, fly, "pelaaja lentää", pelaaja1, flynopeus);
710        Keyboard.Listen(Key.Space, ButtonState.Released, LopetaSavuttaminen, null, pelaaja1 );
711        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
712
713        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
714
715        //ControllerOne.Listen(Button.A, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
716        //ControllerOne.Listen(Button.D, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
717        //ControllerOne.Listen(Button.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
718
719        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
720
721
722
723        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
724        Keyboard.Listen(Key.Escape, ButtonState.Pressed, avaaKKauppa, "Lopeta peli");
725    //    Keyboard.Listen(Key.P, ButtonState.Down, AmmuAseella, "Lopeta peli", pelaaja2);
726       
727       
728        Keyboard.Listen(Key.L, ButtonState.Down, HeitaKranaatti, "heitä kranaatti", pelaaja2);
729        Keyboard.Listen(Key.M, ButtonState.Down, Heitaydinpommi, "heitä ydinpommi", pelaaja2);
730        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, -pelaaja1.nopeus);
731        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja2, pelaaja1.nopeus);
732        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, pelaaja1.hyppyNopeus);
733        Keyboard.Listen(Key.O, ButtonState.Down, fly, "pelaaja lentää", pelaaja2, flynopeus);
734       
735       
736   }
737    void Liikuta(PlatformCharacter hahmo, double nopeus)
738    {
739        hahmo.Walk(nopeus);
740    }
741
742    void Hyppaa(PlatformCharacter hahmo, double nopeus)
743    {
744        hahmo.Jump(nopeus);
745    }
746    void VihuAmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
747    {
748        ammus.Destroy();
749        if (kohde.Tag.ToString() == "pelaaja")
750        {
751            (kohde as Pelihahmo).ElamaLaskuri.Value--;
752        }
753
754        if (kohde is Wife)
755        {
756            (kohde as Wife).ElamaLaskuri.Value--;
757        }
758    }
759    void asevihuOsui(PhysicsObject ammus, PhysicsObject kohde)
760    {
761        ammus.Destroy();
762        if (kohde.Tag == "pelaaja1")
763        {
764            kohde.Destroy();
765        }
766    }
767    void Lisaaasevihu(Vector paikka, double leveys, double korkeus)
768    {
769        Asevihu asevihu = new Asevihu(leveys * 2.0, korkeus * 2.0);
770        asevihu.Position = paikka;
771        asevihu.Image = meksikolainen;
772        Add(asevihu);
773        asevihu.Tag = "A";
774
775        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
776        tasoAivot.Speed = 100;
777       
778        tasoAivot.FallsOffPlatforms = true;
779        tasoAivot.TriesToJump = true;
780
781        asevihu.Brain = tasoAivot;
782
783        asevihu.Weapon = new AssaultRifle(30, 10);
784        asevihu.Weapon.ProjectileCollision = VihuAmmusOsui;
785
786        Timer aikaLaskuri = new Timer();
787        aikaLaskuri.Interval = 1.0;
788        aikaLaskuri.Timeout += () => VihuAmmuAseella(asevihu);
789        aikaLaskuri.Start();
790
791        AddCollisionHandler(asevihu, "pallo", (PhysicsObject a, PhysicsObject b) => { asevihu.ElamaLaskuri.Value -= 0.01; });
792    }
793
794    void LisaaTacoVihu(Vector paikka, double leveys, double korkeus)
795    {
796        Asevihu tacovihu = new Asevihu(leveys * 2.0, korkeus * 2.0);
797        tacovihu.Position = paikka;
798        tacovihu.Image = LoadImage("mexivotacoduude");
799        Add(tacovihu);
800        tacovihu.Tag = "A";
801
802        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
803        tasoAivot.Speed = 100;
804
805        tasoAivot.FallsOffPlatforms = true;
806        tasoAivot.TriesToJump = true;
807
808        tacovihu.Brain = tasoAivot;
809
810        //tacovihu.Weapon = new AssaultRifle(30, 10);
811        //tacovihu.Weapon.ProjectileCollision = VihuAmmusOsui;
812
813        Timer aikaLaskuri = new Timer();
814        aikaLaskuri.Interval = 5.2;
815        aikaLaskuri.Timeout += delegate
816        {
817            Grenade kranu = new Grenade(7.2);
818            kranu.Image = LoadImage("tacobom");
819            tacovihu.Throw(kranu, Angle.FromDegrees(300), 1000);
820
821        };
822        aikaLaskuri.Start();
823
824        tacovihu.Destroyed += aikaLaskuri.Stop;
825    }
826    void Tormaavaalit(PhysicsObject hahmo, PhysicsObject vaalit)
827    {
828        MessageWindow ikkuna = new MessageWindow("voitit pelin ja donald trump on nyt american presidentti joten hävisit pelin!");
829        Add(ikkuna);
830
831        ikkuna.Closed += (w) => { 
832            pelaaja1.Destroy();
833            pelaaja2.Destroy();
834        };
835
836        //MessageDisplay.Add("voitit pelin ja donald trump on nyt american presidentti joten hävisit pelin!");
837    }
838        void Tormaadollar(PhysicsObject hahmo, PhysicsObject dollar)
839    {
840        maaliAani.Play();
841        MessageDisplay.Add("Keräsit dollarin!");
842        dollar.Destroy();
843        pisteLaskuri.Value += 352645275;
844    }
845
846    void Tormaajetpack(PhysicsObject hahmo, PhysicsObject jetpack)
847    {
848        maaliAani.Play();
849        MessageDisplay.Add("Keräsit jetpack!");
850        jetpack.Destroy();
851
852        jetpacklaskuri.Value = 100;
853    }
854   
855    void fly(PlatformCharacter hahmo, double nopeus)
856    {
857        if (jetpacklaskuri.Value > 0)
858        {
859            hahmo.Push(new Vector(0, nopeus));
860            jetpacklaskuri.Value -= 0.1;
861
862            for (int i = 0; i < 5; i++)
863            {
864                PhysicsObject pallo = new PhysicsObject(5, 5);
865                pallo.Color = Color.Orange;
866                pallo.Shape = Shape.Hexagon;
867                pallo.Tag = "pallo";
868                pallo.Velocity = new Vector(0, -100);
869                pallo.FadeColorTo(Color.Transparent, 2);
870                pallo.IgnoresCollisionResponse = true;
871                pallo.LifetimeLeft = TimeSpan.FromSeconds(2);
872                pallo.Position = pelaaja1.Position;
873                pallo.X += RandomGen.NextDouble(-10, 10);
874               
875               
876               
877                Add(pallo);
878               
879            }
880
881            if (savu == null)
882            {
883                savu = new Smoke(savuHiukkasenKuva, 10);
884
885                Timer savusiirrin = new Timer();
886                savusiirrin.Interval = 0.1;
887                savusiirrin.Timeout += delegate {
888                    if (savu == null)
889                    {
890                        savusiirrin.Stop();
891                        return;
892                    }
893                    savu.Position = pelaaja1.Position;
894                };
895                savusiirrin.Start();
896
897                savu.Position = pelaaja1.Position;
898                savu.OuterParticleImage = ulommanSavuHiukkasenKuva;
899                Wind = new Vector(0, -20);//voit säätää savupilven suuntaa
900                Add(savu);
901            }
902      }
903    }
904
905    void LopetaSavuttaminen(Pelihahmo pelaaja1)
906    {
907        if (savu != null)
908            savu.Destroy();
909        savu = null;
910    }
911
912
913    void wife(Vector paikka, double leveys, double korkeus)
914    {
915        pelaaja2 = new Pelihahmo(leveys * 0.8, korkeus * 3.0);
916        pelaaja2.Position = paikka;
917        pelaaja2.Bottom = paikka.Y + RUUDUN_KOKO / 2;
918        pelaaja2.Image = wifekuva;
919        Add(pelaaja2);
920        pelaaja2.Tag = "Q";
921
922
923
924        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
925        tasoAivot.Speed = 100;
926
927        tasoAivot.FallsOffPlatforms = true;
928        tasoAivot.TriesToJump = true;
929
930        //pelaaja2.Brain = tasoAivot;
931
932        AddCollisionHandler(pelaaja2, "pallo", (PhysicsObject a, PhysicsObject b) => { pelaaja2.ElamaLaskuri.Value -= 0.01; });
933
934    }
935
936
937
938}
Note: See TracBrowser for help on using the repository browser.