diff options
Diffstat (limited to 'src/game-server/gamehandler.cpp')
-rw-r--r-- | src/game-server/gamehandler.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/game-server/gamehandler.cpp b/src/game-server/gamehandler.cpp index fe274ace..913abf80 100644 --- a/src/game-server/gamehandler.cpp +++ b/src/game-server/gamehandler.cpp @@ -257,6 +257,10 @@ void GameHandler::processMessage(NetComputer *computer, MessageIn &message) handleUseAbilityOnPoint(client, message); break; + case PGMSG_USE_ABILITY_ON_DIRECTION: + handleUseAbilityOnDirection(client, message); + break; + case PGMSG_ACTION_CHANGE: handleActionChange(client, message); break; @@ -683,6 +687,24 @@ void GameHandler::handleUseAbilityOnPoint(GameClient &client, MessageIn &message abilityComponent->useAbilityOnPoint(*client.character, abilityID, x, y); } +void GameHandler::handleUseAbilityOnDirection(GameClient &client, MessageIn &message) +{ + if (client.character->getComponent<BeingComponent>()->getAction() == DEAD) + return; + + const int abilityID = message.readInt8(); + const BeingDirection direction = (BeingDirection)message.readInt8(); + + const int publicId = + client.character->getComponent<ActorComponent>()->getPublicID(); + LOG_DEBUG("Character " << publicId + << " tries to use his ability " << abilityID); + auto *abilityComponent = client.character + ->getComponent<AbilityComponent>(); + abilityComponent->useAbilityOnDirection(*client.character, abilityID, + direction); +} + void GameHandler::handleActionChange(GameClient &client, MessageIn &message) { auto *beingComponent = client.character->getComponent<BeingComponent>(); |