#!/usr/bin/env bash
# Сейвы 1/2/3: файлы на диске vs видимость в игре (Steam API / login).
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
# shellcheck source=config.sh
source "${SCRIPT_DIR}/config.sh"

CONN_LOG="${STEAM_DIR}/logs/connection_log.txt"
PLAYER_LOG="${BOTTLE_DIR}/drive_c/users/${USER}/AppData/LocalLow/Unfrozen/HeroesOldenEra/Player.log"
USERS_ROOT="${BOTTLE_DIR}/drive_c/users/${USER}/AppData/LocalLow/Unfrozen/HeroesOldenEra/users"

echo "=== HoMM Olden Era — диагностика сейвов ==="
echo "Bottle: ${BOTTLE_NAME}"
echo ""

# --- файлы на диске ---
if [[ -d "${USERS_ROOT}" ]]; then
  echo "Профили users/:"
  ls -1 "${USERS_ROOT}" 2>/dev/null || true
  sp="$(find "${USERS_ROOT}" -type d -path '*/saves/singleplayer' 2>/dev/null | head -1)"
  if [[ -n "${sp}" ]]; then
    echo ""
    echo "singleplayer на диске: ${sp}/"
    ls -lh "${sp}"/*.saveskirmish 2>/dev/null || echo "  (нет *.saveskirmish)"
  else
    echo "singleplayer: не найден"
  fi
else
  echo "Нет ${USERS_ROOT} — игра ещё не создавала профиль."
fi

echo ""

# --- Steam login ---
if [[ -f "${CONN_LOG}" ]]; then
  echo "Steam connection_log (хвост):"
  tail -4 "${CONN_LOG}" | sed 's/^/  /'
  if tail -20 "${CONN_LOG}" | grep -qE '\[Logged On'; then
    echo "  → Steam в bottle: Logged On (OK для сейвов)"
    STEAM_OK=1
  else
    echo "  → Steam в bottle: Logged Off (сейвы в меню не подтянутся)"
    STEAM_OK=0
  fi
else
  echo "Нет connection_log.txt"
  STEAM_OK=0
fi

echo ""

# --- Player.log ---
if [[ -f "${PLAYER_LOG}" ]]; then
  if grep -q 'SteamApi_Init failed\|ConnectToGlobalUser failed' "${PLAYER_LOG}" 2>/dev/null; then
    echo "Player.log: SteamApi_Init FAILED — игра без живого Steam-клиента."
    echo "  (файлы на диске могут быть, слоты в UI пустые)"
    API_OK=0
  elif grep -q 'Steam is probably not running' "${PLAYER_LOG}" 2>/dev/null; then
    echo "Player.log: Steam is probably not running"
    API_OK=0
  else
    echo "Player.log: явных ошибок Steam API в последнем запуске нет."
    API_OK=1
  fi
  if grep -q 'FileManager.*saves' "${PLAYER_LOG}" 2>/dev/null; then
    echo "  FileManager видит папку saves (путь профиля на диске совпадает)."
  fi
else
  echo "Нет Player.log — сначала запустите игру."
  API_OK=0
fi

echo ""
if [[ "${STEAM_OK:-0}" == "1" && "${API_OK:-0}" == "1" ]]; then
  echo "ВЕРДИКТ: контур сейвов выглядит здоровым. В игре: Загрузить → skirmish → слоты 1/2/3."
  exit 0
fi

echo "ВЕРДИКТ: игра могла открыться, но сейвы не подтянутся, пока Steam не Logged On."
echo ""
echo "Цикл:"
echo "  bash ${SCRIPT_DIR}/start.sh reset"
echo "  bash ${SCRIPT_DIR}/fix-homm-steam-ui.sh    # один раз, если пустой UI Steam"
echo "  bash ${SCRIPT_DIR}/start.sh steam-ui       # login в аккаунт"
echo "  bash ${SCRIPT_DIR}/start.sh play           # или Play в библиотеке"
echo ""
echo "Не использовать для сейвов: start.sh game без Logged On Steam."
exit 1
