shader paths refresh and back up custom characters

This commit is contained in:
mactan-sc 2024-04-16 21:30:25 -05:00 committed by mactan
parent b2993d8f6f
commit faded02ce6

View File

@ -144,7 +144,10 @@ eptu_dir="EPTU"
appdata_path="drive_c/users/$USER/AppData/Local/Star Citizen" appdata_path="drive_c/users/$USER/AppData/Local/Star Citizen"
# The shaders subdirectory name # The shaders subdirectory name
shaders_subdir="shaders" shaders_subdirs=(
"Shaders"
"VulkanShaderCache"
)
# Remaining directory paths are set at the end of the getdirs() function # Remaining directory paths are set at the end of the getdirs() function
@ -679,11 +682,13 @@ getdirs() {
# $game_version is set in the version_menu() function # $game_version is set in the version_menu() function
############################################################################ ############################################################################
# The game's user directory # The game's user directory
user_dir="$game_path/$game_version/USER/Client/0" user_dir="$game_path/$game_version/user/client/0"
# The location within the USER directory to which the game exports keybinds # The location within the USER directory to which the game exports keybinds
keybinds_dir="$user_dir/Controls/Mappings" keybinds_dir="$user_dir/Controls/Mappings"
# Shaders directory # game data mask
shaders_dir="$wine_prefix/$appdata_path" game_data_mask="sc-alpha-*"
# Custom Characters
custom_characters_dir="$user_dir/CustomCharacters"
# dxvk cache file # dxvk cache file
dxvk_cache="$game_path/$game_version/StarCitizen.dxvk-cache" dxvk_cache="$game_path/$game_version/StarCitizen.dxvk-cache"
# Where to store backed up keybinds # Where to store backed up keybinds
@ -2023,7 +2028,7 @@ version_menu(){
# Save exported keybinds, wipe the USER directory, and restore keybinds # Save exported keybinds, wipe the USER directory, and restore keybinds
rm_userdir() { rm_userdir() {
# Prompt user to back up the current keybinds in the game # Prompt user to back up the current keybinds in the game
message info "Before proceeding, please be sure you have exported\nyour Star Citizen keybinds from within the game.\n\nTo do this, launch the game and go to:\nOptions->Keybindings->Control Profiles->Save Control Settings\n\nGo on; I'll wait." message info "Before proceeding, please be sure you have exported\nyour Star Citizen keybinds and characters from within the game.\n\nTo do this, launch the game and go to:\nOptions->Keybindings->Control Profiles->Save Control Settings\n\nTo export your character, go to the character creator from the main menu and save it with a name.\n\nGo on; I'll wait."
# Get/Set directory paths # Get/Set directory paths
getdirs getdirs
@ -2035,40 +2040,65 @@ rm_userdir() {
# Sanity check # Sanity check
if [ ! -d "$user_dir" ]; then if [ ! -d "$user_dir" ]; then
message warning "USER directory not found. There is nothing to delete!\n\n$user_dir" message warning "user directory not found. There is nothing to delete!\n\n$user_dir"
return 0 return 0
fi fi
# Check for exported keybind files # Check for exported keybind files
if [ ! -d "$keybinds_dir" ] || [ -z "$(ls -A "$keybinds_dir")" ]; then if [ ! -d "$keybinds_dir" ] || [ -z "$(ls -A "$keybinds_dir")" ]; then
if message question "Warning: No exported keybindings found.\nContinuing will erase your existing keybinds!\n\nDo you want to continue anyway?"; then if message question "Warning: No exported keybindings found.\nContinuing will erase your existing keybinds!\n\nDo you want to continue anyway?"; then
exported=0 keybinds_exported=0
else else
# User said no # User said no
return 0 return 0
fi fi
else else
exported=1 keybinds_exported=1
fi
# Check for exported custom character files
if [ ! -d "$custom_characters_dir" ] || [ -z "$(ls -A "$custom_characters_dir")" ]; then
if message question "Warning: No exported characters found.\nContinuing will erase your existing characters!\n\nDo you want to continue anyway?"; then
characters_exported=0
else
# User said no
return 0
fi
else
characters_exported=1
fi fi
if message question "The following directory will be deleted:\n\n$user_dir\n\nDo you want to proceed?"; then if message question "The following directory will be deleted:\n\n$user_dir\n\nDo you want to proceed?"; then
# Back up keybinds # Back up keybinds
if [ "$exported" -eq 1 ]; then if [ "$keybinds_exported" -eq 1 ]; then
debug_print continue "Backing up keybinds to $backup_path/keybinds..." debug_print continue "Backing up keybinds to $backup_path/keybinds..."
mkdir -p "$backup_path/keybinds" && cp -r "$keybinds_dir/." "$backup_path/keybinds/" mkdir -p "$backup_path/keybinds" && cp -r "$keybinds_dir/." "$backup_path/keybinds/"
fi fi
#Back up characters
if [ "$characters_exported" -eq 1 ]; then
debug_print continue "Backing up characters to $backup_path/custom_characters..."
mkdir -p "$backup_path/custom_characters" && cp -r "$custom_characters_dir/." "$backup_path/custom_characters/"
fi
# Wipe the user directory # Wipe the user directory
debug_print continue "Wiping $user_dir..." debug_print continue "Wiping $user_dir..."
rm -r "$user_dir" rm -r --interactive=never "$user_dir"
# Restore custom keybinds # Restore custom keybinds
if [ "$exported" -eq 1 ]; then if [ "$keybinds_exported" -eq 1 ]; then
debug_print continue "Restoring keybinds..." debug_print continue "Restoring keybinds..."
mkdir -p "$keybinds_dir" && cp -r "$backup_path/keybinds/." "$keybinds_dir/" mkdir -p "$keybinds_dir" && cp -r "$backup_path/keybinds/." "$keybinds_dir/"
message info "To re-import your keybinds, select it in-game from the list:\nOptions->Keybindings->Control Profiles" message info "To re-import your keybinds, select it in-game from the list:\nOptions->Keybindings->Control Profiles"
fi fi
# Restore custom characters
if [ "$characters_exported" -eq 1 ]; then
debug_print continue "Restoring custom characters..."
mkdir -p "$custom_characters_dir" && cp -r "$backup_path/custom_characters/." "$custom_characters_dir/"
message info "To re-import your character, select it in-game from the list."
fi
message info "Your Star Citizen USER directory has been cleaned up!" message info "Your Star Citizen USER directory has been cleaned up!"
fi fi
} }
@ -2083,14 +2113,20 @@ rm_shaders() {
fi fi
# Loop through all possible shader directories # Loop through all possible shader directories
for appdata_dir in "$shaders_dir"/*; do for appdata_dir in "$wine_prefix/$appdata_path"/$game_data_mask; do
if [ -d "$appdata_dir/$shaders_subdir" ]; then debug_print continue "appdata_dir is $appdata_dir"
# If a shaders directory is found, delete it # Loop through the shaders subdir array
if message question "The following directory will be deleted:\n\n$appdata_dir/$shaders_subdir\n\nDo you want to proceed?"; then for shaders_subdir in "${shaders_subdirs[@]}"; do
debug_print continue "Deleting $appdata_dir/$shaders_subdir..." if [ -d "$appdata_dir/$shaders_subdir" ]; then
rm -r "${appdata_dir:?}/$shaders_subdir" # If a shaders directory is found, delete it
if message question "The following directory will be deleted:\n\n$appdata_dir/$shaders_subdir\n\nDo you want to proceed?"; then
debug_print continue "Deleting $appdata_dir/$shaders_subdir..."
rm -r --interactive=never "${appdata_dir:?}/$shaders_subdir"
fi
else
debug_print continue "skipping $appdata_dir/$shaders_subdir"
fi fi
fi done
done done
message info "Shader operations completed" message info "Shader operations completed"
@ -2207,7 +2243,7 @@ maintenance_menu() {
# Configure the menu options # Configure the menu options
version_msg="Switch the Helper between LIVE/PTU/EPTU (Currently: $game_version)" version_msg="Switch the Helper between LIVE/PTU/EPTU (Currently: $game_version)"
userdir_msg="Delete my Star Citizen USER folder and preserve my keybinds" userdir_msg="Delete my user folder and preserve my keybinds and characters"
shaders_msg="Delete my shaders (Do this after each game update)" shaders_msg="Delete my shaders (Do this after each game update)"
vidcache_msg="Delete my DXVK cache" vidcache_msg="Delete my DXVK cache"
eac_msg="Deploy Global Easy Anti-Cheat Workaround" eac_msg="Deploy Global Easy Anti-Cheat Workaround"