diff options
Diffstat (limited to 'src/character_system.cpp')
-rw-r--r-- | src/character_system.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/character_system.cpp b/src/character_system.cpp index 7d456f6..e6dddf6 100644 --- a/src/character_system.cpp +++ b/src/character_system.cpp | |||
@@ -7,9 +7,10 @@ | |||
7 | #include "animation_system.h" | 7 | #include "animation_system.h" |
8 | #include "script_system.h" | 8 | #include "script_system.h" |
9 | 9 | ||
10 | void CharacterSystem::initSprite(int spriteId) { | 10 | void CharacterSystem::initSprite(int spriteId, int movementSpeed) { |
11 | Sprite& sprite = game_.getSprite(spriteId); | 11 | Sprite& sprite = game_.getSprite(spriteId); |
12 | sprite.orientable = true; | 12 | sprite.orientable = true; |
13 | sprite.movementSpeed = movementSpeed; | ||
13 | } | 14 | } |
14 | 15 | ||
15 | void CharacterSystem::addSpriteToParty(int leaderId, int followerId) { | 16 | void CharacterSystem::addSpriteToParty(int leaderId, int followerId) { |
@@ -29,8 +30,10 @@ void CharacterSystem::addSpriteToParty(int leaderId, int followerId) { | |||
29 | toFace = directionFacingPoint(targetPos - follower.loc); | 30 | toFace = directionFacingPoint(targetPos - follower.loc); |
30 | } | 31 | } |
31 | 32 | ||
32 | for (int i=0; i<PARTY_FRAME_DELAY; i++) { | 33 | int truePartyDelay = PARTY_FRAME_DELAY / leader.movementSpeed; |
33 | vec2i tween = ((follower.loc - targetPos) * i) / static_cast<double>(PARTY_FRAME_DELAY) + targetPos; | 34 | |
35 | for (int i=0; i<truePartyDelay; i++) { | ||
36 | vec2i tween = ((follower.loc - targetPos) * i) / static_cast<double>(truePartyDelay) + targetPos; | ||
34 | follower.trail.push_front({.pos = tween, .dir = toFace}); | 37 | follower.trail.push_front({.pos = tween, .dir = toFace}); |
35 | } | 38 | } |
36 | 39 | ||
@@ -101,7 +104,7 @@ void CharacterSystem::tick(double dt) { | |||
101 | continue; | 104 | continue; |
102 | } | 105 | } |
103 | 106 | ||
104 | int speed = MOVEMENT_SPEED; | 107 | int speed = sprite.movementSpeed; |
105 | if (sprite.characterState == CharacterState::Running) { | 108 | if (sprite.characterState == CharacterState::Running) { |
106 | speed *= 2; | 109 | speed *= 2; |
107 | } | 110 | } |