48 lines
1.2 KiB
PHP
48 lines
1.2 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
@ini_set('display_errors', '1');
|
|
@error_reporting(E_ALL);
|
|
@date_default_timezone_set('UTC');
|
|
|
|
session_start();
|
|
require_once __DIR__ . '/../includes/rooms.php';
|
|
|
|
header('Content-Type: application/json');
|
|
|
|
ensure_rooms_schema();
|
|
|
|
$roomId = (int) ($_GET['room_id'] ?? 0);
|
|
if ($roomId <= 0) {
|
|
echo json_encode(['success' => false, 'error' => 'Missing room id']);
|
|
exit;
|
|
}
|
|
|
|
$room = get_room($roomId);
|
|
if (!$room) {
|
|
echo json_encode(['success' => false, 'error' => 'Room not found']);
|
|
exit;
|
|
}
|
|
|
|
$state = $room['state'] ?? [];
|
|
$hasDynamicObjects = !empty($state['bombs']) || !empty($state['explosions']);
|
|
if ($room['status'] === 'playing' || $hasDynamicObjects) {
|
|
$room = update_room_tick($room);
|
|
save_room_state($roomId, $room['state'], $room['status']);
|
|
}
|
|
|
|
$sessionPlayer = get_session_player($roomId);
|
|
$playerToken = $sessionPlayer['token'] ?? null;
|
|
|
|
echo json_encode([
|
|
'success' => true,
|
|
'room' => [
|
|
'id' => $room['id'],
|
|
'name' => $room['name'],
|
|
'status' => $room['status'],
|
|
'max_players' => (int) $room['max_players']
|
|
],
|
|
'state' => $room['state'],
|
|
'player_token' => $playerToken,
|
|
'server_time' => now_ms()
|
|
]);
|