<?php
session_start();
include 'db.php'; 

// 1. Prüfen, ob der User überhaupt eingeloggt ist
if (!isset($_SESSION['user_id'])) {
    header("Location: login.php"); 
    exit();
}

// =========================================================================
// ANTI-SESSION-HIJACKING SPERRE (Browser-Fingerabdruck abgleichen)
// =========================================================================
if (!isset($_SESSION['user_agent']) || $_SESSION['user_agent'] !== $_SERVER['HTTP_USER_AGENT']) {
    session_unset();     
    session_destroy();   
    header("Location: login.php?error=invalid_credentials");
    exit();
}
// =========================================================================

$userId = $_SESSION['user_id'];
$userName = $_SESSION['username'];
$userLang = $_SESSION['lang'];

// Tabelle users
$stmtUser = $pdo->prepare("SELECT city_name, music_toggle, sound_toggle, atmosphere_enabled, premium_until, chat_status, currency, happiness FROM users WHERE id = ?");
$stmtUser->execute([$userId]); 
$userData = $stmtUser->fetch(PDO::FETCH_ASSOC);

$cityName = $userData['city_name'] ?? "Neue Stadt";
$premiumUntil = $userData['premium_until']; 
$musicEnabled = ($userData['music_toggle'] == 1) ? 'true' : 'false';
$soundEnabled = ($userData['sound_toggle'] ?? 1) == 1 ? 'true' : 'false';
$atmoEnabled = ($userData['atmosphere_enabled'] ?? 1) == 1 ? 'true' : 'false';
$userCurrency = $userData['currency'] ?? 'EUR';

$stmtTut = $pdo->prepare("SELECT current_step, is_completed, quest_counter FROM user_tutorial WHERE user_id = ?");
$stmtTut->execute([$userId]); // <-- Korrigiert
$tutData = $stmtTut->fetch(PDO::FETCH_ASSOC);

// Falls aus irgendeinem Grund kein Eintrag existiert, geben wir sichere Defaults vor
$tutStep      = isset($tutData['current_step'])  ? intval($tutData['current_step'])  : 1;
$tutCompleted = isset($tutData['is_completed'])  ? intval($tutData['is_completed'])  : 0;
$tutCounter   = isset($tutData['quest_counter']) ? intval($tutData['quest_counter']) : 0;



// 1. Alle Ressourcen des Users holen (Holz, Gold, Brennholz, alles...)
$stmt = $pdo->prepare("SELECT resource_id, amount FROM user_resources WHERE user_id = ?");
$stmt->execute([$userId]); // <-- Korrigiert
$dbResources = $stmt->fetchAll(PDO::FETCH_KEY_PAIR);

// 2. Dynamisch zusammenrechnen (Alles außer Gold und Silber)
$totalUsedSpace = 0;
foreach ($dbResources as $resId => $amount) {
    if ($resId !== 'gold' && $resId !== 'silber') {
        $totalUsedSpace += (int)$amount; 
    }
}

// --- HIER DIE LAGERKAPAZITÄT BERECHNEN (Beispiel 270) ---
// $maxStorage = 270; 



$gold     = $dbResources['gold']     ?? 0;
$silber   = $dbResources['silber']   ?? 0;
$holz     = $dbResources['holz']     ?? 0;
$stein    = $dbResources['stein']    ?? 0;
$bretter  = $dbResources['bretter']  ?? 0;
$ziegel   = $dbResources['ziegel']   ?? 0;
$werkzeug = $dbResources['werkzeug'] ?? 0;

// Map laden
$stmtMap = $pdo->prepare("SELECT tile_data FROM user_maps WHERE user_id = ?");
$stmtMap->execute([$userId]); // <-- Korrigiert
$mapData = $stmtMap->fetchColumn();

