@echo off
title Andy ^& Apples Raft Mod Installer
color 0A
setlocal EnableDelayedExpansion

:: ==========================
:: Configuration
:: ==========================
set "VERSION_URL=https://game.sendouw.com/mods/version.txt"
set "ZIP_URL=https://game.sendouw.com/mods/raft-modpack.zip"

echo.
echo ============================================================
echo            Andy ^& Apples Raft Mod Installer
echo ============================================================
echo.

:: --------------------------
:: Check Internet
:: --------------------------
echo [1/7] Checking internet connection...

powershell.exe -NoProfile -NonInteractive -Command "try { $null = Invoke-WebRequest -Uri '%VERSION_URL%' -Method Head -UseBasicParsing -TimeoutSec 10 -ErrorAction Stop; exit 0 } catch { Write-Host $_.Exception.Message; exit 1 }"

if errorlevel 1 (
    echo.
    echo ERROR: Unable to reach game.sendouw.com
    echo.
    pause
    exit
)

echo     OK

:: --------------------------
:: Locate Steam
:: --------------------------
echo.
echo [2/7] Locating Steam...

for /f "tokens=2,*" %%A in (
'reg query "HKCU\Software\Valve\Steam" /v SteamPath ^| find "SteamPath"'
) do set "STEAM=%%B"

if "%STEAM%"=="" (
    echo.
    echo ERROR: Steam was not found.
    pause
    exit
)

echo     %STEAM%

:: --------------------------
:: Locate Raft
:: --------------------------
echo.
echo [3/7] Locating Raft...

set "RAFT=%STEAM%\steamapps\common\Raft"

if not exist "%RAFT%" (
    echo.
    echo ERROR: Raft was not found.
    pause
    exit
)

echo     %RAFT%

:: --------------------------
:: Mods folder
:: --------------------------
echo.
echo [4/7] Checking Mods folder...

set "MODS=%RAFT%\Mods"

if not exist "%MODS%" (
    mkdir "%MODS%"
    echo     Created Mods folder.
) else (
    echo     Found Mods folder.
)

:: --------------------------
:: Version Check
:: --------------------------
echo.
echo [5/7] Checking version...

powershell.exe -NoProfile -NonInteractive -Command "try { Invoke-WebRequest -Uri '%VERSION_URL%' -UseBasicParsing -TimeoutSec 30 -OutFile '%TEMP%\serverversion.txt' -ErrorAction Stop; exit 0 } catch { Write-Host $_.Exception.Message; exit 1 }"

if errorlevel 1 (
    echo.
    echo ERROR: Unable to download modpack version information.
    echo.
    pause
    exit /b 1
)

set /p SERVERVER=<"%TEMP%\serverversion.txt"

if exist "%MODS%\.modpack_version" (
    set /p LOCALVER=<"%MODS%\.modpack_version"

    if "!SERVERVER!"=="!LOCALVER!" (
        echo.
        echo Your modpack is already up to date!
        goto Launch
    )
)

echo     New version available: %SERVERVER%

:: --------------------------
:: Download ZIP
:: --------------------------
echo.
echo [6/7] Downloading latest modpack...

powershell.exe -NoProfile -NonInteractive -Command "try { Invoke-WebRequest -Uri '%ZIP_URL%' -UseBasicParsing -TimeoutSec 300 -OutFile '%TEMP%\raft-modpack.zip' -ErrorAction Stop; exit 0 } catch { Write-Host $_.Exception.Message; exit 1 }"

if errorlevel 1 (
    echo.
    echo ERROR downloading modpack.
    pause
    exit
)

:: --------------------------
:: Extract
:: --------------------------
echo.
echo [7/7] Installing...

set "TMP=%TEMP%\RaftModInstaller"

if exist "%TMP%" rd /s /q "%TMP%"
mkdir "%TMP%"

powershell.exe -NoProfile -NonInteractive -Command "try { Expand-Archive -Force '%TEMP%\raft-modpack.zip' '%TMP%' -ErrorAction Stop; exit 0 } catch { Write-Host $_.Exception.Message; exit 1 }"

if errorlevel 1 (
    echo.
    echo ERROR extracting modpack.
    pause
    exit /b 1
)

set INSTALLED=0
set UPDATED=0
set SKIPPED=0

for %%F in ("%TMP%\*") do (

    if exist "%MODS%\%%~nxF" (

        fc /b "%%F" "%MODS%\%%~nxF" >nul

        if errorlevel 1 (
            copy /Y "%%F" "%MODS%\" >nul
            echo     Updated: %%~nxF
            set /a UPDATED+=1
        ) else (
            echo     Up to date: %%~nxF
            set /a SKIPPED+=1
        )

    ) else (

        copy "%%F" "%MODS%\" >nul
        echo     Installed: %%~nxF
        set /a INSTALLED+=1

    )
)

echo %SERVERVER%>"%MODS%\.modpack_version"

echo.
echo ============================================================
echo Installation Complete!
echo.
echo Installed : %INSTALLED%
echo Updated   : %UPDATED%
echo Skipped   : %SKIPPED%
echo ============================================================

:Launch

echo.
choice /M "Launch Raft now"

if errorlevel 2 goto End

start steam://run/648800

:End

echo.
echo Thank you for playing on Andy ^& Apples' Server!
timeout /t 3 >nul
exit