source: 2015/27/AakeR/IMBT/IMBT/IMBT/IMBT.cs @ 6657

Revision 6657, 6.1 KB checked in by aaelruut, 5 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Pelaaja : PhysicsObject
10{
11    public IntMeter healthit;
12
13
14    public AssaultRifle Ase;
15   
16    public Pelaaja(double leveys, double korkeus, Image pelaajanKuva, Image tykkiTorninKuva) : base(leveys, korkeus)
17    {
18        this.Image = pelaajanKuva;
19        this.healthit = new IntMeter(100, 0, 100);
20        this.LinearDamping = 0.95;
21        this.healthit.LowerLimit += delegate() { 
22           
23            Explosion rajahdys = new Explosion(200);
24            rajahdys.Position = this.Position;
25            ((IMBT)Game.Instance).Add(rajahdys);
26           
27            this.Destroy();
28        };
29
30        ((IMBT)Game.Instance).AddCollisionHandler(this, "ammus", delegate(PhysicsObject a, PhysicsObject b)
31        {
32            this.healthit.Value -= 8;
33        });
34
35        this.Ase = new AssaultRifle(30, 30);
36        this.Ase.Image = tykkiTorninKuva;
37        this.Add(this.Ase);
38    }
39   
40
41}
42public class IMBT : PhysicsGame
43{
44
45    Image pelaaja1Kone1 = LoadImage("Pelaaja1Kone1");
46    Image pelaaja2Kone1 = LoadImage("Pelaaja2Kone1");
47    Image pelaaja3Kone1 = LoadImage("Pelaaja3Kone1");
48    Image pelaaja4Kone1 = LoadImage("Pelaaja4Kone1");
49    Image palikkaKuva = LoadImage("Palikka");
50    Image pelaaja4Kone1Tykki = LoadImage("Pelaaja4Kone1Tykki");
51    Image pelaaja3Kone1Tykki = LoadImage("Pelaaja3Kone1Tykki");
52    Image pelaaja2Kone1Tykki = LoadImage("Pelaaja2Kone1Tykki");
53    Image pelaaja1Kone1Tykki = LoadImage("Pelaaja1Kone1Tykki");
54    Image perusAmmus = LoadImage("Kone1PerusAmmus");
55    SoundEffect ammusAani = LoadSoundEffect("AmmusÄäni");
56    Pelaaja pelaaja1;
57    double maxNopeus = 1000.0;
58
59    public override void Begin()
60    {
61        LuoKentta();
62        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
63        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
64    }
65    void LuoKentta()
66    {
67
68        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kenttä1");
69
70       
71        ruudut.SetTileMethod(Color.FromHexCode("0026FF"), LuoPelaaja1);
72        ruudut.SetTileMethod(Color.Cyan, LuoPelaaja2);
73        ruudut.SetTileMethod(Color.BrightGreen, LuoPelaaja3);
74        ruudut.SetTileMethod(Color.Rose, LuoPelaaja4);
75        ruudut.SetTileMethod(Color.Black, LuoPalikka);
76        Level.Background.Color = Color.Silver;
77       
78        ruudut.Execute(80, 80);
79        Camera.ZoomToLevel();
80    }
81
82    void LuoPelaaja1(Vector paikka, double leveys, double korkeus)
83    {
84        pelaaja1 = new Pelaaja(leveys * 0.8, korkeus * 0.8, pelaaja1Kone1, pelaaja1Kone1Tykki);
85        pelaaja1.AngularDamping = 0.95;
86        pelaaja1.Position = paikka;
87
88        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.0, KaannaPelaajaa, "", pelaaja1);
89        ControllerOne.ListenAnalog(AnalogControl.RightStick, 0.0, KaannaTykkia, "", pelaaja1);
90        ControllerOne.Listen(Button.RightTrigger, ButtonState.Pressed, Ammu, "", pelaaja1);
91        Add(pelaaja1);
92    }
93
94    void LuoPalikka(Vector paikka, double leveys, double korkeus)
95    {
96        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
97        palikka.Shape = Shape.Rectangle;
98        palikka.Position = paikka;
99        palikka.Image = palikkaKuva;
100        Add(palikka);
101    }
102
103
104    void LuoPelaaja2(Vector paikka, double leveys, double korkeus)
105    {
106        Pelaaja pelaaja2 = new Pelaaja(leveys * 0.8, korkeus * 0.8, pelaaja2Kone1, pelaaja2Kone1Tykki);
107        pelaaja2.AngularDamping = 0.1;
108        pelaaja2.Position = paikka;
109        ControllerTwo.ListenAnalog(AnalogControl.LeftStick, 0.0, KaannaPelaajaa, "", pelaaja2);
110        ControllerTwo.ListenAnalog(AnalogControl.RightStick, 0.0, KaannaTykkia, "", pelaaja2);
111        ControllerTwo.Listen(Button.RightTrigger, ButtonState.Pressed, Ammu, "", pelaaja2);
112        Add(pelaaja2);
113    }
114
115    void LuoPelaaja3(Vector paikka, double leveys, double korkeus)
116    {
117        Pelaaja pelaaja3 = new Pelaaja(leveys * 0.8, korkeus * 0.8, pelaaja3Kone1, pelaaja3Kone1Tykki);
118        pelaaja3.AngularDamping = 0.95;
119        pelaaja3.Position = paikka;
120        ControllerThree.ListenAnalog(AnalogControl.LeftStick, 0.0, KaannaPelaajaa, "", pelaaja3);
121        ControllerThree.ListenAnalog(AnalogControl.RightStick, 0.0, KaannaTykkia, "", pelaaja3);
122        ControllerThree.Listen(Button.RightTrigger, ButtonState.Pressed, Ammu, "", pelaaja3);
123        Add(pelaaja3);
124    }
125
126    void LuoPelaaja4(Vector paikka, double leveys, double korkeus)
127    {
128        Pelaaja pelaaja4 = new Pelaaja(leveys * 0.8, korkeus *0.8, pelaaja4Kone1, pelaaja4Kone1Tykki);
129        pelaaja4.AngularDamping = 0.95;
130        pelaaja4.Position = paikka;
131        ControllerFour.ListenAnalog(AnalogControl.LeftStick, 0.0, KaannaPelaajaa, "", pelaaja4);
132        ControllerFour.ListenAnalog(AnalogControl.RightStick, 0.0, KaannaTykkia, "", pelaaja4);
133        ControllerFour.Listen(Button.RightTrigger, ButtonState.Pressed, Ammu, "", pelaaja4);
134        Add(pelaaja4);
135    }
136
137
138    void LiikutaPelaajaa(Vector vektori, PhysicsObject pelaaja)
139    {
140        pelaaja.Push(vektori);
141    }
142
143    void KaannaPelaajaa(AnalogState tatinTila, Pelaaja pelaaja)
144    {
145        Angle vanhaKulma = pelaaja.Angle;
146        pelaaja.Angle = tatinTila.StateVector.Angle;
147        pelaaja.Ase.Angle -= pelaaja.Angle - vanhaKulma;
148
149        pelaaja.Push(tatinTila.StateVector * maxNopeus);
150
151    }
152
153    void KaannaTykkia(AnalogState tatinTila, Pelaaja pelaaja)
154    {
155        pelaaja.Ase.AbsoluteAngle = tatinTila.StateVector.Angle;
156    }
157
158    void Ammu(Pelaaja pelaaja)
159    {
160       
161        PhysicsObject ammus = pelaaja.Ase.Shoot();
162        if (ammus!=null)
163        {
164            ammusAani.Play();
165            ammus.Image = perusAmmus;
166            ammus.Tag = "ammus";
167            AddCollisionHandler(ammus, delegate(PhysicsObject a, PhysicsObject b)
168            {
169                a.Destroy();
170            });
171        }
172
173    }
174}
Note: See TracBrowser for help on using the repository browser.