<?php
session_start();
require_once 'inc/functions.php';
check404();
securityCheck();
if (!isLoggedIn()) {
    header('Location: index.php');
    exit;
}

$user = getUserById($_SESSION['user_id']);
if (!$user) {
    session_destroy();
    header('Location: index.php');
    exit;
}

// Восстанавливаем энергию и обновляем время последней активности
updateLastActivity($_SESSION['user_id']);
// Перезагружаем пользователя, чтобы получить актуальные данные
$user = getUserById($_SESSION['user_id']);
$user['exp_percent'] = getExpPercent($user['exp']);

$fightResult = null;
$opponents = [];
$error = null;

// Загружаем противников, если выбрана сложность
if (isset($_GET['difficulty']) && in_array($_GET['difficulty'], ['weaker', 'equal', 'stronger'])) {
    $difficulty = $_GET['difficulty'];
    $opponents = getOpponentsForBrawl($_SESSION['user_id'], $difficulty, 3);
}

// Обработка боя
if (isset($_GET['fight']) && isset($_GET['opponent_id'])) {
    $opponentId = (int)$_GET['opponent_id'];

    // 1. Ищем противника в загруженном списке
    $selectedOpponent = null;
    foreach ($opponents as $op) {
        if ($op['id'] == $opponentId) {
            $selectedOpponent = $op;
            break;
        }
    }

    // 2. Если не нашли, но это реальный игрок (id > 0) – загружаем из БД
    if (!$selectedOpponent && $opponentId > 0) {
        $potentialOpponent = getUserById($opponentId);
        if ($potentialOpponent && $potentialOpponent['id'] != $_SESSION['user_id']) {
            $selectedOpponent = [
                'id'          => $potentialOpponent['id'],
                'username'    => $potentialOpponent['username'],
                'level'       => $potentialOpponent['level'],
                'total_stats' => $potentialOpponent['total_stats'],
                'attack'      => $potentialOpponent['attack'],
                'health'      => $potentialOpponent['health'],
                'defense'     => $potentialOpponent['defense'],
                'gender'      => $potentialOpponent['gender'],
                'is_bot'      => false
            ];
        }
    }

    // 3. Если противник всё ещё не найден (включая ботов) – ошибка
    if (!$selectedOpponent) {
        $error = 'Противник не найден или уже недоступен.';
    } elseif ($user['energy'] < 10) {
        $error = 'Недостаточно энергии! Подождите, она восстановится через ' .
                 (($user['max_energy'] - $user['energy']) * 60) . ' сек.';
    } else {
        // Проводим бой
        $fightResult = fight($_SESSION['user_id'], $selectedOpponent);
        
        // Проверяем, не вернула ли функция ошибку
        if ($fightResult['result'] === 'error') {
            $error = $fightResult['message'];
            $fightResult = null; // не показываем блок результата
        } else {
            // Обновляем данные пользователя после боя
            $user = getUserById($_SESSION['user_id']);
            $user['exp_percent'] = getExpPercent($user['exp']);
        }
    }
}

require_once 'inc/header.php';
?>

<span class="ttl"><b>Схватка</b></span>
<div class="clb"></div>
<div class="hr"></div>

<?php if (isset($error)): ?>
    <div class="error"><?= htmlspecialchars($error) ?></div>
    <div class="hr"></div>
<?php endif; ?>

<?php if ($fightResult && in_array($fightResult['result'], ['win', 'loss'])): ?>
    <div class="battle-result">
        <b class="<?= $fightResult['result'] == 'win' ? 'info' : 'minor' ?>">
            <?= $fightResult['result'] == 'win' ? 'ПОБЕДА!' : 'Поражение...' ?>
        </b>
        <div class="small">
            Вы сразились с <b><?= htmlspecialchars($fightResult['defender']['username'] ?? 'Неизвестный') ?></b><br>
            Получено: 
            <span class="money">
                <img src="images/icons/ironbar.png" width="12" height="12" alt="баксы"/>
                +<?= $fightResult['bucks'] ?? 0 ?>
            </span>,
            <span class="money">
                <img src="images/icons/star_mif.png" width="12" height="12" alt="опыт"/>
                +<?= $fightResult['exp'] ?? 0 ?> опыта
            </span>
        </div>
    </div>
    <div class="hr"></div>
    <a href="brawl.php" class="btn full">Новая схватка</a>
    <div class="hr"></div>
<?php endif; ?>

<?php if (!$fightResult): ?>
    <!-- ========== СПИСОК ПРОТИВНИКОВ (СВЕРХУ) ========== -->
    <?php if (!empty($opponents)): ?>
        <span class="ttl"><b>Найденные противники</b></span>
        <div class="hr"></div>
        <?php
        // Запоминаем текущую сложность для ссылок на бой
        $difficultyParam = isset($_GET['difficulty']) ? '&difficulty=' . urlencode($_GET['difficulty']) : '';
        ?>
        <?php foreach ($opponents as $op): ?>
            <div class="battle-item">
                <table cellpadding="0" cellspacing="0" border="0" width="100%">
                    <tr>
                        <td width="40" valign="top">
                    <img src="<?= getAvatarUrl($op) ?>" width="40" height="40" alt="аватар">
                        </td>
                        <td valign="top" style="padding-left:6px;">
                            <b><?= htmlspecialchars($op['username']) ?></b> (ур. <?= $op['level'] ?>)<br>
                            <span class="small">Сумма статов: <?= $op['total_stats'] ?></span><br>
                            <?php
                            $diff = $op['total_stats'] - $user['total_stats'];
                            $class = '';
                            $text = '';
                            if ($diff < 0) {
                                $class = 'minor';
                                $text = 'слабее на ' . abs($diff);
                            } elseif ($diff > 0) {
                                $class = 'info';
                                $text = 'сильнее на ' . $diff;
                            } else {
                                $text = 'равный';
                            }
                            ?>
                            <span class="<?= $class ?>"><?= $text ?></span>
                        </td>
                        <td width="60" align="right" valign="middle">
                            <?php if ($user['energy'] >= 10): ?>
                                <a href="?fight=1&opponent_id=<?= $op['id'] ?><?= $difficultyParam ?>" class="btn">Сразиться</a>
                            <?php else: ?>
                                <span class="locked">🔒 нет энергии</span>
                            <?php endif; ?>
                        </td>
                    </tr>
                </table>
                <div class="hr"></div>
            </div>
        <?php endforeach; ?>
    <?php endif; ?>

    <!-- ========== ВЫБОР СЛОЖНОСТИ (СНИЗУ) ========== -->
    <div class="cntr">
        <b>Выбери противника по силам</b><br>
        <span class="small">Доступ за <span class="nwr"><img src="images/icons/bruteEnergy.png" width="12" height="12" alt="э"/>10</span></span>
    </div>
    <div class="clb"></div>
    <div class="hr"></div>

    <div class="menu">
        <a class="btn full" href="?difficulty=weaker">
            <span><img src="images/icons/arrow.png" width="12" height="12" alt=""/> Слабее</span>
        </a>
        <a class="btn full" href="?difficulty=equal">
            <span><img src="images/icons/equal.png" width="12" height="12" alt=""/> Равный</span>
        </a>
        <a class="btn full" href="?difficulty=stronger">
            <span><img src="images/icons/arrow_green.png" width="12" height="12" alt=""/> Сильнее</span>
        </a>
    </div>
    <div class="hr"></div>
<?php endif; ?>

<?php require_once 'inc/foot.php'; ?>