source: 2016/27/ohjaajat/VenienteFragore/VenienteFragore/VenienteFragore/GoombaEnemy.cs @ 7832

Revision 7832, 2.1 KB checked in by sieerinn, 3 years ago (diff)

SimplePlatformCharacterien? kuva kääntyy ympäri vasemmalle kävellessä, Goomballa on myös kuva ja ne aktivoituu vasta lähelle mentäessä

Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using Jypeli;
6
7namespace VenienteFragore
8{
9    class GoombaEnemy : SimplePlatformCharacter
10    {
11        public double Speed { get; set; }
12
13        public bool FallOffPlatforms { get; set; }
14
15        private bool walkRight;
16
17        private bool active;
18
19        public GoombaEnemy(double width, double height) : base(width, height)
20        {
21        }
22
23        private bool CheckCollision(Vector direction)
24        {
25            var collisions = Game.Collisions(this, direction, true);
26            if (collisions.Count > 0)
27            {
28                walkRight = false;
29                foreach (var obj in collisions)
30                {
31                    obj.CollidedWith(this);
32                    this.CollidedWith(obj);
33                }
34            }
35            return collisions.Count > 0;
36        }
37
38        public override void Update(Time time)
39        {
40            if (!active)
41            {
42                // TODO: Aktivointietäisyys pitäisi laskea esim. näytön leveydestä?
43                if (((VenienteFragore)Game).DistanceToNearestPlayer(Position) < 400)
44                    active = true;
45                else
46                    return;
47            }
48
49            if (CheckCollision(new Vector(2, 1)))
50                walkRight = false;
51
52            if (CheckCollision(new Vector(-2, 1)))
53                walkRight = true;
54
55            if (!FallOffPlatforms)
56            {
57                var bottomLeft = new Vector(Left, Bottom + 2);
58                var bottomRight = new Vector(Right, Bottom + 2);
59
60                if (Game.GetTileAt(Game.WorldToTilePosition(bottomRight)) == null)
61                {
62                    walkRight = false;
63                }
64                if (Game.GetTileAt(Game.WorldToTilePosition(bottomLeft)) == null)
65                {
66                    walkRight = true;
67                }
68            }
69
70            Walk(walkRight ? Speed : -Speed);
71            base.Update(time);
72        }
73    }
74}
Note: See TracBrowser for help on using the repository browser.