adapt Container usage to new soko-web

This commit is contained in:
bence committed 2023-04-20 00:39:10 +02:00
1 parent ee4a9f2ce3
commit e52300b9e5
23 files changed
+248 -397

No files matched your search

+27 -35
View File
@@ -3,7 +3,6 @@
use DateTime;
use Faker\Factory;
use SokoWeb\Interfaces\Authentication\IAuthenticationRequired;
use SokoWeb\Interfaces\Request\IRequest;
use SokoWeb\Response\HtmlContent;
use SokoWeb\Response\JsonContent;
use SokoWeb\Interfaces\Response\IContent;
@@ -13,7 +12,6 @@ use MapGuesser\PersistentData\Model\Challenge;
use MapGuesser\PersistentData\Model\MultiRoom;
use MapGuesser\PersistentData\Model\PlaceInChallenge;
use MapGuesser\PersistentData\Model\UserInChallenge;
use SokoWeb\PersistentData\PersistentDataManager;
use MapGuesser\Repository\ChallengeRepository;
use MapGuesser\Repository\MapRepository;
use MapGuesser\Repository\MultiRoomRepository;
@@ -25,10 +23,6 @@ class GameController implements IAuthenticationRequired
{
const NUMBER_OF_ROUNDS = 5;
private IRequest $request;
private PersistentDataManager $pdm;
private MultiConnector $multiConnector;
private MultiRoomRepository $multiRoomRepository;
@@ -41,10 +35,8 @@ class GameController implements IAuthenticationRequired
private UserInChallengeRepository $userInChallengeRepository;
public function __construct(IRequest $request)
public function __construct()
{
$this->request = $request;
$this->pdm = new PersistentDataManager();
$this->multiConnector = new MultiConnector();
$this->multiRoomRepository = new MultiRoomRepository();
$this->mapRepository = new MapRepository();
@@ -60,14 +52,14 @@ class GameController implements IAuthenticationRequired
public function getGame(): IContent
{
$mapId = (int) $this->request->query('mapId');
$mapId = (int) \Container::$request->query('mapId');
return new HtmlContent('game', ['mapId' => $mapId]);
}
public function getNewMultiGame(): IRedirect
{
$mapId = (int) $this->request->query('mapId');
$mapId = (int) \Container::$request->query('mapId');
$map = $this->mapRepository->getById($mapId);
$roomId = bin2hex(random_bytes(3));
$token = $this->getMultiToken($roomId);
@@ -83,7 +75,7 @@ class GameController implements IAuthenticationRequired
$room->setMembersArray(['owner' => $token, 'all' => []]);
$room->setUpdatedDate(new DateTime());
$this->pdm->saveToDb($room);
\Container::$persistentDataManager->saveToDb($room);
$this->multiConnector->sendMessage('create_room', ['roomId' => $roomId]);
@@ -97,14 +89,14 @@ class GameController implements IAuthenticationRequired
public function getMultiGame(): IContent
{
$roomId = $this->request->query('roomId');
$roomId = \Container::$request->query('roomId');
return new HtmlContent('game', ['roomId' => $roomId]);
}
public function getChallenge(): IContent
{
$challengeToken = $this->request->query('challengeToken');
$challengeToken = \Container::$request->query('challengeToken');
return new HtmlContent('game', ['challengeToken' => $challengeToken]);
}
@@ -121,27 +113,27 @@ class GameController implements IAuthenticationRequired
$challenge->setToken($challengeToken);
$challenge->setCreatedDate(new DateTime());
if ($this->request->post('timerEnabled') !== null && $this->request->post('timeLimit') !== null) {
$challenge->setTimeLimit($this->request->post('timeLimit'));
if (\Container::$request->post('timerEnabled') !== null && \Container::$request->post('timeLimit') !== null) {
$challenge->setTimeLimit(\Container::$request->post('timeLimit'));
}
if ($this->request->post('timeLimitType') !== null) {
$challenge->setTimeLimitType($this->request->post('timeLimitType'));
if (\Container::$request->post('timeLimitType') !== null) {
$challenge->setTimeLimitType(\Container::$request->post('timeLimitType'));
}
if ($this->request->post('noMove') !== null) {
if (\Container::$request->post('noMove') !== null) {
$challenge->setNoMove(true);
}
if ($this->request->post('noPan') !== null) {
if (\Container::$request->post('noPan') !== null) {
$challenge->setNoPan(true);
}
if ($this->request->post('noZoom') !== null) {
if (\Container::$request->post('noZoom') !== null) {
$challenge->setNoZoom(true);
}
$this->pdm->saveToDb($challenge);
\Container::$persistentDataManager->saveToDb($challenge);
// save owner/creator
$session = $this->request->session();
$session = \Container::$request->session();
$userId = $session->get('userId');
$userInChallenge = new UserInChallenge();
@@ -150,11 +142,11 @@ class GameController implements IAuthenticationRequired
$userInChallenge->setTimeLeft($challenge->getTimeLimit());
$userInChallenge->setIsOwner(true);
$this->pdm->saveToDb($userInChallenge);
\Container::$persistentDataManager->saveToDb($userInChallenge);
// select places
$mapId = (int) $this->request->post('mapId');
$mapId = (int) \Container::$request->post('mapId');
// $map = $this->mapRepository->getById($mapId);
$places = $this->placeRepository->getRandomNPlaces($mapId, static::NUMBER_OF_ROUNDS, $userId);
@@ -165,7 +157,7 @@ class GameController implements IAuthenticationRequired
$placeInChallenge->setPlace($place);
$placeInChallenge->setChallenge($challenge);
$placeInChallenge->setRound($round++);
$this->pdm->saveToDb($placeInChallenge);
\Container::$persistentDataManager->saveToDb($placeInChallenge);
}
return new JsonContent(['challengeToken' => dechex($challengeToken)]);
@@ -173,9 +165,9 @@ class GameController implements IAuthenticationRequired
public function prepareGame(): IContent
{
$mapId = (int) $this->request->query('mapId');
$mapId = (int) \Container::$request->query('mapId');
$map = $this->mapRepository->getById($mapId);
$session = $this->request->session();
$session = \Container::$request->session();
if (!($state = $session->get('state')) || $state['mapId'] !== $mapId) {
$session->set('state', [
@@ -198,8 +190,8 @@ class GameController implements IAuthenticationRequired
public function prepareMultiGame(): IContent
{
$roomId = $this->request->query('roomId');
$userName = $this->request->post('userName');
$roomId = \Container::$request->query('roomId');
$userName = \Container::$request->post('userName');
if (empty($userName)) {
$faker = Factory::create();
$userName = $faker->userName;
@@ -228,7 +220,7 @@ class GameController implements IAuthenticationRequired
$room->setMembersArray($members);
$room->setUpdatedDate(new DateTime());
$this->pdm->saveToDb($room);
\Container::$persistentDataManager->saveToDb($room);
$this->multiConnector->sendMessage('join_room', [
'roomId' => $roomId,
@@ -248,8 +240,8 @@ class GameController implements IAuthenticationRequired
public function prepareChallenge(): IContent
{
$challengeToken_str = $this->request->query('challengeToken');
$session = $this->request->session();
$challengeToken_str = \Container::$request->query('challengeToken');
$session = \Container::$request->session();
$userId = $session->get('userId');
if (!isset($userId))
@@ -270,7 +262,7 @@ class GameController implements IAuthenticationRequired
$userInChallenge->setUserId($userId);
$userInChallenge->setChallenge($challenge);
$userInChallenge->setTimeLeft($challenge->getTimeLimit());
$this->pdm->saveToDb($userInChallenge);
\Container::$persistentDataManager->saveToDb($userInChallenge);
}
$map = $this->mapRepository->getByChallenge($challenge);
@@ -284,7 +276,7 @@ class GameController implements IAuthenticationRequired
private function getMultiToken(string $roomId): string
{
$session = $this->request->session();
$session = \Container::$request->session();
if (!($multiState = $session->get('multiState')) || $multiState['roomId'] !== $roomId) {
$token = bin2hex(random_bytes(16));