<?php
session_start();

if (!isset($_SESSION['cliente_logado']) || $_SESSION['cliente_logado'] !== true) {
    header('Location: login.php');
    exit;
}

$id = $_GET['id'] ?? '';
$jogos = json_decode(file_get_contents('../dados/jogos.json'), true) ?? [];
$jogo = null;

foreach ($jogos as $j) {
    if ($j['id'] === $id) {
        $jogo = $j;
        break;
    }
}

if (!$jogo) {
    header('Location: index.php');
    exit;
}

// Caminho público da ROM
$caminhoRom = '../dados/uploads/' . $jogo['arquivo'];
if (!file_exists($caminhoRom)) {
    header('Location: index.php');
    exit;
}

// Tipo de emulador conforme o console/extensão
$extensao = strtolower(pathinfo($jogo['arquivo'], PATHINFO_EXTENSION));
$console = $jogo['console'];

// EmulatorJS suporta: snes (Snes9x), megadrive (Genesis Plus GX), mastersystem, gamegear,
// nes, gba, gb, n64, psx, arcade (MAME 2003). Mapeamos nosso console para o core do EmulatorJS.
function coreEmulatorJS($console, $extensao) {
    $mapa = [
        'SNES' => ['snes', 'zip'],
        'Mega Drive' => ['megadrive', 'zip'],
        'Master System' => ['mastersystem', 'zip'],
        'Arcade' => ['arcade', 'zip'],
        'NES' => ['nes', 'zip'],
        'Game Boy' => ['gb', 'zip'],
        'TurboGrafx' => ['pce', 'zip'],
    ];
    if (isset($mapa[$console])) {
        return $mapa[$console];
    }
    // Fallback pela extensão
    if (in_array($extensao, ['smc', 'sfc'])) return ['snes', 'zip'];
    if (in_array($extensao, ['gen', 'md'])) return ['megadrive', 'zip'];
    if (in_array($extensao, ['sms'])) return ['mastersystem', 'zip'];
    if (in_array($extensao, ['nes', 'fds'])) return ['nes', 'zip'];
    if (in_array($extensao, ['gb', 'gbc'])) return ['gb', 'zip'];
    if (in_array($extensao, ['gba'])) return ['gba', 'zip'];
    return ['snes', 'zip'];
}

$cores = coreEmulatorJS($console, $extensao);
$core = $cores[0];
// Extensões zip não são suportadas como rom direto no EmulatorJS → usar zip como extensão fallback
$extUsada = ($extensao === 'zip') ? 'zip' : $extensao;

// Caminho base absoluto do site (ex.: https://seusite.com), para assets do emulador
$protocolo = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https' : 'http';
$host = $_SERVER['HTTP_HOST'] ?? 'localhost';
$dir = rtrim(dirname($_SERVER['SCRIPT_NAME']), '/\\'); // /cliente
$basePath = $protocolo . '://' . $host . substr($dir, 0, strrpos($dir, '/'));
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Jogando: <?php echo htmlspecialchars($jogo['nome']); ?></title>
    <link rel="stylesheet" href="../admin/css/estilo.css">
    <style>
        .jogo-container {
            max-width: 1000px;
            margin: 0 auto;
            padding: 20px;
            text-align: center;
        }
        .jogo-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 20px;
            flex-wrap: wrap;
            gap: 10px;
        }
        .jogo-header a {
            color: var(--azul-metalico);
            text-decoration: none;
            font-weight: bold;
        }
        .jogo-header a:hover {
            text-decoration: underline;
        }
        #game {
            width: 100%;
            max-width: 900px;
            aspect-ratio: 4 / 3;
            background: #000;
            border-radius: 20px;
            overflow: hidden;
            box-shadow: var(--sombra);
            margin: 0 auto;
        }
        /* O EmulatorJS cria um container interno; deixamos ele ocupar tudo */
        #game > * {
            width: 100% !important;
            height: 100% !important;
        }
        /* Canvas/iframe interno do emulador preenche a área sem distorcer */
        #game canvas,
        #game iframe,
        #game video,
        #game > div:first-child {
            width: 100% !important;
            height: 100% !important;
            object-fit: contain !important;
            image-rendering: pixelated;
        }
        .carregando {
            display: flex;
            align-items: center;
            justify-content: center;
            flex-direction: column;
            height: 400px;
            color: #888;
            font-size: 18px;
        }
        .carregando .spinner {
            font-size: 50px;
            animation: piscar 1s infinite;
        }
        @keyframes piscar {
            50% { opacity: 0.4; }
        }
        .aviso-mobile {
            background: #fff3cd;
            color: #856404;
            border-radius: 10px;
            padding: 12px;
            margin-top: 15px;
            font-size: 14px;
        }
        .info-jogo {
            margin-top: 15px;
            color: #666;
        }
        .info-jogo strong {
            color: var(--azul-metalico);
        }
        @media (max-width: 768px) {
            .jogo-header { font-size: 14px; }
            #game { aspect-ratio: 3 / 4; }
        }
    </style>
