#!/bin/bash
# Author: Castro-Fidel (PortWINE-Linux.ru)
########################################################################
kill_portwine
sleep 3
export PW_USER_TEMP="$WINEPREFIX/drive_c/users/${USER}/Temp"
export PW_FORCE_LARGE_ADDRESS_AWARE=0
export PW_USE_GAMEMODE=0
export PW_CHECK_AUTOINSTAL=1
export PW_GUI_DISABLED_CS=1
export PW_WINEDBG_DISABLE=1
export PW_NO_WRITE_WATCH=0
export PW_VULKAN_USE=0
unset PW_WINE_VER
export PW_WINE_USE=proton_steam
export PW_NO_FSYNC=1
export PW_NO_ESYNC=1
unset PORTWINE_CREATE_SHORTCUT_NAME
export PW_DISABLED_CREAT_DB=1

PW_WGC () {
    export LAUNCH_PARAMETERS=("/VERYSILENT")
    [ "${update_loc}" = "RUS" ] && export WGC_LOC=RU || export WGC_LOC=EU
    export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/Wargaming_Game_Center_Install_WoT_${WGC_LOC}.exe"
    start_portwine
    if try_download "https://redirect.wargaming.net/WGC/Wargaming_Game_Center_Install_WoT_${WGC_LOC}.exe" "${PW_AUTOINSTALL_EXE}"
    then
        pw_start_progress_bar_block "Starting WGC installation..."
        pw_kill_autostart wgc.exe &
        pw_run "${PW_AUTOINSTALL_EXE}"
        portwine_exe="$WINEPREFIX/drive_c/ProgramData/Wargaming.net/GameCenter/wgc_api/wgc_api.exe"
        export PORTWINE_CREATE_SHORTCUT_NAME="Wargaming Game Center"
        try_remove_file "${PW_AUTOINSTALL_EXE}"
        kill_portwine
        portwine_create_shortcut
    fi
    stop_portwine
}

PW_ORIGIN () {
    export LAUNCH_PARAMETERS=("/silent" )
    export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/OriginSetup.exe"
    start_portwine
    if try_download "https://download.dm.origin.com/origin/live/OriginSetup.exe" "${PW_AUTOINSTALL_EXE}"
    then
        pw_start_progress_bar_block "Installing the Origin. Please wait..."
        pw_kill_autostart Origin.exe &
        pw_run "${PW_AUTOINSTALL_EXE}"
        portwine_exe="$WINEPREFIX/drive_c/Program Files (x86)/Origin/Origin.exe"
        pw_stop_progress_bar
        try_remove_file "${PW_AUTOINSTALL_EXE}"
        kill_portwine
        portwine_create_shortcut
    fi
    stop_portwine
}

PW_BATTLE_NET () {
    [ "${update_loc}" = "RUS" ] && export BN_LOC=ruRU || export BN_LOC=enUS
    export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/Battle.net-Setup-${BN_LOC}.exe"
    start_portwine
    if try_download "http://dist.blizzard.com/downloads/bna-installers/322d5bb9ae0318de3d4cde7641c96425/retail.1/Battle.net-Setup-${BN_LOC}.exe" "${PW_AUTOINSTALL_EXE}"
    then
        PW_START_PROGRESS_BAR "Installing the Battle Net. Please wait..."
        pw_kill_autostart Battle.net.exe &
        pw_run "${PW_AUTOINSTALL_EXE}"
        portwine_exe=`find "$WINEPREFIX/drive_c/" -type f -name "Battle.net.exe"`
        PW_STOP_PROGRESS
        portwine_create_shortcut
        try_remove_file "${PW_AUTOINSTALL_EXE}"
    fi
    stop_portwine
}

PW_EPIC () {
    export LAUNCH_PARAMETERS=("/q" )
    export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/EpicGamesLauncherInstaller.msi"
    start_portwine
    if try_download "https://launcher-public-service-prod06.ol.epicgames.com/launcher/api/installer/download/EpicGamesLauncherInstaller.msi" "${PW_AUTOINSTALL_EXE}"
    then
        pw_start_progress_bar_block "Installing Epic Games Launcher. Please wait..."
        pw_kill_autostart EpicGamesLauncher.exe &
        pw_run msiexec /i "${PW_AUTOINSTALL_EXE}" &
        sleep 10
        if [ ! -z `pgrep msiexec* | head -n 1` ] ; then
            while [ ! -z `pgrep msiexec* | head -n 1` ] || [ ! -z `pgrep rundll32* | head -n 1` ] || [ ! -z `pgrep -a wrap | grep ${portname} | head -n 1` ]
            do
                [ ! -z `pgrep rundll32* | head -n 1` ] && kill -n 9 `pgrep rundll32* | head -n 1` && echo "Kill rundll32.exe"
                sleep 5
            done
        fi
        portwine_exe="$WINEPREFIX/drive_c/Program Files (x86)/Epic Games/Launcher/Portal/Binaries/Win32/EpicGamesLauncher.exe"
        try_remove_file "${PW_AUTOINSTALL_EXE}"
        kill_portwine
        pw_stop_progress_bar
        portwine_create_shortcut
    fi
    stop_portwine
}

