mirror of
https://github.com/jorenchik/testing-spring-2024.git
synced 2025-10-21 20:10:36 +00:00
feat: player belongs to a room with a check
This commit is contained in:
parent
23345ba89f
commit
23c1c23858
14
src/lib.cpp
14
src/lib.cpp
@ -8,6 +8,7 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
enum VALIDATION_STATUS {
|
enum VALIDATION_STATUS {
|
||||||
|
PLAYER_NOT_IN_ROOM,
|
||||||
NO_PLAYER,
|
NO_PLAYER,
|
||||||
ROOM_NOT_IN_PROGRESS,
|
ROOM_NOT_IN_PROGRESS,
|
||||||
ACTION_PROHIBITED,
|
ACTION_PROHIBITED,
|
||||||
@ -25,9 +26,9 @@ void run() {
|
|||||||
Event event2 = Event("Event 2", 1710087363, 1, true, {kill}, {});
|
Event event2 = Event("Event 2", 1710087363, 1, true, {kill}, {});
|
||||||
Event event3 = Event("Event 3", 1710087369, 1, true, {}, {kill});
|
Event event3 = Event("Event 3", 1710087369, 1, true, {}, {kill});
|
||||||
std::vector<Event> relatedEvents({event2, event3});
|
std::vector<Event> relatedEvents({event2, event3});
|
||||||
Player player1 = Player("player1", role1, PlayerStatus::ALIVE);
|
Player player1 = Player(69, "player1", role1, PlayerStatus::ALIVE);
|
||||||
Player player2 = Player("player2", role1, PlayerStatus::ALIVE);
|
Player player2 = Player(420, "player2", role1, PlayerStatus::ALIVE);
|
||||||
Room room1(1, "Room 1", 1710087364, RoomStatus::IN_PROGRESS, {player1, player2});
|
Room room1(1, "Room 1", 1710087364, RoomStatus::IN_PROGRESS, {});
|
||||||
Room room2(2, "Room 2", 1710087384, RoomStatus::ENDED, {player1, player2});
|
Room room2(2, "Room 2", 1710087384, RoomStatus::ENDED, {player1, player2});
|
||||||
int actionValidated = validateAction(&player1, &kill, &room1, &relatedEvents, &player2);
|
int actionValidated = validateAction(&player1, &kill, &room1, &relatedEvents, &player2);
|
||||||
std::cout << actionValidated << std::endl;
|
std::cout << actionValidated << std::endl;
|
||||||
@ -35,6 +36,9 @@ void run() {
|
|||||||
|
|
||||||
int validateAction(
|
int validateAction(
|
||||||
Player *actor, const Action *action, Room *room, std::vector<Event> *relatedEvents, Player *target = nullptr) {
|
Player *actor, const Action *action, Room *room, std::vector<Event> *relatedEvents, Player *target = nullptr) {
|
||||||
|
if (!playerBelongsToRoom(actor, room)) {
|
||||||
|
return PLAYER_NOT_IN_ROOM;
|
||||||
|
}
|
||||||
if (!actor) {
|
if (!actor) {
|
||||||
return NO_PLAYER;
|
return NO_PLAYER;
|
||||||
}
|
}
|
||||||
@ -57,6 +61,10 @@ int validateAction(
|
|||||||
return ACTION_VALID;
|
return ACTION_VALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool playerBelongsToRoom(Player *player, Room *room) {
|
||||||
|
return std::find(room->players.begin(), room->players.end(), *player) != room->players.end();
|
||||||
|
}
|
||||||
|
|
||||||
bool actionBelongsToRole(Role *role, const Action *action) {
|
bool actionBelongsToRole(Role *role, const Action *action) {
|
||||||
return std::find(role->actions.begin(), role->actions.end(), *action) != role->actions.end();
|
return std::find(role->actions.begin(), role->actions.end(), *action) != role->actions.end();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
void run();
|
void run();
|
||||||
|
|
||||||
|
bool playerBelongsToRoom(Player *player, Room *room);
|
||||||
bool actionBelongsToRole(Role *role, const Action *action);
|
bool actionBelongsToRole(Role *role, const Action *action);
|
||||||
bool isActionAllowed(const Action *action, std::vector<Event> *relevantEvents);
|
bool isActionAllowed(const Action *action, std::vector<Event> *relevantEvents);
|
||||||
int validateAction(Player *actor, const Action *action, Room *room, std::vector<Event> *relatedEvents, Player *target);
|
int validateAction(Player *actor, const Action *action, Room *room, std::vector<Event> *relatedEvents, Player *target);
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
#include "timeUtils.hh"
|
#include "timeUtils.hh"
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
#include <initializer_list>
|
#include <initializer_list>
|
||||||
|
|
||||||
int add(int a, int b) {
|
int add(int a, int b) {
|
||||||
@ -29,12 +30,17 @@ Role::Role(std::vector<Action> actions) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Player::Player(std::string username, Role role, PlayerStatus playerStatus):
|
Player::Player(uint32_t id, std::string username, Role role, PlayerStatus playerStatus):
|
||||||
|
id(id),
|
||||||
username(username),
|
username(username),
|
||||||
role(role),
|
role(role),
|
||||||
playerStatus(playerStatus) {
|
playerStatus(playerStatus) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Player::operator==(const Player &other) const {
|
||||||
|
return this->id == other.id;
|
||||||
|
}
|
||||||
|
|
||||||
Room::Room(
|
Room::Room(
|
||||||
uint32_t id, std::string title, uint32_t utcTimestampCreatedAt, RoomStatus status, std::vector<Player> players):
|
uint32_t id, std::string title, uint32_t utcTimestampCreatedAt, RoomStatus status, std::vector<Player> players):
|
||||||
id(id),
|
id(id),
|
||||||
|
|||||||
@ -53,11 +53,13 @@ struct Role {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct Player {
|
struct Player {
|
||||||
|
uint32_t id;
|
||||||
std::string username;
|
std::string username;
|
||||||
Role role;
|
Role role;
|
||||||
PlayerStatus playerStatus;
|
PlayerStatus playerStatus;
|
||||||
|
|
||||||
Player(std::string username, Role role, PlayerStatus playerStatus);
|
Player(uint32_t id, std::string username, Role role, PlayerStatus playerStatus);
|
||||||
|
bool operator==(const Player &other) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Room {
|
struct Room {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user