</head>
<body>
    <div class="jogo-container">
        <div class="jogo-header">
            <a href="index.php">⬅️ Voltar para Biblioteca</a>
            <span style="font-size: 20px; color: var(--azul-metalico);">
                🎮 <?php echo htmlspecialchars($jogo['nome']); ?>
            </span>
            <span><?php echo $jogo['console']; ?></span>
        </div>

        <div id="game" style="position:relative;">
            <div class="carregando" id="telaCarregando">
                <span class="spinner">🕹️</span>
                <p>Carregando o jogo...</p>
                <p style="font-size:13px; margin-top:10px; color:#666;">Aguarde alguns segundos</p>
            </div>
        </div>

        <div class="aviso-mobile" id="avisoMobile" style="display:none;">
            📱 <strong>Dica:</strong> Use fones de ouvido e teclado físico para uma melhor experiência.
            Em celulares, o emulador mostra controles na tela automaticamente.
        </div>

        <div class="info-jogo">
            <p>
                <strong>Console:</strong> <?php echo $jogo['console']; ?> &nbsp;|&nbsp;
                <strong>Categoria:</strong> <?php echo $jogo['categoria'] ?? 'Sem categoria'; ?>
            </p>
        </div>
    </div>

    <!-- EmulatorJS - emulador completo no navegador -->
    <script>
        var isMobile = /Android|iPhone|iPad|iPod|webOS|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
        if (isMobile) {
            document.getElementById('avisoMobile').style.display = 'block';
        }

        window.EJS_player = '#game';
        window.EJS_gameUrl = 'rom.php?id=<?php echo urlencode($id); ?>';
        window.EJS_core = '<?php echo $core; ?>';
        window.EJS_gameName = '<?php echo addslashes(htmlspecialchars($jogo['nome'])); ?>';
        window.EJS_startOnLoaded = true;
        window.EJS_Buttons = {
            playPause: true,
            restart: true,
            mute: true,
            settings: true,
            fullscreen: true,
            saveState: true,
            loadState: true,
            screenRecord: false,
            gamepad: true,
            volume: true,
            cheat: false,
            quickSave: true,
            quickLoad: true,
            screenshot: true,
            mute: true
        };
        window.EJS_Settings = {
            'show-save-states': 'on',
            'show-cheats': 'off'
        };
        // Esconde a tela de carregamento quando o emulador estiver pronto
        window.EJS_onGameStart = function() {
            var tela = document.getElementById('telaCarregando');
            if (tela) tela.style.display = 'none';
        };
        // EmulatorJS hospedado localmente (pasta admin/emulatorjs/)
        // Usa caminho absoluto para não quebrar quando a página está em /cliente/
        window.EJS_pathtodata = 'emulatorjs/';
        window.EJS_emulatorPath = window.EJS_pathtodata;
        window.EJS_debug = false;
    </script>
    <script src="emulatorjs/loader.js"></script>
</body>
</html>
