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

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