// --- GEÄNDERT: Gebäude laden inkl. Produktions-Status, Ressourcen UND skin_variant ---
$stmtB = $pdo->prepare("
    SELECT 
        b.id, 
        b.building_key as type, 
        b.pos_x as x, 
        b.pos_y as y, 
        b.skin_variant,        
        b.construction_finished, 
        b.is_under_construction, 
        b.active_recipe_id, 
        b.production_start, 
        b.is_producing,
        b.diseased_until,
        r.res_x,
        r.res_y,
        r.res_type,
        r.current_amount  
    FROM user_buildings b
    LEFT JOIN building_resources r ON b.id = r.building_id
    WHERE b.user_id = ?
");
$stmtB->execute([$userId]); 
$dbBuildings = $stmtB->fetchAll(PDO::FETCH_ASSOC);



// --- NEU: Rezepte und Ressourcen-Definitionen laden ---
$stmtRec = $pdo->query("SELECT * FROM building_recipes");
$allRecipes = $stmtRec->fetchAll(PDO::FETCH_ASSOC);

$stmtRes = $pdo->query("SELECT * FROM recipe_resources");
$allRecipeResources = $stmtRes->fetchAll(PDO::FETCH_ASSOC);

// Gebäudekatalog inklusive Kosten und Rezepte zusammenbauen
$stmtCat = $pdo->query("SELECT * FROM buildings ORDER BY sort_order ASC");
$buildingsRaw = $stmtCat->fetchAll(PDO::FETCH_ASSOC);

$stmtCosts = $pdo->query("SELECT building_id, resource_type, amount FROM building_costs");
$allCosts = $stmtCosts->fetchAll(PDO::FETCH_ASSOC);

$buildingCatalog = [];
foreach ($buildingsRaw as $b) {
    $id = $b['id']; 
    
    $b['building_key'] = $b['id']; 
    $b['required_building_id'] = $b['required_building_id'];
    $b['is_unique'] = isset($b['is_unique']) ? (int)$b['is_unique'] : 0;
    $b['costs'] = [];
    foreach ($allCosts as $c) {
        if ($c['building_id'] === $id) {
            $b['costs'][$c['resource_type']] = (int)$c['amount'];
        }
    }

    $b['recipes'] = [];
    foreach ($allRecipes as $r) {
        if ($r['building_id'] === $id) {
            $r['resources'] = [];
            foreach ($allRecipeResources as $res) {
                if ($res['recipe_id'] == $r['id']) {
                    $r['resources'][] = [
                        'type'   => $res['resource_type'],
                        'amount' => (int)$res['amount'],
                        'dir'    => $res['direction']
                    ];
                }
            }
            $b['recipes'][] = $r;
        }
    }
    $buildingCatalog[] = $b;
}

$lang = $_SESSION['lang'] ?? 'de';
$translations = [
    'de' => [
        'gold'         => 'Gold:',
        'silber'       => 'Silber:',
        'holz'         => 'Holz:',
        'stein'        => 'Stein:',
        'bretter'      => 'Bretter:',
        'ziegel'       => 'Ziegel:',
        'werkzeug'     => 'Werkzeug:',
        'einwohner'    => 'Einwohner:', 
        'lager'        => 'Lager:',
        'steuer_titel' => 'Steuer-Übersicht',
        'steuer_einwohner' => 'Eure Stadt beherbergt',
        'steuer_einwohner_ende' => 'Einwohner',
        'nahrung_versorgung' => 'Nahrungsversorgung:',
        'versorgt'     => 'versorgt',
        'grundzins'    => 'Grundzins:',
        'versorgungszins' => 'Versorgungszins:',
        'gesamteinnahmen' => 'Gesamteinnahmen:',
        'naechste_zahlung' => 'Nächste Steuererhebung:',
        'chronik_titel' => 'Chronik',
        'chronik_untertitel' => 'Jahr %d seit der Gründung'
    ],
    'en' => [
        'gold'         => 'Gold:',
        'silber'       => 'Silver:',
        'holz'         => 'Wood:',
        'stein'        => 'Stone:',
        'bretter'      => 'Planks:',
        'ziegel'       => 'Bricks:',
        'werkzeug'     => 'Tools:',
        'einwohner'    => 'Population:', 
        'lager'        => 'Storage:',
        'steuer_titel' => 'Tax Overview',
        'steuer_einwohner' => 'Your city houses',
        'steuer_einwohner_ende' => 'citizens',
        'nahrung_versorgung' => 'Food supply:',
        'versorgt'     => 'supplied',
        'grundzins'    => 'Base tax:',
        'versorgungszins' => 'Supply tax:',
        'gesamteinnahmen' => 'Total income:',
        'naechste_zahlung' => 'Next tax collection:',
        'chronik_titel' => 'Chronicle',
        'chronik_untertitel' => 'Year %d since founding'
    ],
    'fr' => [
        'gold'         => 'Or :',
        'silber'      => 'Argent :',
        'holz'         => 'Bois :',
        'stein'        => 'Pierre :',
        'bretter'      => 'Planches :',
        'ziegel'       => 'Briques :',
        'werkzeug'     => 'Outils :',
        'einwohner'    => 'Population :', 
        'lager'        => 'Stockage :',
        'steuer_titel' => 'Aperçu des impôts',
        'steuer_einwohner' => 'Votre ville abrite',
        'steuer_einwohner_ende' => 'citoyens',
        'nahrung_versorgung' => 'Approvisionnement alimentaire :',
        'versorgt'     => 'approvisionné',
        'grundzins'    => 'Impôt de base :',
        'versorgungszins' => 'Taxe d’approvisionnement :',
        'gesamteinnahmen' => 'Revenus totaux :',
        'naechste_zahlung' => 'Prochaine perception :',
        'chronik_titel' => 'Chronique',
        'chronik_untertitel' => 'An %d depuis la fondation'
    ]
];
$txt = $translations[$lang] ?? $translations['de'];



// =========================================================================
// HANDELSHOF & HÄNDLER-GENERIERUNG (VERKAUF & ANKAUF)
// =========================================================================
$hasTradingPost = false;
foreach ($dbBuildings as $building) {
    if ($building['type'] === 'haus60') {
        $hasTradingPost = true;
        break;
    }
}

if ($hasTradingPost) {
    // Prüfen, ob Händler-Einträge für diesen User existieren und ob sie jünger als 24 Stunden sind
    $stmtCheckMerchants = $pdo->prepare("SELECT created_at FROM user_trading_post_merchants WHERE user_id = ? LIMIT 1");
    $stmtCheckMerchants->execute([$userId]);
    $lastMerchantCreation = $stmtCheckMerchants->fetchColumn();

    $needsGeneration = false;
    if (!$lastMerchantCreation) {
        $needsGeneration = true; // Noch nie generiert
    } else {
        // Prüfen ob 24 Stunden vergangen sind
        $createdTime = strtotime($lastMerchantCreation);
        if ((time() - $createdTime) >= 86400) {
            $needsGeneration = true;
        }
    }

    if ($needsGeneration) {
        // Alle alten Einträge (Verkauf & Ankauf) löschen
        $stmtDelete = $pdo->prepare("DELETE FROM user_trading_post_merchants WHERE user_id = ?");
        $stmtDelete->execute([$userId]);

        // Alle Marktstatistiken (Waren + Durchschnittspreise) laden
        $stmtStats = $pdo->query("SELECT res_id, avg_price FROM market_price_stats");
        $allMarketStats = $stmtStats->fetchAll(PDO::FETCH_ASSOC);

        if (count($allMarketStats) >= 12) { // Mindestens 12 Waren benötigt (6 Verkauf + 6 Ankauf)
            // Die 5 möglichen Händler zur Auswahl
            $merchantKeys = ['friedrich', 'benedikt', 'konrad', 'adelinde', 'johanna'];
            // Wähle genau einen Händler für diesen Tag aus
            $mKey = $merchantKeys[array_rand($merchantKeys)];

            // Liste durchmischen
            shuffle($allMarketStats);

            // =================================================================
            // 1. VERKAUF (Händler verkauft an Spieler) - Unverändert mit Gold & Silber
            // =================================================================
            $selectedOfferGoods = array_slice($allMarketStats, 0, 6);
            $usedResIds = [];
            $offers = [];
            $index = 0;

            foreach ($selectedOfferGoods as $good) {
                $resId = $good['res_id'];
                $usedResIds[] = $resId; // Merken, damit der Ankauf diese Ware nicht nutzt
                $avgPrice = (float)$good['avg_price'];
                if ($avgPrice <= 0) $avgPrice = 10;

                $currency = ($index < 4) ? 'gold' : 'silber';

                if ($currency === 'gold') {
                    $multiplier = (rand(0, 1) === 0) ? 0.8 : 1.2;
                    $price = max(1, round($avgPrice * $multiplier));
                } else {
                    // Silber: Durchschnittspreis + 30% Aufschlag beim Verkauf
                    $price = max(1, round($avgPrice * 1.3));
                }

                $offers[$resId] = [
                    'amount' => 50,
                    'price' => (int)$price,
                    'currency' => $currency
                ];
                $index++;
            }

            // Zeile 1 in DB schreiben (Verkauf)
            $stmtInsertOffer = $pdo->prepare("INSERT INTO user_trading_post_merchants (user_id, merchant_name, action_type, offers_data) VALUES (?, ?, 'offer', ?)");
            $stmtInsertOffer->execute([$userId, $mKey, json_encode($offers)]);


            // =================================================================
            // 2. ANKAUF (Händler kauft vom Spieler) - Komplett auf Gold umgestellt
            // =================================================================
            // Restliche Waren filtern (keine doppelten Waren zum Verkauf)
            $remainingStats = array_filter($allMarketStats, function($item) use ($usedResIds) {
                return !in_array($item['res_id'], $usedResIds);
            });
            shuffle($remainingStats);

            $selectedDemandGoods = array_slice($remainingStats, 0, 6);
            $demands = [];

            foreach ($selectedDemandGoods as $good) {
                $resId = $good['res_id'];
                $avgPrice = (float)$good['avg_price'];
                if ($avgPrice <= 0) $avgPrice = 10;

                // Ankauf läuft jetzt ausschließlich über Gold mit +/- 20% vom Durchschnittspreis
                $currency = 'gold';
                $multiplier = (rand(0, 1) === 0) ? 0.8 : 1.2;
                $price = max(1, round($avgPrice * $multiplier));

                $demands[$resId] = [
                    'amount' => 25,
                    'price' => (int)$price,
                    'currency' => $currency
                ];
            }

            // Zeile 2 in DB schreiben (Ankauf)
            $stmtInsertDemand = $pdo->prepare("INSERT INTO user_trading_post_merchants (user_id, merchant_name, action_type, offers_data) VALUES (?, ?, 'demand', ?)");
            $stmtInsertDemand->execute([$userId, $mKey, json_encode($demands)]);
        }
    }
}




// =========================================================================
// SAISONALE EVENTS & OBJEKT-GENERIERUNG (Z.B. HALLOWEEN KÜRBISSE)
// =========================================================================
$eventItemsToSpawn = [];

if ($tutStep >= 9) {

    // 1. Prüfen, ob ein Event aktiv ist
    $stmtEvent = $pdo->query("SELECT * FROM events WHERE is_active = 1 LIMIT 1");
    $activeEvent = $stmtEvent->fetch(PDO::FETCH_ASSOC);

    if ($activeEvent) {
        $eventId = $activeEvent['id'];
        $itemResource = $activeEvent['item_resource']; // z.B. 'kuerbis'

        // 2. Prüfen, wann der User das letzte Mal gesammelt hat
        $stmtCooldown = $pdo->prepare("SELECT last_collected_at FROM user_event_cooldowns WHERE user_id = ? AND event_id = ?");
        $stmtCooldown->execute([$userId, $eventId]);
        $lastCollected = $stmtCooldown->fetchColumn();

        $needsEventSpawn = false;
        if (!$lastCollected) {
            $needsEventSpawn = true; // Noch nie gesammelt
        } else {
            // Prüfen ob 3 Stunden (10800 Sekunden) vergangen sind
            $lastTime = strtotime($lastCollected);
            if ((time() - $lastTime) >= 10800) {
                $needsEventSpawn = true;
            }
        }

        if ($needsEventSpawn) {
            // Cooldown in der DB aktualisieren oder neu anlegen (3 Stunden Cooldown)
            $stmtUpsert = $pdo->prepare("
                INSERT INTO user_event_cooldowns (user_id, event_id, last_collected_at) 
                VALUES (?, ?, NOW())
                ON DUPLICATE KEY UPDATE last_collected_at = NOW()
            ");
            $stmtUpsert->execute([$userId, $eventId]);

// 3. Zwischen 1 und 3 Event-Objekte generieren (Kürbisse)
            $spawnCount = rand(1, 3);
            for ($i = 0; $i < $spawnCount; $i++) {
                $eventItemsToSpawn[] = [
                    'id' => 'event_' . uniqid(),
                    'type' => $activeEvent['event_key'], // 'halloween'
                    'resource' => $itemResource,         // 'kuerbis'
                    'image' => $activeEvent['object_image'], // 'assets/ui/halloween.png'
                    'x' => rand(5, 59),
                    'y' => rand(5, 59)
                ];
            }
        }
    }
}



?>
<!DOCTYPE html>
<html lang="<?php echo $userLang; ?>">
<head>
    <meta charset="UTF-8">
    <title>Zunftmeister - ISO Map</title>
    <meta name="google-adsense-account" content="ca-pub-9405050764934292">
    <link rel="stylesheet" href="zm_style.css?v=08092026">
    <link rel="icon" type="image/x-icon" href="favicon.ico">
<script>

    const DB_BUILDING_CATALOG = <?php echo json_encode($buildingCatalog); ?>;
    
    const CONFIG = {
        userId: <?php echo intval($userId); ?>,
        userName: '<?php echo addslashes($userName); ?>',
        cityName: '<?php echo addslashes($cityName); ?>', 
        lang: '<?php echo $userLang; ?>',
        txt: <?php echo json_encode($txt); ?>,
        musicEnabled: <?php echo $musicEnabled; ?>,
        soundEnabled: <?php echo $soundEnabled; ?>,
        atmoEnabled: <?php echo $atmoEnabled; ?>,
        currency: '<?php echo $userCurrency; ?>', 
        chatStatus: <?php echo isset($userData['chat_status']) ? intval($userData['chat_status']) : 1; ?>,
        resources: <?php echo json_encode($dbResources); ?>,
        savedMap: <?php echo $mapData ? $mapData : 'null'; ?>,
        savedBuildings: <?php echo json_encode($dbBuildings); ?>, 
        eventItems: <?php echo json_encode($eventItemsToSpawn); ?>,
        premiumUntil: <?php echo $premiumUntil ? "'".$premiumUntil."'" : "null"; ?>,
        happiness: <?php echo isset($userData['happiness']) ? intval($userData['happiness']) : 100; ?>,
      //  savedForests: <?php echo json_encode($dbForests ?: []); ?>, // <-- Komma gefixt & Fallback ergänzt
        
        tutorial: {
            currentStep: <?php echo $tutStep; ?>,
            isCompleted: <?php echo $tutCompleted; ?>,
            questCounter: <?php echo $tutCounter; ?>
        }
    };
  

if (typeof Atmosphere !== 'undefined') {
    Atmosphere.enabled = CONFIG.atmoEnabled;
}

    console.log("Katalog geladen:", DB_BUILDING_CATALOG);
    console.log("Stadtname aus CONFIG:", CONFIG.cityName);
    console.log("Eingestellte Währung:", CONFIG.currency); 
    console.log("Tutorial-Status aus CONFIG:", CONFIG.tutorial);
</script>


</head>
<body>
 
<canvas id="gameCanvas"></canvas>

<!-- <div id="map-atmosphere-overlay"></div> --> 
<canvas id="pollen-canvas"></canvas>

<div id="resource-bar">

    <div class="res-side-container left-side">
    
        <div class="resource-group" onclick="openTaxOverview()" style="cursor: pointer;">
            <div class="res-icon" style="background-image: url('assets/ui/top_gold.png');"></div>
            <span class="res-label"><?php echo $txt['gold']; ?></span>
            <span class="res-value" id="res-gold"><?php echo number_format($gold, 0, ',', '.'); ?></span>
        </div>
        
        <div class="resource-group" onclick="openShopModal()" style="cursor: auto;">
            <div class="res-icon" style="background-image: url('assets/ui/silber.png');"></div>
            <span class="res-label"><?php echo $txt['silber']; ?></span>
            <span class="res-value" id="res-silber"><?php echo number_format($silber, 0, ',', '.'); ?></span>
        </div>
             
<div class="resource-group" onclick="openHappinessOverview()" style="cursor: pointer;">
    <div class="res-icon" style="background-image: url('assets/ui/top_pop.png');"></div>
    <span class="res-label"><?php echo $txt['einwohner']; ?></span>
    <span class="res-value" id="res-population">0</span>
</div>

<div class="resource-group" id="trigger-storage-overlay" style="cursor: pointer;">
    <div class="res-icon" style="background-image: url('assets/ui/top_storage.png');"></div>
    <span class="res-label"><?php echo $txt['lager']; ?></span>
    <span class="res-value" id="res-storage-info">
        <?php echo $totalUsedSpace; ?> / <?php echo $maxStorage; ?>
    </span>
</div>

    </div>

    <div class="res-side-container right-side">
        <div class="resource-group"><div class="res-icon" style="background-image: url('assets/ui/top_werkzeug.png');"></div><span class="res-label"><?php echo $txt['werkzeug']; ?></span><span class="res-value" id="res-werkzeug"><?php echo number_format($werkzeug, 0, ',', '.'); ?></span></div>
        <div class="resource-group"><div class="res-icon" style="background-image: url('assets/ui/top_holz.png');"></div><span class="res-label"><?php echo $txt['holz']; ?></span><span class="res-value" id="res-holz"><?php echo number_format($holz, 0, ',', '.'); ?></span></div>
        <div class="resource-group"><div class="res-icon" style="background-image: url('assets/ui/top_stein.png');"></div><span class="res-label"><?php echo $txt['stein']; ?></span><span class="res-value" id="res-stein"><?php echo number_format($stein, 0, ',', '.'); ?></span></div>
        <div class="resource-group"><div class="res-icon" style="background-image: url('assets/ui/top_bretter.png');"></div><span class="res-label"><?php echo $txt['bretter']; ?></span><span class="res-value" id="res-bretter"><?php echo number_format($bretter, 0, ',', '.'); ?></span></div>
        <div class="resource-group"><div class="res-icon" style="background-image: url('assets/ui/top_ziegel.png');"></div><span class="res-label"><?php echo $txt['ziegel']; ?></span><span class="res-value" id="res-ziegel"><?php echo number_format($ziegel, 0, ',', '.'); ?></span></div>
    </div>
</div>

<div id="top-city-name">
    <?php echo htmlspecialchars($cityName); ?>
</div>

<button id="highscore-btn" onclick="openHighscoreMenu()" title="Rangliste"></button>

<div id="chronicle-modal" class="modal-overlay">
    <div class="chronicle-window">
        <button class="chronicle-close" onclick="closeChronicle()">X</button>
        <h2><?php echo $txt['chronik_titel']; ?></h2> 
        <div id="chronicle-current-year" style="font-size: 13px; margin-bottom: 5px; text-align: center;font-weight: bold;"></div>
        <div class="settings-divider"></div>
        <div id="chronicle-content"></div>
    </div>
</div>


<div id="build-tabs" style="display: none;">
    <div class="build-tab" data-category="production" id="tab-prod"></div>
    <div class="build-tab" data-category="city" id="tab-city"></div>
    <div class="build-tab" data-category="special" id="tab-spec"></div>
</div>

<div id="buildMenuContent" style="display: none;">
    <div id="buildMenuScrollArea"></div>
</div>

<div id="main-hud">
    <div id="toggleBuildMenuBtn" class="hud-button-slot"><div id="btn-open-build" class="btn-hover-effect"></div></div>
    <div id="togglePremiumBtn" class="hud-button-slot"><div id="btn-open-premium" class="btn-hover-effect"></div></div>
    <div id="toggleShopBtn" class="hud-button-slot"><div id="btn-open-shop" class="btn-hover-effect"></div></div>
    <div id="toggleLogoutBtn" class="hud-button-slot"><div id="btn-open-logout" class="btn-hover-effect"></div></div>
    <div id="toggleMarketBtn" class="hud-button-slot"><div id="btn-open-market" class="btn-hover-effect"></div></div>
</div>

<div id="right-bottom-menu">
<div id="season-display">
    <svg class="season-progress-ring" viewBox="0 0 141 141">
        <!-- Hintergrund-Ring -->
        <circle class="ring-bg" cx="70.5" cy="70.5" r="66" />
        <!-- Der eigentliche Fortschrittsring -->
        <circle id="season-progress-bar" cx="70.5" cy="70.5" r="66" />
    </svg>
    <!-- Text-Overlay in der Mitte des Rings -->
    <div id="season-text-overlay">
        <span id="season-name-label"></span>
        <span id="season-year-label"></span>
    </div>
</div>
  <div id="btn-slot-7" class="circular-menu-button btn-hover-effect"></div>
  <div id="btn-slot-8" class="circular-menu-button btn-hover-effect"></div>
  <div id="btn-slot-9" class="circular-menu-button btn-hover-effect"></div>
  <div id="btn-slot-10" class="circular-menu-button btn-hover-effect"></div>
  <div id="btn-slot-11" class="circular-menu-button btn-hover-effect"></div>
  <div id="btn-slot-12" class="circular-menu-button btn-hover-effect"></div>
  <div id="btn-slot-6" class="circular-menu-button btn-hover-effect"></div>
  <div id="btn-slot-5" class="circular-menu-button btn-hover-effect"></div>
</div>

<div id="building-tooltip" class="ui-tooltip">
    <div class="tooltip-header"><h3 id="tt-name">Gebäude-Name</h3></div>
    <div class="tooltip-section">
        <div id="tt-costs" class="tt-res-container"></div>
    </div>
<div class="tooltip-section">
    <div class="tt-meta">
        <div style="display: block; margin-bottom: 4px;">
            <span id="label-time">Zeit:</span> <span id="tt-time">0</span>
        </div>
        <div style="display: block; margin-bottom: 4px;">
            <span id="label-req">Vorauss.:</span> <span id="tt-req">Keine</span>
        </div>
        <div id="tt-req-building" style="display: none; display: block; margin-top: 4px;"></div>
    </div>
</div>
    <hr class="tt-divider">
    <div id="tt-description" class="tooltip-desc">Beschreibungstext...</div>
</div>

<div id="chat-minimized-reiter">Community</div>
<div id="chat-container">
<div id="chat-close-area" title="Chat schließen"></div>
    <div id="chat-messages">
        <div class="chat-entry">
            <span class="chat-meta"></span><br>
            <span class="chat-text"></span>
        </div>
    </div>
    <div id="chat-input-area">
        <input type="text" id="chat-input" maxlength="200" placeholder="Nachricht...">
        <button id="chat-send-btn"></button>
    </div>
</div>

<div id="storage-overlay" class="draggable-window">
    <div class="window-grab-zone"></div>
    <div id="storage-close-btn" class="window-close-btn"></div>
    <div class="menu-content">
        <div id="storage-list">
            <p style="text-align:center; opacity:0.5;">Lade Vorräte...</p>
        </div>
    </div>
</div>

<div id="manual-window" class="draggable-window">
    <div class="window-grab-zone"></div>
    <div id="manual-close-btn" class="window-close-btn"></div>
    <div class="menu-content">
        <div id="manual-content-area">
            <p style="text-align:center; opacity:0.5;">Lade Handbuch...</p>
        </div>
    </div>
</div>

<div id="tutorial-advisor-window" class="draggable-window">
    <div class="window-grab-zone"></div>
    <div id="tutorial-close-btn" class="window-close-btn"></div>
    <div class="menu-content">
        <div class="advisor-portrait-container">
            <div class="advisor-portrait"></div>
        </div>
        <div class="tutorial-text-area">
            <h3 id="tut-title">Berater</h3>
            <p id="tut-text">Hier steht die Aufgabe...</p>
        </div>
        <div class="tutorial-action-area">
            <button id="tut-next-btn" class="game-btn-gold" style="display: none;">Weiter</button>
        </div>
    </div>
</div>

<div id="tutorial-minimized-icon" style="display: none;">
    <div class="tut-notification-badge">!</div>
</div>

<div id="npc-notification-sidebar"></div>

<div id="market-alert-overlay" style="display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.6); z-index: 10000; align-items: center; justify-content: center;">
    <div style="background: #fdf6e3; border: 2px solid #5c4033; border-radius: 8px; padding: 20px; width: 300px; box-shadow: 0 4px 15px rgba(0,0,0,0.5); text-align: center; font-family: 'Georgia', serif;">
        <h3 id="market-alert-title" style="margin: 0 0 10px 0; color: #5c4033; font-size: 16px;"></h3>
        <p id="market-alert-text" style="color: #3d2b1f; font-size: 13px; margin-bottom: 20px; line-height: 1.4;"></p>
        <div id="market-alert-buttons" style="display: flex; gap: 10px; justify-content: center;"></div>
    </div>
</div>


<div id="session-warning" class="game-confirm-box" style="display:none; position:fixed; top:50%; left:50%; transform:translate(-50%, -50%); z-index: 20000; padding: 20px; text-align: center;">
    <h3>Bist du noch da?</h3>
    <p>Deine Sitzung läuft bald ab.</p>
    <button onclick="extendSession()" class="game-btn-gold">Ja, weiterspielen!</button>
</div>



<script src="js/audio.js?v=16092026"></script>
<script src="js/npc_manager.js"></script>
<script src="js/map.js?v=19102026"></script>
<script src="js/notifications.js"></script>
<script src="js/economy.js?v=30072026"></script> 
<script src="js/tax_ui.js?v=21092026"></script>
<script src="js/time.js?v=16092026"></script>
<script src="js/citizens.js"></script>
<script src="js/manual.js?v=04102026"></script> 
<script src="js/atmosphere.js"></script>
<script src="https://www.paypal.com/sdk/js?client-id=Aaypw5RCj5pG-4WlJQ5a-mGFvozRH4r-HTvbcz5lh8Qj2HhGfvX5PJfwqukKxJMJnbhu3H_-4V_-Fi7o&currency=<?php echo $userCurrency; ?>"></script>
<script src="js/ui.js?v=23092026"></script>
<script src="js/market.js?v=19102026"></script>
<script src="js/tutorial.js?v=04102026"></script>
<script src="js/session_guard.js"></script>
<script src="js/happiness_ui.js?v=28092026"></script>
<script src="js/highscore.js?v=16092026"></script>
<script src="js/move_building.js?v=03092026"></script>
<script src="js/tradingpost.js?v=25092026"></script>
<script src="js/festival.js?v=01012026"></script>


<?php 
$now = date('Y-m-d H:i:s');
$hasNoPremium = (empty($premiumUntil) || $premiumUntil < $now);

if ($hasNoPremium && $tutStep >= 9): 

// Sprache für das Banner ermitteln (erlaubt sind de, en, fr - Fallback ist de)
$allowedLangs = ['de', 'en', 'fr'];
$promoLang = in_array($userLang, $allowedLangs) ? $userLang : 'de';
?>
<style>
    #premium-promo-overlay {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background: rgba(0, 0, 0, 0.75);
        z-index: 30000;
        display: flex;
        align-items: center;
        justify-content: center;
    }
    .promo-container {
        position: relative;
        max-width: 90%;
        max-height: 90%;
    }
    .promo-image {
        display: block;
        max-width: 100%;
        max-height: 80vh;
        cursor: pointer;
        border: 4px solid #5c4033;
        border-radius: 8px;
        box-shadow: 0 10px 30px rgba(0,0,0,0.8);
    }
    .promo-close-btn {
        position: absolute;
        top: -15px;
        left: -15px;
        background: #8b0000;
        color: #ffffff;
        border: 2px solid #5c4033;
        border-radius: 50%;
        width: 35px;
        height: 35px;
        font-family: 'Georgia', serif;
        font-weight: bold;
        font-size: 16px;
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        box-shadow: 0 4px 10px rgba(0,0,0,0.5);
        z-index: 30001;
    }
    .promo-close-btn:hover {
        background: #b22222;
    }
</style>

<div id="premium-promo-overlay">
    <div class="promo-container">
        <button class="promo-close-btn" onclick="closePromo()">X</button>
        <img class="promo-image" src="assets/backgrounds/premium_ad_<?php echo $promoLang; ?>.jpg" onclick="clickPromo()">
    </div>
</div>

<script>
function closePromo() {
    document.getElementById('premium-promo-overlay').style.display = 'none';
}

function clickPromo() {
    closePromo();
    
    // Ruft direkt die Funktion aus deiner ui.js auf
    if (typeof openPremiumMenu === 'function') {
        openPremiumMenu();
    } else {
        console.warn("openPremiumMenu() ist noch nicht geladen oder nicht global verfügbar.");
    }
}
</script>
<?php endif; ?>

<!-- SEUCHEN-BENACHRICHTIGUNG AUS DER SESSION -->
<?php if (!empty($_SESSION['plague_outbreak'])): ?>
<script>
document.addEventListener('DOMContentLoaded', function() {
    let plagueMsg = "";
    // Falls in index.php $userLang genutzt wird, verwenden wir das direkt, ansonsten $SESSION
    const lang = "<?php echo addslashes($userLang ?? $_SESSION['lang'] ?? 'de'); ?>";

    if (lang === 'fr') {
        plagueMsg = "Une épidémie ravage votre ville ! L’artisanat est à l’arrêt dans de nombreux endroits.";
    } else if (lang === 'en') {
        plagueMsg = "A plague is raging through your city! Craftsmanship is grinding to a halt in many places.";
    } else {
        plagueMsg = "Eine Seuche wütet in Deiner Stadt! Das Handwerk kommt vielerorts zum Erliegen.";
    }

    // 1 Sekunde Verzögerung, damit die UI und Benachrichtigungsskripte geladen sind
    setTimeout(() => {
        if (typeof showNotification === 'function') {
            showNotification(plagueMsg, 'danger');
        }
    }, 1000);
});
</script>
<?php 
    // Flag löschen, damit die Nachricht nur 1x nach dem Ausbruch gezeigt wird
    unset($_SESSION['plague_outbreak']); 
endif; 
?>

</body>
</html>