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

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