summaryrefslogtreecommitdiff
path: root/src/game-server/gamehandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game-server/gamehandler.cpp')
-rw-r--r--src/game-server/gamehandler.cpp22
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>();