source: 2015/23/HenriK/dungeoncrawlar/dungeoncrawlar/dungeoncrawlar/dungeoncrawlar.cs @ 7234

Revision 7234, 27.4 KB checked in by sieerinn, 3 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
9class Pelihahmo : PhysicsObject
10{
11    private IntMeter elamaLaskuri;
12    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
13
14    public Pelihahmo(double leveys, double korkeus, int elämät, int maxE)
15        : base(leveys, korkeus)
16    {
17        elamaLaskuri = new IntMeter(elämät, 0, maxE);
18       
19    }
20}
21
22public class dungeoncrawlar : PhysicsGame
23{
24    EasyHighScore ennätys = new EasyHighScore();
25   
26    Pelihahmo player;
27    PhysicsObject ammus;
28    PhysicsObject miekka;
29    PhysicsObject avain;
30    PhysicsObject m1911;
31    PhysicsObject ase96;
32    PhysicsObject staminup;
33    PhysicsObject juggernog;
34
35    Listener aseNyt;
36    Image[] lattiatext = LoadImages("stooones mang", "stooones mang2", "stooones mang3");
37    Image[] NRGpellet = LoadImages("NRGpellet1", "NRGpellet2", "NRGpellet3", "NRGpellet4","NRGpellet5","NRGpellet5.5","NRGpellet6","NRGpellet6");
38    Image[] lattiakolo = LoadImages("blackwhitegroundhole1.", "blackwhitegroundhole2", "blackwhitegroundhole2 - Copy", "blackwhitegroundhole3", "blackwhitegroundhole3 - copy", "blackwhitegroundhole4", "blackwhitegroundhole4 - copy");
39    Image ruumisvihu = LoadImage("lizerded");
40
41    int taso= 1;
42    int pisteet = 0;
43    int avaintenLkm;
44    int l96 = 0;
45    int elämät = 100;
46    int lisko = 0;
47   
48    int nog = 0;
49
50
51    PhysicsObject[] palat;
52    Image dead_dragon = LoadImage("dedragon");
53    Image dead_dragonbod = LoadImage("dedragon bod");
54    Image paaKuva = LoadImage("weedragon hed");
55
56    Image hantaKuva = LoadImage("weedragon");
57    Image hantaKuvaFlip;
58    Image paaKuvaFlip;
59    Image dead_dragonFlip;
60   
61
62    public override void Begin()
63    {
64        player = new Pelihahmo(45, 50, elämät + nog, 100 + nog);
65        hantaKuvaFlip = Image.Flip(hantaKuva);
66        paaKuvaFlip = Image.Flip(paaKuva);
67
68        SmoothTextures = false;
69        luohuone(1);
70        IsFullScreen = false;
71       
72       
73        avaintenLkm = 0;
74       
75
76        //AddCollisionHandler(player, "seina", PelaajaTormaaSeinaan);
77
78        //PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
79       
80    }
81    void LuoAse96(Vector paikka, double leveys, double korkeus)
82    {
83        arvotext(paikka, leveys, korkeus);
84        ase96 = new PhysicsObject(100, 100);
85        Image c = LoadImage("l96");
86       
87       
88        ase96.Image = c;
89        ase96.Tag = "ase96";
90        Add(ase96);
91
92       
93    }
94    void PoimiAse(PhysicsObject tormaaja, PhysicsObject tormatty)
95    {
96        ase96.Destroy();
97        l96 += 1;
98        aseet();
99    }
100    void luoruumis(Vector paikka,Image kuva)
101    {
102        GameObject ruumis = new GameObject(60*1.5, 60*1.5);
103        ruumis.Image = kuva;
104        ruumis.Position = paikka;
105        Add(ruumis, -1);
106        ruumis.MaximumLifetime = TimeSpan.FromSeconds(200);
107
108
109    }
110    void luoPelaajaRuumis(Vector paikka, Image kuva,Angle kulma)
111    {
112        GameObject ruumis = new GameObject(50, 55);
113        ruumis.Image = kuva;
114        ruumis.Position = paikka;
115        ruumis.Angle = kulma;
116        Add(ruumis, -1);
117    }
118    void lepakko(Vector paikka, double leveys, double korkeus)
119    {
120       /* arvotext(paikka, leveys, korkeus);
121        Pelihahmo lepakko = new Pelihahmo(50, 50, 20, 20);
122        lepakko.Position = paikka;
123        lepakko.LinearDamping = 0.5;
124        Add(lepakko);
125        lepakko.CollisionIgnoreGroup = 3;
126
127
128        Image c = LoadImage("zombi");
129        //vihu.Shape = Shape.FromImage(c);
130        lepakko.Image = c;
131        lepakko.ElamaLaskuri.LowerLimit += delegate
132        {
133            lepakko.Destroy();
134            luoruumis(lepakko.Position, ruumisvihu[0]);
135        };
136
137        FollowerBrain aivo = new FollowerBrain(player);
138        aivo.Speed = 200;
139        lepakko.Brain = aivo;
140        lepakko.Tag = "vihu";
141        aivo.TurnWhileMoving = true;
142        AddCollisionHandler(lepakko, "player", delegate(PhysicsObject a, PhysicsObject b)
143        {
144            vahinko(a, b, 10);
145        });
146
147        Timer ajastin = new Timer();
148        ajastin.Interval = 0.05;
149        ajastin.Timeout += delegate
150        {
151            GameObject väistä = null;
152            double väistöEtäisyys = 10;
153            foreach (GameObject ammus2 in GetObjectsWithTag("ammus"))
154            {
155                double etäisyys = Vector.Distance(ammus2.Position, lepakko.Position);
156                if (Vector.Distance(ammus2.Position, lepakko.Position) < väistöEtäisyys)
157                {
158                    väistöEtäisyys = etäisyys;
159                    väistä = ammus2;
160                }
161            }
162
163            if (väistä != null)
164            {
165                lepakko.Brain = null;
166                lepakko.Push((lepakko.Position - väistä.Position) * 500);
167            }
168            else
169            {
170                lepakko.Brain = aivo;
171            }
172        };
173        ajastin.Start();*/
174    }
175    void Vihu(Vector paikka, double leveys, double korkeus)
176    {
177        lisko++;
178        arvotext(paikka, leveys, korkeus);
179        Pelihahmo vihu = new Pelihahmo(60, 40, 20, 20);
180        vihu.Position = paikka;
181        vihu.LinearDamping = 0.5;
182        Add(vihu);
183        vihu.CollisionIgnoreGroup = 4;
184
185       
186       
187        Image[] Lizerd = LoadImages("lizerd1", "lizerd2", "lizerd4", "lizerd3");
188        //vihu.Shape = Shape.FromImage(c);
189       
190        vihu.Animation = new Animation(Lizerd);
191        vihu.Animation.FPS = 7;
192        vihu.Animation.Start();
193
194        vihu.ElamaLaskuri.LowerLimit += delegate   
195        {
196            pisteet = pisteet + 100;
197            vihu.Destroy();
198            luoruumis(vihu.Position, ruumisvihu);
199            lisko--;
200            MessageDisplay.Add("liskoja jäljellä:" + lisko);
201            player.ElamaLaskuri.Value += 4;
202        };
203
204        FollowerBrain aivo = new FollowerBrain(player);
205        aivo.Speed = 200;
206        vihu.Brain = aivo;
207        vihu.Tag = "vihu";
208        aivo.TurnWhileMoving = true;
209        AddCollisionHandler(vihu, "player", delegate(PhysicsObject a, PhysicsObject b)
210        {
211            vahinko(a, b, 10);
212        });
213
214        Timer ajastin = new Timer();
215        ajastin.Interval = 0.05;
216        ajastin.Timeout += delegate
217        {
218            GameObject väistä = null;
219            double väistöEtäisyys = 40;
220            foreach (GameObject ammus in GetObjectsWithTag("ammus"))
221            {
222                double etäisyys = Vector.Distance(ammus.Position, vihu.Position);
223                if (Vector.Distance(ammus.Position, vihu.Position) < väistöEtäisyys)
224                {
225                    väistöEtäisyys = etäisyys;
226                    väistä = ammus;
227                }
228            }
229
230            if (väistä != null)
231            {
232                vihu.Brain = null;
233                vihu.Push((vihu.Position - väistä.Position) * 500);
234            }
235            else
236            {
237                vihu.Brain = aivo;
238            }
239        };
240        ajastin.Start();
241    }
242    void bossi(Vector paikka, double leveys, double korkeus)
243    {
244        arvotext(paikka, leveys, korkeus);
245        Image Liz_King = LoadImage("liz king");
246        Pelihahmo pääVihu = new Pelihahmo(700, 400, 20000, 20000);
247        pääVihu.Position = paikka;
248        pääVihu.Shape = Shape.FromImage(Liz_King);
249        pääVihu.LinearDamping = 0.8;
250        Add(pääVihu);
251        pääVihu.CollisionIgnoreGroup = 4;
252        pääVihu.Tag = "vihu";
253       
254        Timer bossiajastin = new Timer();
255        bossiajastin.Interval = 3;
256        bossiajastin.Timeout += () => bossiattackrotate(pääVihu);
257        bossiajastin.Start();
258
259       
260       
261        ProgressBar elamaPalkki = new ProgressBar(800, 30);
262        elamaPalkki.X = 0;
263        elamaPalkki.Y = Window.Height / 2 - 100;
264       
265        elamaPalkki.BindTo(pääVihu.ElamaLaskuri);
266        Add(elamaPalkki);
267
268        pääVihu.Image = Liz_King;
269        pääVihu.ElamaLaskuri.LowerLimit += delegate
270        {
271            pisteet = pisteet + 10000;
272            pääVihu.Destroy();
273            luoruumis(pääVihu.Position, ruumisvihu);
274            lisko--;
275            MessageDisplay.Add("tapoit pää bossin");
276            bossiajastin.Stop();
277            LisaaPorrasYlos(pääVihu.Position, 100, 100);
278        };
279    }
280    void bossiattackrotate(Pelihahmo vihu)
281    {
282
283        RandomGen.SelectOne(new Action[] { () => bossishoot(vihu), () => bossislam(vihu), () => bossispawn(vihu.Position) })();
284    }
285    void bossishoot(Pelihahmo vihu)
286    {
287        for (int i = 0; i <= 5; i++ )
288        {
289
290            PhysicsObject homAmmus = new PhysicsObject(10, 10);
291            homAmmus.IgnoresCollisionResponse = true;
292            homAmmus.Position = vihu.Position;
293            homAmmus.Animation = new Animation(NRGpellet);
294            homAmmus.Animation.FPS = 7;
295            homAmmus.Animation.Start();
296            homAmmus.Angle = vihu.Angle * 5 * i;
297
298
299            Add(homAmmus);
300            homAmmus.MaximumLifetime = new TimeSpan(100000000);
301            homAmmus.Push(homAmmus.Angle.GetVector() * 100000 );
302            FollowerBrain aivo = new FollowerBrain(player);
303            aivo.Speed = 200;
304            homAmmus.Brain = aivo;
305            homAmmus.Tag = "vihu";
306            AddCollisionHandler(homAmmus, "player", delegate(PhysicsObject a, PhysicsObject b)
307            {
308                vahinko(a, b, 10);
309            });
310        }
311    }
312    void bossislam(Pelihahmo vihu)
313    {
314        int ammuksia = 60;
315
316        for (int i = 0; i <= ammuksia; i++)
317        {
318            PhysicsObject ammus2 = new PhysicsObject(10, 10);
319           
320            ammus2.IgnoresCollisionResponse = true;
321            ammus2.Position = vihu.Position;
322            ammus2.Animation = new Animation(NRGpellet);
323            ammus2.Animation.FPS = 7;
324            ammus2.Animation.Start();
325            ammus2.Angle = Angle.FromDegrees(360 * i/(double)ammuksia);
326
327            Add(ammus2);
328            ammus2.MaximumLifetime = TimeSpan.FromSeconds(3);
329            ammus2.Push(ammus2.Angle.GetVector() * 10000);
330           
331            ammus2.Tag = "vihu";
332            AddCollisionHandler(ammus2, "player", delegate(PhysicsObject a, PhysicsObject b)
333            {
334                vahinko(a, b, 10);
335            });
336        }
337    }
338    void bossispawn(Vector paikka)
339    {
340        Vihu(paikka, 60, 40);
341    }
342   
343   
344    void aseet()
345    {
346
347       
348
349
350        Keyboard.Listen(Key.Enter, ButtonState.Down, ammupistol, "pum pum");
351
352        /*Keyboard.Listen(Key.D3, ButtonState.Pressed, aseenVaihto, "aseen vaihto", 2);
353        Keyboard.Listen(Key.D4, ButtonState.Pressed, aseenVaihto, "aseen vaihto", 3);
354        Keyboard.Listen(Key.Space, ButtonState.Pressed, lyö, "aseen vaihto");*/
355
356       
357       
358    }
359    void aseenVaihto(int ase)
360    {
361        /*if (aseNyt != null)
362        {
363            aseNyt.Destroy();
364        }*/
365        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, ammupistol, "pum pum");
366        /*switch (ase)
367        {
368            case 1:         
369                aseNyt = Mouse.Listen(MouseButton.Left, ButtonState.Pressed, ammu, "pum pum");
370                break;
371            case 2:
372                aseNyt = Mouse.Listen(MouseButton.Left, ButtonState.Down, block, "pum pum");
373                break;
374            case 3:
375                aseNyt = Mouse.Listen(MouseButton.Left, ButtonState.Pressed, ammupistol, "pum pum");
376                break;
377        } */
378    }
379    void block()
380    {     
381        Image c = LoadImage("characterovi");
382        player.Shape = Shape.FromImage(c);
383        player.Image = c;
384
385        ammus = new PhysicsObject(10.0, 100.0);
386        ammus.Shape = Shape.Rectangle;
387        ammus.Color = Color.Gray;
388        ammus.Position = player.Position + Vector.FromLengthAndAngle(40, player.Angle);
389        ammus.CollisionIgnoreGroup = 2;
390        ammus.Angle = player.Angle;
391        Add(ammus);
392        ammus.Tag = "ammus";
393        ammus.IsVisible = false;
394       
395        //ammus.Hit(impulssi);
396        ammus.MaximumLifetime = new TimeSpan(10000);
397
398    }
399    void lyö()
400    {
401        Image c = LoadImage("charactersword");
402        player.Shape = Shape.FromImage(c);
403        player.Image = c;
404
405        miekka = new PhysicsObject(50.0, 5.0);
406        miekka.Shape = Shape.Circle;
407        miekka.Color = Color.Gray;
408        Image y = LoadImage("sword");
409        miekka.Image = y;
410        miekka.Position = player.Position + (player.Angle + Angle.FromDegrees(90)).GetVector()*-15 + player.Angle.GetVector()*11;
411        miekka.CollisionIgnoreGroup = 1;
412        miekka.Angle = player.Angle + Angle.FromDegrees(45);
413       
414        Add(miekka);
415        Vector impulssi = Vector.FromLengthAndAngle(50, player.Angle + Angle.FromDegrees(46));
416        miekka.Hit(impulssi);
417        miekka.MaximumLifetime = new TimeSpan(2000000);
418        AddCollisionHandler(miekka, "vihu", delegate(PhysicsObject a, PhysicsObject b)
419        {
420            vahinko(a, b, 20);
421        });
422
423
424    }
425    void ammupistol()
426    {
427
428        Image i = LoadImage("thecharacterpistol");
429        player.Shape = Shape.FromImage(i);
430        player.Image = i;
431
432
433
434        ammus = new PhysicsObject(30.0, 10.0);
435        ammus.Shape = Shape.Circle;
436        ammus.Color = Color.Gold;
437        ammus.Position = player.Position;
438        ammus.CollisionIgnoreGroup = 1;
439        ammus.CollisionIgnoreGroup = 5;
440        Image d = LoadImage("bullet");
441        ammus.Shape = Shape.FromImage(d);
442        ammus.Image = d;
443        ammus.Angle = player.Angle;
444        ammus.Tag = "ammus";
445        Add(ammus);
446
447        Vector impulssi = Vector.FromLengthAndAngle(1000 + player.Velocity.Magnitude, player.Angle);
448        ammus.Hit(impulssi);
449       
450        ammus.MaximumLifetime = new TimeSpan(1000000);
451        AddCollisionHandler(ammus, "vihu", delegate(PhysicsObject a, PhysicsObject b)
452        {
453            vahinko(a, b, 10);
454        });
455
456
457    }
458    void zombinruokaa(PhysicsObject player, PhysicsObject vihu )
459    {
460        Pelihahmo hahmo = player as Pelihahmo;
461        if (hahmo != null)
462        {
463            hahmo.ElamaLaskuri.Value -= 10;
464        }
465    }
466    void vahinko(PhysicsObject ammus,PhysicsObject vihu,int vahinkomäär  )
467    {
468        Pelihahmo hahmo = vihu as Pelihahmo;
469        if(hahmo != null)
470        {
471            hahmo.ElamaLaskuri.Value -= vahinkomäär;
472        }
473
474    }
475
476    void luohuone(int huoneNumero)
477    {
478        Window.Width = 2048;
479        Window.Height = 1024;
480        Window.Top = 0;
481        Camera.Zoom(0.5);
482
483       
484        //Level.Background.Image = lattiatext[0];
485        //Level.Background.TileToLevel();
486
487       
488       
489       
490        /*TileMap ruudut = TileMap.FromLevelAsset("huone" + huoneNumero);
491        TileMap ruudut2 = TileMap.FromLevelAsset("huone" + huoneNumero);
492
493       
494           
495       
496        //3. Execute luo kentän
497        //   Parametreina leveys ja korkeus
498       
499       
500        ruudut.SetTileMethod('p', LuoPelaaja);
501        ruudut.SetTileMethod('w', LuoTaso);
502
503        ruudut.SetTileMethod('k', LuoOvi, Angle.FromDegrees(180));
504       
505
506        ruudut.SetTileMethod('r', luoAvain);
507        ruudut.SetTileMethod('s', luoStaminup);
508        ruudut.SetTileMethod('_', arvotext);
509        ruudut.SetTileMethod('a', LuoAse96);
510        ruudut.SetTileMethod('j', luoJuggernog);
511        ruudut.SetTileMethod('z', Luokolo5);
512        ruudut.SetTileMethod('b', Luokolo2);
513        ruudut.SetTileMethod('g', Luokolo3);
514        ruudut.SetTileMethod('t', Luokolo4);
515        ruudut.SetTileMethod('r', Luokolo1);
516       
517       
518
519       
520
521
522        ruudut2.SetTileMethod('v', Vihu);
523        ruudut2.SetTileMethod('l', lepakko);
524        ruudut.Execute(64, 64);
525        ruudut2.Execute(64, 64);*/
526        ClearAll();
527       
528        TileMap test;
529        if (taso % 5 == 0)
530        {
531            LuolaGeneraattori gen = new LuolaGeneraattori((string derp) => { });
532            gen.CreateDungeon(60, 40, features: 200, chests: 15);
533            var tiles = gen.GetDungeon();
534            test = new TileMap(tiles);
535        }
536        else
537            test = TileMap.FromLevelAsset("boss");
538 
539 
540        test.SetTileMethod('S', LisaaSeina);
541        test.SetTileMethod('|', LisaaSeina);
542        test.SetTileMethod('.', LisaaSeina);
543        test.SetTileMethod('b', bossi);
544        test.SetTileMethod('_', LisaaLattia);
545        test.SetTileMethod('#', LisaaLattia);
546        test.SetTileMethod('+', LisaaPorrasYlos);
547        test.SetTileMethod('-', LisaaPorrasAlas);
548        test.SetTileMethod('-', LuoPelaaja);
549        test.SetTileMethod('D', LisaaLattia);
550        test.SetTileMethod('C', LisaaArkku);
551        test.Execute(100, 100);
552 
553        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
554 
555        //Keyboard.Listen(Key.Space, ButtonState.Pressed, Begin, null);
556                Camera.StayInLevel = true;
557        näppäimet();
558        aseet();
559        avaintenLkm = 0;
560
561    }
562 
563    void LisaaSeina(Vector paikka, double leveys, double korkeus)
564    {
565        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
566        taso.Position = paikka;
567        taso.Color = Color.Black;
568        Add(taso);
569    }
570 
571    void LisaaLattia(Vector paikka, double leveys, double korkeus)
572    {
573        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
574        taso.Position = paikka;
575        Image tasoKuva = arvotext(paikka, leveys, korkeus);
576        taso.Image = tasoKuva;
577        taso.IgnoresCollisionResponse = true;
578       
579        Add(taso, -3);
580    }
581 
582    void LisaaPorrasAlas(Vector paikka, double leveys, double korkeus)
583    {
584        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
585        taso.Position = paikka;
586        taso.Color = Color.Red;
587       
588       
589        Add(taso, 6);
590       
591       
592    }
593 
594    void LisaaPorrasYlos(Vector paikka, double leveys, double korkeus)
595    {
596        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
597        taso.Position = paikka;     
598        taso.Color = Color.Blue;
599        taso.Tag = "porrasA";
600        Add(taso);
601    }
602 
603    void LisaaArkku(Vector paikka, double leveys, double korkeus)
604    {
605        if (RandomGen.NextDouble(0, 100) < 50)
606        {
607            PhysicsObject arkku = new PhysicsObject(leveys, korkeus);
608            arkku.Position = paikka;
609            arkku.Color = Color.Brown;
610            LisaaLattia(paikka, leveys, korkeus);
611            Add(arkku, 1);
612        }
613        else
614        {
615            Vihu(paikka, leveys, korkeus);
616           
617        }
618    }
619
620 
621    void AvaintenKerays(PhysicsObject tormaaja, PhysicsObject tormatty)
622    {
623       /*witch(kohde)
624        {
625            case "avain":
626                avaintenLkm += 1;
627                tormatty.Destroy();
628
629                break;
630            default:
631                break;
632        }*/
633
634        avaintenLkm++;
635        tormatty.Destroy();
636           
637    }
638
639    Image arvotext(Vector paikka, double leveys, double korkeus)
640    {
641        GameObject taso = new GameObject(leveys, korkeus);
642        taso.Position = paikka;
643        //taso.CollisionIgnoreGroup = 1;
644        if (RandomGen.NextDouble(0, 100) < 50)
645        {
646            taso.Image = lattiatext[2];
647            return lattiatext[2];
648        }
649        else
650        {
651            int x = RandomGen.NextInt(2);
652            taso.Image = lattiatext[x];
653            return lattiatext[x];
654        }
655
656
657
658
659       
660        Add(taso, -2);
661    }
662    void LuoTaso(Vector paikka, double leveys, double korkeus)
663    {
664        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
665        taso.Position = paikka; 
666        //taso.CollisionIgnoreGroup = 1;
667        taso.Color = Color.Gray;
668        Image a = LoadImage("wall");
669       
670        taso.Image = a;
671        Add(taso);
672    }
673    void luoAvain(Vector paikka, double leveys, double korkeus)
674    {
675        arvotext(paikka, leveys, korkeus);
676        if (RandomGen.NextDouble(0, 100) < 80)
677        {
678            avain = new PhysicsObject(50, 50);
679            Image c = LoadImage("gaykey");
680
681            avain.Image = c;
682            avain.Position = paikka;
683            avain.Tag = "avain";
684            Add(avain);
685        }
686       
687
688
689        //delegate(PhysicsObject a, PhysicsObject b) {kerays(a, b, "avain");}
690    }
691    void alasMeno(PhysicsObject tormaaja, PhysicsObject porrasA)
692    {
693        if(lisko == 0)
694        {
695            if (Keyboard.GetKeyState(Key.E) == ButtonState.Down)
696            {
697                elämät = player.ElamaLaskuri.Value;
698                pisteet = pisteet + 1000;
699                taso++;
700                /*if (taso == 5)
701                {
702                    bossi;
703                }*/
704                Begin();
705                MessageDisplay.Add("pisteesi:" + pisteet);
706                MessageDisplay.Add("taso:" + taso);
707               
708            }
709
710
711       
712        }
713    }
714    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
715    {
716        arvotext(paikka, leveys, korkeus);
717        player.Position = paikka;
718        Image c = LoadImage("thecharacter");
719        player.Shape = Shape.FromImage(c);
720        player.Image = paaKuva;
721        player.ElamaLaskuri.LowerLimit += delegate
722        {
723            player.Destroy();
724            ennätys.EnterAndShow(pisteet);
725           
726            ennätys.HighScoreWindow.Closed += (Window w) => Begin();
727            luoPelaajaRuumis(player.Position, dead_dragon, player.Angle);
728            pisteet = 0;
729            for (int i = 0; i < palat.Length; i++)
730            {
731                palat[i].Destroy();
732                luoPelaajaRuumis(palat[i].Position, dead_dragonbod, palat[i].Angle);
733            }
734        };
735       
736        //player.
737     
738        player.Position = paikka;
739        player.LinearDamping = 0.6;
740        player.AngularDamping = 0.6;
741        player.CollisionIgnoreGroup = 1; 
742        player.CollisionIgnoreGroup = 5;
743       
744        player.MaxAngularVelocity = 8000.0;
745        player.Color = Color.Brown;
746        player.Mass = 1;
747        Add(player, 3);
748        player.Tag="player";
749
750        palat = new PhysicsObject[10];
751       
752        for (int i = 0; i < palat.Length; i++)
753        {
754            palat[i] = new PhysicsObject(60, 60);
755            palat[i].Image = paaKuva;
756            Add(palat[i]);
757        }
758
759        var ajastin = new Timer();
760        ajastin.Interval = 0.01;
761        ajastin.Timeout += () => OhjaaPaloja(player, 40);
762        ajastin.Start();
763
764        AddCollisionHandler(player, "avain", AvaintenKerays);
765        AddCollisionHandler(player, "porrasA", alasMeno);
766        AddCollisionHandler(player, "l96wallbuy", PoimiAse);
767        AddCollisionHandler(player, "juggernog", PoimiNog);
768        //AddCollisionHandler(vihu, "player", zombinruokaa);
769
770        ProgressBar elamaPalkki = new ProgressBar(200, 20);
771        elamaPalkki.X = 600;
772        elamaPalkki.Y = Window.Height / 2 - 100;
773        //elamaPalkki.Angle = player.Angle + Angle.FromDegrees(90);
774        elamaPalkki.BindTo(player.ElamaLaskuri);
775        Add(elamaPalkki);
776
777       
778
779       
780       
781       
782
783        //player.CollisionIgnoreGroup = 1;
784        Camera.Follow(player);
785    }
786
787    void OhjaaPaloja(GameObject ohjain, double palanKoko)
788    {
789        GameObject edeltava = ohjain;
790        player.Image = dead_dragon;
791        if ((player.Angle + Angle.FromDegrees(90)).GetPositiveDegrees() > 180)
792        {
793            player.Image = dead_dragonFlip;
794        }
795        player.Image = paaKuva;
796        if ((player.Angle + Angle.FromDegrees(90)).GetPositiveDegrees() > 180)
797        {
798            player.Image = paaKuvaFlip;
799        }
800
801        for (int i = 0; i < palat.Length; i++)
802        {
803            PhysicsObject pala = palat[i];
804            pala.CollisionIgnoreGroup = 5;
805            pala.LinearDamping = 0.9;
806            // Palan sijainnin ja kulman päivitys.
807            Vector suunta = pala.Position - edeltava.Position;
808            if (suunta.Magnitude > palanKoko)
809            {
810                suunta = suunta.Normalize();
811                pala.Position = edeltava.Position + suunta * palanKoko;
812            }
813            pala.Angle = suunta.Angle;
814
815            // Palan kuvan muuttaminen kulman suhteen.
816            pala.Image = hantaKuva;
817            if ((pala.Angle + Angle.FromDegrees(90)).GetPositiveDegrees() > 180)
818            {
819                pala.Image = hantaKuvaFlip;
820            }
821
822            edeltava = palat[i];
823        }
824    }
825
826    void näppäimet()
827    {
828       /*Keyboard.Listen(Key.W, ButtonState.Down, liike, "liiku", Vector.FromLengthAndAngle(1500, player.Angle));
829        Keyboard.Listen(Key.S, ButtonState.Down, liike, "liiku", Vector.FromLengthAndAngle(-500, player.Angle));
830        Keyboard.Listen(Key.D, ButtonState.Down, liike, "liiku", Vector.FromLengthAndAngle(-1000, player.Angle + Angle.FromDegrees(90)));
831        Keyboard.Listen(Key.A, ButtonState.Down, liike, "liiku", Vector.FromLengthAndAngle(1000, player.Angle + Angle.FromDegrees(90)));*/
832
833        Keyboard.Listen(Key.W, ButtonState.Down, liike, "liiku", new Vector(0, 500));
834        Keyboard.Listen(Key.S, ButtonState.Down, liike, "liiku", new Vector(0, -500));
835        Keyboard.Listen(Key.D, ButtonState.Down, liike, "liiku", new Vector(500, 0));
836        Keyboard.Listen(Key.A, ButtonState.Down, liike, "liiku", new Vector(-500, 0));
837
838        Mouse.IsCursorVisible = false;
839        //Mouse.ListenMovement(0.0, kaanny, "");
840       
841        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
842    }
843    void kaanny(Vector kaannos)
844    {
845        //Vector suunta = Mouse.PositionOnWorld - player.AbsolutePosition;
846        Vector suunta = kaannos;
847
848        if (suunta.Magnitude != 0)
849        {
850            suunta.Normalize();
851            player.Angle = suunta.Angle;
852        }
853    }
854    void liike(Vector vektori)
855    {
856        //player.Move((player.Angle + vektori.Angle + Angle.FromDegrees(-90)).GetVector() * vektori.Magnitude);
857        //player.Move(vektori);
858        player.Push(vektori * 30);
859        player.Angle = player.Velocity.Angle;
860    }
861
862   
863    void luoStaminup(Vector paikka, double leveys, double korkeus)
864    {
865        arvotext(paikka, leveys, korkeus);
866        staminup = PhysicsObject.CreateStaticObject(leveys, korkeus);
867        staminup.Position = paikka;
868        Image s = LoadImage("staminup");
869
870        staminup.Image = s;
871        staminup.Tag = "staminup";
872
873
874        Add(staminup);
875
876
877    }
878    void luoJuggernog(Vector paikka, double leveys, double korkeus)
879    {
880        {
881            arvotext(paikka, leveys, korkeus);
882            juggernog = PhysicsObject.CreateStaticObject(leveys, korkeus);
883            juggernog.Position = paikka;
884            Image s = LoadImage("juggernog");
885
886            juggernog.Image = s;
887            juggernog.Tag = "juggernog";
888
889
890            Add(juggernog);
891
892
893        }
894    }
895    void PoimiNog(PhysicsObject tormaaja, PhysicsObject tormatty)
896    {
897        tormatty.Destroy();
898        nog += 40;
899        player.ElamaLaskuri.Value += 40;
900        aseet();
901    }
902   
903
904
905
906}
Note: See TracBrowser for help on using the repository browser.