diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/localplayer.cpp | 26 | ||||
-rw-r--r-- | src/net/beinghandler.cpp | 11 |
2 files changed, 35 insertions, 2 deletions
diff --git a/src/localplayer.cpp b/src/localplayer.cpp index d272caaf..77fd5b90 100644 --- a/src/localplayer.cpp +++ b/src/localplayer.cpp @@ -391,6 +391,32 @@ void LocalPlayer::attack() if (mAction != STAND && mAction != ATTACK) return; + //Face direction of the target + if(mTarget){ + unsigned char dir = 0; + int x = 0, y = 0; + Vector plaPos = this->getPosition(); + Vector tarPos = mTarget->getPosition(); + x = plaPos.x - tarPos.x; + y = plaPos.y - tarPos.y; + if(abs(x) < abs(y)){ + //Check to see if target is above me or below me + if(y > 0){ + dir = UP; + } else { + dir = DOWN; + } + } else { + //check to see if the target is to the left or right of me + if(x > 0){ + dir = LEFT; + } else { + dir = RIGHT; + } + } + setDirection(dir); + } + mLastAction = tick_time; setAction(ATTACK); diff --git a/src/net/beinghandler.cpp b/src/net/beinghandler.cpp index fc3c7d1e..0873764e 100644 --- a/src/net/beinghandler.cpp +++ b/src/net/beinghandler.cpp @@ -257,7 +257,7 @@ void BeingHandler::handleBeingAttackMessage(MessageIn &msg) int attackType = msg.readInt8(); if (!being) return; - + switch (direction) { case DIRECTION_UP: being->setDirection(Being::UP); break; @@ -327,5 +327,12 @@ void BeingHandler::handleBeingDirChangeMessage(MessageIn &msg) { Being *being = beingManager->findBeing(msg.readInt16()); if (!being) return; - being->setDirection(msg.readInt8()); + int data = msg.readInt8(); + switch (data) + { + case DIRECTION_UP: being->setDirection(Being::UP); break; + case DIRECTION_DOWN: being->setDirection(Being::DOWN); break; + case DIRECTION_LEFT: being->setDirection(Being::LEFT); break; + case DIRECTION_RIGHT: being->setDirection(Being::RIGHT); break; + } } |