source: 2015/30/NoelV/peli0.0.0.3/turhakepeli/turhakepeli/turhakepeli/turhakepeli.cs @ 7019

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