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

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