PW_GOG () {
    export LAUNCH_PARAMETERS=("/VERYSILENT")
    export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/setup_galaxy_2.0.37.384.exe"
    start_portwine
    if try_download "https://content-system.gog.com/open_link/download?path=/open/galaxy/client/2.0.37.384/setup_galaxy_2.0.37.384.exe" "${PW_AUTOINSTALL_EXE}"
    then
        pw_start_progress_bar_block "Installing the GOG Galaxy. Please wait..."
        pw_kill_autostart GalaxyClient.* &
        pw_run "${PW_AUTOINSTALL_EXE}"
        portwine_exe="$WINEPREFIX/drive_c/Program Files (x86)/GOG Galaxy/GalaxyClient.exe"
        try_remove_file "${PW_AUTOINSTALL_EXE}"
        kill_portwine
        pw_stop_progress_bar
        portwine_create_shortcut
    fi
    stop_portwine
}

PW_EVE () {
    export PW_WINDOWS_VER=10
    export PW_DLL_INSTALL="vcrun2017"
    export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/EveLauncher-1892908.exe"
    start_portwine
    if try_download "https://binaries.eveonline.com/EveLauncher-1892908.exe" "${PW_AUTOINSTALL_EXE}"
    then
        pw_start_progress_bar_block "Installing the EVE Launcher. Please wait..."
        if [ ! -f "$WINEPREFIX/drive_c/Games/EVE Online/Launcher/evelauncher.exe" ] ; then
            try_remove_dir "$WINEPREFIX/drive_c/Games/EVE Online"
            dd if="${PW_AUTOINSTALL_EXE}" of="${PW_AUTOINSTALL_EXE}".7z bs=1M skip=31646603 count=196171208 iflag=skip_bytes,count_bytes
            "$pw_7z" x "${PW_AUTOINSTALL_EXE}".7z -o"$WINEPREFIX/drive_c/Games/EVE Online"
            try_remove_file "${PW_AUTOINSTALL_EXE}"
            try_remove_file "${PW_AUTOINSTALL_EXE}".7z
        fi
        portwine_exe="$WINEPREFIX/drive_c/Games/EVE Online/Launcher/evelauncher.exe"
        pw_stop_progress_bar
        portwine_create_shortcut
    fi
    stop_portwine
}

PW_UBC () {
	export LAUNCH_PARAMETERS=("/S" "/D=c:\Program Files (x86)\Ubisoft Game Launcher")
    export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/UbisoftConnectInstaller.exe"
    start_portwine
    if try_download "https://ubistatic3-a.akamaihd.net/orbit/launcher_installer/UbisoftConnectInstaller.exe" "${PW_AUTOINSTALL_EXE}"
    then
		pw_start_progress_bar_cs "Installing the Ubisoft Connect. Please wait..."
        pw_kill_autostart UbisoftConnect.exe &
		pw_run "${PW_AUTOINSTALL_EXE}"
		portwine_exe="$WINEPREFIX/drive_c/Program Files (x86)/Ubisoft Game Launcher/UbisoftConnect.exe"
		try_remove_file "${PW_AUTOINSTALL_EXE}"
		kill_portwine
		pw_stop_progress_bar
		portwine_create_shortcut
    fi
    stop_portwine
}

PW_STEAM () {
	export LAUNCH_PARAMETERS=("/S" "/D=c:\Program Files (x86)\Steam")
    export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/SteamSetup.exe"
    start_portwine
    if try_download "https://cdn.cloudflare.steamstatic.com/client/installer/SteamSetup.exe" "${PW_AUTOINSTALL_EXE}"
    then
		pw_start_progress_bar_cs "Installing the Steam. Please wait..."
        pw_kill_autostart steam.exe &
		pw_run "${PW_AUTOINSTALL_EXE}"
        if [ -f "$WINEPREFIX/drive_c/Program Files (x86)/Steam/Steam.exe" ]
        then mv -f "$WINEPREFIX/drive_c/Program Files (x86)/Steam/Steam.exe" "$WINEPREFIX/drive_c/Program Files (x86)/Steam/steam.exe"
        fi
		portwine_exe="$WINEPREFIX/drive_c/Program Files (x86)/Steam/steam.exe"
		try_remove_file "${PW_AUTOINSTALL_EXE}"
		kill_portwine
		pw_stop_progress_bar
        export PORTWINE_CREATE_SHORTCUT_NAME="STEAM_PP"
		portwine_create_shortcut
    fi
    stop_portwine
}

