source: 2012/09-22/SanteriH/Kynari/Kynari/Kynari/Kynari.cs @ 3916

Revision 3916, 25.1 KB checked in by anlakane, 8 years ago (diff)
Line 
1using System;
2
3using Jypeli;
4using Jypeli.Widgets;
5using Jypeli.Assets;
6using Jypeli.Controls;
7
8public class Pelaaja : PlatformCharacter
9{
10    public bool voikoPoimiaAseen { get; set; }
11    public Pelaaja(double width, double height, Shape shape)
12        : base(width, height, shape)
13    {
14        voikoPoimiaAseen = true;
15    }
16}
17
18// Yksinkertainen tasohyppely.
19public class Kynari : PhysicsGame
20{
21    #region Muuttujat
22
23    const double liikeVoima = 400;
24    const double hyppyVoima = 800;
25
26    Pelaaja pelaaja1;
27    Pelaaja pelaaja2;
28    DoubleMeter HitPoint1 = new DoubleMeter(100);
29    DoubleMeter HitPoint2 = new DoubleMeter(100);
30
31    Image kranaatinheittimenkuva = LoadImage("grenade");
32    Image magnumkuva = LoadImage("magnum");
33    Image norsu = LoadImage("norsu");
34    Image haulikonkuva = LoadImage("shotgun");
35    Image pistoolinkuva = LoadImage("pistol");
36    Image kivaarinkuva = LoadImage("assaultrifle");
37
38    SoundEffect hyppyAani = LoadSoundEffect("hyppays");
39
40    ProgressBar hpNaytto;
41    ProgressBar hpNaytto2;
42
43    Meter<int> pelaajan1Pisteet;
44    Meter<int> pelaajan2Pisteet;
45
46    #endregion
47
48    #region Alustukset
49    public override void Begin()
50    {
51
52        DrawPerimeter = false; // ei haluta piirtää kentän reunoja
53
54        // Asetetaan painovoima
55
56        // Zoomataan lähemmäksi
57        Camera.ZoomFactor = 0.73;
58        LuoAlkuValikko();
59        //aloitaUusiPeli();
60    }
61
62    void aloitaUusiPeli()
63    {
64        MessageDisplay.Clear();
65        // ladataan kenttä
66        seuraavaKentta();
67        LisaaLaskurit();
68        naytaTiedot();
69
70    }
71    #endregion
72
73
74    #region KentanLataus
75    void seuraavaKentta()
76    {
77        ClearAll();
78        luoKentta();
79        lisaaNappaimet();
80        Camera.Position = new Vector(0, 0);
81    }
82
83    Level luoKentta()
84    {
85        Level.Width = 4000;
86        Level.Height = 1000;
87        Level.CreateBorders();
88        Level.Background.CreateGradient(Color.White, Color.Gray);
89        Gravity = new Vector(0, -1500);
90        luoTasot();
91        lisaaPelaajat();
92        lisaaAsePelaajalle();
93        lisaaKerattavaAse();
94        lisaaHPNaytot();
95
96        return Level;
97    }
98
99    void LuoAlkuValikko()
100    {
101        ClearAll();
102        MultiSelectWindow alkuValikko = new MultiSelectWindow("Kynäri",
103        "Aloita peli", "Lopeta");
104        Add(alkuValikko);
105        alkuValikko.AddItemHandler(0, aloitaUusiPeli);
106        alkuValikko.AddItemHandler(1, Exit);
107        alkuValikko.DefaultCancel = 1;
108        alkuValikko.Color = Color.Gray;
109        Level.BackgroundColor = Color.Gray;
110    }
111
112    void luoTasot()
113    {
114        PhysicsObject alusta = new PhysicsObject(Level.Width, 300);
115        alusta.Color = Color.Gray;
116        alusta.X = 0;
117        alusta.Y = Level.Bottom - alusta.Height / 2;
118        Add(alusta);
119
120        lisaaPieniTaso(-200, -350);
121        lisaaPieniTaso(0, -400);
122        lisaaPieniTaso(100, -300);
123        lisaaPieniTaso(400, -350);
124        lisaaPieniTaso(450, -200);
125        lisaaPieniTaso(-500, -400);
126        lisaaPieniTaso(-550, -200);
127        lisaaPieniTaso(-400, -300);
128        lisaaPieniTaso(-150, -150);
129        lisaaPieniTaso(-870, -350);
130        lisaaPieniTaso(-700, -400);
131
132        lisaaPieniTaso(600, -300);
133        lisaaPieniTaso(850, -300);
134        lisaaPieniTaso(750, -400);
135        lisaaPieniTaso(200, -200);
136        lisaaPieniTaso(-200, -150);
137
138        lisaaPystyTaso(600, -450);
139        lisaaPystyTaso(-600, -500);
140        lisaaPystyTaso(0, -450);
141
142        lisaaReuna(-900, 0);
143        lisaaReuna(900, 0);
144    }
145
146    void lisaaHPNaytot()
147    {
148        // luodaan elämänäyttö
149        hpNaytto = new ProgressBar(30, 250);
150        hpNaytto.Angle = Angle.FromDegrees(90);
151        hpNaytto.BarColor = Color.LightGreen;
152        hpNaytto.Color = Color.Red;
153        hpNaytto.BindTo(HitPoint1);
154        hpNaytto.Position = new Vector(Screen.RightSafe - 1000, Screen.TopSafe - 170);
155        Add(hpNaytto);
156
157        hpNaytto2 = new ProgressBar(30, 250);
158        hpNaytto2.Angle = Angle.FromDegrees(90);
159        hpNaytto2.BarColor = Color.LightGreen;
160        hpNaytto2.Color = Color.Red;
161        hpNaytto2.BindTo(HitPoint2);
162        hpNaytto2.Position = new Vector(Screen.RightSafe - 300, Screen.TopSafe - 170);
163        Add(hpNaytto2);
164    }
165
166    void LisaaLaskurit()
167    {
168        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 175.0);
169        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 175.0);
170        pelaajan1Pisteet.UpperLimit += (laskuri1_UpperLimit);
171        pelaajan2Pisteet.UpperLimit += (laskuri2_UpperLimit);
172    }
173
174    void NollaaLaskurit()
175    {
176        pelaajan1Pisteet.Reset();
177        pelaajan2Pisteet.Reset();
178    }
179
180    IntMeter LuoPisteLaskuri(double x, double y)
181    {
182        IntMeter laskuri = new IntMeter(0);
183        Label naytto = new Label();
184        naytto.BindTo(laskuri);
185        naytto.X = x;
186        naytto.Y = y;
187        Add(naytto);
188        return laskuri;
189    }
190
191    void laskuri1_UpperLimit()
192    {
193        MessageDisplay.Clear();
194        MessageDisplay.Add("Pelaaja 1 voittaa!");
195        MessageDisplay.X = -100;
196
197    }
198
199    void laskuri2_UpperLimit()
200    {
201        MessageDisplay.Clear();
202        MessageDisplay.Add("Pelaaja 2 voittaa!");
203        MessageDisplay.X = -100;
204
205    }
206
207    void lisaaPieniTaso(double x, double y)
208    {
209        PhysicsObject taso = PhysicsObject.CreateStaticObject(100, 30);
210        taso.Color = Color.Gray;
211        taso.X = x;
212        taso.Y = y;
213        Add(taso);
214    }
215
216    void lisaaReuna(double x, double y)
217    {
218        PhysicsObject taso = PhysicsObject.CreateStaticObject(50, 1000);
219        taso.Color = Color.Gray;
220        taso.X = x;
221        taso.Y = y;
222        Add(taso);
223    }
224
225    void lisaaPystyTaso(double x, double y)
226    {
227        PhysicsObject taso = PhysicsObject.CreateStaticObject(30, 100);
228        taso.Color = Color.Gray;
229        taso.X = x;
230        taso.Y = y;
231        Add(taso);
232    }
233
234    void lisaaPelaajat()
235    {
236        pelaaja1 = new Pelaaja(40, 40, Shape.Circle);
237        pelaaja1.Image = norsu;
238        pelaaja1.X = -700;
239        pelaaja1.Y = Level.Bottom + 50;
240        pelaaja1.Tag = "pelaaja";
241
242        pelaaja2 = new Pelaaja(40, 40, Shape.Circle);
243        pelaaja2.Image = norsu;
244        pelaaja2.X = 700;
245        pelaaja2.Y = Level.Bottom + 50;
246        pelaaja2.Tag = "pelaaja";
247
248        HitPoint1.MaxValue = 100;
249        HitPoint1.Value = 100;
250        HitPoint1.LowerLimit += pelaaja1Kuoli;
251
252        HitPoint2.MaxValue = 100;
253        HitPoint2.Value = 100;
254        HitPoint2.LowerLimit += pelaaja2Kuoli;
255
256        Add(pelaaja1);
257        Add(pelaaja2);
258    }
259
260    void pelaaja1Kuoli()
261    {
262        /*
263        PlatformCharacter pelaaja = (PlatformCharacter)sender;
264        pelaaja.UnequipWeapon();
265        Weapon kuolinAse = pelaaja.Weapon;
266        kuolinAse.RemoveFromOwner();
267        kuolinAse.Unequip();
268        kuolinAse.Visible = true;
269        */
270        pelaaja1.Destroy();
271        MessageDisplay.Clear();
272        MessageDisplay.X = -100;
273        MessageDisplay.Add("Pelaaja 2 voitti erän!");
274        pelaajan2Pisteet.Value += 1;
275
276        if (pelaajan2Pisteet.Value == pelaajan2Pisteet.MaxValue)
277        {
278            return;
279        }
280
281        else
282        {
283            Timer.SingleShot(3.0, eraloppui);
284            /*
285            Timer ajastin2 = new Timer();
286            ajastin2.Interval = 3;
287            ajastin2.Trigger += new Timer.TriggerHandler(eraloppui);
288            ajastin2.Start();
289            AddTimer(ajastin2);
290             * */
291        }
292
293    }
294    void pelaaja2Kuoli()
295    {
296        /*
297        PlatformCharacter pelaaja = (PlatformCharacter)sender;
298        pelaaja.UnequipWeapon();
299        Weapon kuolinAse = pelaaja.Weapon;
300        kuolinAse.RemoveFromOwner();
301        kuolinAse.Unequip();
302        kuolinAse.Visible = true;
303        */
304        pelaaja2.Destroy();
305        MessageDisplay.Clear();
306        MessageDisplay.X = -100;
307        MessageDisplay.Add("Pelaaja 1 voitti erän!");
308        pelaajan1Pisteet.Value += 1;
309
310        if (pelaajan2Pisteet.Value == pelaajan2Pisteet.MaxValue)
311        {
312            return;
313        }
314
315        else
316        {
317            Timer.SingleShot(3.0, eraloppui);
318            /*
319            Timer ajastin2 = new Timer();
320            ajastin2.Interval = 3;
321            ajastin2.Trigger += new Timer.TriggerHandler(eraloppui);
322            ajastin2.Start();
323            AddTimer(ajastin2);
324            */
325        }
326    }
327
328    void eraloppui()
329    {
330        aloitaUusiPeli();
331    }
332
333    void keraaAse(PhysicsObject ase, Pelaaja pelaaja)
334    {
335        Weapon ase2 = null; //
336
337        if (!pelaaja.voikoPoimiaAseen) return;
338
339        ase.Destroy();
340
341        if (pelaaja == pelaaja1)
342        {
343            //PudotaAse(pelaaja1);
344            VaihdaAse(pelaaja1); // tiputtaa vanhan aseen maahan
345            ase2 = LuoAse(ase, pelaaja1); // ase2 on uusi ase
346
347        }
348
349        if (pelaaja == pelaaja2)
350        {
351            //PudotaAse(pelaaja2);
352
353            VaihdaAse(pelaaja2); // tiputtaa vanhan aseen maahan
354            ase2 = LuoAse(ase, pelaaja2);
355        }
356
357        naytaTiedot();
358        //Timer ajastin = new Timer();
359        //ajastin.Interval = 1;
360        //ajastin.Tag = collision.Other;
361        //ajastin.Trigger += new Timer.TriggerHandler(salliAseenvaihto);
362        //ajastin.Start();
363        //AddTimer(ajastin);
364
365        // Pelaaja törmäsi aseeseen
366
367
368
369        /*  PlatformCharacter pelaaja = (PlatformCharacter)collision.Other;
370          if (ase.Owner != null)
371          {
372              return;
373          }
374          pelaaja.UnequipWeapon();
375          Weapon vanhaAse = pelaaja.Weapon;
376          vanhaAse.RemoveFromOwner();
377          vanhaAse.X = pelaaja.X + vanhaAse.Width;
378          vanhaAse.Y = pelaaja.Y;
379          vanhaAse.Visible = true;
380          vanhaAse.Hit(new Vector(100, 20));
381          pelaaja.Weapon = ase;
382          pelaaja.EquipWeapon();
383          pelaaja.Weapon.Texture = ase.Texture;
384          */
385
386    }
387
388    /*private void PudotaAse(PlatformCharacter pelaaja)
389    {
390        Weapon tiputettu = new Weapon(pelaaja.Weapon.Width, pelaaja.Weapon.Height);
391        tiputettu.Position = pelaaja.Position;
392       
393        Add(tiputettu);
394
395    }*/
396
397    private void VaihdaAse(Pelaaja pelaaja)
398    {
399        pelaaja.voikoPoimiaAseen = false;
400        Timer.SingleShot(1.0, delegate { pelaaja.voikoPoimiaAseen = true; });
401        String aseenTagi = pelaaja.Weapon.Tag.ToString();
402        Vector koko = pelaaja.Weapon.Size;
403        Vector paikka = pelaaja.Position;
404
405        PhysicsObject tiputettuAse = new PhysicsObject(koko.X, koko.Y);
406        tiputettuAse.Position = paikka;
407        tiputettuAse.Tag = aseenTagi;
408        tiputettuAse.CollisionIgnoreGroup = 1;
409        pelaaja.CollisionIgnoreGroup = 1;
410        Timer.SingleShot(1.0, delegate {
411            tiputettuAse.CollisionIgnoreGroup = 0;
412            pelaaja.CollisionIgnoreGroup = 0;
413        });
414        //tiputettuAse.IgnoresCollisionWith(pelaaja2);
415        Add(tiputettuAse);
416        tiputettuAse.Image = pelaaja.Weapon.Image;
417        //tiputettuAse.Hit(new Vector(0, 100));
418        AddCollisionHandler<PhysicsObject, Pelaaja>(tiputettuAse, "pelaaja", keraaAse);
419
420        //naytaTiedot();
421        //pelaaja.UnequipWeapon();
422        //Weapon vanhaAse = pelaaja.Weapon;
423        //vanhaAse.RemoveFromOwner();
424        //vanhaAse.X = pelaaja.X + vanhaAse.Width;
425        //vanhaAse.Y = pelaaja.Y;
426
427        //vanhaAse.Visible = true;
428        //vanhaAse.Hit(new Vector(100, 20));
429        //pelaaja.Weapon = ase;
430
431        // pelaaja..EquipWeapon();
432        // pelaaja.Weapon.Texture = ase.Texture;
433
434
435       
436    }
437
438    void KranaattiOsui(PhysicsObject ammus, PhysicsObject kohde)
439    {
440        if (kohde.Tag.ToString() == "pelaaja")
441        {
442            ammus.Destroy();
443            if (kohde == pelaaja1) { HitPoint1.Value -= 50; }
444            if (kohde == pelaaja2) { HitPoint2.Value -= 50; }
445        }
446    }
447
448
449    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
450    {
451        ammus.Destroy();
452        if (kohde.Tag.ToString() == "pelaaja")
453        {
454            if (kohde == pelaaja1) { HitPoint1.Value -= 15; }
455            if (kohde == pelaaja2) { HitPoint2.Value -= 15; }
456        }
457    }
458    void KivaariOsui(PhysicsObject ammus, PhysicsObject kohde)
459    {
460        ammus.Destroy();
461        if (kohde.Tag.ToString() == "pelaaja")
462        {
463            if (kohde == pelaaja1) { HitPoint1.Value -= 10; }
464            if (kohde == pelaaja2) { HitPoint2.Value -= 10; }
465        }
466    }
467    void MagnumOsui(PhysicsObject ammus, PhysicsObject kohde)
468    {
469        ammus.Destroy();
470        if (kohde.Tag.ToString() == "pelaaja")
471        {
472            if (kohde == pelaaja1) { HitPoint1.Value -= 25; }
473            if (kohde == pelaaja2) { HitPoint2.Value -= 25; }
474        }
475    }
476    void HaulikkoOsui(PhysicsObject ammus, PhysicsObject kohde)
477    {
478        ammus.Destroy();
479        if (kohde.Tag.ToString() == "pelaaja")
480        {
481            if (kohde == pelaaja1) { HitPoint1.Value -= 40; }
482            if (kohde == pelaaja2) { HitPoint2.Value -= 40; }
483        }
484    }
485
486    private Weapon LuoAse(PhysicsObject ase, Pelaaja pelaaja)
487    {
488        Weapon ase2 = null;
489
490        if (ase.Tag.ToString() == "Kivääri")
491        {
492            ase2 = new AssaultRifle(39, 13);
493            ase2.FireRate = 5;
494            ase2.ProjectileCollision = KivaariOsui;
495            //kivaari.MomentOfInertia = double.PositiveInfinity;
496            //kivaari.Mass = 0.1;
497            ase2.Tag = "Kivääri";
498            ase2.Image = kivaarinkuva;
499            //pelaaja.Add(ase2);
500            pelaaja.Weapon = ase2;
501        }
502        if (ase.Tag.ToString() == "Magnum")
503        {
504            ase2 = new AssaultRifle(17, 12);
505            ase2.FireRate = 1;
506            ase2.ProjectileCollision = MagnumOsui;
507            //magnum.MomentOfInertia = double.PositiveInfinity;
508            //magnum.Mass = 0.1;
509            ase2.Tag = "Magnum";
510            ase2.Image = magnumkuva;
511            ase2.X = 10;
512            ase2.Y = 10;
513            //magnum.Shape = Shapes.CreateFromTexture(magnumtexture, new Vector(magnumtexture.Width, magnumtexture.Height), 100);
514            //magnum.Size = new Vector(magnumtexture.Width, magnumtexture.Height);
515            //magnum.UpdateShapeFromSize();
516            //magnum.AmmoType.Damage = new Damage(20);
517            // pelaaja.Add(ase2);
518            pelaaja.Weapon = ase2;
519        }
520
521        if (ase.Tag.ToString() == "Haulikko")
522        {
523            ase2 = new AssaultRifle(39, 13);
524            ase2.FireRate = 0.75;
525            ase2.ProjectileCollision = HaulikkoOsui;
526            //haulikko.MomentOfInertia = double.PositiveInfinity;
527            //haulikko.Mass = 0.1;
528            ase2.Tag = "Haulikko";
529            //haulikko.AmmoType.Damage = new Damage(35);
530            //haulikko.AmmoType.ClusterArc = 3;
531            ase2.Image = haulikonkuva;
532            //pelaaja.Add(ase2);
533            pelaaja.Weapon = ase2;
534        }
535
536        if (ase.Tag.ToString() == "Kranaatinheitin")
537        {
538            ase2 = new Cannon(37, 19);
539            ase2.FireRate = 0.5;
540            ase2.ProjectileCollision = KranaattiOsui;
541            //kranaatinheitin.MomentOfInertia = double.PositiveInfinity;
542            //kranaatinheitin.Mass = 0.1;
543            //kranaatinheitin.Power = new Meter<double>(5000, 0, 5000);
544            ase2.Tag = "Kranaatinheitin";
545            ase2.Image = kranaatinheittimenkuva;
546            //kranaatinheitin.Shape = Shapes.CreateFromTexture(grenade, new Vector(grenade.Width, grenade.Height), 100);
547            //kranaatinheitin.Size = new Vector(grenade.Width, grenade.Height);
548            //kranaatinheitin.UpdateShapeFromSize();
549            //pelaaja.Add(ase2);
550            pelaaja.Weapon = ase2;
551        }
552
553        if (ase.Tag.ToString() == "Pistooli")
554        {
555            ase2 = new AssaultRifle(16, 11);
556            ase2.FireRate = 2;
557            ase2.ProjectileCollision = AmmusOsui;
558            //pelaaja1.Weapon.Mass = 0.1;
559            //pelaaja1.EquipWeapon();
560            //pelaaja1.Weapon.MomentOfInertia = double.PositiveInfinity;
561            ase2.Tag = "Pistooli";
562            //pelaaja1.Weapon.Shape = Shapes.CreateFromTexture(pistol, new Vector(pistol.Width, pistol.Height), 100);
563            //pelaaja1.Weapon.Size = new Vector(pistol.Width, pistol.Height);
564            //pelaaja1.Weapon.UpdateShapeFromSize();
565            ase2.Image = pistoolinkuva;
566            //pelaaja.Add(ase2);
567            pelaaja.Weapon = ase2;
568        }
569        return ase2;
570    }
571
572    void lisaaKerattavaAse()
573    {
574        //Täällä lisätään ase kenttään
575        /*Bullet luoti = new Bullet(1);
576        Bullet luoti2 = new Bullet(1);
577        Bullet hauli = new Bullet(1);
578
579        Grenade kranaatti = new Grenade(1);
580        kranaatti.Explosion = new Explosion(20);
581        */
582        // kranaatti.ExplodeCondition = OnkoPelaaja; TODO: räjähtää kun osuu pelaajaan!
583
584        PhysicsObject kivaari = new PhysicsObject(39, 13);
585        kivaari.X = 200;
586        kivaari.Y = -150;
587        //kivaari.FireRate = 5;
588        //kivaari.MomentOfInertia = double.PositiveInfinity;
589        //kivaari.Mass = 0.1;
590        kivaari.Tag = "Kivääri";
591        kivaari.Image = kivaarinkuva;
592        Add(kivaari);
593
594        PhysicsObject magnum = new PhysicsObject(17, 12);
595        magnum.X = 0;
596        magnum.Y = -350;
597        //magnum.FireRate = 1;
598        //magnum.MomentOfInertia = double.PositiveInfinity;
599        //magnum.Mass = 0.1;
600        magnum.Tag = "Magnum";
601        magnum.Image = magnumkuva;
602        //magnum.Shape = Shapes.CreateFromTexture(magnumtexture, new Vector(magnumtexture.Width, magnumtexture.Height), 100);
603        //magnum.Size = new Vector(magnumtexture.Width, magnumtexture.Height);
604        //magnum.UpdateShapeFromSize();
605        //magnum.AmmoType.Damage = new Damage(20);
606        Add(magnum);
607
608        PhysicsObject haulikko = new PhysicsObject(39, 13);
609        haulikko.X = -550;
610        haulikko.Y = -150;
611        //haulikko.FireRate = 0.75;
612        //haulikko.MomentOfInertia = double.PositiveInfinity;
613        //haulikko.Mass = 0.1;
614        haulikko.Tag = "Haulikko";
615        //haulikko.AmmoType.Damage = new Damage(35);
616        //haulikko.AmmoType.ClusterArc = 3;
617        haulikko.Image = haulikonkuva;
618        Add(haulikko);
619
620        PhysicsObject kranaatinheitin = new PhysicsObject(37, 19);
621        kranaatinheitin.X = -180;
622        kranaatinheitin.Y = -100;
623        // kranaatinheitin.FireRate = 0.2;
624        //kranaatinheitin.MomentOfInertia = double.PositiveInfinity;
625        //kranaatinheitin.Mass = 0.1;
626        //kranaatinheitin.Power = new Meter<double>(5000, 0, 5000);
627        kranaatinheitin.Tag = "Kranaatinheitin";
628        kranaatinheitin.Image = kranaatinheittimenkuva;
629        //kranaatinheitin.Shape = Shapes.CreateFromTexture(grenade, new Vector(grenade.Width, grenade.Height), 100);
630        //kranaatinheitin.Size = new Vector(grenade.Width, grenade.Height);
631        //kranaatinheitin.UpdateShapeFromSize();
632        Add(kranaatinheitin);
633
634        //Lisää myös törmäyksen käsittelijä aseelle, jossa kutsutaan keraaAse -aliohjelmaa
635
636        AddCollisionHandler<PhysicsObject, Pelaaja>(kivaari, "pelaaja", keraaAse);
637        AddCollisionHandler<PhysicsObject, Pelaaja>(haulikko, "pelaaja", keraaAse);
638        AddCollisionHandler<PhysicsObject, Pelaaja>(kranaatinheitin, "pelaaja", keraaAse);
639        AddCollisionHandler<PhysicsObject, Pelaaja>(magnum, "pelaaja", keraaAse);
640    }
641
642    void lisaaAsePelaajalle()
643    {
644        Bullet luoti = new Bullet(1);
645        PhysicsObject pistol1 = new PhysicsObject(16, 11);
646        pistol1.Image = pistoolinkuva;
647        pistol1.Tag = "Pistooli";
648
649        LuoAse(pistol1, pelaaja1);
650        LuoAse(pistol1, pelaaja2);
651
652        //pelaaja1.UnequipWeapon();
653        /*   pelaaja1.Weapon = new AssaultRifle(10, 10);
654           pelaaja1.Weapon.FireRate = 2;
655           //pelaaja1.Weapon.Mass = 0.1;
656           Add(pelaaja1.Weapon);
657           //pelaaja1.EquipWeapon();
658           //pelaaja1.Weapon.MomentOfInertia = double.PositiveInfinity;
659           pelaaja1.Weapon.Tag = "Pistooli";
660           //pelaaja1.Weapon.Shape = Shapes.CreateFromTexture(pistol, new Vector(pistol.Width, pistol.Height), 100);
661           //pelaaja1.Weapon.Size = new Vector(pistol.Width, pistol.Height);
662           //pelaaja1.Weapon.UpdateShapeFromSize();
663           pelaaja1.Weapon.Image = pistoolinkuva;
664           AddCollisionHandler(pelaaja1.Weapon, keraaAse);
665
666           //pelaaja2.UnequipWeapon();
667           pelaaja2.Weapon = new AssaultRifle(10, 10);
668           pelaaja2.Weapon.FireRate = 2;
669           //pelaaja2.Weapon.Mass = 0.1;
670           Add(pelaaja2.Weapon);
671           //pelaaja2.EquipWeapon();
672           // pelaaja2.Weapon.MomentOfInertia = double.PositiveInfinity;
673           pelaaja2.Weapon.Tag = "Pistooli";
674           //pelaaja2.Weapon.Shape = Shapes.CreateFromTexture(pistol, new Vector(pistol.Width, pistol.Height), 100);
675           //pelaaja2.Weapon.Size = new Vector(pistol.Width, pistol.Height);
676           // pelaaja2.Weapon.UpdateShapeFromSize();
677           pelaaja2.Weapon.Image = pistoolinkuva;
678           AddCollisionHandler(pelaaja2.Weapon, keraaAse); */
679    }
680
681    #endregion
682
683
684    #region Nappaimet
685    // Lisää peliin kaikki näppäimet
686    void lisaaNappaimet()
687    {
688        ClearControls();
689        //Yleiset näppäimet
690        Keyboard.Listen(Key.F1, ButtonState.Pressed, uusiPeli, "Aloittaa uuden pelin");
691
692        // Pelaajan näppäimet
693        Keyboard.Listen(Key.A, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, new Vector(-liikeVoima, 0));
694        Keyboard.Listen(Key.D, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, new Vector(liikeVoima, 0));
695        Keyboard.Listen(Key.W, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
696        Keyboard.Listen(Key.Space, ButtonState.Down, Ammu, "Ammu", pelaaja1);
697
698        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja2, new Vector(-liikeVoima, 0));
699        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja2, new Vector(liikeVoima, 0));
700        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja2, hyppyVoima);
701        Keyboard.Listen(Key.Enter, ButtonState.Down, Ammu, "Ammu", pelaaja2);
702        Keyboard.Listen(Key.Escape, ButtonState.Pressed, PeliPauselle, "Pysäyttää pelin");
703
704        lisaaGamePadNappaimet(ControllerOne, pelaaja1);
705        lisaaGamePadNappaimet(ControllerTwo, pelaaja2);
706    }
707
708    void lisaaGamePadNappaimet(GamePad pelaajaNro, PlatformCharacter pelaaja)
709    {
710        //Yleiset näppäimet
711        //pelaajaNro.Listen(pelaajaNro, Button.Start, ButtonState.Pressed, uusiPeli, "Aloittaa uuden pelin");
712
713        //pelaajaNro.Listen(pelaajaNro, Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja, new Vector(-liikeVoima, 0));
714        //pelaajaNro.Listen(pelaajaNro, Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja, new Vector(liikeVoima, 0));
715        //pelaajaNro.Listen(pelaajaNro, Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja, hyppyVoima);
716        //pelaajaNro.Listen(pelaajaNro, Button.RightTrigger, ButtonState.Down, Ammu, "Ammu", pelaaja);
717    }
718
719    void PeliPauselle()
720    {
721        MultiSelectWindow PauseValikko = new MultiSelectWindow("Kynäri",
722        "Jatka peliä", "Aloita peli alusta", "Päävalikko", "Lopeta");
723        Add(PauseValikko);
724        PauseValikko.AddItemHandler(1, uusiPeli);
725        PauseValikko.AddItemHandler(2, LuoAlkuValikko);
726        PauseValikko.AddItemHandler(3, Exit);
727        PauseValikko.DefaultCancel = 0;
728        PauseValikko.Color = Color.Gray;
729    }
730
731    // Näppäimiin liitetyt toiminnot alkavat tästä -->
732    void liikuta(PlatformCharacter hahmo, Vector voima)
733    {
734        //hahmo.Walk(e.Time, voima);
735        hahmo.Walk(voima.X);
736    }
737
738    void naytaTiedot()
739    {
740        MessageDisplay.Clear();
741        MessageDisplay.X = 0;
742        MessageDisplay.Add("Pelaaja 1: " + pelaaja1.Weapon.Tag);
743        MessageDisplay.Add("Pelaaja 2: " + pelaaja2.Weapon.Tag);
744    }
745
746    void Ammu(PlatformCharacter hahmo)
747    {
748        if (hahmo.IsDestroyed)
749        {
750            return;
751        }
752
753        PhysicsObject ammus = hahmo.Weapon.Shoot();
754
755        if (ammus != null)
756        {
757            Add(ammus);
758        }
759
760        return;
761    }
762
763    void hyppaa(PlatformCharacter hahmo, double voima)
764    {
765        //PlatformCharacter hahmo = e.Parameter0 as PlatformCharacter;
766        //double voima = e.Parameter1.ToDouble();
767
768        /* if (Math.Abs(hahmo.Velocity.Y) > 0.001)
769         {
770             return;
771         }
772         */
773
774        if (hahmo.Jump(voima))
775        {
776            hyppyAani.Play();
777        }
778    }
779
780    void uusiPeli()
781    {
782        NollaaLaskurit();
783        aloitaUusiPeli();
784    }
785    #endregion
786
787
788}
Note: See TracBrowser for help on using the repository browser.