feat: add to_string to ValidationStatus

This commit is contained in:
Kristofers Solo 2024-03-14 03:22:20 +02:00
parent 7fd0c887ec
commit e316beedbc
3 changed files with 29 additions and 1 deletions

View File

@ -1,6 +1,7 @@
#include "./validation.hh"
#include <stdlib.h>
#include <string>
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;
}

View File

@ -7,6 +7,7 @@
#include "modules/room.hh"
#include <algorithm>
#include <string>
/**
* 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";
}
}

View File

@ -3,6 +3,7 @@
#include "modules/player.hh"
#include "modules/room.hh"
#include <string>
#include <vector>
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<Event> *relatedEvents, Player *target);
class ValidationStatusUtils {
public:
static std::string to_string(ValidationStatus status);
};