﻿@echo off
chcp 65001 >nul
setlocal EnableExtensions EnableDelayedExpansion
title 允飒ck服务器自动安装器

echo ==================================================
echo     刷牙服务器 自动安装器
echo     YunSaDeFuWuQi Custom Server Installer
echo ==================================================
echo.

echo 正在检查 curl...
where curl >nul 2>nul
if errorlevel 1 (
    echo.
    echo [错误] 未检测到 curl，本脚本无法继续。
    echo 请访问手动安装教程: https://au.yunsack.top
    echo.
    pause
    exit /b 1
)
echo curl 检测成功。
echo.
echo 正在从 au.yunsack.top 下载服务器配置...
echo.

set "TEMP_JSON=%TEMP%\yunsack-regioninfo.json"
curl -f -sSL --ssl-no-revoke -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" -H "Accept: application/json" -o "%TEMP_JSON%" "https://au.yunsack.top/regionInfo.json"

if errorlevel 1 (
    echo.
    echo [错误] 下载失败，请检查网络后重试。
    echo 也可以使用手动安装教程: https://au.yunsack.top
    echo.
    if exist "%TEMP_JSON%" del "%TEMP_JSON%" >nul 2>nul
    pause
    exit /b 1
)

if not exist "%TEMP_JSON%" (
    echo.
    echo [错误] 下载失败：未生成文件。
    echo.
    pause
    exit /b 1
)

findstr /c:"CurrentRegionIdx" "%TEMP_JSON%" >nul 2>nul
if errorlevel 1 (
    echo.
    echo [错误] 下载内容无效（regionInfo.json 格式不正确）。
    echo 请使用手动安装教程: https://au.yunsack.top
    echo.
    del "%TEMP_JSON%" >nul 2>nul
    pause
    exit /b 1
)

echo 下载完成。
echo.

set "STEAM_DIR=%APPDATA%\..\LocalLow\Innersloth\Among Us"
set "WGS_BASE=%LOCALAPPDATA%\Packages\Innersloth.AmongUs_fw5x688tam7rm\SystemAppData\wgs"

set "STEAM_OK=0"
set "MS_OK=0"
set "ANY_INSTALLED=0"
set "INSTALL_FAILED=0"

if exist "%STEAM_DIR%\" (
    set "STEAM_OK=1"
    set "ANY_INSTALLED=1"
    echo [Steam / 默认版本] 已检测到游戏安装。
)

if exist "%WGS_BASE%\" (
    set "MS_OK=1"
    set "ANY_INSTALLED=1"
    echo [微软商店版] 已检测到游戏安装。
)

if "%ANY_INSTALLED%"=="0" (
    echo.
    echo [错误] 没有找到 Among Us 的安装。
    echo 请先启动一次游戏，再运行本脚本。
    echo.
    echo 手动安装教程: https://au.yunsack.top
    echo.
    del "%TEMP_JSON%" >nul 2>nul
    pause
    exit /b 1
)

echo.

if "%STEAM_OK%"=="1" (
    echo [Steam / 默认版本] 正在写入服务器配置...
    call :CopyRegionInfo "Steam / 默认版本" "%TEMP_JSON%" "%STEAM_DIR%\regionInfo.json"
    if !ERRORLEVEL! NEQ 0 set "INSTALL_FAILED=1"
    echo.
)

if "%MS_OK%"=="1" (
    echo [微软商店版] 正在搜索存档文件...
    set "MS_FOUND=0"

    for /d %%A in ("%WGS_BASE%\*") do (
        for /d %%B in ("%%A\*") do (
            for %%F in ("%%B\*") do (
                findstr /m "CurrentRegionIdx" "%%F" >nul 2>nul
                if !ERRORLEVEL! EQU 0 (
                    echo [微软商店版] 找到存档文件: %%F
                    call :CopyRegionInfo "微软商店版" "%TEMP_JSON%" "%%F"
                    if !ERRORLEVEL! NEQ 0 set "INSTALL_FAILED=1"
                    set "MS_FOUND=1"
                )
            )
        )
    )

    if "!MS_FOUND!"=="0" (
        echo [微软商店版] 未找到匹配的存档文件。
        echo 请先启动一次游戏再重试。
        echo 若仍失败，请查看网站上的微软商店手动教程。
    )
    echo.
)

del "%TEMP_JSON%" >nul 2>nul

echo ==================================================
if "%INSTALL_FAILED%"=="1" (
    echo 安装过程出现错误，请阅读上方错误信息后重试。
    echo 手动安装教程: https://au.yunsack.top
) else (
    echo 安装完成！请重启 Among Us，选择"刷牙服务器"。
    echo 网站: https://au.yunsack.top
)
echo ==================================================
echo.
pause
exit /b 0

:CopyRegionInfo
set "COPY_LABEL=%~1"
set "COPY_SOURCE=%~2"
set "COPY_TARGET=%~3"

copy /y "%COPY_SOURCE%" "%COPY_TARGET%" >nul 2>nul
if !ERRORLEVEL! EQU 0 (
    echo [%COPY_LABEL%] 完成 - 服务器配置已写入。
    exit /b 0
)

if not exist "%COPY_TARGET%" (
    echo [%COPY_LABEL%] 错误 - 无法写入 regionInfo.json。
    echo [%COPY_LABEL%] 目标文件不存在或无法创建:
    echo %COPY_TARGET%
    exit /b 1
)

attrib "%COPY_TARGET%" | findstr /r /c:"^.....R" >nul 2>nul
if !ERRORLEVEL! NEQ 0 (
    echo [%COPY_LABEL%] 错误 - 无法写入 regionInfo.json。
    echo [%COPY_LABEL%] 目标文件不是只读，请关闭游戏后重试。
    exit /b 1
)

echo [%COPY_LABEL%] 目标文件为只读，正在去除只读属性并重试...
attrib -r "%COPY_TARGET%" >nul 2>nul
if !ERRORLEVEL! NEQ 0 (
    echo [%COPY_LABEL%] 错误 - 无法去除只读属性。
    echo [%COPY_LABEL%] 请检查文件权限后重试。
    exit /b 1
)

copy /y "%COPY_SOURCE%" "%COPY_TARGET%" >nul 2>nul
if !ERRORLEVEL! EQU 0 (
    echo [%COPY_LABEL%] 完成 - 已去除只读属性并写入服务器配置。
    exit /b 0
)

echo [%COPY_LABEL%] 错误 - 去除只读属性后仍无法写入。
echo [%COPY_LABEL%] 请关闭游戏、检查文件权限，或使用手动安装教程:
echo https://au.yunsack.top
exit /b 1
