diff --git a/lgsm/functions/mods_list.sh b/lgsm/functions/mods_list.sh index 24a81f262..d9288a11f 100644 --- a/lgsm/functions/mods_list.sh +++ b/lgsm/functions/mods_list.sh @@ -77,201 +77,4 @@ fn_mods_scrape_urls(){ sourcemodurl="${sourcemodfasterurl}/${sourcemodlatestfile}" } -# Sets some gsm requirements -fn_gsm_requirements(){ - # If tmpdir variable doesn't exist, LGSM is too old - if [ -z "${tmpdir}" ]||[ -z "${lgsmdir}" ]; then - fn_print_fail "Your LGSM version is too old." - echo " * Please do a full update, including ${selfname} script." - core_exit.sh - fi -} - -# Define all variables from a mod at once when index is set to a separator -fn_mod_info(){ -# If for some reason no index is set, none of this can work -if [ -z "$index" ]; then - fn_print_error "index variable not set. Please report an issue to LGSM Team." - echo "* https://github.com/GameServerManagers/LinuxGSM/issues" - core_exit.sh -fi - modcommand="${mods_global_array[index+1]}" - modprettyname="${mods_global_array[index+2]}" - modurl="${mods_global_array[index+3]}" - modfilename="${mods_global_array[index+4]}" - modsubdirs="${mods_global_array[index+5]}" - modlowercase="${mods_global_array[index+6]}" - modinstalldir="${mods_global_array[index+7]}" - modkeepfiles="${mods_global_array[index+8]}" - modengines="${mods_global_array[index+9]}" - modgames="${mods_global_array[index+10]}" - modexcludegames="${mods_global_array[index+11]}" - modsite="${mods_global_array[index+12]}" - moddescription="${mods_global_array[index+13]}" -} - - -# Find out if a game is compatible with a mod from a modgames (list of games supported by a mod) variable -fn_compatible_mod_games(){ - # Reset test value - modcompatiblegame="0" - # If value is set to GAMES (ignore) - if [ "${modgames}" != "GAMES" ]; then - # How many games we need to test - gamesamount="$(echo "${modgames}" | awk -F ';' '{ print NF }')" - # Test all subvalue of "modgames" using the ";" separator - for ((gamevarindex=1; gamevarindex < ${gamesamount}; gamevarindex++)); do - # Put current game name into modtest variable - gamemodtest="$( echo "${modgames}" | awk -F ';' -v x=${gamevarindex} '{ print $x }' )" - # If game name matches - if [ "${gamemodtest}" == "${gamename}" ]; then - # Mod is compatible ! - modcompatiblegame="1" - fi - done - fi -} - -# Find out if an engine is compatible with a mod from a modengines (list of engines supported by a mod) variable -fn_compatible_mod_engines(){ - # Reset test value - modcompatibleengine="0" - # If value is set to ENGINES (ignore) - if [ "${modengines}" != "ENGINES" ]; then - # How many engines we need to test - enginesamount="$(echo "${modengines}" | awk -F ';' '{ print NF }')" - # Test all subvalue of "modengines" using the ";" separator - for ((gamevarindex=1; gamevarindex < ${enginesamount}; gamevarindex++)); do - # Put current engine name into modtest variable - enginemodtest="$( echo "${modengines}" | awk -F ';' -v x=${gamevarindex} '{ print $x }' )" - # If engine name matches - if [ "${enginemodtest}" == "${engine}" ]; then - # Mod is compatible ! - modcompatibleengine="1" - fi - done - fi -} - -# Find out if a game is not compatible with a mod from a modnotgames (list of games not supported by a mod) variable -fn_not_compatible_mod_games(){ - # Reset test value - modeincompatiblegame="0" - # If value is set to NOTGAMES (ignore) - if [ "${modexcludegames}" != "NOTGAMES" ]; then - # How many engines we need to test - excludegamesamount="$(echo "${modexcludegames}" | awk -F ';' '{ print NF }')" - # Test all subvalue of "modexcludegames" using the ";" separator - for ((gamevarindex=1; gamevarindex < ${excludegamesamount}; gamevarindex++)); do - # Put current engine name into modtest variable - excludegamemodtest="$( echo "${modexcludegames}" | awk -F ';' -v x=${gamevarindex} '{ print $x }' )" - # If engine name matches - if [ "${excludegamemodtest}" == "${gamename}" ]; then - # Mod is compatible ! - modeincompatiblegame="1" - fi - done - fi -} - -# Sums up if a mod is compatible or not with modcompatibility=0/1 -fn_mod_compatible_test(){ - # Test game and engine compatibility - fn_compatible_mod_games - fn_compatible_mod_engines - fn_not_compatible_mod_games - if [ "${modeincompatiblegame}" == "1" ]; then - modcompatibility="0" - elif [ "${modcompatibleengine}" == "1" ]||[ "${modcompatiblegame}" == "1" ]; then - modcompatibility="1" - else - modcompatibility="0" - fi -} - -# Checks if a mod is compatibile for installation -# Provides available mods for installation -# Provides commands for mods installation -fn_mods_available(){ - # First, reset variables - compatiblemodslist=() - availablemodscommands=() - modprettynamemaxlength="0" - modsitemaxlength="0" - moddescriptionmaxlength="0" - modcommandmaxlength="0" - # Find compatible games - # Find separators through the global array - for ((index="0"; index <= ${#mods_global_array[@]}; index++)); do - # If current value is a separator; then - if [ "${mods_global_array[index]}" == "${modseparator}" ]; then - # Set mod variables - fn_mod_info - # Test if game is compatible - fn_mod_compatible_test - # If game is compatible - if [ "${modcompatibility}" == "1" ]; then - # Put it into the list to display to the user - compatiblemodslist+=( "${modprettyname}" "${modcommand}" "${modsite}" "${moddescription}" ) - # Keep available commands in an array - availablemodscommands+=( "${modcommand}" ) - fi - fi - done -} - -# Output available mods in a nice way to the user -fn_mods_show_available(){ - # Set and reset vars - compatiblemodslistindex=0 - spaces=" " - # As long as we're within index values - while [ "${compatiblemodslistindex}" -lt "${#compatiblemodslist[@]}" ]; do - # Set values for convenience - displayedmodname="${compatiblemodslist[compatiblemodslistindex]}" - displayedmodcommand="${compatiblemodslist[compatiblemodslistindex+1]}" - displayedmodsite="${compatiblemodslist[compatiblemodslistindex+2]}" - displayedmoddescription="${compatiblemodslist[compatiblemodslistindex+3]}" - # Output mods to the user - echo -e "\e[1m${displayedmodname}\e[0m - ${displayedmoddescription} - ${displayedmodsite}" - echo -e " * \e[36m${displayedmodcommand}\e[0m" - # Increment index from the amount of values we just displayed - let "compatiblemodslistindex+=4" - done - # If no mods are found - if [ -z "${compatiblemodslist}" ]; then - fn_print_fail "No mods are currently available for ${gamename}." - core_exit.sh - fi -} - -# Get details of a mod any (relevant and unique, such as full mod name or install command) value -fn_mod_get_info_from_command(){ - # Variable to know when job is done - modinfocommand="0" - # Find entry in global array - for ((index=0; index <= ${#mods_global_array[@]}; index++)); do - # When entry is found - if [ "${mods_global_array[index]}" == "${currentmod}" ]; then - # Go back to the previous "MOD" separator - for ((index=index; index <= ${#mods_global_array[@]}; index--)); do - # When "MOD" is found - if [ "${mods_global_array[index]}" == "MOD" ]; then - # Get info - fn_mod_info - modinfocommand="1" - break - fi - done - fi - # Exit the loop if job is done - if [ "${modinfocommand}" == "1" ]; then - break - fi - done -} - -fn_gsm_requirements fn_mods_scrape_urls -fn_mods_info -fn_mods_available