diff --git a/src/Game/Controller/GameController.php b/src/Game/Controller/GameController.php index 6060be0..9a1ab78 100644 --- a/src/Game/Controller/GameController.php +++ b/src/Game/Controller/GameController.php @@ -70,6 +70,17 @@ final class GameController extends AbstractController $this->addFlash('error', 'Could not leave session (game might have started).'); } } + } elseif ($request->request->has('start_session')) { + $sessionId = $request->request->get('session_id'); + $session = $sessionRepository->find($sessionId); + + if ($session) { + if ($dashboardService->startSession($session)) { + $this->addFlash('success', 'Session started! Screens have been assigned.'); + } else { + $this->addFlash('error', 'Could not start session. Make sure all players have joined.'); + } + } } return $this->redirectToRoute('game_dashboard'); diff --git a/src/Game/Entity/Player.php b/src/Game/Entity/Player.php index 2169d93..e9802f6 100644 --- a/src/Game/Entity/Player.php +++ b/src/Game/Entity/Player.php @@ -23,7 +23,7 @@ class Player #[ORM\JoinColumn(nullable: false)] private ?User $user = null; - #[ORM\Column] + #[ORM\Column(nullable: true)] private ?int $screen = null; public function getId(): ?int diff --git a/src/Game/Enum/SessionSettingType.php b/src/Game/Enum/SessionSettingType.php index 17abbdf..36279fb 100644 --- a/src/Game/Enum/SessionSettingType.php +++ b/src/Game/Enum/SessionSettingType.php @@ -7,19 +7,57 @@ enum SessionSettingType: string case PWD_FOR_PLAYER1 = 'PwdForPlayer1'; case PWD_FOR_PLAYER2 = 'PwdForPlayer2'; case PWD_FOR_PLAYER3 = 'PwdForPlayer3'; + case PWD_FOR_PLAYER4 = 'PwdForPlayer4'; + case PWD_FOR_PLAYER5 = 'PwdForPlayer5'; + case PWD_FOR_PLAYER6 = 'PwdForPlayer6'; + case PWD_FOR_PLAYER7 = 'PwdForPlayer7'; + case PWD_FOR_PLAYER8 = 'PwdForPlayer8'; + case PWD_FOR_PLAYER9 = 'PwdForPlayer9'; + case PWD_FOR_PLAYER10 = 'PwdForPlayer10'; case RIGHTS_FOR_PLAYER1 = 'RightsForPlayer1'; case RIGHTS_FOR_PLAYER2 = 'RightsForPlayer2'; case RIGHTS_FOR_PLAYER3 = 'RightsForPlayer3'; + case RIGHTS_FOR_PLAYER4 = 'RightsForPlayer4'; + case RIGHTS_FOR_PLAYER5 = 'RightsForPlayer5'; + case RIGHTS_FOR_PLAYER6 = 'RightsForPlayer6'; + case RIGHTS_FOR_PLAYER7 = 'RightsForPlayer7'; + case RIGHTS_FOR_PLAYER8 = 'RightsForPlayer8'; + case RIGHTS_FOR_PLAYER9 = 'RightsForPlayer9'; + case RIGHTS_FOR_PLAYER10 = 'RightsForPlayer10'; case INVITE_CODE = 'InviteCode'; case SET_OF_DELETED_FILES = 'SetOfDeletedFiles'; case CHAT_TRACKING_FOR_PLAYER1 = 'ChatTrackingForPlayer1'; case CHAT_TRACKING_FOR_PLAYER2 = 'ChatTrackingForPlayer2'; case CHAT_TRACKING_FOR_PLAYER3 = 'ChatTrackingForPlayer3'; + case CHAT_TRACKING_FOR_PLAYER4 = 'ChatTrackingForPlayer4'; + case CHAT_TRACKING_FOR_PLAYER5 = 'ChatTrackingForPlayer5'; + case CHAT_TRACKING_FOR_PLAYER6 = 'ChatTrackingForPlayer6'; + case CHAT_TRACKING_FOR_PLAYER7 = 'ChatTrackingForPlayer7'; + case CHAT_TRACKING_FOR_PLAYER8 = 'ChatTrackingForPlayer8'; + case CHAT_TRACKING_FOR_PLAYER9 = 'ChatTrackingForPlayer9'; + case CHAT_TRACKING_FOR_PLAYER10 = 'ChatTrackingForPlayer10'; case VERIFY_CODES_FOR_PLAYER1 = 'VerifyCodesForPlayer1'; case VERIFY_CODES_FOR_PLAYER2 = 'VerifyCodesForPlayer2'; case VERIFY_CODES_FOR_PLAYER3 = 'VerifyCodesForPlayer3'; + case VERIFY_CODES_FOR_PLAYER4 = 'VerifyCodesForPlayer4'; + case VERIFY_CODES_FOR_PLAYER5 = 'VerifyCodesForPlayer5'; + case VERIFY_CODES_FOR_PLAYER6 = 'VerifyCodesForPlayer6'; + case VERIFY_CODES_FOR_PLAYER7 = 'VerifyCodesForPlayer7'; + case VERIFY_CODES_FOR_PLAYER8 = 'VerifyCodesForPlayer8'; + case VERIFY_CODES_FOR_PLAYER9 = 'VerifyCodesForPlayer9'; + case VERIFY_CODES_FOR_PLAYER10 = 'VerifyCodesForPlayer10'; case VERIFICATION_PROGRESS_FOR_PLAYER1 = 'VerificationProgressForPlayer1'; case VERIFICATION_PROGRESS_FOR_PLAYER2 = 'VerificationProgressForPlayer2'; case VERIFICATION_PROGRESS_FOR_PLAYER3 = 'VerificationProgressForPlayer3'; + case VERIFICATION_PROGRESS_FOR_PLAYER4 = 'VerificationProgressForPlayer4'; + case VERIFICATION_PROGRESS_FOR_PLAYER5 = 'VerificationProgressForPlayer5'; + case VERIFICATION_PROGRESS_FOR_PLAYER6 = 'VerificationProgressForPlayer6'; + case VERIFICATION_PROGRESS_FOR_PLAYER7 = 'VerificationProgressForPlayer7'; + case VERIFICATION_PROGRESS_FOR_PLAYER8 = 'VerificationProgressForPlayer8'; + case VERIFICATION_PROGRESS_FOR_PLAYER9 = 'VerificationProgressForPlayer9'; + case VERIFICATION_PROGRESS_FOR_PLAYER10 = 'VerificationProgressForPlayer10'; case EVERYONE_VERIFIED = 'EveryoneVerified'; + case SPECIAL_REPORT_CODE_DOYLE = 'SpecialReportCodeDoyle'; + case SPECIAL_REPORT_CODE_VEGA = 'SpecialReportCodeVega'; + case SPECIAL_REPORT_CODE_LENNOX = 'SpecialReportCodeLennox'; } diff --git a/src/Game/Service/GameDashboardService.php b/src/Game/Service/GameDashboardService.php index 93d2d93..efa2887 100644 --- a/src/Game/Service/GameDashboardService.php +++ b/src/Game/Service/GameDashboardService.php @@ -67,13 +67,10 @@ final class GameDashboardService $player = new Player(); $player->setUser($user); $player->setSession($session); - $player->setScreen(1); $this->entityManager->persist($session); $this->entityManager->persist($player); - $this->initializePlayerSettings($player); - $this->entityManager->flush(); return $session; @@ -104,17 +101,15 @@ final class GameDashboardService } $playerCount = count($session->getPlayers()); - if ($playerCount >= 3) { + if ($playerCount >= $session->getGame()->getNumberOfPlayers()) { return false; // Session full } $player = new Player(); $player->setUser($user); $player->setSession($session); - $player->setScreen($playerCount + 1); $this->entityManager->persist($player); - $this->initializePlayerSettings($player); $this->entityManager->flush(); @@ -170,12 +165,7 @@ final class GameDashboardService private function initializePlayerSettings(Player $player): void { $screen = $player->getScreen(); - $rightsSettingName = match ($screen) { - 1 => SessionSettingType::RIGHTS_FOR_PLAYER1, - 2 => SessionSettingType::RIGHTS_FOR_PLAYER2, - 3 => SessionSettingType::RIGHTS_FOR_PLAYER3, - default => null, - }; + $rightsSettingName = SessionSettingType::tryFrom('RightsForPlayer' . $screen); if ($rightsSettingName) { $setting = new SessionSetting(); @@ -186,28 +176,18 @@ final class GameDashboardService $this->entityManager->persist($setting); } - $pwdSettingName = match ($screen) { - 1 => SessionSettingType::PWD_FOR_PLAYER1, - 2 => SessionSettingType::PWD_FOR_PLAYER2, - 3 => SessionSettingType::PWD_FOR_PLAYER3, - default => null, - }; + $pwdSettingName = SessionSettingType::tryFrom('PwdForPlayer' . $screen); if ($pwdSettingName) { $setting = new SessionSetting(); $setting->setSession($player->getSession()); $setting->setPlayer($player); $setting->setName($pwdSettingName); - $setting->setValue('home/' . $player->getUser()->getUserIdentifier()); + $setting->setValue('var/home/' . $player->getUser()->getUsername()); $this->entityManager->persist($setting); } - $chatTrackingSettingName = match ($screen) { - 1 => SessionSettingType::CHAT_TRACKING_FOR_PLAYER1, - 2 => SessionSettingType::CHAT_TRACKING_FOR_PLAYER2, - 3 => SessionSettingType::CHAT_TRACKING_FOR_PLAYER3, - default => null, - }; + $chatTrackingSettingName = SessionSettingType::tryFrom('ChatTrackingForPlayer' . $screen); if ($chatTrackingSettingName) { $setting = new SessionSetting(); @@ -218,16 +198,12 @@ final class GameDashboardService $this->entityManager->persist($setting); } - $verifyCodesSettingName = match ($screen) { - 1 => SessionSettingType::VERIFY_CODES_FOR_PLAYER1, - 2 => SessionSettingType::VERIFY_CODES_FOR_PLAYER2, - 3 => SessionSettingType::VERIFY_CODES_FOR_PLAYER3, - default => null, - }; + $verifyCodesSettingName = SessionSettingType::tryFrom('VerifyCodesForPlayer' . $screen); if ($verifyCodesSettingName) { $codes = []; - for ($i = 1; $i <= 3; $i++) { + $numPlayers = $player->getSession()->getGame()->getNumberOfPlayers(); + for ($i = 1; $i <= $numPlayers; $i++) { if ($i !== $screen) { $codes[$i] = bin2hex(random_bytes(3)); // 6 characters code } @@ -241,12 +217,7 @@ final class GameDashboardService $this->entityManager->persist($setting); } - $verificationProgressSettingName = match ($screen) { - 1 => SessionSettingType::VERIFICATION_PROGRESS_FOR_PLAYER1, - 2 => SessionSettingType::VERIFICATION_PROGRESS_FOR_PLAYER2, - 3 => SessionSettingType::VERIFICATION_PROGRESS_FOR_PLAYER3, - default => null, - }; + $verificationProgressSettingName = SessionSettingType::tryFrom('VerificationProgressForPlayer' . $screen); if ($verificationProgressSettingName) { $setting = new SessionSetting(); @@ -258,6 +229,34 @@ final class GameDashboardService } } + public function startSession(Session $session): bool + { + if ($session->getStatus() !== SessionStatus::CREATED) { + return false; + } + + $players = $session->getPlayers()->toArray(); + if (count($players) < $session->getGame()->getNumberOfPlayers()) { + return false; + } + + // Shuffle players to assign random screens + shuffle($players); + + foreach ($players as $index => $player) { + $screen = $index + 1; + $player->setScreen($screen); + $this->initializePlayerSettings($player); + $this->entityManager->persist($player); + } + + $session->setStatus(SessionStatus::READY); + $this->entityManager->persist($session); + $this->entityManager->flush(); + + return true; + } + public function generateInviteCode(Session $session, UserInterface $user, bool $isAdmin): ?string { // Security check: is user part of this session? diff --git a/src/Game/Service/GameResponseService.php b/src/Game/Service/GameResponseService.php index bf33f8d..cacee9d 100644 --- a/src/Game/Service/GameResponseService.php +++ b/src/Game/Service/GameResponseService.php @@ -59,12 +59,7 @@ class GameResponseService private function getRechten(Player $player): array { - $settingName = match($player->getScreen()) { - 1 => SessionSettingType::RIGHTS_FOR_PLAYER1, - 2 => SessionSettingType::RIGHTS_FOR_PLAYER2, - 3 => SessionSettingType::RIGHTS_FOR_PLAYER3, - default => null, - }; + $settingName = SessionSettingType::tryFrom('RightsForPlayer' . $player->getScreen()); if (!$settingName) { return []; @@ -138,6 +133,15 @@ class GameResponseService $this->playerService->saveCurrentPwdOfPlayer($player, $newLocation); return ['result' => ['Path: ' . $newLocation]]; + case 'cat': + if(!in_array('cat', $rechten)) + return ['result' => ['Unknown command']]; + + $pwd = $this->playerService->getCurrentPwdOfPlayer($player); + + $fileContent = $this->getFileContent($player, $pwd.'/'.$messagePart[1]); + + return ['result' => $fileContent]; case 'pwd': if(!in_array('pwd', $rechten)) return ['result' => ['Unknown command']]; @@ -269,7 +273,7 @@ class GameResponseService if (isset($messageParts[1]) && is_numeric($messageParts[1]) && $messageParts[1] >= 1 && - $messageParts[1] <= 3) { + $messageParts[1] <= $player->getSession()->getGame()->getNumberOfPlayers()) { $toSingle = true; } @@ -309,12 +313,7 @@ class GameResponseService $screen = $player->getScreen(); $session = $player->getSession(); - $verifyCodesSettingName = match ($screen) { - 1 => SessionSettingType::VERIFY_CODES_FOR_PLAYER1, - 2 => SessionSettingType::VERIFY_CODES_FOR_PLAYER2, - 3 => SessionSettingType::VERIFY_CODES_FOR_PLAYER3, - default => null, - }; + $verifyCodesSettingName = SessionSettingType::tryFrom('VerifyCodesForPlayer' . $screen); if (!$verifyCodesSettingName) { return; @@ -354,12 +353,7 @@ class GameResponseService if(in_array('verify', $rights)) return; - $trackingSettingName = match ($player->getScreen()) { - 1 => SessionSettingType::CHAT_TRACKING_FOR_PLAYER1, - 2 => SessionSettingType::CHAT_TRACKING_FOR_PLAYER2, - 3 => SessionSettingType::CHAT_TRACKING_FOR_PLAYER3, - default => null, - }; + $trackingSettingName = SessionSettingType::tryFrom('ChatTrackingForPlayer' . $player->getScreen()); if (!$trackingSettingName) { return; @@ -389,7 +383,8 @@ class GameResponseService { $screen = $player->getScreen(); $requiredTargets = [0]; // Everyone - for ($i = 1; $i <= 3; $i++) { + $numPlayers = $player->getSession()->getGame()->getNumberOfPlayers(); + for ($i = 1; $i <= $numPlayers; $i++) { if ($i !== $screen) { $requiredTargets[] = $i; } @@ -403,12 +398,7 @@ class GameResponseService } // Grant verify right - $rightsSettingName = match ($screen) { - 1 => SessionSettingType::RIGHTS_FOR_PLAYER1, - 2 => SessionSettingType::RIGHTS_FOR_PLAYER2, - 3 => SessionSettingType::RIGHTS_FOR_PLAYER3, - default => null, - }; + $rightsSettingName = SessionSettingType::tryFrom('RightsForPlayer' . $screen); if (!$rightsSettingName) { return; @@ -469,6 +459,30 @@ class GameResponseService return $randomString; } + private function generateSpecialCode(int $firstDigit, int $min, int $max): string + { + $code = $this->generateRandomString($min, $max); + + // Ensure the first numeric digit is the specified $firstDigit + $found = false; + $codeArray = str_split($code); + for ($i = 0; $i < count($codeArray); $i++) { + if (ctype_digit($codeArray[$i])) { + $codeArray[$i] = (string)$firstDigit; + $found = true; + break; + } + } + $code = implode('', $codeArray); + + // If no digit was found (highly unlikely given the character set), prepend it + if (!$found) { + $code = (string)$firstDigit . substr($code, 1); + } + + return $code; + } + private function handleVerifyMessage(string $message, Player $player) : string { $messageParts = explode(' ', $message); @@ -480,12 +494,7 @@ class GameResponseService $screen = $player->getScreen(); $session = $player->getSession(); - $progressSettingName = match ($screen) { - 1 => SessionSettingType::VERIFICATION_PROGRESS_FOR_PLAYER1, - 2 => SessionSettingType::VERIFICATION_PROGRESS_FOR_PLAYER2, - 3 => SessionSettingType::VERIFICATION_PROGRESS_FOR_PLAYER3, - default => null, - }; + $progressSettingName = SessionSettingType::tryFrom('VerificationProgressForPlayer' . $screen); if (!$progressSettingName) { return 'Error: Invalid player screen.'; @@ -505,12 +514,7 @@ class GameResponseService } $otherScreen = $otherPlayer->getScreen(); - $codesSettingName = match ($otherScreen) { - 1 => SessionSettingType::VERIFY_CODES_FOR_PLAYER1, - 2 => SessionSettingType::VERIFY_CODES_FOR_PLAYER2, - 3 => SessionSettingType::VERIFY_CODES_FOR_PLAYER3, - default => null, - }; + $codesSettingName = SessionSettingType::tryFrom('VerifyCodesForPlayer' . $otherScreen); if (!$codesSettingName) { continue; @@ -554,12 +558,7 @@ class GameResponseService private function grantVerificationRights(Player $player): void { $screen = $player->getScreen(); - $rightsSettingName = match ($screen) { - 1 => SessionSettingType::RIGHTS_FOR_PLAYER1, - 2 => SessionSettingType::RIGHTS_FOR_PLAYER2, - 3 => SessionSettingType::RIGHTS_FOR_PLAYER3, - default => null, - }; + $rightsSettingName = SessionSettingType::tryFrom('RightsForPlayer' . $screen); if (!$rightsSettingName) { return; @@ -600,18 +599,18 @@ class GameResponseService } $allVerified = true; - foreach ([1, 2, 3] as $screen) { - $progressSettingName = match ($screen) { - 1 => SessionSettingType::VERIFICATION_PROGRESS_FOR_PLAYER1, - 2 => SessionSettingType::VERIFICATION_PROGRESS_FOR_PLAYER2, - 3 => SessionSettingType::VERIFICATION_PROGRESS_FOR_PLAYER3, - default => null, - }; + foreach ($session->getPlayers() as $otherPlayer) { + $otherScreen = $otherPlayer->getScreen(); + $progressSettingName = SessionSettingType::tryFrom('VerificationProgressForPlayer' . $otherScreen); - $progressSetting = $this->sessionSettingRepository->getSetting($session, $progressSettingName, $player); + if (!$progressSettingName) { + continue; + } + + $progressSetting = $this->sessionSettingRepository->getSetting($session, $progressSettingName, $otherPlayer); $progress = json_decode($progressSetting?->getValue() ?? '[]', true) ?? []; - if (count($progress) < 2) { + if (count($progress) < $session->getGame()->getNumberOfPlayers() - 1) { $allVerified = false; break; } @@ -693,20 +692,20 @@ class GameResponseService $paths[] = '/etc/freak'; $paths[] = '/etc/host'; - $paths[] = '/home'; + $paths[] = '/var/home'; $playerNames = ['root', 'Luke', 'Charles', 'William', 'Peter']; $players = $player->getSession()->getPlayers(); - foreach($players as $player) { - $playerNames[] = $player->getUser()->getUsername(); + foreach($players as $p) { + $playerNames[] = $p->getUser()->getUsername(); } $playerNames = array_unique($playerNames); foreach($playerNames as $name) { - $paths[] = '/home/' . $name; + $paths[] = '/var/home/' . $name; } return $paths; @@ -772,12 +771,17 @@ class GameResponseService $files[] = '/var/rapports/017_123-88.txt'; $files[] = '/var/rapports/093_138-24.txt'; $files[] = '/var/rapports/001_145-93.txt'; + $files[] = '/var/rapports/011_130-62.txt'; $files[] = '/var/rapports/index.txt'; + if ($player === null) { + return $files; + } + $players = $player->getSession()->getPlayers(); - foreach($players as $player) { - $files[] = '/var/home/' . $player->getUser()->getUsername() . '/verifyCodes.txt'; + foreach($players as $p) { + $files[] = '/var/home/' . $p->getUser()->getUsername() . '/verifyCodes.txt'; } return $files; @@ -791,7 +795,7 @@ class GameResponseService } $allPaths = $this->getAllPossiblePaths($player); - $allFiles = $this->getAllPossibleFiles(); + $allFiles = $this->getAllPossibleFiles($player); $deletedFiles = $this->playerService->getDeletedFilesOfSession($player); $entries = []; @@ -826,4 +830,144 @@ class GameResponseService sort($entries); return $entries; } + + public function getFileContent(Player $player, string $file) : array + { + $allPossibleFiles = $this->getAllPossibleFiles($player); + if (!in_array($file, $allPossibleFiles)) { + return ['File does not exist']; + } + + if (str_ends_with($file, '.sh')) { + return ['It is not possible to read this file']; + } + + if (str_ends_with($file, 'verifyCodes.txt')) { + return $this->readVerificationFile($player, $file); + } + + $physicalPath = 'assets/game1/filesystem' . $file; + if (!file_exists($physicalPath)) { + return ['File does not exist']; + } + + $content = file($physicalPath); + if ($content === false) { + return ['Error reading file']; + } + + $specialFiles = [ + '/var/rapports/083_25-39.txt' => [ + 'setting' => SessionSettingType::SPECIAL_REPORT_CODE_DOYLE, + 'digit' => 1 + ], + '/var/rapports/019_31-11.txt' => [ + 'setting' => SessionSettingType::SPECIAL_REPORT_CODE_VEGA, + 'digit' => 2 + ], + '/var/rapports/011_130-62.txt' => [ + 'setting' => SessionSettingType::SPECIAL_REPORT_CODE_LENNOX, + 'digit' => 3 + ], + ]; + + if (isset($specialFiles[$file])) { + $everyoneVerifiedSetting = $this->sessionSettingRepository->getSetting($player->getSession(), SessionSettingType::EVERYONE_VERIFIED); + if ($everyoneVerifiedSetting && $everyoneVerifiedSetting->getValue() === 'true') { + $settingInfo = $specialFiles[$file]; + $codeSetting = $this->sessionSettingRepository->getSetting($player->getSession(), $settingInfo['setting']); + + if (!$codeSetting) { + $codeSetting = new SessionSetting(); + $codeSetting->setSession($player->getSession()); + $codeSetting->setName($settingInfo['setting']); + $codeSetting->setValue($this->generateSpecialCode($settingInfo['digit'], 75, 100)); + + $this->entityManager->persist($codeSetting); + $this->entityManager->flush(); + } + + $specialCode = $codeSetting->getValue(); + + $newContent = []; + foreach ($content as $line) { + $newContent[] = $line; + if (str_starts_with(trim($line), 'Date:')) { + $newContent[] = $specialCode . "\n"; + } + } + $content = $newContent; + } + } + + return $content; + } + + private function readVerificationFile(Player $player, string $file) + { + $parts = explode('/', $file); + $ownerUsername = $parts[3] ?? null; + + $ownerPlayer = null; + foreach ($player->getSession()->getPlayers() as $p) { + if ($p->getUser()->getUsername() === $ownerUsername) { + $ownerPlayer = $p; + break; + } + } + + if (!$ownerPlayer) { + return 'File does not exist'; + } + + $screen = $ownerPlayer->getScreen(); + $settingName = SessionSettingType::tryFrom('VerifyCodesForPlayer' . $screen); + + if (!$settingName) { + return 'Error: Invalid player screen.'; + } + + $setting = $this->sessionSettingRepository->getSetting($player->getSession(), $settingName, $ownerPlayer); + if (!$setting) { + $setting = new SessionSetting(); + $setting->setSession($player->getSession()); + $setting->setPlayer($ownerPlayer); + $setting->setName($settingName); + } + + $codes = json_decode($setting->getValue() ?? '[]', true) ?? []; + + $playerNames = ['Luke', 'Charles', 'William', 'Peter']; + foreach ($player->getSession()->getPlayers() as $p) { + $playerNames[] = $p->getUser()->getUsername(); + } + $playerNames = array_unique($playerNames); + sort($playerNames); + + $content = []; + + $content[] = "Verification codes:"; + $content[] = ""; + + foreach ($playerNames as $name) { + $key = null; + foreach ($player->getSession()->getPlayers() as $p) { + if ($p->getUser()->getUsername() === $name) { + $key = (string)$p->getScreen(); + break; + } + } + if ($key === null) { + $key = $name; + } + + if (!isset($codes[$key])) { + $codes[$key] = bin2hex(random_bytes(3)); + } + + $content[] = $name . ": " . $codes[$key] . "\n"; + } + + return $content; + } } diff --git a/src/Game/Service/PlayerService.php b/src/Game/Service/PlayerService.php index 4f43c63..10fed4b 100644 --- a/src/Game/Service/PlayerService.php +++ b/src/Game/Service/PlayerService.php @@ -40,12 +40,7 @@ class PlayerService } public function getCurrentPwdOfPlayer(Player $player) : ?string { - $settingName = match($player->getScreen()) { - 1 => SessionSettingType::PWD_FOR_PLAYER1, - 2 => SessionSettingType::PWD_FOR_PLAYER2, - 3 => SessionSettingType::PWD_FOR_PLAYER3, - default => null, - }; + $settingName = SessionSettingType::tryFrom('PwdForPlayer' . $player->getScreen()); if (!$settingName) { return null; @@ -57,12 +52,7 @@ class PlayerService public function saveCurrentPwdOfPlayer(Player $player, string $newLocation) { - $settingName = match($player->getScreen()) { - 1 => SessionSettingType::PWD_FOR_PLAYER1, - 2 => SessionSettingType::PWD_FOR_PLAYER2, - 3 => SessionSettingType::PWD_FOR_PLAYER3, - default => null, - }; + $settingName = SessionSettingType::tryFrom('PwdForPlayer' . $player->getScreen()); if (!$settingName) { return; diff --git a/templates/game/dashboard.html.twig b/templates/game/dashboard.html.twig index e177c42..4836688 100644 --- a/templates/game/dashboard.html.twig +++ b/templates/game/dashboard.html.twig @@ -69,11 +69,19 @@