Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 12 additions & 9 deletions src/client/creature.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -607,13 +607,22 @@ void Creature::updateWalk(const bool isPreWalking)
updateWalkOffset(m_walkedPixels);
updateWalkingTile();

if (!isPreWalking && m_walkedPixels == g_gameConfig.getSpriteSize()) {
terminateWalk();
if (m_walkedPixels == g_gameConfig.getSpriteSize()) {
terminateWalk(isPreWalking);
}
}

void Creature::terminateWalk()
void Creature::terminateWalk(bool onlyResetWalkAni)
{
const auto self = static_self_cast<Creature>();
m_walkFinishAnimEvent = g_dispatcher.scheduleEvent([self] {
self->m_walkAnimationPhase = 0;
self->m_walkFinishAnimEvent = nullptr;
}, g_game.getServerBeat());

if (onlyResetWalkAni)
return;

// remove any scheduled walk update
if (m_walkUpdateEvent) {
m_walkUpdateEvent->cancel();
Expand All @@ -634,12 +643,6 @@ void Creature::terminateWalk()
m_walkedPixels = 0;
m_walkOffset = {};
m_walking = false;

const auto self = static_self_cast<Creature>();
m_walkFinishAnimEvent = g_dispatcher.scheduleEvent([self] {
self->m_walkAnimationPhase = 0;
self->m_walkFinishAnimEvent = nullptr;
}, g_game.getServerBeat());
}

void Creature::setHealthPercent(uint8_t healthPercent)
Expand Down
5 changes: 2 additions & 3 deletions src/client/creature.h
Original file line number Diff line number Diff line change
Expand Up @@ -147,12 +147,11 @@ class Creature : public Thing
}

protected:

virtual void onDeath();
virtual void updateWalkOffset(uint8_t totalPixelsWalked);
virtual void updateWalk(bool isPreWalking = false);
virtual void terminateWalk();
virtual void terminateWalk(bool onlyResetWalkAni = false);

void onDeath();
void onPositionChange(const Position& newPos, const Position& oldPos) override;

bool m_walking{ false };
Expand Down
4 changes: 2 additions & 2 deletions src/client/localplayer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -204,9 +204,9 @@ void LocalPlayer::updateWalkOffset(uint8_t totalPixelsWalked)
m_walkOffset.x = -totalPixelsWalked;
}

void LocalPlayer::terminateWalk()
void LocalPlayer::terminateWalk(bool onlyResetWalkAni)
{
Creature::terminateWalk();
Creature::terminateWalk(onlyResetWalkAni);
m_preWalking = false;
}

Expand Down
4 changes: 2 additions & 2 deletions src/client/localplayer.h
Original file line number Diff line number Diff line change
Expand Up @@ -117,10 +117,10 @@ class LocalPlayer : public Player

protected:
void walk(const Position& oldPos, const Position& newPos) override;
void stopWalk() override;
void updateWalk(const bool /*isPreWalking*/ = false) override { Creature::updateWalk(m_preWalking); }
void stopWalk() override;
void updateWalkOffset(uint8_t totalPixelsWalked) override;
void terminateWalk() override;
void terminateWalk(bool onlyResetWalkAni = false) override;

friend class Game;

Expand Down