diff --git a/audiogame-manager.sh b/audiogame-manager.sh index 33fa745..31f9e50 100755 --- a/audiogame-manager.sh +++ b/audiogame-manager.sh @@ -148,71 +148,92 @@ EOF checklist() { declare -a errorList - echo "Checking your system..." - echo + declare -a packageList + if [[ $# -eq 0 ]]; then + echo "Checking your system..." + echo + fi if command -v wine &> /dev/null ; then - echo "Wine is installed." + [[ $# -eq 0 ]] && echo "Wine is installed." else errorList+=("Critical: Wine is not installed. You will not be able to play any games.") fi + packageList+=("wine") if command -v winetricks &> /dev/null ; then - echo "Winetricks is installed." + [[ $# -eq 0 ]] && echo "Winetricks is installed." else errorList+=("Critical: Winetricks is not installed. This means wine cannot be configured, dependancies cannot be installed, and only self-voicing games have any chance of working.") fi + packageList+=("winetricks") if command -v wget &> /dev/null ; then - echo "Wget is installed." + [[ $# -eq 0 ]] && echo "Wget is installed." else errorList+=("Critical: Wget is not installed. You will not be able to install any games.") fi + packageList+=("wget") if command -v dialog &> /dev/null ; then - echo "Dialog is installed." + [[ $# -eq 0 ]] && echo "Dialog is installed." else errorList+=("Critical: Dialog is not installed. You will not be able to install, launch, or remove any games.") fi + packageList+=("dialog") for i in 7z cabextract unzip xz ; do if command -v $i &> /dev/null ; then - echo "${i^} is installed." + [[ $# -eq 0 ]] && echo "${i^} is installed." else errorList+=("Critical: ${i^} is not installed. You will not be able to install some games or their components.") fi + packageList+=("$i") done if command -v gawk &> /dev/null ; then - echo "Gawk is installed." + [[ $# -eq 0 ]] && echo "Gawk is installed." else errorList+=("Warning: gawk is not installed. Game removal with -r will not work.") fi + packageList+=("gawk") if command -v ocrdesktop &> /dev/null ; then - echo "Ocrdesktop is installed." + [[ $# -eq 0 ]] && echo "Ocrdesktop is installed." else errorList+=("Warning: ocrdesktop is not installed. It can help if the installer gets stuck to figure out what is happening.") fi + packageList+=("ocrdesktop") if command -v qjoypad &> /dev/null ; then - echo "Qjoypad is installed." + [[ $# -eq 0 ]] && echo "Qjoypad is installed." else errorList+=("Warning: qjoypad is not installed. Qjoypad allows you to play keyboard only games with a gamepad.") fi + packageList+=("qjoypad") if command -v unix2dos &> /dev/null ; then - echo "Dos2unix is installed." + [[ $# -eq 0 ]] && echo "Dos2unix is installed." else errorList+=("Warning: unix2dos is not installed. Some games need a configuration file in dos format before they will run.") fi + packageList+=("unix2dos") if command -v w3m &> /dev/null ; then - echo "W3m is installed." + [[ $# -eq 0 ]] && echo "W3m is installed." else errorList+=("Warning: w3m is not installed. W3m is used to view game documentation.") fi + packageList+=("w3m") if command -v xclip &> /dev/null ; then - echo "Xclip is installed." + [[ $# -eq 0 ]] && echo "Xclip is installed." else errorList+=("Warning: Xclip is not installed. Some games may not speak or register properly.") fi + packageList+=("xclip") if command -v xdotool &> /dev/null ; then - echo "Xdotool is installed." + [[ $# -eq 0 ]] && echo "Xdotool is installed." else errorList+=("Warning: Xdotool is not installed. Some installers may not work or may need manual intervention.") fi + packageList+=("xdotool") # Show the results + if [[ $# -ne 0 ]]; then + for i in "${packageList[@]}" ; do + echo "$i" + done | sort + exit 0 + fi if [[ ${#errorList[@]} -eq 0 ]]; then echo "No problems found, you are good to go." exit 0 @@ -250,6 +271,8 @@ download() { for i in "${source[@]}" ; do local dest="${i##*/}" dest="${dest//%20/ }" + # Remove the destination file if it is empty. + test -s "${cache}/${dest}" || rm -f "${cache}/${dest}" 2> /dev/null # Skip if the item is in cache. test -e "${cache}/${dest}" && continue if ! wget -4 -O "${cache}/${dest}" "${i}" ; then @@ -530,8 +553,6 @@ game_launcher() { wine "$winePath\\$wineExec" exit 0 fi - # Work around possible wrong path for start.exe - [[ -e "${WINEPREFIX}/drive_c/windows/system32/start.exe" ]] || ln -sr "${WINEPREFIX}/drive_c/windows/command/start.exe" "${WINEPREFIX}/drive_c/windows/system32/start.exe" if [[ -d "${WINEPREFIX}/drive_c/windows/syswow64" ]]; then wine64 start /realtime /d "${winePath}" "$wineExec" else @@ -621,7 +642,7 @@ gameList=( "Finger Panic" "Fuck That Bird" "GMA Tank Commander" - "Golden Crayon" + #"Golden Crayon" "Hammer of Glory" "Hunter" "Insect Therapy" @@ -645,12 +666,14 @@ gameList=( "Perilous Hearts" "Pontes Kickups!" "Q9" + "Revenge of the Undead" "Rhythm Rage" #"River raiders" "RS Games" "Run For Your Life" #"Sammy Center" "Sequence Storm" + #"Shades of Doom 1.2" "Shades of Doom" #"Silver Dollar" "Slender Lost Vision" @@ -693,6 +716,7 @@ declare -A command=( [L]="Display license information." [l:]="Launch given game without interactive audiogame-manager menu specified by its wine bottle." [N]="No cache, delete the installer after it has been extracted." + [P]="Print a list of packages required by audiogame-manager." [r]="Remove a game. This will delete all game data." ) @@ -716,6 +740,7 @@ while getopts "${args}" i ; do L) license;; l) game_launcher "${OPTARG}";; N) noCache="true";; + P) checklist quiet;; r) game_removal;; esac done @@ -1181,6 +1206,14 @@ EOF wine "${cache}/q9_english_installer.exe" /silent add_launcher "c:\Program Files\Q9 Action Game\q9.exe" ;; + "Revenge of the Undead") + export winVer="win7" + install_wine_bottle speechsdk + download "https://ims-productions.com/downloads/rotu.zip" + unzip -d "$WINEPREFIX/drive_c/Program Files/revenge of the undead" "${cache}/rotu.zip" + find "${WINEPREFIX}" -type f -name "nvdaControllerClient32.dll" -exec rm -fv "{}" \; + add_launcher "c:\Program Files\revenge of the undead\rotu.exe" + ;; "Rhythm Rage") export winVer="win7" install_wine_bottle speechsdk @@ -1238,6 +1271,12 @@ EOF wget -O "$WINEPREFIX/drive_c/Program Files/sequence-storm/settings.json" "https://stormgames.wolfe.casa/downloads/sequencestorm-settings.json" add_launcher "c:\Program Files\sequence-storm\SequenceStorm.exe" ;; + "Shades of Doom 1.2") + install_wine_bottle vb6run dx8vb speechsdk + download "http://gmagames.com/sod1208.exe" + wine "${cache}/sod1208.exe" /sp- /verysilent + add_launcher "c:\Program Files\Shades of Doom 1.2\sod.exe" + ;; "Shades of Doom") export winVer="win7" install_wine_bottle vb6run dx8vb speechsdk diff --git a/game-scripts/revenge-of-the-undead-update.sh b/game-scripts/revenge-of-the-undead-update.sh new file mode 100755 index 0000000..90db87a --- /dev/null +++ b/game-scripts/revenge-of-the-undead-update.sh @@ -0,0 +1,49 @@ +#!/usr/bin/env bash +# +# âe contents of this file are subject to the Common Public Attribution +# License Version 1.0 (the âcenseâ you may not use this file except in +# compliance with the License. You may obtain a copy of the License at +# https://opensource.org/licenses/CPAL-1.0. The License is based on the Mozilla Public License Version +# 1.1 but Sections 14 and 15 have been added to cover use of software over a +# computer network and provide for limited attribution for the Original +# Developer. In addition, Exhibit A has been modified to be consistent with +# Exhibit B. +# +# Software distributed under the License is distributed on an â ISâasis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is audiogame manager. +# +# The Original Developer is not the Initial Developer and is . If +# left blank, the Original Developer is the Initial Developer. +# +# The Initial Developer of the Original Code is Billy "Storm Dragon" Wolfe. All portions of +# the code written by Billy Wolfe are Copyright (c) 2020. All Rights +# Reserved. +# +# Contributor Michael Taboada. +# +# Contributor Jeremiah Ticket. +# +# Attribution Copyright Notice: Audiogame manager copyright 2020 Storm Dragon. All rights reserved. +# +# Attribution Phrase (not exceeding 10 words): A Stormux project +# +# Attribution URL: https://stormgames.wolfe.casa +# +# Graphic Image as provided in the Covered Code, if any. +# +# Display of Attribution Information is required in Larger +# Works which are defined in the CPAL as a work which combines Covered Code +# or portions thereof with code not governed by the terms of the CPAL. + +cache="${XDG_CONFIG_HOME:-$HOME/.config}/storm-games/audiogame-manager/cache" +url="https://ims-productions.com/downloads/rotu.zip" +(rm -v "${cache}/rotu.zip" +wget -O "${cache}/rotu.zip" "$url" || exit 1 +unzip -od "$HOME/.local/wine/revenge-of-the-undead/drive_c/Program Files/revenge of the undead" "${cache}/rotu.zip" +find "$HOME/.local/wine/revenge-of-the-undead" -type f -name 'nvdaControllerClient32.dll' -exec rm -fv {} \; ) | dialog --progressbox "updating Revenge of the undead, please wait..." -1 -1 + +exit 0