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

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