Message when everyone is verified

This commit is contained in:
Frank
2026-01-08 15:34:43 +01:00
parent e4976e51fa
commit e42966e618
5 changed files with 70 additions and 4 deletions

View File

@@ -85,8 +85,18 @@ final class GameController extends AbstractController
#[IsGranted(new Expression("is_granted('ROLE_PLAYER') or is_granted('ROLE_ADMIN')"))]
#[IsGranted('SESSION_VIEW', subject: 'session')]
public function index(
Session $session): Response
Session $session,
Security $security,
\App\Game\Repository\PlayerRepository $playerRepository
): Response
{
return $this->render('game/index.html.twig', ['session' => $session]);
$user = $security->getUser();
$player = $playerRepository->findOneBy(['session' => $session, 'user' => $user]);
$screen = $player ? $player->getScreen() : 0;
return $this->render('game/index.html.twig', [
'session' => $session,
'screen' => $screen,
]);
}
}

View File

@@ -21,4 +21,5 @@ enum SessionSettingType: string
case VERIFICATION_PROGRESS_FOR_PLAYER1 = 'VerificationProgressForPlayer1';
case VERIFICATION_PROGRESS_FOR_PLAYER2 = 'VerificationProgressForPlayer2';
case VERIFICATION_PROGRESS_FOR_PLAYER3 = 'VerificationProgressForPlayer3';
case EVERYONE_VERIFIED = 'EveryoneVerified';
}

View File

@@ -585,6 +585,52 @@ class GameResponseService
$setting->setValue(json_encode($rights));
$this->entityManager->persist($setting);
$this->entityManager->flush();
$this->checkIfAllPlayersVerified($player);
}
}
private function checkIfAllPlayersVerified(Player $player): void
{
$session = $player->getSession();
$everyoneVerifiedSetting = $this->sessionSettingRepository->getSetting($session, SessionSettingType::EVERYONE_VERIFIED, $player);
if ($everyoneVerifiedSetting && $everyoneVerifiedSetting->getValue() === 'true') {
return;
}
$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,
};
$progressSetting = $this->sessionSettingRepository->getSetting($session, $progressSettingName, $player);
$progress = json_decode($progressSetting?->getValue() ?? '[]', true) ?? [];
if (count($progress) < 2) {
$allVerified = false;
break;
}
}
if ($allVerified) {
if (!$everyoneVerifiedSetting) {
$everyoneVerifiedSetting = new SessionSetting();
$everyoneVerifiedSetting->setSession($session);
$everyoneVerifiedSetting->setPlayer($player);
$everyoneVerifiedSetting->setName(SessionSettingType::EVERYONE_VERIFIED);
}
$everyoneVerifiedSetting->setValue('true');
$this->entityManager->persist($everyoneVerifiedSetting);
$this->entityManager->flush();
$topic = $_ENV['MERCURE_TOPIC_BASE'] . '/game/hub-' . $session->getId();
$message = "Mainframe Help Modus: Agents Doyle, Vega and Lennox rapports have been updated with coded messages.";
$this->hub->publish(new Update($topic, json_encode([0, $message])));
}
}