39001-vm/api/room_state.php
2026-03-05 10:39:31 +00:00

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()
]);