diff --git a/config/routes/mineseeker.yaml b/config/routes/mineseeker.yaml deleted file mode 100644 index 7fab5bd..0000000 --- a/config/routes/mineseeker.yaml +++ /dev/null @@ -1,53 +0,0 @@ -MineSeekerBundle_homepage: - path: / - controller: App\Controller\GameController::index - -MineSeekerBundle_gamePlay: - path: /play - controller: App\Controller\GameController::play - -MineSeekerBundle_gamePlayWId: - path: /play/{gameAssoc} - controller: App\Controller\GameController::play - -MineSeekerBundle_terms: - path: /terms-of-service - controller: App\Controller\GameController::terms - -MineSeekerBundle_privacy: - path: /privacy-policy - controller: App\Controller\GameController::privacy - -MineSeekerBundle_contact: - path: /contact - controller: App\Controller\GameController::contact - -MineSeekerBundle_landing: - path: /landing-page - controller: App\Controller\GameController::landing - -MineSeekerBundle_api_game_start: - path: /api/game/start - controller: App\Controller\MercureController::start - methods: [POST] - -MineSeekerBundle_api_game_connect: - path: /api/game/connect/{gameAssoc} - controller: App\Controller\MercureController::connect - methods: [GET] - -MineSeekerBundle_api_game_join: - path: /api/game/join/{gameAssoc} - controller: App\Controller\MercureController::join - methods: [POST] - -MineSeekerBundle_api_game_step: - path: /api/game/step/{gameAssoc} - controller: App\Controller\MercureController::step - methods: [POST] - -MineSeekerBundle_api_game_leave: - path: /api/game/leave/{gameAssoc} - controller: App\Controller\MercureController::leave - methods: [POST] - diff --git a/src/Controller/GameController.php b/src/Controller/GameController.php index 251ca8d..f62a538 100644 --- a/src/Controller/GameController.php +++ b/src/Controller/GameController.php @@ -13,6 +13,7 @@ namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\DependencyInjection\Attribute\Autowire; use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\Routing\Attribute\Route; /** * Class GameController @@ -36,11 +37,14 @@ class GameController extends AbstractController ) { } + #[Route('/', name: 'MineSeekerBundle_homepage')] public function index(): Response { return $this->render('Game/index.html.twig'); } + #[Route('/play', name: 'MineSeekerBundle_gamePlay')] + #[Route('/play/{gameAssoc}', name: 'MineSeekerBundle_gamePlayWId')] public function play(): Response { return $this->render('Game/play.html.twig', [ @@ -50,21 +54,25 @@ class GameController extends AbstractController ]); } + #[Route('/privacy-policy', name: 'MineSeekerBundle_privacy')] public function privacy(): Response { return $this->render('Official/privacy.html.twig'); } + #[Route('/terms-of-service', name: 'MineSeekerBundle_terms')] public function terms(): Response { return $this->render('Official/terms.html.twig'); } + #[Route('/contact', name: 'MineSeekerBundle_contact')] public function contact(): Response { return $this->render('Official/contact.html.twig'); } + #[Route('/landing-page', name: 'MineSeekerBundle_landing')] public function landing(): Response { return $this->render('Official/landing.html.twig'); diff --git a/src/Controller/MercureController.php b/src/Controller/MercureController.php index 77b2c03..3f127d3 100644 --- a/src/Controller/MercureController.php +++ b/src/Controller/MercureController.php @@ -16,6 +16,7 @@ use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\Routing\Attribute\Route; /** * Class MercureController @@ -39,7 +40,7 @@ class MercureController extends AbstractController ) { } - /** POST /api/game/start — generate the grid on the server and create the PlayedGame record */ + #[Route('/api/game/start', name: 'MineSeekerBundle_api_game_start', methods: ['POST'])] public function start(Request $request): JsonResponse { $data = $request->toArray(); @@ -48,7 +49,7 @@ class MercureController extends AbstractController return $this->json(['success' => $result]); } - /** GET /api/game/connect/{gameAssoc} — return grid + current user info (base64 JSON) */ + #[Route('/api/game/connect/{gameAssoc}', name: 'MineSeekerBundle_api_game_connect', methods: ['GET'])] public function connect(string $gameAssoc): Response { $payload = $this->rpcManager->getConnectInformation($gameAssoc); @@ -56,7 +57,7 @@ class MercureController extends AbstractController return new Response($payload, Response::HTTP_OK, ['Content-Type' => 'text/plain']); } - /** POST /api/game/join/{gameAssoc} — register the player, broadcast subscription event via Mercure */ + #[Route('/api/game/join/{gameAssoc}', name: 'MineSeekerBundle_api_game_join', methods: ['POST'])] public function join(string $gameAssoc, Request $request): JsonResponse { $this->topicManager->subscribe($gameAssoc, $this->resolveUserName($request), $this->getUser()); @@ -64,7 +65,7 @@ class MercureController extends AbstractController return $this->json(['success' => true]); } - /** POST /api/game/step/{gameAssoc} — persist the step, broadcast via Mercure, and return revealed cells */ + #[Route('/api/game/step/{gameAssoc}', name: 'MineSeekerBundle_api_game_step', methods: ['POST'])] public function step(string $gameAssoc, Request $request): JsonResponse { $result = $this->topicManager->publish($gameAssoc, $this->resolveUserName($request), $request->toArray()); @@ -72,7 +73,7 @@ class MercureController extends AbstractController return $this->json($result); } - /** POST /api/game/leave/{gameAssoc} — broadcast disconnect event via Mercure */ + #[Route('/api/game/leave/{gameAssoc}', name: 'MineSeekerBundle_api_game_leave', methods: ['POST'])] public function leave(string $gameAssoc, Request $request): JsonResponse { $this->topicManager->unSubscribe($gameAssoc, $this->resolveUserName($request));