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

Revision 6632, 1.8 KB checked in by sieerinn, 4 years ago (diff)

Kojootteja vastaan voi taistella, pelaajalla elämät, kenttiä korjailtu, hoboluola tehty.

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