diff --git a/src/main.cc b/src/main.cc index f9e059e..bb76d4b 100644 --- a/src/main.cc +++ b/src/main.cc @@ -1,6 +1,7 @@ #include "./validation.hh" #include +#include int main(int argc, char *argv[]) { const Action kill = Action("kill", true); @@ -16,6 +17,8 @@ int main(int argc, char *argv[]) { Player player2 = Player(420, "player2", role1, PlayerStatus::Alive); Room room1(1, "Room 1", 1710087364, RoomStatus::InProgress, {player1, player2}); Room room2(2, "Room 2", 1710087384, RoomStatus::Ended, {}); - printf("The action validation result is %u\n", validated_action); + ValidationStatus validated_action = validate_action(&player1, &kill, &room1, &relatedEvents, &player2); + std::string validated_action_str = ValidationStatusUtils::to_string(validated_action); + printf("The action validation result is \"%s\"\n", validated_action_str.c_str()); return EXIT_SUCCESS; } diff --git a/src/validation.cc b/src/validation.cc index 7bd5d1a..692c13f 100644 --- a/src/validation.cc +++ b/src/validation.cc @@ -7,6 +7,7 @@ #include "modules/room.hh" #include +#include /** * Check if a player belongs to a given room. @@ -95,3 +96,20 @@ ValidationStatus validate_action( } return ValidationStatus::ActionProhibited; } + +std::string ValidationStatusUtils::to_string(ValidationStatus status) { + switch (status) { + case ValidationStatus::PlayerNotInRoom: return "player not in room"; + case ValidationStatus::NoTargetPlayerSpecified: return "no target player specified"; + case ValidationStatus::RoomNotInProgress: return "room not in progress"; + case ValidationStatus::ActionDoesNotBelongToRole: return "action does not belong to role"; + case ValidationStatus::ActionProhibited: return "action prohibited"; + case ValidationStatus::NoActor: return "no actor"; + case ValidationStatus::NoAction: return "no action"; + case ValidationStatus::NoRole: return "no role"; + case ValidationStatus::NoRoom: return "no room"; + case ValidationStatus::NoRelatedEvents: return "no relevant events"; + case ValidationStatus::ActionValid: return "action valid"; + default: return "unknown validation status"; + } +} diff --git a/src/validation.hh b/src/validation.hh index dcad507..712ce4f 100644 --- a/src/validation.hh +++ b/src/validation.hh @@ -3,6 +3,7 @@ #include "modules/player.hh" #include "modules/room.hh" +#include #include enum class ValidationStatus { @@ -19,6 +20,12 @@ enum class ValidationStatus { ActionValid, }; +std::string validation_status_to_string(ValidationStatus status); ValidationStatus validate_action(Player *actor, const Action *action, Room *room, std::vector *relatedEvents, Player *target); + +class ValidationStatusUtils { + public: + static std::string to_string(ValidationStatus status); +};