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

Revision 7032, 47.8 KB checked in by novaanan, 6 years ago (diff)

Lishää hienoshäätöjä

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