MAPG-235 guesses of other players in the round are sent after guess

This commit is contained in:
balazs committed 2021-05-13 13:06:24 +02:00
1 parent 93f8fc3f34
commit e7869d67f7
7 files changed
+61 -14

No files matched your search

+26 -5
View File
@@ -18,6 +18,7 @@ use MapGuesser\Repository\PlaceInChallengeRepository;
use MapGuesser\Repository\PlaceRepository;
use MapGuesser\Repository\UserInChallengeRepository;
use MapGuesser\Repository\UserPlayedPlaceRepository;
use MapGuesser\Repository\UserRepository;
class GameFlowController
{
@@ -36,6 +37,8 @@ class GameFlowController
private MapRepository $mapRepository;
private UserRepository $userRepository;
private UserPlayedPlaceRepository $userPlayedPlaceRepository;
private ChallengeRepository $challengeRepository;
@@ -54,6 +57,7 @@ class GameFlowController
$this->multiRoomRepository = new MultiRoomRepository();
$this->placeRepository = new PlaceRepository();
$this->mapRepository = new MapRepository();
$this->userRepository = new UserRepository();
$this->userPlayedPlaceRepository = new UserPlayedPlaceRepository();
$this->challengeRepository = new ChallengeRepository();
$this->userInChallengeRepository = new UserInChallengeRepository();
@@ -156,7 +160,7 @@ class GameFlowController
$response['history'] = [];
$guesses = iterator_to_array($this->guessRepository->getAllInChallenge($userId, $challenge));
$guesses = iterator_to_array($this->guessRepository->getAllInChallengeByUser($userId, $challenge));
$places = iterator_to_array($this->placeRepository->getAllInChallenge($challenge));
for($i = 0; $i < $currentRound; ++$i)
@@ -298,6 +302,18 @@ class GameFlowController
$map = $this->mapRepository->getByPlace($currentPlace);
$placeInChallenge = $this->placeInChallengeRepository->getByPlaceAndChallenge($currentPlace, $challenge);
// fill in all other results for the round
$response['allResults'] = [];
foreach($this->guessRepository->getAllInChallengeByRound($currentRound, $challenge) as $guess) {
$user = $this->userRepository->getByGuess($guess);
$response['allResults'][] = [
'userName' => $user->getDisplayName(),
'guessPosition' => $guess->getPosition()->toArray(),
'distance' => $guess->getDistance(),
'score' => $guess->getScore()
];
}
$guessPosition = new Position((float) $this->request->post('lat'), (float) $this->request->post('lng'));
$result = $this->evaluateGuess($currentPlace->getPosition(), $guessPosition, $map->getArea());
@@ -310,10 +326,12 @@ class GameFlowController
$guess->setScore($result['score']);
$this->pdm->saveToDb($guess);
$response = [
'position' => $currentPlace->getPosition()->toArray(),
'result' => $result
];
// $response = [
// 'position' => $currentPlace->getPosition()->toArray(),
// 'result' => $result
// ];
$response['position'] = $currentPlace->getPosition()->toArray();
$response['result'] = $result;
// update round
$nextRound = $currentRound + 1;
@@ -331,6 +349,9 @@ class GameFlowController
];
}
$this->saveVisit($currentPlace->getId());
return new JsonContent($response);