source: 2013/23/NicoA/peli1/peli1/peli1/peli1.cs @ 4026

Revision 4026, 21.3 KB checked in by niisala, 8 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
9
10
11class Pelaaja : PhysicsObject
12{
13    DoubleMeter pelaajaElama;
14    public DoubleMeter PelaajaElama { get { return pelaajaElama; } }
15    public IntMeter Lvl;
16    public Pelaaja(double leveys, double korkeus)
17        : base(leveys, korkeus)
18    {
19        pelaajaElama = new DoubleMeter(100, 0, 100);
20        this.pelaajaXp = new IntMeter(0, 0, 100);
21        Lvl = new IntMeter(0);
22    }
23
24
25    public void KasvataExpia(int maara)
26    {
27        int ylijaama = 0;
28        if (maara + pelaajaXp.Value >= pelaajaXp.MaxValue)
29        {
30            ylijaama = (maara + pelaajaXp.Value) - pelaajaXp.MaxValue;
31            pelaajaXp.Reset();
32            pelaajaXp.MaxValue = (int)(PelaajaXp.MaxValue * 1.2);
33            KasvataExpia(ylijaama);
34            Lvl.Value++;
35        }
36        else
37            pelaajaXp.Value += maara;
38    }
39
40    void KasvataLvlia()
41    {
42       
43    }
44
45
46    IntMeter pelaajaXp;
47    public IntMeter PelaajaXp { get { return this.pelaajaXp; } }
48}
49
50
51
52class Vihu : PhysicsObject
53{
54    private IntMeter elamaLaskuri = new IntMeter(30, 0, 30);
55    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
56
57
58    public Vihu(double leveys, double korkeus)
59        : base(leveys, korkeus)
60    {
61
62    }
63}
64
65class PalloVihu : PhysicsObject
66{
67    private IntMeter elamaLaskuri = new IntMeter(50, 0, 50);
68    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
69
70
71    public PalloVihu(double leveys, double korkeus)
72        : base(leveys, korkeus)
73    {
74
75    }
76}
77
78
79
80public class peli1 : PhysicsGame
81{
82    Image pelaajankuva = LoadImage("pelaaja1");
83    Image talokuva = LoadImage("talo");
84    Image taustakuva = LoadImage("maa");
85    Image kolikkokuva = LoadImage("kolikko");
86    Image palikkakuva = LoadImage("palikka");
87    Image miekkakuva = LoadImage("miekka");
88    Image ympyrakuva = LoadImage("ympyra");
89    Image elamakuva = LoadImage("elamat");
90    Image elamakuvat = LoadImage("elamat2");
91    Image metsakuva = LoadImage("metsä");
92    Image lattiakuva = LoadImage("lattia");
93    Image xpbar = LoadImage("xpbar");
94    Image xpbar1 = LoadImage("xpbar1");
95    Image pyramidkuva = LoadImage("pyramidi");
96
97    private Image[] palikanliikkuminen = LoadImages("palikka", "palikka2", "palikka3");
98    private Image[] miekkaisku = LoadImages("miekka1", "miekka2", "miekka3", "miekka4", "miekka5", "miekka6", "miekka7", "miekka8", "miekka9", "miekka10");
99    private Image[] puuanim = LoadImages("puu1", "puu2", "puu3", "puu4", "puu5");
100    private Image[] palloanim = LoadImages("pallovihu1", "pallovihu2", "pallovihu3", "pallovihu4", "pallovihu5", "pallovihu6", "pallovihu7", "pallovihu8", "pallovihu9", "pallovihu10", "pallovihu9", "pallovihu8", "pallovihu7", "pallovihu6", "pallovihu5", "pallovihu4",
101        "pallovihu3", "pallovihu2");
102
103    Vector aloituspaikka;
104    Pelaaja pelaaja1;
105    GameObject talo;
106    Inventory esineet;
107    DoubleMeter pelaaja1Elama;
108    DoubleMeter pelaaja1Xp;
109    AssaultRifle pelaajan1miekka;
110
111    int kenttaNro = 1;
112
113    public override void Begin()
114    {
115
116        SeuraavaKentta();
117        //LuoKentta("Taso1");
118
119
120    }
121
122    void SeuraavaKentta()
123    {
124        ClearAll();
125
126        if (kenttaNro == 1) LuoKentta("taso1", taustakuva);
127        else if (kenttaNro == 2) LuoKentta("taso2", lattiakuva);
128        //else if (kenttaNro == 3) LuoKentta("kentta3");
129        //else if (kenttaNro > 3) Exit();
130
131        MessageDisplay.X = Screen.Right;
132
133        Camera.Follow(pelaaja1);
134        Camera.StayInLevel = true;
135
136        IsMouseVisible = true;
137
138        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-50, 0));
139        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, new Vector(50, 0));
140        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 50));
141        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -50));
142
143        Keyboard.Listen(Key.Left, ButtonState.Released, PysaytaPelaajaa, null, new Vector(0, 0));
144        Keyboard.Listen(Key.Right, ButtonState.Released, PysaytaPelaajaa, null, new Vector(0, 0));
145        Keyboard.Listen(Key.Up, ButtonState.Released, PysaytaPelaajaa, null, new Vector(0, 0));
146        Keyboard.Listen(Key.Down, ButtonState.Released, PysaytaPelaajaa, null, new Vector(0, 0));
147
148        Keyboard.Listen(Key.Left, ButtonState.Down, pelaajatahtaa, "", pelaajan1miekka, Angle.FromDegrees(180));
149        Keyboard.Listen(Key.Right, ButtonState.Down, pelaajatahtaa, "", pelaajan1miekka, Angle.FromDegrees(0));
150        Keyboard.Listen(Key.Up, ButtonState.Down, pelaajatahtaa, "", pelaajan1miekka, Angle.FromDegrees(90));
151        Keyboard.Listen(Key.Down, ButtonState.Down, pelaajatahtaa, "", pelaajan1miekka, Angle.FromDegrees(270));
152
153        Keyboard.Listen(Key.Space, ButtonState.Released, iskemiekalla, "iske", pelaajan1miekka);
154
155        Keyboard.Listen(Key.X, ButtonState.Pressed, ValikkoPause, "Pysäyttää pelin");
156
157        Level.CreateBorders();
158
159
160        pelaaja1Elama = new DoubleMeter(100);
161        pelaaja1Elama.MaxValue = 100;
162
163        ProgressBar pelaaja1ElamaPalkki = new ProgressBar(Screen.Width / 3, 20);
164        pelaaja1ElamaPalkki.X = Screen.Left + Screen.Width / 4;
165        pelaaja1ElamaPalkki.Y = Screen.Top - 40;
166        pelaaja1ElamaPalkki.BindTo(pelaaja1.PelaajaElama);
167        //pelaaja1ElamaPalkki.Color = Color.Red;
168        //pelaaja1ElamaPalkki.BarColor = Color.Green;
169        pelaaja1ElamaPalkki.Angle = Angle.FromDegrees(0);
170        pelaaja1ElamaPalkki.Image = LoadImage("elamat2");
171        pelaaja1ElamaPalkki.BarImage = LoadImage("elamat");
172        Add(pelaaja1ElamaPalkki);
173
174
175        ProgressBar pelaajaXp = new ProgressBar(Screen.Width / 3.5, 15);
176        pelaajaXp.X = Screen.Left + Screen.Width / 4;
177        pelaajaXp.Y = Screen.Top - 55;
178        pelaajaXp.BindTo(pelaaja1.PelaajaXp);
179        //pelaajaXp.Color = Color.Red;
180        //pelaajaXp.BarColor = Color.Green;
181        pelaajaXp.Angle = Angle.FromDegrees(0);
182        pelaajaXp.Image = LoadImage("xpbar1");
183        pelaajaXp.BarImage = LoadImage("xpbar");
184        Add(pelaajaXp);
185
186        Label pelaajaXpNaytto = new Label();
187        pelaajaXpNaytto.TextScale = new Vector(0.8, 0.8);
188        pelaajaXpNaytto.BindTo(pelaaja1.PelaajaXp);
189        pelaajaXpNaytto.Y = pelaajaXp.Y - 3;
190        pelaajaXpNaytto.Right = pelaajaXp.Left - 10;
191        Add(pelaajaXpNaytto);
192
193        Label pelaajaLvLNaytto = new Label();
194        pelaajaLvLNaytto.BindTo(pelaaja1.Lvl);
195        pelaajaLvLNaytto.Position = new Vector(Screen.Left + 25, Screen.Top - 25);
196        pelaajaLvLNaytto.IntFormatString = "Lvl: {0}";
197        Add(pelaajaLvLNaytto);
198
199
200        Widget kuva = new Widget(40, 40);
201        kuva.Color = Color.Red;
202        kuva.Image = LoadImage("ympyra");
203        kuva.X = Screen.Left + Screen.Width / 20;
204        kuva.Y = Screen.Top - 40;
205        Add(kuva);
206        Mouse.ListenOn(kuva, MouseButton.Left, ButtonState.Pressed,
207ValikkoPause, "Pysäyttää pelin");
208
209
210
211        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
212        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
213
214        //AsetaOhjaimet();
215
216    }
217
218
219
220    void PainettiinValikonNappia(int valinta)
221    {
222        switch (valinta)
223        {
224            case 0:
225                Pause();
226                break;
227            case 1:
228                AvaaInventory();
229                break;
230            case 2:
231                Exit();
232                break;
233
234        }
235    }
236
237    void AvaaInventory()
238    {
239
240        esineet.IsVisible = true;
241    }
242
243    void ValikkoPause()
244    {
245        if (IsPaused)
246        {
247            SuljeInventory();
248        }
249        Pause();
250        MultiSelectWindow valikko = new MultiSelectWindow("Valikko", "jatka peliä", "Tavarat", "Lopeta peli");
251        valikko.ItemSelected += PainettiinValikonNappia;
252        valikko.Color = Color.Blue;
253        Add(valikko);
254
255    }
256
257    void LiikutaPelaajaa(Vector vectori)
258    {
259        pelaaja1.Hit(vectori);
260    }
261
262    void PysaytaPelaajaa(Vector vectori)
263    {
264        pelaaja1.Velocity = vectori;
265    }
266
267    void pelaajatahtaa(AssaultRifle rifle, Angle angle)
268    {
269        rifle.Angle = angle;
270    }
271
272
273    void LuoKentta(String KentanNimi, Image taustakuva)
274    {
275        TileMap kentta = TileMap.FromLevelAsset(KentanNimi);
276
277        kentta.SetTileMethod('P', LisaaPelaaja);
278        kentta.SetTileMethod('T', LisaaTalo);
279        kentta.SetTileMethod('K', LisaaKolikko);
280        kentta.SetTileMethod('S', LisaaVihollinen);
281        kentta.SetTileMethod('Y', LisaaYmpyra);
282        kentta.SetTileMethod('U', LisaaPuu);
283        kentta.SetTileMethod('M', LisaaMetsa);
284        kentta.SetTileMethod('A', LisaaPyramidi);
285        kentta.SetTileMethod('V', LisaaPallovihu);
286
287        kentta.Execute(25, 25);
288        //Level.CreateBorders();
289        Level.Background.Image = taustakuva;
290        Level.Background.TileToLevel();
291        Add(esineet);
292        esineet.IsVisible = false;
293        PushButton button = new PushButton("Close");
294        button.Clicked += SuljeInventory;
295        esineet.Add(button);
296        //Level.Background.CreateGradient(Color.Green, Color.SkyBlue);
297    }
298
299    void LuoKentta2()
300    {
301        TileMap kentta2 = TileMap.FromLevelAsset("Taso2");
302
303        kentta2.SetTileMethod('P', LisaaPelaaja);
304        kentta2.SetTileMethod('T', LisaaTalo);
305        kentta2.SetTileMethod('K', LisaaKolikko);
306
307        kentta2.SetTileMethod('S', LisaaVihollinen);
308        kentta2.SetTileMethod('V', LisaaPallovihu);
309
310        kentta2.SetTileMethod('Y', LisaaYmpyra);
311        kentta2.SetTileMethod('U', LisaaPuu);
312        kentta2.SetTileMethod('M', LisaaMetsa);
313
314        kentta2.Execute(25, 25);
315        //Level.CreateBorders();
316        Level.Background.Image = lattiakuva;
317        Level.Background.TileToLevel();
318        Add(esineet);
319        esineet.IsVisible = false;
320        PushButton button = new PushButton("Close");
321        button.Clicked += SuljeInventory;
322        esineet.Add(button);
323        //Level.Background.CreateGradient(Color.Green, Color.SkyBlue);
324    }
325
326
327    void SuljeInventory()
328    {
329        esineet.IsVisible = false;
330        Pause();
331    }
332
333    void LisaaPelaaja(Vector paikka, double x, double y)
334    {
335        aloituspaikka = paikka;
336        pelaaja1 = new Pelaaja(50, 70);
337        pelaaja1.Image = pelaajankuva;
338        pelaaja1.Shape = Shape.FromImage(pelaajankuva);
339        pelaaja1.CanRotate = false;
340        pelaaja1.Position = paikka;
341        pelaaja1.LinearDamping = 0.95;
342
343        AddCollisionHandler(pelaaja1, "kolikko", TormaaKolikkoon);
344        AddCollisionHandler(pelaaja1, "pyramid", TormaaPyramidiin);
345        AddCollisionHandler(pelaaja1, "laatta", TormaaLaattaan);
346
347
348        Add(pelaaja1);
349
350
351
352        //pelaajan1miekka = new PhysicsObject(100, 20);
353        //pelaajan1miekka.Angle = Angle.FromDegrees(0);
354        //pelaajan1miekka.Position = pelaaja1.Position;
355        //pelaajan1miekka.Shape = Shape.Diamond;
356        //pelaajan1miekka.CollisionIgnoreGroup = 2;
357        //pelaajan1miekka.Tag = "miekka";
358        //pelaajan1miekka.AngularDamping = 0.5;
359        //pelaaja1.CollisionIgnoreGroup = 2;
360        //AxleJoint liitos = new AxleJoint(pelaajan1miekka, pelaaja1);
361        //Add(liitos);
362        //Add(pelaajan1miekka);
363
364        pelaajan1miekka = new AssaultRifle(50, 50);
365        //pelaajan1miekka.Image = miekkakuva;
366
367        pelaajan1miekka.Animation = new Animation(miekkaisku);
368        //miekka.Animation = new Animation(miekkaisku);
369        pelaajan1miekka.Animation.FPS = 70;
370        pelaajan1miekka.Animation.Played += delegate { pelaajan1miekka.IsVisible = false; };
371
372        pelaaja1.Add(pelaajan1miekka);
373        AddCollisionHandler(pelaaja1, "vihollinen", vihollinentormaa);
374        AddCollisionHandler(pelaaja1, "pallovihu", pallovihutormaa);
375        //pelaajan1miekka.X = 20.0;
376        pelaajan1miekka.IsVisible = false;
377
378        pelaaja1.PelaajaElama.LowerLimit += AloitaAlusta;
379
380        esineet = new Inventory();
381        //esineet.AddItem(new PhysicsObject(50, 50, Shape.Circle), pelaajankuva);
382        esineet.ItemSelected += EsineValittu;
383
384    }
385
386    void LisaaPyramidi(Vector paikka, double x, double y)
387    {
388        PhysicsObject pyramid = PhysicsObject.CreateStaticObject(120, 100);
389        pyramid.IgnoresCollisionResponse = true;
390        pyramid.Position = paikka;
391        pyramid.Image = pyramidkuva;
392        pyramid.Tag = "pyramid";
393        Add(pyramid);
394        pyramid.Shape = Shape.FromImage(pyramidkuva);
395
396    }
397
398    void TormaaPyramidiin(PhysicsObject pelaaja, PhysicsObject pyramid)
399    {
400        //Kasvatetaan kenttänumeroa yhdellä ja siirrytään seuraavaan kenttään:
401        kenttaNro++;
402        SeuraavaKentta();
403    }
404    void TormaaLaattaan(PhysicsObject pelaaja, PhysicsObject laatta)
405    {
406        //Kasvatetaan kenttänumeroa yhdellä ja siirrytään seuraavaan kenttään:
407        kenttaNro--;
408        SeuraavaKentta();
409    }
410
411    void AloitaAlusta()
412    {
413        pelaaja1.Position = aloituspaikka;
414        pelaaja1.PelaajaElama.Reset();
415
416    }
417
418
419    void miekkaosui(IPhysicsObject kohde, IPhysicsObject miekka)
420    {
421        if (kohde is Vihu)
422        {
423            Vihu vihu = (Vihu)kohde;
424            vihu.ElamaLaskuri.Value -= 5;
425            MessageDisplay.Add("au");
426            miekka.Angle = Angle.FromDegrees(0); miekka.AngularVelocity = 0;
427        }
428        else if (kohde is PalloVihu)
429        {
430            PalloVihu pallovihu = (PalloVihu)kohde;
431            pallovihu.ElamaLaskuri.Value -= 5;
432            MessageDisplay.Add("auzzz");
433            miekka.Angle = Angle.FromDegrees(0); miekka.AngularVelocity = 0;
434        }
435
436    }
437    //void IskuOsui(PhysicsObject isku, PhysicsObject kohde)
438    //{
439    //    isku.Destroy();
440    //   
441    //}
442
443
444    void iskemiekalla(AssaultRifle miekka)
445    {
446        //miekka.AngularVelocity = 500;
447        //Timer ajastin = new Timer();
448
449        //ajastin.Interval = 0.5;
450        //ajastin.Timeout += delegate { miekka.Angle = Angle.FromDegrees(0); miekka.AngularVelocity = 0;};
451        //ajastin.Start(1);
452        miekka.IsVisible = true;
453
454        miekka.Animation.Start(1);
455
456        PhysicsObject ammus = miekka.Shoot();
457        if (ammus == null) return;
458        ammus.Tag = "miekka";
459        ammus.IsVisible = false;
460        ammus.LifetimeLeft = TimeSpan.FromMilliseconds(100);
461
462    }
463
464    void LisaaVihollinen(Vector paikka, double x, double y)
465    {
466        Vihu vihollinen = new Vihu(40, 40);
467        vihollinen.Position = paikka;
468        vihollinen.Tag = "vihollinen";
469        vihollinen.Image = palikkakuva;
470
471        vihollinen.Mass = 1000;
472        Add(vihollinen);
473        vihollinen.CanRotate = false;
474
475        vihollinen.Animation = new Animation(palikanliikkuminen);
476        vihollinen.Animation.Start();
477        vihollinen.Animation.FPS = 7;
478
479        vihollinen.ElamaLaskuri.LowerLimit += delegate { vihollinenkuolee(vihollinen); };
480
481        AddCollisionHandler<IPhysicsObject, IPhysicsObject>(vihollinen, "miekka", miekkaosui);
482        RandomMoverBrain aivot = new RandomMoverBrain(100);
483        aivot.ChangeMovementSeconds = 2;
484        aivot.WanderRadius = 280;
485        vihollinen.Brain = aivot;
486    }
487
488    void vihollinenkuolee(Vihu vihollinen)
489    {
490        vihollinen.Destroy();
491        pelaaja1.KasvataExpia(5);
492        Timer.SingleShot(4, delegate
493        {
494            Vector paikka = vihollinen.Position;
495            while (GetObjectAt(paikka, vihollinen.Width) != null)
496                paikka = Level.GetRandomPosition();
497
498            LisaaVihollinen(paikka, vihollinen.Width, vihollinen.Height);
499        });
500    }
501
502    void vihollinentormaa(PhysicsObject pelaaja1, PhysicsObject vihollinen)
503    {
504        if (!(vihollinen is Vihu))
505            return;
506        Vihu vihu = (Vihu)vihollinen;
507
508        //MessageDisplay.Add("Bump!");
509
510        if (!(pelaaja1 is Pelaaja))
511            return;
512        Pelaaja pelaaja = (Pelaaja)pelaaja1;
513        pelaaja.PelaajaElama.Value += -10;
514    }
515
516
517    //
518
519    void LisaaPallovihu(Vector paikka, double x, double y)
520    {
521        PalloVihu pallovihu = new PalloVihu(80, 60);
522        pallovihu.Position = paikka;
523        pallovihu.Tag = "pallovihu";
524
525        pallovihu.Mass = 1000;
526        Add(pallovihu);
527        pallovihu.CanRotate = false;
528
529        pallovihu.Animation = new Animation(palloanim);
530        pallovihu.Animation.Start();
531        pallovihu.Animation.FPS = 30;
532
533        pallovihu.ElamaLaskuri.LowerLimit += delegate { pallovihukuolee(pallovihu); };
534
535        AddCollisionHandler<IPhysicsObject, IPhysicsObject>(pallovihu, "miekka", miekkaosui);
536        RandomMoverBrain aivot = new RandomMoverBrain(100);
537        aivot.ChangeMovementSeconds = 2;
538        aivot.WanderRadius = 280;
539        pallovihu.Brain = aivot;
540    }
541
542    void pallovihukuolee(PalloVihu pallovihu)
543    {
544        pallovihu.Destroy();
545        pelaaja1.KasvataExpia(7);
546        Timer.SingleShot(4, delegate
547        {
548            Vector paikka = pallovihu.Position;
549            while (GetObjectAt(paikka, pallovihu.Width) != null)
550                paikka = Level.GetRandomPosition();
551
552            LisaaPallovihu(paikka, pallovihu.Width, pallovihu.Height);
553        });
554    }
555
556    void pallovihutormaa(PhysicsObject pelaaja1, PhysicsObject pallovihu)
557    {
558        if (!(pallovihu is PalloVihu))
559            return;
560        PalloVihu pallovihu1 = (PalloVihu)pallovihu;
561
562        if (!(pelaaja1 is Pelaaja))
563            return;
564        Pelaaja pelaaja = (Pelaaja)pelaaja1;
565        pelaaja.PelaajaElama.Value += -10;
566    }
567
568
569    void EsineValittu(PhysicsObject esine)
570    {
571        esineet.RemoveItem(esine);
572        esine.Destroy();
573        esineet.IsVisible = false;
574        Pause();
575    }
576
577    void LisaaTalo(Vector paikka, double x, double y)
578    {
579        talo = new GameObject(200, 200);
580        talo.Position = paikka;
581        talo.Image = talokuva;
582        Add(talo);
583
584    }
585
586    void LisaaKolikko(Vector paikka, double x, double y)
587    {
588        PhysicsObject kolikko = PhysicsObject.CreateStaticObject(50, 50);
589        kolikko.IgnoresCollisionResponse = true;
590        kolikko.Position = paikka;
591        kolikko.Image = kolikkokuva;
592        kolikko.Tag = "kolikko";
593        Add(kolikko);
594        kolikko.Shape = Shape.FromImage(kolikkokuva);
595
596    }
597
598    void LisaaPuu(Vector paikka, double x, double y)
599    {
600        GameObject puu = new GameObject(90, 150);
601        puu.Position = paikka;
602        //puu.Image = puukuva;
603        puu.Tag = "puu";
604        Add(puu, 1);
605        //puu.CollisionIgnoreGroup = 1;
606
607        PhysicsObject Puu = PhysicsObject.CreateStaticObject(20, 15);
608        Puu.Tag = "Puu";
609        Puu.X = puu.X;
610        Puu.Y = puu.Y - 70;
611        Puu.IsVisible = false;
612        Add(Puu);
613
614        puu.Animation = new Animation(puuanim);
615        puu.Animation.Start();
616        puu.Animation.FPS = 7;
617    }
618
619    void LisaaMetsa(Vector paikka, double x, double y)
620    {
621        PhysicsObject metsa = PhysicsObject.CreateStaticObject(50, 70);
622        metsa.Position = paikka;
623        metsa.Image = metsakuva;
624        metsa.Tag = "metsa";
625        Add(metsa);
626        metsa.CollisionIgnoreGroup = 1;
627
628    }
629
630    void TormaaKolikkoon(PhysicsObject pelaaja1, PhysicsObject kolikko)
631    {
632        kolikko.Destroy();
633    }
634
635    void LisaaYmpyra(Vector paikka, double x, double y)
636    {
637        PhysicsObject ympyra = PhysicsObject.CreateStaticObject(150, 70);
638        ympyra.IgnoresCollisionResponse = true;
639        ympyra.Position = paikka;
640        ympyra.Image = ympyrakuva;
641        Add(ympyra, -1);
642        ympyra.Shape = Shape.FromImage(ympyrakuva);
643        Add(pelaaja1, 1);
644        Timer ajastin = new Timer();
645        ajastin.Start();
646        ajastin.Interval = 1;
647        ajastin.Timeout += delegate { HealaaJosYmpyrassa(ympyra); };
648    }
649
650    void HealaaJosYmpyrassa(PhysicsObject ympyra)
651    {
652        if (ympyra.IsInside(pelaaja1.Position))
653            pelaaja1.PelaajaElama.Value += 3;
654
655
656    }
657
658
659
660
661}
662
663class Inventory : Widget
664{
665    /// <summary>
666    /// Tapahtuma, kun esine on valittu.
667    /// </summary>
668    public event Action<PhysicsObject> ItemSelected;
669    public Dictionary<PhysicsObject, PushButton> items = new Dictionary<PhysicsObject, PushButton>();
670
671
672    /// <summary>
673    /// Luo uuden esinevalikon.
674    /// </summary>
675    public Inventory()
676        : base(new HorizontalLayout())
677    {
678    }
679
680    public void RemoveItem(PhysicsObject obj)
681    {
682        foreach (var item in items)
683        {
684            if (item.Key.Equals(obj))
685                base.Remove(item.Value);
686        }
687    }
688
689
690    /// <summary>
691    /// Lisää esineen.
692    /// </summary>
693    /// <param name="item">Lisättävä esine.</param>
694    /// <param name="kuva">Esineen ikoni, joka näkyy valikossa.</param>
695    public void AddItem(PhysicsObject item, Image kuva)
696    {
697        PushButton icon = new PushButton(kuva);
698        items.Add(item, icon);
699        Add(icon);
700        icon.Clicked += delegate() { SelectItem(item); };
701    }
702
703    void SelectItem(PhysicsObject item)
704    {
705        if (ItemSelected != null)
706        {
707            ItemSelected(item);
708        }
709    }
710}
711
712
713
Note: See TracBrowser for help on using the repository browser.