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

Revision 9413, 27.0 KB checked in by nupeohje, 2 years ago (diff)
RevLine 
[9249]1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
[9260]9class Pelihahmo : PlatformCharacter
10{
[9398]11    public double nopeus = 300;
12    public double hyppyNopeus = 750;
13
14
[9405]15    private DoubleMeter elamaLaskuri = new DoubleMeter(10, 0, 10);
16    public DoubleMeter ElamaLaskuri { get { return elamaLaskuri; } }
[9260]17
18    public Pelihahmo(double leveys, double korkeus)
19        : base(leveys, korkeus)
20    {
21        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
22    }
23
24}
25
[9345]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{
[9398]42    private IntMeter elamaLaskuri = new IntMeter(1000000000, 0, 1000000000);
[9345]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
[9409]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    }
[9345]67
[9409]68    public bool AloitaAjastin()
69    {
70        return true;
71    }
72}
73    class Asevihu : PlatformCharacter
[9283]74{
[9405]75    private DoubleMeter elamaLaskuri = new DoubleMeter(3, 0, 3);
76    public DoubleMeter ElamaLaskuri { get { return elamaLaskuri; } }
[9283]77    public Timer Ajastin;
78    public Asevihu(double leveys, double korkeus)
79        : base(leveys, korkeus)
80    {
81        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
82    }
[9260]83
[9283]84    public bool AloitaAjastin()
85    {
86        return true;
87    }
[9345]88}
[9283]89
[9311]90
91
92
[9345]93class Bombi : PlatformCharacter
94{
95    private IntMeter elamaLaskuri = new IntMeter(3, 0, 3);
96    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
[9311]97
[9345]98    public Bombi(double leveys, double korkeus)
99        : base(leveys, korkeus)
100    {
101        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
102    }
[9311]103
[9345]104}
[9311]105
[9343]106
[9345]107
108
[9311]109class Talo : PlatformCharacter
110{
111    private IntMeter elamaLaskuri = new IntMeter(10, 0, 10);
112    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
[9283]113
[9311]114    public Talo(double leveys, double korkeus)
115        : base(leveys, korkeus)
116    {
117        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
118    }
[9283]119
[9311]120}
[9283]121
[9311]122
[9345]123
[9249]124public class Trumpsimulator : PhysicsGame
125{
[9398]126   
[9249]127    const int RUUDUN_KOKO = 40;
[9343]128    const double flynopeus = 3000;
[9398]129    IntMeter pommilaskuri = new IntMeter(0, 0, 10000);
[9249]130
[9283]131    Image meksikolainen = LoadImage("meksikolainen");
132    Pelihahmo pelaaja1;
[9398]133    Pelihahmo pelaaja2;
[9259]134
[9343]135    DoubleMeter jetpacklaskuri;
[9409]136    DoubleMeter Ammolaskuri;
[9413]137    int kenttaNumero = 1;
[9302]138    Image bombiKuva = LoadImage("Bombi");
[9257]139    Image pelaajanKuva = LoadImage("trumphahmo");
140    Image tahtiKuva = LoadImage("one dollar");
[9343]141    Image wifekuva = LoadImage("untitled");
[9409]142    Image hilariclinton = LoadImage("hilari clinton");
[9249]143    SoundEffect maaliAani = LoadSoundEffect("maali");
[9313]144    Image olio6Kuva = LoadImage("tumbleweed");
[9345]145
[9405]146    private Image ulommanSavuHiukkasenKuva = LoadImage("white");
147
148    private Image savuHiukkasenKuva = LoadImage("smoke");
149
150    Smoke savu;
151
[9398]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
[9249]169    public override void Begin()
170    {
[9398]171        ClearAll();
[9249]172        Gravity = new Vector(0, -1000);
[9317]173
[9343]174        jetpacklaskuri = new DoubleMeter(0, 0, 100);
[9409]175        Ammolaskuri = new DoubleMeter(0, 0, 100);
[9249]176        LuoKentta();
[9409]177        ammopalkki();
[9249]178        LisaaNappaimet();
[9398]179        LuoPistelaskuri();
[9249]180
181        Camera.Follow(pelaaja1);
182        Camera.ZoomFactor = 1.2;
183        Camera.StayInLevel = true;
184    }
[9317]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);
[9343]196        rajahdys.MaxScale = 100;
[9317]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    }
[9301]207    void tomas(Vector paikka, double leveys, double korkeus)
208    {
[9313]209        PlatformCharacter y = new PlatformCharacter(leveys * 0.8, korkeus * 1.0);
[9301]210        y.Position = paikka;
[9313]211
[9343]212
213
214
[9301]215        Add(y);
216        y.Tag = "y";
[9313]217        y.Image = LoadImage("tumbleweed");
[9301]218        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
[9313]219        tasoAivot.Speed = 200;
[9299]220
[9301]221        tasoAivot.FallsOffPlatforms = true;
222        tasoAivot.TriesToJump = true;
223
224        y.Brain = tasoAivot;
225
226    }
[9343]227
[9301]228    void bombi(Vector paikka, double leveys, double korkeus)
229    {
[9405]230        Asevihu p = new Asevihu(leveys * 2.0, korkeus * 2.0);
[9301]231        p.Position = paikka;
232        p.Image = bombiKuva;
233        Add(p);
234        p.Tag = "p";
235
236
[9343]237
[9301]238        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
239        tasoAivot.Speed = 100;
240
241        tasoAivot.FallsOffPlatforms = true;
242        tasoAivot.TriesToJump = true;
243
244        p.Brain = tasoAivot;
245
[9405]246        AddCollisionHandler(p, "pallo", (PhysicsObject a, PhysicsObject b)=> { p.ElamaLaskuri.Value -= 0.01; });
[9301]247    }
[9405]248
[9301]249    void paasiMaalin(PhysicsObject pelaaja, PhysicsObject maali)
250    {
251        kenttaNumero++;
252
253        ClearAll();
254        Begin();
255
256
257    }
[9266]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);
[9299]264    }
265
266    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
[9283]267    {
268        ammus.Destroy();
[9299]269        if (kohde.Tag.Equals("A"))
[9283]270        {
271            (kohde as Asevihu).ElamaLaskuri.Value--;
272        }
[9343]273
[9345]274        if (kohde is Caktus)
275        {
276            (kohde as Caktus).ElamaLaskuri.Value--;
277        }
278
[9343]279        if (kohde is Talo)
280        {
281            (kohde as Talo).ElamaLaskuri.Value--;
282        }
[9409]283
284        if (kohde is Hilariclintons)
285        {
286            (kohde as Hilariclintons).ElamaLaskuri.Value--;
287        }
[9266]288    }
[9283]289
290    void AmmuAseella(PlatformCharacter ampuja)
291    {
[9409]292   
[9283]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    }
[9398]305    void avaaKKauppa()
306    {
307        MultiSelectWindow alkuValikko = new MultiSelectWindow("shop", "jetpack(10$)", "ammo(5$)", "atomi bommi(30$)");
308        Add(alkuValikko);
[9311]309
[9398]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    }
[9311]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
[9343]357    void Tormaataloon(PhysicsObject tormaa, PhysicsObject kohde)
[9311]358    {
359        (kohde as Talo).ElamaLaskuri.AddValue(-1);
360    }
[9249]361    void LuoKentta()
362    {
[9344]363
[9266]364        TileMap kentta = TileMap.FromLevelAsset("kentta" + kenttaNumero);
[9249]365        kentta.SetTileMethod('#', LisaaTaso);
[9257]366        kentta.SetTileMethod('*', Lisaadollar);
[9249]367        kentta.SetTileMethod('N', LisaaPelaaja);
[9266]368        kentta.SetTileMethod('K', lisaaMaali);
[9301]369        kentta.SetTileMethod('y', tomas);
[9283]370        kentta.SetTileMethod('A', Lisaaasevihu);
[9343]371        kentta.SetTileMethod('Q', wife);
[9299]372        kentta.SetTileMethod('H', Lisaahiekka);
373        kentta.SetTileMethod('R', LisaaRuoho);
374        kentta.SetTileMethod('Z', LisaaTalo);
[9409]375        kentta.SetTileMethod('h', hilariclintons);
[9299]376        kentta.SetTileMethod('M', LisaaMuuri);
377        kentta.SetTileMethod('G', LisaaTacoVihu);
[9345]378        kentta.SetTileMethod('W', Lisaaweed);
[9301]379        kentta.SetTileMethod('p', bombi);
[9343]380        kentta.SetTileMethod('C', Lisaacaktus);
[9345]381        kentta.SetTileMethod('I', Lisaailuminadi);
[9302]382        kentta.SetTileMethod('J', lisaajetpack);
[9345]383        kentta.SetTileMethod('X', Lisaamd);
384        kentta.SetTileMethod('t', Lisaatupakka);
[9302]385        kentta.Optimize('H');
[9317]386        kentta.Optimize('R');
387        kentta.Optimize('#');
[9344]388
[9249]389        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
[9299]390
391
[9249]392        Level.CreateBorders();
[9259]393        Level.Background.CreateGradient(Color.White, Color.SeaGreen);
[9267]394        Level.Background.Image = LoadImage("taustakuvanewyork");
[9249]395    }
[9409]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";
[9249]403
[9409]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
[9302]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";
[9405]422
[9302]423        Add(jetpack);
424
425    }
[9409]426   
[9302]427
[9409]428    void ElamaLoppui()
429    {
430        MessageDisplay.Add("Elämät loppuivat, voi voi.");
431    }
[9313]432    void HeitaKranaatti(PlatformCharacter pelaaja)
433    {
434        if (pelaaja.IsDestroyed) return;
[9302]435
[9313]436        Grenade kranu = new Grenade(3.0);
[9398]437        pelaaja.Throw(kranu, Angle.FromDegrees(50), 10000);
[9313]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    }
[9344]447    void ydinpommi(IPhysicsObject rajahdyksenKohde, Vector v)
448    {
449        rajahdyksenKohde.Destroy();
[9405]450
[9344]451    }
[9409]452   
[9344]453    void Heitaydinpommi(PlatformCharacter pelaaja)
454    {
[9354]455        if (pelaaja.IsDestroyed)
[9368]456            return;
457
[9344]458        if (pommilaskuri.Value > 0)
459        {
460            pommilaskuri.Value -= 1;
461
462            Grenade kranu = new Grenade(180.0);
[9405]463            kranu.Explosion.MaxRadius = 4000;
[9354]464            kranu.Image = LoadImage("iluminadi");
[9344]465            pelaaja1.Throw(kranu, Angle.FromDegrees(50), 1000);
466
467            kranu.Explosion.AddShockwaveHandler("A", KranaattiOsui);
468
469            kranu.Explosion.AddShockwaveHandler("p", KranaattiOsui);
470        }
471       
[9405]472
[9344]473    }
[9405]474
[9299]475    void LisaaTaso(Vector paikka, double leveys, double korkeus)
[9266]476    {
[9249]477        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
478        taso.Position = paikka;
479        taso.Color = Color.Green;
480        Add(taso);
[9317]481        taso.TextureWrapSize = new Vector(leveys / RUUDUN_KOKO, korkeus / RUUDUN_KOKO);
[9249]482    }
483
[9299]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
[9345]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
[9299]530    void Lisaahiekka(Vector paikka, double leveys, double korkeus)
531    {
532        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
533        taso.Position = paikka;
[9317]534
535        Add(taso);
536        taso.Color = Color.Green;
[9302]537        taso.Image = LoadImage("hiekka");
[9343]538        taso.TextureWrapSize = new Vector(leveys / RUUDUN_KOKO, korkeus / RUUDUN_KOKO);
[9299]539        Add(taso);
540    }
541
542    void LisaaTalo(Vector paikka, double leveys, double korkeus)
543    {
[9311]544        Talo taso = new Talo(leveys, korkeus);
[9299]545        taso.Position = paikka;
546        taso.Color = Color.Green;
[9311]547        taso.Tag = "talo";
[9299]548        Add(taso);
[9343]549        taso.MakeStatic();
[9299]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");
[9317]564        taso.TextureWrapSize = new Vector(leveys / RUUDUN_KOKO, korkeus / RUUDUN_KOKO);
[9299]565    }
566
567
[9345]568
569    void Lisaamd(Vector paikka, double leveys, double korkeus)
[9311]570    {
[9405]571        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys * 2, korkeus * 3);
[9311]572        taso.Position = paikka;
[9343]573        taso.Bottom = paikka.Y - RUUDUN_KOKO / 2;
[9311]574
575        Add(taso);
576        taso.Color = Color.Green;
[9345]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    {
[9405]584        Caktus taso = new Caktus(leveys * 2, korkeus * 3);
585
[9345]586        taso.MakeStatic();
587        taso.Position = paikka;
588        taso.Y = paikka.Y + RUUDUN_KOKO / 2;
589
590        Add(taso);
591        taso.Color = Color.Green;
[9311]592        taso.Image = LoadImage("caktus");
593    }
594
595
596
597
[9398]598
[9257]599    void Lisaadollar(Vector paikka, double leveys, double korkeus)
[9249]600    {
[9257]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);
[9249]607    }
[9409]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    }
[9398]617    void pelaajaKuoli()
618    {
619        MultiSelectWindow alkuValikko = new MultiSelectWindow("havisit pelin HAHAHAHAH",
620"Aloita peli", "Shop", "Lopeta");
621        Add(alkuValikko);
[9249]622
[9398]623        alkuValikko.AddItemHandler(0, Begin);
[9409]624        alkuValikko.AddItemHandler(1, avaaKKauppa);
[9398]625        alkuValikko.AddItemHandler(2, Exit);
626    }
[9249]627    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
628    {
[9343]629        pelaaja1 = new Pelihahmo(leveys, korkeus * 2.0);
[9249]630        pelaaja1.Position = paikka;
[9313]631        pelaaja1.Mass = 2.0;
[9249]632        pelaaja1.Image = pelaajanKuva;
[9283]633        pelaaja1.Tag = "pelaaja";
[9398]634        pelaaja1.Destroyed += pelaajaKuoli;
[9257]635        AddCollisionHandler(pelaaja1, "dollar", Tormaadollar);
[9343]636        AddCollisionHandler(pelaaja1, "jetpack", Tormaajetpack);
[9249]637        Add(pelaaja1);
[9343]638        AddCollisionHandler(pelaaja1, "p", CollisionHandler.ExplodeBoth(5110, true));
[9301]639        AddCollisionHandler(pelaaja1, "maali", paasiMaalin);
[9317]640        AddCollisionHandler(pelaaja1, "y", CollisionHandler.ExplodeBoth(9999999, true));
[9409]641        AddCollisionHandler(pelaaja1, "m", CollisionHandler.ExplodeBoth(999, true));
[9299]642        pelaaja1.Weapon = new AssaultRifle(30, 10);
643        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
[9344]644        pelaaja1.Weapon.InfiniteAmmo = false;
[9409]645        pelaaja1.Weapon.Ammo.Value = 100;
646        pelaaja1.Weapon.Ammo.MaxValue = 100;
[9299]647        pelaaja1.Weapon.Power.DefaultValue = 400;
648        pelaaja1.Weapon.AmmoIgnoresGravity = true;
649        pelaaja1.Weapon.AmmoIgnoresExplosions = true;
650        pelaaja1.Weapon.CanHitOwner = false;
[9344]651        pelaaja1.Weapon.Image = LoadImage("machine gun");
[9299]652        pelaaja1.Weapon.Y = 5;
[9405]653        pelaaja1.Weapon.FireRate = 12;
[9343]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);
[9405]666        Add(elamaPalkki);
[9249]667    }
668
[9409]669
[9249]670    void LisaaNappaimet()
671    {
672        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
[9398]673        Keyboard.Listen(Key.Escape, ButtonState.Pressed, avaaKKauppa, "Lopeta peli");
[9343]674        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, "Lopeta peli", pelaaja1);
[9398]675        Keyboard.Listen(Key.X, ButtonState.Down, Camera.Zoom, "zoom", 1.1);
676        Keyboard.Listen(Key.C, ButtonState.Down, Camera.Zoom, "zoom", 0.1);
[9313]677        Keyboard.Listen(Key.E, ButtonState.Pressed, HeitaKranaatti, "heitä kranaatti", pelaaja1);
[9398]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);
[9299]682        Keyboard.Listen(Key.Space, ButtonState.Down, fly, "pelaaja lentää", pelaaja1, flynopeus);
[9405]683        Keyboard.Listen(Key.Space, ButtonState.Released, LopetaSavuttaminen, null, pelaaja1 );
[9249]684        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
[9405]685
[9344]686        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
[9249]687
[9259]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);
[9249]691
692        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
693
[9398]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   }
[9249]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    }
[9283]719    void VihuAmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
[9249]720    {
[9283]721        ammus.Destroy();
722        if (kohde.Tag.ToString() == "pelaaja")
723        {
724            (kohde as Pelihahmo).ElamaLaskuri.Value--;
725        }
[9345]726
727        if (kohde is Wife)
728        {
729            (kohde as Wife).ElamaLaskuri.Value--;
730        }
[9257]731    }
[9317]732    void asevihuOsui(PhysicsObject ammus, PhysicsObject kohde)
733    {
734        ammus.Destroy();
735        if (kohde.Tag == "pelaaja1")
736        {
737            kohde.Destroy();
738        }
739    }
[9283]740    void Lisaaasevihu(Vector paikka, double leveys, double korkeus)
741    {
[9313]742        Asevihu asevihu = new Asevihu(leveys * 2.0, korkeus * 2.0);
[9283]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;
[9409]750       
[9283]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();
[9405]760        aikaLaskuri.Interval = 1.0;
[9311]761        aikaLaskuri.Timeout += () => VihuAmmuAseella(asevihu);
[9283]762        aikaLaskuri.Start();
[9405]763
764        AddCollisionHandler(asevihu, "pallo", (PhysicsObject a, PhysicsObject b) => { asevihu.ElamaLaskuri.Value -= 0.01; });
[9283]765    }
[9299]766
767    void LisaaTacoVihu(Vector paikka, double leveys, double korkeus)
768    {
[9313]769        Asevihu tacovihu = new Asevihu(leveys * 2.0, korkeus * 2.0);
[9299]770        tacovihu.Position = paikka;
771        tacovihu.Image = LoadImage("mexivotacoduude");
772        Add(tacovihu);
773        tacovihu.Tag = "A";
[9343]774
[9299]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();
[9313]787        aikaLaskuri.Interval = 5.2;
[9299]788        aikaLaskuri.Timeout += delegate
789        {
[9343]790            Grenade kranu = new Grenade(7.2);
[9299]791            kranu.Image = LoadImage("tacobom");
[9313]792            tacovihu.Throw(kranu, Angle.FromDegrees(300), 1000);
[9299]793
794        };
795        aikaLaskuri.Start();
[9311]796
797        tacovihu.Destroyed += aikaLaskuri.Stop;
[9299]798    }
799
[9257]800    void Tormaadollar(PhysicsObject hahmo, PhysicsObject dollar)
801    {
[9249]802        maaliAani.Play();
[9257]803        MessageDisplay.Add("Keräsit dollarin!");
804        dollar.Destroy();
[9398]805        pisteLaskuri.Value += 352645275;
[9249]806    }
[9343]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    }
[9409]816   
[9259]817    void fly(PlatformCharacter hahmo, double nopeus)
818    {
[9343]819        if (jetpacklaskuri.Value > 0)
820        {
821            hahmo.Push(new Vector(0, nopeus));
822            jetpacklaskuri.Value -= 0.1;
[9259]823
[9405]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      }
[9259]865    }
[9405]866
867    void LopetaSavuttaminen(Pelihahmo pelaaja1)
868    {
869        if (savu != null)
870            savu.Destroy();
871        savu = null;
872    }
873
874
[9343]875    void wife(Vector paikka, double leveys, double korkeus)
876    {
[9398]877        pelaaja2 = new Pelihahmo(leveys * 0.8, korkeus * 3.0);
878        pelaaja2.Position = paikka;
[9413]879        pelaaja2.Bottom = paikka.Y + RUUDUN_KOKO / 2;
[9398]880        pelaaja2.Image = wifekuva;
881        Add(pelaaja2);
882        pelaaja2.Tag = "Q";
[9343]883
884
885
886        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
887        tasoAivot.Speed = 100;
888
889        tasoAivot.FallsOffPlatforms = true;
890        tasoAivot.TriesToJump = true;
891
[9398]892        //pelaaja2.Brain = tasoAivot;
[9343]893
[9405]894        AddCollisionHandler(pelaaja2, "pallo", (PhysicsObject a, PhysicsObject b) => { pelaaja2.ElamaLaskuri.Value -= 0.01; });
895
[9343]896    }
897
898
[9405]899
[9249]900}
Note: See TracBrowser for help on using the repository browser.