67 lines
2.2 KiB
Bash
Executable File
67 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# Rebuild custom UI files using patches
|
|
# install.sh — apply patches to uifiles/isuldor/
|
|
# install.sh --update — regenerate *.diff from uifiles/isuldor/ (CRLF-normalized)
|
|
#
|
|
# Set EQ_GAME_PATH to your install root, or rely on auto-detection.
|
|
|
|
set -euo pipefail
|
|
|
|
UI_NAME=isuldor
|
|
SCRIPT_PATH=$(dirname "${0}")
|
|
# shellcheck source=eq-path.sh
|
|
source "${SCRIPT_PATH}/eq-path.sh"
|
|
|
|
GAME_PATH=$(resolve_game_path) || exit 1
|
|
UI_FOLDER="${GAME_PATH}/uifiles/${UI_NAME}"
|
|
DEFAULT_UI="${GAME_PATH}/uifiles/default"
|
|
|
|
# Stock uifiles/default/*.xml use CRLF; LF-only isuldor files produce whole-file diffs.
|
|
crlf_temp() {
|
|
local src=$1
|
|
local dest=$2
|
|
sed 's/$/\r/' "${src}" > "${dest}"
|
|
}
|
|
|
|
needs_crlf_diff() {
|
|
local default_xml=$1
|
|
file "${default_xml}" 2>/dev/null | grep -q CRLF
|
|
}
|
|
|
|
# Regenerate patch set from built skin
|
|
if [[ "${1:-}" == "-u" || "${1:-}" == "--update" ]]; then
|
|
echo "Updating patch set from ${UI_FOLDER}..."
|
|
UI_FILES=( $( find "${UI_FOLDER}" -name '*.xml' -exec basename {} .xml \; ))
|
|
for UI_FILE in "${UI_FILES[@]}"; do
|
|
default_xml="${DEFAULT_UI}/${UI_FILE}.xml"
|
|
isuldor_xml="${UI_FOLDER}/${UI_FILE}.xml"
|
|
out_diff="${SCRIPT_PATH}/${UI_FILE}.diff"
|
|
if needs_crlf_diff "${default_xml}"; then
|
|
crlf_temp "${isuldor_xml}" "${out_diff}.isuldor.crlf"
|
|
diff -u "${default_xml}" "${out_diff}.isuldor.crlf" > "${out_diff}"
|
|
rm -f "${out_diff}.isuldor.crlf"
|
|
else
|
|
diff -u "${default_xml}" "${isuldor_xml}" > "${out_diff}"
|
|
fi
|
|
echo " ${UI_FILE}.diff"
|
|
done
|
|
echo "Run: bash ui/verify.sh --record"
|
|
exit 0
|
|
fi
|
|
|
|
mkdir -vp "${UI_FOLDER}"
|
|
cp "${SCRIPT_PATH}"/*.tga "${UI_FOLDER}/"
|
|
|
|
UI_FILES=( $( find "${SCRIPT_PATH}" -name '*.diff' -exec basename {} .diff \; ))
|
|
|
|
for UI_FILE in "${UI_FILES[@]}"; do
|
|
if ! patch --ignore-whitespace --fuzz 3 -o "${UI_FOLDER}/${UI_FILE}.xml" \
|
|
"${DEFAULT_UI}/${UI_FILE}.xml" < "${SCRIPT_PATH}/${UI_FILE}.diff"; then
|
|
echo "Error: patch failed for ${UI_FILE}" >&2
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
echo "Installed ${#UI_FILES[@]} files to ${UI_FOLDER}"
|
|
echo "Set UISkin=${UI_NAME} in your character UI INI, then: bash ui/verify.sh --record"
|