diff options
Diffstat (limited to 'src/character_system.cpp')
-rw-r--r-- | src/character_system.cpp | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/src/character_system.cpp b/src/character_system.cpp index d0c416e..7d456f6 100644 --- a/src/character_system.cpp +++ b/src/character_system.cpp | |||
@@ -39,6 +39,32 @@ void CharacterSystem::addSpriteToParty(int leaderId, int followerId) { | |||
39 | game_.getSystem<AnimationSystem>().setSpriteAnimation(followerId, "still"); | 39 | game_.getSystem<AnimationSystem>().setSpriteAnimation(followerId, "still"); |
40 | } | 40 | } |
41 | 41 | ||
42 | void CharacterSystem::transplantParty(int leaderId, vec2i pos, Direction dir) { | ||
43 | Sprite& leader = game_.getSprite(leaderId); | ||
44 | CharacterState oldState = leader.characterState; | ||
45 | |||
46 | std::vector<int> followers = leader.followers; | ||
47 | leader.followers.clear(); | ||
48 | |||
49 | game_.getSystem<TransformSystem>().moveSprite(leaderId, pos); | ||
50 | game_.getSystem<AnimationSystem>().setSpriteDirection(leaderId, dir); | ||
51 | |||
52 | for (int followerId : followers) { | ||
53 | Sprite& follower = game_.getSprite(followerId); | ||
54 | follower.trail.clear(); | ||
55 | |||
56 | game_.getSystem<TransformSystem>().moveSprite(followerId, pos); | ||
57 | game_.getSystem<AnimationSystem>().setSpriteDirection(followerId, dir); | ||
58 | addSpriteToParty(leaderId, followerId); | ||
59 | } | ||
60 | |||
61 | if (oldState == CharacterState::Running) { | ||
62 | startRunning(leaderId); | ||
63 | } else { | ||
64 | setPartyState(leaderId, oldState); | ||
65 | } | ||
66 | } | ||
67 | |||
42 | void CharacterSystem::moveInDirection(int spriteId, Direction dir) { | 68 | void CharacterSystem::moveInDirection(int spriteId, Direction dir) { |
43 | Sprite& sprite = game_.getSprite(spriteId); | 69 | Sprite& sprite = game_.getSprite(spriteId); |
44 | 70 | ||
@@ -266,11 +292,3 @@ void CharacterSystem::destroySprite(int spriteId) { | |||
266 | stopRunningSound(sprite); | 292 | stopRunningSound(sprite); |
267 | } | 293 | } |
268 | } | 294 | } |
269 | |||
270 | void CharacterSystem::clearSpriteCache() { | ||
271 | for (Sprite& sprite : game_.getSprites() | game_.spriteView()) { | ||
272 | if (sprite.runningSfxChannel != -1) { | ||
273 | stopRunningSound(sprite); | ||
274 | } | ||
275 | } | ||
276 | } | ||