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

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