source: 2015/27/ohjaajat/TheLegendOfGabriel/TheLegendOfGabriel/TheLegendOfGabriel/Creature.cs @ 6550

Revision 6550, 1.7 KB checked in by sieerinn, 4 years ago (diff)

Pistoolia aloiteltu.

Line 
1using System.Collections.Generic;
2using Jypeli;
3
4class Creature : PhysicsObject
5{
6    public DoubleMeter MovementSpeed { get; set; }
7
8    public Dictionary<Direction, Animation> MoveAnimations { get; set; }
9
10    public Direction LastDirection { get; private set; }
11
12    public Creature(double width, double height)
13        : base(width, height)
14    {
15        MovementSpeed = new DoubleMeter(2000, 0, 2000);
16        LastDirection = Direction.Down;
17        MoveAnimations = new Dictionary<Direction, Animation>();
18        LinearDamping = 0.5;
19        CanRotate = false;
20    }
21
22    public void Move(Direction direction)
23    {
24        if (!Game.IsPaused)
25            Push(direction.GetVector() * MovementSpeed);
26    }
27
28    public virtual void UpdateCreature(Time time)
29    {
30        UpdateAnimations();
31    }
32
33    protected virtual void UpdateAnimations()
34    {
35        if (Velocity.MagnitudeSquared > 10.0)
36        {
37            // Animaation vaihto nopeuden suunnan perusteella.
38            SetWalkAnimation();
39
40            // Käynnistetään animaatio jos se ei ole jo käynnissä.
41            if (!Animation.IsPlaying)
42                Animation.Resume();
43        }
44        else if (Animation != null && Animation.IsPlaying)
45        {
46            // Paikallaan ollessa pysäytetään animaatio.
47            Animation.Pause();
48        }
49    }
50
51    public void SetWalkAnimation()
52    {
53        Animation newAnim;
54        LastDirection = Velocity.Angle.MainDirection;
55        if (MoveAnimations.TryGetValue(LastDirection, out newAnim))
56        {
57            if (Animation != newAnim)
58            {
59                Animation = newAnim;
60            }
61        }
62    }
63}
Note: See TracBrowser for help on using the repository browser.