Compare commits
69 Commits
testing
...
54e3ef8190
Author | SHA1 | Date | |
---|---|---|---|
|
54e3ef8190 | ||
|
2472ea640a | ||
|
43005a75b6 | ||
|
7359be180b | ||
|
fbba315e1b | ||
|
6b69da95c0 | ||
|
22e4f89a06 | ||
|
50bb4a5383 | ||
|
c5d88f5215 | ||
|
8b7704167a | ||
|
f2cdcaa62a | ||
|
7bd0bb60f4 | ||
|
30803d6066 | ||
|
90d64278aa | ||
|
620b8af135 | ||
|
e86ddd7935 | ||
|
4cce555b7d | ||
|
fa75ba31ca | ||
|
11139ce376 | ||
|
10f4871bee | ||
|
ace9f56ae9 | ||
|
b290387fa0 | ||
|
2b436df45d | ||
|
e091ff036b | ||
|
4975822ce1 | ||
|
e0d9a9564d | ||
|
226c080cd0 | ||
|
6daad63de4 | ||
|
e133f7d318 | ||
|
fe8135ba96 | ||
|
054d0b2d5e | ||
|
7b57f8c8d2 | ||
|
f5b8b26c01 | ||
|
250498706d | ||
|
6b9428d2e4 | ||
|
18a30297e8 | ||
|
4f206e13cc | ||
|
6cfdf58e68 | ||
|
f7623868fc | ||
|
8ff0a56874 | ||
|
4cb854b881 | ||
|
7052aefbb0 | ||
|
fcce6243bf | ||
|
bdeef5b367 | ||
|
017f823544 | ||
|
1759661f34 | ||
|
a3d5fd5b6a | ||
|
61cf058921 | ||
|
78a037a6b1 | ||
|
6a4464d692 | ||
|
26e53ee2c3 | ||
|
8c2e37e135 | ||
|
1bffc6f244 | ||
|
38a64cdb64 | ||
|
609edfe111 | ||
|
881498ea47 | ||
|
9f42469b89 | ||
|
8a17939f3c | ||
|
b5fe20eb2d | ||
|
793efc694b | ||
|
b7ff93c740 | ||
|
fd33349864 | ||
|
e0b86e0e3c | ||
|
c3a7e39def | ||
|
d9489819b7 | ||
|
eae85b0299 | ||
|
9532eef142 | ||
|
14093c80ca | ||
|
f46a4efa88 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,3 +1,2 @@
|
||||
*.x.c
|
||||
*.x
|
||||
music/
|
||||
|
@@ -1,185 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
get_bottle() {
|
||||
# Simple rule: wine64 for everything, wine32 only for speech APIs
|
||||
local architecture="${1:-win64}"
|
||||
architecture="${architecture/win/}"
|
||||
export WINEPREFIX="$HOME/.local/wine${architecture}"
|
||||
|
||||
# Set wine executables based on architecture - FOR LAUNCHER
|
||||
if [[ "$architecture" == "32" ]] && [[ -n "$wine32" ]]; then
|
||||
# Set environment variables for winetricks compatibility
|
||||
export WINE="$wine32"
|
||||
export WINESERVER="$wine32server"
|
||||
# Also prepend to PATH for regular wine calls
|
||||
export PATH="${wine32%/*}:$PATH"
|
||||
# Keep WINEARCH for compatibility
|
||||
echo "DEBUG: Using managed wine32 for LAUNCHER (WINE=$WINE, PATH updated)"
|
||||
else
|
||||
# Clear wine variables for system wine but preserve WINEARCH if set
|
||||
unset WINE WINESERVER
|
||||
echo "DEBUG: Using system wine for LAUNCHER (architecture $architecture)"
|
||||
fi
|
||||
}
|
||||
|
||||
# Set wine environment for installation (called from install_wine_bottle)
|
||||
set_wine_env() {
|
||||
local architecture="$1"
|
||||
if [[ "$architecture" == "32" ]] && [[ -n "$wine32" ]]; then
|
||||
export WINE="$wine32"
|
||||
export WINESERVER="$wine32server"
|
||||
export PATH="${wine32%/*}:$PATH"
|
||||
# Don't unset WINEARCH - preserve it for proper architecture selection
|
||||
echo "DEBUG: Set wine32 environment for INSTALLATION (WINE=$WINE, WINEARCH=$WINEARCH)"
|
||||
else
|
||||
unset WINE WINESERVER
|
||||
# Don't unset WINEARCH - preserve it for proper architecture selection
|
||||
echo "DEBUG: Set system wine environment for INSTALLATION (WINEARCH=$WINEARCH)"
|
||||
fi
|
||||
}
|
||||
|
||||
# Note: install_wine function removed - we now use system wine with simplified bottle management
|
||||
|
||||
winetricks() {
|
||||
# Report used packages to the winetricks maintainer so he knows they are being used.
|
||||
if ! [[ -e "${XDG_CACHE_HOME:-$HOME/.cache}/winetricks/track_usage" ]]; then
|
||||
mkdir -p "${XDG_CACHE_HOME:-$HOME/.cache}/winetricks/"
|
||||
echo "1" > "${XDG_CACHE_HOME:-$HOME/.cache}/winetricks/track_usage"
|
||||
fi
|
||||
# Temporary work around for winetricks git bugs. Requires winetricks be installed from package manager.
|
||||
/usr/bin/winetricks "$@"
|
||||
return
|
||||
# Download or update agm's copy of winetricks
|
||||
if [[ ! -e "${winetricksPath}/winetricks" ]]; then
|
||||
checkWinetricksUpdate="true"
|
||||
download "https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks"
|
||||
mv "${cache}/winetricks" "${winetricksPath}"
|
||||
chmod 755 "${winetricksPath}/winetricks"
|
||||
else
|
||||
if [[ "$checkWinetricksUpdate" != "true" ]]; then
|
||||
checkWinetricksUpdate="true"
|
||||
${winetricksPath}/winetricks --self-update
|
||||
fi
|
||||
fi
|
||||
# Run the requested winetricks parameters
|
||||
if command -v FEXLoader &> /dev/null ; then
|
||||
WINE="" FEXLoader -- ${winetricksPath}/winetricks "$@"
|
||||
else
|
||||
${winetricksPath}/winetricks "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
install_rhvoice() {
|
||||
if [[ -d "${WINEPREFIX}/drive_c/Program Files/Olga Yakovleva/" ]]; then
|
||||
return
|
||||
fi
|
||||
if [[ "$norh" == "true" ]]; then
|
||||
# Try to prevent the user from breaking speech
|
||||
# Also useful for games that do not work with RHVoice
|
||||
if [[ "${defaultVoice}" == "RHVoice" ]]; then
|
||||
unset defaultVoice
|
||||
fi
|
||||
return
|
||||
fi
|
||||
declare -A RHVoice=(
|
||||
[alan]="https://github.com/RHVoice/alan-eng/releases/download/4.0/RHVoice-voice-English-Alan-v4.0.2016.21-setup.exe"
|
||||
[bdl]="https://github.com/RHVoice/bdl-eng/releases/download/4.1/RHVoice-voice-English-Bdl-v4.1.2016.21-setup.exe"
|
||||
[clb]="https://github.com/RHVoice/clb-eng/releases/download/4.0/RHVoice-voice-English-Clb-v4.0.2016.21-setup.exe"
|
||||
[lyubov]="https://rhvoice.eu-central-1.linodeobjects.com/RHVoice-voice-English-Lyubov-v4.0.2008.15-setup.exe"
|
||||
[slt]="https://github.com/RHVoice/slt-eng/releases/download/4.1/RHVoice-voice-English-Slt-v4.1.2016.21-setup.exe"
|
||||
)
|
||||
voiceName="${voiceName:-bdl}"
|
||||
voiceName="${voiceName,,}"
|
||||
if [[ "${RHVoice[${voiceName}]}" == "" ]]; then
|
||||
echo "Invalid RHVoice name specified, defaulting to Bdl."
|
||||
voiceName="bdl"
|
||||
fi
|
||||
local voiceFile="${RHVoice[${voiceName}]##*/}"
|
||||
download "${RHVoice[${voiceName}]}"
|
||||
winetricks -q win8 | agm_progressbox "RHVoice Setup" "Preparing Windows environment for RHVoice..."
|
||||
echo "Installing RHVoice ${voiceName^}..."
|
||||
wine "${cache}/${voiceFile}" &
|
||||
sleep 20 | agm_progressbox "RHVoice Setup" "Installing RHVoice ${voiceName^} voice..."
|
||||
wineserver -k
|
||||
}
|
||||
|
||||
install_wine_bottle() {
|
||||
# Simplified - bottles are now pre-created with dependencies
|
||||
# Just set up the wine environment for game installation
|
||||
|
||||
# Determine architecture from WINEARCH or speechsdk dependency
|
||||
# Preserve existing WINEARCH if already set
|
||||
if [[ -z "$WINEARCH" ]]; then
|
||||
if [[ "$*" =~ speechsdk ]]; then
|
||||
export WINEARCH="win32"
|
||||
else
|
||||
export WINEARCH="win64"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Set architecture for WINEPREFIX path
|
||||
local architecture
|
||||
if [[ "$WINEARCH" == "win32" ]]; then
|
||||
architecture=32
|
||||
else
|
||||
architecture=64
|
||||
fi
|
||||
|
||||
export WINEPREFIX="$HOME/.local/wine${architecture}"
|
||||
|
||||
# Set wine environment
|
||||
set_wine_env "$architecture"
|
||||
|
||||
echo "Using pre-configured wine${architecture} bottle at $WINEPREFIX"
|
||||
|
||||
# Install any additional game-specific dependencies if specified
|
||||
if [[ $# -gt 0 ]]; then
|
||||
# Filter out dependencies that are already installed in bottle creation
|
||||
local depsToInstall=()
|
||||
local alreadyInstalled="speechsdk corefonts isolate_home"
|
||||
|
||||
for dep in "$@"; do
|
||||
# Skip dependencies already installed during bottle creation
|
||||
if [[ ! " $alreadyInstalled " =~ " $dep " ]] && [[ ! "$dep" =~ ^win(7|8|10)$ ]]; then
|
||||
depsToInstall+=("$dep")
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ ${#depsToInstall[@]} -gt 0 ]]; then
|
||||
echo "Installing additional dependencies: ${depsToInstall[*]}"
|
||||
{
|
||||
env WINE="$WINE" WINESERVER="$WINESERVER" DISPLAY="${DISPLAY:-:0}" winetricks -q isolate_home "${depsToInstall[@]}" "${winVer:-win7}" ${winetricksSettings}
|
||||
} | agm_progressbox "Wine Setup" "Installing additional dependencies..."
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
add_launcher() {
|
||||
# Determine architecture from WINEPREFIX path instead of WINEARCH variable
|
||||
local architecture="win64" # default
|
||||
if [[ "$WINEPREFIX" =~ wine32 ]]; then
|
||||
architecture="win32"
|
||||
fi
|
||||
local launchSettings="${architecture}|${1}|${game}"
|
||||
shift
|
||||
while [[ $# -gt 0 ]]; do
|
||||
launchSettings+="|$1"
|
||||
shift
|
||||
done
|
||||
if ! grep -F -q -x "${launchSettings}" "${configFile}" 2> /dev/null ; then
|
||||
echo "${launchSettings}" >> "${configFile}"
|
||||
sort -o "${configFile}" "${configFile}"
|
||||
# Remove .lnk files because they don't work.
|
||||
find ~/Desktop -type f -iname '*.lnk' -exec bash -c '
|
||||
for f ; do
|
||||
mimeType="$(file -b "$f")"
|
||||
mimeType="${mimeType%%,*}"
|
||||
if [[ "$mimeType" == "MS Windows shortcut" ]]; then
|
||||
rm -v "$f"
|
||||
fi
|
||||
done' _ {} +
|
||||
if [[ "${noCache}" == "true" ]]; then
|
||||
rm -f "${cache}/${1##*\\}"
|
||||
fi
|
||||
fi
|
||||
}
|
@@ -1,109 +0,0 @@
|
||||
declare -a errorList
|
||||
declare -a packageList
|
||||
if [[ $# -eq 0 ]]; then
|
||||
echo "Checking your system..."
|
||||
echo
|
||||
fi
|
||||
if command -v wine &> /dev/null ; then
|
||||
[[ $# -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 curl &> /dev/null ; then
|
||||
[[ $# -eq 0 ]] && echo "Curl is installed."
|
||||
else
|
||||
errorList+=("Critical: Curl is not installed. Critical functionality will not work.")
|
||||
fi
|
||||
packageList+=("curl")
|
||||
if command -v dialog &> /dev/null ; then
|
||||
[[ $# -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
|
||||
[[ $# -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
|
||||
[[ $# -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
|
||||
[[ $# -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
|
||||
[[ $# -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 sox &> /dev/null ; then
|
||||
[[ $# -eq 0 ]] && echo "Sox is installed."
|
||||
else
|
||||
errorList+=("Warning: Sox is not installed. Audio will not work.")
|
||||
fi
|
||||
packageList+=("sox")
|
||||
if command -v trans &> /dev/null ; then
|
||||
[[ $# -eq 0 ]] && echo "Translate-shell is installed."
|
||||
else
|
||||
errorList+=("Warning: translate-shell is not installed. Games that require translation will not be translated.")
|
||||
fi
|
||||
packageList+=("translate-shell")
|
||||
if command -v sqlite3 &> /dev/null ; then
|
||||
[[ $# -eq 0 ]] && echo "Sqlite3 is installed."
|
||||
else
|
||||
errorList+=("Warning: sqlite is not installed. Required for games that need to be translated.")
|
||||
fi
|
||||
if command -v perl &> /dev/null ; then
|
||||
[[ $# -eq 0 ]] && echo "Perl is installed."
|
||||
else
|
||||
errorList+=("Warning: perl is not installed. Required for games that need to be translated.")
|
||||
fi
|
||||
packageList+=("perl")
|
||||
packageList+=("sqlite")
|
||||
if command -v w3m &> /dev/null ; then
|
||||
[[ $# -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
|
||||
[[ $# -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
|
||||
[[ $# -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
|
||||
fi
|
||||
echo "Errors detected, here is a list along with the severity."
|
||||
echo "Note that errors marked critical mean that you will not be able to install and play games until they are resolved."
|
||||
for i in "${errorList[@]}" ; do
|
||||
echo "$i"
|
||||
done
|
||||
exit 0
|
@@ -1,35 +0,0 @@
|
||||
# Create desktop launcher file
|
||||
desktop_launcher() {
|
||||
local desktopFile="${HOME}/audiogame-manager.desktop"
|
||||
if [[ -e "${desktopFile}" ]]; then
|
||||
echo "the file ${desktopFile} exists. Cannot create the launcher."
|
||||
exit 1
|
||||
fi
|
||||
local dotDesktop
|
||||
local terminal
|
||||
# Try to find an accessible terminal
|
||||
for i in mate-terminal lxterminal terminator gnome-terminal ; do
|
||||
if command -v $i &> /dev/null ; then
|
||||
terminal="$i"
|
||||
break
|
||||
fi
|
||||
done
|
||||
dotDesktop=('[Desktop Entry]'
|
||||
'Name=Audiogame manager'
|
||||
'GenericName=Audiogame Manager'
|
||||
'Comment=Play audio games'
|
||||
"Exec=${terminal} -t \"Audiogame Manager\" -e \"/usr/bin/bash -c 'nohup $(readlink -e "$0") 2> /dev/null'\""
|
||||
'Terminal=false'
|
||||
'Type=Application'
|
||||
'StartupNotify=false'
|
||||
'Keywords=game;'
|
||||
'Categories=Game;'
|
||||
'Version=1.0')
|
||||
for i in "${dotDesktop[@]}" ; do
|
||||
echo "$i" >> "${desktopFile}"
|
||||
done
|
||||
desktop-file-install --dir "${HOME}/.local/share/applications" -m 755 "${desktopFile}"
|
||||
xdg-desktop-icon install ~/.local/share/applications/audiogame-manager.desktop
|
||||
rm "${desktopFile}"
|
||||
exit 0
|
||||
}
|
@@ -1,442 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Dialog interface wrapper for audiogame-manager
|
||||
# Automatically switches between dialog (console) and yad (GUI) based on DISPLAY environment
|
||||
# This provides better accessibility for GUI environments while maintaining console functionality
|
||||
|
||||
# Note: dialogType is now detected in the main script before DISPLAY is modified
|
||||
# This ensures console detection works correctly when AGM sets DISPLAY=":0"
|
||||
# If dialogType is not set (e.g., when called from standalone scripts), detect it
|
||||
if [[ -z "$dialogType" ]]; then
|
||||
if [[ -z "$DISPLAY" ]]; then
|
||||
dialogType="dialog"
|
||||
else
|
||||
dialogType="yad"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Wrapper function for menu selection
|
||||
# Usage: agm_menu "title" "backtitle" "text" option1 "description1" option2 "description2" ...
|
||||
agm_menu() {
|
||||
local title="$1"
|
||||
local backTitle="$2"
|
||||
local text="$3"
|
||||
shift 3
|
||||
|
||||
if [[ "$dialogType" == "yad" ]]; then
|
||||
# Build yad list format: Display only, then map back to value
|
||||
local yadList=""
|
||||
declare -A valueMap
|
||||
while [[ $# -gt 0 ]]; do
|
||||
local option="$1"
|
||||
local description="$2"
|
||||
valueMap["$description"]="$option"
|
||||
if [[ -n "$yadList" ]]; then
|
||||
yadList="$yadList\n"
|
||||
fi
|
||||
yadList="${yadList}${description}"
|
||||
shift 2
|
||||
done
|
||||
|
||||
local selectedDescription
|
||||
selectedDescription=$(echo -e "$yadList" | yad --list \
|
||||
--title="$title" \
|
||||
--text="$text" \
|
||||
--column="Option" \
|
||||
--no-headers \
|
||||
--selectable-labels \
|
||||
--search-column=1 \
|
||||
--height=400 \
|
||||
--width=600)
|
||||
|
||||
# Strip trailing pipes and return the mapped value
|
||||
if [[ -n "$selectedDescription" ]]; then
|
||||
selectedDescription="${selectedDescription%|}"
|
||||
echo "${valueMap["$selectedDescription"]}"
|
||||
fi
|
||||
else
|
||||
# Build dialog menu format with mapping (same approach as yad)
|
||||
local dialogArgs=()
|
||||
declare -A valueMap
|
||||
while [[ $# -gt 0 ]]; do
|
||||
local option="$1"
|
||||
local description="$2"
|
||||
valueMap["$description"]="$option"
|
||||
dialogArgs+=("$description" "$description")
|
||||
shift 2
|
||||
done
|
||||
|
||||
local selectedDescription
|
||||
selectedDescription=$(dialog --backtitle "$backTitle" \
|
||||
--title "$title" \
|
||||
--no-tags \
|
||||
--menu "$text" 0 0 0 \
|
||||
"${dialogArgs[@]}" \
|
||||
--stdout)
|
||||
|
||||
# Return the mapped value
|
||||
if [[ -n "$selectedDescription" ]]; then
|
||||
echo "${valueMap["$selectedDescription"]}"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Wrapper function for checklist selection
|
||||
# Usage: agm_checklist "title" "backtitle" "text" option1 "description1" "status1" option2 "description2" "status2" ...
|
||||
agm_checklist() {
|
||||
local title="$1"
|
||||
local backTitle="$2"
|
||||
local text="$3"
|
||||
shift 3
|
||||
|
||||
if [[ "$dialogType" == "yad" ]]; then
|
||||
local yadList=""
|
||||
while [[ $# -gt 0 ]]; do
|
||||
local option="$1"
|
||||
local description="$2"
|
||||
local status="$3"
|
||||
local checked="FALSE"
|
||||
[[ "$status" == "on" ]] && checked="TRUE"
|
||||
|
||||
if [[ -n "$yadList" ]]; then
|
||||
yadList="$yadList\n"
|
||||
fi
|
||||
yadList="${yadList}${checked}|${description}|${option}"
|
||||
shift 3
|
||||
done
|
||||
|
||||
echo -e "$yadList" | yad --list \
|
||||
--title="$title" \
|
||||
--text="$text" \
|
||||
--checklist \
|
||||
--column="Select:CHK" \
|
||||
--column="Option" \
|
||||
--column="Value:HD" \
|
||||
--hide-column=3 \
|
||||
--print-column=3 \
|
||||
--no-headers \
|
||||
--selectable-labels \
|
||||
--height=400 \
|
||||
--width=600 \
|
||||
--separator=" "
|
||||
else
|
||||
local dialogArgs=()
|
||||
while [[ $# -gt 0 ]]; do
|
||||
dialogArgs+=("$1" "$2" "$3")
|
||||
shift 3
|
||||
done
|
||||
|
||||
dialog --backtitle "$backTitle" \
|
||||
--title "$title" \
|
||||
--checklist "$text" 0 0 0 \
|
||||
"${dialogArgs[@]}" \
|
||||
--stdout
|
||||
fi
|
||||
}
|
||||
|
||||
# Wrapper function for input dialog
|
||||
# Usage: agm_inputbox "title" "backtitle" "text" "default_value"
|
||||
agm_inputbox() {
|
||||
local title="$1"
|
||||
local backTitle="$2"
|
||||
local text="$3"
|
||||
local defaultValue="$4"
|
||||
|
||||
if [[ "$dialogType" == "yad" ]]; then
|
||||
yad --entry \
|
||||
--title="$title" \
|
||||
--text="$text" \
|
||||
--entry-text="$defaultValue" \
|
||||
--selectable-labels \
|
||||
--width=400
|
||||
else
|
||||
dialog --backtitle "$backTitle" \
|
||||
--title "$title" \
|
||||
--inputbox "$text" 0 0 "$defaultValue" \
|
||||
--stdout
|
||||
fi
|
||||
}
|
||||
|
||||
# Wrapper function for message box
|
||||
# Usage: agm_msgbox "title" "backtitle" "text"
|
||||
agm_msgbox() {
|
||||
local title="$1"
|
||||
local backTitle="$2"
|
||||
local text="$3"
|
||||
|
||||
if [[ "$dialogType" == "yad" ]]; then
|
||||
echo -e "$text" | yad --text-info \
|
||||
--title="$title" \
|
||||
--show-cursor \
|
||||
--button="OK:0" \
|
||||
--width=600 \
|
||||
--height=400
|
||||
else
|
||||
dialog --backtitle "$backTitle" \
|
||||
--title "$title" \
|
||||
--msgbox "$text" 0 0
|
||||
fi
|
||||
}
|
||||
|
||||
# Wrapper function for yes/no dialog
|
||||
# Usage: agm_yesno "title" "backtitle" "text"
|
||||
agm_yesno() {
|
||||
local title="$1"
|
||||
local backTitle="$2"
|
||||
local text="$3"
|
||||
|
||||
if [[ "$dialogType" == "yad" ]]; then
|
||||
echo -e "$text" | yad --text-info \
|
||||
--title="$title" \
|
||||
--show-cursor \
|
||||
--button="Yes:0" \
|
||||
--button="No:1" \
|
||||
--width=600 \
|
||||
--height=400
|
||||
else
|
||||
dialog --backtitle "$backTitle" \
|
||||
--title "$title" \
|
||||
--yesno "$text" 0 0
|
||||
fi
|
||||
}
|
||||
|
||||
# Wrapper function for info box (non-blocking message)
|
||||
# Usage: agm_infobox "title" "backtitle" "text"
|
||||
agm_infobox() {
|
||||
local title="$1"
|
||||
local backTitle="$2"
|
||||
local text="$3"
|
||||
|
||||
if [[ "$dialogType" == "yad" ]]; then
|
||||
# For yad, we'll use a notification since infobox is non-blocking
|
||||
yad --notification \
|
||||
--text="$text" \
|
||||
--timeout=3
|
||||
else
|
||||
dialog --backtitle "$backTitle" \
|
||||
--title "$title" \
|
||||
--infobox "$text" 0 0
|
||||
fi
|
||||
}
|
||||
|
||||
# Wrapper function for progress box
|
||||
# Usage: command | agm_progressbox "title" "text"
|
||||
agm_progressbox() {
|
||||
local title="$1"
|
||||
local text="$2"
|
||||
|
||||
if [[ "$dialogType" == "yad" ]]; then
|
||||
# Start audio feedback for accessibility
|
||||
local beepPid
|
||||
local yadPid
|
||||
|
||||
# Cleanup function for traps
|
||||
cleanup_progress() {
|
||||
[[ -n "$beepPid" ]] && kill "$beepPid" 2>/dev/null
|
||||
[[ -n "$yadPid" ]] && kill "$yadPid" 2>/dev/null
|
||||
}
|
||||
|
||||
# Set trap to ensure cleanup on interruption
|
||||
trap cleanup_progress EXIT INT TERM
|
||||
|
||||
if command -v sox >/dev/null 2>&1; then
|
||||
{
|
||||
while true; do
|
||||
# Generate a short, pleasant progress beep (440Hz for 0.1s)
|
||||
sox -q -n -d synth 0.1 sine 440 vol 0.3 2>/dev/null
|
||||
sleep 2 # Beep every 2 seconds
|
||||
done
|
||||
} &
|
||||
beepPid=$!
|
||||
fi
|
||||
|
||||
# Start visual progress dialog with auto-close, redirect stdin to prevent conflicts
|
||||
yad --progress \
|
||||
--title="$title" \
|
||||
--text="$text" \
|
||||
--auto-close \
|
||||
--pulsate \
|
||||
--width=400 \
|
||||
--height=100 </dev/null &
|
||||
yadPid=$!
|
||||
|
||||
# Pass through all input completely unchanged
|
||||
cat
|
||||
|
||||
# Clean up background processes
|
||||
cleanup_progress
|
||||
trap - EXIT INT TERM # Remove traps
|
||||
else
|
||||
dialog --title "$title" \
|
||||
--progressbox "$text" 20 70
|
||||
fi
|
||||
}
|
||||
|
||||
# Simple progress box that just shows the operation is running (no command output)
|
||||
# Usage: command | agm_simple_progressbox "title" "text"
|
||||
agm_simple_progressbox() {
|
||||
local title="$1"
|
||||
local text="$2"
|
||||
|
||||
if [[ "$dialogType" == "yad" ]]; then
|
||||
# Start audio feedback for accessibility
|
||||
local beepPid
|
||||
local yadPid
|
||||
|
||||
# Cleanup function for traps
|
||||
cleanup_simple_progress() {
|
||||
[[ -n "$beepPid" ]] && kill "$beepPid" 2>/dev/null
|
||||
[[ -n "$yadPid" ]] && kill "$yadPid" 2>/dev/null
|
||||
}
|
||||
|
||||
# Set trap to ensure cleanup on interruption
|
||||
trap cleanup_simple_progress EXIT INT TERM
|
||||
|
||||
if command -v sox >/dev/null 2>&1; then
|
||||
{
|
||||
while true; do
|
||||
# Generate a short, pleasant progress beep (440Hz for 0.1s)
|
||||
sox -q -n -d synth 0.1 sine 440 vol 0.3 2>/dev/null
|
||||
sleep 2 # Beep every 2 seconds
|
||||
done
|
||||
} &
|
||||
beepPid=$!
|
||||
fi
|
||||
|
||||
# Show progress dialog with pulsating
|
||||
yad --progress \
|
||||
--title="$title" \
|
||||
--text="$text" \
|
||||
--auto-close \
|
||||
--pulsate \
|
||||
--width=400 \
|
||||
--height=100 &
|
||||
yadPid=$!
|
||||
|
||||
# Read from stdin and discard, but keep dialogs open until command finishes
|
||||
cat > /dev/null
|
||||
|
||||
# Clean up background processes
|
||||
cleanup_simple_progress
|
||||
trap - EXIT INT TERM # Remove traps
|
||||
else
|
||||
dialog --title "$title" \
|
||||
--progressbox "$text" 20 70
|
||||
fi
|
||||
}
|
||||
|
||||
# Alternative status box for simple operations without meaningful progress
|
||||
# Usage: agm_statusbox "title" "text" & statusPid=$!; command; kill $statusPid 2>/dev/null
|
||||
agm_statusbox() {
|
||||
local title="$1"
|
||||
local text="$2"
|
||||
|
||||
if [[ "$dialogType" == "yad" ]]; then
|
||||
# Show a simple status message that screen readers can access
|
||||
yad --form \
|
||||
--title="$title" \
|
||||
--field="$text:LBL" \
|
||||
--selectable-labels \
|
||||
--no-buttons \
|
||||
--timeout=0 \
|
||||
--width=400 \
|
||||
--height=100
|
||||
else
|
||||
# Use infobox for console
|
||||
dialog --title "$title" \
|
||||
--infobox "$text" 5 50
|
||||
fi
|
||||
}
|
||||
|
||||
# Real progress bar with percentage updates (for operations that can report progress)
|
||||
# Usage: agm_progress_with_percent "title" "text"
|
||||
# Then send "percentage" or "#status text" to the returned file descriptor
|
||||
agm_progress_with_percent() {
|
||||
local title="$1"
|
||||
local text="$2"
|
||||
|
||||
if [[ "$dialogType" == "yad" ]]; then
|
||||
# Start audio feedback for accessibility
|
||||
local beepPid
|
||||
local yadPid
|
||||
|
||||
# Cleanup function for traps
|
||||
cleanup_percent_progress() {
|
||||
[[ -n "$beepPid" ]] && kill "$beepPid" 2>/dev/null
|
||||
[[ -n "$yadPid" ]] && kill "$yadPid" 2>/dev/null
|
||||
}
|
||||
|
||||
# Set trap to ensure cleanup on interruption
|
||||
trap cleanup_percent_progress EXIT INT TERM
|
||||
|
||||
if command -v sox >/dev/null 2>&1; then
|
||||
{
|
||||
while true; do
|
||||
# Generate a short, pleasant progress beep (440Hz for 0.1s)
|
||||
sox -q -n -d synth 0.1 sine 440 vol 0.3 2>/dev/null
|
||||
sleep 2 # Beep every 2 seconds
|
||||
done
|
||||
} &
|
||||
beepPid=$!
|
||||
fi
|
||||
|
||||
# Create a true progress dialog that accepts percentage updates with tee for cleanup
|
||||
{
|
||||
cat
|
||||
cleanup_percent_progress
|
||||
trap - EXIT INT TERM
|
||||
} | yad --progress \
|
||||
--title="$title" \
|
||||
--text="$text" \
|
||||
--auto-close \
|
||||
--width=400 \
|
||||
--height=150
|
||||
else
|
||||
# For dialog, we'll simulate with a gauge
|
||||
dialog --title "$title" \
|
||||
--gauge "$text" 6 50 0
|
||||
fi
|
||||
}
|
||||
|
||||
# Wrapper function for file selection
|
||||
# Usage: agm_fselect "title" "backtitle" "default_path"
|
||||
agm_fselect() {
|
||||
local title="$1"
|
||||
local backTitle="$2"
|
||||
local defaultPath="$3"
|
||||
|
||||
if [[ "$dialogType" == "yad" ]]; then
|
||||
yad --file \
|
||||
--title="$title" \
|
||||
--filename="$defaultPath" \
|
||||
--width=600 \
|
||||
--height=400
|
||||
else
|
||||
dialog --backtitle "$backTitle" \
|
||||
--title "$title" \
|
||||
--fselect "$defaultPath" 0 0 \
|
||||
--stdout
|
||||
fi
|
||||
}
|
||||
|
||||
# Wrapper function for directory selection
|
||||
# Usage: agm_dselect "title" "backtitle" "default_path"
|
||||
agm_dselect() {
|
||||
local title="$1"
|
||||
local backTitle="$2"
|
||||
local defaultPath="$3"
|
||||
|
||||
if [[ "$dialogType" == "yad" ]]; then
|
||||
yad --file \
|
||||
--directory \
|
||||
--title="$title" \
|
||||
--filename="$defaultPath" \
|
||||
--width=600 \
|
||||
--height=400
|
||||
else
|
||||
dialog --backtitle "$backTitle" \
|
||||
--title "$title" \
|
||||
--dselect "$defaultPath" 0 0 \
|
||||
--stdout
|
||||
fi
|
||||
}
|
@@ -1,223 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Alerts, for when user needs to read something.
|
||||
alert() {
|
||||
play -qnV0 synth 3 pluck D3 pluck A3 pluck D4 pluck F4 pluck A4 delay 0 .1 .2 .3 .4 remix - chorus 0.9 0.9 38 0.75 0.3 0.5 -t
|
||||
echo
|
||||
agm_msgbox "Alert" "" "Press OK to continue."
|
||||
}
|
||||
|
||||
check_requirements() {
|
||||
# Make sure the minimum of curl, sox, wine, and winetricks are installed or fex-emu on aarch64
|
||||
if [[ "$(uname -m)" == "aarch64" ]]; then
|
||||
minimumDependencies=("FEXLoader")
|
||||
wine="FEXLoader -- /usr/bin/wine"
|
||||
else
|
||||
minimumDependencies=("curl" "sox" "wine")
|
||||
fi
|
||||
for i in "${minimumDependencies[@]}" ; do
|
||||
if ! command -v $i &> /dev/null ; then
|
||||
echo "Please install $i before continuing."
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
return 0
|
||||
}
|
||||
|
||||
clear_cache() {
|
||||
if [[ ! -d "${cache}" ]]; then
|
||||
agm_msgbox "Clear Cache" "" "No cache found at ${cache}."
|
||||
return
|
||||
fi
|
||||
|
||||
if ! agm_yesno "Clear Cache" "" "This will delete all contents of ${cache}. Are you sure you want to continue?"; then
|
||||
return
|
||||
fi
|
||||
|
||||
# All safety checks done. Delete the cache.
|
||||
rm -rfv "${cache}" | agm_progressbox "Clear Cache" "Deleting cache files..."
|
||||
agm_msgbox "Clear Cache" "" "Cache deleted."
|
||||
}
|
||||
|
||||
download() {
|
||||
local source=($@)
|
||||
for i in "${source[@]}" ; do
|
||||
local dest="${i##*/}"
|
||||
dest="${dest//%20/ }"
|
||||
dest="${dest#*\?filename=}"
|
||||
dest="${dest%\?*}"
|
||||
# Remove the destination file if it is empty.
|
||||
[[ -s "${cache}/${dest}" ]] || rm -f "${cache}/${dest}" 2> /dev/null
|
||||
if [[ "${redownload}" == "true" ]] && [[ -e "${cache}/${dest}" ]]; then
|
||||
rm -v "${cache}/${dest}"
|
||||
fi
|
||||
# Skip if the item is in cache.
|
||||
[[ -e "${cache}/${dest}" ]] && continue
|
||||
if [[ "$dialogType" == "yad" ]]; then
|
||||
# Use curl's progress bar with better parsing for yad
|
||||
if ! {
|
||||
curl -L4 -C - --retry 10 --progress-bar --output "${cache}/${dest}" "${i}" 2>&1 | \
|
||||
stdbuf -oL grep -o '[0-9]*%' | \
|
||||
stdbuf -oL sed -u 's/%$//' | \
|
||||
while read -r percent; do
|
||||
echo "$percent"
|
||||
echo "# Downloading $dest - ${percent}%"
|
||||
done
|
||||
} | agm_progress_with_percent "Audio Game Manager" "Downloading \"$dest\"..."; then
|
||||
agm_infobox "Audio Game Manager" "Audio Game Manager" "Could not download \"$dest\". Installation cannot continue."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
# Use the original method for dialog (console)
|
||||
if ! curl -L4 -C - --retry 10 --output "${cache}/${dest}" "${i}" 2>&1 | agm_progressbox "Audio Game Manager" "Downloading \"$dest\"..."; then
|
||||
agm_infobox "Audio Game Manager" "Audio Game Manager" "Could not download \"$dest\". Installation cannot continue."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
local downloadError=1
|
||||
case "${dest##*.}" in
|
||||
"pk3"|"zip")
|
||||
unzip -tq "${cache}/${dest}" | agm_progressbox "Audio Game Manager" "Validating ${dest##*.} file"
|
||||
downloadError=$?
|
||||
;;
|
||||
"7z")
|
||||
7z t "${cache}/${dest}" | agm_progressbox "Audio Game Manager" "Validating 7z file"
|
||||
downloadError=$?
|
||||
;;
|
||||
"exe")
|
||||
# Check if it's a valid Windows executable by looking at the MZ header
|
||||
hexdump -n 2 -v -e '/1 "%02X"' "${cache}/${dest}" | grep -q "4D5A"
|
||||
downloadError=$?
|
||||
;;
|
||||
"wad")
|
||||
if [[ "$(file -b --mime-type "${cache}/${dest}")" != "application/octet-stream" ]]; then
|
||||
downloadError=0
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
# Add HTML check for other file types
|
||||
if file -b "${cache}/${dest}" | grep -q "HTML document" ; then
|
||||
echo "File not found: \"$i\" (HTML document probably 404)"
|
||||
downloadError=1
|
||||
else
|
||||
downloadError=0
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
if [[ $downloadError -ne 0 ]]; then
|
||||
rm -fv "${cache}/${dest}"
|
||||
agm_infobox "Audio Game Manager" "Audio Game Manager" "Error downloading \"${dest}\". Installation cannot continue."
|
||||
alert
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
get_installer() {
|
||||
trap "exit 0" SIGINT
|
||||
# If the file is in cache nothing else needs to be done.
|
||||
if [[ -f "${cache}/$1" ]]; then
|
||||
return
|
||||
fi
|
||||
# Create message for dialog.
|
||||
local message="Make sure $1 is available in either your Downloads or Desktop directory and press enter to continue."
|
||||
if [[ -n "$2" ]]; then
|
||||
message+="\n\nThe last good known URL for $game is:"
|
||||
message+="\n$2"
|
||||
fi
|
||||
if echo "$2" | xclip -selection clipboard 2> /dev/null ; then
|
||||
message+="\n\nThe URL has been copied to the clipboard."
|
||||
fi
|
||||
agm_msgbox "Audiogame Manager" "Audiogame Manager" "$message"
|
||||
# Search the Desktop and Downloads directories for the installation file
|
||||
for i in ~/Downloads ~/Desktop ; do
|
||||
find $i -type f -name "$1" -exec cp -v {} "${cache}/" \;
|
||||
done
|
||||
# If the file is still not available abort.
|
||||
if [[ ! -f "${cache}/$1" ]]; then
|
||||
echo "couldn't find $1. Please download the file and try again."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
get_steam() {
|
||||
# Arguments: $1 id of item for download, $2 url for game
|
||||
trap "exit 0" SIGINT
|
||||
echo "manual intervention required."
|
||||
alert
|
||||
agm_yesno "Audiogame Manager" "Audiogame Manager" "To install the game manually, place files in \"${WINEPREFIX}/drive_c/Program Files/${game}\". Continue with Steam installation?"
|
||||
case $? in
|
||||
0) echo "The next steps will install through steamcmd." ;;
|
||||
1)
|
||||
mkdir -p "${WINEPREFIX}/drive_c/Program Files/${game}"
|
||||
agm_msgbox "Audiogame Manager" "Audiogame Manager" "Place game files in \"${WINEPREFIX}/drive_c/Program Files/${game}\" and press enter to continue."
|
||||
return
|
||||
;;
|
||||
*) exit 0 ;;
|
||||
esac
|
||||
# Check for steamcmd
|
||||
if ! command -v steamcmd &> /dev/null ; then
|
||||
agm_infobox "Audiogame Manager" "Audiogame Manager" "This installer requires steamcmd. Please install steamcmd and try again."
|
||||
exit 1
|
||||
fi
|
||||
# Create message for dialog.
|
||||
local message="Make sure ${game} is available in your Steam library and press enter to continue. The URL for ${game} is $2"
|
||||
if echo "$2" | xclip -selection clipboard 2> /dev/null ; then
|
||||
message+="\n\nThe URL has been copied to the clipboard."
|
||||
fi
|
||||
agm_msgbox "Audiogame Manager" "Audiogame Manager" "$message"
|
||||
# Get Steam user name.
|
||||
steamUser="$(agm_inputbox "Audiogame Manager" "Audiogame Manager" "Please enter your Steam user name:" "")"
|
||||
# Download the game
|
||||
mkdir -p "${WINEPREFIX}/drive_c/Program Files/${game}"
|
||||
steamcmd +@sSteamCmdForcePlatformType windows +force_install_dir "${WINEPREFIX}/drive_c/Program Files/$game" +login "$steamUser" +app_update "$1" +quit || { agm_infobox "Audiogame Manager" "Audiogame Manager" "Something went wrong. Please make sure you have a stable internet connection, and if the problem persists, contact audiogame-manager's developers."
|
||||
exit 1; }
|
||||
}
|
||||
|
||||
# Function to open urls across OS.
|
||||
open_url() {
|
||||
if [[ "$(uname)" == "Darwin" ]]; then
|
||||
open "${*}" 2> /dev/null
|
||||
else
|
||||
xdg-open "${*}" 2> /dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
unix2dos() {
|
||||
if [[ $# -eq 0 ]]; then
|
||||
echo "Usage: unix2dos file(s)."
|
||||
exit 1
|
||||
fi
|
||||
for file in "$@"; do
|
||||
sed -i 's/\r\{0,\}$/\r/' "$file"
|
||||
done
|
||||
}
|
||||
|
||||
# Progress wrapper for game installation operations
|
||||
install_with_progress() {
|
||||
local operation="$1"
|
||||
local message="$2"
|
||||
shift 2
|
||||
|
||||
case "$operation" in
|
||||
"unzip")
|
||||
# Always overwrite without prompting to prevent invisible terminal prompts
|
||||
unzip -o "$@" | agm_progressbox "Game Installation" "$message"
|
||||
;;
|
||||
"7z")
|
||||
# Always overwrite without prompting for 7z as well
|
||||
7z -y "$@" | agm_progressbox "Game Installation" "$message"
|
||||
;;
|
||||
"cp"|"copy")
|
||||
# Always force overwrite to prevent invisible prompts in GUI mode
|
||||
cp -fv "$@" | agm_progressbox "Game Installation" "$message"
|
||||
;;
|
||||
"find")
|
||||
find "$@" | agm_progressbox "Game Installation" "$message"
|
||||
;;
|
||||
*)
|
||||
# Default: run command with progress box
|
||||
"$operation" "$@" | agm_progressbox "Game Installation" "$message"
|
||||
;;
|
||||
esac
|
||||
}
|
@@ -1,125 +0,0 @@
|
||||
documentation() {
|
||||
if [[ "$2" == "Become a Patron" ]]; then
|
||||
return
|
||||
fi
|
||||
if [[ "$2" == "Donate" ]]; then
|
||||
return
|
||||
fi
|
||||
if ! command -v w3m &> /dev/null ; then
|
||||
echo "This feature of audiogame-manager requires w3m. Please install it before continuing."
|
||||
exit 1
|
||||
fi
|
||||
get_bottle "$1"
|
||||
echo "Loading documentation, please wait..."
|
||||
# Try to find documentation based on common naming conventions.
|
||||
local gamePath="$(winepath -u "$2" 2> /dev/null)"
|
||||
gamePath="${gamePath%/*}"
|
||||
local gameDoc="$(find "$gamePath" -type f -iname 'user_manual.htm*' -or -iname 'user manual.htm*' -or -iname '*user guide.htm*' | head -1)"
|
||||
# Game name specific docs, add the name to the for loop.
|
||||
if [[ -z "$gameDoc" ]]; then
|
||||
for i in "troopanum.txt" "superdeekout.txt" scw.html ; do
|
||||
gameDoc="$(find "$gamePath" -type f -iname "$i" -or -iname 'manual.htm' | head -1)"
|
||||
done
|
||||
fi
|
||||
if [[ -z "$gameDoc" ]]; then
|
||||
gameDoc="$(find "$gamePath" -type f -path '*/Manual/index.html' | head -1)"
|
||||
fi
|
||||
if [[ -z "$gameDoc" ]]; then
|
||||
gameDoc="$(find "$gamePath" -type f -iname '[A-Z]*Help.htm' -or -iname '[A-Z]*Help.html' | head -1)"
|
||||
fi
|
||||
if [[ -z "$gameDoc" ]]; then
|
||||
gameDoc="$(find "$gamePath" -type f -iname 'manual.html' -or -iname 'manual.htm' | head -1)"
|
||||
fi
|
||||
if [[ -z "$gameDoc" ]]; then
|
||||
gameDoc="$(find "$gamePath" -type f -iname 'en.html' -or -iname 'en.htm' | head -1)"
|
||||
fi
|
||||
if [[ -z "$gameDoc" ]]; then
|
||||
gameDoc="$(find "$gamePath" -type f -iname 'readme.html' -or -iname 'readme.htm' | head -1)"
|
||||
fi
|
||||
if [[ -z "$gameDoc" ]]; then
|
||||
gameDoc="$(find "$gamePath" -type f -iname 'manual.txt' | head -1)"
|
||||
fi
|
||||
if [[ -z "$gameDoc" ]]; then
|
||||
gameDoc="$(find "$gamePath" -type f -iname 'readme.txt' -or -iname 'help.txt' | head -1)"
|
||||
fi
|
||||
if [[ -z "$gameDoc" ]]; then
|
||||
gameDoc="$(find "$gamePath" -type f -iname '*.url' -exec grep -i 'url=' {} \; | grep -iv 'score' | head -1)"
|
||||
gameDoc="${gameDoc#*=}"
|
||||
gameDoc="${gameDoc//[[:cntrl:]]/}"
|
||||
fi
|
||||
# Display documentation if available.
|
||||
if [[ -n "$gameDoc" ]]; then
|
||||
w3m "$gameDoc"
|
||||
else
|
||||
echo "No documentation found."
|
||||
fi
|
||||
exit 0
|
||||
}
|
||||
|
||||
help() {
|
||||
echo "${0##*/}"
|
||||
echo "Released under the terms of the Common Public Attribution License Version 1.0"
|
||||
echo -e "This is a Stormux project: https://stormux.org\n"
|
||||
echo -e "Usage:\n"
|
||||
echo "With no arguments, open the game launcher."
|
||||
for i in "${!command[@]}" ; do
|
||||
echo "-${i/:/ <parameter>}: ${command[${i}]}"
|
||||
done | sort
|
||||
echo
|
||||
echo "Some settings that are often used can be stored in a settings.conf file."
|
||||
echo "If wanted, place it at the following location:"
|
||||
echo "${configFile%/*}/settings.conf"
|
||||
echo "The syntax is variable=\"value\""
|
||||
echo
|
||||
echo "ipfsGateway=\"https://ipfs.stormux.org\" # Gateway to be used for ipfs downloads."
|
||||
echo "noCache=\"true\" # Do not keep downloaded items in the cache."
|
||||
echo "noqjoypad=\"true\" # Do not launch qjoypad."
|
||||
echo "norh=\"true\" # Do not install RHVoice."
|
||||
echo "redownload=\"true\" # Redownload sources, do not use the version stored in cache."
|
||||
echo "voiceName=\"voicename\" # Select the voice to be installed (default Bdl)."
|
||||
echo "defaultVoice=\"voicename\" # Select the default voice to use for the bottle, e.g. MSMike or RHVoice."
|
||||
echo "defaultRate=\"Default voice rate for the bottle, default 7, may not work in all games. Values 1-9 or A."
|
||||
echo "winedebug=\"flag(s)\" # Set wine debug flags, useful for development."
|
||||
exit 0
|
||||
}
|
||||
|
||||
license() {
|
||||
cat << EOF
|
||||
■The contents of this file are subject to the Common Public Attribution
|
||||
License Version 1.0 (the ■License■); 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 ■AS IS■ basis,
|
||||
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, 2024. All Rights
|
||||
Reserved.
|
||||
|
||||
Contributor Michael Taboada.
|
||||
|
||||
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.
|
||||
EOF
|
||||
}
|
@@ -1,63 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Check for latest news
|
||||
check_news() {
|
||||
# For use by update scripts that want to source functions in this file.
|
||||
[[ "$agmNoLaunch" == "true" ]] && return
|
||||
trap return INT
|
||||
# url for news file
|
||||
local newsFile="https://stormgames.wolfe.casa/media/agm.ogg"
|
||||
local newsPath="${configFile%/*.conf}/.news"
|
||||
local newsTag="$(curl --connect-timeout 5 -sI "$newsFile" | grep -i '^etag: "' | cut -d '"' -f2)"
|
||||
if [[ -z "${newsTag}" ]]; then
|
||||
return
|
||||
fi
|
||||
local newsOldTag="$(cat "$newsPath" 2> /dev/null)"
|
||||
if [[ "$newsTag" != "$newsOldTag" ]]; then
|
||||
agm_yesno 'Audiogame Manager News' 'Audiogame Manager News' 'Audiogame manager news is available. Would you like to play it now?' || return
|
||||
sox -qV0 "$newsFile" -d &> /dev/null
|
||||
echo -n "$newsTag" > "$newsPath"
|
||||
fi
|
||||
}
|
||||
|
||||
# Automatic update function
|
||||
# Automatic update function
|
||||
update() {
|
||||
if ! [[ -d ".git" ]]; then
|
||||
return
|
||||
fi
|
||||
local url="$(git ls-remote --get-url)"
|
||||
if [[ "$url" =~ ^ssh://|git@|gitea@ ]] || [[ -z "$url" ]]; then
|
||||
return
|
||||
fi
|
||||
git remote update &> /dev/null
|
||||
local upstream='@{u}'
|
||||
local home="$(git rev-parse @)"
|
||||
local remote="$(git rev-parse "$upstream")"
|
||||
if [[ "$home" == "$remote" ]]; then
|
||||
return
|
||||
fi
|
||||
agm_yesno "Audiogame Manager" "Audiogame Manager" "Updates are available. Would you like to update now?" || return
|
||||
|
||||
# Perform git pull quietly, then show only the important changes
|
||||
local updateResult
|
||||
git pull --quiet >/dev/null 2>&1
|
||||
updateResult=$?
|
||||
|
||||
# Get the important information: commit messages and summary
|
||||
local changesSummary
|
||||
changesSummary=$({
|
||||
echo "UPDATE COMPLETED"
|
||||
echo
|
||||
echo "Recent changes:"
|
||||
git log '@{1}..' --pretty=format:'• %an: %s' | tac
|
||||
echo
|
||||
echo "Update summary:"
|
||||
git diff --stat '@{1}..' | tail -1
|
||||
} 2>/dev/null)
|
||||
|
||||
# Show only the meaningful update information
|
||||
agm_msgbox "Update Complete" "Audiogame Manager" "$changesSummary"
|
||||
|
||||
exit $updateResult
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
download "https://blindgamers.com/downloads/a-heros-call-freeware.zip" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
|
||||
export winVer="win7"
|
||||
export winetricksSettings="vd=1024x768"
|
||||
install_wine_bottle
|
||||
# Dotnet is evil. That is all.
|
||||
LC_ALL=C DISPLAY="" winetricks -q dotnet462 xna40
|
||||
wineserver -k # Really!
|
||||
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files" "${cache}/a-heros-call-freeware.zip"
|
||||
add_launcher "c:\Program Files\a-heros-call\A Hero's Call.exe"
|
@@ -1,4 +0,0 @@
|
||||
download "https://agarchive.net/games/mt/adrian's%20doom.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/adrian's doom.exe" /silent
|
||||
add_launcher "c:\Program Files\Two Caring Citizens\Adrian's Doom!\adrian.exe"
|
@@ -1,5 +0,0 @@
|
||||
download "http://www.vgstorm.com/aac/aac.zip" "https://www.agarchive.net/games/vg/adventure%20at%20c%20stages.7z"
|
||||
install_wine_bottle
|
||||
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/aac" "${cache}/aac.zip"
|
||||
install_with_progress 7z "Extracting game files..." x -o"$WINEPREFIX/drive_c/Program Files/aac/stages" "${cache}/adventure at c stages.7z"
|
||||
add_launcher "c:\Program Files\aac\aac.exe"
|
@@ -1,12 +0,0 @@
|
||||
download "http://download.dracoent.com/Windows/classic/AOSetup.exe"
|
||||
# Uses standard wine path based on architecture (win32/win64)
|
||||
export winVer="win7"
|
||||
install_wine_bottle vb6run dx8vb quartz
|
||||
cp -fv "${cache}/AOSetup.exe" "$WINEPREFIX/drive_c/windows/temp/"
|
||||
wine "c:/windows/temp/AOSetup.exe" /sp- /silent
|
||||
rm -fv "$WINEPREFIX/drive_c/windows/temp/AOSetup.exe"
|
||||
# warning warning warning: Do not change location, or installer will not function.
|
||||
# FIXME: Hacky, but it works. Install dotnet20 by itself so it actually doesn't hang.
|
||||
winetricks -q dotnet20
|
||||
wineserver -k # Damn you, dotnet.
|
||||
add_launcher "c:\Program Files\Draconis Entertainment\Alien Outback\ao.exe"
|
@@ -1,4 +0,0 @@
|
||||
download "https://erion.cf/files/ag_103.zip"
|
||||
install_wine_bottle
|
||||
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/Angel Gift" "$cache/ag_103.zip"
|
||||
add_launcher 'c:\Program Files\Angel Gift\ag.exe'
|
@@ -1,4 +0,0 @@
|
||||
download "https://agarchive.net/games/other/audiodisc.zip"
|
||||
install_wine_bottle
|
||||
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files" "${cache}/audiodisc.zip"
|
||||
add_launcher "c:\Program Files\audiodisc\disco.exe"
|
@@ -1,9 +0,0 @@
|
||||
download "https://github.com/matatk/agrip/releases/download/2020.0-beta1/AudioQuake+LDL_2020.0-beta1_Windows.zip" "https://stormgames.wolfe.casa/downloads/quake.zip"
|
||||
export winVer="win7"
|
||||
install_wine_bottle
|
||||
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files" "${cache}/AudioQuake+LDL_2020.0-beta1_Windows.zip"
|
||||
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/AudioQuake/id1" "${cache}/quake.zip"
|
||||
add_launcher "c:\Program Files\AudioQuake\AudioQuake.exe"
|
||||
echo
|
||||
echo "After you launch the game, press tab then enter and it should begin speaking."
|
||||
alert
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmQiocMpMXoxejDftKKvmrR5xxpj1qcWcgkhBBwTcyijXg?filename=FPB32Setup10a.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/FPB32Setup10a.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\FifteenB\FifteenB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmPNt3c78UBgEMrTH3eJ5eD2mCMdth6jwes1iDKGW24Uj5?filename=BG204832Setup10a.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/BG204832Setup10a.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\BG2048B\BG2048.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmTshtHBEV9dh7wFtaQpNUEYHZ3fBpuhSRZqc7k8HwmtPM?filename=ASB32Setup10.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/ASB32Setup10.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\AcesUpB\AcesUpB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/Qma76HXBhmKgMDeHH1XLePsaWzzzLsBS2HRL3c7MVwDokg?filename=BAC32Setup10.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/BAC32Setup10.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\AlchemyB\AlchemyB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/Qmaq9P9fxdLTEFMGg4mhHrRuUbPg6HgU3eYVJNqZUimHjo?filename=BGB32Setup10.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/BGB32Setup10.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\BattleshipB\BGBattleship.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmQwWiJw9hDiPdfwDyL4XepeoD66ztVRi3HwbSjFFP4CNg?filename=BGB32Setup10a.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/BGB32Setup10a.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\BoggleB\BoggleB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmRn21tREXxXVSaDe9i54zEPzPSespjJAFBqu4DWocuagD?filename=BXB32Setup10.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/BXB32Setup10.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\BoxesB\BoxesB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmWEdmTkQsjSqBgWUgnDajMf8QvQBbEF4Nxo6mhkXYzBtQ?filename=BRN32Setup10a.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/BRN32Setup10a.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\BrainiacB\BrainiacB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmT2yBpU5Jqna18FxYtyWzi4xMGAY9PyJWStAskxCHqBDw?filename=BGC32Setup10d.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/BGC32Setup10d.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\ChessB\BGChess.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmU486SssAdM7kPKwDyAKDLQs3Z92bG6wFjaLhzqDZCxAF?filename=BCB32Setup10.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/BCB32Setup10.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\CodeBreakerB\BGCodeBreaker.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmbRUiknnNcibWD3NwK4DFZGNHWswBgsFidUzU1TFGJ5Ra?filename=BCS32Setup10.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/BCS32Setup10.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\CribSolB\CribSolB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmeFud3EPHy7wQe8UENgvh96HdAazEkwqA2AutCNkYvB3t?filename=BGC32Setup12e.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/BGC32Setup12e.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\CribbageB\CribbageB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmZQGY9CeATEiWrSqsKBz4AN6jPgQuvbBZSpQoLiMjoDr2?filename=BGX32Setup10h.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/BGX32Setup10h.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\CrosswordB\CrosswordB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmZQGY9CeATEiWrSqsKBz4AN6jPgQuvbBZSpQoLiMjoDr2?filename=BDD32Setup.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/BDD32Setup.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\DrawDominoesB\DrawDominoesB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmWWZByYL5CsDSi6gQLGcMyBL7zqD5hWXbPXJr3shRt5AQ?filename=ESB32Setup10.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/ESB32Setup10.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\ElevensB\ElevensB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmSZt6dz7WQkNrFBmYq9n4WdYrrZyQAebTBPo46uHqCuNi?filename=BFD32Setup10.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/BFD32Setup10.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\FivesDominoesB\FivesDominoesB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmVfQMMnqTD9Zm8Xwv7rGrUTdS9FXToq7Fv6wtQQVgbQGR?filename=BGF32Setup20.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/BGF32Setup20.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\FreecellB\FreecellB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmfAp9EYou1pndLwYSdpYdUCHBv2DR94oFccQh1ii9JVLD?filename=GSB32Setup10a.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/GSB32Setup10a.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\GolfSolitaireB\GolfSolitaireB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmXTPMmvw7JE2eLuPBLGSpkZqUn12TX7QEQZbX8qtp7GBx?filename=HMB32Setup10.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/HMB32Setup10.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\HangmanB\HangmanB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmdU5ag1PRjvG28wNX7aNuJqZSVxaqEEKjgG6GoRoDT8k4?filename=BGH32Setup10b.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/${BGH32Setup10b.exe}" /silent
|
||||
add_launcher "c:\Program Files\Games\HeartsB\HeartsB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmctBDvhQWwER94LvgauR7sMDxv9D1mS9cToV47orTCdzU?filename=BGK32Setup10b.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/BGK32Setup10b.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\KlondikeB\KlondikeB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/Qma5WeCC9B2P5abRGX9nGYV8Zi9F8vfCCr4ehejP2bgmNm?filename=LAP32Setup10.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/LAP32Setup10.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\LAP\LAP.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmP6cwMbirbBqAaG9JLfNRnD2dvJfh6nq74kfwxs5hN2RQ?filename=BMM32Setup10.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/BMM32Setup10.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\MastermindB\BGMasterMind.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmRa54HroWjwxHYfKr6hdmP34sHW5G3ecuzcjMA5UBBVKa?filename=MSB32Setup10.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/MSB32Setup10.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\MinesweeperB\MinesweeperB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/Qmb7eGTMDgiaDC9muMW9n8bHoistGcNm1VgHc6sr7dRyHU?filename=BNW32Setup10a.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/BNW32Setup10a.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\NomWhistB\NomWhistB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmXKvQ6WNNSnDiSyYmvAhZXVdALnuhUGK7dSMQVkQNReJr?filename=BPS32Setup10c.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/BPS32Setup10c.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\PenguinB\PenguinB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmPLv74LiDgVGuiGhu9HuPhx3uoMm9QyCYk6jgeFUHjj3S?filename=BPS32Setup10.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/BPS32Setup10.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\PokerSolB\PokerSolB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmaqXaBKD3xY2smhU2LcejXRTPnWZHqaTW9se8yRepLsHu?filename=PSB32Setup10a.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/PSB32Setup10a.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\PyramidB\PyramidB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmSxJs2MiLQ61Fgx6vCpSD7GmQziLiCEU3sZ3mgWc7RsJ8?filename=BSS32Setup10.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/BSS32Setup10.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\ScorpionB\ScorpionB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmVrwyPdJBnmc4wLW7oT2hexxXnXxs8bA7gfiqbnJsWJ16?filename=BGS32Setup20.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/BGS32Setup20.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\ScrabbleB\ScrabbleB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmXtBCqB6VCFPaDYuLaFNP1BDtJSLCJdJZzgm61zMtrsQt?filename=BGS32Setup10.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/BGS32Setup10.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\SimonB\SimonB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmdWBaDnLVbKCJSpiqF675ew6nJ6KHUVXA5FEH3t3E7UAu?filename=SPB32Setup10b.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/SPB32Setup10b.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\SpiderB\SpiderB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmXCAHEVRGZBc8t45Jgn2vkxicwF9Aox6yz9XrQBdkv7WY?filename=SDB32Setup10a.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/SDB32Setup10a.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\SudokuB\SudokuB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmYoiFQ6JuSXfZfZXT3SQDsYzMWLBu9rW9yivi1xiPjqZx?filename=SDB32Setup10a.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/SDB32Setup10a.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\TabSolB\BGTabSol.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmWJGvSR6iaQfMHM3XuGCkWxx285jkzSDdNSvvk3bSCH8S?filename=TPB32Setup10a.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/TPB32Setup10a.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\TriPeaksB\TriPeaksB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmWAk2TMHMvW6Kjc1sZBEPsxmCNHfY3nF1K723PCqaTa57?filename=T20B32Setup10.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/T20B32Setup10.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\T20CricketB\CricketB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmVsfPkebSoTDwYSXF1n7y4P9eGJTgTcGXdrEjpcV8A3Dv?filename=BGU32Setup11a.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/BGU32Setup11a.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\UnoB\UnoB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmXtR49EZShyj15Tc9CXQpBYVmKNfZpp4515Epm16bviuH?filename=BWB32Setup10.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/BWB32Setup10.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\WordBuilderB\WordBuilderB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmfTgfRzd4JMRqKSfDiz76iMorkaG19BqH1K7nRCCDwo4H?filename=WCB32Setup10a.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/WCB32Setup10a.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\WordCandyB\WordCandyB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmYQWZZifzKJSuVRCC1SabwRmEDz95GdFvbzRvsBMmTt6e?filename=BWJ32Setup10.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/BWJ32Setup10.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\WordJumbleB\WordJumbleB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmXPtj5PkVZjXpU3m6FAfm8MwVL6bQCvhEDoR385u6FGTL?filename=BWM32Setup10.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/BWM32Setup10.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\WordMazeB\WordMazeB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmZp73ARDPqgnCz7zxfKeBHjNoHrgZSgg2NdQZR2sMyZGD?filename=WSB32Setup10.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/WSB32Setup10.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\WordSolitaireB\WordSolitaireB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmWWZFXVHNtmNkH55oermWWtrMcQ8qVqL687B7kGFyeezq?filename=WTB32Setup10a.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/WTB32Setup10a.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\WordTargetB\WordTargetB.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmdicAVDegDktY3euVAC2PPn4YBGz96KedxYXNe4WDQaoq?filename=BWY32Setup10.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/BWY32Setup10.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\WordYahtzeeB\BGWordYahtzee.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmZebvkKgFAADnb1cgW6Bz7wTYdUh82X61QdtW66KcvmpF?filename=BGY32Setup10a.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/BGY32Setup10a.exe" /silent
|
||||
add_launcher "c:\Program Files\Games\yahtzeeB\BGYahtzee.exe"
|
@@ -1,15 +0,0 @@
|
||||
export WINEARCH=win64
|
||||
export winVer="win10"
|
||||
install_wine_bottle
|
||||
get_steam "2379780" "https://store.steampowered.com/app/2379780/Balatro/"
|
||||
mkdir -p "$WINEPREFIX/drive_c/users/$USER/AppData/Roaming/Balatro/Mods"
|
||||
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/users/$USER/AppData/Roaming/Balatro" "$cache/BlackHole-Release.zip"
|
||||
pushd "$WINEPREFIX/drive_c/users/$USER/AppData/Roaming/Balatro/Mods"
|
||||
(cat mod_urls.txt ; echo) | while read -r x ; do
|
||||
git clone "$x"
|
||||
done
|
||||
cp -fv BlackHole/bin/*.dll "$WINEPREFIX/drive_c/Program Files/Balatro"
|
||||
cp -fv "$cache/Tolk.dll" "$WINEPREFIX/drive_c/Program Files/Balatro/tolk.dll"
|
||||
cp -fv "$cache/Tolk.dll" BlackHole/bin/tolk.dll
|
||||
cp -fv ../version.dll "$WINEPREFIX/drive_c/Program Files/Balatro"
|
||||
add_launcher 'c:\Program Files\Balatro\Balatro.exe' 'export WINEDLLOVERRIDES=version=n,b'
|
@@ -1,5 +0,0 @@
|
||||
download "https://www.agarchive.net/games/gameMadnessInteractive/battle%20zone%2013.5%20setup.exe"
|
||||
export winVer="win7"
|
||||
install_wine_bottle
|
||||
wine "${cache}/battle zone 13.5 setup.exe" /silent
|
||||
add_launcher "c:\Program Files\Battle Zone\ss.exe"
|
@@ -1,6 +0,0 @@
|
||||
download "http://files.tunmi13.com/projects_archive/bth.zip"
|
||||
# Uses standard wine path based on architecture (win32/win64)
|
||||
export winVer="win7"
|
||||
install_wine_bottle
|
||||
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/$game" "${cache}/bth.zip"
|
||||
add_launcher "c:\Program Files\\${game}\bth.exe"
|
@@ -1,7 +0,0 @@
|
||||
get_installer "bf.zip" "https://tunmi13.itch.io/battlefield-2d"
|
||||
export WINEARCH=win64
|
||||
export winVer="win8"
|
||||
# Uses standard wine path based on architecture (win32/win64)
|
||||
install_wine_bottle
|
||||
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/" "${cache}/bf.zip"
|
||||
add_launcher "c:\Program Files\bf\bf.exe"
|
@@ -1,8 +0,0 @@
|
||||
#
|
||||
download "https://oriolgomez.com/games/beat_windows.zip"
|
||||
# Sapi is broken on win64 for now, and this game doesn't support nvda it seems.
|
||||
export WINEARCH=win64
|
||||
export winVer="win7"
|
||||
install_wine_bottle mf
|
||||
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/Beatstar Pro" "${cache}/beat_windows.zip"
|
||||
add_launcher "c:\Program Files\Beatstar Pro\beatstar.exe"
|
@@ -1,9 +0,0 @@
|
||||
get_installer "Blind Drive 1.1.112.00i-win64.zip" "https://lofipeople.itch.io/blind-drive"
|
||||
export WINEARCH=win64
|
||||
export winVer="win8"
|
||||
install_wine_bottle
|
||||
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/blind-drive" "${cache}/Blind Drive 1.1.112.00i-win64.zip"
|
||||
# Weird work around to get keyboard working.
|
||||
winetricks -q usetakefocus=y
|
||||
winetricks -q usetakefocus=n
|
||||
add_launcher "c:\Program Files\blind-drive\Blind Drive.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH="win32"
|
||||
download "${ipfsGateway}/ipfs/QmcTCTMep4zp5zTw8ZaXYpjtu9inNPn8bNzwhW6cX97egw?filename=bloodshed.exe"
|
||||
install_wine_bottle
|
||||
cp "${cache}/bloodshed.exe" "$WINEPREFIX/drive_c/Program Files/"
|
||||
add_launcher "c:\Program Files\bloodshed.exe"
|
@@ -1,7 +0,0 @@
|
||||
export WINEARCH=win32
|
||||
download "https://www.nyanchangames.com/softs/nn2_setup.exe"
|
||||
# Uses standard wine path based on architecture (win32/win64)
|
||||
export winVer="win7"
|
||||
install_wine_bottle
|
||||
install_with_progress 7z "Extracting game files..." x -o"$WINEPREFIX/drive_c/nyanchangame/bk2" "${cache}/nn2_setup.exe"
|
||||
add_launcher "c:\nyanchangame\bk2\play.exe"
|
@@ -1,24 +0,0 @@
|
||||
|
||||
download "https://www.nyanchangames.com/softs/nn3_setup.exe"
|
||||
# Uses standard wine path based on architecture (win32/win64)
|
||||
export winVer="win7"
|
||||
export WINEARCH=win32
|
||||
install_wine_bottle
|
||||
install_with_progress 7z "Extracting game files..." x -o"$WINEPREFIX/drive_c/nyanchangame/bk3" "${cache}/nn3_setup.exe"
|
||||
if [[ ! -r "${cache}/bk3-dict.dat" ]]; then
|
||||
echo "http://www.nyanchangames.com/order/bk3translate.html" | xclip -selection clipboard 2> /dev/null
|
||||
agm_msgbox "Bokurano Daibouken 3" "Bokurano Daibouken 3" "If you would like English translations, the file is available at http://www.nyanchangames.com/order/bk3translate.html. Save the dict.dat file to your Downloads or Desktop directory. For convenience the url has been copied to your clipboard. Press enter when you are ready to continue."
|
||||
fi
|
||||
dictFile=""
|
||||
for i in "${HOME}/Downloads/dict.dat" "${HOME}/Desktop/dict.dat" ; do
|
||||
if [[ -r "$i" ]]; then
|
||||
dictFile="$i"
|
||||
fi
|
||||
done
|
||||
if [[ "${#dictFile}" -ge 3 ]] && [[ ! -r "${cache}/bk3-dict.dat" ]]; then
|
||||
agm_yesno "Bokurano Daibouken 3" "Bokurano Daibouken 3" "Possible English translation file found at $dictFile. Would you like to use it for BK3?" && cp -fv "$dictFile" "${cache}/bk3-dict.dat"
|
||||
fi
|
||||
if [[ -f "${cache}/bk3-dict.dat" ]] ; then
|
||||
cp -fv "${cache}/bk3-dict.dat" "${WINEPREFIX}/drive_c/nyanchangame/bk3/dict.dat"
|
||||
fi
|
||||
add_launcher "c:\nyanchangame\bk3\play.exe"
|
@@ -1,7 +0,0 @@
|
||||
download "https://www.nyanchangames.com/softs/nn_setup.exe"
|
||||
# Uses standard wine path based on architecture (win32/win64)
|
||||
export winVer="win7"
|
||||
export WINEARCH="win32"
|
||||
install_wine_bottle
|
||||
install_with_progress 7z "Extracting game files..." x -o"$WINEPREFIX/drive_c/nyanchangame/bk" "${cache}/nn_setup.exe"
|
||||
add_launcher "c:\nyanchangame\bk\play.exe"
|
@@ -1,6 +0,0 @@
|
||||
download "http://oriolgomez.com/games/bombercats_en.zip"
|
||||
# Uses standard wine path based on architecture (win32/win64)
|
||||
export winVer="win7"
|
||||
install_wine_bottle
|
||||
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/bomvercats" "${cache}/bombercats_en.zip"
|
||||
add_launcher "c:\Program Files\bomvercats\game.exe"
|
@@ -1,5 +0,0 @@
|
||||
download "http://www.masonasons.me/softs/BopItEmulator3.1PasswordIsBopIt.7z"
|
||||
export winVer="win7"
|
||||
install_wine_bottle
|
||||
install_with_progress 7z "Extracting game files..." x -o"$WINEPREFIX/drive_c/Program Files/Bop It" "${cache}/BopItEmulator3.1PasswordIsBopIt.7z" -pBopIt
|
||||
add_launcher "c:\Program Files\Bop It\bop.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH=win64
|
||||
get_installer "bounce_bounce.rar" "https://kavyapriya.itch.io/bounce-bounce"
|
||||
install_wine_bottle
|
||||
unrar x "${cache}/bounce_bounce.rar" -op"$WINEPREFIX/drive_c/Program Files"
|
||||
add_launcher "c:\Program Files\bounce_bounce\bounce.exe"
|
@@ -1,6 +0,0 @@
|
||||
#
|
||||
download "https://hirotaka2014.sakura.ne.jp/mh0406/game/breed_memorial.zip" "${nvdaControllerClientDll}"
|
||||
export winVer="win7"
|
||||
install_wine_bottle cjkfonts
|
||||
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/" "${cache}/breed_memorial.zip"
|
||||
add_launcher "c:\Program Files\Breed memorial\Breed memorial\breed memorial.exe"
|
@@ -1,6 +0,0 @@
|
||||
get_installer "breu2.zip" "https://breu.itch.io/shadowhunt"
|
||||
export WINEARCH=win64
|
||||
export winVer="win8"
|
||||
install_wine_bottle
|
||||
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/" "${cache}/breu2.zip"
|
||||
add_launcher "c:\Program Files\breu2\breu2.exe"
|
@@ -1,7 +0,0 @@
|
||||
download "http://www.kaldobsky.com/audiogames/castaways2beta.zip"
|
||||
# Uses standard wine path based on architecture (win32/win64)
|
||||
export winVer="win7"
|
||||
install_wine_bottle vb6run dx8vb
|
||||
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/castaways2" "${cache}/castaways2beta.zip"
|
||||
wine "c:\Program Files\castaways2\Checkup.exe" /verysilent
|
||||
add_launcher "c:\Program Files\castaways2\Castaways2.exe"
|
@@ -1,7 +0,0 @@
|
||||
download "https://www.kaldobsky.com/audiogames/castaways.zip"
|
||||
# Uses standard wine path based on architecture (win32/win64)
|
||||
export winVer="win7"
|
||||
install_wine_bottle vb6run dx8vb
|
||||
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/castaways" "${cache}/castaways.zip"
|
||||
wine "c:\Program Files\castaways\Checkup.exe" /verysilent
|
||||
add_launcher "c:\Program Files\castaways\Castaways.exe"
|
@@ -1,5 +0,0 @@
|
||||
download "http://files.tunmi13.com/projects_archive/coth.zip"
|
||||
export winVer="win7"
|
||||
install_wine_bottle
|
||||
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/$game" "${cache}/coth.zip"
|
||||
add_launcher "c:\Program Files\\${game}\game.exe"
|
@@ -1,12 +0,0 @@
|
||||
download "https://download.dracoent.com/Windows/ChangeReactionSetup.exe"
|
||||
# Uses standard wine path based on architecture (win32/win64)
|
||||
export winVer="win7"
|
||||
install_wine_bottle vb6run dx8vb quartz
|
||||
cp -fv "${cache}/ChangeReactionSetup.exe" "$WINEPREFIX/drive_c/windows/temp/"
|
||||
wine "c:/windows/temp/ChangeReactionSetup.exe" /sp- /silent
|
||||
rm -fv "$WINEPREFIX/drive_c/windows/temp/ChangeReactionSetup.exe"
|
||||
# warning warning warning: Do not change location, or installer will not function.
|
||||
# FIXME: Hacky, but it works. Install dotnet20 by itself so it actually doesn't hang.
|
||||
winetricks -q dotnet20
|
||||
wineserver -k # Damn you, dotnet.
|
||||
add_launcher "c:\Program Files\Draconis Entertainment\Change Reaction\ChangeReactionGui.exe"
|
@@ -1,4 +0,0 @@
|
||||
download "https://stormgames.wolfe.casa/downloads/chillingham.zip"
|
||||
install_wine_bottle vb6run mfc42
|
||||
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files" "$cache/chillingham.zip"
|
||||
add_launcher "c:\Program Files\chillingham\Chillingham.exe"
|
@@ -1,9 +0,0 @@
|
||||
#
|
||||
# Freezes at menu
|
||||
download "https://www.agarchive.net/games/XSight/chopper%20challenge%20setup.exe"
|
||||
install_wine_bottle vb6run dx8vb
|
||||
wine "${cache}/chopper challenge setup.exe" /silent &
|
||||
xdotool sleep 5 key y 2> /dev/null
|
||||
wineserver -w
|
||||
echo "$USER|n/a" >> "$WINEPREFIX/drive_c/Program Files/x-sight interactive/chopper challenge/config.dat"
|
||||
add_launcher "c:\Program Files\x-sight interactive\chopper challenge\Chopper.exe"
|
@@ -1,7 +0,0 @@
|
||||
export WINEARCH=win64
|
||||
export winVer="win7"
|
||||
download "${ipfsGateway}/ipfs/QmYx11vsMDBgjPd1coZPGHxMXf2qtf4icqmB3Q9iUazyQv?filename=ChristmasChaos.zip" "https://stormgames.wolfe.casa/downloads/Tolk.dll"
|
||||
install_wine_bottle
|
||||
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files" "${cache}/ChristmasChaos.zip"
|
||||
find "${WINEPREFIX}" -type f -name 'Tolk.dll' -exec cp -fv "${cache}/Tolk.dll" "{}" \;
|
||||
add_launcher "c:\Program Files\ChristmasChaos\ChristmasChaos.exe"
|
@@ -1,4 +0,0 @@
|
||||
download "https://www.agarchive.net/games/draconis/christmas%20whoopass%20setup.exe"
|
||||
install_wine_bottle vb6run dx8vb
|
||||
wine "${cache}/christmas whoopass setup.exe" /sp- /silent
|
||||
add_launcher "c:\Program Files\Draconis Entertainment\Christmas Whoop Ass\wa.exe"
|
@@ -1,6 +0,0 @@
|
||||
get_installer "clashes_of_the_sky.zip" "https://tunmi13.itch.io/clashes-of-the-sky"
|
||||
# Uses standard wine path based on architecture (win32/win64)
|
||||
export winVer="win7"
|
||||
install_wine_bottle
|
||||
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files" "${cache}/clashes_of_the_sky.zip"
|
||||
add_launcher 'c:\Program Files\clashes_of_the_sky\clash.exe'
|
@@ -1,9 +0,0 @@
|
||||
get_installer "codedungeon-win-64.zip" "https://stealcase.itch.io/codedungeon"
|
||||
export WINEARCH=win64
|
||||
export winVer="win8"
|
||||
install_wine_bottle
|
||||
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/code-dungeon" "${cache}/codedungeon-win-64.zip"
|
||||
# Weird work around to get keyboard working.
|
||||
winetricks -q usetakefocus=y
|
||||
winetricks -q usetakefocus=n
|
||||
add_launcher "c:\Program Files\code-dungeon\Code Dungeon.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH=win64
|
||||
export winVer="win7"
|
||||
install_wine_bottle
|
||||
unrar x "$cache/coin collector.rar" -op"$WINEPREFIX/drive_c/Program Files"
|
||||
add_launcher "c:\Program Files\coin collector\game.exe"
|
@@ -1,5 +0,0 @@
|
||||
export WINEARCH=win64
|
||||
export winVer="win8"
|
||||
install_wine_bottle
|
||||
get_steam 2684520 "https://store.steampowered.com/app/2684520/Conjury/"
|
||||
add_launcher 'c:\Program Files\Conjury\release\Conjury.exe'
|
@@ -1,6 +0,0 @@
|
||||
#
|
||||
export winVer="win7"
|
||||
download "https://renovagames.com/bc/BC-Setup.exe"
|
||||
install_wine_bottle cjkfonts
|
||||
wine "${cache}/BC-Setup.exe" /silent
|
||||
#add_launcher "c:\Program Files\"
|
@@ -1,6 +0,0 @@
|
||||
export WINEARCH=win64
|
||||
export winVer="win7"
|
||||
download "https://samtupy.com/games/cm.zip"
|
||||
install_wine_bottle
|
||||
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/ConstantMotion" "$cache/cm.zip"
|
||||
add_launcher 'c:\Program Files\ConstantMotion\cm.exe'
|
@@ -1,6 +0,0 @@
|
||||
# Uses standard wine path based on architecture (win32/win64)
|
||||
export winVer="win7"
|
||||
download "http://oriolgomez.com/games/copter_en.zip"
|
||||
install_wine_bottle
|
||||
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/copter mission" "${cache}/copter_en.zip"
|
||||
add_launcher "c:\Program Files\copter mission\game.exe"
|
@@ -1,7 +0,0 @@
|
||||
download "http://pragmapragma.free.fr/crazy-party/Crazy-Party-beta82.zip" "https://stormgames.wolfe.casa/downloads/Tolk.dll"
|
||||
export WINEARCH=win64
|
||||
export winVer="win8"
|
||||
install_wine_bottle
|
||||
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files" "${cache}/Crazy-Party-beta82.zip"
|
||||
find "${WINEPREFIX}" -type f -name 'Tolk.dll' -exec cp -fv "${cache}/Tolk.dll" "{}" \;
|
||||
add_launcher "c:\Program Files\Crazy-Party-beta82\Crazy Party.exe"
|
@@ -1,4 +0,0 @@
|
||||
download "https://www.agarchive.net/games/VIP/crazy%20tennis%20setup.exe"
|
||||
install_wine_bottle
|
||||
wine "${cache}/crazy tennis setup.exe" /sp- /silent
|
||||
add_launcher "c:\Program Files\Crazytennis\crazytennis.exe"
|
@@ -1,6 +0,0 @@
|
||||
export WINEARCH=win64
|
||||
export winVer="win7"
|
||||
download "http://masonasons.me/softs/CH2.0Win.zip"
|
||||
install_wine_bottle
|
||||
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/crime-hunter" "${cache}/CH2.0Win.zip"
|
||||
add_launcher "c:\Program Files\crime-hunter\ch.exe"
|
@@ -1,9 +0,0 @@
|
||||
download "https://www.agarchive.net/games/xl/DangerCityBeta2.exe"
|
||||
install_wine_bottle vb6run dx8vb
|
||||
wine "$cache/DangerCityBeta2.exe" /silent &
|
||||
xdotool sleep 15 key --clearmodifiers --delay 200 Return 2> /dev/null
|
||||
xdotool sleep 5 key --clearmodifiers --delay 200 Return 2> /dev/null
|
||||
xdotool sleep 5key --clearmodifiers --delay 200 Return 2> /dev/null
|
||||
xdotool sleep 10 --clearmodifiers --delay 200 Return 2> /dev/null
|
||||
wineserver -w
|
||||
add_launcher 'c:\Program Files\Danger City\dc.exe'
|
@@ -1,6 +0,0 @@
|
||||
download "http://oriolgomez.com/games/wheel_en.zip"
|
||||
# Uses standard wine path based on architecture (win32/win64)
|
||||
export winVer="win7"
|
||||
install_wine_bottle
|
||||
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/danger on the wheel" "${cache}/wheel_en.zip"
|
||||
add_launcher "c:\Program Files\danger on the wheel\game.exe"
|
@@ -1,6 +0,0 @@
|
||||
#
|
||||
# No custom bottle needed - use standard wine path based on architecture
|
||||
download "https://www.agarchive.net/games/pb/Dark-Destroyer-Setup.exe"
|
||||
install_wine_bottle ie6
|
||||
wine "$cache/Dark-Destroyer-Setup.exe" /silent
|
||||
add_launcher 'c:\Pbgames\Dark_destroyer\darkdestroyer.exe'
|
@@ -1,8 +0,0 @@
|
||||
# Uses standard wine path based on architecture (win32/win64)
|
||||
export winVer="win7"
|
||||
export winetricksSettings="vd=1024x768"
|
||||
download "https://kaldobsky.com/audiogames/Daytona.zip"
|
||||
install_wine_bottle vb6run dx8vb quartz
|
||||
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/daytona" "${cache}/Daytona.zip"
|
||||
wine 'c:\Program Files\daytona\checkup.exe' /verysilent
|
||||
add_launcher "c:\Program Files\daytona\Daytona.exe"
|
@@ -1,6 +0,0 @@
|
||||
# Uses standard wine path based on architecture (win32/win64)
|
||||
export winVer="win7"
|
||||
download "http://oriolgomez.com/games/road_en.zip"
|
||||
install_wine_bottle
|
||||
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/death on the road" "${cache}/road_en.zip"
|
||||
add_launcher "c:\Program Files\death on the road\game.exe"
|
@@ -1,6 +0,0 @@
|
||||
export winVer="win7"
|
||||
export winetricksSettings="vd=1024x768"
|
||||
download "https://www.agarchive.net/games/realitySoftware/death%20match%20project%20alpha%20setup.exe"
|
||||
install_wine_bottle quartz
|
||||
wine "${cache}/death match project alpha setup.exe" /silent
|
||||
add_launcher "c:\Program Files\reality software\death match project alpha\dm1.exe"
|
@@ -1,9 +0,0 @@
|
||||
# Uses standard wine path based on architecture (win32/win64)
|
||||
export winVer="win7"
|
||||
export winetricksSettings="vd=1024x768"
|
||||
download "https://www.kaldobsky.com/audiogames/dogwhohatestoast.zip"
|
||||
install_wine_bottle vb6run dx8vb quartz
|
||||
install_with_progress unzip "Extracting game files..." -d "$WINEPREFIX/drive_c/Program Files/dogwhohatestoast" "${cache}/dogwhohatestoast.zip"
|
||||
wine 'c:\Program Files\dogwhohatestoast\checkup.exe' /verysilent
|
||||
add_launcher "c:\Program Files\dogwhohatestoast\DogwhoHatesToast.exe"
|
||||
echo "Note: Dog who Hates Toast installed. Once you start the game, you must press tab until you hear sapi on to get speech." >&2
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user