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 | public class turhakepeli : PhysicsGame |
---|
10 | { |
---|
11 | |
---|
12 | int kenttaNro = 1; |
---|
13 | IntMeter vihollistenMaara = new IntMeter(0, 0, 0); |
---|
14 | IntMeter ampumisLaskuri = new IntMeter(0, 0, 10); |
---|
15 | public PhysicsObject pelaaja; |
---|
16 | PhysicsObject turhake; |
---|
17 | PhysicsObject muuri; |
---|
18 | Image pullo2 = LoadImage("pullo2"); |
---|
19 | Image hahmo = LoadImage("pelaaja"); |
---|
20 | Image valikonKuva = LoadImage("valikko"); |
---|
21 | Image hyokkauksenKuva = LoadImage("hyokkaus"); |
---|
22 | Image alaseina = LoadImage("ala"); |
---|
23 | Image sivuseina = LoadImage("sivu"); |
---|
24 | Image OikeaYla = LoadImage("oikeaYla"); |
---|
25 | Image oikeaSeina = LoadImage("sivuOikea"); |
---|
26 | Image OikeaAla = LoadImage("oikeaAla"); |
---|
27 | Image VasenAla = LoadImage("vasenAla"); |
---|
28 | Image VasenYla = LoadImage("vasenYla"); |
---|
29 | Image hahmoHyokkaa = LoadImage("pelaajaHyokkaa"); |
---|
30 | Image kuollut = LoadImage("kuollut"); |
---|
31 | Image enkanKuva = LoadImage("enkka"); |
---|
32 | Image pullo = LoadImage("pullo"); |
---|
33 | Image Laatikko = LoadImage("laatikko"); |
---|
34 | Image Laatikko2 = LoadImage("laatikko2"); |
---|
35 | Image Laatikko3 = LoadImage("laatikko3"); |
---|
36 | Image Laatikko4 = LoadImage("laatikko4"); |
---|
37 | Image Laatikko5 = LoadImage("laatikko5"); |
---|
38 | Image Miekka = LoadImage("miekka"); |
---|
39 | Image ylempiOikeaYla = LoadImage("YlempiOikeaYla"); |
---|
40 | Image ylempiVasenYla = LoadImage("YlempiVasenYla"); |
---|
41 | Image ylempiOikeaAla = LoadImage("YlempiOikeaAla"); |
---|
42 | Image ylempiVasenAla = LoadImage("YlempiVasenAla"); |
---|
43 | Image ylempiKeski = LoadImage("YlempiKeski"); |
---|
44 | Image sarvikypara = LoadImage("sarvikypara"); |
---|
45 | Image PatsasYla = LoadImage("PatsasYla"); |
---|
46 | Image PatsasAla = LoadImage("PatsasAla"); |
---|
47 | Image alaOsanKuva = LoadImage("laatikkoAla"); |
---|
48 | Image ylaOsanKuva = LoadImage("laatikkoYla"); |
---|
49 | Image Kalja = LoadImage("kalja"); |
---|
50 | Image LaatikkoYla2 = LoadImage("laatikkoYla2"); |
---|
51 | Image LaatikkoAla2 = LoadImage("laatikkoAla2"); |
---|
52 | Image LaatikkoAla3 = LoadImage("laatikkoAla3"); |
---|
53 | Image LaatikkoYla3 = LoadImage("laatikkoYla3"); |
---|
54 | Image ammuksenKuva = LoadImage("banana"); |
---|
55 | Image pimeysKuva = LoadImage("pimeys"); |
---|
56 | |
---|
57 | FollowerBrain seuraajanAivot; |
---|
58 | |
---|
59 | bool saakoAmpua = true; |
---|
60 | |
---|
61 | |
---|
62 | |
---|
63 | DoubleMeter enkkaLaskuri; |
---|
64 | DoubleMeter energiaLaskuri; |
---|
65 | const double TIILENLEVEYS = 60; |
---|
66 | const double TIILENKORKEUS = 60; |
---|
67 | |
---|
68 | |
---|
69 | |
---|
70 | int animaatioKaynnissa = 0; |
---|
71 | private Image[] hahmonLiikeYlos = LoadImages("pelaajaTakaa01", "pelaajaTakaa02"); |
---|
72 | private Image[] hahmonLiikeAlas = LoadImages("hahmo01", "hahmo02"); |
---|
73 | private Image[] hahmonLiikeOikea = LoadImages("pelaajaOikea", "pelaajaOikea01","pelaajaOikea" ,"pelaajaOikea02"); |
---|
74 | private Image[] hahmonLiikeVasen = LoadImages("pelaajaVasen", "pelaajaVasen01", "pelaajaVasen", "pelaajaVasen02"); |
---|
75 | |
---|
76 | |
---|
77 | Image taustaKuva = LoadImage("maa"); |
---|
78 | Timer energianKasvattaja; |
---|
79 | |
---|
80 | public override void Begin() |
---|
81 | { |
---|
82 | //SetWindowSize(1900, 1060, false); |
---|
83 | IsFullScreen = false; |
---|
84 | AloitaPeli(); |
---|
85 | |
---|
86 | //Level.Size = Screen.Size; |
---|
87 | |
---|
88 | } |
---|
89 | |
---|
90 | |
---|
91 | void LisaaOhjaimet() |
---|
92 | { |
---|
93 | PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); |
---|
94 | |
---|
95 | //Keyboard.Listen(Key.D, ButtonState.Down, HahmonAnimaatioOikea, null, hahmonLiikeOikea); |
---|
96 | //Keyboard.Listen(Key.D, ButtonState.Released, AnimaatioLopetus, null); |
---|
97 | |
---|
98 | //Keyboard.Listen(Key.A, ButtonState.Down, HahmonAnimaatioVasen, null, hahmonLiikeVasen); |
---|
99 | //Keyboard.Listen(Key.A, ButtonState.Released, AnimaatioLopetus, null); |
---|
100 | |
---|
101 | //Keyboard.Listen(Key.S, ButtonState.Down, HahmonAnimaatio, null, hahmonLiikeAlas); |
---|
102 | //Keyboard.Listen(Key.S, ButtonState.Released, AnimaatioLopetus, null); |
---|
103 | |
---|
104 | //Keyboard.Listen(Key.W, ButtonState.Down, HahmonAnimaatioYlos, null, hahmonLiikeYlos); |
---|
105 | //Keyboard.Listen(Key.W, ButtonState.Released, AnimaatioLopetus, null); |
---|
106 | |
---|
107 | Keyboard.Listen(Key.W, ButtonState.Down, HahmonAnimaatio, null, 3); |
---|
108 | //Keyboard.Listen(Key.W, ButtonState.Released, AnimaatioLopetus, null, 3); |
---|
109 | Keyboard.Listen(Key.A, ButtonState.Down, HahmonAnimaatio, null, 2); |
---|
110 | //Keyboard.Listen(Key.A, ButtonState.Released, AnimaatioLopetus, null, 2); |
---|
111 | Keyboard.Listen(Key.S, ButtonState.Down, HahmonAnimaatio, null, 4); |
---|
112 | //Keyboard.Listen(Key.S, ButtonState.Released, AnimaatioLopetus, null, 4); |
---|
113 | Keyboard.Listen(Key.D, ButtonState.Down, HahmonAnimaatio, null, 1); |
---|
114 | //Keyboard.Listen(Key.D, ButtonState.Released, AnimaatioLopetus, null, 1); |
---|
115 | |
---|
116 | //Keyboard.Listen(Key.W, ButtonState.Released, AnimaatioLopetus, null); |
---|
117 | |
---|
118 | Keyboard.Listen(Key.W, ButtonState.Down, Liiku, null, new Vector(0, 800)); |
---|
119 | //Keyboard.Listen(Key.W, ButtonState.Released, Liiku, null, Vector.Zero); |
---|
120 | Keyboard.Listen(Key.S, ButtonState.Down, Liiku, null, new Vector(0, -800)); |
---|
121 | //Keyboard.Listen(Key.S, ButtonState.Released, Liiku, null, Vector.Zero); |
---|
122 | Keyboard.Listen(Key.D, ButtonState.Down, Liiku, null, new Vector(800, 0)); |
---|
123 | Keyboard.Listen(Key.D, ButtonState.Released, Liiku, null, Vector.Zero); |
---|
124 | Keyboard.Listen(Key.A, ButtonState.Down, Liiku, null, new Vector(-800, 0)); |
---|
125 | Keyboard.Listen(Key.A, ButtonState.Released, Liiku, null, Vector.Zero); |
---|
126 | Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyokkaa, null); |
---|
127 | //Keyboard.Listen(Key.LeftShift, ButtonState.Down, Lataa, null); |
---|
128 | //Keyboard.Listen(Key.LeftShift, ButtonState.Released, Ammu, null); |
---|
129 | Keyboard.Listen(Key.Up, ButtonState.Down, LuoAmmus, null, new Vector(0, 50000)); |
---|
130 | Keyboard.Listen(Key.Down, ButtonState.Down, LuoAmmus, null, new Vector(0, -50000)); |
---|
131 | Keyboard.Listen(Key.Left, ButtonState.Down, LuoAmmus, null, new Vector(-50000, 0)); |
---|
132 | Keyboard.Listen(Key.Right, ButtonState.Down, LuoAmmus, null, new Vector(50000, 0)); |
---|
133 | |
---|
134 | |
---|
135 | |
---|
136 | |
---|
137 | |
---|
138 | |
---|
139 | |
---|
140 | Keyboard.Listen(Key.Escape, ButtonState.Pressed, KysyPoistumista, "Lopeta peli"); |
---|
141 | } |
---|
142 | |
---|
143 | |
---|
144 | |
---|
145 | void LuoAmmus(Vector suunta) |
---|
146 | { |
---|
147 | if (!energianKasvattaja.Enabled) |
---|
148 | { |
---|
149 | energianKasvattaja.Start(); |
---|
150 | } |
---|
151 | if (energiaLaskuri.Value > 0) |
---|
152 | { |
---|
153 | |
---|
154 | if (saakoAmpua == true) |
---|
155 | { |
---|
156 | PhysicsObject ammus = new PhysicsObject(40.0, 40.0); |
---|
157 | ammus.Position = pelaaja.Position; |
---|
158 | ammus.Tag = "ammus"; |
---|
159 | ammus.Push(suunta); |
---|
160 | ammus.CollisionIgnoreGroup = 5; |
---|
161 | ammus.CanRotate = false; |
---|
162 | ammus.LifetimeLeft = TimeSpan.FromSeconds(1.0); |
---|
163 | ammus.Image = ammuksenKuva; |
---|
164 | Add(ammus); |
---|
165 | |
---|
166 | energiaLaskuri.Value -= 1; |
---|
167 | |
---|
168 | AddCollisionHandler(ammus, "vihu", HyokkausOsuu); |
---|
169 | AddCollisionHandler(ammus, "laatikko", HyokkausOsuu); |
---|
170 | AddCollisionHandler(ammus, "potionLaatikko", HyokkausOsuu); |
---|
171 | AddCollisionHandler(ammus, "manaLaatikko", HyokkausOsuu); |
---|
172 | AddCollisionHandler(ammus, "muuri", HyokkausOsuu); |
---|
173 | |
---|
174 | saakoAmpua = false; |
---|
175 | |
---|
176 | Timer.SingleShot(0.5, delegate { saakoAmpua = true; }); |
---|
177 | |
---|
178 | } |
---|
179 | } |
---|
180 | |
---|
181 | } |
---|
182 | |
---|
183 | void Lataa() |
---|
184 | { |
---|
185 | |
---|
186 | ampumisLaskuri.Value++; |
---|
187 | |
---|
188 | } |
---|
189 | |
---|
190 | void HahmonAnimaatio(int suunta) |
---|
191 | { |
---|
192 | //if (animaatioKaynnissa != 0) |
---|
193 | //{ |
---|
194 | // if (animaatioKaynnissa == suunta) |
---|
195 | // return; |
---|
196 | //} |
---|
197 | switch (suunta) |
---|
198 | { |
---|
199 | case 1: |
---|
200 | pelaaja.Animation = new Animation(hahmonLiikeOikea); |
---|
201 | animaatioKaynnissa = 1; |
---|
202 | break; |
---|
203 | case 2: |
---|
204 | pelaaja.Animation = new Animation(hahmonLiikeVasen); |
---|
205 | animaatioKaynnissa = 2; |
---|
206 | break; |
---|
207 | case 3: |
---|
208 | pelaaja.Animation = new Animation(hahmonLiikeYlos); |
---|
209 | animaatioKaynnissa = 3; |
---|
210 | break; |
---|
211 | case 4: |
---|
212 | pelaaja.Animation = new Animation(hahmonLiikeAlas); |
---|
213 | animaatioKaynnissa = 4; |
---|
214 | break; |
---|
215 | default: |
---|
216 | break; |
---|
217 | } |
---|
218 | pelaaja.Animation.FPS = 5; |
---|
219 | pelaaja.Animation.Start(); |
---|
220 | } |
---|
221 | |
---|
222 | void HahmonAnimaatioOikea(Image[] hahmonLiikeOikea) |
---|
223 | { |
---|
224 | if (pelaaja.Velocity != Vector.Zero) return; |
---|
225 | pelaaja.Animation = new Animation(hahmonLiikeOikea); |
---|
226 | pelaaja.Animation.FPS = 5; |
---|
227 | pelaaja.Animation.Start(); |
---|
228 | } |
---|
229 | |
---|
230 | void HahmonAnimaatioVasen(Image[] hahmonLiikeVasen) |
---|
231 | { |
---|
232 | if (pelaaja.Velocity != Vector.Zero) return; |
---|
233 | pelaaja.Animation = new Animation(hahmonLiikeVasen); |
---|
234 | pelaaja.Animation.FPS = 5; |
---|
235 | pelaaja.Animation.Start(); |
---|
236 | } |
---|
237 | |
---|
238 | void Liiku(Vector vektori) |
---|
239 | { |
---|
240 | if (vektori == Vector.Zero) |
---|
241 | { |
---|
242 | pelaaja.Velocity = Vector.Zero; |
---|
243 | // int apu = 1; |
---|
244 | // int kierrokset = 1; |
---|
245 | // Timer pelaajanPysayttaja = new Timer(); |
---|
246 | // pelaajanPysayttaja.Interval = 0.1; |
---|
247 | // pelaajanPysayttaja.Timeout += delegate |
---|
248 | // { |
---|
249 | // apu++; |
---|
250 | // pelaaja.Velocity = pelaaja.Velocity / 100; |
---|
251 | // if (apu == kierrokset) pelaaja.Velocity = Vector.Zero; |
---|
252 | // }; |
---|
253 | // pelaajanPysayttaja.Start(kierrokset); |
---|
254 | |
---|
255 | } |
---|
256 | pelaaja.Push(vektori); |
---|
257 | } |
---|
258 | void KysyPoistumista() |
---|
259 | { |
---|
260 | IsPaused = true; |
---|
261 | MultiSelectWindow valikko = new MultiSelectWindow("Pause", "back to game", "quit game"); |
---|
262 | valikko.AddItemHandler(1, Exit); |
---|
263 | valikko.AddItemHandler(0, delegate { IsPaused = false; }); |
---|
264 | //valikko.Color = Color.Black; |
---|
265 | valikko.Color = Color.Transparent; |
---|
266 | valikko.SelectionColor = Color.Black; |
---|
267 | valikko.Image = valikonKuva; |
---|
268 | valikko.X = 250; |
---|
269 | valikko.Y = 150; |
---|
270 | Add(valikko); |
---|
271 | } |
---|
272 | void SeuraavaKentta() |
---|
273 | { |
---|
274 | |
---|
275 | } |
---|
276 | |
---|
277 | void LuoKentta(string kenttaTiedostonNimi) |
---|
278 | { |
---|
279 | //ClearAll(); |
---|
280 | |
---|
281 | |
---|
282 | vihollistenMaara = new IntMeter(0, 0, 0); |
---|
283 | vihollistenMaara.Value = 0; |
---|
284 | vihollistenMaara.MaxValue = 0; |
---|
285 | vihollistenMaara.MinValue = 0; |
---|
286 | Level.Background.Image = taustaKuva; |
---|
287 | |
---|
288 | |
---|
289 | pelaaja = new PhysicsObject(TIILENLEVEYS, TIILENKORKEUS); |
---|
290 | |
---|
291 | |
---|
292 | ColorTileMap ruudut = ColorTileMap.FromLevelAsset(kenttaTiedostonNimi); |
---|
293 | |
---|
294 | |
---|
295 | |
---|
296 | // |
---|
297 | |
---|
298 | |
---|
299 | //if (kenttaNro == 1) LuoKentta("kentta1"); |
---|
300 | //else if (kenttaNro == 2) LuoKentta("kentta2"); |
---|
301 | //else if (kenttaNro == 3) LuoKentta("kentta3"); |
---|
302 | //else if (kenttaNro > 3) Exit(); |
---|
303 | |
---|
304 | |
---|
305 | |
---|
306 | // |
---|
307 | |
---|
308 | |
---|
309 | //ColorTileMap ruudut = ColorTileMap.FromLevelAsset(RandomGen.SelectOne( |
---|
310 | // //"kentta", |
---|
311 | // "kentta02", |
---|
312 | // //"kentta03", |
---|
313 | // //"kentta04", |
---|
314 | // "kentta05" |
---|
315 | // )); |
---|
316 | |
---|
317 | //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa. |
---|
318 | ruudut.SetTileMethod(Color.Blue, LuoPelaaja); |
---|
319 | ruudut.SetTileMethod(Color.Black, LuoSivuseina); |
---|
320 | ruudut.SetTileMethod(Color.Red, LuoAlaseina); |
---|
321 | ruudut.SetTileMethod(Color.White, LuoOikeaYla); |
---|
322 | ruudut.SetTileMethod(Color.Yellow, LuoOikea); |
---|
323 | ruudut.SetTileMethod(new Color(138, 138, 138), LuoOikeaAla); |
---|
324 | ruudut.SetTileMethod(new Color(155, 0, 255), LuoVasenAla); |
---|
325 | ruudut.SetTileMethod(new Color(255, 145, 0), LuoVasenYla); |
---|
326 | ruudut.SetTileMethod(new Color(127, 0, 55), LuoVihollinen); |
---|
327 | ruudut.SetTileMethod(new Color(255, 168, 255), LuoEnkka); |
---|
328 | ruudut.SetTileMethod(new Color(0, 255, 255), LuoMana); |
---|
329 | ruudut.SetTileMethod(new Color(63, 0, 63), LuoLaatikko); |
---|
330 | ruudut.SetTileMethod(new Color(255, 222, 0), LuoPortti); |
---|
331 | ruudut.SetTileMethod(new Color(100, 155, 0), LuoKytkin); |
---|
332 | ruudut.SetTileMethod(new Color( 10, 30, 50), LuoPotionLaatikko); |
---|
333 | ruudut.SetTileMethod(new Color(90, 200, 90), LuoManaLaatikko); |
---|
334 | ruudut.SetTileMethod(new Color(250, 250, 0), LuoMiekka); |
---|
335 | ruudut.SetTileMethod(new Color(214, 218, 255), LuoYlempiOikeaYla); |
---|
336 | ruudut.SetTileMethod(new Color(255, 191, 0), LuoYlempiVasenYla); |
---|
337 | ruudut.SetTileMethod(new Color(153, 170, 153), LuoYlempiOikeaAla); |
---|
338 | ruudut.SetTileMethod(new Color(155, 91, 255), LuoYlempiVasenAla); |
---|
339 | ruudut.SetTileMethod(new Color(165, 0, 0), LuoYlempiKeski); |
---|
340 | ruudut.SetTileMethod(new Color(161, 161, 64), LuoKypara); |
---|
341 | ruudut.SetTileMethod(new Color(129, 50, 62), LuoPatsaanVartalo); |
---|
342 | ruudut.SetTileMethod(new Color(99, 39, 48), LuoPatsaanJalat); |
---|
343 | ruudut.SetTileMethod(new Color(222, 255, 222), LuoKalja); |
---|
344 | |
---|
345 | |
---|
346 | //3. Execute luo kentän |
---|
347 | // Parametreina leveys ja korkeus |
---|
348 | ruudut.Execute(TIILENLEVEYS, TIILENKORKEUS); |
---|
349 | Level.Background.TileToLevel(); |
---|
350 | vihollistenMaara.LowerLimit += KenttaLapi; |
---|
351 | |
---|
352 | energianKasvattaja = new Timer(); |
---|
353 | energianKasvattaja.Interval = 1.5; |
---|
354 | energianKasvattaja.Timeout += delegate { energiaLaskuri.Value++; }; |
---|
355 | //energianKasvattaja.Timeout += delegate { energiaLaskuri.Value += 10; if (energiaLaskuri.Value >= 1000) energianKasvattaja.Stop(); }; |
---|
356 | |
---|
357 | LuoVihuNaytto(); |
---|
358 | |
---|
359 | //Timer vihunLuontiAjastin = new Timer(); |
---|
360 | //vihunLuontiAjastin.Interval = 1.0; |
---|
361 | //vihunLuontiAjastin.Timeout += delegate { LuoVihollinen(new Vector(RandomGen.NextDouble(Level.Left+20, Level.Right-20), RandomGen.NextDouble (Level.Bottom+20, Level.Top-20)));}; |
---|
362 | //vihunLuontiAjastin.Start(); |
---|
363 | |
---|
364 | GameObject pimeys = new GameObject(Level.Width, Level.Height); |
---|
365 | //pimeys.Color = Color.Black; |
---|
366 | pimeys.Image = pimeysKuva; |
---|
367 | Add(pimeys, 3); |
---|
368 | |
---|
369 | |
---|
370 | } |
---|
371 | void LuoKypara(Vector paikka, double leveys, double korkeus) |
---|
372 | { |
---|
373 | PhysicsObject kypara = new PhysicsObject(leveys, korkeus); |
---|
374 | kypara.Image = sarvikypara; |
---|
375 | kypara.Position = paikka; |
---|
376 | kypara.IgnoresCollisionResponse = true; |
---|
377 | Add(kypara, -1); |
---|
378 | } |
---|
379 | void LuoPatsaanVartalo(Vector paikka, double leveys, double korkeus) |
---|
380 | { |
---|
381 | PhysicsObject PatsaanVartalo = new PhysicsObject(leveys, korkeus); |
---|
382 | PatsaanVartalo.Position = paikka; |
---|
383 | PatsaanVartalo.IgnoresCollisionResponse = true; |
---|
384 | PatsaanVartalo.Image = PatsasYla; |
---|
385 | Add(PatsaanVartalo, 2); |
---|
386 | } |
---|
387 | void LuoPatsaanJalat(Vector paikka, double leveys, double korkeus) |
---|
388 | { |
---|
389 | PhysicsObject PatsaanJalat = PhysicsObject.CreateStaticObject(leveys, korkeus); |
---|
390 | PatsaanJalat.Position = paikka; |
---|
391 | PatsaanJalat.IgnoresCollisionResponse = false; |
---|
392 | PatsaanJalat.Image = PatsasAla; |
---|
393 | PatsaanJalat.Shape = Shape.Circle; |
---|
394 | PatsaanJalat.Tag = "muuri"; |
---|
395 | Add(PatsaanJalat, -1); |
---|
396 | } |
---|
397 | |
---|
398 | void LuoVihuNaytto() |
---|
399 | { |
---|
400 | Label pisteNaytto = new Label(); |
---|
401 | pisteNaytto.X = Screen.Left + 150; |
---|
402 | pisteNaytto.Y = Screen.Top - 150; |
---|
403 | pisteNaytto.TextColor = Color.Orange; |
---|
404 | pisteNaytto.Color = Color.Transparent; |
---|
405 | |
---|
406 | pisteNaytto.BindTo(vihollistenMaara); |
---|
407 | Add(pisteNaytto); |
---|
408 | } |
---|
409 | |
---|
410 | void LuoAlaseina(Vector paikka, double leveys, double korkeus) |
---|
411 | { |
---|
412 | PhysicsObject ala = PhysicsObject.CreateStaticObject(leveys, korkeus); |
---|
413 | ala.Position = paikka; |
---|
414 | ala.CollisionIgnoreGroup = 1; |
---|
415 | ala.Image = alaseina; |
---|
416 | ala.Tag = "muuri"; |
---|
417 | Add(ala); |
---|
418 | |
---|
419 | |
---|
420 | } |
---|
421 | void LuoVasenAla(Vector paikka, double leveys, double korkeus) |
---|
422 | { |
---|
423 | PhysicsObject vasenAla = PhysicsObject.CreateStaticObject(leveys, korkeus); |
---|
424 | vasenAla.Position = paikka; |
---|
425 | vasenAla.CollisionIgnoreGroup = 1; |
---|
426 | vasenAla.Image = VasenAla; |
---|
427 | vasenAla.Tag = "muuri"; |
---|
428 | Add(vasenAla); |
---|
429 | |
---|
430 | |
---|
431 | } |
---|
432 | |
---|
433 | void LuoVasenYla(Vector paikka, double leveys, double korkeus) |
---|
434 | { |
---|
435 | PhysicsObject vasenYla = PhysicsObject.CreateStaticObject(leveys, korkeus); |
---|
436 | vasenYla.Position = paikka; |
---|
437 | vasenYla.CollisionIgnoreGroup = 1; |
---|
438 | vasenYla.Image = VasenYla; |
---|
439 | vasenYla.Tag = "muuri"; |
---|
440 | Add(vasenYla); |
---|
441 | |
---|
442 | |
---|
443 | } |
---|
444 | void LuoYlempiOikeaYla(Vector paikka, double leveys, double korkeus) |
---|
445 | { |
---|
446 | PhysicsObject YlempiOikeaYla = PhysicsObject.CreateStaticObject(leveys, korkeus); |
---|
447 | YlempiOikeaYla.Position = paikka; |
---|
448 | YlempiOikeaYla.CollisionIgnoreGroup = 1; |
---|
449 | YlempiOikeaYla.Image = ylempiOikeaYla; |
---|
450 | YlempiOikeaYla.IgnoresCollisionResponse = true; |
---|
451 | Add(YlempiOikeaYla, 2); |
---|
452 | |
---|
453 | |
---|
454 | } |
---|
455 | void LuoYlempiVasenYla(Vector paikka, double leveys, double korkeus) |
---|
456 | { |
---|
457 | PhysicsObject YlempiVasenYla = PhysicsObject.CreateStaticObject(leveys, korkeus); |
---|
458 | YlempiVasenYla.Position = paikka; |
---|
459 | YlempiVasenYla.CollisionIgnoreGroup = 1; |
---|
460 | YlempiVasenYla.Image = ylempiVasenYla; |
---|
461 | YlempiVasenYla.IgnoresCollisionResponse = true; |
---|
462 | Add(YlempiVasenYla, 2); |
---|
463 | |
---|
464 | |
---|
465 | } |
---|
466 | void LuoYlempiOikeaAla(Vector paikka, double leveys, double korkeus) |
---|
467 | { |
---|
468 | PhysicsObject YlempiOikeaAla = PhysicsObject.CreateStaticObject(leveys, korkeus); |
---|
469 | YlempiOikeaAla.Position = paikka; |
---|
470 | //YlempiOikeaAla.CollisionIgnoreGroup = 1; |
---|
471 | YlempiOikeaAla.Image = ylempiOikeaAla; |
---|
472 | YlempiOikeaAla.IgnoresCollisionResponse = true; |
---|
473 | Add(YlempiOikeaAla, 3); |
---|
474 | |
---|
475 | |
---|
476 | } |
---|
477 | void LuoYlempiVasenAla(Vector paikka, double leveys, double korkeus) |
---|
478 | { |
---|
479 | PhysicsObject YlempiVasenAla = PhysicsObject.CreateStaticObject(leveys, korkeus); |
---|
480 | YlempiVasenAla.Position = paikka; |
---|
481 | //YlempiVasenAla.CollisionIgnoreGroup = 1; |
---|
482 | YlempiVasenAla.Image = ylempiVasenYla; |
---|
483 | //YlempiVasenAla.IgnoresCollisionResponse = false; |
---|
484 | Add(YlempiVasenAla, -1); |
---|
485 | |
---|
486 | |
---|
487 | } |
---|
488 | void LuoYlempiKeski(Vector paikka, double leveys, double korkeus) |
---|
489 | { |
---|
490 | PhysicsObject YlempiKeski = PhysicsObject.CreateStaticObject(leveys, korkeus); |
---|
491 | YlempiKeski.Position = paikka; |
---|
492 | YlempiKeski.CollisionIgnoreGroup = 1; |
---|
493 | YlempiKeski.Image = ylempiKeski; |
---|
494 | YlempiKeski.IgnoresCollisionResponse = true; |
---|
495 | Add(YlempiKeski, 2); |
---|
496 | |
---|
497 | |
---|
498 | } |
---|
499 | |
---|
500 | |
---|
501 | void LuoOikeaAla(Vector paikka, double leveys, double korkeus) |
---|
502 | { |
---|
503 | PhysicsObject muuri = PhysicsObject.CreateStaticObject(leveys, korkeus); |
---|
504 | muuri.Position = paikka; |
---|
505 | muuri.CollisionIgnoreGroup = 1; |
---|
506 | muuri.Image = OikeaAla; |
---|
507 | muuri.Tag = "muuri"; |
---|
508 | Add(muuri); |
---|
509 | |
---|
510 | |
---|
511 | |
---|
512 | } |
---|
513 | |
---|
514 | void LuoOikea(Vector paikka, double leveys, double korkeus) |
---|
515 | { |
---|
516 | PhysicsObject muuri = PhysicsObject.CreateStaticObject(leveys, korkeus); |
---|
517 | muuri.Position = paikka; |
---|
518 | muuri.Tag = "muuri"; |
---|
519 | muuri.CollisionIgnoreGroup = 1; |
---|
520 | muuri.Image = oikeaSeina; |
---|
521 | Add(muuri); |
---|
522 | |
---|
523 | |
---|
524 | } |
---|
525 | |
---|
526 | |
---|
527 | |
---|
528 | void LuoPelaaja(Vector paikka, double leveys, double korkeus) |
---|
529 | { |
---|
530 | |
---|
531 | pelaaja.Image = hahmo; |
---|
532 | pelaaja.Position = paikka; |
---|
533 | pelaaja.CanRotate = false; |
---|
534 | pelaaja.Restitution = 1; |
---|
535 | pelaaja.MaxVelocity = 300; |
---|
536 | pelaaja.LinearDamping = 0.9; |
---|
537 | pelaaja.Shape = Shape.Circle; |
---|
538 | pelaaja.CollisionIgnoreGroup = 5; |
---|
539 | pelaaja.IgnoresCollisionResponse = true; |
---|
540 | Add(pelaaja, 1); |
---|
541 | AddCollisionHandler(pelaaja, "vihu", OsuuViholliseen); |
---|
542 | AddCollisionHandler(pelaaja, "enkka", OsuuEnkkaan); |
---|
543 | AddCollisionHandler(pelaaja, "mana", OsuuManaan); |
---|
544 | AddCollisionHandler(pelaaja, "potion", OsuuPulloon); |
---|
545 | |
---|
546 | LuoHahmonHitbox(); |
---|
547 | |
---|
548 | Timer pysahdys = new Timer(); |
---|
549 | pysahdys.Interval = 0.01; |
---|
550 | pysahdys.Timeout += delegate |
---|
551 | { |
---|
552 | if (pelaaja.Velocity.Magnitude == 0) |
---|
553 | { |
---|
554 | ((turhakepeli)Game.Instance).animaatioKaynnissa = 0; |
---|
555 | ((turhakepeli)Game.Instance).pelaaja.Animation.Stop(); |
---|
556 | } |
---|
557 | }; |
---|
558 | pysahdys.Start(); |
---|
559 | |
---|
560 | } |
---|
561 | |
---|
562 | void LuoHahmonHitbox() |
---|
563 | { |
---|
564 | PhysicsObject hitbox = new PhysicsObject(40, 20); |
---|
565 | hitbox.Y = pelaaja.Y -20; |
---|
566 | hitbox.X = pelaaja.X; |
---|
567 | hitbox.Color = Color.Transparent; |
---|
568 | hitbox.CollisionIgnoreGroup = 5; |
---|
569 | //hitbox.Image = hyokkauksenKuva; |
---|
570 | //hitbox.CollisionIgnoreGroup = 1; |
---|
571 | //hitbox.Shape = Shape.Circle; |
---|
572 | Add(hitbox); |
---|
573 | |
---|
574 | hitbox.CanRotate = false; |
---|
575 | AxleJoint liitos = new AxleJoint(pelaaja, hitbox); |
---|
576 | Add(liitos); |
---|
577 | |
---|
578 | AddCollisionHandler(hitbox, "vihu", OsuuViholliseen); |
---|
579 | AddCollisionHandler(hitbox, "enkka", OsuuEnkkaan); |
---|
580 | AddCollisionHandler(hitbox, "mana", OsuuManaan); |
---|
581 | AddCollisionHandler(hitbox, "kalja", OsuuKaljaan); |
---|
582 | } |
---|
583 | |
---|
584 | void LuoSivuseina(Vector paikka, double leveys, double korkeus) |
---|
585 | { |
---|
586 | PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus); |
---|
587 | taso.Position = paikka; |
---|
588 | taso.CollisionIgnoreGroup = 1; |
---|
589 | taso.Image = sivuseina; |
---|
590 | taso.Tag = "muuri"; |
---|
591 | Add(taso); |
---|
592 | } |
---|
593 | void LuoOikeaYla(Vector paikka, double leveys, double korkeus) |
---|
594 | { |
---|
595 | PhysicsObject ala = PhysicsObject.CreateStaticObject(leveys, korkeus); |
---|
596 | ala.Position = paikka; |
---|
597 | ala.CollisionIgnoreGroup = 1; |
---|
598 | ala.Image = OikeaYla; |
---|
599 | ala.Tag = "muuri"; |
---|
600 | Add(ala); |
---|
601 | |
---|
602 | } |
---|
603 | |
---|
604 | void LuoMuurinHitbox() |
---|
605 | { |
---|
606 | PhysicsObject hitbox = new PhysicsObject(500, 43); |
---|
607 | hitbox.Y = muuri.Y -20; |
---|
608 | hitbox.X = muuri.X; |
---|
609 | //hitbox.Color = Color.Transparent; |
---|
610 | //hitbox.Image = hyokkauksenKuva; |
---|
611 | //hitbox.CollisionIgnoreGroup = 1; |
---|
612 | //hitbox.Shape = Shape.Circle; |
---|
613 | Add(hitbox); |
---|
614 | |
---|
615 | hitbox.CanRotate = false; |
---|
616 | AxleJoint liitos = new AxleJoint(muuri, hitbox); |
---|
617 | Add(liitos); |
---|
618 | } |
---|
619 | |
---|
620 | private void LuoVihollinen(Vector paikka, double leveys, double korkeus) |
---|
621 | { |
---|
622 | Vihu vihollinen = new Vihu(leveys, korkeus); |
---|
623 | |
---|
624 | vihollinen.ElamaLaskuri = new IntMeter(5, 0, 5); |
---|
625 | vihollinen.Position = paikka; |
---|
626 | Add(vihollinen, -2); |
---|
627 | vihollinen.CanRotate = false; |
---|
628 | vihollinen.Restitution = 0.0; |
---|
629 | vihollinen.Tag = "vihu"; |
---|
630 | //vihollinen.Color = Color.Red; |
---|
631 | vihollinen.Color = new Color(63, 0, 63); |
---|
632 | |
---|
633 | //vihollinen.MoveTo(new Vector(RandomGen.NextDouble(Level.Left, Level.Right), Level.Bottom - 250), 500); //{ vihollisLaskuri.Value++; }); |
---|
634 | seuraajanAivot = new FollowerBrain(pelaaja); |
---|
635 | seuraajanAivot.Speed = 70.0; |
---|
636 | seuraajanAivot.DistanceFar = 500; |
---|
637 | seuraajanAivot.DistanceClose = 60; |
---|
638 | seuraajanAivot.TurnWhileMoving = false; |
---|
639 | //seuraajanAivot.TargetClose += delegate |
---|
640 | //{ |
---|
641 | // seuraajanAivot.Active = true; |
---|
642 | // vihollinen.Hit(new Vector(0, -5000)); |
---|
643 | // |
---|
644 | //}; |
---|
645 | seuraajanAivot.StopWhenTargetClose = true; |
---|
646 | vihollinen.Brain = seuraajanAivot; |
---|
647 | vihollistenMaara.MaxValue++; |
---|
648 | vihollistenMaara.Value = vihollistenMaara.MaxValue; |
---|
649 | |
---|
650 | RandomMoverBrain kaukanaAivot = new RandomMoverBrain(); |
---|
651 | kaukanaAivot.Speed = 0.000000000000000000000000001; |
---|
652 | kaukanaAivot.TurnWhileMoving = false; |
---|
653 | |
---|
654 | seuraajanAivot.FarBrain = kaukanaAivot; |
---|
655 | |
---|
656 | Timer vihunAnimaatio = new Timer(); |
---|
657 | vihunAnimaatio.Interval = 0.01; |
---|
658 | vihunAnimaatio.Timeout += delegate |
---|
659 | { |
---|
660 | double kulma = vihollinen.Velocity.Angle.Degrees; |
---|
661 | int suunta = 0; |
---|
662 | |
---|
663 | if (vihollinen.Velocity.Magnitude != 0) |
---|
664 | { |
---|
665 | if (kulma <= 45 && kulma >= -45) |
---|
666 | { |
---|
667 | suunta = 1; |
---|
668 | } |
---|
669 | |
---|
670 | if (kulma <= -45 && kulma >= -135) |
---|
671 | { |
---|
672 | suunta = 4; |
---|
673 | } |
---|
674 | |
---|
675 | if (kulma <= -135 || kulma >= 135) |
---|
676 | { |
---|
677 | suunta = 2; |
---|
678 | } |
---|
679 | |
---|
680 | if (kulma <= 135 && kulma >= 45) |
---|
681 | { |
---|
682 | suunta = 3; |
---|
683 | } |
---|
684 | } |
---|
685 | |
---|
686 | |
---|
687 | if (vihollinen.animaatioKaynnissa != suunta) |
---|
688 | { |
---|
689 | switch (suunta) |
---|
690 | { |
---|
691 | case 1: |
---|
692 | vihollinen.Animation = new Animation(hahmonLiikeOikea); |
---|
693 | animaatioKaynnissa = 1; |
---|
694 | break; |
---|
695 | case 2: |
---|
696 | vihollinen.Animation = new Animation(hahmonLiikeVasen); |
---|
697 | animaatioKaynnissa = 2; |
---|
698 | break; |
---|
699 | case 3: |
---|
700 | vihollinen.Animation = new Animation(hahmonLiikeYlos); |
---|
701 | animaatioKaynnissa = 3; |
---|
702 | break; |
---|
703 | case 4: |
---|
704 | vihollinen.Animation = new Animation(hahmonLiikeAlas); |
---|
705 | animaatioKaynnissa = 4; |
---|
706 | break; |
---|
707 | default: |
---|
708 | break; |
---|
709 | } |
---|
710 | vihollinen.Animation.FPS = 5; |
---|
711 | vihollinen.Animation.Start(); |
---|
712 | } |
---|
713 | else if (suunta == 0) |
---|
714 | { |
---|
715 | if (vihollinen.Animation != null) |
---|
716 | { |
---|
717 | vihollinen.Animation.Stop(); |
---|
718 | } |
---|
719 | } |
---|
720 | }; |
---|
721 | vihunAnimaatio.Start(); |
---|
722 | |
---|
723 | } |
---|
724 | private void LuoLaatikko(Vector paikka, double leveys, double korkeus) |
---|
725 | { |
---|
726 | laatikko laatikko = new laatikko(paikka, leveys, 30, alaOsanKuva, ylaOsanKuva, "laatikko"); |
---|
727 | |
---|
728 | //laatikko.Tag = "laatikko"; |
---|
729 | Add(laatikko); |
---|
730 | } |
---|
731 | private void LuoManaLaatikko(Vector paikka, double leveys, double korkeus) |
---|
732 | { |
---|
733 | laatikko manaLaatikko = new laatikko(paikka, leveys, 30, alaOsanKuva, ylaOsanKuva, "manaLaatikko"); |
---|
734 | //manaLaatikko.Position = paikka; |
---|
735 | //manaLaatikko.CanRotate = false; |
---|
736 | //manaLaatikko.Restitution = 0.0; |
---|
737 | //manaLaatikko.CanRotate = false; |
---|
738 | //manaLaatikko.Image = Laatikko; |
---|
739 | |
---|
740 | |
---|
741 | //manaLaatikko.Tag = "manaLaatikko"; |
---|
742 | Add(manaLaatikko); |
---|
743 | |
---|
744 | AxleJoint liitos = new AxleJoint(manaLaatikko); |
---|
745 | Add(liitos); |
---|
746 | } |
---|
747 | private void LuoPotionLaatikko(Vector paikka, double leveys, double korkeus) |
---|
748 | { |
---|
749 | laatikko potionLaatikko = new laatikko(paikka, leveys, 30, alaOsanKuva, ylaOsanKuva, "potionLaatikko"); |
---|
750 | //potionLaatikko.Position = paikka; |
---|
751 | //potionLaatikko.CanRotate = false; |
---|
752 | //potionLaatikko.Restitution = 0.0; |
---|
753 | //potionLaatikko.CanRotate = false; |
---|
754 | //potionLaatikko.Image = Laatikko; |
---|
755 | |
---|
756 | |
---|
757 | //potionLaatikko.Tag = "potionLaatikko"; |
---|
758 | Add(potionLaatikko); |
---|
759 | |
---|
760 | AxleJoint liitos = new AxleJoint(potionLaatikko); |
---|
761 | Add(liitos); |
---|
762 | } |
---|
763 | |
---|
764 | void KenttaLapi() |
---|
765 | { |
---|
766 | kenttaNro++; |
---|
767 | ClearAll(); |
---|
768 | //MessageDisplay.Add("Teleported to next level"); |
---|
769 | vihollistenMaara.ClearTriggers(); |
---|
770 | AloitaPeli(); |
---|
771 | } |
---|
772 | void Hyokkaa() |
---|
773 | { |
---|
774 | |
---|
775 | PhysicsObject hyokkaus = new PhysicsObject(100, 100); |
---|
776 | hyokkaus.Position = pelaaja.Position; |
---|
777 | hyokkaus.Image = hyokkauksenKuva; |
---|
778 | hyokkaus.CollisionIgnoreGroup = 1; |
---|
779 | hyokkaus.Shape = Shape.Circle; |
---|
780 | hyokkaus.IgnoresCollisionResponse = true; |
---|
781 | |
---|
782 | |
---|
783 | |
---|
784 | |
---|
785 | if (energiaLaskuri.Value > 0) |
---|
786 | { |
---|
787 | energiaLaskuri.Value--; |
---|
788 | Add(hyokkaus, 1); |
---|
789 | if (energiaLaskuri.Value < 10) |
---|
790 | { |
---|
791 | |
---|
792 | if (!energianKasvattaja.Enabled) |
---|
793 | { |
---|
794 | energianKasvattaja.Start(); |
---|
795 | } |
---|
796 | |
---|
797 | } |
---|
798 | } |
---|
799 | |
---|
800 | hyokkaus.CanRotate = false; |
---|
801 | AxleJoint liitos = new AxleJoint(pelaaja, hyokkaus); |
---|
802 | Add(liitos); |
---|
803 | //pelaaja.Image = hahmoHyokkaa; |
---|
804 | AddCollisionHandler(hyokkaus, "vihu", HyokkausOsuu); |
---|
805 | AddCollisionHandler(hyokkaus, "laatikko", HyokkausOsuu); |
---|
806 | AddCollisionHandler(hyokkaus, "potionLaatikko", HyokkausOsuu); |
---|
807 | AddCollisionHandler(hyokkaus, "manaLaatikko", HyokkausOsuu); |
---|
808 | |
---|
809 | Timer.SingleShot(0.5, delegate { |
---|
810 | hyokkaus.Destroy(); |
---|
811 | //pelaaja.Image = hahmo; |
---|
812 | //if (pelaaja.Animation != null) pelaaja.Animation.Start(); |
---|
813 | }); |
---|
814 | //AddCollisionHandler(hyokkaus, "vihu", ); |
---|
815 | |
---|
816 | } |
---|
817 | |
---|
818 | |
---|
819 | void HahmonAnimaatio(Image[] hahmonLiike) |
---|
820 | { |
---|
821 | if (pelaaja.Velocity != Vector.Zero) return; |
---|
822 | pelaaja.Animation = new Animation(hahmonLiike); |
---|
823 | pelaaja.Animation.FPS = 5; |
---|
824 | pelaaja.Animation.Start(); |
---|
825 | } |
---|
826 | void HahmonAnimaatioYlos(Image[] hahmonLiikeYlos) |
---|
827 | { |
---|
828 | if (pelaaja.Velocity != Vector.Zero) return; |
---|
829 | pelaaja.Animation = new Animation(hahmonLiikeYlos); |
---|
830 | pelaaja.Animation.FPS = 5; |
---|
831 | pelaaja.Animation.Start(); |
---|
832 | } |
---|
833 | |
---|
834 | |
---|
835 | |
---|
836 | void AnimaatioLopetus(int suunta) |
---|
837 | { |
---|
838 | if (suunta == animaatioKaynnissa) |
---|
839 | { |
---|
840 | pelaaja.Animation.Stop(); |
---|
841 | animaatioKaynnissa = 0; |
---|
842 | } |
---|
843 | } |
---|
844 | void HyokkausOsuu(PhysicsObject hyokkaus, PhysicsObject kohde) |
---|
845 | { |
---|
846 | |
---|
847 | if (kohde.Tag.Equals("vihu")) |
---|
848 | { |
---|
849 | OsuVihuun(kohde); |
---|
850 | |
---|
851 | } |
---|
852 | if (kohde.Tag.Equals("laatikko")) |
---|
853 | { |
---|
854 | OsuLaatikkoon((kohde as laatikko)); |
---|
855 | |
---|
856 | } |
---|
857 | if (kohde.Tag.Equals("potionLaatikko")) |
---|
858 | { |
---|
859 | OsuPotionLaatikkoon(kohde as laatikko); |
---|
860 | |
---|
861 | } |
---|
862 | if (kohde.Tag.Equals("manaLaatikko")) |
---|
863 | { |
---|
864 | OsuManaLaatikkoon(kohde as laatikko); |
---|
865 | |
---|
866 | } |
---|
867 | |
---|
868 | //tuhoa jos ammus |
---|
869 | if (hyokkaus.Tag.Equals("ammus")) |
---|
870 | { |
---|
871 | hyokkaus.Destroy(); |
---|
872 | } |
---|
873 | |
---|
874 | |
---|
875 | } |
---|
876 | private void OsuVihuun(PhysicsObject kohde) |
---|
877 | { |
---|
878 | //Explosion rajahdys = new Explosion(150); |
---|
879 | //rajahdys.Position = kohde.Position; |
---|
880 | //rajahdys.ShockwaveColor = Color.Transparent; |
---|
881 | //Add(rajahdys); |
---|
882 | //(kohde as Vihu). |
---|
883 | |
---|
884 | |
---|
885 | (kohde as Vihu).ElamaLaskuri.Value--; |
---|
886 | if ((kohde as Vihu).ElamaLaskuri.Value <= 0) |
---|
887 | { |
---|
888 | LuoEnkka(kohde.Position, 60, 60); |
---|
889 | kohde.Destroy(); |
---|
890 | vihollistenMaara.Value--; |
---|
891 | } |
---|
892 | |
---|
893 | } |
---|
894 | private void OsuLaatikkoon(laatikko kohde) |
---|
895 | { |
---|
896 | |
---|
897 | |
---|
898 | (kohde as laatikko).TuhoutumisLaskuri.Value--; |
---|
899 | if ((kohde as laatikko).TuhoutumisLaskuri.Value <= 0) |
---|
900 | { |
---|
901 | LuoEnkka(kohde.Position, 60, 60); |
---|
902 | kohde.TuhoaLaatikko(); |
---|
903 | //vihollistenMaara.Value--; |
---|
904 | } |
---|
905 | if ((kohde as laatikko).TuhoutumisLaskuri.Value == 2) |
---|
906 | { |
---|
907 | kohde.VaihdaKuva(LaatikkoAla2, LaatikkoYla2); |
---|
908 | } |
---|
909 | |
---|
910 | if ((kohde as laatikko).TuhoutumisLaskuri.Value == 1) |
---|
911 | { |
---|
912 | kohde.VaihdaKuva(LaatikkoAla3, LaatikkoYla3); |
---|
913 | } |
---|
914 | |
---|
915 | |
---|
916 | } |
---|
917 | private void OsuManaLaatikkoon(laatikko kohde) |
---|
918 | { |
---|
919 | |
---|
920 | |
---|
921 | (kohde as laatikko).TuhoutumisLaskuri.Value--; |
---|
922 | if ((kohde as laatikko).TuhoutumisLaskuri.Value <= 0) |
---|
923 | { |
---|
924 | LuoMana(kohde.Position, 60, 60); |
---|
925 | kohde.TuhoaLaatikko(); |
---|
926 | //vihollistenMaara.Value--; |
---|
927 | } |
---|
928 | if ((kohde as laatikko).TuhoutumisLaskuri.Value == 2) |
---|
929 | { |
---|
930 | kohde.VaihdaKuva(LaatikkoAla2, LaatikkoYla2); |
---|
931 | } |
---|
932 | |
---|
933 | if ((kohde as laatikko).TuhoutumisLaskuri.Value == 1) |
---|
934 | { |
---|
935 | kohde.VaihdaKuva(LaatikkoAla3, LaatikkoYla3); |
---|
936 | } |
---|
937 | |
---|
938 | } |
---|
939 | private void OsuPotionLaatikkoon(laatikko kohde) |
---|
940 | { |
---|
941 | |
---|
942 | |
---|
943 | (kohde as laatikko).TuhoutumisLaskuri.Value--; |
---|
944 | if ((kohde as laatikko).TuhoutumisLaskuri.Value <= 0) |
---|
945 | { |
---|
946 | LuoPotion(kohde.Position, 60, 60); |
---|
947 | kohde.TuhoaLaatikko(); |
---|
948 | //vihollistenMaara.Value--; |
---|
949 | } |
---|
950 | if ((kohde as laatikko).TuhoutumisLaskuri.Value == 2) |
---|
951 | { |
---|
952 | kohde.VaihdaKuva(LaatikkoAla2, LaatikkoYla2); |
---|
953 | } |
---|
954 | |
---|
955 | if ((kohde as laatikko).TuhoutumisLaskuri.Value == 1) |
---|
956 | { |
---|
957 | kohde.VaihdaKuva(LaatikkoAla3, LaatikkoYla3); |
---|
958 | } |
---|
959 | |
---|
960 | } |
---|
961 | |
---|
962 | |
---|
963 | void LuoEnkkaLaskuri() |
---|
964 | { |
---|
965 | if (kenttaNro == 1) |
---|
966 | { |
---|
967 | enkkaLaskuri = new DoubleMeter(10); |
---|
968 | enkkaLaskuri.MaxValue = 10; |
---|
969 | enkkaLaskuri.LowerLimit += ElamaLoppui; |
---|
970 | } |
---|
971 | ProgressBar elamaPalkki = new ProgressBar(250, 30); |
---|
972 | elamaPalkki.X = Screen.Left + 150; |
---|
973 | elamaPalkki.Y = Screen.Top - 20; |
---|
974 | elamaPalkki.BindTo(enkkaLaskuri); |
---|
975 | elamaPalkki.BorderColor = Color.Black; |
---|
976 | Add(elamaPalkki); |
---|
977 | } |
---|
978 | |
---|
979 | void ElamaLoppui() |
---|
980 | { |
---|
981 | |
---|
982 | |
---|
983 | //IsPaused = true; |
---|
984 | //pelaaja.Image = kuollut; |
---|
985 | //MessageDisplay.Add("aodihb"); |
---|
986 | //Label teksti = new Label("GAME OVER!!!"); |
---|
987 | //teksti.TextScale = new Vector(3, 3); |
---|
988 | //Add(teksti); |
---|
989 | //teksti.Color = Color.Transparent; |
---|
990 | |
---|
991 | IsPaused = true; |
---|
992 | MultiSelectWindow valikko = new MultiSelectWindow("Game Over", "Restart", "Quit Game"); |
---|
993 | valikko.AddItemHandler(1, Exit); |
---|
994 | valikko.AddItemHandler(0, delegate { AloitaPeli(); }); |
---|
995 | valikko.Color = Color.Black; |
---|
996 | valikko.Color = Color.Transparent; |
---|
997 | valikko.SelectionColor = Color.Black; |
---|
998 | valikko.Image = valikonKuva; |
---|
999 | valikko.X = 250; |
---|
1000 | valikko.Y = 150; |
---|
1001 | Add(valikko); |
---|
1002 | |
---|
1003 | |
---|
1004 | |
---|
1005 | } |
---|
1006 | void AloitaPeli() |
---|
1007 | { |
---|
1008 | ClearAll(); |
---|
1009 | Keyboard.Clear(); |
---|
1010 | IsPaused = false; |
---|
1011 | Mouse.IsCursorVisible = false; |
---|
1012 | |
---|
1013 | if (kenttaNro == 1) LuoKentta("kentta02"); |
---|
1014 | else if (kenttaNro == 2) LuoKentta("kentta02"); |
---|
1015 | else if (kenttaNro == 3) LuoKentta("kentta03"); |
---|
1016 | else if (kenttaNro == 4) LuoKentta("kentta04"); |
---|
1017 | else if (kenttaNro == 5) LuoKentta("kentta05"); |
---|
1018 | else if (kenttaNro == 6) LuoKentta("kentta06"); |
---|
1019 | |
---|
1020 | Level.Background.Image = taustaKuva; |
---|
1021 | Level.Background.TileToLevel(); |
---|
1022 | Camera.StayInLevel = true; |
---|
1023 | |
---|
1024 | |
---|
1025 | //GameObject taustaPilvet = new GameObject(10000, 10000); |
---|
1026 | // taustaPilvet.Image = taustaKuva; |
---|
1027 | //Add(taustaPilvet, -3); |
---|
1028 | //Layers[-3].RelativeTransition = new Vector(0.5, 0.5); |
---|
1029 | |
---|
1030 | |
---|
1031 | |
---|
1032 | SmoothTextures = false; |
---|
1033 | |
---|
1034 | //hahmonLiike = LoadAnimation("hahmo"); |
---|
1035 | |
---|
1036 | //LuoKentta(); |
---|
1037 | |
---|
1038 | LisaaOhjaimet(); |
---|
1039 | |
---|
1040 | LuoEnkkaLaskuri(); |
---|
1041 | |
---|
1042 | LuoEnergiaLaskuri(); |
---|
1043 | |
---|
1044 | |
---|
1045 | |
---|
1046 | |
---|
1047 | |
---|
1048 | |
---|
1049 | Camera.Zoom(2.5); |
---|
1050 | |
---|
1051 | |
---|
1052 | //turhake = new PhysicsObject(10, 10); |
---|
1053 | //turhake.Color = new Color (63, 0, 63); |
---|
1054 | //Add(turhake); |
---|
1055 | Camera.FollowedObject = pelaaja; |
---|
1056 | |
---|
1057 | saakoAmpua = true; |
---|
1058 | } |
---|
1059 | |
---|
1060 | |
---|
1061 | |
---|
1062 | void OsuuViholliseen(PhysicsObject hitbox, PhysicsObject vihu) |
---|
1063 | { |
---|
1064 | |
---|
1065 | if (vihu.Tag.Equals("vihu")) |
---|
1066 | { |
---|
1067 | |
---|
1068 | //seuraajanAivot.Active = false; |
---|
1069 | // |
---|
1070 | //Timer pysautus = new Timer(); |
---|
1071 | //pysautus.Interval = 1; |
---|
1072 | //pysautus.Timeout += delegate |
---|
1073 | //{ |
---|
1074 | // seuraajanAivot.Active = true; |
---|
1075 | //}; |
---|
1076 | |
---|
1077 | |
---|
1078 | |
---|
1079 | enkkaLaskuri.Value--; |
---|
1080 | vihu.Stop(); |
---|
1081 | } |
---|
1082 | } |
---|
1083 | void LuoEnergiaLaskuri() |
---|
1084 | { |
---|
1085 | if (kenttaNro == 1) |
---|
1086 | { |
---|
1087 | energiaLaskuri = new DoubleMeter(10); |
---|
1088 | energiaLaskuri.MaxValue = 10; |
---|
1089 | //energiaLaskuri.LowerLimit += ElamaLoppui; |
---|
1090 | } |
---|
1091 | ProgressBar energiaPalkki = new ProgressBar(250, 30); |
---|
1092 | energiaPalkki.X = Screen.Left + 150; |
---|
1093 | energiaPalkki.Y = Screen.Top - 70; |
---|
1094 | energiaPalkki.BindTo(energiaLaskuri); |
---|
1095 | |
---|
1096 | energiaPalkki.BarColor = Color.Blue; |
---|
1097 | energiaPalkki.BorderColor = Color.Black; |
---|
1098 | |
---|
1099 | Add(energiaPalkki); |
---|
1100 | |
---|
1101 | } |
---|
1102 | void LuoEnkka(Vector paikka, double leveys, double korkeus) |
---|
1103 | { |
---|
1104 | PhysicsObject enkka = new PhysicsObject(leveys, korkeus); |
---|
1105 | enkka.Position = paikka; |
---|
1106 | enkka.Image = enkanKuva; |
---|
1107 | enkka.IgnoresCollisionResponse = true; |
---|
1108 | enkka.IgnoresExplosions = true; |
---|
1109 | Add(enkka, -3); |
---|
1110 | //Vector impulssi = new Vector(0.0, -1.0); |
---|
1111 | //enkka.Hit(impulssi); |
---|
1112 | enkka.Tag = "enkka"; |
---|
1113 | enkka.CanRotate = false; |
---|
1114 | } |
---|
1115 | void OsuuEnkkaan(PhysicsObject hitbox, PhysicsObject enkka) |
---|
1116 | { |
---|
1117 | enkkaLaskuri.Value += 1; |
---|
1118 | enkka.Destroy(); |
---|
1119 | Label kerausteksti = new Label("HEALTH UP"); |
---|
1120 | kerausteksti.TextColor = Color.Red; |
---|
1121 | kerausteksti.X = Screen.Right - 200; |
---|
1122 | kerausteksti.Y = Screen.Top - 100; |
---|
1123 | kerausteksti.LifetimeLeft = TimeSpan.FromSeconds(2.0); |
---|
1124 | Add(kerausteksti); |
---|
1125 | } |
---|
1126 | void LuoMana(Vector paikka, double leveys, double korkeus) |
---|
1127 | { |
---|
1128 | PhysicsObject mana = new PhysicsObject(leveys, korkeus); |
---|
1129 | mana.Position = paikka; |
---|
1130 | //enkka.Image = enkanKuva; |
---|
1131 | mana.IgnoresCollisionResponse = true; |
---|
1132 | mana.IgnoresExplosions = true; |
---|
1133 | |
---|
1134 | Add(mana, -3); |
---|
1135 | mana.Image = pullo; |
---|
1136 | // Vector impulssi = new Vector(0.0, -500.0); |
---|
1137 | //enkka.Hit(impulssi); |
---|
1138 | mana.Tag = "mana"; |
---|
1139 | mana.CanRotate = false; |
---|
1140 | } |
---|
1141 | void LuoPotion(Vector paikka, double leveys, double korkeus) |
---|
1142 | { |
---|
1143 | PhysicsObject potion = new PhysicsObject(leveys, korkeus); |
---|
1144 | potion.Position = paikka; |
---|
1145 | //enkka.Image = enkanKuva; |
---|
1146 | potion.IgnoresCollisionResponse = true; |
---|
1147 | potion.IgnoresExplosions = true; |
---|
1148 | |
---|
1149 | Add(potion, -3); |
---|
1150 | potion.Image = pullo2; |
---|
1151 | // Vector impulssi = new Vector(0.0, -500.0); |
---|
1152 | //enkka.Hit(impulssi); |
---|
1153 | potion.Tag = "potion"; |
---|
1154 | potion.CanRotate = false; |
---|
1155 | } |
---|
1156 | void LuoKalja(Vector paikka, double leveys, double korkeus) |
---|
1157 | { |
---|
1158 | PhysicsObject kalja = new PhysicsObject(leveys, korkeus); |
---|
1159 | kalja.Position = paikka; |
---|
1160 | kalja.IgnoresCollisionResponse = true; |
---|
1161 | kalja.IgnoresExplosions = true; |
---|
1162 | |
---|
1163 | Add(kalja, -3); |
---|
1164 | kalja.Image = Kalja; |
---|
1165 | kalja.Tag = "kalja"; |
---|
1166 | kalja.CanRotate = false; |
---|
1167 | } |
---|
1168 | |
---|
1169 | void OsuuManaan(PhysicsObject hitbox, PhysicsObject mana) |
---|
1170 | { |
---|
1171 | energiaLaskuri.MaxValue += 0.5; |
---|
1172 | energiaLaskuri.Value += 5; |
---|
1173 | mana.Destroy(); |
---|
1174 | |
---|
1175 | Label kerausteksti = new Label("MANA UP"); |
---|
1176 | kerausteksti.TextColor = Color.Cyan; |
---|
1177 | kerausteksti.X = Screen.Right - 200; |
---|
1178 | kerausteksti.Y = Screen.Top - 100; |
---|
1179 | kerausteksti.LifetimeLeft = TimeSpan.FromSeconds(2.0); |
---|
1180 | Add(kerausteksti); |
---|
1181 | |
---|
1182 | Label kerausteksti2 = new Label("MANA MAX VALUE UP"); |
---|
1183 | kerausteksti2.TextColor = Color.Cyan; |
---|
1184 | kerausteksti2.X = Screen.Right -200; |
---|
1185 | kerausteksti2.Y = Screen.Top -200; |
---|
1186 | kerausteksti2.LifetimeLeft = TimeSpan.FromSeconds(2.0); |
---|
1187 | Add(kerausteksti2); |
---|
1188 | } |
---|
1189 | |
---|
1190 | void OsuuKaljaan(PhysicsObject hitbox, PhysicsObject kalja) |
---|
1191 | { |
---|
1192 | enkkaLaskuri.MaxValue += 5; |
---|
1193 | enkkaLaskuri.Value += 5; |
---|
1194 | energiaLaskuri.Value += 10; |
---|
1195 | kalja.Destroy(); |
---|
1196 | } |
---|
1197 | |
---|
1198 | void OsuuPulloon(PhysicsObject hitbox, PhysicsObject potion) |
---|
1199 | { |
---|
1200 | enkkaLaskuri.MaxValue += 1; |
---|
1201 | enkkaLaskuri.Value += 10; |
---|
1202 | potion.Destroy(); |
---|
1203 | |
---|
1204 | Label kerausteksti = new Label("HEALTH UP"); |
---|
1205 | kerausteksti.TextColor = Color.Red; |
---|
1206 | kerausteksti.X = Screen.Right - 200; |
---|
1207 | kerausteksti.Y = Screen.Top - 100; |
---|
1208 | kerausteksti.LifetimeLeft = TimeSpan.FromSeconds(2.0); |
---|
1209 | Add(kerausteksti); |
---|
1210 | |
---|
1211 | Label kerausteksti2 = new Label("HEALTH MAX VALUE UP"); |
---|
1212 | kerausteksti2.TextColor = Color.Red; |
---|
1213 | kerausteksti2.X = Screen.Right - 200; |
---|
1214 | kerausteksti2.Y = Screen.Top - 200; |
---|
1215 | kerausteksti2.LifetimeLeft = TimeSpan.FromSeconds(2.0); |
---|
1216 | Add(kerausteksti2); |
---|
1217 | } |
---|
1218 | void LuoPortti(Vector paikka, double leveys, double korkeus) |
---|
1219 | { |
---|
1220 | PhysicsObject portti = PhysicsObject.CreateStaticObject(leveys, korkeus); |
---|
1221 | portti.Position = paikka; |
---|
1222 | portti.CollisionIgnoreGroup = 1; |
---|
1223 | //Add(portti); |
---|
1224 | } |
---|
1225 | void LuoKytkin(Vector paikka, double leveys, double korkeus) |
---|
1226 | { |
---|
1227 | PhysicsObject kytkin = new PhysicsObject(leveys, korkeus); |
---|
1228 | kytkin.Position = paikka; |
---|
1229 | kytkin.CollisionIgnoreGroup = 5; |
---|
1230 | //kytkin.CollisionIgnoreGroup = 2; |
---|
1231 | //kytkin.CollisionIgnoreGroup = 3; |
---|
1232 | //kytkin.CollisionIgnoreGroup = 4; |
---|
1233 | //kytkin.CollisionIgnoreGroup = 5; |
---|
1234 | //kytkin.CollisionIgnoreGroup = 6; |
---|
1235 | //Add(kytkin); |
---|
1236 | } |
---|
1237 | |
---|
1238 | void LuoMiekka(Vector paikka, double leveys, double korkeus) |
---|
1239 | { |
---|
1240 | PhysicsObject miekka = new PhysicsObject(leveys, korkeus); |
---|
1241 | miekka.Position = paikka; |
---|
1242 | miekka.Image = Miekka; |
---|
1243 | miekka.IgnoresCollisionResponse = true; |
---|
1244 | Add(miekka, -3); |
---|
1245 | } |
---|
1246 | |
---|
1247 | |
---|
1248 | |
---|
1249 | |
---|
1250 | } |
---|
1251 | class Vihu : PhysicsObject |
---|
1252 | { |
---|
1253 | private IntMeter elamaLaskuri = new IntMeter(3, 0, 3); |
---|
1254 | public IntMeter ElamaLaskuri { get { return elamaLaskuri; } set { elamaLaskuri = value; } } |
---|
1255 | public int animaatioKaynnissa; |
---|
1256 | |
---|
1257 | public Vihu(double leveys, double korkeus) |
---|
1258 | : base(leveys, korkeus) |
---|
1259 | { |
---|
1260 | //elamaLaskuri.LowerLimit += delegate { this.Destroy(); }; |
---|
1261 | this.animaatioKaynnissa = 0; |
---|
1262 | } |
---|
1263 | } |
---|
1264 | class laatikko : PhysicsObject |
---|
1265 | { |
---|
1266 | private IntMeter tuhoutumisLaskuri = new IntMeter(3, 0, 3); |
---|
1267 | public IntMeter TuhoutumisLaskuri { get { return tuhoutumisLaskuri; } set { tuhoutumisLaskuri = value; } } |
---|
1268 | public GameObject ylaOsa; |
---|
1269 | |
---|
1270 | public laatikko(Vector paikka, double leveys, double korkeus, Image alaOsanKuva, Image ylaOsanKuva, String tag) |
---|
1271 | : base(leveys, korkeus) |
---|
1272 | { |
---|
1273 | this.MakeStatic(); |
---|
1274 | this.Position = paikka; |
---|
1275 | this.CanRotate = false; |
---|
1276 | this.Restitution = 0.0; |
---|
1277 | this.Image = alaOsanKuva; |
---|
1278 | this.Tag = tag; |
---|
1279 | //elamaLaskuri.LowerLimit += delegate { this.Destroy(); }; |
---|
1280 | this.ylaOsa = new GameObject(ylaOsanKuva); |
---|
1281 | this.ylaOsa.Position = this.Position + new Vector(0, this.Size.Y / 2 + ylaOsa.Size.Y / 2); |
---|
1282 | ((turhakepeli)Game.Instance).Add(ylaOsa, 2); |
---|
1283 | |
---|
1284 | Timer kerroksenVaihtaja = new Timer(); |
---|
1285 | kerroksenVaihtaja.Interval = 3; |
---|
1286 | kerroksenVaihtaja.Timeout += delegate |
---|
1287 | { |
---|
1288 | if (((turhakepeli)Game.Instance).pelaaja != null) |
---|
1289 | { |
---|
1290 | |
---|
1291 | if (((turhakepeli)Game.Instance).pelaaja.Position.Y < this.Position.Y) |
---|
1292 | { |
---|
1293 | this.TuhoaLaatikko(); |
---|
1294 | ((turhakepeli)Game.Instance).Add(this, 2); |
---|
1295 | ((turhakepeli)Game.Instance).Add(this.ylaOsa, 2); |
---|
1296 | } |
---|
1297 | else |
---|
1298 | { |
---|
1299 | this.TuhoaLaatikko(); |
---|
1300 | ((turhakepeli)Game.Instance).Add(this, 2); |
---|
1301 | ((turhakepeli)Game.Instance).Add(this.ylaOsa, 2); |
---|
1302 | } |
---|
1303 | } |
---|
1304 | }; |
---|
1305 | //kerroksenVaihtaja.Start(); |
---|
1306 | } |
---|
1307 | public void VaihdaKuva(Image alaOsanUusiKuva, Image ylaOsanUusiKuva) |
---|
1308 | { |
---|
1309 | this.Image = alaOsanUusiKuva; |
---|
1310 | this.ylaOsa.Image = ylaOsanUusiKuva; |
---|
1311 | } |
---|
1312 | |
---|
1313 | public void TuhoaLaatikko() |
---|
1314 | { |
---|
1315 | this.ylaOsa.Destroy(); |
---|
1316 | this.Destroy(); |
---|
1317 | } |
---|
1318 | } |
---|