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

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