source: 2016/30/TaavettiV/Street Alien Domination/Street Alien Domination/Street_Alien_Domination/Street_Alien_Domination.cs @ 8247

Revision 8247, 8.5 KB checked in by sieerinn, 3 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 Street_Alien_Domination : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    GameObject tahtain;
17
18    Image pelaajanKuva = LoadImage("norsu");
19    Image tahtiKuva = LoadImage("tahti");
20
21    Image pompKuva = LoadImage("pomp");
22    Image asevihukuva = LoadImage("kesken");
23    Image tähtäinkuva = LoadImage("tähtäin");
24
25    Image knightkuva = LoadImage("knight");
26
27    SoundEffect maaliAani = LoadSoundEffect("maali");
28
29    public override void Begin()
30    {
31        ClearAll();
32        SmoothTextures = false;
33
34        PhysicsObject kissa = new PhysicsObject(40, 20);
35        kissa.Shape = Shape.Rectangle;
36        kissa.Mass = 10.0;
37        Add(kissa);
38
39        tahtain = new GameObject(40, 40);
40        tahtain.Image = tähtäinkuva;
41        Add(tahtain, 3);
42
43
44        Gravity = new Vector(0, -1000);
45
46        LuoKentta();
47        LisaaNappaimet();
48
49        Camera.Follow(pelaaja1);
50        Camera.ZoomFactor = 1.2;
51        Camera.StayInLevel = true;
52    }
53
54    void LuoKentta()
55    {
56        TileMap kentta = TileMap.FromLevelAsset("kentta4");
57        kentta.SetTileMethod('#', LisaaTaso);
58        kentta.SetTileMethod('*', LisaaTahti);
59        kentta.SetTileMethod('N', LisaaPelaaja);
60        kentta.SetTileMethod('p', LisaaOlio);
61        kentta.SetTileMethod('A', LisaaOlio2);
62        kentta.SetTileMethod('m', LisaaOlio3);
63        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
64        Level.CreateBorders();
65       
66        Level.Background.CreateGradient(Color.DarkRed,Color.LightBlue);
67    }
68
69    void LisaaTaso(Vector paikka, double leveys, double korkeus)
70    {
71        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
72        taso.Position = paikka;
73        taso.Color = Color.DarkBrown;
74        Add(taso);
75    }
76
77    void LisaaTahti(Vector paikka, double leveys, double korkeus)
78    {
79        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
80        tahti.IgnoresCollisionResponse = true;
81        tahti.Position = paikka;
82        tahti.Image = tahtiKuva;
83        tahti.Tag = "tahti";
84        Add(tahti);
85    }
86    void LisaaOlio(Vector paikka, double leveys, double korkeus)
87    {
88        PlatformCharacter p = new PlatformCharacter(leveys * 0.9, korkeus * 0.9);
89        p.Position = paikka;
90        p.Image = pompKuva;
91        Add(p);
92        p.Tag = "p";
93
94        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
95        tasoAivot.Speed = 100;
96
97        tasoAivot.FallsOffPlatforms = true;
98        tasoAivot.TriesToJump = true;
99
100        p.Brain = tasoAivot;
101
102    }
103
104    void LisaaOlio2(Vector paikka, double leveys, double korkeus)
105    {
106        PlatformCharacter asevihu = new PlatformCharacter(leveys * 0.9, korkeus * 0.9);
107        asevihu.Position = paikka;
108        asevihu.Image = asevihukuva;
109        Add(asevihu);
110        asevihu.Tag = "A";
111
112        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
113        tasoAivot.Speed = 100;
114
115        tasoAivot.FallsOffPlatforms = true;
116        tasoAivot.TriesToJump = true;
117
118        asevihu.Brain = tasoAivot;
119
120        asevihu.Weapon = new AssaultRifle(30, 10);
121        asevihu.Weapon.ProjectileCollision = VihuAmmusOsui;
122
123        Timer aikaLaskuri = new Timer();
124        aikaLaskuri.Interval = 2;
125        aikaLaskuri.Timeout += () => AmmuAseella(asevihu);
126        aikaLaskuri.Start();
127    }
128    void LisaaOlio3(Vector paikka, double leveys, double korkeus)
129    {
130        PlatformCharacter m = new PlatformCharacter(leveys * 0.9, korkeus * 0.9);
131        m.Position = paikka;
132        m.Image = knightkuva;
133        Add(m);
134        m.Tag = "m";
135
136        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
137        tasoAivot.Speed = 100;
138
139        tasoAivot.FallsOffPlatforms = true;
140        tasoAivot.TriesToJump = true;
141
142        m.Brain = tasoAivot;
143
144    }
145
146
147
148    void Tormaap(PhysicsObject pelaaja1, PhysicsObject p)
149    {
150        pelaaja1.Destroy();
151
152        Explosion rajahdys = new Explosion(50);
153        rajahdys.Position = p.Position;
154        Add(rajahdys);
155    }
156
157    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
158    {
159        pelaaja1 = new PlatformCharacter(leveys, korkeus);
160        pelaaja1.Position = paikka;
161        pelaaja1.Mass = 4.0;
162        pelaaja1.Tag = "pelaaja";
163        pelaaja1.Image = pelaajanKuva;
164        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
165
166        AddCollisionHandler(pelaaja1, "m", Tormaap);
167        Add(pelaaja1);
168
169        pelaaja1.Destroyed += pelinlopussa;
170       
171        pelaaja1.Weapon = new AssaultRifle(30, 10);
172        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
173        pelaaja1.Weapon.InfiniteAmmo = true;
174        pelaaja1.Weapon.Power.DefaultValue = 400;
175        pelaaja1.Weapon.AmmoIgnoresGravity = true;
176        pelaaja1.Weapon.AmmoIgnoresExplosions = true;
177        pelaaja1.Weapon.CanHitOwner = false;
178    }
179
180    void LisaaNappaimet()
181    {
182        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
183        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
184
185        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
186        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
187        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
188
189        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
190
191        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
192        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
193        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
194        //Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
195        Keyboard.Listen(Key.E, ButtonState.Pressed, HeitaKranaatti, "heitä kranaatti", pelaaja1);
196
197        Mouse.ListenMovement(0.0, KuunteleLiiketta, null);
198        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, null,pelaaja1);
199    }
200
201    void KuunteleLiiketta(AnalogState hiirenTila)
202    {
203        tahtain.Position = Mouse.PositionOnWorld;
204        pelaaja1.Weapon.AbsoluteAngle = (Mouse.PositionOnWorld - pelaaja1.Position).Angle;
205
206    }
207
208
209    void Liikuta(PlatformCharacter hahmo, double nopeus)
210    {
211        hahmo.Walk(nopeus);
212    }
213
214    void Hyppaa(PlatformCharacter hahmo, double nopeus)
215    {
216        hahmo.Jump(nopeus);
217    }
218
219    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
220    {
221        maaliAani.Play();
222        MessageDisplay.Add("Keräsit tähden!");
223        tahti.Destroy();
224    }
225    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
226    {
227        ammus.Destroy();
228
229        if (kohde.Tag.ToString() == "p")
230        {
231            kohde.Destroy();
232        }
233        if (kohde.Tag =="A")
234        {
235            kohde.Destroy();
236        }
237
238    }
239
240    void VihuAmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
241    {
242        ammus.Destroy();
243        if (kohde.Tag == "pelaaja")
244        {
245            kohde.Destroy();
246        }
247    }
248
249    void AmmuAseella(PlatformCharacter pelaaja)
250    {
251        if (pelaaja.IsDestroyed) return;
252
253        PhysicsObject ammus = pelaaja.Weapon.Shoot();
254
255        if (ammus != null)
256        {
257            //ammus.Size *= 3;
258            //ammus.Image = ...
259            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
260        }
261
262    }
263    void HeitaKranaatti(PlatformCharacter pelaaja)
264    {
265        if (pelaaja.IsDestroyed) return;
266
267        Grenade kranu = new Grenade(3.0);
268        pelaaja1.Throw(kranu, Angle.FromDegrees(50), 10000);
269
270
271        kranu.Explosion.AddShockwaveHandler("p", KranaattiOsui);
272    }
273    void KranaattiOsui(IPhysicsObject rajahdyksenKohde, Vector v)
274    {
275        rajahdyksenKohde.Destroy();
276    }
277
278   void pelinlopussa()
279    {
280        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", "Aloita peli", "Lopeta");
281        Add(alkuValikko);
282
283        alkuValikko.AddItemHandler(0, Begin);
284        alkuValikko.AddItemHandler(1, Exit);
285    }
286}
287
288
Note: See TracBrowser for help on using the repository browser.