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

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