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

Revision 6549, 1.6 KB checked in by sieerinn, 5 years ago (diff)

Miekan heiluttelu kirjoitettu uusiksi.

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