@echo off
setlocal enabledelayedexpansion

cls
echo ================================================
echo   Star Citizen - Instalador de Traducao PT-BR
echo ================================================
echo:
echo Procurando a pasta do Star Citizen...
echo:

rem === Encontrar pasta do Star Citizen automaticamente ===
set "GAME_DATA="

for %%D in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  if exist "%%D:\Program Files\Roberts Space Industries\StarCitizen\LIVE\data" (
    if not defined GAME_DATA set "GAME_DATA=%%D:\Program Files\Roberts Space Industries\StarCitizen\LIVE\data"
  )
  if exist "%%D:\Program Files (x86)\Roberts Space Industries\StarCitizen\LIVE\data" (
    if not defined GAME_DATA set "GAME_DATA=%%D:\Program Files (x86)\Roberts Space Industries\StarCitizen\LIVE\data"
  )
  if exist "%%D:\Roberts Space Industries\StarCitizen\LIVE\data" (
    if not defined GAME_DATA set "GAME_DATA=%%D:\Roberts Space Industries\StarCitizen\LIVE\data"
  )
  if exist "%%D:\StarCitizen\LIVE\data" (
    if not defined GAME_DATA set "GAME_DATA=%%D:\StarCitizen\LIVE\data"
  )
)

if not defined GAME_DATA (
  for %%D in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
    if exist "%%D:\Program Files\Roberts Space Industries\StarCitizen\PTU\data" (
      if not defined GAME_DATA set "GAME_DATA=%%D:\Program Files\Roberts Space Industries\StarCitizen\PTU\data"
    )
    if exist "%%D:\Roberts Space Industries\StarCitizen\PTU\data" (
      if not defined GAME_DATA set "GAME_DATA=%%D:\Roberts Space Industries\StarCitizen\PTU\data"
    )
    if exist "%%D:\StarCitizen\PTU\data" (
      if not defined GAME_DATA set "GAME_DATA=%%D:\StarCitizen\PTU\data"
    )
  )
)

if not defined GAME_DATA (
  echo:
  echo [ERRO] Nao foi possivel encontrar a pasta do Star Citizen.
  echo Verifique se o jogo esta instalado.
  echo:
  pause
  exit /b
)

echo Pasta encontrada: !GAME_DATA!
echo:

set "language=portuguese_(brazil)"
set "LANG_DIR=!GAME_DATA!\Localization\!language!"
set "USER_CFG=!GAME_DATA!\..\user.cfg"
set "TEMP_CFG=!GAME_DATA!\..\user.cfg.tmp"

IF NOT EXIST "!LANG_DIR!" mkdir "!LANG_DIR!"

echo Baixando traducao...
curl -L -s -o "!LANG_DIR!\global.ini" "https://raw.githubusercontent.com/danielgmota/StarCitizen-Localization/develop/data/Localization/portuguese_(brazil)/global.ini"

IF NOT EXIST "!LANG_DIR!\global.ini" (
  echo:
  echo [ERRO] Nao foi possivel baixar a traducao.
  echo Verifique sua conexao com a internet.
  echo:
  pause
  exit /b
)

set "language_line=g_language = !language!"

IF EXIST "!TEMP_CFG!" DEL /F "!TEMP_CFG!"

if not exist "!USER_CFG!" (
  echo !language_line!>"!USER_CFG!"
) else (
  rem Fazer backup antes de qualquer alteracao
  copy /y "!USER_CFG!" "!USER_CFG!.bak" > nul

  set "found_language=0"

  rem Usar PowerShell para preservar TODAS as linhas (incluindo vazias e com ':')
  rem e apenas substituir/adicionar a linha g_language
  powershell -NoProfile -Command ^
    "$cfg = '!USER_CFG!'.Replace('\', '\\');" ^
    "$tmp = '!TEMP_CFG!'.Replace('\', '\\');" ^
    "$lang = 'g_language = !language!';" ^
    "$lines = [System.IO.File]::ReadAllLines($cfg);" ^
    "$found = $false;" ^
    "$out = New-Object System.Collections.Generic.List[string];" ^
    "foreach ($line in $lines) {" ^
    "  if ($line -match '^g_language') {" ^
    "    $out.Add($lang); $found = $true;" ^
    "  } else {" ^
    "    $out.Add($line);" ^
    "  }" ^
    "};" ^
    "if (-not $found) { $out.Add($lang) };" ^
    "[System.IO.File]::WriteAllLines($tmp, $out);"

  if exist "!TEMP_CFG!" (
    move /y "!TEMP_CFG!" "!USER_CFG!" > nul
  ) else (
    echo:
    echo [ERRO] Falha ao gerar ficheiro temporario. O user.cfg nao foi alterado.
    echo:
    pause
    exit /b
  )
)

echo:
echo ================================================
echo   Traducao instalada com sucesso! Bom jogo!
echo ================================================
echo:
pause
endlocal
