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 | Ase1 Vihreä 1.00x -> 1.00 x 20hp / 1s -> 20.00hp / 1s (10.00hp / osuma) |
---|
11 | Ase1 Keltainen 1.25x -> 1.25 x 20hp / 1s -> 25.00hp / 1s (12.50hp / osuma) |
---|
12 | Ase1 Punainen 1.50x -> 1.50 x 20hp / 1s -> 30.00hp / 1s (15.00hp / osuma) |
---|
13 | |
---|
14 | Ase2 Vihreä 1.00x -> 1.00 x 25hp / 1s -> 25.00hp / 1s (25.00hp / osuma) |
---|
15 | Ase2 Keltainen 1.25x -> 1.25 x 25hp / 1s -> 31.25hp / 1s (31.25hp / osuma) |
---|
16 | Ase2 Punainen 1.50x -> 1.50 x 25hp / 1s -> 37.50hp / 1s (37.50hp / osuma) |
---|
17 | |
---|
18 | Ase3 Vihreä 1.00x -> 1.00 x 30hp / 1s -> 30.00hp / 1s (60.00hp / osuma) |
---|
19 | Ase3 Keltainen 1.25x -> 1.25 x 30hp / 1s -> 37.50hp / 1s (75.00hp / osuma) |
---|
20 | Ase3 Punainen 1.50x -> 1.50 x 30hp / 1s -> 45.00hp / 1s (90.00hp / osuma) |
---|
21 | |
---|
22 | * |
---|
23 | |
---|
24 | Sotilas Vihreä 0.50x -> 0.50 x 20hp / 1s -> 10.00hp / 1s (5.00hp / osuma) |
---|
25 | Sotilas Keltainen 0.75x -> 0.75 x 20hp / 1s -> 15.00hp / 1s (7.50hp / osuma) |
---|
26 | Sotilas Punainen 1.00x -> 1.00 x 20hp / 1s -> 20.00hp / 1s (10.0hp / osuma) |
---|
27 | |
---|
28 | Tankki Vihreä 0.50x -> 0.50 x 25hp / 1s -> 12.50hp / 1s (12.50hp / osuma) |
---|
29 | Tankki Keltainen 0.75x -> 0.75 x 25hp / 1s -> 18.75hp / 1s (18.75hp / osuma) |
---|
30 | Tankki Punainen 1.00x -> 1.00 x 25hp / 1s -> 25.00hp / 1s (25.00hp / osuma) |
---|
31 | |
---|
32 | Tykki Vihreä 0.50x -> 0.50 x 30hp / 1s -> 15.0hp / 1s (30.00hp / osuma) |
---|
33 | Tykki Keltainen 0.75x -> 0.75 x 30hp / 1s -> 22.5hp / 1s (45.00hp / osuma) |
---|
34 | Tykki Punainen 1.00x -> 1.00 x 30hp / 1s -> 30.0hp / 1s (60.00hp / osuma) |
---|
35 | */ |
---|
36 | |
---|
37 | public class WarTrain : PhysicsGame |
---|
38 | { |
---|
39 | |
---|
40 | SoundEffect Pam1 = LoadSoundEffect("Pam1"); |
---|
41 | SoundEffect Pam2 = LoadSoundEffect("Pam2"); |
---|
42 | SoundEffect Pam3 = LoadSoundEffect("Pam3"); |
---|
43 | SoundEffect JunaTuhoutuuAani = LoadSoundEffect("JunaveturiTuhoutuu"); |
---|
44 | SoundEffect VaunuTuhoutuuAani = LoadSoundEffect("JunavaunuTuhoutuu"); |
---|
45 | Image alueKuva = LoadImage("Alue"); |
---|
46 | Image raideKuva = LoadImage("Junarata"); |
---|
47 | Image sotilasKuva = LoadImage("Sotilas"); |
---|
48 | Image sotilasKuollutKuva = LoadImage("SotilasK"); |
---|
49 | Image sotilasKuvaKeltainen; |
---|
50 | Image sotilasKuvaVihrea; |
---|
51 | Image sotilasKuvaPunainen; |
---|
52 | Image tankkiKuva = LoadImage("Tankki"); |
---|
53 | Image tankkiKuollutKuva = LoadImage("TankkiK"); |
---|
54 | Image tankkiKuvaKeltainen; |
---|
55 | Image tankkiKuvaVihrea; |
---|
56 | Image tankkiKuvaPunainen; |
---|
57 | Image tykkiKuva = LoadImage("Tykki"); |
---|
58 | Image tykkiKuollutKuva = LoadImage("TykkiK"); |
---|
59 | Image tykkiKuvaKeltainen; |
---|
60 | Image tykkiKuvaVihrea; |
---|
61 | Image tykkiKuvaPunainen; |
---|
62 | Image panosKuva1 = LoadImage("Panos1"); |
---|
63 | Image panosKuva2 = LoadImage("Panos2"); |
---|
64 | Image panosKuva3 = LoadImage("Panos3"); |
---|
65 | Image aseKuva1 = LoadImage("Ase1"); |
---|
66 | Image aseKuva2 = LoadImage("Ase2"); |
---|
67 | Image aseKuva3 = LoadImage("Ase3"); |
---|
68 | |
---|
69 | Image[] taustakuvaKuvat = new Image[2]; |
---|
70 | GameObject[] taustakuvat = new GameObject[2]; |
---|
71 | Image[] junarataKuvat = new Image[2]; |
---|
72 | GameObject[] kiskot = new GameObject[2]; |
---|
73 | int ylempiTaustakuva = 1; |
---|
74 | |
---|
75 | public static WarTrain Peli; |
---|
76 | |
---|
77 | Juna juna; |
---|
78 | Timer vihollisAjastin; |
---|
79 | |
---|
80 | IntMeter aikaPelinAlusta = new IntMeter(0); |
---|
81 | Timer peliAikaAjastin; |
---|
82 | int moneskoAlue = 1; |
---|
83 | int VihollisiaAlueella = 5; |
---|
84 | |
---|
85 | EasyHighScore TopLista = new EasyHighScore(); |
---|
86 | |
---|
87 | public IntMeter Pistelaskuri; |
---|
88 | |
---|
89 | public override void Begin() |
---|
90 | { |
---|
91 | Peli = this; |
---|
92 | SetWindowSize(680, 760); |
---|
93 | LuoValikko(); |
---|
94 | } |
---|
95 | |
---|
96 | void LuoTopLista() |
---|
97 | { |
---|
98 | TopLista.Show(); |
---|
99 | Keyboard.Listen(Key.Escape, ButtonState.Pressed, LuoValikko, null).InContext(TopLista.HighScoreWindow); |
---|
100 | } |
---|
101 | |
---|
102 | void LuoValikko() |
---|
103 | { |
---|
104 | ClearAll(); |
---|
105 | |
---|
106 | MediaPlayer.Play("Musa"); |
---|
107 | MediaPlayer.IsRepeating = true; |
---|
108 | MediaPlayer.Volume = 0.5; |
---|
109 | |
---|
110 | Mouse.IsCursorVisible = false; |
---|
111 | MultiSelectWindow Valikko = new MultiSelectWindow("EpicWarTrain", "Uusi peli", "Parhaat tulokset", "Lopeta peli"); |
---|
112 | Level.Background.CreateGradient(Color.DarkGray, Color.DarkJungleGreen); |
---|
113 | Valikko.SetButtonColor(Color.DarkJungleGreen); |
---|
114 | Valikko.SetButtonTextColor(Color.White); |
---|
115 | Valikko.SelectionColor = Color.JungleGreen; |
---|
116 | Valikko.ItemSelected += PainettiinValikonNappia; |
---|
117 | Valikko.DefaultCancel = 3; |
---|
118 | Add(Valikko); |
---|
119 | } |
---|
120 | |
---|
121 | void PainettiinValikonNappia(int NappiValinta) |
---|
122 | { |
---|
123 | switch (NappiValinta) |
---|
124 | { |
---|
125 | case 0: |
---|
126 | LuoKentta("ykkonen"); |
---|
127 | break; |
---|
128 | case 1: |
---|
129 | LuoTopLista(); |
---|
130 | break; |
---|
131 | case 2: |
---|
132 | Exit(); |
---|
133 | break; |
---|
134 | } |
---|
135 | } |
---|
136 | |
---|
137 | void LuoPisteLaskuri() |
---|
138 | { |
---|
139 | Pistelaskuri = new IntMeter(0); |
---|
140 | Label PisteNaytto = new Label(); |
---|
141 | PisteNaytto.X = taustakuvat[0].Right - PisteNaytto.Width - 10; |
---|
142 | PisteNaytto.Title = "Pisteet"; |
---|
143 | PisteNaytto.Y = taustakuvat[0].Top - 50; |
---|
144 | PisteNaytto.Color = Color.Transparent; |
---|
145 | PisteNaytto.BindTo(Pistelaskuri); |
---|
146 | Add(PisteNaytto); |
---|
147 | } |
---|
148 | |
---|
149 | void LuoHPMittari(DoubleMeter meter, Vector paikka, string title) |
---|
150 | { |
---|
151 | Label elamaNaytto = new Label(meter); |
---|
152 | elamaNaytto.DecimalPlaces = 0; |
---|
153 | elamaNaytto.Title = title; |
---|
154 | elamaNaytto.Position = new Vector(taustakuvat[0].Right - elamaNaytto.Width / 2 - 37, paikka.Y); |
---|
155 | elamaNaytto.Color = Color.Transparent; |
---|
156 | Add(elamaNaytto); |
---|
157 | } |
---|
158 | |
---|
159 | void LuoKentta(string kentta) |
---|
160 | { |
---|
161 | ClearAll(); |
---|
162 | Spawnaus.MapLength = 100; |
---|
163 | Spawnaus.Initialize(); |
---|
164 | MediaPlayer.Play("Musa2"); |
---|
165 | MediaPlayer.Volume = 0.1; |
---|
166 | Level.Background.CreateGradient(Color.DarkGray, Color.DarkJungleGreen); |
---|
167 | |
---|
168 | for (int i = 0; i < taustakuvaKuvat.Length; i++) |
---|
169 | { |
---|
170 | taustakuvaKuvat[i] = alueKuva; |
---|
171 | taustakuvat[i] = new GameObject(taustakuvaKuvat[i]); |
---|
172 | taustakuvat[i].Size = new Vector(Screen.Width + 25, Screen.Height + 25); |
---|
173 | Add(taustakuvat[i], -3); |
---|
174 | |
---|
175 | junarataKuvat[i] = raideKuva; |
---|
176 | kiskot[i] = new GameObject(junarataKuvat[i]); |
---|
177 | kiskot[i].Size = new Vector(kiskot[i].Width * 2, Screen.Height + 25); |
---|
178 | Add(kiskot[i], -2); |
---|
179 | } |
---|
180 | |
---|
181 | taustakuvat[0].Position = Vector.Zero; |
---|
182 | taustakuvat[1].Position = taustakuvat[0].Position + new Vector(0.0, taustakuvat[0].Height); |
---|
183 | |
---|
184 | kiskot[0].Position = Vector.Zero; |
---|
185 | kiskot[1].Position = kiskot[0].Position + new Vector(0.0, kiskot[0].Height); |
---|
186 | |
---|
187 | sotilasKuvaPunainen = VaihdaVari(sotilasKuva, Color.Gold, Color.DarkRed); |
---|
188 | sotilasKuvaKeltainen = sotilasKuva; |
---|
189 | sotilasKuvaVihrea = VaihdaVari(sotilasKuva, Color.Gold, Color.ForestGreen); |
---|
190 | tankkiKuvaPunainen = VaihdaVari(tankkiKuva, Color.Gold, Color.DarkRed); |
---|
191 | tankkiKuvaKeltainen = tankkiKuva; |
---|
192 | tankkiKuvaVihrea = VaihdaVari(tankkiKuva, Color.Gold, Color.ForestGreen); |
---|
193 | tykkiKuvaPunainen = VaihdaVari(tykkiKuva, Color.Gold, Color.DarkRed); |
---|
194 | tykkiKuvaKeltainen = tykkiKuva; |
---|
195 | tykkiKuvaVihrea = VaihdaVari(tykkiKuva, Color.Gold, Color.ForestGreen); |
---|
196 | |
---|
197 | //Layers[-3].RelativeTransition = new Vector(0.5, 0.5); |
---|
198 | LuoJuna(); |
---|
199 | Camera.Follow(juna.Veturi); |
---|
200 | Camera.FollowOffset = new Vector(0.0, Screen.Top - juna.Veturi.Height); |
---|
201 | |
---|
202 | for (int i = 0; i < 1; i++) |
---|
203 | { |
---|
204 | Vaunu v = new Vaunu(LoadImage("Junavaunu"), 500); |
---|
205 | juna.LisaaVaunu(v); |
---|
206 | } |
---|
207 | Ase kk = new Ase(aseKuva1.Width, aseKuva1.Height, 12.50); |
---|
208 | kk.FireRate = 4; |
---|
209 | kk.InfiniteAmmo = true; |
---|
210 | kk.Image = aseKuva1; |
---|
211 | kk.Size *= 2; |
---|
212 | kk.AmmuksenKuva = panosKuva1; |
---|
213 | kk.AttackSound = Pam1; |
---|
214 | juna.Vaunut[0].LisaaAse(kk, new Vector(0.0, juna.Vaunut[0].Height / 3)); |
---|
215 | |
---|
216 | Ase pieniTykki = new Ase(aseKuva2.Width, aseKuva2.Height, 31.25); |
---|
217 | pieniTykki.FireRate = 2; |
---|
218 | pieniTykki.InfiniteAmmo = true; |
---|
219 | pieniTykki.Image = aseKuva2; |
---|
220 | pieniTykki.Size *= 2; |
---|
221 | pieniTykki.AmmuksenKuva = panosKuva2; |
---|
222 | pieniTykki.AttackSound = Pam2; |
---|
223 | juna.Vaunut[0].LisaaAse(pieniTykki, new Vector(0.0, kk.Position.Y - juna.Vaunut[0].Height / 3)); |
---|
224 | |
---|
225 | Ase isoTykki = new Ase(aseKuva3.Width, aseKuva3.Height, 75.00); |
---|
226 | isoTykki.FireRate = 1; |
---|
227 | isoTykki.InfiniteAmmo = true; |
---|
228 | isoTykki.Image = aseKuva3; |
---|
229 | isoTykki.Size *= 2; |
---|
230 | isoTykki.AmmuksenKuva = panosKuva3; |
---|
231 | isoTykki.AttackSound = Pam3; |
---|
232 | juna.Vaunut[0].LisaaAse(isoTykki, new Vector(0.0, pieniTykki.Position.Y - juna.Vaunut[0].Height / 3)); |
---|
233 | |
---|
234 | AsetaOhjaimet(); |
---|
235 | |
---|
236 | peliAikaAjastin = new Timer(); |
---|
237 | peliAikaAjastin.Interval = 1.0; |
---|
238 | peliAikaAjastin.Timeout += delegate { aikaPelinAlusta.Value++; }; |
---|
239 | peliAikaAjastin.Start(); |
---|
240 | SmoothTextures = false; |
---|
241 | LuoPisteLaskuri(); |
---|
242 | |
---|
243 | Vector ylimmanMittarinPaikka = new Vector(0.0, taustakuvat[0].Top - 100); |
---|
244 | LuoHPMittari(juna.Veturi.Elamat, ylimmanMittarinPaikka, "Veturi"); |
---|
245 | |
---|
246 | for (int i = 0; i < juna.Vaunut.Count; i++) |
---|
247 | { |
---|
248 | ylimmanMittarinPaikka += new Vector(0.0, -50.0); |
---|
249 | LuoHPMittari(juna.Vaunut[i].Elamat, ylimmanMittarinPaikka, "Vaunu"); |
---|
250 | } |
---|
251 | } |
---|
252 | |
---|
253 | protected override void Update(Time time) |
---|
254 | { |
---|
255 | if (taustakuvat == null || taustakuvat[0] == null) |
---|
256 | { |
---|
257 | base.Update(time); |
---|
258 | return; |
---|
259 | } |
---|
260 | |
---|
261 | if (taustakuvat[ylempiTaustakuva].Position.Y <= Camera.ScreenToWorld(Screen.Center).Y) |
---|
262 | { |
---|
263 | int toinenTaustakuva; |
---|
264 | if (ylempiTaustakuva == 0) |
---|
265 | toinenTaustakuva = 1; |
---|
266 | else toinenTaustakuva = 0; |
---|
267 | taustakuvat[toinenTaustakuva].Position = new Vector(0.0, taustakuvat[ylempiTaustakuva].Position.Y + taustakuvat[ylempiTaustakuva].Height); |
---|
268 | kiskot[toinenTaustakuva].Position = new Vector(0.0, kiskot[ylempiTaustakuva].Position.Y + kiskot[ylempiTaustakuva].Height); |
---|
269 | moneskoAlue++; |
---|
270 | SpawnaaVihollisia(taustakuvat[toinenTaustakuva].Position); |
---|
271 | ylempiTaustakuva = toinenTaustakuva; |
---|
272 | } |
---|
273 | |
---|
274 | base.Update(time); |
---|
275 | } |
---|
276 | |
---|
277 | public void PeliPaattyi() |
---|
278 | { |
---|
279 | TopLista.EnterAndShow(Pistelaskuri.Value); |
---|
280 | TopLista.EnterText = "Kirjoita nimesi:"; |
---|
281 | TopLista.HighScoreWindow.OKButton.Clicked += LuoValikko; |
---|
282 | Keyboard.Listen(Key.Escape, ButtonState.Pressed, LuoValikko, null).InContext(TopLista.HighScoreWindow); |
---|
283 | } |
---|
284 | |
---|
285 | |
---|
286 | void SpawnaaVihollisia(Vector keskipiste) |
---|
287 | { |
---|
288 | EnemyLevel soldierLevel = Spawnaus.GetEnemyLevelAt(moneskoAlue, EnemyType.Soldier); |
---|
289 | EnemyLevel tankLevel = Spawnaus.GetEnemyLevelAt(moneskoAlue, EnemyType.Tank); |
---|
290 | EnemyLevel cannonLevel = Spawnaus.GetEnemyLevelAt(moneskoAlue, EnemyType.Cannon); |
---|
291 | Dictionary<EnemyType, int> spawnProbabilities = Spawnaus.GetProbabilities(moneskoAlue); |
---|
292 | int soldierProbs; |
---|
293 | spawnProbabilities.TryGetValue(EnemyType.Soldier, out soldierProbs); |
---|
294 | int tankProbs; |
---|
295 | spawnProbabilities.TryGetValue(EnemyType.Tank, out tankProbs); |
---|
296 | int cannonProbs; |
---|
297 | spawnProbabilities.TryGetValue(EnemyType.Cannon, out cannonProbs); |
---|
298 | |
---|
299 | |
---|
300 | for (int i = 0; i < VihollisiaAlueella; i++) |
---|
301 | { |
---|
302 | int vihuTyyppi = RandomGen.NextIntWithProbabilities((double)soldierProbs / 100.0, (double)tankProbs / 100.0, (double)cannonProbs / 100.0); // 0 sotilas, 1 tankki, 2 tykki |
---|
303 | |
---|
304 | Vector paikka = RandomGen.NextVector(Screen.Left + 70, Camera.ScreenToWorld(new Vector(0.0, Screen.Top)).Y, Screen.Right - 70, Camera.ScreenToWorld(new Vector(0.0, Screen.Top)).Y + Screen.Height); |
---|
305 | |
---|
306 | switch (vihuTyyppi) |
---|
307 | { |
---|
308 | case 0: |
---|
309 | LuoVihollinen(EnemyType.Soldier, soldierLevel, paikka); |
---|
310 | break; |
---|
311 | case 1: |
---|
312 | LuoVihollinen(EnemyType.Tank, tankLevel, paikka); |
---|
313 | break; |
---|
314 | case 2: |
---|
315 | LuoVihollinen(EnemyType.Cannon, cannonLevel, paikka); |
---|
316 | break; |
---|
317 | default: |
---|
318 | // mitään ei voi spawnata |
---|
319 | break; |
---|
320 | } |
---|
321 | } |
---|
322 | } |
---|
323 | |
---|
324 | void LuoVihollinen(EnemyType type, EnemyLevel level, Vector paikka) |
---|
325 | { |
---|
326 | switch (type) |
---|
327 | { |
---|
328 | case EnemyType.Soldier: |
---|
329 | LuoSotilas(level, paikka); |
---|
330 | break; |
---|
331 | case EnemyType.Tank: |
---|
332 | LuoTankki(level, paikka); |
---|
333 | break; |
---|
334 | case EnemyType.Cannon: |
---|
335 | LuoTykki(level, paikka); |
---|
336 | break; |
---|
337 | default: |
---|
338 | break; |
---|
339 | } |
---|
340 | } |
---|
341 | |
---|
342 | void LuoSotilas(EnemyLevel level, Vector paikka) |
---|
343 | { |
---|
344 | switch (level) |
---|
345 | { |
---|
346 | case EnemyLevel.Green: |
---|
347 | Vihollinen vihrea = new Vihollinen(16, 16, 10.0, 5.00, 0.5); |
---|
348 | vihrea.Image = sotilasKuvaVihrea; |
---|
349 | vihrea.Position = paikka; |
---|
350 | vihrea.Ase.AmmuksenKuva = panosKuva1; |
---|
351 | vihrea.Ase.AttackSound = Pam1; |
---|
352 | vihrea.TuhoutumisEfektiKuva = sotilasKuollutKuva; |
---|
353 | Add(vihrea); |
---|
354 | break; |
---|
355 | case EnemyLevel.Yellow: |
---|
356 | Vihollinen keltainen = new Vihollinen(16, 16, 12.5, 7.50, 0.5); |
---|
357 | keltainen.Image = sotilasKuvaKeltainen; |
---|
358 | keltainen.Position = paikka; |
---|
359 | keltainen.Ase.AmmuksenKuva = panosKuva1; |
---|
360 | keltainen.Ase.AttackSound = Pam1; |
---|
361 | keltainen.TuhoutumisEfektiKuva = sotilasKuollutKuva; |
---|
362 | Add(keltainen); |
---|
363 | break; |
---|
364 | case EnemyLevel.Red: |
---|
365 | Vihollinen punainen = new Vihollinen(16, 16, 15.0, 10.00, 0.5); |
---|
366 | punainen.Image = sotilasKuvaPunainen; |
---|
367 | punainen.Position = paikka; |
---|
368 | punainen.Ase.AmmuksenKuva = panosKuva1; |
---|
369 | punainen.Ase.AttackSound = Pam1; |
---|
370 | punainen.TuhoutumisEfektiKuva = sotilasKuollutKuva; |
---|
371 | Add(punainen); |
---|
372 | break; |
---|
373 | default: |
---|
374 | break; |
---|
375 | } |
---|
376 | } |
---|
377 | |
---|
378 | void LuoTankki(EnemyLevel level, Vector paikka) |
---|
379 | { |
---|
380 | switch (level) |
---|
381 | { |
---|
382 | case EnemyLevel.Green: |
---|
383 | Vihollinen vihrea = new Vihollinen(48, 32, 25.0, 12.5, 1.0); |
---|
384 | vihrea.Image = tankkiKuvaVihrea; |
---|
385 | vihrea.Position = paikka; |
---|
386 | vihrea.Ase.AmmuksenKuva = panosKuva2; |
---|
387 | vihrea.Ase.AttackSound = Pam2; |
---|
388 | vihrea.TuhoutumisEfektiKuva = tankkiKuollutKuva; |
---|
389 | Add(vihrea); |
---|
390 | break; |
---|
391 | case EnemyLevel.Yellow: |
---|
392 | Vihollinen keltainen = new Vihollinen(48, 32, 31.25, 18.75, 1.0); |
---|
393 | keltainen.Image = tankkiKuvaKeltainen; |
---|
394 | keltainen.Position = paikka; |
---|
395 | keltainen.Ase.AmmuksenKuva = panosKuva2; |
---|
396 | keltainen.Ase.AttackSound = Pam2; |
---|
397 | keltainen.TuhoutumisEfektiKuva = tankkiKuollutKuva; |
---|
398 | Add(keltainen); |
---|
399 | break; |
---|
400 | case EnemyLevel.Red: |
---|
401 | Vihollinen punainen = new Vihollinen(48, 32, 37.5, 25, 1.0); |
---|
402 | punainen.Image = tankkiKuvaPunainen; |
---|
403 | punainen.Position = paikka; |
---|
404 | punainen.Ase.AmmuksenKuva = panosKuva2; |
---|
405 | punainen.Ase.AttackSound = Pam2; |
---|
406 | punainen.TuhoutumisEfektiKuva = tankkiKuollutKuva; |
---|
407 | Add(punainen); |
---|
408 | break; |
---|
409 | default: |
---|
410 | break; |
---|
411 | } |
---|
412 | |
---|
413 | } |
---|
414 | |
---|
415 | void LuoTykki(EnemyLevel level, Vector paikka) |
---|
416 | { |
---|
417 | switch (level) |
---|
418 | { |
---|
419 | case EnemyLevel.Green: |
---|
420 | Vihollinen vihrea = new Vihollinen(48, 32, 60.0, 30.0, 2.0); |
---|
421 | vihrea.Image = tykkiKuvaVihrea; |
---|
422 | vihrea.Position = paikka; |
---|
423 | vihrea.Ase.AmmuksenKuva = panosKuva3; |
---|
424 | vihrea.Ase.AttackSound = Pam3; |
---|
425 | vihrea.TuhoutumisEfektiKuva = tykkiKuollutKuva; |
---|
426 | Add(vihrea); |
---|
427 | break; |
---|
428 | case EnemyLevel.Yellow: |
---|
429 | Vihollinen keltainen = new Vihollinen(48, 32, 75.0, 45.0, 2.0); |
---|
430 | keltainen.Image = tykkiKuvaKeltainen; |
---|
431 | keltainen.Position = paikka; |
---|
432 | keltainen.Ase.AmmuksenKuva = panosKuva3; |
---|
433 | keltainen.Ase.AttackSound = Pam3; |
---|
434 | keltainen.TuhoutumisEfektiKuva = tykkiKuollutKuva; |
---|
435 | Add(keltainen); |
---|
436 | break; |
---|
437 | case EnemyLevel.Red: |
---|
438 | Vihollinen punainen = new Vihollinen(48, 32, 90.0, 60.0, 2.0); |
---|
439 | punainen.Image = tykkiKuvaPunainen; |
---|
440 | punainen.Position = paikka; |
---|
441 | punainen.Ase.AmmuksenKuva = panosKuva3; |
---|
442 | punainen.Ase.AttackSound = Pam3; |
---|
443 | punainen.TuhoutumisEfektiKuva = tykkiKuollutKuva; |
---|
444 | Add(punainen); |
---|
445 | break; |
---|
446 | default: |
---|
447 | break; |
---|
448 | } |
---|
449 | } |
---|
450 | |
---|
451 | Image VaihdaVari(Image kuva, Color vaihdettava, Color miksiVaihdetaan) |
---|
452 | { |
---|
453 | Image k = kuva.Clone(); |
---|
454 | k.ReplaceColor(vaihdettava, miksiVaihdetaan); |
---|
455 | return k; |
---|
456 | } |
---|
457 | |
---|
458 | void LuoJuna() |
---|
459 | { |
---|
460 | juna = new Juna(500, LoadImage("Junaveturi")); |
---|
461 | } |
---|
462 | |
---|
463 | void JunaTuhoutui() |
---|
464 | { |
---|
465 | juna.Veturi.Elamat.Value = 0; |
---|
466 | JunaTuhoutuuAani.Play(); |
---|
467 | VaunuTuhoutuuAani.Play(); |
---|
468 | TopLista.Show(); |
---|
469 | } |
---|
470 | |
---|
471 | |
---|
472 | void AsetaOhjaimet() |
---|
473 | { |
---|
474 | Keyboard.Listen(Key.W, ButtonState.Down, juna.Liiku, null, 5000.0); |
---|
475 | Keyboard.Listen(Key.S, ButtonState.Down, juna.Liiku, null, -10000.0); |
---|
476 | Keyboard.Listen(Key.Up, ButtonState.Down, juna.Liiku, null, 5000.0); |
---|
477 | Keyboard.Listen(Key.Down, ButtonState.Down, juna.Liiku, null, -10000.0); |
---|
478 | Keyboard.Listen(Key.R, ButtonState.Pressed, delegate { MessageDisplay.Add(Mouse.PositionOnWorld.ToString()); }, null); |
---|
479 | Keyboard.Listen(Key.Escape, ButtonState.Pressed, LuoValikko, null); |
---|
480 | Keyboard.Listen(Key.K, ButtonState.Pressed, JunaTuhoutui, null); |
---|
481 | Mouse.Listen(MouseButton.Left, ButtonState.Down, Ammu, null); |
---|
482 | Keyboard.Listen(Key.F1, ButtonState.Pressed, delegate { EnabloiAse(0); }, null); |
---|
483 | Keyboard.Listen(Key.F2, ButtonState.Pressed, delegate { EnabloiAse(1); }, null); |
---|
484 | Keyboard.Listen(Key.F3, ButtonState.Pressed, delegate { EnabloiAse(2); }, null); |
---|
485 | Keyboard.Listen(Key.L, ButtonState.Pressed, delegate { |
---|
486 | for (int i = 0; i < juna.Vaunut.Count; i++) |
---|
487 | juna.Vaunut[i].Elamat.Value += 1000; |
---|
488 | juna.Veturi.Elamat.Value += 1000; |
---|
489 | }, null); |
---|
490 | } |
---|
491 | |
---|
492 | void Ammu() |
---|
493 | { |
---|
494 | for (int i = 0; i < juna.Vaunut.Count; i++) |
---|
495 | { |
---|
496 | juna.Vaunut[i].Ammu(); |
---|
497 | } |
---|
498 | } |
---|
499 | |
---|
500 | void EnabloiAse(int ase) |
---|
501 | { |
---|
502 | for (int i = 0; i < juna.Vaunut.Count; i++) |
---|
503 | { |
---|
504 | if (ase < 0 || ase > juna.Vaunut[i].Aseet.Count) continue; |
---|
505 | |
---|
506 | juna.Vaunut[i].Aseet[ase].IsEnabled = !juna.Vaunut[i].Aseet[ase].IsEnabled; |
---|
507 | } |
---|
508 | } |
---|
509 | } |
---|