PW_OSU () {
    export WINEPREFIX="${PORT_WINE_PATH}/data/pfx_dotnet"
    export PW_DLL_INSTALL="dotnet40"
    mkdir -p "${WINEPREFIX}/drive_c/Program Files (x86)/OSU/"
    export PW_AUTOINSTALL_EXE="${WINEPREFIX}/drive_c/Program Files (x86)/OSU/osu!.exe"
    start_portwine
    if try_download "https://m1.ppy.sh/r/osu!install.exe" "${PW_AUTOINSTALL_EXE}"
    then
        pw_start_progress_bar_block "Installing the OSU!. Please wait..."
        if  [ -f "${PORT_WINE_PATH}/data/pfx_dotnet/drive_c/Program Files (x86)/OSU/osu!install.exe" ]; then
            mv -f  "${PORT_WINE_PATH}/data/pfx_dotnet/drive_c/Program Files (x86)/OSU/osu!install.exe" "${PORT_WINE_PATH}/data/pfx_dotnet/drive_c/Program Files (x86)/OSU/osu!.exe"
        fi
        portwine_exe="$WINEPREFIX/drive_c/Program Files (x86)/OSU/osu!.exe"
        portwine_create_shortcut
		pw_run "${PW_AUTOINSTALL_EXE}"
        pw_stop_progress_bar
        kill_portwine
    fi
    stop_portwine
}

PW_BETHESDA () {
    export LAUNCH_PARAMETERS=("/silent" )
    export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/BethesdaNetLauncher_Setup.exe"
    start_portwine
    if try_download "https://download.cdp.bethesda.net/BethesdaNetLauncher_Setup.exe" "${PW_AUTOINSTALL_EXE}"
    then
        pw_start_progress_bar_block "Installing the BethesdaNetLauncher. Please wait..."
        pw_kill_autostart BethesdaNetLauncher.exe &
        pw_run "${PW_AUTOINSTALL_EXE}"
        portwine_exe="$WINEPREFIX/drive_c/Program Files (x86)/Bethesda.net Launcher/BethesdaNetLauncher.exe"
        try_remove_file "${PW_AUTOINSTALL_EXE}"
        kill_portwine
        pw_stop_progress_bar
        export PORTWINE_CREATE_SHORTCUT_NAME="Bethesda.net"
        portwine_create_shortcut
    fi
    stop_portwine
}

PW_ROCKSTAR () {
    export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/Rockstar-Games-Launcher.exe"
    start_portwine
    if try_download "https://gamedownloads.rockstargames.com/public/installer/Rockstar-Games-Launcher.exe" "${PW_AUTOINSTALL_EXE}"
    then
        pw_start_progress_bar_block "Rockstar-Games-Launcher. Please wait..."
        "$pw_7z" x -y "${PW_AUTOINSTALL_EXE}" -o"$WINEPREFIX/drive_c/Program Files/Rockstar Games/Launcher"
        portwine_exe="$WINEPREFIX/drive_c/Program Files/Rockstar Games/Launcher/Launcher.exe"
        try_remove_file "${PW_AUTOINSTALL_EXE}"
        kill_portwine
        pw_stop_progress_bar
        export PORTWINE_CREATE_SHORTCUT_NAME="Rockstar"
        portwine_create_shortcut
    fi
    stop_portwine
}

PW_MYGAMES () {
    export LAUNCH_PARAMETERS=("")
    export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/MyGamesLoader.exe"
    start_portwine
    if try_download "https://static.gc.my.games/MyGamesLoader.exe" "${PW_AUTOINSTALL_EXE}"
    then
        pw_start_progress_bar_block "Installing the My.Games. Please wait..."
        pw_kill_autostart GameCenter.exe &
        pw_run "${PW_AUTOINSTALL_EXE}"
        portwine_exe="$WINEPREFIX/drive_c/users/steamuser/AppData/Local/GameCenter/GameCenter.exe"
        try_remove_file "${PW_AUTOINSTALL_EXE}"
        kill_portwine
        pw_stop_progress_bar
        export PORTWINE_CREATE_SHORTCUT_NAME="MY.GAMES"
        portwine_create_shortcut
    fi
    stop_portwine
}