source: 2017/23/EelisK/Windcaller/Windcaller/Windcaller/Windcaller.cs @ 8474

Revision 8474, 67.9 KB checked in by nupeohje, 2 years ago (diff)

Moikkeliskoikkelis

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9
10enum GoblinAttackDirection
11{
12    aUP,
13    aDown,
14    aRight,
15    aLeft,
16    nOne
17
18
19}
20enum WraithDirection
21{
22    Up,
23    Down,
24    Right,
25    Left,
26    None
27}
28enum WraithAttackDirection
29{
30    Up,
31    Down,
32    Right,
33    Left,
34    None
35}
36enum GoblinDirection
37{
38    Up,
39    Down,
40    Right,
41    Left,
42    None
43}
44
45class Skeletor : PhysicsObject
46{
47
48    private IntMeter HelttiLaskuri = new IntMeter(20, 0, 20);
49    public IntMeter helttiLaskuri { get { return HelttiLaskuri; } }
50    Windcaller peli;
51    public Skeletor(Windcaller peli, double leveys, double korkeus)
52        : base(leveys, korkeus)
53    {
54        this.peli = peli;
55    }
56
57}
58class Goblin : PhysicsObject
59{
60
61
62
63
64
65    //public int nopeus { get; set; }
66    //public GameObject kuva { get; set; }
67    public GameObject varjo { get; set; }
68    public FollowerBrain goboaivot;
69    // public RandomMoverBrain autismi;
70    //public Vector TargetAutismi;
71    private Vector movementDirection = Vector.Zero;
72    private Vector AttackSuunta;
73    private Vector koko;
74
75    private IntMeter HelttiLaskuri = new IntMeter(2, 0, 2);
76    public IntMeter helttiLaskuri { get { return HelttiLaskuri; } }
77    Windcaller peli;
78
79    public Goblin(Windcaller peli, double leveys, double korkeus, int elamia)
80        : base(leveys, korkeus)
81    {
82        this.peli = peli;
83        // HelttiLaskuri.LowerLimit += delegate { this.Destroy(); };
84
85        goboaivot = new FollowerBrain(Windcaller.player1);
86
87        LinearDamping = 0.7;
88        movementDirection = RandomGen.NextDirection().GetVector();
89
90        Jypeli.Timer ajastin = new Jypeli.Timer();
91        ajastin.Interval = 3;
92        ajastin.Timeout += () =>
93        {
94            movementDirection = RandomGen.NextDirection().GetVector();
95        };
96
97        ajastin.Start();
98    }
99
100    private double Abs(double d)
101    {
102        return (d < 0 ? -d : d);
103    }
104    private GoblinDirection PreviousDirection = GoblinDirection.None;
105
106    private GoblinAttackDirection AikaisempiSuunta = GoblinAttackDirection.nOne;
107    private bool IsAttacking = false;
108
109    public override void Update(Time time)
110    {
111        base.Update(time);
112
113        if (IsAttacking)
114            return;
115        double Dx = Windcaller.player1.Position.X - X;
116        double Dy = Windcaller.player1.Position.Y - Y;
117
118        double distance = Windcaller.GetDistance(Windcaller.player1.Position, Position);
119
120        if (distance > 450)
121        {
122            Push(movementDirection * 2500);
123            Brain = null;
124        }
125        else if (distance > 70)
126        {
127
128            Brain = goboaivot;
129
130        }
131        else
132        {
133            Brain = null;
134            GoblinAttackDirection suunta = GoblinAttackDirection.nOne;
135            IsAttacking = true;
136            Jypeli.Timer.SingleShot(0.1, delegate
137            {
138
139
140
141            });
142            if (Abs(Dx) > Abs(Dy))
143            {
144
145                if (Dx < 0)
146                {
147                    //Attack Vasemmalle
148                    suunta = GoblinAttackDirection.aLeft;
149                    Animation = Windcaller.GoblinAttack_L;
150                    koko = new Vector(50, 20);
151                    AttackSuunta = new Vector(-40, -20);
152
153                }
154                else
155                {
156                    //Attack Oikealle
157                    suunta = GoblinAttackDirection.aRight;
158                    Animation = Windcaller.GoblinAttack_R;
159                    koko = new Vector(50, 20);
160                    AttackSuunta = new Vector(30, -20);
161
162                }
163            }
164            else
165            {
166                if (Dy < 0)
167                {
168                    //Attack Alaspäin
169                    suunta = GoblinAttackDirection.aDown;
170                    Animation = Windcaller.GoblinAttack_D;
171                    koko = new Vector(20, 50);
172                    AttackSuunta = new Vector(-20, -30);
173                }
174                else
175                {
176                    //Attack ylöspäin
177                    suunta = GoblinAttackDirection.aUP;
178                    Animation = Windcaller.GoblinAttack_U;
179                    koko = new Vector(20, 50);
180                    AttackSuunta = new Vector(30, 20);
181                }
182
183
184            }
185
186            if (suunta != AikaisempiSuunta)
187                Animation.Start();
188            Jypeli.Timer.SingleShot(0.1, delegate
189            {
190
191
192                PhysicsObject HitBox = new PhysicsObject(koko.X, koko.Y);
193                HitBox.Position = Position + AttackSuunta;
194                peli.Add(HitBox);
195                HitBox.LifetimeLeft = TimeSpan.FromSeconds(0.1);
196                HitBox.IgnoresCollisionResponse = true;
197                //HitBox.Color = Color.Red;
198                HitBox.Tag = "GoblinAttack";
199                HitBox.IsVisible = false;
200            });
201            AikaisempiSuunta = suunta;
202
203            Animation.Played += () =>
204            {
205                IsAttacking = false;
206            };
207
208            return;
209        }
210
211        GoblinDirection direction;
212
213        if (Abs(Dx) > Abs(Dy))
214        {
215            if (Dx < 0)
216            {
217                //Vasemmalle
218                Animation = Windcaller.GLeft_anim;
219                direction = GoblinDirection.Left;
220            }
221            else
222            {
223                //Oikealle
224                Animation = Windcaller.GRight_anim;
225                direction = GoblinDirection.Right;
226            }
227        }
228        else
229        {
230            if (Dy < 0)
231            {
232                //Alaspäin
233                Animation = Windcaller.GDown_anim;
234                direction = GoblinDirection.Down;
235            }
236            else
237            {
238                //Ylöspäin
239                Animation = Windcaller.GUp_anim;
240                direction = GoblinDirection.Up;
241            }
242        }
243
244        if (direction != PreviousDirection)
245            Animation.Start();
246
247        PreviousDirection = direction;
248
249
250
251
252
253    }
254
255}
256class Wraith : PhysicsObject
257{
258
259
260
261
262
263    //public int nopeus { get; set; }
264    //public GameObject kuva { get; set; }
265    public GameObject varjo { get; set; }
266    public FollowerBrain wraithaivot;
267    //public Vector TargetAutismi;
268    private Vector movementDirection = Vector.Zero;
269    private Vector AttackSuunta;
270    private Vector koko;
271
272    private IntMeter HelttiLaskuri = new IntMeter(3, 0, 3);
273    public IntMeter helttiWraithLaskuri { get { return HelttiLaskuri; } }
274    Windcaller peli;
275
276    double wanderDistance;
277
278    public Wraith(Windcaller peli, double leveys, double korkeus, int elamia, double wanderDistance = 500)
279        : base(leveys, korkeus)
280    {
281        this.peli = peli;
282        this.wanderDistance = wanderDistance;
283        // HelttiLaskuri.LowerLimit += delegate { this.Destroy(); };
284
285        wraithaivot = new FollowerBrain(Windcaller.player1);
286
287        LinearDamping = 0.7;
288        movementDirection = RandomGen.NextDirection().GetVector();
289
290        Jypeli.Timer ajastin = new Jypeli.Timer();
291        ajastin.Interval = 3;
292        ajastin.Timeout += () =>
293        {
294            movementDirection = RandomGen.NextDirection().GetVector();
295        };
296
297        ajastin.Start();
298    }
299
300    private double Abs(double d)
301    {
302        return (d < 0 ? -d : d);
303    }
304    private WraithDirection PreviousDirection = WraithDirection.None;
305
306    private WraithAttackDirection AikaisempiSuunta = WraithAttackDirection.None;
307    private bool IsAttacking = false;
308
309    public override void Update(Time time)
310    {
311        base.Update(time);
312
313        if (IsAttacking)
314            return;
315        double Dx = Windcaller.player1.Position.X - X;
316        double Dy = Windcaller.player1.Position.Y - Y;
317
318        double distance = Windcaller.GetDistance(Windcaller.player1.Position, Position);
319
320        if (distance > wanderDistance)
321        {
322            Push(movementDirection * 2500);
323            Brain = null;
324        }
325        else if (distance > 90)
326        {
327
328            Brain = wraithaivot;
329
330        }
331        else
332        {
333            Brain = null;
334            WraithAttackDirection suunta = WraithAttackDirection.None;
335            IsAttacking = true;
336            Jypeli.Timer.SingleShot(0.1, delegate
337            {
338
339
340
341            });
342            if (Abs(Dx) > Abs(Dy))
343            {
344
345                if (Dx < 0)
346                {
347                    //Attack Vasemmalle
348                    suunta = WraithAttackDirection.Left;
349                    Animation = Windcaller.Wraith_Attack_Left;
350                    koko = new Vector(40, 100);
351                    AttackSuunta = new Vector(-60, 0);
352
353                }
354                else
355                {
356                    //Attack Oikealle
357                    suunta = WraithAttackDirection.Right;
358                    Animation = Windcaller.Wraith_Attack_Right;
359                    koko = new Vector(40, 100);
360                    AttackSuunta = new Vector(60, 0);
361
362                }
363            }
364            else
365            {
366                if (Dy < 0)
367                {
368                    //Attack Alaspäin
369                    suunta = WraithAttackDirection.Down;
370                    Animation = Windcaller.Wraith_Attack_Down;
371                    koko = new Vector(100, 40);
372                    AttackSuunta = new Vector(0, -60);
373                }
374                else
375                {
376                    //Attack ylöspäin
377                    suunta = WraithAttackDirection.Up;
378                    Animation = Windcaller.Wraith_Attack_Up;
379                    koko = new Vector(100, 40);
380                    AttackSuunta = new Vector(0, 60);
381                }
382
383
384            }
385
386            if (suunta != AikaisempiSuunta)
387                Animation.Start();
388            Jypeli.Timer.SingleShot(0.1, delegate
389            {
390
391
392                PhysicsObject HitBox = new PhysicsObject(koko.X, koko.Y);
393                HitBox.Position = Position + AttackSuunta;
394                peli.Add(HitBox);
395                HitBox.LifetimeLeft = TimeSpan.FromSeconds(0.1);
396                HitBox.IgnoresCollisionResponse = true;
397                // HitBox.Color = Color.Red;
398                HitBox.Tag = "GoblinAttack";
399                HitBox.IsVisible = false;
400            });
401            AikaisempiSuunta = suunta;
402
403            Animation.Played += () =>
404            {
405                IsAttacking = false;
406            };
407
408            return;
409        }
410
411        WraithDirection direction;
412
413        if (Abs(Dx) > Abs(Dy))
414        {
415            if (Dx < 0)
416            {
417                //Vasemmalle
418                Animation = Windcaller.Wraith_Right;
419                direction = WraithDirection.Left;
420            }
421            else
422            {
423                //Oikealle
424                Animation = Windcaller.Wraith_Left;
425                direction = WraithDirection.Right;
426            }
427        }
428        else
429        {
430            if (Dy < 0)
431            {
432                //Alaspäin
433                Animation = Windcaller.Wraith_Down;
434                direction = WraithDirection.Down;
435            }
436            else
437            {
438                //Ylöspäin
439                Animation = Windcaller.Wraith_Up;
440                direction = WraithDirection.Up;
441            }
442        }
443
444        if (direction != PreviousDirection)
445            Animation.Start();
446
447        PreviousDirection = direction;
448
449
450
451
452
453    }
454
455}
456public class Pelaaja1 : PhysicsObject
457{
458
459
460
461    Windcaller peli;
462    public int nopeus { get; set; }
463    public GameObject kuva { get; set; }
464    public GameObject varjo { get; set; }
465    private IntMeter HelttiLaskuri = new IntMeter(10, 0, 5);
466    public IntMeter PlayerHealth { get { return HelttiLaskuri; } }
467    public Pelaaja1(double leveys, double korkeus, int elamia)
468        : base(leveys, korkeus)
469    {
470
471
472        //this.peli = peli;
473
474    }
475}
476public class Windcaller : PhysicsGame
477{
478    public static Pelaaja1 player1;
479    //List<Talot> mediumtalot;
480    Vector PlayrStartPoint = new Vector(-350, -400);
481
482
483    Image IdleDown = LoadImage("Player/Standing and one shadow/image_stand down_0");
484    Image IdleUp = LoadImage("Player/Standing and one shadow/image_stand up_0");
485    Image IdleRight = LoadImage("Player/Standing and one shadow/image_stand right_0");
486    Image IdleLeft = LoadImage("Player/Standing and one shadow/image_stand left_0");
487    Image Reuna1 = LoadImage("World/Map 1/restricted area 1");
488    Image MediumTalo = LoadImage("Houses/Small House/Small house");
489    Image MediumTaloShadow = LoadImage("Houses/Small House/Small house shadow");
490    Image PLayerShadow = LoadImage("Player/Standing and one shadow/shadow_stand down_0");
491
492    //Goblin
493    Image Fence = LoadImage("Stuff/Fences/fence");
494    Image GDown = LoadImage("Enemies/Goblin/Stand/Down/image_stand down_0");
495    Image GUp = LoadImage("Enemies/Goblin/stand/Up/image_stand up_0");
496    Image GRight = LoadImage("Enemies/Goblin/stand/Right/image_stand right_0");
497    Image GLeft = LoadImage("Enemies/Goblin/stand/Left/image_stand left_0");
498    //  RandomMoverBrain autisti;
499
500    Image Map = LoadImage("Effects/map");
501    Image LoadingScreen = LoadImage("Effects/LOADING SCREEN");
502
503    public static Animation Wraith_Up;
504    public static Animation Wraith_Down;
505    public static Animation Wraith_Right;
506    public static Animation Wraith_Left;
507
508    public static Animation Wraith_Attack_Up;
509    public static Animation Wraith_Attack_Down;
510    public static Animation Wraith_Attack_Right;
511    public static Animation Wraith_Attack_Left;
512
513
514    public static Animation GUp_anim;
515    public static Animation GDown_anim;
516    public static Animation GRight_anim;
517    public static Animation GLeft_anim;
518
519    public static Animation GoblinAttack_U;
520    public static Animation GoblinAttack_D;
521    public static Animation GoblinAttack_L;
522    public static Animation GoblinAttack_R;
523
524    public static int WraithCount = 0;
525
526    Image MainMenuBackground = LoadImage("MainMenu/MAIN MENU BACKGROUND");
527
528    PhysicsObject Kamera;
529    Image BaseLayer = LoadImage("World/Map 1/base");
530    Animation Up;
531    Animation Down;
532    Animation Right;
533    Animation Left;
534    Color Playershadow = new Color(Color.Black, 100);
535    Image FullHealth = LoadImage("Effects/Healthy free space");
536    Image NoHealth = LoadImage("Effects/Unhealthy free space");
537
538    Animation SkullAttack;
539
540    //WorldImages
541    //Image VesiMaaBackgroundImage = LoadImage("World//Water Map/base");
542    Image startkuva = LoadImage("MainMenu/start up");
543    Image startkuva2 = LoadImage("MainMenu/start down");
544
545
546    Image SkeltorBackground = LoadImage("Bosses/Skeletor/cave_Boss room_0");
547    Image SkeletorRestricted = LoadImage("Bosses/Skeletor/skull män room boundaries");
548    Image SkeletorImage = LoadImage("Bosses/Skeletor/skull män head2");
549    Image SkeletorDmg = LoadImage("Bosses/Skeletor/skull män head dmg");
550
551    Image SmallHouseInside = LoadImage("Houses/Small House/base");
552
553    Vector Ruins = new Vector(1500, 1500);
554    Vector Ruins2 = new Vector(1400, 1400);
555    Vector RandomPosition2 = RandomGen.NextVector(1000, 1000, 1500, 1800);
556    Image RestrictedArea2 = LoadImage("World/Map 1/restricted area 2 black");
557    Image RestrictedArea1 = LoadImage("World/Map 1/restricted_area_1");
558
559    Image PlayerFullHealth = LoadImage("Player/big helth_Animation 1_0");
560    Image PlayerEmptyHealth = LoadImage("Player/big helth_Animation 1_1");
561
562    Animation KanaPoks;
563    Animation GoblinDeath;
564    Animation SpectreSpawn;
565    Animation AUp;
566    Animation ADown;
567    Animation ARight;
568    Animation ALeft;
569    Vector TaloSpawnPoint = new Vector(200, 50);
570    FollowerBrain seuraajanAivot;
571    // FollowerBrain goboaivot;
572    bool CanRun = true;
573
574    string NykyineneMaa;
575
576
577
578    public static double GetDistance(Vector A, Vector B)
579    {
580        return Math.Sqrt(Math.Pow(A.X - B.X, 2) + Math.Pow(A.Y - B.Y, 2));
581    }
582
583    public override void Begin()
584    {
585        //Movement animations
586        Left = LoadAnimation("Player/Anim/left");
587        Right = LoadAnimation("Player/Anim/right");
588        Up = LoadAnimation("Player/Anim/up");
589        Down = LoadAnimation("Player/Anim/down");
590
591        GoblinAttack_D = LoadAnimation("Enemies/Goblin/Attack/Down");
592        GoblinAttack_U = LoadAnimation("Enemies/Goblin/Attack/Up");
593        GoblinAttack_L = LoadAnimation("Enemies/Goblin/Attack/Left");
594        GoblinAttack_R = LoadAnimation("Enemies/Goblin/Attack/Right");
595
596        GoblinDeath = LoadAnimation("Enemies/Goblin/Death");
597
598        SpectreSpawn = LoadAnimation("Enemies/Wraith/SpawnAnimation");
599
600        Wraith_Up = LoadAnimation("Enemies/Wraith/walk and stand/up");
601        Wraith_Down = LoadAnimation("Enemies/Wraith/walk and stand/down");
602        Wraith_Right = LoadAnimation("Enemies/Wraith/walk and stand/left");
603        Wraith_Left = LoadAnimation("Enemies/Wraith/walk and stand/right");
604        Wraith_Attack_Up = LoadAnimation("Enemies/Wraith/attack/up");
605        Wraith_Attack_Down = LoadAnimation("Enemies/Wraith/attack/down");
606        Wraith_Attack_Right = LoadAnimation("Enemies/Wraith/attack/right");
607        Wraith_Attack_Left = LoadAnimation("Enemies/Wraith/attack/left");
608
609        KanaPoks = LoadAnimation("Enemies/Kana/Boom");
610
611        SkullAttack = LoadAnimation("Bosses/Skeletor/Attack");
612
613
614        GDown_anim = LoadAnimation("Enemies/Goblin/Walk/Down");
615        GUp_anim = LoadAnimation("Enemies/Goblin/Walk/Up");
616        GLeft_anim = LoadAnimation("Enemies/Goblin/Walk/Left");
617        GRight_anim = LoadAnimation("Enemies/Goblin/Walk/Right");
618        //Attack Animations
619        AUp = LoadAnimation("Player/Anim/attack_up");
620        ADown = LoadAnimation("Player/Anim/attack_down");
621        ARight = LoadAnimation("Player/Anim/attack_right");
622        ALeft = LoadAnimation("Player/Anim/attack_left");
623
624        SetWindowSize(1200, 900);
625        SmoothTextures = false;
626        // TODO: Kirjoita ohjelmakoodisi tähän
627
628
629        LataaMaa("Skeletor");
630
631    }
632
633    //Load Rooms
634    void LataaMaa(string nimi)
635    {
636        NykyineneMaa = nimi;
637        Layers[3].RelativeTransition = new Vector(0, 0);
638        Label loadingscreen = new Label(1200, 900);
639        loadingscreen.Image = LoadingScreen;
640
641        //
642
643        Add(loadingscreen, 3);
644
645        Timer.SingleShot(0.1, delegate
646        {
647            ClearAll();
648
649            if (nimi == "Starting") AloitusMaa();
650            if (nimi == "Skeletor") SkeletorBossRoom();
651           if(nimi == "AlkuValikko") AlkuValikko();
652            if (nimi == "42") Maa42();
653            if (nimi == "39") Maa39();
654            if (nimi == "35") Maa35();
655            if (nimi == "34") Maa34();
656            if (nimi == "38") Maa38();
657            if (nimi == "31") VesiMaa();
658            if (nimi == "30") Maa30();
659            if (nimi == "29") Maa29();
660            if (nimi == "28") Maa28();
661            if (nimi == "27") Maa27();
662            if (nimi == "26") Maa26();
663            if (nimi == "25") Maa25();
664            if (nimi == "23") Maa23();
665            if (nimi == "22") Maa22();
666            if (nimi == "21") Maa21();
667            if (nimi == "20") Maa20();
668            if (nimi == "19") Maa19();
669            if (nimi == "18") Maa18();
670            if (nimi == "17") Maa17();
671            if (nimi == "14") Maa14();
672            if (nimi == "13") Maa13();
673            if (nimi == "12") Maa12();
674            if (nimi == "11") Maa11();
675            if (nimi == "10") Maa10();
676            if (nimi == "09") Maa9();
677            if (nimi == "08") Maa8();
678            if (nimi == "06") Maa6();
679            if (nimi == "05") Maa5();
680            if (nimi == "04") Maa4();
681            if (nimi == "03") Maa3();
682            if (nimi == "02") Maa2();
683            if (nimi == "01") Maa1();
684            if (nimi == "House") House();
685
686
687        });
688
689
690
691
692    }
693
694    //Rooms
695
696    void LuoMaa(int numero, String tautakuva, String ground, String RestrictedArea, String Trees)
697    {
698        Level.Width = 2400;
699        Level.Height = 2400;
700        Level.Background.Image = LoadImage(tautakuva);
701        Level.Background.Width = 2400;
702        Level.Background.Height = 2400;
703
704        if (RestrictedArea != "")
705        {
706            ColorTileMap ruudutt = ColorTileMap.FromLevelAsset(ground);
707        ruudutt.SetTileMethod(Color.Black, LuoTaso);
708        ruudutt.Optimize(Color.Black);
709        ruudutt.Execute();
710
711        }
712        if (RestrictedArea != "")
713        {
714            GameObject Restricted = new GameObject(2400, 2400);
715            Restricted.Image = LoadImage(RestrictedArea);
716            Add(Restricted, 1);
717        }
718
719        if (Trees != "")
720        {
721            GameObject Treees = new GameObject(2400, 2400);
722            Treees.Image = LoadImage(Trees);
723            Add(Treees, 2);
724        }
725
726        AddPlayer(PlayrStartPoint, 60, 60);
727        Camero();
728        Camera.Follow(Kamera);
729        Camera.StayInLevel = true;
730        LisaaKartta();
731        Level.CreateBorders();
732
733
734
735        LevelTeleport(new Vector(0, Level.Top), Level.Width, 40, string.Format("{0:00}", numero - 8), () => new Vector(player1.X, Level.Bottom + 100));
736        LevelTeleport(new Vector(0, Level.Bottom), Level.Width, 40, string.Format("{0:00}", numero + 8), () => new Vector(player1.X, Level.Top - 100));
737        LevelTeleport(new Vector(Level.Left, 0), 40, Level.Height, string.Format("{0:00}", numero - 1), () => new Vector(Level.Right-100, player1.Y));
738        LevelTeleport(new Vector(Level.Right, 0), 40, Level.Height, string.Format("{0:00}", numero + 1), () => new Vector(Level.Left + 100, player1.Y));
739
740
741    }
742    void AlkuValikko()
743    {
744        Level.Background.Image = MainMenuBackground;
745        Level.Background.Width = 1200;
746        Level.Background.Height = 900;
747
748        PushButton aloitus = new PushButton(startkuva);
749       
750        aloitus.Size *= 10;
751        IsMouseVisible = true;
752        Add(aloitus);
753        aloitus.Clicked += delegate
754        {
755            aloitus.Image = startkuva2;
756            Timer.SingleShot(0.5, delegate
757            {
758                ClearAll();
759                LataaMaa("31");
760                IsMouseVisible = false;
761            });
762           
763
764        };
765
766
767
768    }
769    void Maa42()
770    {
771        int numero = 42;
772        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
773        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
774        string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
775        // string d = string.Format("World/{0:00}/Trees_Animation 1_{0:00}", numero);
776        LuoMaa(numero, a, b, c, "");
777
778
779
780    }
781    void Maa39()
782
783    {
784        int numero = 39;
785        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
786        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
787        string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
788        LuoMaa(numero, a, b, c, "");
789
790
791
792    }
793    void Maa38()
794    {
795
796        int numero = 38;
797        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
798        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
799        string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
800        LuoMaa(numero, a, b,c, "");
801
802
803    }
804    void Maa35()
805    {
806        int numero = 35;
807        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
808        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
809        //string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
810        // string d = string.Format("World/{0:00}/Trees_Animation 1_{0:00}", numero);
811        LuoMaa(numero, a, b, "", "");
812
813
814
815    }
816    void Maa34()
817    {
818        int numero = 34;
819        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
820        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
821        string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
822        // string d = string.Format("World/{0:00}/Trees_Animation 1_{0:00}", numero);
823        LuoMaa(numero, a, b, c, "");
824
825
826
827    }
828    void VesiMaa()
829    {
830
831
832
833        int numero = 31;
834        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
835        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
836        string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
837        LuoMaa(numero, a, b ,c, "");
838
839        LisaaKivi(new Vector(-200, 1000), 170, 100);
840        LisaaPieniKivi(new Vector(300, 700), 100, 50);
841        LisaaIsoPylvas(new Vector(54, 950), 310, 280);
842        LisaaPieniPylvas(new Vector(-100, 900), 250, 200);
843        LisaaPieniPylvas(new Vector(-500, 600), 250, 200);
844        LisaaIsoPylvas(new Vector(430, 370), 310, 280);
845        LisaaKivi(new Vector(600, 500), 170, 100);
846        LisaaTeltta1(new Vector(-500, -300));
847        LisaaTeltta2(new Vector(-170, -290));
848        AddPuu(new Vector(200,-300));
849        AddPuu(new Vector(300, -540));
850        AddPuu(new Vector(400, -300));
851        AddPuu(new Vector(500, -300));
852        AddPuuTrunk(new Vector(00, -400));
853        AddPuuTrunk(new Vector(100, -700));
854        Boat1(new Vector(-700, -100));
855        AddHenri(new Vector(100, -300));
856        WrathSpawner();
857
858
859    }
860    void Maa30()
861    {
862        int numero = 30;
863        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
864        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
865        string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
866        LuoMaa(numero, a, b,c, "");
867
868        Houset(new Vector(-500, 200), 370, 390);
869        SignPost(new Vector(-100, 200));
870        LevelTeleport(new Vector(-500, 190), 370, 390, "House", () => new Vector(0, 0));
871        AddHenri(new Vector(700, -800));
872        AddPuu(new Vector(800, -700));
873
874    }
875    void Maa29()
876    {
877        int numero = 29;
878        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
879        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
880        string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
881        string d = string.Format("World/{0:00}/Trees_Animation 1_{0:00}", numero);
882        LuoMaa(numero, a, b, c, d);
883
884
885
886    }
887    void Maa28()
888    {
889        int numero = 28;
890        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
891        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
892        string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
893       // string d = string.Format("World/{0:00}/Trees_Animation 1_{0:00}", numero);
894        LuoMaa(numero, a, b, c, "");
895
896
897
898    }
899    void Maa27()
900    {
901        int numero = 27;
902        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
903        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
904        string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
905         string d = string.Format("World/{0:00}/Trees_Animation 1_{0:00}", numero);
906        LuoMaa(numero, a, b, c, d);
907
908
909
910    }
911    void Maa26()
912    {
913        int numero = 26;
914        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
915        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
916        string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
917         string d = string.Format("World/{0:00}/Trees_Animation 1_{0:00}", numero);
918        LuoMaa(numero, a, b, c, d);
919
920
921
922    }
923    void Maa25()
924    {
925        int numero = 25;
926        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
927        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
928        //string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
929        // string d = string.Format("World/{0:00}/Trees_Animation 1_{0:00}", numero);
930        LuoMaa(numero, a, b, "", "");
931
932
933
934    }
935    void Maa23()
936    {
937        int numero = 23;
938        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
939        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
940       // string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
941        // string d = string.Format("World/{0:00}/Trees_Animation 1_{0:00}", numero);
942        LuoMaa(numero, a, b, "", "");
943
944
945
946    }
947    void Maa22()
948    {
949        int numero = 22;
950        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
951        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
952         string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
953         string d = string.Format("World/{0:00}/Trees_Animation 1_{0:00}", numero);
954        LuoMaa(numero, a, b, c, d);
955        gobliin(new Vector(-900, -300));
956
957
958
959    }
960    void Maa21()
961    {
962        int numero = 21;
963        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
964        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
965        string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
966        string d = string.Format("World/{0:00}/Trees_Animation 1_{0:00}", numero);
967        LuoMaa(numero, a, b, c, d);
968
969
970
971    }
972    void Maa20()
973    {
974        int numero = 20;
975        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
976        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
977        string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
978       // string d = string.Format("World/{0:00}/Trees_Animation 1_{0:00}", numero);
979        LuoMaa(numero, a, b, c, "");
980
981
982
983    }
984    void Maa19()
985    {
986        int numero = 19;
987        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
988        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
989        string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
990        string d = string.Format("World/{0:00}/Trees_Animation 1_{0:00}", numero);
991        LuoMaa(numero, a, b, c, d);
992
993
994
995    }
996    void Maa18()
997    {
998        int numero = 18;
999        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
1000        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
1001        string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
1002        string d = string.Format("World/{0:00}/Trees_Animation 1_{0:00}", numero);
1003        LuoMaa(numero, a, b, c, d);
1004
1005
1006
1007    }
1008    void Maa17()
1009    {
1010        int numero = 17;
1011        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
1012        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
1013        string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
1014         string d = string.Format("World/{0:00}/Trees_Animation 1_{0:00}", numero);
1015        LuoMaa(numero, a, b, c, d);
1016
1017
1018
1019    }
1020    void Maa14()
1021    {
1022        int numero = 14;
1023        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
1024        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
1025        //string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
1026        // string d = string.Format("World/{0:00}/Trees_Animation 1_{0:00}", numero);
1027        LuoMaa(numero, a, b, "", "");
1028
1029
1030
1031    }
1032    void Maa13()
1033    {
1034        int numero = 13;
1035        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
1036        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
1037        string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
1038        // string d = string.Format("World/{0:00}/Trees_Animation 1_{0:00}", numero);
1039        LuoMaa(numero, a, b, c, "");
1040
1041        LevelTeleport(new Vector(-900, 260), 500, 100, "Skeletor", () => new Vector(0, -300));
1042
1043
1044    }
1045    void Maa12()
1046    {
1047        int numero = 12;
1048        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
1049        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
1050        string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
1051        // string d = string.Format("World/{0:00}/Trees_Animation 1_{0:00}", numero);
1052        LuoMaa(numero, a, b, c, "");
1053
1054
1055
1056    }
1057    void Maa11()
1058    {
1059        int numero = 11;
1060        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
1061        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
1062        string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
1063         string d = string.Format("World/{0:00}/Trees_Animation 1_{0:00}", numero);
1064        LuoMaa(numero, a, b, c, d);
1065
1066
1067
1068    }
1069    void Maa10()
1070    {
1071        int numero = 10;
1072        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
1073        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
1074        string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
1075         string d = string.Format("World/{0:00}/Trees_Animation 1_{0:00}", numero);
1076        LuoMaa(numero, a, b, c, d);
1077
1078
1079
1080    }
1081    void Maa9()
1082    {
1083        int numero = 09;
1084        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
1085        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
1086        string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
1087         string d = string.Format("World/{0:00}/Trees_Animation 1_{0:00}", numero);
1088        LuoMaa(numero, a, b, c, d);
1089
1090
1091
1092    }
1093    void Maa8()
1094    {
1095        int numero = 08;
1096        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
1097        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
1098        //string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
1099        // string d = string.Format("World/{0:00}/Trees_Animation 1_{0:00}", numero);
1100        LuoMaa(numero, a, b, "", "");
1101
1102
1103
1104    }
1105    void Maa6()
1106    {
1107        int numero = 06;
1108        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
1109        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
1110       // string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
1111        // string d = string.Format("World/{0:00}/Trees_Animation 1_{0:00}", numero);
1112        LuoMaa(numero, a, b, "", "");
1113
1114
1115
1116    }
1117    void Maa5()
1118    {
1119        int numero = 05;
1120        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
1121        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
1122        string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
1123        // string d = string.Format("World/{0:00}/Trees_Animation 1_{0:00}", numero);
1124        LuoMaa(numero, a, b, c, "");
1125
1126
1127
1128    }
1129    void Maa4()
1130    {
1131        int numero = 04;
1132        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
1133        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
1134        string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
1135       // string d = string.Format("World/{0:00}/Trees_Animation 1_{0:00}", numero);
1136        LuoMaa(numero, a, b, c, "");
1137
1138
1139
1140    }
1141    void Maa3()
1142    {
1143        int numero = 03;
1144        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
1145        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
1146        string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
1147        string d = string.Format("World/{0:00}/Trees_Animation 1_{0:00}", numero);
1148        LuoMaa(numero, a, b, c, d);
1149
1150
1151
1152    }
1153    void Maa2()
1154    {
1155        int numero = 02;
1156        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
1157        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
1158        string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
1159        string d = string.Format("World/{0:00}/Trees_Animation 1_{0:00}", numero);
1160        LuoMaa(numero, a, b, c, d);
1161
1162        Boat1(new Vector (-1000,400));
1163
1164    }
1165    void Maa1()
1166    {
1167        int numero = 1;
1168        string a = string.Format("World/{0:00}/base_Animation 1_{0:00}", numero);
1169        string b = string.Format("World/{0:00}/black_Animation 1_{0:00}", numero);
1170        string c = string.Format("World/{0:00}/Restricted area_Animation 1_{0:00}", numero);
1171         string d = string.Format("World/{0:00}/Trees_Animation 1_{0:00}", numero);
1172        LuoMaa(numero, a, b, c, d);
1173
1174
1175
1176    }
1177
1178    void House()
1179    {
1180        Level.Width = 2400;
1181        Level.Height = 2400;
1182        Level.Background.Image = SmallHouseInside;
1183        Level.Background.Width = 2400;
1184        Level.Background.Height = 2400;
1185        AddPlayer(PlayrStartPoint, 60, 60);
1186        ColorTileMap ruudutt = ColorTileMap.FromLevelAsset("Houses/Small House/house hitbox");
1187        ruudutt.SetTileMethod(Color.Black, LuoTaso);
1188        ruudutt.Optimize(Color.Black);
1189        ruudutt.Execute();
1190        LevelTeleport(new Vector(0, -200), 50, 10, "30", () => new Vector(-460, -100));
1191        Camero();
1192        //LisaaKartta();
1193        Camera.Follow(Kamera);
1194        Camera.StayInLevel = true;
1195        //CameraShake(100, 0.02);
1196        Level.CreateBorders();
1197    }
1198    void AloitusMaa()
1199    {
1200
1201
1202
1203        Level.Width = 4800;
1204        Level.Height = 4800;
1205        Level.Background.Image = BaseLayer;
1206        Level.Background.Width = 4800;
1207        Level.Background.Height = 4800;
1208        AddTaso1Seina1();
1209
1210        ColorTileMap ruudut2 = ColorTileMap.FromLevelAsset("World/Map 1/restricted area 2");
1211        ruudut2.SetTileMethod(Color.Black, LuoTaso);
1212        ruudut2.Optimize(Color.Black);
1213        ruudut2.Execute();
1214
1215
1216        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("World/Map 1/restricted area 1");
1217
1218        ruudut.SetTileMethod(Color.Black, LuoTaso);
1219        ruudut.Optimize(Color.Black);
1220        ruudut.Execute();
1221
1222
1223
1224        //Talot
1225        Houset(new Vector(-500, -1000), 370, 390);
1226        Houset(TaloSpawnPoint, 570, 350);
1227        Houset(new Vector(-500, -400), 570, 350);
1228        SignPost(new Vector(-600, -650));
1229
1230        //Player
1231        AddPlayer(PlayrStartPoint, 60, 60);
1232
1233        Fense(new Vector(-650, -450));
1234        Fense(new Vector(-150, -850));
1235        //Enemies
1236        gobliin(new Vector(500, -1000));
1237        gobliin(new Vector(400, -1000));
1238        gobliin(new Vector(300, -1000));
1239        LisaaWraith(new Vector(1000, 1000), 24, 24);
1240
1241        //Ruins
1242        LisaaKivi(new Vector(1000, 300), 170, 100);
1243        LisaaIsoPylvas(Ruins, 310, 280);
1244        LisaaKivi(new Vector(2000, 1000), 170, 100);
1245        LisaaIsoPylvas(Ruins2, 310, 280);
1246        LisaaPieniPylvas(new Vector(1900, 1500), 250, 200);
1247        LisaaPieniKivi(new Vector(1000, 500), 100, 50);
1248        LisaaPieniKivi(new Vector(1400, 660), 100, 50);
1249
1250        //Teleport
1251        LevelTeleport(new Vector(-2000, 2570), 1000, 400, "VesiMaa", () => new Vector(-600, -1000));
1252        LevelTeleport(new Vector(2500, -2000), 400, 4000, "Skeletor", () => new Vector(0, -500));
1253
1254
1255        Camero();
1256
1257        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
1258        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
1259        Camera.Follow(Kamera);
1260        Camera.StayInLevel = true;
1261        LisaaKartta();
1262
1263        Level.CreateBorders();
1264
1265    }
1266    void SkeletorBossRoom()
1267    {
1268        Level.Width = 2400;
1269        Level.Height = 2400;
1270        Level.Background.Image = SkeltorBackground;
1271        Level.Background.Width = 2400;
1272        Level.Background.Height = 2400;
1273        AddPlayer(PlayrStartPoint, 60, 60);
1274        ColorTileMap ruudutt = ColorTileMap.FromLevelAsset("Bosses/Skeletor/restricted_Boss room_0");
1275        ruudutt.SetTileMethod(Color.Black, LuoTaso);
1276        ruudutt.Optimize(Color.Black);
1277        ruudutt.Execute();
1278
1279
1280        CameraShake(60, 0.02);
1281
1282        Timer.SingleShot(5, delegate
1283        {
1284            Skeletor(new Vector(0, 1000), 2400, 2400);
1285
1286        });
1287
1288
1289        Camero();
1290        LisaaKartta();
1291        Camera.Follow(Kamera);
1292        Camera.StayInLevel = true;
1293        //CameraShake(100, 0.02);
1294        Level.CreateBorders();
1295    }
1296
1297    //Walls and the creator
1298    void LuoTaso(Vector paikka, double leveys, double korkeus)
1299    {
1300
1301        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
1302        taso.Position = paikka;
1303        //taso.Color = RandomGen.NextColor();
1304        taso.Color = Color.Transparent;
1305        Add(taso);
1306
1307    }
1308    void AddTaso1Seina1()
1309    {
1310        GameObject Seinat = new GameObject(4800, 4800);
1311        Seinat.Image = RestrictedArea1;
1312
1313        Seinat.Position = new Vector(0, 0);
1314        Add(Seinat);
1315
1316        GameObject Seinat2 = new GameObject(4800, 4800);
1317        Seinat2.Image = RestrictedArea2;
1318
1319        Seinat2.Position = new Vector(0, 0);
1320        Add(Seinat2);
1321
1322    }
1323    //Player
1324    void AddPlayer(Vector paikka, double leveys, double korkeus)
1325
1326    {
1327
1328        player1 = new Pelaaja1(40, 60, 5);
1329
1330        player1.kuva = new GameObject(160, 140);
1331        player1.kuva.Y = 10;
1332        player1.Add(player1.kuva);
1333        player1.Color = Color.Transparent;
1334        player1.kuva.Image = IdleDown;
1335
1336        player1.CollisionIgnoreGroup = 1;
1337        player1.varjo = new GameObject(160, 140);
1338        player1.varjo.Y = 10;
1339        // player1.Shape = Shape.FromImage(IdleDown);
1340
1341        player1.Add(player1.varjo);
1342        player1.varjo.Image = PLayerShadow;
1343        //player1.varjo.Image = Image.Color(PLayerShadow,100);
1344        player1.Position = paikka;
1345        player1.nopeus = 20000;
1346        player1.LinearDamping = 0.1;
1347        player1.CanRotate = false;
1348        player1.MaxAngularVelocity = 0;
1349        //player1.Shape = Shape.FromImage(IdleDown);
1350        player1.AngularDamping = 0.1;
1351        player1.AbsoluteAngle = Angle.FromDegrees(0);
1352        PlayerControlls();
1353
1354        AddCollisionHandler(player1, "GoblinAttack", PlayerhurtState);
1355
1356        AddCollisionHandler(player1, "SkullAttack", PlayerSkullhurtState);
1357
1358        ProgressBar elamaPalkki = new ProgressBar(300, 50);
1359        elamaPalkki.X = Screen.Left + 150;
1360        elamaPalkki.Y = Screen.Top - 80;
1361        elamaPalkki.BarImage = PlayerFullHealth;
1362        elamaPalkki.Image = PlayerEmptyHealth;
1363        elamaPalkki.BindTo(player1.PlayerHealth);
1364        elamaPalkki.TextureWrapSize = new Vector(5, 1);
1365        Add(elamaPalkki);
1366        //player1.Add(elamaPalkki);
1367
1368        player1.Destroyed += delegate
1369        {
1370            LataaMaa(NykyineneMaa);
1371
1372
1373        };
1374
1375
1376        Add(player1);
1377
1378
1379
1380
1381
1382    }
1383    void PlayerSkullhurtState(PhysicsObject pel, PhysicsObject HitBox)
1384    {
1385        Vector suunta = player1.Position - HitBox.Position;
1386        suunta.Y = 0;
1387        suunta.Normalize();
1388        CameraShake(60.0, 0.3);
1389        player1.PlayerHealth.Value--;
1390        player1.Hit(suunta * 50);
1391        Jypeli.Timer.SingleShot(0.3, delegate
1392        {
1393
1394            if (player1.PlayerHealth.Value < 1)
1395            {
1396                player1.Destroy();
1397
1398                Camera.StopFollowing();
1399            }
1400
1401            player1.LinearDamping = 0.1;
1402            CanRun = true;
1403        });
1404        player1.LinearDamping = 0.8;
1405        CanRun = false;
1406        HitBox.Destroy();
1407
1408        // player1.Destroy();
1409
1410
1411    }
1412    void PlayerhurtState(PhysicsObject pel, PhysicsObject HitBox)
1413    {
1414        Vector suunta = player1.Position - HitBox.Position;
1415        suunta.Normalize();
1416        CameraShake(60.0, 0.3);
1417        player1.PlayerHealth.Value--;
1418        player1.Hit(suunta * 80);
1419        Jypeli.Timer.SingleShot(0.3, delegate
1420        {
1421
1422            if (player1.PlayerHealth.Value < 1)
1423            {
1424                player1.Destroy();
1425
1426                Camera.StopFollowing();
1427            }
1428
1429            player1.LinearDamping = 0.1;
1430            CanRun = true;
1431        });
1432        player1.LinearDamping = 0.8;
1433        CanRun = false;
1434        HitBox.Destroy();
1435
1436        // player1.Destroy();
1437
1438
1439    }
1440    void PlayerControlls()
1441    {
1442
1443        Keyboard.Listen(Key.Up, ButtonState.Down, MovePlayer, null, new Vector(0, player1.nopeus), Up);
1444        Keyboard.Listen(Key.Down, ButtonState.Down, MovePlayer, null, new Vector(0, -player1.nopeus), Down);
1445        Keyboard.Listen(Key.Left, ButtonState.Down, MovePlayer, null, new Vector(-player1.nopeus, 0), Left);
1446        Keyboard.Listen(Key.Right, ButtonState.Down, MovePlayer, null, new Vector(player1.nopeus, 0), Right);
1447
1448        //Keyboard.Listen(Key.Space, ButtonState.Pressed, CameraShake, null,20.0, 0.3);
1449
1450        Keyboard.Listen(Key.D, ButtonState.Down, Attack, null, ARight, IdleRight, new Vector(50, 0), new Vector(10.0, 50.0));
1451        Keyboard.Listen(Key.A, ButtonState.Down, Attack, null, ALeft, IdleLeft, new Vector(-50, 0), new Vector(10.0, 50.0));
1452        Keyboard.Listen(Key.W, ButtonState.Down, Attack, null, AUp, IdleUp, new Vector(0, 50), new Vector(50.0, 10.0));
1453        Keyboard.Listen(Key.S, ButtonState.Down, Attack, null, ADown, IdleDown, new Vector(0, -50), new Vector(50.0, 10.0));
1454
1455
1456
1457        Keyboard.Listen(Key.Up, ButtonState.Released, () =>
1458        {
1459            if (CanRun)
1460                player1.kuva.Animation = IdleUp;
1461
1462        }, null);
1463
1464
1465        Keyboard.Listen(Key.Down, ButtonState.Released, () =>
1466        {
1467            if (CanRun)
1468                player1.kuva.Animation = IdleDown;
1469        }, null);
1470
1471
1472        Keyboard.Listen(Key.Right, ButtonState.Released, () =>
1473        {
1474            if (CanRun)
1475                player1.kuva.Animation = IdleRight;
1476        }, null);
1477
1478
1479        Keyboard.Listen(Key.Left, ButtonState.Released, () =>
1480        {
1481            if (CanRun)
1482                player1.kuva.Animation = IdleLeft;
1483        }, null);
1484
1485
1486
1487
1488    }
1489    void MovePlayer(Vector vektori, Animation suunta)
1490    {
1491        if (CanRun == true)
1492        {
1493            player1.kuva.Animation = suunta;
1494            player1.kuva.Animation.FPS = 7;
1495            if (player1.kuva.Animation.IsPlaying == false)
1496            {
1497                player1.kuva.Animation.Start();
1498
1499
1500            }
1501
1502            player1.Push(vektori);
1503
1504
1505        }
1506
1507    }
1508    void Attack(Animation attack, Image Idle, Vector suunta, Vector koko)
1509    {
1510        CanRun = false;
1511        player1.kuva.Animation = attack;
1512        player1.kuva.Animation.FPS = 15;
1513        CameraShake(5, 0.5);
1514        if (player1.kuva.Animation.IsPlaying == false)
1515        {
1516
1517            Jypeli.Timer.SingleShot(0.1, delegate
1518            {
1519
1520
1521                PhysicsObject HitBox = new PhysicsObject(koko.X, koko.Y);
1522                HitBox.Position = player1.Position + suunta;
1523                Add(HitBox);
1524                HitBox.LifetimeLeft = TimeSpan.FromSeconds(0.1);
1525                HitBox.IgnoresCollisionResponse = true;
1526                HitBox.Color = Color.Red;
1527                HitBox.Tag = "PlayerAttack";
1528                HitBox.IsVisible = false;
1529            });
1530            player1.kuva.Animation.Start(1);
1531            player1.kuva.Animation.Played += delegate
1532            {
1533                CanRun = true;
1534                player1.kuva.Animation.Stop();
1535                player1.kuva.Animation = new Animation(Idle);
1536
1537            };
1538
1539
1540
1541        }
1542
1543
1544
1545
1546    }
1547
1548    //Camera and the camera shake
1549    void Camero()
1550    {
1551        Kamera = new PhysicsObject(1, 1);
1552        Add(Kamera);
1553        Kamera.Position = player1.Position;
1554        seuraajanAivot = new FollowerBrain(player1);
1555        Kamera.IgnoresCollisionResponse = true;
1556        seuraajanAivot.Speed = 400;
1557
1558        Kamera.Brain = seuraajanAivot;
1559        seuraajanAivot.Active = true;
1560    }
1561    void CameraShake(double shakeAmount, double vaimennus)
1562    {
1563        Timer shake = new Timer();
1564        shake.Interval = 0.05;
1565        shake.Timeout += delegate
1566        {
1567            Kamera.Position += RandomGen.NextVector(0, shakeAmount);
1568
1569            shakeAmount += -shakeAmount * vaimennus;
1570            if (shakeAmount < 0.1)
1571            {
1572                shake.Stop();
1573            }
1574        };
1575        shake.Start();
1576
1577
1578    }
1579
1580    //Bosses
1581    void Skeletor(Vector paikka, double leveys, double korkeus)
1582    {
1583        GameObject skelePoint = new GameObject(10, 10);
1584        skelePoint.IsVisible = false;
1585        skelePoint.Position = paikka;
1586        Add(skelePoint);
1587
1588        Skeletor skele = new Skeletor(this, 470, 520);
1589        skele.IgnoresCollisionResponse = true;
1590        skele.Image = SkeletorImage;
1591        skele.Position = paikka;
1592        // Image skeleShape = LoadImage("Bosses/Skeletor/skull män headShape");
1593        //skele.Shape = Shape.FromImage(SkeletorImage);
1594
1595        skele.CanRotate = false;
1596        skele.LinearDamping = 0.7;
1597        FollowerBrain skeleAivot = new FollowerBrain(skelePoint);
1598        skeleAivot.Speed = 400;
1599        skele.Brain = skeleAivot;
1600        skeleAivot.Active = true;
1601
1602
1603
1604        AddCollisionHandler<Skeletor, PhysicsObject>(skele, "PlayerAttack", SkeletorHurt);
1605
1606        ProgressBar BossHealth = new ProgressBar(800, 30);
1607        BossHealth.X = Screen.Right - 400;
1608        BossHealth.Y = Screen.Bottom + 80;
1609        BossHealth.BarImage = FullHealth;
1610        BossHealth.Image = NoHealth;
1611        BossHealth.BindTo(skele.helttiLaskuri);
1612        BossHealth.TextureWrapSize = new Vector(20, 1);
1613        Add(BossHealth);
1614
1615       
1616        Add(skele);
1617
1618
1619        Timer BossFight = new Timer();
1620        BossFight.Interval = 1;
1621        BossFight.Start();
1622
1623        BossFight.Timeout += delegate
1624        {
1625            BossFight.Interval = 10;
1626            Timer.SingleShot(1, delegate
1627            {
1628
1629                SkullAttackLaser(skele);
1630
1631
1632
1633
1634
1635            });
1636            //BossFight.Interval = 25;
1637
1638
1639
1640            Timer.SingleShot(5, delegate
1641             {
1642
1643                 int maara = GetObjectsWithTag("Wraith").Count;
1644                 if (maara < 1)
1645                 {
1646                     LisaaWraith(new Vector(-300, 0), 240, 240, 10000);
1647
1648
1649                 }
1650                 if (maara < 2)
1651                 {
1652                     LisaaWraith(new Vector(300, 0), 240, 240, 10000);
1653
1654
1655                 }
1656                 if (maara < 3)
1657                 {
1658                     LisaaWraith(new Vector(-300, 400), 240, 240, 100000);
1659
1660
1661                 }
1662                 if (maara < 4)
1663                 {
1664                     LisaaWraith(new Vector(300, 400), 240, 240, 10000);
1665
1666
1667                 }
1668                 if (maara < 5)
1669                 {
1670                     LisaaWraith(new Vector(300, 800), 240, 240, 10000);
1671
1672
1673                 }
1674                 if (maara < 6)
1675                 {
1676                     LisaaWraith(new Vector(-300, 800), 240, 240, 10000);
1677
1678
1679                 }
1680
1681
1682             });
1683
1684
1685
1686
1687
1688
1689        };
1690
1691        skele.Destroyed += BossFight.Stop;
1692
1693
1694
1695
1696
1697    }
1698    void SkullAttackLaser(Skeletor skele)
1699    {
1700
1701        GameObject Attack = new GameObject(1200, 1200);
1702        Attack.Animation = new Animation(SkullAttack);
1703        Attack.Animation.Start();
1704        //Attack.Position = skele.Position;
1705        Attack.Y = -450;
1706        PhysicsObject HitBox = null;
1707        PhysicsObject HitBox2 = null;
1708       // HitBox.Color = Color.Red;
1709        Timer.SingleShot(0.3, delegate
1710         {
1711             ;
1712             HitBox = Laaser(new Vector(100, 300), skele);
1713             HitBox2 = Laaser(new Vector(-130, 300), skele);
1714         });
1715
1716
1717        //Attack.Position = HeadPosition + new Vector(0, -450);
1718        skele.Add(Attack);
1719
1720        Attack.Animation.Played += delegate
1721        {
1722            Attack.Destroy();
1723            HitBox.Destroy();
1724            HitBox2.Destroy();
1725
1726        };
1727
1728
1729
1730    }
1731    PhysicsObject Laaser(Vector paikka, Skeletor skele)
1732    {
1733        PhysicsObject HitBox = new PhysicsObject(100, 900);
1734        HitBox.Position = paikka;
1735        skele.Add(HitBox);
1736        HitBox.IgnoresCollisionResponse = true;
1737        HitBox.Color = Color.Red;
1738        HitBox.IsVisible = false;
1739        HitBox.Tag = "SkullAttack";
1740
1741        return HitBox;
1742
1743    }
1744    void SkeletorHurt(Skeletor skeleton, PhysicsObject HitBox)
1745    {
1746        Vector suunta = skeleton.Position - player1.Position;
1747        suunta.Normalize();
1748        skeleton.helttiLaskuri.Value--;
1749        Jypeli.Timer.SingleShot(0.1, delegate
1750        {
1751            skeleton.Image = SkeletorImage;
1752            if (skeleton.helttiLaskuri.Value < 1)
1753            {
1754
1755                skeleton.Destroy();
1756
1757            }
1758
1759
1760        });
1761
1762        skeleton.Image = SkeletorDmg;
1763        skeleton.Hit(suunta * 40);
1764        HitBox.Destroy();
1765
1766    }
1767
1768    void WrathSpawner()
1769
1770    {
1771        Timer spawner = new Timer();
1772        spawner.Interval = 6;
1773
1774        Vector TaloSpawnPoint = RandomGen.NextVector(-300, 500, 300, 900);
1775
1776        spawner.Timeout += delegate
1777        {
1778            if (WraithCount < 2)
1779                LisaaWraith(TaloSpawnPoint, 240, 240);
1780
1781        };
1782        spawner.Start();
1783
1784
1785    }
1786    void Houset(Vector paikka, double leveys, double korkeus)
1787    {
1788
1789
1790        PhysicsObject mediumtalot = new PhysicsObject(360, 390);
1791
1792        mediumtalot.Image = MediumTalo;
1793        //mediumtalot.Shape = Shape.FromImage(MediumTalo);
1794        mediumtalot.Position = paikka;
1795        mediumtalot.IgnoresCollisionResponse = true;
1796
1797        PhysicsObject seinät = new PhysicsObject(240, 200);
1798        seinät.Position = mediumtalot.Position;
1799        seinät.X += 45;
1800        seinät.Y -= 100;
1801
1802        GameObject shadow = new GameObject(360, 390);
1803        shadow.Image = MediumTaloShadow;
1804        seinät.MakeStatic();
1805        //seina.MakeStatic();
1806        //meduimtaloo.talonsena = new PhysicsObject(400,200);
1807        seinät.IsVisible = false;
1808        // meduimtaloo.talonsena.Color = Color.Transparent;
1809        shadow.Position = mediumtalot.Position;
1810
1811        Add(shadow, -1);
1812
1813        // seina2.MakeStatic();
1814        Add(seinät);
1815
1816        //meduimtaloo.talonsena.Color = Color.Transparent;
1817        Add(mediumtalot, 2);
1818
1819
1820
1821    }
1822    void LisaaWraith(Vector paikka, double leveys, double korkeus, double wanderDistance = 500)
1823    {
1824
1825        GameObject WraithSpawn = new GameObject(240, 240);
1826        WraithSpawn.Animation = SpectreSpawn;
1827        WraithSpawn.Animation.Start();
1828        Add(WraithSpawn);
1829        WraithSpawn.Position = paikka;
1830
1831
1832        Wraith wraiith = new Wraith(this, 240, 240, 3, wanderDistance);
1833        wraiith.CollisionIgnoreGroup = 1;
1834        wraiith.IgnoresCollisionResponse = true;
1835        wraiith.Position = paikka;
1836        WraithCount++;
1837        GameObject shadow = new GameObject(240, 240);
1838        Image wraithshadow = LoadImage("Enemies/Wraith/wraith shadow_shadow_0");
1839        shadow.Image = wraithshadow;
1840        //shadow.Y = -10;
1841
1842        wraiith.Tag = "Wraith";
1843
1844        AddCollisionHandler<Wraith, PhysicsObject>(wraiith, "PlayerAttack", WraithHurtState);
1845
1846        wraiith.CanRotate = false;
1847        wraiith.wraithaivot.Speed = 400;
1848        wraiith.wraithaivot.Active = true;
1849
1850
1851
1852        ProgressBar elamaPalkki = new ProgressBar(120, 30);
1853        elamaPalkki.Y = 80;
1854        elamaPalkki.BarImage = FullHealth;
1855        elamaPalkki.Image = NoHealth;
1856        elamaPalkki.BindTo(wraiith.helttiWraithLaskuri);
1857        elamaPalkki.TextureWrapSize = new Vector(3, 1);
1858        // wraiith.Add(elamaPalkki);
1859
1860        wraiith.IsUpdated = true;
1861        Timer.SingleShot(1 / 12.0 * 8, delegate
1862             {
1863                 Add(wraiith, 2);
1864                 WraithSpawn.IsVisible = false;
1865                 wraiith.Add(elamaPalkki);
1866                 wraiith.Add(shadow);
1867                 WraithSpawn.Destroy();
1868
1869
1870
1871
1872             });
1873
1874
1875
1876
1877    }
1878    void WraithHurtState(Wraith wraiith, PhysicsObject HitBox)
1879    {
1880        Vector suunta = wraiith.Position - player1.Position;
1881        suunta.Normalize();
1882        wraiith.helttiWraithLaskuri.Value--;
1883        Jypeli.Timer.SingleShot(0.3, delegate
1884        {
1885            if (wraiith.helttiWraithLaskuri.Value < 1)
1886            {
1887
1888                wraiith.Destroy();
1889                WraithCount--;
1890            }
1891            wraiith.LinearDamping = 0.7;
1892            wraiith.Animation.Start();
1893        });
1894        wraiith.LinearDamping = 0.8;
1895        wraiith.Animation.Stop();
1896        wraiith.Hit(suunta * 70);
1897        HitBox.Destroy();
1898
1899    }
1900    void gobliin(Vector paikka)
1901    {
1902
1903        Goblin gobo = new Goblin(this, 140, 140, 2);
1904
1905        gobo.CollisionIgnoreGroup = 1;
1906        gobo.Position = paikka;
1907        gobo.Image = GDown;
1908        Add(gobo);
1909
1910        GameObject shadow = new GameObject(140, 140);
1911
1912        Image rockshadow = LoadImage("Enemies/Goblin/goblin shadow");
1913        shadow.Image = rockshadow;
1914        //shadow.Y = -10;
1915
1916        gobo.Add(shadow);
1917
1918
1919
1920
1921        AddCollisionHandler<Goblin, PhysicsObject>(gobo, "PlayerAttack", HurtState);
1922
1923        gobo.CanRotate = false;
1924        gobo.goboaivot.Speed = 300;
1925        gobo.goboaivot.Active = true;
1926
1927        gobo.IsUpdated = true;
1928
1929
1930        ProgressBar elamaPalkki = new ProgressBar(80, 30);
1931        elamaPalkki.Y = 60;
1932        elamaPalkki.BarImage = FullHealth;
1933        elamaPalkki.Image = NoHealth;
1934        elamaPalkki.BindTo(gobo.helttiLaskuri);
1935        elamaPalkki.TextureWrapSize = new Vector(2, 1);
1936        gobo.Add(elamaPalkki);
1937
1938
1939
1940
1941
1942    }
1943    void HurtState(Goblin gobo, PhysicsObject Hitbox)
1944    {
1945        // gobo.Destroy();
1946        bool GoblinIsDestroyed = false;
1947        Vector suunta = gobo.Position - player1.Position;
1948        suunta.Normalize();
1949        gobo.helttiLaskuri.Value--;
1950        if (gobo.helttiLaskuri.Value < 1)
1951        {
1952            gobo.Destroy();
1953            GoblinIsDestroyed = true;
1954            goboKuolee(gobo);
1955        }
1956        Jypeli.Timer.SingleShot(0.3, delegate
1957        {
1958
1959            gobo.LinearDamping = 0.7;
1960            gobo.Animation.Start();
1961        });
1962        gobo.LinearDamping = 0.8;
1963        gobo.Animation.Stop();
1964
1965        if (GoblinIsDestroyed == false)
1966        {
1967            gobo.Hit(suunta * 70);
1968        }
1969
1970        Hitbox.Destroy();
1971
1972    }
1973    void goboKuolee(Goblin gobo)
1974    {
1975
1976        gobo.Destroy();
1977        GameObject goboDeath = new GameObject(140, 140);
1978        goboDeath.Animation = GoblinDeath;
1979        goboDeath.Position = gobo.Position;
1980        goboDeath.Animation.StopOnLastFrame = true;
1981        goboDeath.Animation.FPS = 12;
1982
1983        Add(goboDeath);
1984
1985        goboDeath.Animation.Played += delegate
1986        {
1987            goboDeath.IsVisible = false;
1988            goboDeath.Destroy();
1989        };
1990
1991        goboDeath.Animation.Start();
1992
1993
1994
1995
1996    }
1997    void LisaaKivi(Vector paikka, double leveys, double korkeus)
1998    {
1999        PhysicsObject isokivi = new PhysicsObject(170, 100);
2000        isokivi.MakeStatic();
2001        Image BigRock = LoadImage("Stuff/Ruins/large stone");
2002        isokivi.Image = BigRock;
2003        isokivi.Position = paikka;
2004        GameObject shadow = new GameObject(170, 100);
2005
2006        Image rockshadow = LoadImage("Stuff/Ruins/large stone shadow");
2007        shadow.Image = rockshadow;
2008        //shadow.Y = 10;
2009
2010        isokivi.Add(shadow);
2011
2012        Add(isokivi);
2013
2014
2015
2016    }
2017    void LisaaPieniKivi(Vector paikka, double leveys, double korkeus)
2018    {
2019        PhysicsObject pienikivi = new PhysicsObject(100, 50);
2020        pienikivi.MakeStatic();
2021        Image BigRock = LoadImage("Stuff/Ruins/small stone");
2022        pienikivi.Image = BigRock;
2023        pienikivi.Position = paikka;
2024        GameObject shadow = new GameObject(100, 50);
2025
2026        Image rockshadow = LoadImage("Stuff/Ruins/small stone shadow");
2027        shadow.Image = rockshadow;
2028        //shadow.Y = 10;
2029
2030        pienikivi.Add(shadow);
2031
2032        Add(pienikivi);
2033
2034
2035
2036    }
2037    void LisaaIsoPylvas(Vector paikka, double leveys, double korkeus)
2038    {
2039        PhysicsObject IsoPylvas = new PhysicsObject(310, 280);
2040        IsoPylvas.MakeStatic();
2041        IsoPylvas.Position = paikka;
2042        Image IsoPylvasImg = LoadImage("Stuff/Ruins/medium pillar");
2043        IsoPylvas.Image = IsoPylvasImg;
2044        IsoPylvas.Shape = Shape.FromImage(IsoPylvasImg);
2045        GameObject shadow = new GameObject(310, 280);
2046        Image PylvasShadow = LoadImage("Stuff/Ruins/medium pillar shadow");
2047        shadow.Image = PylvasShadow;
2048
2049        shadow.Position = IsoPylvas.Position;
2050
2051        Add(shadow, -1);
2052
2053        Add(IsoPylvas, 1);
2054
2055
2056    }
2057    void LisaaPieniPylvas(Vector paikka, double leveys, double korkeus)
2058    {
2059        PhysicsObject PieniPylvas = new PhysicsObject(250, 200);
2060        PieniPylvas.MakeStatic();
2061        PieniPylvas.Position = paikka;
2062        Image IsoPylvasImg = LoadImage("Stuff/Ruins/small pillar");
2063        PieniPylvas.Image = IsoPylvasImg;
2064        PieniPylvas.Shape = Shape.FromImage(IsoPylvasImg);
2065        GameObject shadow = new GameObject(250, 200);
2066        Image PylvasShadow = LoadImage("Stuff/Ruins/small pillar shadow");
2067        shadow.Image = PylvasShadow;
2068
2069        shadow.Position = PieniPylvas.Position;
2070
2071        Add(shadow, -1);
2072
2073        Add(PieniPylvas, 1);
2074
2075
2076    }
2077
2078    void SignPost(Vector paikka)
2079    {
2080        PhysicsObject sign = new PhysicsObject(100, 120);
2081        sign.Position = paikka;
2082        Image signImage = LoadImage("Stuff/SignPost/Sign post");
2083        sign.Shape = Shape.FromImage(signImage);
2084        sign.Image = signImage;
2085        sign.MakeStatic();
2086        GameObject shadow = new GameObject(100, 120);
2087        Image shadowImg = LoadImage("Stuff/SignPost/Sign post shadow");
2088        shadow.Image = shadowImg;
2089        shadow.Position = sign.Position;
2090
2091        Add(shadow, -1);
2092        Add(sign, 1);
2093
2094
2095    }
2096    void LevelTeleport(Vector paikka, double korkeus, double leveys, string uusipaikka, Func<Vector> Tulopaikka)
2097    {
2098        PhysicsObject tp = new PhysicsObject(korkeus, leveys);
2099        //AddCollisionHandler(player1);
2100        AddCollisionHandler(tp, player1, delegate (PhysicsObject a, PhysicsObject b)
2101        {
2102            PlayrStartPoint = Tulopaikka();
2103            LataaMaa(uusipaikka);
2104        });
2105        tp.IsVisible = false;
2106        tp.IgnoresCollisionResponse = true;
2107        tp.MakeStatic();
2108        tp.Position = paikka;
2109
2110        Add(tp);
2111
2112    }
2113    void LisaaKartta()
2114    {
2115        Keyboard.Listen(Key.M, ButtonState.Pressed, Kartta, null);
2116
2117
2118
2119
2120    }
2121    void Kartta()
2122    {
2123        Label kartta = new Label(1200, 900);
2124        Label pelaaja = new Label(20, 20);
2125
2126        int paikkaNumero = int.Parse(NykyineneMaa);
2127        int x = paikkaNumero % 8;
2128        int y = (paikkaNumero / 8) + 2;
2129        MessageDisplay.Add("" + x + "," + y);
2130
2131        Vector paikka = new Vector(x * 1200 / 8, y * 900 / 8);
2132        pelaaja.X = kartta.Left + paikka.X;
2133        pelaaja.Y = kartta.Top - paikka.Y;
2134
2135        kartta.Image = Map;
2136        pelaaja.Image = Map;
2137
2138        Add(kartta, 3);
2139        Add(pelaaja, 3);
2140
2141        Layers[3].RelativeTransition = new Vector(0, 0);
2142
2143        Keyboard.Listen(Key.M, ButtonState.Released, () =>
2144        {
2145            kartta.Destroy();
2146            pelaaja.Destroy();
2147        }, null);
2148
2149
2150
2151    }
2152    void LisaaTeltta1(Vector paikka)
2153
2154    {
2155        PhysicsObject teltta = new PhysicsObject(290, 190);
2156        teltta.Position = paikka;
2157        Image telttaright = LoadImage("Stuff/Teltat/tent facing down right");
2158        teltta.Image = telttaright;
2159        teltta.MakeStatic();
2160        teltta.Shape = Shape.FromImage(telttaright);
2161        Add(teltta);
2162
2163
2164
2165    }
2166    void LisaaTeltta2(Vector paikka)
2167
2168    {
2169        PhysicsObject teltta1 = new PhysicsObject(300, 180);
2170        teltta1.Position = paikka;
2171        Image telttaleft = LoadImage("Stuff/Teltat/tent facing down left");
2172        teltta1.Image = telttaleft;
2173        teltta1.MakeStatic();
2174        teltta1.Shape = Shape.FromImage(telttaleft);
2175        Add(teltta1);
2176
2177
2178
2179    }
2180    void Boat1(Vector paikka)
2181    {
2182        PhysicsObject boat = new PhysicsObject(170, 110);
2183        boat.Position = paikka;
2184        Image boatimage = LoadImage("Stuff/Teltat/boat facing up left");
2185        boat.Image = boatimage;
2186        boat.MakeStatic();
2187        boat.Shape = Shape.FromImage(boatimage);
2188        Add(boat);
2189
2190
2191
2192    }
2193    void Fense(Vector paikka)
2194    {
2195        PhysicsObject Fencee = new PhysicsObject(280, 190);
2196        Fencee.Position = paikka;
2197        Fencee.Image = Fence;
2198        Fencee.MakeStatic();
2199        Fencee.Shape = Shape.FromImage(Fence);
2200        Add(Fencee);
2201
2202
2203    }
2204    void AddPuu(Vector paikka)
2205    {
2206        PhysicsObject Puu = new PhysicsObject(240, 300);
2207        Image PuuKuvat = LoadImage(RandomGen.SelectOne("Stuff/Trees/tree_1_0", "Stuff/Trees/tree_2_0", "Stuff/Trees/tree_3_0"));
2208        Puu.Image = PuuKuvat;
2209        Image PuuHitbox = LoadImage("Stuff/Trees/Blacks");
2210        Puu.Shape = Shape.FromImage(PuuHitbox);
2211        Puu.Position = paikka;
2212        Puu.MakeStatic();
2213        GameObject shadow = new GameObject(240, 300);
2214        Image shadowImg = LoadImage("Stuff/Trees/SHADOW_1_0");
2215        shadow.Image = shadowImg;
2216        shadow.Position = Puu.Position;
2217       
2218        Add(shadow, -1);
2219        Add(Puu, 1);
2220       
2221
2222
2223    }
2224    void AddPuuTrunk(Vector paikka)
2225    {
2226        PhysicsObject Puu = new PhysicsObject(240, 300);
2227        Image PuuKuvatTrunk = LoadImage(RandomGen.SelectOne("Stuff/Trees/trunk_1_0", "Stuff/Trees/trunk_2_0", "Stuff/Trees/trunk_3_0"));
2228        Puu.Image = PuuKuvatTrunk;
2229        Image PuuHitbox = LoadImage("Stuff/Trees/Blacks");
2230        Puu.Shape = Shape.FromImage(PuuHitbox);
2231        Puu.Position = paikka;
2232        Puu.MakeStatic();
2233        GameObject shadow = new GameObject(240, 300);
2234        Image shadowImg = LoadImage("Stuff/Trees/SHADOW_1_0");
2235        shadow.Image = shadowImg;
2236        shadow.Position = Puu.Position;
2237
2238        Add(shadow, -1);
2239        Add(Puu, 1);
2240
2241
2242
2243    }
2244    void AddHenri(Vector paikka)
2245    {
2246        PhysicsObject kana = new PhysicsObject(90, 90);
2247        kana.CanRotate = false;
2248        kana.CollisionIgnoreGroup = 1;
2249
2250        kana.Position = paikka;
2251       
2252        Timer HenrinSuuntaKuva = new Timer();
2253        HenrinSuuntaKuva.Interval = 0.6;
2254
2255        HenrinSuuntaKuva.Timeout += delegate
2256        {
2257            kana.Image = LoadImage(RandomGen.SelectOne("Enemies/Kana/KANA_down_0", "Enemies/Kana/KANA_up_0", "Enemies/Kana/KANA_left_0", "Enemies/Kana/KANA_right_0"));
2258
2259        };
2260        HenrinSuuntaKuva.Start();
2261
2262        //kana.Image = LoadImage("Enemies/Kana/Kana_left_0");
2263
2264        RandomMoverBrain wandererBrain = new RandomMoverBrain();
2265        wandererBrain.ChangeMovementSeconds = 0.6;
2266        wandererBrain.WanderRadius = 100;
2267        wandererBrain.Speed = 200;
2268        kana.Brain = wandererBrain;
2269
2270        AddCollisionHandler(kana, "PlayerAttack", KanaKuolee);
2271        Add(kana);
2272
2273
2274    }
2275    void KanaKuolee(PhysicsObject kana, PhysicsObject hitbox)
2276    {
2277        GameObject KanaPosahtaa = new GameObject(90, 90);
2278        KanaPosahtaa.Animation = KanaPoks;
2279        KanaPosahtaa.Animation.Start();     
2280        KanaPosahtaa.Position = kana.Position;       
2281        KanaPosahtaa.Animation.Played += delegate
2282        {
2283            KanaPosahtaa.IsVisible = false;
2284            KanaPosahtaa.Destroy();
2285        };
2286
2287
2288        Add(KanaPosahtaa);
2289        kana.Destroy();
2290    }
2291}
Note: See TracBrowser for help on using the repository browser.