#!/bin/bash

chown root ~
# rsync -a deps/regamedll/* .
rsync -a deps/rehlds/* .
# mv $GITHUB_WORKSPACE/tests/swds.dll .

descs=(
    # "CS: Testing jumping, scenarios, shooting etc"
    "CS: Multiplayer"
    # "Half-Life: Physics singleplayer"
    # "Half-Life: Multiplayer on crossfire map"
    # "Half-Life: Shooting with several weapons"
)
demos=(
    # "cstrike-basic-1" 
    "cstrike-muliplayer-1"
    # "rehlds-phys-single1"
    # "crossfire-1-multiplayer-1"
    # "shooting-hl-1"
)
retVal=0
for i in "${!demos[@]}"; do
    params=$(cat "testdemos/${demos[i]}.params")
    echo -e "\e[1m[$((i + 1))/${#demos[@]}] \e[1;36m${descs[i]} testing...\e[0m"
    echo -e "    - \e[0;33mParameters $params\e[0m"
    wine hlds.exe --rehlds-enable-all-hooks --rehlds-test-play "testdemos/${demos[i]}.bin" $params &> result.log || retVal=$?
    
    if [ $retVal -ne 777 ] && [ $retVal -ne 9 ]; then
        # Print with catchy messages
        while read line; do
            echo -e "      \e[0;33m$line"
        done <<< $(cat result.log | sed '0,/demo failed/I!d;/wine:/d;/./,$!d')
        echo "      🔸  🔸  🔸  🔸  🔸  🔸  🔸  🔸  🔸  🔸"
        
        while read line; do
            echo -e "      \e[1;31m$line";
        done < rehlds_demo_error.txt
        
        echo -e "      \e[30;41mExit code: $retVal\e[0m"
        echo -e "\e[1m[$((i + 1))/${#demos[@]}] \e[1;36m${descs[i]} testing...\e[1;31m Failed ❌"
        exit 6 # Test demo failed
    else
        # Print result HLDS console
        while read line; do
            echo -e "      \e[0;33m$line"
        done <<< $(cat result.log | sed '/wine:/d;/./,$!d')
        
        echo -e "      \e[30;43mExit code: $retVal\e[0m"
        echo -e "\e[1m[$((i + 1))/${#demos[@]}] \e[1;36m${descs[i]} testing...\e[1;32m Succeed ✔"
    fi
done