1 | using System; |
---|
2 | using System.Collections.Generic; |
---|
3 | using Jypeli; |
---|
4 | using Jypeli.Assets; |
---|
5 | using Jypeli.Controls; |
---|
6 | using Jypeli.Effects; |
---|
7 | using Jypeli.Widgets; |
---|
8 | |
---|
9 | |
---|
10 | class Zombi : PhysicsObject |
---|
11 | { |
---|
12 | public DoubleMeter zhp = new DoubleMeter(15,0,15); |
---|
13 | |
---|
14 | public Zombi(double leveys, double korkeus) |
---|
15 | : base(leveys, korkeus) |
---|
16 | { |
---|
17 | zhp.LowerLimit += delegate { Tuhoa(); }; |
---|
18 | } |
---|
19 | |
---|
20 | public void Tuhoa() |
---|
21 | { |
---|
22 | Zombie_Survival peli = (Zombie_Survival)PhysicsGame.Instance; |
---|
23 | peli.killLaskuri.Value++; |
---|
24 | peli.rahaLaskuri.Value += 50; |
---|
25 | this.Destroy(); |
---|
26 | peli.SpawnAjastin(); |
---|
27 | } |
---|
28 | |
---|
29 | public override void Update(Time time) |
---|
30 | { |
---|
31 | base.Update(time); |
---|
32 | Angle = Velocity.Angle; |
---|
33 | } |
---|
34 | } |
---|
35 | |
---|
36 | public class Zombie_Survival : PhysicsGame |
---|
37 | { |
---|
38 | ScoreList topLista = new ScoreList(10, false, 0); |
---|
39 | |
---|
40 | PhysicsObject p1; |
---|
41 | PhysicsObject p2; |
---|
42 | IntMeter p1_ammo; |
---|
43 | IntMeter p1_lipas; |
---|
44 | IntMeter p2_ammo; |
---|
45 | IntMeter p2_lipas; |
---|
46 | |
---|
47 | Label lataa; |
---|
48 | Label lataa2; |
---|
49 | |
---|
50 | public IntMeter killLaskuri; |
---|
51 | public IntMeter rahaLaskuri; |
---|
52 | IntMeter multiplayer; |
---|
53 | |
---|
54 | |
---|
55 | AssaultRifle ak1; |
---|
56 | AssaultRifle ak2; |
---|
57 | |
---|
58 | DoubleMeter p1_hp; |
---|
59 | DoubleMeter p2_hp; |
---|
60 | |
---|
61 | |
---|
62 | Vector nopeusVasen = new Vector(-300, 0); |
---|
63 | Vector nopeusOikea = new Vector(300, 0); |
---|
64 | Vector nopeusYlos = new Vector(0, 200); |
---|
65 | Vector nopeusAlas = new Vector(0, -200); |
---|
66 | //Map |
---|
67 | Image map = LoadImage("map"); |
---|
68 | Image bg = LoadImage("bg"); |
---|
69 | //Aseet |
---|
70 | Image miniak = LoadImage("miniak47"); |
---|
71 | //player 1 |
---|
72 | Image p1_oikea = LoadImage("p1_oikea_new"); |
---|
73 | Image p1_vasen = LoadImage("p1_vasen"); |
---|
74 | Image p1_ylos = LoadImage("p1_ylos"); |
---|
75 | Image p1_alas = LoadImage("p1_alas"); |
---|
76 | //player 2 |
---|
77 | Image p2_oikea = LoadImage("p2_oikea"); |
---|
78 | Image zombie_skin = LoadImage("zombie_skin"); |
---|
79 | |
---|
80 | List<Vector> zombipaikat; |
---|
81 | |
---|
82 | public override void Begin() |
---|
83 | { |
---|
84 | zombipaikat = new List<Vector>(); |
---|
85 | |
---|
86 | SetWindowSize(1024, 768, false); |
---|
87 | if (DataStorage.Exists("scores.xml")) topLista = DataStorage.Load<ScoreList>(topLista, "scores.xml"); |
---|
88 | |
---|
89 | multiplayer = new IntMeter(0); |
---|
90 | Valikko(); |
---|
91 | //player1(); |
---|
92 | //player2(); |
---|
93 | |
---|
94 | //ZombieSpawn(); |
---|
95 | |
---|
96 | //PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); |
---|
97 | } |
---|
98 | void StartGame() |
---|
99 | { |
---|
100 | //multiplayer.Value = 0; |
---|
101 | zombipaikat.Clear(); |
---|
102 | ui(); |
---|
103 | LuoMap(); |
---|
104 | controls(); |
---|
105 | LuoKillLaskuri(); |
---|
106 | LuoRahalaskuri(); |
---|
107 | } |
---|
108 | void Start2Game() |
---|
109 | { |
---|
110 | multiplayer = new IntMeter(1); |
---|
111 | ui(); |
---|
112 | LuoMap(); |
---|
113 | controls(); |
---|
114 | LuoKillLaskuri(); |
---|
115 | LuoRahalaskuri(); |
---|
116 | } |
---|
117 | void Valikko() |
---|
118 | { |
---|
119 | MultiSelectWindow alkuValikko = new MultiSelectWindow("Zombie Survival","Singleplayer", "2-player", "Scores", "Exit"); |
---|
120 | Add(alkuValikko); |
---|
121 | alkuValikko.ItemSelected += PainettiinValikonNappia; |
---|
122 | } |
---|
123 | void PainettiinValikonNappia(int valinta) |
---|
124 | { |
---|
125 | switch (valinta) |
---|
126 | { |
---|
127 | case 0: |
---|
128 | StartGame(); |
---|
129 | break; |
---|
130 | case 1: |
---|
131 | Start2Game(); |
---|
132 | break; |
---|
133 | case 2: |
---|
134 | HighScores(); |
---|
135 | break; |
---|
136 | case 3: |
---|
137 | Exit(); |
---|
138 | break; |
---|
139 | } |
---|
140 | } |
---|
141 | |
---|
142 | void LuoMap() |
---|
143 | { |
---|
144 | ColorTileMap ruudut = ColorTileMap.FromLevelAsset("map"); |
---|
145 | ruudut.SetTileMethod(Color.Black, TeeSeina); |
---|
146 | ruudut.SetTileMethod(Color.Red, TeeOvi); |
---|
147 | ruudut.SetTileMethod(Color.Blue, TeeP1); |
---|
148 | if(multiplayer == 1) ruudut.SetTileMethod(Color.Yellow, TeeP2); |
---|
149 | ruudut.SetTileMethod(Color.Green, TeeZombiPaikka); |
---|
150 | ruudut.Execute(20, 20); |
---|
151 | Level.CreateBorders(false); |
---|
152 | Image lol = Image.FromGradient(2048, 2048, Color.DarkGray, Color.DarkGray); |
---|
153 | Level.Background.Image = lol; |
---|
154 | Camera.ZoomToLevel(); |
---|
155 | LuoZombi(); |
---|
156 | LuoZombi(); |
---|
157 | LuoZombi(); |
---|
158 | |
---|
159 | |
---|
160 | |
---|
161 | } |
---|
162 | void TeeSeina(Vector paikka, double leveys, double korkeus) |
---|
163 | { |
---|
164 | PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus); |
---|
165 | taso.Position = paikka; |
---|
166 | taso.Shape = Shape.Rectangle; |
---|
167 | taso.Color = Color.Black; |
---|
168 | Add(taso); |
---|
169 | |
---|
170 | } |
---|
171 | void TeeOvi(Vector paikka, double leveys, double korkeus) |
---|
172 | { |
---|
173 | PhysicsObject ovi = PhysicsObject.CreateStaticObject(leveys, korkeus); |
---|
174 | ovi.Position = paikka; |
---|
175 | ovi.Shape = Shape.Rectangle; |
---|
176 | ovi.Color = Color.Red; |
---|
177 | ovi.Tag = "ovi"; |
---|
178 | Add(ovi); |
---|
179 | } |
---|
180 | void TeeP1(Vector paikka, double leveys, double korkeus) |
---|
181 | { |
---|
182 | p1 = new PhysicsObject(45, 45); |
---|
183 | p1.Shape = Shape.Circle; |
---|
184 | p1.Image = p1_oikea; |
---|
185 | p1.CanRotate = false; |
---|
186 | p1.Restitution = 0; |
---|
187 | p1.Position = paikka; |
---|
188 | p1.Tag = "living"; |
---|
189 | Add(p1); |
---|
190 | ak1 = new AssaultRifle(20, 20); |
---|
191 | ak1.Image = null; |
---|
192 | ak1.Color = Color.Transparent; |
---|
193 | ak1.ProjectileCollision = AmmusOsui; |
---|
194 | ak1.Ammo.Value = p1_lipas.Value; |
---|
195 | p1.Add(ak1); |
---|
196 | } |
---|
197 | void TeeP2(Vector paikka, double leveys, double korkeus) |
---|
198 | { |
---|
199 | p2 = new PhysicsObject(45, 45); |
---|
200 | p2.Shape = Shape.Circle; |
---|
201 | p2.Image = p2_oikea; |
---|
202 | p2.CanRotate = false; |
---|
203 | p2.Position = paikka; |
---|
204 | p2.Tag = "living"; |
---|
205 | p2.Restitution = 0; |
---|
206 | Add(p2); |
---|
207 | ak2 = new AssaultRifle(20, 20); |
---|
208 | ak2.Image = null; |
---|
209 | ak2.Color = Color.Transparent; |
---|
210 | ak2.ProjectileCollision = AmmusOsui; |
---|
211 | ak2.Ammo.Value = p1_lipas.Value; |
---|
212 | p2.Add(ak2); |
---|
213 | } |
---|
214 | public void SpawnAjastin() |
---|
215 | { |
---|
216 | Timer ajastin = new Timer(); |
---|
217 | ajastin.Interval = 6.5; |
---|
218 | ajastin.Timeout += LuoZombi; |
---|
219 | ajastin.Start(); |
---|
220 | |
---|
221 | Timer ajastin2 = new Timer(); |
---|
222 | ajastin2.Interval = 30; |
---|
223 | ajastin2.Timeout += LuoZombi; |
---|
224 | ajastin2.Start(); |
---|
225 | |
---|
226 | } |
---|
227 | void TeeZombiPaikka(Vector paikka, double leveys, double korkeus) |
---|
228 | { |
---|
229 | zombipaikat.Add(paikka); |
---|
230 | } |
---|
231 | |
---|
232 | void LuoZombi() |
---|
233 | { |
---|
234 | Zombi z1 = new Zombi(45, 38); |
---|
235 | z1.Position = RandomGen.SelectOne<Vector>(zombipaikat); |
---|
236 | FollowerBrain zombinAivot = new FollowerBrain("living"); |
---|
237 | z1.Shape = Shape.Circle; |
---|
238 | z1.Image = zombie_skin; |
---|
239 | z1.CanRotate = false; |
---|
240 | z1.Restitution = 0; |
---|
241 | z1.Brain = zombinAivot; |
---|
242 | AddCollisionHandler(z1, ZombieHit); |
---|
243 | z1.Tag = "zombitag"; |
---|
244 | Add(z1); |
---|
245 | } |
---|
246 | //void player1() |
---|
247 | //{ |
---|
248 | // p1 = new PhysicsObject(45, 45); |
---|
249 | // p1.Shape = Shape.Circle; |
---|
250 | // p1.Image = p1_oikea; |
---|
251 | // p1.CanRotate = false; |
---|
252 | // p1.Restitution = 0; |
---|
253 | |
---|
254 | //} |
---|
255 | //void player2() |
---|
256 | //{ |
---|
257 | // p2 = new PhysicsObject(45, 45); |
---|
258 | // p2.Shape = Shape.Circle; |
---|
259 | // p2.Image = p2_oikea; |
---|
260 | // p2.CanRotate = false; |
---|
261 | // p2.X = -50; |
---|
262 | // p2.Restitution = 0; |
---|
263 | //} |
---|
264 | //void Zombie() |
---|
265 | //{ |
---|
266 | // z1 = new PhysicsObject(45, 38); |
---|
267 | // z1.X = 150; |
---|
268 | // z1.Shape = Shape.Circle; |
---|
269 | // z1.Image = zombie_skin; |
---|
270 | // z1.CanRotate = false; |
---|
271 | // z1.Restitution = 0; |
---|
272 | // Add(z1); |
---|
273 | |
---|
274 | //} |
---|
275 | void controls() |
---|
276 | { |
---|
277 | Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); |
---|
278 | |
---|
279 | Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, null, p1, nopeusYlos); |
---|
280 | Keyboard.Listen(Key.W, ButtonState.Released, AsetaNopeus, null, p1, Vector.Zero); |
---|
281 | |
---|
282 | Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, null, p1, nopeusVasen); |
---|
283 | Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, p1, Vector.Zero); |
---|
284 | |
---|
285 | Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, null, p1, nopeusAlas); |
---|
286 | Keyboard.Listen(Key.S, ButtonState.Released, AsetaNopeus, null, p1, Vector.Zero); |
---|
287 | |
---|
288 | Keyboard.Listen(Key.D, ButtonState.Down, AsetaNopeus, null, p1, nopeusOikea); |
---|
289 | Keyboard.Listen(Key.D, ButtonState.Released, AsetaNopeus, null, p1, Vector.Zero); |
---|
290 | |
---|
291 | Keyboard.Listen(Key.Space, ButtonState.Pressed, Use, null, p1); |
---|
292 | Mouse.Listen(MouseButton.Left, ButtonState.Down, Shoot, null, p1); |
---|
293 | |
---|
294 | Keyboard.Listen(Key.R, ButtonState.Pressed, Reload, null, p1); |
---|
295 | |
---|
296 | |
---|
297 | ControllerOne.Listen(Button.Start, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); |
---|
298 | |
---|
299 | ControllerOne.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, null, p2, nopeusYlos); |
---|
300 | ControllerOne.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, p2, Vector.Zero); |
---|
301 | |
---|
302 | ControllerOne.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, null, p2, nopeusAlas); |
---|
303 | ControllerOne.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, p2, Vector.Zero); |
---|
304 | |
---|
305 | ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, AsetaNopeus, null, p2, nopeusVasen); |
---|
306 | ControllerOne.Listen(Button.DPadLeft, ButtonState.Released, AsetaNopeus, null, p2, Vector.Zero); |
---|
307 | |
---|
308 | ControllerOne.Listen(Button.DPadRight, ButtonState.Down, AsetaNopeus, null, p2, nopeusOikea); |
---|
309 | ControllerOne.Listen(Button.DPadRight, ButtonState.Released, AsetaNopeus, null, p2, Vector.Zero); |
---|
310 | |
---|
311 | ControllerOne.Listen(Button.Y, ButtonState.Pressed, Use, null, p2); |
---|
312 | ControllerOne.Listen(Button.RightShoulder, ButtonState.Down, Shoot, null, p2); |
---|
313 | ControllerOne.Listen(Button.X, ButtonState.Pressed, Reload, null, p2); |
---|
314 | |
---|
315 | } |
---|
316 | void ui() |
---|
317 | { |
---|
318 | |
---|
319 | //p1_hp |
---|
320 | p1_hp = new DoubleMeter(5); |
---|
321 | Label player1 = new Label("Player 1"); |
---|
322 | player1.X = Screen.Left + 40; |
---|
323 | player1.Y = Screen.Top - 15; |
---|
324 | p1_hp.MaxValue = 5; |
---|
325 | ProgressBar p1_hpPalkki = new ProgressBar(170, 20); |
---|
326 | p1_hpPalkki.BindTo(p1_hp); |
---|
327 | p1_hpPalkki.X = Screen.Left + 180; |
---|
328 | p1_hpPalkki.Y = Screen.Top - 15; |
---|
329 | p1_hpPalkki.BarImage = LoadImage("fullbar"); |
---|
330 | Add(player1); |
---|
331 | Add(p1_hpPalkki); |
---|
332 | |
---|
333 | //p1_ammo |
---|
334 | p1_ammo = new IntMeter(280); |
---|
335 | p1_lipas = new IntMeter(30); |
---|
336 | Label p1_ammo_label = new Label(); |
---|
337 | Label vali = new Label("/"); |
---|
338 | Label p1_ammo_lipas = new Label(); |
---|
339 | p1_ammo_lipas.BindTo(p1_lipas); |
---|
340 | p1_ammo_label.BindTo(p1_ammo); |
---|
341 | p1_ammo_lipas.Y = Screen.Top - 50; |
---|
342 | p1_ammo_lipas.X = - 100; |
---|
343 | vali.Y = Screen.Top - 50; |
---|
344 | vali.X = -85; |
---|
345 | p1_ammo_label.Y = Screen.Top - 50; |
---|
346 | p1_ammo_label.X = -60; |
---|
347 | Add(p1_ammo_lipas); |
---|
348 | Add(vali); |
---|
349 | Add(p1_ammo_label); |
---|
350 | |
---|
351 | |
---|
352 | //Ase |
---|
353 | LuoAse(-100, Level.Top + 70); |
---|
354 | LuoAse(-505, Level.Bottom + 100); |
---|
355 | if(multiplayer == 1) LuoAse(+100, Level.Top + 70); |
---|
356 | |
---|
357 | //GameObject aseenkuva = new GameObject(90,27); |
---|
358 | //aseenkuva.Image = miniak; |
---|
359 | //aseenkuva.Y = Level.Top +50; |
---|
360 | //aseenkuva.X = -17; |
---|
361 | //Add(aseenkuva); |
---|
362 | |
---|
363 | |
---|
364 | if (multiplayer == 0) return; |
---|
365 | |
---|
366 | //p2_hp |
---|
367 | p2_hp = new DoubleMeter(5); |
---|
368 | Label player2 = new Label("Player 2"); |
---|
369 | player2.X = Screen.Left + 40; |
---|
370 | player2.Y = Screen.Top - 40; |
---|
371 | p2_hp.MaxValue = 5; |
---|
372 | ProgressBar p2_hpPalkki = new ProgressBar(170, 20); |
---|
373 | p2_hpPalkki.BindTo(p2_hp); |
---|
374 | p2_hpPalkki.X = Screen.Left + 180; |
---|
375 | p2_hpPalkki.Y = Screen.Top - 40; |
---|
376 | p2_hpPalkki.BarImage = LoadImage("fullbar"); |
---|
377 | p2_hpPalkki.Image = LoadImage("emptybar"); |
---|
378 | Add(p2_hpPalkki); |
---|
379 | Add(player2); |
---|
380 | |
---|
381 | //p2_ammo |
---|
382 | p2_ammo = new IntMeter(280); |
---|
383 | p2_lipas = new IntMeter(30); |
---|
384 | Label p2_ammo_label = new Label(); |
---|
385 | vali = new Label("/"); |
---|
386 | Label p2_ammo_lipas = new Label(); |
---|
387 | p2_ammo_lipas.BindTo(p2_lipas); |
---|
388 | p2_ammo_label.BindTo(p2_ammo); |
---|
389 | p2_ammo_lipas.Y = Screen.Top - 50; |
---|
390 | p2_ammo_lipas.X = +60; |
---|
391 | vali.Y = Screen.Top - 50; |
---|
392 | vali.X = +75; |
---|
393 | p2_ammo_label.Y = Screen.Top - 50; |
---|
394 | p2_ammo_label.X = +100; |
---|
395 | Add(p2_ammo_lipas); |
---|
396 | Add(vali); |
---|
397 | Add(p2_ammo_label); |
---|
398 | |
---|
399 | } |
---|
400 | void LuoAse(double X, double Y) |
---|
401 | { |
---|
402 | GameObject aseenkuva = new GameObject(90, 27); |
---|
403 | aseenkuva.Image = miniak; |
---|
404 | aseenkuva.Y = Y; |
---|
405 | aseenkuva.X = X; |
---|
406 | aseenkuva.Tag = "ase"; |
---|
407 | Add(aseenkuva, -3); |
---|
408 | } |
---|
409 | |
---|
410 | void LuoKillLaskuri() |
---|
411 | { |
---|
412 | killLaskuri = new IntMeter(0); |
---|
413 | Label killNaytto = new Label(); |
---|
414 | Label Kills = new Label("Kills:"); |
---|
415 | Kills.X = Screen.Right - 190; |
---|
416 | Kills.Y = Screen.Top - 15; |
---|
417 | killNaytto.X = Screen.Right - 100; |
---|
418 | killNaytto.Y = Screen.Top - 15; |
---|
419 | killNaytto.TextColor = Color.Black; |
---|
420 | killNaytto.BindTo(killLaskuri); |
---|
421 | Add(Kills); |
---|
422 | Add(killNaytto); |
---|
423 | } |
---|
424 | |
---|
425 | void LuoRahalaskuri() |
---|
426 | { |
---|
427 | rahaLaskuri = new IntMeter(1000); |
---|
428 | Label rahaNaytto = new Label(); |
---|
429 | Label Money = new Label("Money:"); |
---|
430 | Money.X = Screen.Right - 201; |
---|
431 | Money.Y = Screen.Top - 39; |
---|
432 | rahaNaytto.X = Screen.Right - 100; |
---|
433 | rahaNaytto.Y = Screen.Top - 40; |
---|
434 | rahaNaytto.TextColor = Color.Black; |
---|
435 | rahaNaytto.BindTo(rahaLaskuri); |
---|
436 | Add(Money); |
---|
437 | Add(rahaNaytto); |
---|
438 | } |
---|
439 | void AsetaNopeus(PhysicsObject player, Vector nopeus) |
---|
440 | { |
---|
441 | player.Velocity = nopeus; |
---|
442 | if (nopeus.Magnitude == 0) |
---|
443 | { |
---|
444 | return; |
---|
445 | } |
---|
446 | player.Angle = nopeus.Angle; |
---|
447 | OvenLahella(player); |
---|
448 | AseenLahella(player); |
---|
449 | } |
---|
450 | void Shoot(PhysicsObject pelaaja) |
---|
451 | { |
---|
452 | if (pelaaja == p1) |
---|
453 | { |
---|
454 | PhysicsObject ammus = ak1.Shoot(); |
---|
455 | if(ammus != null) p1_lipas.Value--; |
---|
456 | } |
---|
457 | if (pelaaja == p2) |
---|
458 | { |
---|
459 | PhysicsObject ammus = ak2.Shoot(); |
---|
460 | if (ammus != null) p2_lipas.Value--; |
---|
461 | } |
---|
462 | if (p1_lipas == 0) |
---|
463 | { |
---|
464 | lataa = new Label("Reload"); |
---|
465 | lataa.MaximumLifetime = TimeSpan.FromSeconds(1); |
---|
466 | Add(lataa); |
---|
467 | } |
---|
468 | if (multiplayer == 0) return; |
---|
469 | if (p2_lipas == 0) |
---|
470 | { |
---|
471 | lataa2 = new Label("Reload (X)"); |
---|
472 | lataa2.X = -50; |
---|
473 | lataa2.MaximumLifetime = TimeSpan.FromSeconds(1); |
---|
474 | Add(lataa2); |
---|
475 | } |
---|
476 | } |
---|
477 | void ZombieHit(PhysicsObject zombi, PhysicsObject kohde) |
---|
478 | { |
---|
479 | if (kohde.Tag == "living") p1_hp.Value--; |
---|
480 | if (p1_hp == 0) GameOver(); |
---|
481 | if (multiplayer == 1 && p2_hp == 0) GameOver(); |
---|
482 | } |
---|
483 | void LuoAikaLaskuri() |
---|
484 | { |
---|
485 | Timer aikaLaskuri = new Timer(); |
---|
486 | aikaLaskuri.Start(); |
---|
487 | |
---|
488 | Label aikaNaytto = new Label(); |
---|
489 | aikaNaytto.TextColor = Color.Red; |
---|
490 | aikaNaytto.DecimalPlaces = 1; |
---|
491 | aikaNaytto.BindTo(aikaLaskuri.SecondCounter); |
---|
492 | Add(aikaNaytto); |
---|
493 | } |
---|
494 | void AvaaOvi(PhysicsObject pelaaja) |
---|
495 | { |
---|
496 | GameObject ovi = GetObjectAt(pelaaja.Position, "ovi", 35); |
---|
497 | if (ovi == null) return; |
---|
498 | else if (rahaLaskuri > 149) |
---|
499 | { |
---|
500 | ovi.Destroy(); |
---|
501 | rahaLaskuri.Value -= 150; |
---|
502 | } |
---|
503 | else return; |
---|
504 | } |
---|
505 | void OvenLahella(PhysicsObject pelaaja) |
---|
506 | { |
---|
507 | GameObject ovi = GetObjectAt(pelaaja.Position, "ovi", 35); |
---|
508 | Label hinta; |
---|
509 | Label hinta2; |
---|
510 | if (ovi == null) return; |
---|
511 | if (multiplayer == 0) |
---|
512 | { |
---|
513 | hinta = new Label("Press Space to open one block of the door."); |
---|
514 | hinta2 = new Label("$150 per block"); |
---|
515 | hinta.X = -20; |
---|
516 | hinta2.Y = -20; |
---|
517 | Add(hinta); |
---|
518 | Add(hinta2); |
---|
519 | } |
---|
520 | else |
---|
521 | { |
---|
522 | hinta = new Label("Press Space or (Y) to open one block of the door."); |
---|
523 | hinta2 = new Label("$150 per block"); |
---|
524 | hinta.X = -20; |
---|
525 | hinta2.Y = -20; |
---|
526 | Add(hinta); |
---|
527 | Add(hinta2); |
---|
528 | } |
---|
529 | hinta.MaximumLifetime = TimeSpan.FromSeconds(1); |
---|
530 | hinta2.MaximumLifetime = TimeSpan.FromSeconds(1); |
---|
531 | } |
---|
532 | void HighScores() |
---|
533 | { |
---|
534 | HighScoreWindow topIkkuna = new HighScoreWindow("Parhaat pisteet", topLista); |
---|
535 | topIkkuna.Closed += MeneValikkoon; |
---|
536 | Add(topIkkuna); |
---|
537 | |
---|
538 | } |
---|
539 | void MeneValikkoon(Window sender) |
---|
540 | { |
---|
541 | Valikko(); |
---|
542 | } |
---|
543 | void Reload(PhysicsObject pelaaja) |
---|
544 | { |
---|
545 | if (p1_ammo > 29 && p1_lipas == 0) |
---|
546 | { |
---|
547 | p1_ammo.Value -= 30; |
---|
548 | p1_lipas.Value += 30; |
---|
549 | ak1.Ammo.Value = p1_lipas.Value; |
---|
550 | } |
---|
551 | |
---|
552 | if (multiplayer == 1 && p2_ammo > 29 && p2_lipas == 0) |
---|
553 | { |
---|
554 | p2_ammo.Value -= 30; |
---|
555 | p2_lipas.Value += 30; |
---|
556 | ak2.Ammo.Value = p2_lipas.Value; |
---|
557 | } |
---|
558 | |
---|
559 | //if (p1_lipas == 0) |
---|
560 | //{ |
---|
561 | // lataa = new Label("Reload"); |
---|
562 | // lataa.MaximumLifetime = TimeSpan.FromSeconds(1); |
---|
563 | // Add(lataa); |
---|
564 | // |
---|
565 | //} |
---|
566 | } |
---|
567 | void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde) |
---|
568 | { |
---|
569 | ammus.Destroy(); |
---|
570 | Explosion rajahdys = new Explosion(10); |
---|
571 | rajahdys.Position = ammus.Position; |
---|
572 | Add(rajahdys); |
---|
573 | if (kohde.Tag == "zombitag") |
---|
574 | { |
---|
575 | Zombi z1 = kohde as Zombi; |
---|
576 | z1.zhp.Value -= 7.5; |
---|
577 | } |
---|
578 | } |
---|
579 | void OstaAmmo(PhysicsObject pelaaja) |
---|
580 | { |
---|
581 | GameObject ase = GetObjectAt(pelaaja.Position, "ase", 35); |
---|
582 | if (ase == null) return; |
---|
583 | else if (rahaLaskuri > 499) |
---|
584 | { |
---|
585 | p1_lipas.SetValue(30); |
---|
586 | p1_ammo.SetValue(280); |
---|
587 | rahaLaskuri.SetValue(rahaLaskuri.Value - 500); |
---|
588 | } |
---|
589 | else return; |
---|
590 | } |
---|
591 | void GameOver() |
---|
592 | { |
---|
593 | ClearAll(); |
---|
594 | Mouse.IsCursorVisible = true; |
---|
595 | HighScoreWindow topIkkuna = new HighScoreWindow("Parhaat pisteet", "Onneksi olkoon, pääsit listalle lahtaamalla %p zombia! Syötä nimesi:", topLista, killLaskuri); |
---|
596 | topIkkuna.Closed += TallennaPisteet; |
---|
597 | Add(topIkkuna); |
---|
598 | } |
---|
599 | void TallennaPisteet(Window sender) |
---|
600 | { |
---|
601 | DataStorage.Save<ScoreList>(topLista, "scores.xml"); |
---|
602 | Valikko(); |
---|
603 | } |
---|
604 | void Use(PhysicsObject pelaaja) |
---|
605 | { |
---|
606 | OstaAmmo(pelaaja); |
---|
607 | AvaaOvi(pelaaja); |
---|
608 | } |
---|
609 | void AseenLahella(PhysicsObject pelaaja) |
---|
610 | { |
---|
611 | GameObject ase = GetObjectAt(pelaaja.Position, "ase", 35); |
---|
612 | Label hinta; |
---|
613 | Label hinta2; |
---|
614 | if (ase == null) return; |
---|
615 | if (multiplayer == 0) |
---|
616 | { |
---|
617 | hinta = new Label("Press Space to buy AK-47 ammo."); |
---|
618 | hinta2 = new Label("$500"); |
---|
619 | hinta.X = -20; |
---|
620 | hinta2.Y = -20; |
---|
621 | Add(hinta); |
---|
622 | Add(hinta2); |
---|
623 | } |
---|
624 | else |
---|
625 | { |
---|
626 | hinta = new Label("Press Space or (Y) to buy AK-47 ammo."); |
---|
627 | hinta2 = new Label("$500"); |
---|
628 | hinta.X = -20; |
---|
629 | hinta2.Y = -20; |
---|
630 | Add(hinta); |
---|
631 | Add(hinta2); |
---|
632 | } |
---|
633 | hinta.MaximumLifetime = TimeSpan.FromSeconds(1); |
---|
634 | hinta2.MaximumLifetime = TimeSpan.FromSeconds(1); |
---|
635 | } |
---|
636 | |
---|
637 | } |
---|