Merge remote-tracking branch 'origin/feat/godot-configurator' into feat/gotdot-configurator
10
.github/workflows/cooker-selfhosted.yml
vendored
|
@ -171,6 +171,7 @@ jobs:
|
|||
# run: |
|
||||
# # Set variables for Gitea host, organization, repository, access token, and release details
|
||||
# GITEA_HOST="repo.retrodeck.net"
|
||||
# UPLOAD_HOST="upload.retrodeck.net"
|
||||
# ORGANIZATION="RetroDECK"
|
||||
# REPO="RetroDECK-cooker"
|
||||
# GITEA_TOKEN="${{ secrets.GITEA_TRIGGER_BUILD_TOKEN }}"
|
||||
|
@ -201,19 +202,22 @@ jobs:
|
|||
# # Upload artifacts
|
||||
# curl -X POST \
|
||||
# -H "Authorization: token ${GITEA_TOKEN}" \
|
||||
# -H "X-GitHub-Token: ${{ secrets.UPLOAD_TOKEN }}" \
|
||||
# -H "Content-Type: multipart/form-data" \
|
||||
# -F "attachment=@RetroDECK-cooker.flatpak" \
|
||||
# "http://$GITEA_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-cooker.flatpak"
|
||||
# "http://$UPLOAD_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-cooker.flatpak"
|
||||
|
||||
# # Upload artifacts sha
|
||||
# curl -X POST \
|
||||
# -H "Authorization: token ${GITEA_TOKEN}" \
|
||||
# -H "X-GitHub-Token: ${{ secrets.UPLOAD_TOKEN }}" \
|
||||
# -H "Content-Type: multipart/form-data" \
|
||||
# -F "attachment=@RetroDECK-cooker.flatpak.sha" \
|
||||
# "http://$GITEA_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-cooker.flatpak.sha"
|
||||
# "http://$UPLOAD_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-cooker.flatpak.sha"
|
||||
|
||||
# curl -X POST \
|
||||
# -H "Authorization: token ${GITEA_TOKEN}" \
|
||||
# -H "X-GitHub-Token: ${{ secrets.UPLOAD_TOKEN }}" \
|
||||
# -H "Content-Type: multipart/form-data" \
|
||||
# -F "attachment=@RetroDECK-Artifact.tar.gz" \
|
||||
# "http://$GITEA_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-Artifact.tar.gz"
|
||||
# "http://$UPLOAD_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-Artifact.tar.gz"
|
||||
|
|
10
.github/workflows/main-selfhosted.yml
vendored
|
@ -127,6 +127,7 @@ jobs:
|
|||
run: |
|
||||
# Set variables for Gitea host, organization, repository, access token, and release details
|
||||
GITEA_HOST="repo.retrodeck.net"
|
||||
UPLOAD_HOST="upload.retrodeck.net"
|
||||
ORGANIZATION="RetroDECK"
|
||||
REPO="RetroDECK"
|
||||
GITEA_TOKEN="${{ secrets.GITEA_TRIGGER_BUILD_TOKEN }}"
|
||||
|
@ -154,21 +155,24 @@ jobs:
|
|||
# Upload artifacts
|
||||
curl -X POST \
|
||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||
-H "X-GitHub-Token: ${{ secrets.UPLOAD_TOKEN }}" \
|
||||
-H "Content-Type: multipart/form-data" \
|
||||
-F "attachment=@RetroDECK.flatpak" \
|
||||
"http://$GITEA_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-cooker.flatpak"
|
||||
"http://$UPLOAD_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-cooker.flatpak"
|
||||
|
||||
curl -X POST \
|
||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||
-H "X-GitHub-Token: ${{ secrets.UPLOAD_TOKEN }}" \
|
||||
-H "Content-Type: multipart/form-data" \
|
||||
-F "attachment=@RetroDECK-Artifact.tar.gz" \
|
||||
"http://$GITEA_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-Artifact.tar.gz"
|
||||
"http://$UPLOAD_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-Artifact.tar.gz"
|
||||
|
||||
- name: Upload RetroDECK.flatpak.sha to Gitea Release
|
||||
run: |
|
||||
curl -X POST \
|
||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||
-H "X-GitHub-Token: ${{ secrets.UPLOAD_TOKEN }}" \
|
||||
-F "file=@RetroDECK.flatpak.sha" \
|
||||
"https://repo.retrodeck.net/RetroDECK/RetroDECK/releases/${{ env.REL_VER }}/assets?name=RetroDECK.flatpak.sha"
|
||||
"https://$UPLOAD_HOST/RetroDECK/RetroDECK/releases/${{ env.REL_VER }}/assets?name=RetroDECK.flatpak.sha"
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.GITEA_TRIGGER_BUILD_TOKEN }}
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
# Needs the URL of the file, in this line format: hash^PLACEHOLDERTEXT^url
|
||||
# latestcommit: Finds the most recent commit of a git repo and updated the placeholder in the manifest.
|
||||
# Needs the URL of the repo and the branch to find the latest commit from, in this line format: latestcommit^PLACEHOLDERTEXT^url^branch
|
||||
# latestghtag: Finds the most recent tag on a GitHub repo, for repos that don't have normal releases, but also shouldn't use the latest commit
|
||||
# Needs the URL of the repo, in this line format: latestghtag^PLACEHOLDERTEXT^url
|
||||
# latestghrelease: Finds the download URL and SHA256 hash of the latest release from a git repo.
|
||||
# Needs the API URL of the repo, in this line format: latestappimage^PLACEHOLDERTEXT^https://api.github.com/repos/<owner-name>/<repo-name>/releases/latest^<file suffix>
|
||||
# As this command updates two different placeholders (one for the URL, one for the file hash) in the manifest,
|
||||
|
@ -82,10 +84,20 @@ do
|
|||
/bin/sed -i 's^'"$placeholder"'^'"$commit"'^' $rd_manifest
|
||||
;;
|
||||
|
||||
"latestghtag" )
|
||||
echo
|
||||
echo "Placeholder text: $placeholder"
|
||||
echo "Repo to get the latest tag from: $url"
|
||||
echo
|
||||
tag=$(git ls-remote "$url" | tail -n 1 | cut -f2 | sed 's|refs/tags/||')
|
||||
echo "Tag found: $tag"
|
||||
/bin/sed -i 's^'"$placeholder"'^'"$tag"'^' $rd_manifest
|
||||
;;
|
||||
|
||||
"latestghrelease" )
|
||||
echo
|
||||
echo "Placeholder text: $placeholder"
|
||||
echo "Repo to look for AppImage releases: $url"
|
||||
echo "Repo to look for latest releases: $url"
|
||||
echo
|
||||
ghreleaseurl=$(curl -s "$url" | grep browser_download_url | grep "$branch\""$ | cut -d : -f 2,3 | tr -d \" | sed -n 1p | tr -d ' ')
|
||||
echo "GitHub release URL found: $ghreleaseurl"
|
||||
|
|
|
@ -42,100 +42,104 @@
|
|||
</trigger>
|
||||
<mappings>
|
||||
<entry>
|
||||
<mapping>24</mapping>
|
||||
<button>40</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>23</mapping>
|
||||
<button>46</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>22</mapping>
|
||||
<button>41</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>21</mapping>
|
||||
<button>47</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>20</mapping>
|
||||
<button>38</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>19</mapping>
|
||||
<button>44</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>18</mapping>
|
||||
<button>39</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>17</mapping>
|
||||
<button>45</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>16</mapping>
|
||||
<button>8</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>15</mapping>
|
||||
<button>7</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>14</mapping>
|
||||
<button>14</button>
|
||||
<mapping>12</mapping>
|
||||
<button>12</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>13</mapping>
|
||||
<button>13</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>12</mapping>
|
||||
<button>12</button>
|
||||
<mapping>14</mapping>
|
||||
<button>14</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>11</mapping>
|
||||
<button>11</button>
|
||||
<mapping>15</mapping>
|
||||
<button>7</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>10</mapping>
|
||||
<button>4</button>
|
||||
<mapping>16</mapping>
|
||||
<button>8</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>9</mapping>
|
||||
<button>6</button>
|
||||
<mapping>17</mapping>
|
||||
<button>45</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>8</mapping>
|
||||
<button>43</button>
|
||||
<mapping>18</mapping>
|
||||
<button>39</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>7</mapping>
|
||||
<button>42</button>
|
||||
<mapping>19</mapping>
|
||||
<button>44</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>6</mapping>
|
||||
<button>10</button>
|
||||
<mapping>20</mapping>
|
||||
<button>38</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>5</mapping>
|
||||
<button>9</button>
|
||||
<mapping>21</mapping>
|
||||
<button>47</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>4</mapping>
|
||||
<button>3</button>
|
||||
<mapping>22</mapping>
|
||||
<button>41</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>3</mapping>
|
||||
<button>2</button>
|
||||
<mapping>23</mapping>
|
||||
<button>46</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>25</mapping>
|
||||
<button>8</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>1</mapping>
|
||||
<button>0</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>2</mapping>
|
||||
<button>1</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>1</mapping>
|
||||
<button>0</button>
|
||||
<mapping>3</mapping>
|
||||
<button>2</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>4</mapping>
|
||||
<button>3</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>5</mapping>
|
||||
<button>9</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>6</mapping>
|
||||
<button>10</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>7</mapping>
|
||||
<button>42</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>8</mapping>
|
||||
<button>43</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>9</mapping>
|
||||
<button>6</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>10</mapping>
|
||||
<button>4</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>11</mapping>
|
||||
<button>11</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>24</mapping>
|
||||
<button>40</button>
|
||||
</entry>
|
||||
</mappings>
|
||||
</controller>
|
||||
|
|
|
@ -21,92 +21,56 @@
|
|||
</trigger>
|
||||
<mappings>
|
||||
<entry>
|
||||
<mapping>24</mapping>
|
||||
<button>40</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>23</mapping>
|
||||
<button>46</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>22</mapping>
|
||||
<button>41</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>21</mapping>
|
||||
<button>47</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>20</mapping>
|
||||
<button>38</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>19</mapping>
|
||||
<button>44</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>18</mapping>
|
||||
<button>39</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>17</mapping>
|
||||
<button>45</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>16</mapping>
|
||||
<button>8</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>15</mapping>
|
||||
<button>7</button>
|
||||
<mapping>1</mapping>
|
||||
<button>0</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>14</mapping>
|
||||
<button>14</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>1</mapping>
|
||||
<button>0</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>2</mapping>
|
||||
<button>1</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>3</mapping>
|
||||
<button>2</button>
|
||||
<mapping>15</mapping>
|
||||
<button>7</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>4</mapping>
|
||||
<button>3</button>
|
||||
<mapping>16</mapping>
|
||||
<button>8</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>5</mapping>
|
||||
<button>9</button>
|
||||
<mapping>17</mapping>
|
||||
<button>45</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>6</mapping>
|
||||
<button>10</button>
|
||||
<mapping>18</mapping>
|
||||
<button>39</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>7</mapping>
|
||||
<button>42</button>
|
||||
<mapping>19</mapping>
|
||||
<button>44</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>8</mapping>
|
||||
<button>43</button>
|
||||
<mapping>20</mapping>
|
||||
<button>38</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>9</mapping>
|
||||
<button>6</button>
|
||||
<mapping>21</mapping>
|
||||
<button>47</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>10</mapping>
|
||||
<button>4</button>
|
||||
<mapping>22</mapping>
|
||||
<button>41</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>11</mapping>
|
||||
<button>11</button>
|
||||
<mapping>23</mapping>
|
||||
<button>46</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>25</mapping>
|
||||
<button>8</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>12</mapping>
|
||||
|
@ -116,6 +80,46 @@
|
|||
<mapping>13</mapping>
|
||||
<button>13</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>11</mapping>
|
||||
<button>11</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>24</mapping>
|
||||
<button>40</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>10</mapping>
|
||||
<button>4</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>9</mapping>
|
||||
<button>6</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>8</mapping>
|
||||
<button>43</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>7</mapping>
|
||||
<button>42</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>6</mapping>
|
||||
<button>10</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>5</mapping>
|
||||
<button>9</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>4</mapping>
|
||||
<button>3</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>3</mapping>
|
||||
<button>2</button>
|
||||
</entry>
|
||||
</mappings>
|
||||
</controller>
|
||||
</emulated_controller>
|
||||
|
|
|
@ -21,8 +21,8 @@
|
|||
</trigger>
|
||||
<mappings>
|
||||
<entry>
|
||||
<mapping>24</mapping>
|
||||
<button>40</button>
|
||||
<mapping>25</mapping>
|
||||
<button>8</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>23</mapping>
|
||||
|
@ -60,18 +60,14 @@
|
|||
<mapping>15</mapping>
|
||||
<button>7</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>14</mapping>
|
||||
<button>14</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>1</mapping>
|
||||
<button>0</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>2</mapping>
|
||||
<button>1</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>14</mapping>
|
||||
<button>14</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>3</mapping>
|
||||
<button>2</button>
|
||||
|
@ -104,17 +100,25 @@
|
|||
<mapping>10</mapping>
|
||||
<button>4</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>24</mapping>
|
||||
<button>40</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>11</mapping>
|
||||
<button>11</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>13</mapping>
|
||||
<button>13</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>12</mapping>
|
||||
<button>12</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>13</mapping>
|
||||
<button>13</button>
|
||||
<mapping>1</mapping>
|
||||
<button>0</button>
|
||||
</entry>
|
||||
</mappings>
|
||||
</controller>
|
||||
|
|
|
@ -94,9 +94,9 @@
|
|||
<TVVolume>100</TVVolume>
|
||||
<PadVolume>100</PadVolume>
|
||||
<InputVolume>100</InputVolume>
|
||||
<TVDevice>alsa_output.pci-0000_04_00.5-platform-acp5x_mach.0.HiFi__hw_acp5x_1__sink</TVDevice>
|
||||
<PadDevice>alsa_output.pci-0000_04_00.5-platform-acp5x_mach.0.HiFi__hw_acp5x_1__sink</PadDevice>
|
||||
<InputDevice>filter-chain-source</InputDevice>
|
||||
<TVDevice>default</TVDevice>
|
||||
<PadDevice>default</PadDevice>
|
||||
<InputDevice>default</InputDevice>
|
||||
</Audio>
|
||||
<Account>
|
||||
<PersistentId>2147483649</PersistentId>
|
||||
|
|
|
@ -26,6 +26,29 @@ compress_game() {
|
|||
elif [[ "$1" == "rvz" ]]; then
|
||||
dolphin-tool convert -f rvz -b 131072 -c zstd -l 5 -i "$source_file" -o "$dest_file.rvz"
|
||||
fi
|
||||
|
||||
if [[ $post_compression_cleanup == "true" ]]; then # Remove file(s) if requested
|
||||
if [[ -f "${file%.*}.$compatible_compression_format" ]]; then
|
||||
log i "Performing post-compression file cleanup"
|
||||
if [[ "$file" == *".cue" ]]; then
|
||||
local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" "$file")
|
||||
local file_path=$(dirname "$(realpath "$file")")
|
||||
while IFS= read -r line
|
||||
do
|
||||
log i "Removing file $file_path/$line"
|
||||
rm -f "$file_path/$line"
|
||||
done < <(printf '%s\n' "$cue_bin_files")
|
||||
log i "Removing file $(realpath $file)"
|
||||
rm -f $(realpath "$file")
|
||||
else
|
||||
log i "Removing file $(realpath $file)"
|
||||
rm -f "$(realpath "$file")"
|
||||
fi
|
||||
else
|
||||
log i "Compressed file ${file%.*}.$compatible_compression_format not found, skipping original file deletion"
|
||||
configurator_generic_dialog "RetroDECK Configurator - RetroDECK: Compression Tool" "A compressed version of the file was not found, skipping deletion."
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
find_compatible_compression_format() {
|
||||
|
@ -66,7 +89,7 @@ validate_for_chd() {
|
|||
log i "Validating .cue associated .bin files"
|
||||
local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" "$file")
|
||||
log i "Associated bin files read:"
|
||||
log i $(printf '%s\n' "$cue_bin_files")
|
||||
log i "$(printf '%s\n' "$cue_bin_files")"
|
||||
if [[ ! -z "$cue_bin_files" ]]; then
|
||||
while IFS= read -r line
|
||||
do
|
||||
|
@ -96,6 +119,71 @@ validate_for_chd() {
|
|||
fi
|
||||
}
|
||||
|
||||
find_compatible_games() {
|
||||
# The function takes the following arguments, which alter what files are compressed:
|
||||
# "everything" - Compresses all games found into their compatible formats
|
||||
# "all" - Compresses a list of user-chosen files into their compatible formats
|
||||
# "chd" or "zip" or "rvz" - Compresses a list of user-chosen files into the given format
|
||||
|
||||
if [[ -f "$godot_compression_compatible_games" ]]; then
|
||||
rm -f "$godot_compression_compatible_games" # Godot data transfer temp files
|
||||
fi
|
||||
touch "$godot_compression_compatible_games"
|
||||
|
||||
compressable_games_list=()
|
||||
all_compressable_games=()
|
||||
games_to_compress=()
|
||||
target_selection="$1"
|
||||
|
||||
if [[ "$1" == "everything" ]]; then
|
||||
local compression_format="all"
|
||||
else
|
||||
local compression_format="$1"
|
||||
fi
|
||||
|
||||
if [[ $compression_format == "all" ]]; then
|
||||
local compressable_systems_list=$(cat $compression_targets | sed '/^$/d' | sed '/^\[/d')
|
||||
else
|
||||
local compressable_systems_list=$(sed -n '/\['"$compression_format"'\]/, /\[/{ /\['"$compression_format"'\]/! { /\[/! p } }' $compression_targets | sed '/^$/d')
|
||||
fi
|
||||
|
||||
while IFS= read -r system # Find and validate all games that are able to be compressed with this compression type
|
||||
do
|
||||
compression_candidates=$(find "$roms_folder/$system" -type f -not -iname "*.txt")
|
||||
if [[ ! -z $compression_candidates ]]; then
|
||||
while IFS= read -r game
|
||||
do
|
||||
local compatible_compression_format=$(find_compatible_compression_format "$game")
|
||||
if [[ $compression_format == "chd" ]]; then
|
||||
if [[ $compatible_compression_format == "chd" ]]; then
|
||||
all_compressable_games=("${all_compressable_games[@]}" "$game")
|
||||
compressable_games_list=("${compressable_games_list[@]}" "false" "${game#$roms_folder}" "$game")
|
||||
echo "${game}"^"$compatible_compression_format" >> "$godot_compression_compatible_games"
|
||||
fi
|
||||
elif [[ $compression_format == "zip" ]]; then
|
||||
if [[ $compatible_compression_format == "zip" ]]; then
|
||||
all_compressable_games=("${all_compressable_games[@]}" "$game")
|
||||
compressable_games_list=("${compressable_games_list[@]}" "false" "${game#$roms_folder}" "$game")
|
||||
echo "${game}"^"$compatible_compression_format" >> "$godot_compression_compatible_games"
|
||||
fi
|
||||
elif [[ $compression_format == "rvz" ]]; then
|
||||
if [[ $compatible_compression_format == "rvz" ]]; then
|
||||
all_compressable_games=("${all_compressable_games[@]}" "$game")
|
||||
compressable_games_list=("${compressable_games_list[@]}" "false" "${game#$roms_folder}" "$game")
|
||||
echo "${game}"^"$compatible_compression_format" >> "$godot_compression_compatible_games"
|
||||
fi
|
||||
elif [[ $compression_format == "all" ]]; then
|
||||
if [[ ! $compatible_compression_format == "none" ]]; then
|
||||
all_compressable_games=("${all_compressable_games[@]}" "$game")
|
||||
compressable_games_list=("${compressable_games_list[@]}" "false" "${game#$roms_folder}" "$game")
|
||||
echo "${game}"^"$compatible_compression_format" >> "$godot_compression_compatible_games"
|
||||
fi
|
||||
fi
|
||||
done < <(printf '%s\n' "$compression_candidates")
|
||||
fi
|
||||
done < <(printf '%s\n' "$compressable_systems_list")
|
||||
}
|
||||
|
||||
cli_compress_single_game() {
|
||||
# This function will compress a single file passed from the CLI arguments
|
||||
# USAGE: cli_compress_single_game $full_file_path
|
||||
|
@ -109,26 +197,6 @@ cli_compress_single_game() {
|
|||
if [[ ! $compatible_compression_format == "none" ]]; then
|
||||
log i "$(basename "$file") can be compressed to $compatible_compression_format"
|
||||
compress_game "$compatible_compression_format" "$file" "$system"
|
||||
if [[ $post_compression_cleanup == [yY] ]]; then # Remove file(s) if requested
|
||||
if [[ -f "${file%.*}.$compatible_compression_format" ]]; then
|
||||
if [[ $(basename "$file") == *".cue" ]]; then
|
||||
local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" "$file")
|
||||
local file_path=$(dirname "$(realpath "$file")")
|
||||
while IFS= read -r line
|
||||
do # Remove associated .bin files
|
||||
log i "Removing original file "$file_path/$line""
|
||||
rm -f "$file_path/$line"
|
||||
done < <(printf '%s\n' "$cue_bin_files") # Remove original .cue file
|
||||
log i "Removing original file $(basename "$file")"
|
||||
rm -f "$file"
|
||||
else
|
||||
log i "Removing original file $(basename "$file")"
|
||||
rm -f "$file"
|
||||
fi
|
||||
else
|
||||
log w "Compressed version of $(basename "$file") not found, skipping deletion."
|
||||
fi
|
||||
fi
|
||||
else
|
||||
log w "$(basename "$file") does not have any compatible compression formats."
|
||||
fi
|
||||
|
@ -171,26 +239,6 @@ cli_compress_all_games() {
|
|||
if [[ ! "$compatible_compression_format" == "none" ]]; then
|
||||
log i "$(basename "$file") can be compressed to $compatible_compression_format"
|
||||
compress_game "$compatible_compression_format" "$file" "$system"
|
||||
if [[ $post_compression_cleanup == [yY] ]]; then # Remove file(s) if requested
|
||||
if [[ -f "${file%.*}.$compatible_compression_format" ]]; then
|
||||
if [[ "$file" == *".cue" ]]; then
|
||||
local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" "$file")
|
||||
local file_path=$(dirname "$(realpath "$file")")
|
||||
while IFS= read -r line
|
||||
do # Remove associated .bin files
|
||||
log i "Removing original file "$file_path/$line""
|
||||
rm -f "$file_path/$line"
|
||||
done < <(printf '%s\n' "$cue_bin_files") # Remove original .cue file
|
||||
log i "Removing original file "$file""
|
||||
rm -f $(realpath "$file")
|
||||
else
|
||||
log i "Removing original file "$file""
|
||||
rm -f $(realpath "$file")
|
||||
fi
|
||||
else
|
||||
log w "Compressed version of $(basename "$file") not found, skipping deletion."
|
||||
fi
|
||||
fi
|
||||
else
|
||||
log w "No compatible compression format found for $(basename "$file")"
|
||||
fi
|
||||
|
|
64
functions/configurator_functions.sh
Normal file
|
@ -0,0 +1,64 @@
|
|||
#!/bin/bash
|
||||
|
||||
check_bios_files() {
|
||||
# This function validates all the BIOS files listed in the $bios_checklist and adds the results to an array called $bios_checked_list which can be used elsewhere
|
||||
# There is a "basic" and "expert" mode which outputs different levels of data
|
||||
# USAGE: check_bios_files "mode"
|
||||
|
||||
if [[ -f "$godot_bios_files_checked" ]]; then
|
||||
rm -f "$godot_bios_files_checked" # Godot data transfer temp files
|
||||
fi
|
||||
touch "$godot_bios_files_checked"
|
||||
|
||||
while IFS="^" read -r bios_file bios_subdir bios_hash bios_system bios_desc
|
||||
do
|
||||
bios_file_found="No"
|
||||
bios_hash_matched="No"
|
||||
if [[ -f "$bios_folder/$bios_subdir$bios_file" ]]; then
|
||||
bios_file_found="Yes"
|
||||
if [[ $bios_hash == "Unknown" ]]; then
|
||||
bios_hash_matched="Unknown"
|
||||
elif [[ $(md5sum "$bios_folder/$bios_subdir$bios_file" | awk '{ print $1 }') == "$bios_hash" ]]; then
|
||||
bios_hash_matched="Yes"
|
||||
fi
|
||||
fi
|
||||
if [[ "$1" == "basic" ]]; then
|
||||
bios_checked_list=("${bios_checked_list[@]}" "$bios_file" "$bios_system" "$bios_file_found" "$bios_hash_matched" "$bios_desc")
|
||||
echo "$bios_file"^"$bios_system"^"$bios_file_found"^"$bios_hash_matched"^"$bios_desc" >> "$godot_bios_files_checked" # Godot data transfer temp file
|
||||
else
|
||||
bios_checked_list=("${bios_checked_list[@]}" "$bios_file" "$bios_system" "$bios_file_found" "$bios_hash_matched" "$bios_desc" "$bios_subdir" "$bios_hash")
|
||||
echo "$bios_file"^"$bios_system"^"$bios_file_found"^"$bios_hash_matched"^"$bios_desc"^"$bios_subdir"^"$bios_hash" >> "$godot_bios_files_checked" # Godot data transfer temp file
|
||||
fi
|
||||
done < $bios_checklist
|
||||
}
|
||||
|
||||
find_empty_rom_folders() {
|
||||
# This function will build an array of all the system subfolders in $roms_folder which are either empty or contain only systeminfo.txt for easy removal
|
||||
|
||||
if [[ -f "$godot_empty_roms_folders" ]]; then
|
||||
rm -f "$godot_empty_roms_folders" # Godot data transfer temp files
|
||||
fi
|
||||
touch "$godot_empty_roms_folders"
|
||||
|
||||
empty_rom_folders_list=()
|
||||
all_empty_folders=()
|
||||
|
||||
for system in $(find "$roms_folder" -mindepth 1 -maxdepth 1 -type d -printf '%f\n')
|
||||
do
|
||||
local dir="$roms_folder/$system"
|
||||
local files=$(ls -A1 "$dir")
|
||||
local count=$(ls -A "$dir" | wc -l)
|
||||
|
||||
if [[ $count -eq 0 ]]; then
|
||||
# Directory is empty
|
||||
empty_rom_folders_list=("${empty_rom_folders_list[@]}" "false" "$(realpath $dir)")
|
||||
all_empty_folders=("${all_empty_folders[@]}" "$(realpath $dir)")
|
||||
echo "$(realpath $dir)" >> "$godot_empty_roms_folders" # Godot data transfer temp file
|
||||
elif [[ $count -eq 1 ]] && [[ "$(basename "${files[0]}")" == "systeminfo.txt" ]]; then
|
||||
# Directory contains only systeminfo.txt
|
||||
empty_rom_folders_list=("${empty_rom_folders_list[@]}" "false" "$(realpath $dir)")
|
||||
all_empty_folders=("${all_empty_folders[@]}" "$(realpath $dir)")
|
||||
echo "$(realpath $dir)" >> "$godot_empty_roms_folders" # Godot data transfer temp file
|
||||
fi
|
||||
done
|
||||
}
|
|
@ -7,12 +7,13 @@ source /app/libexec/checks.sh
|
|||
source /app/libexec/compression.sh
|
||||
source /app/libexec/dialogs.sh
|
||||
source /app/libexec/logger.sh
|
||||
source /app/libexec/functions.sh
|
||||
source /app/libexec/other_functions.sh
|
||||
source /app/libexec/multi_user.sh
|
||||
source /app/libexec/framework.sh
|
||||
source /app/libexec/post_update.sh
|
||||
source /app/libexec/prepare_component.sh
|
||||
source /app/libexec/presets.sh
|
||||
source /app/libexec/configurator_fuctions.sh
|
||||
|
||||
# Static variables
|
||||
rd_conf="/var/config/retrodeck/retrodeck.cfg" # RetroDECK config file path
|
||||
|
@ -52,6 +53,9 @@ pretty_system_names_reference_list="$emuconfigs/defaults/retrodeck/reference_lis
|
|||
# Godot data transfer temp files
|
||||
|
||||
godot_bios_files_checked="/var/config/retrodeck/godot/godot_bios_files_checked.tmp"
|
||||
godot_current_preset_settings="/var/config/retrodeck/godot/godot_current_preset_settings.tmp"
|
||||
godot_compression_compatible_games="/var/config/retrodeck/godot/godot_compression_compatible_games.tmp"
|
||||
godot_empty_roms_folders="/var/config/retrodeck/godot/godot_empty_roms_folders.tmp"
|
||||
|
||||
# Config files for emulators with single config files
|
||||
|
||||
|
@ -131,6 +135,11 @@ if [[ ! -d "$rd_logs_folder/ES-DE" ]]; then
|
|||
dir_prep "$rd_logs_folder/ES-DE" "$es_source_logs"
|
||||
fi
|
||||
|
||||
# Initialize location of Godot temp data files, if it doesn't exist
|
||||
if [[ ! -d "/var/config/retrodeck/godot" ]]; then
|
||||
create_dir "/var/config/retrodeck/godot"
|
||||
fi
|
||||
|
||||
# We moved the lockfile in /var/config/retrodeck in order to solve issue #53 - Remove in a few versions
|
||||
if [[ -f "$HOME/retrodeck/.lock" ]]; then
|
||||
mv "$HOME/retrodeck/.lock" $lockfile
|
||||
|
|
|
@ -86,11 +86,11 @@ log() {
|
|||
esac
|
||||
|
||||
# Display the message in the terminal
|
||||
echo -e "$colored_message"
|
||||
echo -e "$colored_message" >&2
|
||||
|
||||
# Write the log message to the log file
|
||||
if [ ! -f "$logfile" ]; then
|
||||
echo "$timestamp [WARN] Log file not found in \"$logfile\", creating it"
|
||||
echo "$timestamp [WARN] Log file not found in \"$logfile\", creating it" >&2
|
||||
touch "$logfile"
|
||||
fi
|
||||
echo "$log_message" >> "$logfile"
|
||||
|
|
|
@ -286,36 +286,6 @@ dir_prep() {
|
|||
log i "$symlink is now $real"
|
||||
}
|
||||
|
||||
check_bios_files() {
|
||||
# This function validates all the BIOS files listed in the $bios_checklist and adds the results to an array called bios_checked_list which can be used elsewhere
|
||||
# There is a "basic" and "expert" mode which outputs different levels of data
|
||||
# USAGE: check_bios_files "mode"
|
||||
|
||||
rm -f "$godot_bios_files_checked" # Godot data transfer temp files
|
||||
touch "$godot_bios_files_checked"
|
||||
|
||||
while IFS="^" read -r bios_file bios_subdir bios_hash bios_system bios_desc
|
||||
do
|
||||
bios_file_found="No"
|
||||
bios_hash_matched="No"
|
||||
if [[ -f "$bios_folder/$bios_subdir$bios_file" ]]; then
|
||||
bios_file_found="Yes"
|
||||
if [[ $bios_hash == "Unknown" ]]; then
|
||||
bios_hash_matched="Unknown"
|
||||
elif [[ $(md5sum "$bios_folder/$bios_subdir$bios_file" | awk '{ print $1 }') == "$bios_hash" ]]; then
|
||||
bios_hash_matched="Yes"
|
||||
fi
|
||||
fi
|
||||
if [[ "$1" == "basic" ]]; then
|
||||
bios_checked_list=("${bios_checked_list[@]}" "$bios_file" "$bios_system" "$bios_file_found" "$bios_hash_matched" "$bios_desc")
|
||||
echo "$bios_file"^"$bios_system"^"$bios_file_found"^"$bios_hash_matched"^"$bios_desc" >> "$godot_bios_files_checked" # Godot data transfer temp file
|
||||
else
|
||||
bios_checked_list=("${bios_checked_list[@]}" "$bios_file" "$bios_system" "$bios_file_found" "$bios_hash_matched" "$bios_desc" "$bios_subdir" "$bios_hash")
|
||||
echo "$bios_file"^"$bios_system"^"$bios_file_found"^"$bios_hash_matched"^"$bios_desc"^"$bios_subdir"^"$bios_hash" >> "$godot_bios_files_checked" # Godot data transfer temp file
|
||||
fi
|
||||
done < $bios_checklist
|
||||
}
|
||||
|
||||
update_rpcs3_firmware() {
|
||||
create_dir "$roms_folder/ps3/tmp"
|
||||
chmod 777 "$roms_folder/ps3/tmp"
|
||||
|
@ -699,7 +669,7 @@ ponzu() {
|
|||
rm -rf "$rdhome/ponzu"
|
||||
}
|
||||
|
||||
ponzu_remove(){
|
||||
ponzu_remove() {
|
||||
|
||||
# Call me with yuzu or citra and I will remove them
|
||||
|
|
@ -12,10 +12,12 @@ prepare_component() {
|
|||
action="$1"
|
||||
component=$(echo "$2" | tr '[:upper:]' '[:lower:]')
|
||||
call_source="$3"
|
||||
component_found="false"
|
||||
|
||||
log d "Preparing component: \"$component\", action: \"$action\""
|
||||
|
||||
if [[ "$component" == "retrodeck" ]]; then
|
||||
component_found="true"
|
||||
if [[ "$action" == "reset" ]]; then # Update the paths of all folders in retrodeck.cfg and create them
|
||||
while read -r config_line; do
|
||||
local current_setting_name=$(get_setting_name "$config_line" "retrodeck")
|
||||
|
@ -49,9 +51,10 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(es-de|all)$ ]]; then # For use after ESDE-related folders are moved or a reset
|
||||
log i "--------------------------------"
|
||||
log i "Prepearing ES-DE"
|
||||
log i "--------------------------------"
|
||||
component_found="true"
|
||||
log i "--------------------------------"
|
||||
log i "Prepearing ES-DE"
|
||||
log i "--------------------------------"
|
||||
if [[ "$action" == "reset" ]]; then
|
||||
rm -rf /var/config/ES-DE
|
||||
create_dir /var/config/ES-DE/settings
|
||||
|
@ -77,9 +80,10 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(retroarch|all)$ ]]; then
|
||||
log i "--------------------------------"
|
||||
log i "Prepearing RetroArch"
|
||||
log i "--------------------------------"
|
||||
component_found="true"
|
||||
log i "--------------------------------"
|
||||
log i "Prepearing RetroArch"
|
||||
log i "--------------------------------"
|
||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
||||
create_dir -d "$multi_user_data_folder/$SteamAppUser/config/retroarch"
|
||||
|
@ -211,6 +215,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(citra|citra-emu|all)$ ]]; then
|
||||
component_found="true"
|
||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||
log i "------------------------"
|
||||
log i "Prepearing CITRA"
|
||||
|
@ -256,6 +261,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(cemu|all)$ ]]; then
|
||||
component_found="true"
|
||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||
log i "----------------------"
|
||||
log i "Prepearing CEMU"
|
||||
|
@ -283,6 +289,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(dolphin|dolphin-emu|all)$ ]]; then
|
||||
component_found="true"
|
||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||
log i "----------------------"
|
||||
log i "Prepearing DOLPHIN"
|
||||
|
@ -336,6 +343,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(duckstation|all)$ ]]; then
|
||||
component_found="true"
|
||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||
log i "------------------------"
|
||||
log i "Prepearing DUCKSTATION"
|
||||
|
@ -381,6 +389,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(melonds|all)$ ]]; then
|
||||
component_found="true"
|
||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||
log i "----------------------"
|
||||
log i "Prepearing MELONDS"
|
||||
|
@ -419,6 +428,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(pcsx2|all)$ ]]; then
|
||||
component_found="true"
|
||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||
log i "----------------------"
|
||||
log i "Prepearing PCSX2"
|
||||
|
@ -463,6 +473,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(pico8|pico-8|all)$ ]]; then
|
||||
component_found="true"
|
||||
if [[ ("$action" == "reset") || ("$action" == "postmove") ]]; then
|
||||
dir_prep "$bios_folder/pico-8" "$HOME/.lexaloffle/pico-8" # Store binary and config files together. The .lexaloffle directory is a hard-coded location for the PICO-8 config file, cannot be changed
|
||||
dir_prep "$roms_folder/pico8" "$bios_folder/pico-8/carts" # Symlink default game location to RD roms for cleanliness (this location is overridden anyway by the --root_path launch argument anyway)
|
||||
|
@ -473,6 +484,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(ppsspp|all)$ ]]; then
|
||||
component_found="true"
|
||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||
log i "------------------------"
|
||||
log i "Prepearing PPSSPPSDL"
|
||||
|
@ -501,6 +513,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(primehack|all)$ ]]; then
|
||||
component_found="true"
|
||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||
log i "----------------------"
|
||||
log i "Prepearing Primehack"
|
||||
|
@ -544,6 +557,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(rpcs3|all)$ ]]; then
|
||||
component_found="true"
|
||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||
log i "------------------------"
|
||||
log i "Prepearing RPCS3"
|
||||
|
@ -580,6 +594,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(ryujinx|all)$ ]]; then
|
||||
component_found="true"
|
||||
# NOTE: for techincal reasons the system folder of Ryujinx IS NOT a sumlink of the bios/switch/keys as not only the keys are located there
|
||||
# When RetroDECK starts there is a "manage_ryujinx_keys" function that symlinks the keys only in Rryujinx/system.
|
||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||
|
@ -624,6 +639,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(yuzu|all)$ ]]; then
|
||||
component_found="true"
|
||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||
log i "----------------------"
|
||||
log i "Prepearing YUZU"
|
||||
|
@ -677,6 +693,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(xemu|all)$ ]]; then
|
||||
component_found="true"
|
||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||
log i "------------------------"
|
||||
log i "Prepearing XEMU"
|
||||
|
@ -721,6 +738,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(vita3k|all)$ ]]; then
|
||||
component_found="true"
|
||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||
log i "----------------------"
|
||||
log i "Prepearing Vita3K"
|
||||
|
@ -745,6 +763,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(mame|all)$ ]]; then
|
||||
component_found="true"
|
||||
# TODO: do a proper script
|
||||
# This is just a placeholder script to test the emulator's flow
|
||||
log i "----------------------"
|
||||
|
@ -814,6 +833,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(gzdoom|all)$ ]]; then
|
||||
component_found="true"
|
||||
# TODO: do a proper script
|
||||
# This is just a placeholder script to test the emulator's flow
|
||||
log i "----------------------"
|
||||
|
@ -834,6 +854,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(boilr|all)$ ]]; then
|
||||
component_found="true"
|
||||
log i "----------------------"
|
||||
log i "Prepearing BOILR"
|
||||
log i "----------------------"
|
||||
|
@ -842,7 +863,7 @@ prepare_component() {
|
|||
cp -fvr "/app/libexec/steam-sync/config.toml" "/var/config/boilr"
|
||||
fi
|
||||
|
||||
if [[ ! "$component" =~ ^(retrodeck|es-de|retroarch|citra|citra-emu|cemu|dolphin|dolphin-emu|duckstation|melonds|melonDS|pcsx2|pico8|pico-8|ppsspp|primehack|rpcs3|ryujinx|yuzu|xemu|vita3k|mame|gzdoom|boilr|)$ ]]; then
|
||||
if [[ $component_found="false" ]]; then
|
||||
log e "Supplied component $component not found, not resetting"
|
||||
fi
|
||||
|
||||
|
|
|
@ -4,28 +4,7 @@ change_preset_dialog() {
|
|||
# This function will build a list of all systems compatible with a given preset, their current enable/disabled state and allow the user to change one or more
|
||||
# USAGE: change_preset_dialog "$preset"
|
||||
|
||||
local preset="$1"
|
||||
pretty_preset_name=${preset//_/ } # Preset name prettification
|
||||
pretty_preset_name=$(echo $pretty_preset_name | awk '{for(i=1;i<=NF;i++){$i=toupper(substr($i,1,1))substr($i,2)}}1') # Preset name prettification
|
||||
local current_preset_settings=()
|
||||
local current_enabled_systems=()
|
||||
local current_disabled_systems=()
|
||||
local changed_systems=()
|
||||
local changed_presets=()
|
||||
local section_results=$(sed -n '/\['"$preset"'\]/, /\[/{ /\['"$preset"'\]/! { /\[/! p } }' $rd_conf | sed '/^$/d')
|
||||
|
||||
while IFS= read -r config_line
|
||||
do
|
||||
system_name=$(get_setting_name "$config_line" "retrodeck")
|
||||
all_systems=("${all_systems[@]}" "$system_name")
|
||||
system_value=$(get_setting_value "$rd_conf" "$system_name" "retrodeck" "$preset")
|
||||
if [[ "$system_value" == "true" ]]; then
|
||||
current_enabled_systems=("${current_enabled_systems[@]}" "$system_name")
|
||||
elif [[ "$system_value" == "false" ]]; then
|
||||
current_disabled_systems=("${current_disabled_systems[@]}" "$system_name")
|
||||
fi
|
||||
current_preset_settings=("${current_preset_settings[@]}" "$system_value" "$(make_name_pretty $system_name)" "$system_name")
|
||||
done < <(printf '%s\n' "$section_results")
|
||||
build_preset_list_options "$1"
|
||||
|
||||
choice=$(zenity \
|
||||
--list --width=1200 --height=720 \
|
||||
|
@ -42,7 +21,56 @@ change_preset_dialog() {
|
|||
|
||||
if [[ ! -z $choice || "$rc" == 0 ]]; then
|
||||
(
|
||||
IFS="," read -ra choices <<< "$choice"
|
||||
make_preset_changes
|
||||
) |
|
||||
zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator Utility - Presets Configuration" \
|
||||
--text="Setting up your presets, please wait..."
|
||||
else
|
||||
echo "No choices made"
|
||||
fi
|
||||
}
|
||||
|
||||
build_preset_list_options() {
|
||||
# This function will build a list of all the systems available for a given preset
|
||||
# The list will be generated into a Godot temp file and the variable $current_preset_settings
|
||||
|
||||
if [[ -f "$godot_current_preset_settings" ]]; then
|
||||
rm -f "$godot_current_preset_settings" # Godot data transfer temp files
|
||||
fi
|
||||
touch "$godot_current_preset_settings"
|
||||
|
||||
preset="$1"
|
||||
pretty_preset_name=${preset//_/ } # Preset name prettification
|
||||
pretty_preset_name=$(echo $pretty_preset_name | awk '{for(i=1;i<=NF;i++){$i=toupper(substr($i,1,1))substr($i,2)}}1') # Preset name prettification
|
||||
current_preset_settings=()
|
||||
current_enabled_systems=()
|
||||
current_disabled_systems=()
|
||||
changed_systems=()
|
||||
changed_presets=()
|
||||
local section_results=$(sed -n '/\['"$preset"'\]/, /\[/{ /\['"$preset"'\]/! { /\[/! p } }' $rd_conf | sed '/^$/d')
|
||||
|
||||
while IFS= read -r config_line
|
||||
do
|
||||
system_name=$(get_setting_name "$config_line" "retrodeck")
|
||||
all_systems=("${all_systems[@]}" "$system_name")
|
||||
system_value=$(get_setting_value "$rd_conf" "$system_name" "retrodeck" "$preset")
|
||||
if [[ "$system_value" == "true" ]]; then
|
||||
current_enabled_systems=("${current_enabled_systems[@]}" "$system_name")
|
||||
elif [[ "$system_value" == "false" ]]; then
|
||||
current_disabled_systems=("${current_disabled_systems[@]}" "$system_name")
|
||||
fi
|
||||
current_preset_settings=("${current_preset_settings[@]}" "$system_value" "$(make_name_pretty $system_name)" "$system_name")
|
||||
echo "$system_value"^"$(make_name_pretty $system_name)"^"$system_name" >> "$godot_current_preset_settings"
|
||||
done < <(printf '%s\n' "$section_results")
|
||||
}
|
||||
|
||||
|
||||
make_preset_changes() {
|
||||
# This function will take an array $choices, which contains the names of systems that have been enabled for this preset and enable them in the backend
|
||||
|
||||
IFS="," read -ra choices <<< "$choice"
|
||||
for emulator in "${all_systems[@]}"; do
|
||||
if [[ " ${choices[*]} " =~ " ${emulator} " && ! " ${current_enabled_systems[*]} " =~ " ${emulator} " ]]; then
|
||||
changed_systems=("${changed_systems[@]}" "$emulator")
|
||||
|
@ -71,14 +99,6 @@ change_preset_dialog() {
|
|||
for emulator in "${changed_systems[@]}"; do
|
||||
build_preset_config $emulator ${changed_presets[*]}
|
||||
done
|
||||
) |
|
||||
zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator Utility - Presets Configuration" \
|
||||
--text="Setting up your presets, please wait..."
|
||||
else
|
||||
echo "No choices made"
|
||||
fi
|
||||
}
|
||||
|
||||
build_preset_config() {
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
Subproject commit ea1dae930a6f61388c2b5e05f95bb6ed0120926e
|
1
rd-submodules/ryujinx/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
.flatpak-builder
|
3
rd-submodules/ryujinx/.gitmodules
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
[submodule "flatpak-builder-tools"]
|
||||
path = flatpak-builder-tools
|
||||
url = https://github.com/flatpak/flatpak-builder-tools.git
|
3
rd-submodules/ryujinx/flathub.json
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"only-arches": ["x86_64"]
|
||||
}
|
1058
rd-submodules/ryujinx/org.ryujinx.Ryujinx.appdata.xml
Normal file
82
rd-submodules/ryujinx/org.ryujinx.Ryujinx.yml
Normal file
|
@ -0,0 +1,82 @@
|
|||
app-id: org.ryujinx.Ryujinx
|
||||
runtime: org.freedesktop.Platform
|
||||
runtime-version: '22.08'
|
||||
sdk: org.freedesktop.Sdk
|
||||
add-extensions:
|
||||
org.freedesktop.Platform.ffmpeg-full:
|
||||
version: '22.08'
|
||||
directory: lib/ffmpeg
|
||||
add-ld-path: .
|
||||
finish-args:
|
||||
- --share=ipc
|
||||
- --socket=x11
|
||||
- --device=all
|
||||
- --socket=pulseaudio
|
||||
- --share=network
|
||||
- --filesystem=home:ro
|
||||
- --filesystem=xdg-run/app/com.discordapp.Discord:create
|
||||
- --filesystem=xdg-config/gtk-3.0:ro
|
||||
rename-icon: ryujinx
|
||||
command: ryujinx-wrapper
|
||||
modules:
|
||||
- name: Ryujinx
|
||||
buildsystem: simple
|
||||
build-options:
|
||||
no-debuginfo: true
|
||||
no-debuginfo-compression: true
|
||||
strip: false
|
||||
arch:
|
||||
x86_64:
|
||||
env:
|
||||
RUNTIME: linux-x64
|
||||
env:
|
||||
PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
|
||||
DOTNET_CLI_TELEMETRY_OPTOUT: 'true'
|
||||
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 'true'
|
||||
RYUJINX_VERSION: 1.1.1035
|
||||
RYUJINX_TARGET_RELEASE_CHANNEL_OWNER: flathub
|
||||
RYUJINX_TARGET_RELEASE_CHANNEL_REPO: org.ryujinx.Ryujinx
|
||||
RYUJINX_TARGET_RELEASE_CHANNEL_NAME: master
|
||||
build-commands:
|
||||
- |
|
||||
export PATH=$PATH:/run/build/Ryujinx/dotnet-sdk
|
||||
export RYUJINX_GIT_SHORT_HASH=$(git rev-parse --short HEAD)
|
||||
export RUNTIME_FRAMEWORK_VERSION=$(find nuget-sources -name 'microsoft.netcore.app.host.linux-x64.*' | grep -oP '(\d.\d.\d+.nupkg)' | grep -oP '(\d.\d.\d+)')
|
||||
sed -r --in-place "s/\%\%RYUJINX_BUILD_VERSION\%\%/$RYUJINX_VERSION/g;" src/Ryujinx.Common/ReleaseInformation.cs
|
||||
sed -r --in-place "s/\%\%RYUJINX_BUILD_GIT_HASH\%\%/$RYUJINX_GIT_SHORT_HASH/g;" src/Ryujinx.Common/ReleaseInformation.cs
|
||||
sed -r --in-place "s/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_NAME\%\%/$RYUJINX_TARGET_RELEASE_CHANNEL_NAME/g;" src/Ryujinx.Common/ReleaseInformation.cs
|
||||
sed -r --in-place "s/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_OWNER\%\%/$RYUJINX_TARGET_RELEASE_CHANNEL_OWNER/g;" src/Ryujinx.Common/ReleaseInformation.cs
|
||||
sed -r --in-place "s/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_REPO\%\%/$RYUJINX_TARGET_RELEASE_CHANNEL_REPO/g;" src/Ryujinx.Common/ReleaseInformation.cs
|
||||
mkdir -p /app/bin
|
||||
dotnet publish -c Release -r $RUNTIME /p:DebugType=embedded src/Ryujinx /p:Version=$RYUJINX_VERSION /p:SourceRevisionId=$RYUJINX_GIT_SHORT_HASH /p:ExtraDefineConstants="DISABLE_UPDATER%2CFORCE_EXTERNAL_BASE_DIR" /p:RuntimeFrameworkVersion=$RUNTIME_FRAMEWORK_VERSION --self-contained --source nuget-sources
|
||||
if [ $? -ne 0 ]; then
|
||||
exit 1;
|
||||
fi;
|
||||
cp -r --remove-destination /run/build/Ryujinx/src/Ryujinx/bin/Release/net7.0/$RUNTIME/publish/* /app/bin/
|
||||
mkdir -p /app/lib/ffmpeg
|
||||
ln -s /usr/lib/x86_64-linux-gnu/libX11.so.6 /app/lib/libX11.so
|
||||
install -Dm644 $FLATPAK_ID.appdata.xml /app/share/metainfo/$FLATPAK_ID.appdata.xml
|
||||
install -Dm755 ryujinx-wrapper /app/bin/ryujinx-wrapper
|
||||
install -Dm644 distribution/misc/Logo.svg /app/share/icons/hicolor/scalable/apps/ryujinx.svg
|
||||
install -Dm644 distribution/linux/mime/Ryujinx.xml /app/share/mime/packages/$FLATPAK_ID.mime.xml
|
||||
install -Dm644 distribution/linux/Ryujinx.desktop /app/share/applications/$FLATPAK_ID.desktop
|
||||
desktop-file-edit --set-key="Exec" --set-value="ryujinx-wrapper %f" /app/share/applications/$FLATPAK_ID.desktop
|
||||
sources:
|
||||
- type: archive
|
||||
only-arches:
|
||||
- x86_64
|
||||
dest: dotnet-sdk
|
||||
url: https://dotnetcli.azureedge.net/dotnet/Sdk/7.0.401/dotnet-sdk-7.0.401-linux-x64.tar.gz
|
||||
sha256: 4634fa4da7ae4e3dadb83e320a87fb26f0cb12a7ca02bf9f10e6c3c1c91d645c
|
||||
x-checker-data:
|
||||
type: rotating-url
|
||||
url: https://aka.ms/dotnet/7.0/dotnet-sdk-linux-x64.tar.gz
|
||||
pattern: https://dotnetcli.azureedge.net/dotnet/Sdk/^([\d\.a-z-]+)$/dotnet-sdk-^([\d\.a-z-]+)$-linux-x64.tar.gz
|
||||
- nuget_sources.json
|
||||
- type: git
|
||||
url: https://github.com/Ryujinx/Ryujinx.git
|
||||
commit: bc44b85b0bdcaf8140a04130e4a895677a01111f
|
||||
- type: file
|
||||
path: ryujinx-wrapper
|
||||
- type: file
|
||||
path: org.ryujinx.Ryujinx.appdata.xml
|
BIN
rd-submodules/ryujinx/screenshots/01.jpg
Normal file
After Width: | Height: | Size: 5.7 MiB |
BIN
rd-submodules/ryujinx/screenshots/02.jpg
Normal file
After Width: | Height: | Size: 1.4 MiB |
BIN
rd-submodules/ryujinx/screenshots/03.jpg
Normal file
After Width: | Height: | Size: 4.6 MiB |
141
res/extra_splashes/rd-pride.svg
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
res/icon-pride.png
Normal file
After Width: | Height: | Size: 6.9 KiB |
100
res/icon-pride.svg
Normal file
|
@ -0,0 +1,100 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="100%"
|
||||
height="100%"
|
||||
viewBox="0 0 256 256"
|
||||
version="1.1"
|
||||
xml:space="preserve"
|
||||
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"
|
||||
id="svg17"
|
||||
sodipodi:docname="icon (pride).svg"
|
||||
inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:serif="http://www.serif.com/"><sodipodi:namedview
|
||||
id="namedview19"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#111111"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="1"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
showgrid="false"
|
||||
inkscape:zoom="3.3398438"
|
||||
inkscape:cx="147.31228"
|
||||
inkscape:cy="177.85263"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1009"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="Left-Symbol" />
|
||||
<g
|
||||
transform="matrix(1.88235,0,0,1.86861,-7.52941,-5.60584)"
|
||||
id="g4">
|
||||
<path
|
||||
d="M140,37.25C140,18.347 124.765,3 106,3L38,3C19.235,3 4,18.347 4,37.25L4,105.75C4,124.653 19.235,140 38,140L106,140C124.765,140 140,124.653 140,105.75L140,37.25Z"
|
||||
style="fill:rgb(17,17,17);"
|
||||
id="path2" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(2.02105,0,0,2.02105,-13.4737,-13.4737)"
|
||||
id="g12">
|
||||
<g
|
||||
id="D"
|
||||
transform="matrix(-0.674885,8.26495e-17,-8.26495e-17,-0.674885,223.747,109.037)">
|
||||
<path
|
||||
d="M172.54,-2.511C175.786,-5.757 179.378,-8.24 183.315,-9.96C187.251,-11.68 191.533,-12.54 196.16,-12.54L271.855,-12.54L271.855,6.901L196.16,6.901C194.44,6.901 192.823,7.222 191.309,7.864C189.795,8.506 188.475,9.39 187.348,10.517C186.222,11.643 185.337,12.964 184.695,14.478C184.053,15.992 183.732,17.609 183.732,19.329L183.732,96.355C183.732,97.954 184.084,99.498 184.786,100.988C185.489,102.478 186.416,103.798 187.566,104.949C188.717,106.1 190.037,107.027 191.527,107.729C193.017,108.432 194.562,108.783 196.16,108.783L271.855,108.783L271.855,128.224L196.16,128.224C193.859,128.224 191.624,127.982 189.456,127.498C187.288,127.013 185.204,126.329 183.206,125.444C181.207,124.56 179.311,123.5 177.518,122.265C175.726,121.029 174.066,119.673 172.54,118.195C169.366,115.118 166.901,111.575 165.145,107.566C163.389,103.556 162.51,99.226 162.51,94.574L162.51,21.11C162.51,16.458 163.37,12.17 165.09,8.246C166.811,4.321 169.294,0.736 172.54,-2.511Z"
|
||||
style="fill:white;fill-rule:nonzero;"
|
||||
id="path6" />
|
||||
</g>
|
||||
<g
|
||||
id="Left-Symbol"
|
||||
serif:id="Left Symbol"
|
||||
transform="matrix(0.494792,-0,-0,0.494792,6.66667,6.66667)">
|
||||
<path
|
||||
id="rect6600"
|
||||
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;fill:url(#pattern7632);stroke:none;stroke-width:0.999998"
|
||||
d="M 47.199248 80.802785 C 45.822808 80.802785 44.569351 81.044902 43.441434 81.527395 C 42.313512 82.009865 41.343959 82.696403 40.531275 83.587943 C 39.718995 84.47953 39.092064 85.5436 38.652368 86.781305 C 38.212654 88.019017 37.994165 89.393933 37.994165 90.904354 L 38.021508 168.91026 L 54.769566 168.91026 L 54.769566 134.23446 L 97.697327 134.23446 L 123.50594 168.91026 L 144.29501 168.91026 L 118.4864 134.23446 L 118.80281 134.23446 C 121.49824 134.23446 123.9587 133.88769 126.18563 133.1954 C 128.413 132.50312 130.41571 131.54371 132.19344 130.31649 C 133.97116 129.0893 135.52516 127.63538 136.8536 125.95711 C 138.18246 124.27862 139.2867 122.44931 140.1661 120.46687 C 141.0455 118.48428 141.70493 116.39222 142.14462 114.18952 C 142.58434 111.98667 142.80282 109.76227 142.80282 107.51765 C 142.82193 105.31474 142.61167 103.12832 142.17196 100.95709 C 141.73228 98.786016 141.07285 96.708861 140.19345 94.726622 C 139.31404 92.744383 138.21178 90.902392 136.8829 89.203181 C 135.55439 87.503908 133.99477 86.036596 132.20711 84.798881 C 130.41986 83.561223 128.413 82.584399 126.18563 81.871145 C 123.95873 81.157899 121.49637 80.802785 118.80086 80.802785 L 47.199248 80.802785 z M 54.769566 97.63678 L 118.4864 97.63678 C 119.76727 97.63678 120.87996 97.919949 121.82625 98.48639 C 122.77254 99.052829 123.55673 99.797753 124.17781 100.72077 C 124.79933 101.64378 125.26257 102.69763 125.56844 103.88288 C 125.87432 105.06816 126.02275 106.27995 126.01375 107.51765 C 126.0044 108.75534 125.8409 109.96715 125.52547 111.15241 C 125.21005 112.33768 124.73643 113.3915 124.10555 114.31452 C 123.47468 115.23757 122.6907 115.98249 121.75398 116.5489 C 120.81726 117.1153 119.72901 117.39851 118.4864 117.39851 L 54.769566 117.39851 L 54.769566 97.63678 z "
|
||||
transform="translate(2.6596517e-5,2.6596517e-5)" />
|
||||
</g>
|
||||
</g>
|
||||
<defs
|
||||
id="defs15"><pattern
|
||||
inkscape:collect="always"
|
||||
xlink:href="#pattern6592"
|
||||
id="pattern7632"
|
||||
patternTransform="matrix(0.13680989,0,0,0.18355902,37.993601,80.802163)" />
|
||||
<image
|
||||
id="_Image1"
|
||||
width="104px"
|
||||
height="79px"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAABPCAYAAAAHtYAvAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAGHUlEQVR4nO2de2xTVRzHP6cbe4qg8jB1ioQMcDJAHgEVMPyjgaAGQR4xhAxEGfIY8gaBGCXGGEULjMG2FhEG6JCBhEgEJWRBBkaDopIYwRAsigSHoMLa3usftzVla7eu/bWU9HySJvd37jnfnNzvPae95/Scq2hE7cTz6YZigqEYYKAKTUWhoehoKDBQmAqsYzCUwlBYaUGxocBsFBuAGS7Gn6ZUkFaQfnOx/9hsFIfSalE7rJa/rk3jBkNRbyjqDVS9qfjRUBw3FMcM1IlvXkpvaHx9W4sKDo5McPc1lKo0FP2aGKINajYOca3+MBSlpqL02+L0C9EaZAscfDnBPRs4DvSLVkxzAx2BlcDZXmXeioIy34PRiNgA6sa7+wBvA+ly9dP4yQSmAid7bvDt77HR16c1hW11493pQAXanETwOFCbX+4bGWkBGzAOGBC3KmkacxvwSbdyoziSzDZgYHzrowmBDSjtWmG81aXSsLWUsVdi6qQJwXxgy31OQ4XLYAMKE1cfTQgmApPDnbQBnRNXF00YVuc5TXuoE832f5qE0R5Yb3eZTbo6bVDy8BQwvnGiNii5WGN3mbnBCdqg5KIDMCo4QRuUfEwMDiSGd5YCLgGdWw0bUAAM8X+GI3PDj7C7zPbuIlUPMgZdHlPZ6TcBnVsRN3AAYLDDMxL4EMhttkTLZACj8d/0uosT4ujsNvuAYcDvAnL/d3PaIEHqZrX5GlgsIDUs8EykDZJnK3A2Ro1M4E7QBolzfGYbD/COgNQ9oA2KF0cFNLRBceS0gIY2KI5cBK7GqKENiiOK2J8xvaANihd5QFaMGr+CNihe5AtonANtULwYLqChDYoHA9d62gEzBaR0FxcnZgHtYtT4y12kroBlkBlzlTQADFrjGQ0sE5A6HDjQLUiIwQ5PCbCT2H+9AWwPHEjMB927c+qFvim4/MRmQKGhGGoohhrQXeBaAlwD9gQCCYMWIzPErrHYG/j+Ad3FJSPbgwNtUHJxEdgXnKANSi5muYvUv8EJ2qDkoQbY0ThRG5Qc/AnMcBepJs+k2qDkoOTcFHU+1Ak9knDzqQI+CHdSt6Cby5vApLNTbGEbiV7ZfXPwAsVnnrdVtJRRG5R4LgNjf55mOxBJZt3FJQ4T66f0wz9NS4vIHNAtKBFcBSoBx6kX01r9dyxtUPz4BXAAzpPT0y9HKyJh0BXgHwGdeHM7kC2o58VaflKP9b1SD5wCvvJ/zpyYkR7zI4zIdMOYyk6lAjpxZeqrfxcAdVhbsUiggMm1czIOCemFJGV+JFSuzP0BeE5QMg2oHvJew/2Cmk1IqZEE54rcPcByQcm7gN2POBpiXVUXlpRpQUGsAqoF9XoDmwY7PGH324mFlDNo04pcEygCvhOUHYu1mFqclDMIYPPy3KvA08AlQdnXBq3xPCmoB6SoQQBbXsk5AzwL+IQkFbB14FrPA0J6QAobBFC1LOdzYK6gZFtgd/91njukBFPaID9rAaegXj6w7aF13jQJsZQ3aNuyHBOYgcy60gBPAG9ICKW8QQA7luZcB57BGrqRYkGfUm/MD8baID8fLck+j7UFy3VB2Yre670x7aicUiMJLbFzSfYx4AVBySxgV68y793RCugW1Ihdi7M3A6sFJfOA6oIyX0Y0hbVBoVmIfxcrIR4F1vbc4Gv1cJA2KAQ1i7K9WPuHSmxIEWAaML21hbRBYdizMOsS1kavsW5IEYyjx0bfY60poA1qhr0Ls74HJglKpgPV+eW+LpEW0Aa1wL4FWTVY7wGSogNQ063ciGgOSRsUGa8DHwvq9QWcXSvCv7MhgDYoAj6dn2VgvV/hpKDsOCJYOqoNipD98zLjMYe0qkulMaq5DHokoRV8Ni/zNNadLzmHVHWf0+gZLoNuQa3k4MuZB4F5gpJtgd15TrN9qJPaoOhwAJsE9boDVXaX2WQOSRsUBV/MzTSBYqw/QkoxAusfRzegDYqSQyUZ17DmkEIuXYySRXaXecO7G7RBMXC4JMONNYcU8yuhg3DaXWb/QKANipHaORl1yM8h1dhdZmfQBolwZHbG+8C7gpJ5QLXdZWZog+RYABwU1BsCOP4DNMctuHcT4JEAAAAASUVORK5CYII=" />
|
||||
<pattern
|
||||
patternUnits="userSpaceOnUse"
|
||||
width="777"
|
||||
height="480"
|
||||
id="pattern6592"><path
|
||||
fill="#770088"
|
||||
d="M 0,0 H 777 V 480 H 0 Z"
|
||||
id="path6457" /><path
|
||||
fill="#004cff"
|
||||
d="M 0,0 H 777 V 400 H 0 Z"
|
||||
id="path6459" /><path
|
||||
fill="#028121"
|
||||
d="M 0,0 H 777 V 320 H 0 Z"
|
||||
id="path6461" /><path
|
||||
fill="#ffee00"
|
||||
d="M 0,0 H 777 V 240 H 0 Z"
|
||||
id="path6463" /><path
|
||||
fill="#ff8d00"
|
||||
d="M 0,0 H 777 V 160 H 0 Z"
|
||||
id="path6465" /><path
|
||||
fill="#e50000"
|
||||
d="M 0,0 H 777 V 80 H 0 Z"
|
||||
id="path6467" /></pattern></defs>
|
||||
</svg>
|
After Width: | Height: | Size: 7.8 KiB |
|
@ -52,6 +52,8 @@ source /app/libexec/global.sh
|
|||
# - Move Screenshots folder
|
||||
# - Move Mods folder
|
||||
# - Move Texture Packs folder
|
||||
# - Tool: Remove Empty ROM Folders
|
||||
# - Tool: Rebuild All ROM Folders
|
||||
# - Tool: Compress Games
|
||||
# - Compress Single Game
|
||||
# - Compress Multiple Games - CHD
|
||||
|
@ -559,6 +561,8 @@ configurator_retrodeck_tools_dialog() {
|
|||
|
||||
local choices=(
|
||||
"Tool: Move Folders" "Move RetroDECK folders between internal/SD card or to a custom location"
|
||||
"Tool: Remove Empty ROM Folders" "Remove some or all of the empty ROM folders"
|
||||
"Tool: Rebuild All ROM Folders" "Rebuild any missing default ROM folders"
|
||||
"Tool: Compress Games" "Compress games for systems that support it"
|
||||
"Install: RetroDECK Controller Layouts" "Install the custom RetroDECK controller layouts on Steam"
|
||||
"Install: PS3 Firmware" "Download and install PS3 firmware for use with the RPCS3 emulator"
|
||||
|
@ -585,6 +589,44 @@ configurator_retrodeck_tools_dialog() {
|
|||
configurator_retrodeck_move_tool_dialog
|
||||
;;
|
||||
|
||||
"Tool: Remove Empty ROM Folders" )
|
||||
log i "Configurator: opening \"$choice\" menu"
|
||||
find_empty_rom_folders
|
||||
|
||||
choice=$(zenity \
|
||||
--list --width=1200 --height=720 --title "RetroDECK Configurator - RetroDECK: Remove Empty ROM Folders" \
|
||||
--checklist --hide-column=3 --ok-label="Remove Selected" --extra-button="Remove All" \
|
||||
--separator="," --print-column=2 \
|
||||
--text="Choose which ROM folders to remove:" \
|
||||
--column "Remove?" \
|
||||
--column "System" \
|
||||
"${empty_rom_folders_list[@]}")
|
||||
|
||||
local rc=$?
|
||||
if [[ $rc == "0" && ! -z $choice ]]; then # User clicked "Remove Selected" with at least one system selected
|
||||
IFS="," read -ra folders_to_remove <<< "$choice"
|
||||
for folder in "${folders_to_remove[@]}"; do
|
||||
log i "Removing empty folder $folder"
|
||||
rm -f "$folder"
|
||||
done
|
||||
elif [[ ! -z $choice ]]; then # User clicked "Remove All"
|
||||
for folder in "${all_empty_folders[@]}"; do
|
||||
log i "Removing empty folder $folder"
|
||||
rm -f "$folder"
|
||||
done
|
||||
fi
|
||||
|
||||
configurator_generic_dialog "RetroDECK Configurator - Remove Empty ROM Folders" "The removal process is complete."
|
||||
configurator_retrodeck_tools_dialog
|
||||
;;
|
||||
|
||||
"Tool: Rebuild All ROM Folders" )
|
||||
log i "Configurator: opening \"$choice\" menu"
|
||||
es-de --create-system-dirs
|
||||
configurator_generic_dialog "RetroDECK Configurator - Rebuild All ROM Folders" "The rebuilding process is complete.\n\nAll missing default ROM folders will now exist in $roms_folder"
|
||||
configurator_retrodeck_tools_dialog
|
||||
;;
|
||||
|
||||
"Tool: Compress Games" )
|
||||
log i "Configurator: opening \"$choice\" menu"
|
||||
configurator_generic_dialog "RetroDECK Configurator - Compression Tool" "Depending on your library and compression choices, the process can sometimes take a long time.\nPlease be patient once it is started!"
|
||||
|
@ -794,28 +836,6 @@ configurator_compress_single_game_dialog() {
|
|||
echo "# Compressing $(basename "$file") to $compatible_compression_format format" # This updates the Zenity dialog
|
||||
log i "Compressing $(basename "$file") to $compatible_compression_format format"
|
||||
compress_game "$compatible_compression_format" "$file" "$system"
|
||||
if [[ $post_compression_cleanup == "true" ]]; then # Remove file(s) if requested
|
||||
if [[ -f "${file%.*}.$compatible_compression_format" ]]; then
|
||||
log i "Performing post-compression file cleanup"
|
||||
if [[ "$file" == *".cue" ]]; then
|
||||
local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" "$file")
|
||||
local file_path=$(dirname "$(realpath "$file")")
|
||||
while IFS= read -r line
|
||||
do
|
||||
log i "Removing file $file_path/$line"
|
||||
rm -f "$file_path/$line"
|
||||
done < <(printf '%s\n' "$cue_bin_files")
|
||||
log i "Removing file $(realpath $file)"
|
||||
rm -f $(realpath "$file")
|
||||
else
|
||||
log i "Removing file $(realpath $file)"
|
||||
rm -f "$(realpath "$file")"
|
||||
fi
|
||||
else
|
||||
log i "Compressed file ${file%.*}.$compatible_compression_format not found, skipping original file deletion"
|
||||
configurator_generic_dialog "RetroDECK Configurator - RetroDECK: Compression Tool" "A compressed version of the file was not found, skipping deletion."
|
||||
fi
|
||||
fi
|
||||
) |
|
||||
zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
|
@ -835,54 +855,7 @@ configurator_compress_single_game_dialog() {
|
|||
configurator_compress_multiple_games_dialog() {
|
||||
# This dialog will display any games it finds to be compressable, from the systems listed under each compression type in compression_targets.cfg
|
||||
|
||||
local compressable_games_list=()
|
||||
local all_compressable_games=()
|
||||
local games_to_compress=()
|
||||
local target_selection="$1"
|
||||
|
||||
if [[ "$1" == "everything" ]]; then
|
||||
local compression_format="all"
|
||||
else
|
||||
local compression_format="$1"
|
||||
fi
|
||||
|
||||
if [[ $compression_format == "all" ]]; then
|
||||
local compressable_systems_list=$(cat $compression_targets | sed '/^$/d' | sed '/^\[/d')
|
||||
else
|
||||
local compressable_systems_list=$(sed -n '/\['"$compression_format"'\]/, /\[/{ /\['"$compression_format"'\]/! { /\[/! p } }' $compression_targets | sed '/^$/d')
|
||||
fi
|
||||
|
||||
while IFS= read -r system # Find and validate all games that are able to be compressed with this compression type
|
||||
do
|
||||
compression_candidates=$(find "$roms_folder/$system" -type f -not -iname "*.txt")
|
||||
if [[ ! -z $compression_candidates ]]; then
|
||||
while IFS= read -r game
|
||||
do
|
||||
local compatible_compression_format=$(find_compatible_compression_format "$game")
|
||||
if [[ $compression_format == "chd" ]]; then
|
||||
if [[ $compatible_compression_format == "chd" ]]; then
|
||||
all_compressable_games=("${all_compressable_games[@]}" "$game")
|
||||
compressable_games_list=("${compressable_games_list[@]}" "false" "${game#$roms_folder}" "$game")
|
||||
fi
|
||||
elif [[ $compression_format == "zip" ]]; then
|
||||
if [[ $compatible_compression_format == "zip" ]]; then
|
||||
all_compressable_games=("${all_compressable_games[@]}" "$game")
|
||||
compressable_games_list=("${compressable_games_list[@]}" "false" "${game#$roms_folder}" "$game")
|
||||
fi
|
||||
elif [[ $compression_format == "rvz" ]]; then
|
||||
if [[ $compatible_compression_format == "rvz" ]]; then
|
||||
all_compressable_games=("${all_compressable_games[@]}" "$game")
|
||||
compressable_games_list=("${compressable_games_list[@]}" "false" "${game#$roms_folder}" "$game")
|
||||
fi
|
||||
elif [[ $compression_format == "all" ]]; then
|
||||
if [[ ! $compatible_compression_format == "none" ]]; then
|
||||
all_compressable_games=("${all_compressable_games[@]}" "$game")
|
||||
compressable_games_list=("${compressable_games_list[@]}" "false" "${game#$roms_folder}" "$game")
|
||||
fi
|
||||
fi
|
||||
done < <(printf '%s\n' "$compression_candidates")
|
||||
fi
|
||||
done < <(printf '%s\n' "$compressable_systems_list")
|
||||
find_compatible_games "$1"
|
||||
|
||||
if [[ ! "$target_selection" == "everything" ]]; then # If the user chose to not auto-compress everything
|
||||
choice=$(zenity \
|
||||
|
@ -922,27 +895,6 @@ configurator_compress_multiple_games_dialog() {
|
|||
games_left_to_compress=$((games_left_to_compress-1))
|
||||
log i "Games left to compress: $games_left_to_compress"
|
||||
compress_game "$compression_format" "$file" "$system"
|
||||
if [[ $post_compression_cleanup == "true" ]]; then # Remove file(s) if requested
|
||||
if [[ -f "${file%.*}.$compatible_compression_format" ]]; then
|
||||
if [[ "$file" == *".cue" ]]; then
|
||||
local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" "$file")
|
||||
local file_path=$(dirname "$(realpath "$file")")
|
||||
while IFS= read -r line
|
||||
do
|
||||
log i "Removing file $file_path/$line"
|
||||
rm -f "$file_path/$line"
|
||||
done < <(printf '%s\n' "$cue_bin_files")
|
||||
log i "Removing file $(realpath $file)"
|
||||
rm -f $(realpath "$file")
|
||||
else
|
||||
log i "Removing file $(realpath $file)"
|
||||
rm -f "$(realpath "$file")"
|
||||
fi
|
||||
else
|
||||
log i "Compressed file ${file%.*}.$compatible_compression_format not found, skipping original file deletion"
|
||||
configurator_generic_dialog "RetroDECK Configurator - RetroDECK: Compression Tool" "Compression of $(basename $file) failed, skipping deletion."
|
||||
fi
|
||||
fi
|
||||
done
|
||||
) |
|
||||
zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --auto-close \
|
||||
|
|
112
tools/configurator/ENG-DESCRIPTIONS-TEMP.txt
Normal file
|
@ -0,0 +1,112 @@
|
|||
Quick Resume
|
||||
Activate "Quick Resume" to continue playing your games from where you left off. With Quick Resume enabled, the system automatically saves your progress when you close a game and loads it when you start the game again.
|
||||
Please note that certain systems, like DOS, PS2, PS3, PSVita, and Switch, do not currently support this feature.
|
||||
|
||||
Rewind
|
||||
When "Rewind" is turned on, hold HOTKEY + L2 to rewind your gameplay, allowing you to alter your destiny. Keep in mind that activating this feature might cause slowdowns on some systems.
|
||||
Note: "Rewind" is not supported on certain systems, including DOS, PS2, PS3, PSVita, and Switch.
|
||||
|
||||
Quit Confirmation
|
||||
Activate "Quit Confirmation" to prevent accidental exits. This feature prompts you before quitting a game, ensuring you don't lose progress unintentionally.
|
||||
|
||||
Cheats
|
||||
Unlock extra fun with "Cheats." Enable cheat codes to gain advantages to simplify your gaming experience.
|
||||
|
||||
Borders
|
||||
Enable or disable the drawing of borders around the game.
|
||||
Note: this will disable the "Widescreen option".
|
||||
|
||||
Wide Screen
|
||||
If enabled it widens the display, providing a more expansive gaming experience on supported systems.
|
||||
Note: this will disable the "Borders option".
|
||||
|
||||
Shaders
|
||||
When turned on, "Shaders" displays the game just like it appeared on the original console's screen.
|
||||
|
||||
Mods
|
||||
Enable or disable the loading of the installed mods.
|
||||
|
||||
TATE Mode
|
||||
Turn on "TATE Mode" for games that support vertical screen orientation. This feature allows you to enjoy selected titles in portrait mode, mimicking the arcade experience.
|
||||
"Tate" (縦) means "vertical" in Japanese.
|
||||
|
||||
Steam: Controller Templates
|
||||
Install the RetroDECK controller templates fror Steam. Once installed they will be automatically updated when an update is available.
|
||||
The controller templates will enable hotkeys and raidal menu (radial menu is currently available on Steam Deck trackpad only).
|
||||
Check the wiki for further details.
|
||||
|
||||
Button Layout
|
||||
Select the desired button layout:
|
||||
Classic: A, B X and Y are in the Steam Deck/Xbox layout.
|
||||
Nintendo: A and B got their function inverted, same for X and Y like in the Nintendo controllers.
|
||||
|
||||
Hotkey Activation Sound
|
||||
When this option is enabled you will hear a sound when the HOTKEY button is pressed.
|
||||
|
||||
[scan]
|
||||
PlayStation 3 Games <- remove
|
||||
|
||||
ScummVM Games
|
||||
Generate the entries of ScummVM games to adhere to the RetroDECK/ES-DE standard.
|
||||
More on this in the wiki.
|
||||
|
||||
Multi-file Structure
|
||||
Group the multi disc or multi file games as a single game entry on the games list.
|
||||
More on this in the wiki.
|
||||
|
||||
3DS Game Decrypter
|
||||
Decrypt your 3DS games.
|
||||
Note: you should provide the keys file, more on this in the wiki.
|
||||
|
||||
BIOS
|
||||
Check which BIOS files are recognized by RetroDECK and which ones are missing.
|
||||
|
||||
Open Emulator...
|
||||
Open an emulator to manually tweak the configurations.
|
||||
WARNING: this can breaking for the less expert users, you can always reset them by going to Troubleshoot > Reset menu.
|
||||
|
||||
Install RetroDECK Steam Grids <- rename to Add RetroDECK to Steam
|
||||
|
||||
Show Favorites as Steam Games
|
||||
If this option is enabled the game marked as favorites will be added to Steam, when disabled they will be removed.
|
||||
NOTE: the RetroDECK controller layout is not automatically applied to the single game entries.
|
||||
|
||||
USB Transfer Tool
|
||||
Backup User Data
|
||||
Compress Games
|
||||
Move User Files
|
||||
|
||||
Retro Aechievements
|
||||
Advanced
|
||||
Hardcore Mode
|
||||
Show Throphies
|
||||
Login
|
||||
|
||||
Netplay ID
|
||||
Address
|
||||
Connect <- this is wrong probably, should be a toggle on Netplay ID?
|
||||
|
||||
Saves Sync
|
||||
Start FTP Server <- Rename to SFTP
|
||||
|
||||
Check Connection
|
||||
Show Logs
|
||||
|
||||
[reset]
|
||||
Single Emulator...
|
||||
All Emulators
|
||||
Full RetroDECK Reset
|
||||
|
||||
Update Notification
|
||||
Show Easter Eggs <- rename in Seasonal Loading Screen
|
||||
Multi-User Mode (off, steam users, custom users) rename to retrodeck users
|
||||
Menu Music
|
||||
|
||||
[about]
|
||||
Website
|
||||
Version History
|
||||
Wiki
|
||||
Credits
|
||||
Donate
|
||||
Reach Us
|
||||
Licenses
|
5
tools/configurator/Rekku.gd
Normal file
|
@ -0,0 +1,5 @@
|
|||
extends Control
|
||||
|
||||
func _input(event):
|
||||
if event.is_action_pressed("rekku_hide"):
|
||||
self.visible = !self.visible
|
27
tools/configurator/TabContainer.gd
Normal file
|
@ -0,0 +1,27 @@
|
|||
extends TabContainer
|
||||
|
||||
func _ready():
|
||||
focusFirstFocusableChild() #grab focus on first element to enable controller focusing
|
||||
|
||||
func _input(event):
|
||||
if (event.is_action_pressed("next_tab")):
|
||||
self.select_next_available()
|
||||
focusFirstFocusableChild()
|
||||
|
||||
if (event.is_action_pressed("previous_tab")):
|
||||
self.select_previous_available()
|
||||
focusFirstFocusableChild()
|
||||
|
||||
func focusFirstFocusableChild():
|
||||
var children = findElements(get_current_tab_control(), "Control")
|
||||
for n: Control in children:
|
||||
if (n.focus_mode == FOCUS_ALL):
|
||||
n.grab_focus.call_deferred()
|
||||
break
|
||||
|
||||
func findElements(node: Node, className: String, result: Array = []) -> Array:
|
||||
if node.is_class(className):
|
||||
result.push_back(node)
|
||||
for child in node.get_children():
|
||||
result = findElements(child, className, result)
|
||||
return result
|
45
tools/configurator/components/bios_check/bios_check.gd
Normal file
|
@ -0,0 +1,45 @@
|
|||
extends Control
|
||||
|
||||
var file := FileAccess
|
||||
var bios_tempfile : String
|
||||
var BIOS_COLUMNS_BASIC := ["BIOS File Name", "System", "Found", "Hash Match", "Description"]
|
||||
var BIOS_COLUMNS_EXPERT := ["BIOS File Name", "System", "Found", "Hash Match", "Description", "Subdirectory", "Hash"]
|
||||
@onready var bios_type:int = get_tree().current_scene.bios_type
|
||||
|
||||
func _ready():
|
||||
#Check if XDG_RUNTIME_DIR is set and choose temp file location
|
||||
if OS.has_environment("XDG_RUNTIME_DIR"):
|
||||
bios_tempfile = OS.get_environment("XDG_RUNTIME_DIR") + "/godot_temp/godot_bios_files_checked.tmp"
|
||||
else:
|
||||
bios_tempfile = "/var/config/retrodeck/godot_temp/godot_bios_files_checked.tmp"
|
||||
|
||||
var table := $Table
|
||||
|
||||
if bios_type == 0: #Basic BIOS button pressed
|
||||
table.columns = BIOS_COLUMNS_BASIC.size()
|
||||
for i in BIOS_COLUMNS_BASIC.size():
|
||||
table.set_column_title(i, BIOS_COLUMNS_BASIC[i])
|
||||
else: #Assume advanced BIOS button pressed
|
||||
table.columns = BIOS_COLUMNS_EXPERT.size()
|
||||
for i in BIOS_COLUMNS_EXPERT.size():
|
||||
table.set_column_title(i, BIOS_COLUMNS_EXPERT[i])
|
||||
|
||||
var root = table.create_item()
|
||||
table.hide_root = true
|
||||
|
||||
if bios_type == 0: #Basic BIOS button pressed
|
||||
OS.execute("/app/tools/retrodeck_function_wrapper.sh",["check_bios_files", "basic"])
|
||||
else: #Assume advanced BIOS button pressed
|
||||
OS.execute("/app/tools/retrodeck_function_wrapper.sh",["check_bios_files"])
|
||||
|
||||
if file.file_exists(bios_tempfile): #File to be removed after script is done
|
||||
var bios_list := file.open(bios_tempfile, FileAccess.READ)
|
||||
var bios_line := []
|
||||
while ! bios_list.eof_reached():
|
||||
bios_line = bios_list.get_csv_line("^")
|
||||
var table_line: TreeItem = table.create_item(root)
|
||||
for i in bios_line.size():
|
||||
table_line.set_text(i, bios_line[i])
|
||||
if table_line.get_index() % 2 == 1:
|
||||
table_line.set_custom_bg_color(i,Color(0.15, 0.15, 0.15, 1),false)
|
||||
table_line.set_custom_color(i,Color(1,1,1,1))
|
|
@ -0,0 +1,38 @@
|
|||
[gd_scene load_steps=2 format=3 uid="uid://bihon3xtx45y7"]
|
||||
|
||||
[ext_resource type="Script" path="res://components/bios_check/bios_check.gd" id="1_qrkee"]
|
||||
|
||||
[node name="PopupContent" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_qrkee")
|
||||
|
||||
[node name="RichTextLabel" type="RichTextLabel" parent="."]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
text = "This is a list of problematic BIOS?
|
||||
Very multiline text
|
||||
Why do we use it?
|
||||
|
||||
PS3 BIOS IS VERY BAD
|
||||
I'm not sure what else?"
|
||||
|
||||
[node name="Table" type="Tree" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
columns = 5
|
||||
column_titles_visible = true
|
||||
select_mode = 1
|
16
tools/configurator/components/popup.gd
Normal file
|
@ -0,0 +1,16 @@
|
|||
extends Control
|
||||
|
||||
var content = null
|
||||
|
||||
func _ready():
|
||||
if (content != null):
|
||||
$Panel/MarginContainer/VBoxContainer/ContentContainer/MarginContainer.add_child(content)
|
||||
|
||||
func set_content(new_content):
|
||||
content = load(new_content).instantiate()
|
||||
|
||||
func set_title(new_title):
|
||||
$Panel/MarginContainer/VBoxContainer/MarginContainer/HBoxContainer/Label.text = new_title
|
||||
|
||||
func _on_back_pressed():
|
||||
queue_free()
|
71
tools/configurator/components/popup.tscn
Normal file
|
@ -0,0 +1,71 @@
|
|||
[gd_scene load_steps=3 format=3 uid="uid://ixg127wfv7wo"]
|
||||
|
||||
[ext_resource type="Script" path="res://components/popup.gd" id="1_ck1vn"]
|
||||
[ext_resource type="Theme" uid="uid://bq8dsxeo34sl" path="res://res/pixel_ui_theme/RetroDECKTheme.tres" id="1_oqd8s"]
|
||||
|
||||
[node name="Popup" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme = ExtResource("1_oqd8s")
|
||||
script = ExtResource("1_ck1vn")
|
||||
|
||||
[node name="Panel" type="Panel" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="Panel"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="Panel/MarginContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_constants/margin_left = 10
|
||||
theme_override_constants/margin_top = 0
|
||||
theme_override_constants/margin_right = 0
|
||||
theme_override_constants/margin_bottom = 0
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="Panel/MarginContainer/VBoxContainer/MarginContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="Panel/MarginContainer/VBoxContainer/MarginContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_font_sizes/font_size = 23
|
||||
text = "This is the label"
|
||||
|
||||
[node name="BackButton" type="Button" parent="Panel/MarginContainer/VBoxContainer/MarginContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 10
|
||||
text = "Back"
|
||||
|
||||
[node name="ContentContainer" type="Panel" parent="Panel/MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer/ContentContainer"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_constants/margin_left = 10
|
||||
theme_override_constants/margin_top = 6
|
||||
theme_override_constants/margin_right = 10
|
||||
theme_override_constants/margin_bottom = 6
|
||||
|
||||
[connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/MarginContainer/HBoxContainer/BackButton" to="." method="_on_back_pressed"]
|
|
@ -0,0 +1,15 @@
|
|||
[gd_scene format=3 uid="uid://c5uvguthjpfjq"]
|
||||
|
||||
[node name="PopupContentTest" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="Button" type="Button" parent="."]
|
||||
layout_mode = 1
|
||||
offset_right = 12.0
|
||||
offset_bottom = 8.0
|
||||
text = "Test"
|
105
tools/configurator/emu_list.yml
Normal file
|
@ -0,0 +1,105 @@
|
|||
cemu:
|
||||
name: "Cemu"
|
||||
description: "Wii U emulator"
|
||||
options:
|
||||
- resettable: true
|
||||
properties:
|
||||
- standalone: true
|
||||
citra:
|
||||
name: "Citra"
|
||||
description: "N3DS emulator"
|
||||
options:
|
||||
- resettable: true
|
||||
properties:
|
||||
- standalone: true
|
||||
dolphin:
|
||||
name: "Dolphin"
|
||||
description: "Wii/GameCube emulator"
|
||||
options:
|
||||
- resettable: true
|
||||
properties:
|
||||
- standalone: true
|
||||
duckstation:
|
||||
name: "Duckstation"
|
||||
description: "PSX emulator"
|
||||
options:
|
||||
- resettable: true
|
||||
properties:
|
||||
- standalone: true
|
||||
gzdoom:
|
||||
name: "GZDoom"
|
||||
description: "Doom engine"
|
||||
options:
|
||||
- resettable: true
|
||||
properties:
|
||||
- standalone: true
|
||||
mame:
|
||||
name: "MAME"
|
||||
description: "Multiple Arcade Machine Emulator"
|
||||
options:
|
||||
- resettable: true
|
||||
properties:
|
||||
- standalone: true
|
||||
melonds:
|
||||
name: "MelonDS"
|
||||
description: "NDS emulator"
|
||||
options:
|
||||
- resettable: true
|
||||
properties:
|
||||
- standalone: true
|
||||
pcsx2:
|
||||
name: "PCSX2"
|
||||
description: "PS2 emulator"
|
||||
options:
|
||||
- resettable: true
|
||||
properties:
|
||||
- standalone: true
|
||||
ppsspp:
|
||||
name: "PPSSPP"
|
||||
description: "PSP emulator"
|
||||
options:
|
||||
- resettable: true
|
||||
properties:
|
||||
- standalone: true
|
||||
primehack:
|
||||
name: "Primehack"
|
||||
description: "Metroid Prime emulator"
|
||||
options:
|
||||
- resettable: true
|
||||
properties:
|
||||
- standalone: true
|
||||
rpcs3:
|
||||
name: "RPCS3"
|
||||
description: "PS3 emulator"
|
||||
options:
|
||||
- resettable: true
|
||||
properties:
|
||||
- standalone: true
|
||||
ryujinx:
|
||||
name: "Ryujinx"
|
||||
description: "Switch emulator"
|
||||
options:
|
||||
- resettable: true
|
||||
properties:
|
||||
- standalone: true
|
||||
vita3k:
|
||||
name: "Vita3k"
|
||||
description: "PS Vita emulator"
|
||||
options:
|
||||
- resettable: true
|
||||
properties:
|
||||
- standalone: true
|
||||
xemu:
|
||||
name: "XEMU"
|
||||
description: "XBOX emulator"
|
||||
options:
|
||||
- resettable: true
|
||||
properties:
|
||||
- standalone: true
|
||||
yuzu:
|
||||
name: "Ryujinx"
|
||||
description: "Switch emulator"
|
||||
options:
|
||||
- resettable: true
|
||||
properties:
|
||||
- standalone: true
|
39
tools/configurator/export_presets.cfg
Executable file
|
@ -0,0 +1,39 @@
|
|||
[preset.0]
|
||||
|
||||
name="Linux/X11"
|
||||
platform="Linux/X11"
|
||||
runnable=true
|
||||
dedicated_server=false
|
||||
custom_features=""
|
||||
export_filter="all_resources"
|
||||
include_filter=""
|
||||
exclude_filter=""
|
||||
export_path="export/configurator.x86_64"
|
||||
encryption_include_filters=""
|
||||
encryption_exclude_filters=""
|
||||
encrypt_pck=false
|
||||
encrypt_directory=false
|
||||
|
||||
[preset.0.options]
|
||||
|
||||
custom_template/debug=""
|
||||
custom_template/release=""
|
||||
debug/export_console_wrapper=1
|
||||
binary_format/embed_pck=false
|
||||
texture_format/bptc=true
|
||||
texture_format/s3tc=true
|
||||
texture_format/etc=false
|
||||
texture_format/etc2=false
|
||||
binary_format/architecture="x86_64"
|
||||
ssh_remote_deploy/enabled=false
|
||||
ssh_remote_deploy/host="user@host_ip"
|
||||
ssh_remote_deploy/port="22"
|
||||
ssh_remote_deploy/extra_args_ssh=""
|
||||
ssh_remote_deploy/extra_args_scp=""
|
||||
ssh_remote_deploy/run_script="#!/usr/bin/env bash
|
||||
export DISPLAY=:0
|
||||
unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
|
||||
\"{temp_dir}/{exe_name}\" {cmd_args}"
|
||||
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
|
||||
kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\")
|
||||
rm -rf \"{temp_dir}\""
|
13
tools/configurator/helper_text.gd
Executable file
|
@ -0,0 +1,13 @@
|
|||
extends RichTextLabel
|
||||
|
||||
@onready var helper_text_node = self
|
||||
|
||||
func _ready():
|
||||
# Connect the signal that gets fired on every focus change
|
||||
get_viewport().connect("gui_focus_changed", _on_focus_changed)
|
||||
|
||||
func _on_focus_changed(selected_element:Control) -> void:
|
||||
if selected_element != null and selected_element.has_meta("description"):
|
||||
helper_text_node.text = selected_element.get_meta("description")
|
||||
else:
|
||||
helper_text_node.text = "Hey, there's no description"
|
18
tools/configurator/icon.svg
Executable file
|
@ -0,0 +1,18 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg width="100%" height="100%" viewBox="0 0 256 256" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||
<g transform="matrix(1.88235,0,0,1.86861,-7.52941,-5.60584)">
|
||||
<path d="M140,37.25C140,18.347 124.765,3 106,3L38,3C19.235,3 4,18.347 4,37.25L4,105.75C4,124.653 19.235,140 38,140L106,140C124.765,140 140,124.653 140,105.75L140,37.25Z" style="fill:rgb(17,17,17);"/>
|
||||
</g>
|
||||
<g transform="matrix(2.02105,0,0,2.02105,-13.4737,-13.4737)">
|
||||
<g id="D" transform="matrix(-0.674885,8.26495e-17,-8.26495e-17,-0.674885,223.747,109.037)">
|
||||
<path d="M172.54,-2.511C175.786,-5.757 179.378,-8.24 183.315,-9.96C187.251,-11.68 191.533,-12.54 196.16,-12.54L271.855,-12.54L271.855,6.901L196.16,6.901C194.44,6.901 192.823,7.222 191.309,7.864C189.795,8.506 188.475,9.39 187.348,10.517C186.222,11.643 185.337,12.964 184.695,14.478C184.053,15.992 183.732,17.609 183.732,19.329L183.732,96.355C183.732,97.954 184.084,99.498 184.786,100.988C185.489,102.478 186.416,103.798 187.566,104.949C188.717,106.1 190.037,107.027 191.527,107.729C193.017,108.432 194.562,108.783 196.16,108.783L271.855,108.783L271.855,128.224L196.16,128.224C193.859,128.224 191.624,127.982 189.456,127.498C187.288,127.013 185.204,126.329 183.206,125.444C181.207,124.56 179.311,123.5 177.518,122.265C175.726,121.029 174.066,119.673 172.54,118.195C169.366,115.118 166.901,111.575 165.145,107.566C163.389,103.556 162.51,99.226 162.51,94.574L162.51,21.11C162.51,16.458 163.37,12.17 165.09,8.246C166.811,4.321 169.294,0.736 172.54,-2.511Z" style="fill:white;fill-rule:nonzero;"/>
|
||||
</g>
|
||||
<g id="Left-Symbol" serif:id="Left Symbol" transform="matrix(0.494792,-0,-0,0.494792,6.66667,6.66667)">
|
||||
<use xlink:href="#_Image1" x="39.093" y="89.764" width="103.568px" height="78.228px" transform="matrix(0.995844,0,0,0.990223,0,0)"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<image id="_Image1" width="104px" height="79px" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAABPCAYAAAAHtYAvAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAGHUlEQVR4nO2de2xTVRzHP6cbe4qg8jB1ioQMcDJAHgEVMPyjgaAGQR4xhAxEGfIY8gaBGCXGGEULjMG2FhEG6JCBhEgEJWRBBkaDopIYwRAsigSHoMLa3usftzVla7eu/bWU9HySJvd37jnfnNzvPae95/Scq2hE7cTz6YZigqEYYKAKTUWhoehoKDBQmAqsYzCUwlBYaUGxocBsFBuAGS7Gn6ZUkFaQfnOx/9hsFIfSalE7rJa/rk3jBkNRbyjqDVS9qfjRUBw3FMcM1IlvXkpvaHx9W4sKDo5McPc1lKo0FP2aGKINajYOca3+MBSlpqL02+L0C9EaZAscfDnBPRs4DvSLVkxzAx2BlcDZXmXeioIy34PRiNgA6sa7+wBvA+ly9dP4yQSmAid7bvDt77HR16c1hW11493pQAXanETwOFCbX+4bGWkBGzAOGBC3KmkacxvwSbdyoziSzDZgYHzrowmBDSjtWmG81aXSsLWUsVdi6qQJwXxgy31OQ4XLYAMKE1cfTQgmApPDnbQBnRNXF00YVuc5TXuoE832f5qE0R5Yb3eZTbo6bVDy8BQwvnGiNii5WGN3mbnBCdqg5KIDMCo4QRuUfEwMDiSGd5YCLgGdWw0bUAAM8X+GI3PDj7C7zPbuIlUPMgZdHlPZ6TcBnVsRN3AAYLDDMxL4EMhttkTLZACj8d/0uosT4ujsNvuAYcDvAnL/d3PaIEHqZrX5GlgsIDUs8EykDZJnK3A2Ro1M4E7QBolzfGYbD/COgNQ9oA2KF0cFNLRBceS0gIY2KI5cBK7GqKENiiOK2J8xvaANihd5QFaMGr+CNihe5AtonANtULwYLqChDYoHA9d62gEzBaR0FxcnZgHtYtT4y12kroBlkBlzlTQADFrjGQ0sE5A6HDjQLUiIwQ5PCbCT2H+9AWwPHEjMB927c+qFvim4/MRmQKGhGGoohhrQXeBaAlwD9gQCCYMWIzPErrHYG/j+Ad3FJSPbgwNtUHJxEdgXnKANSi5muYvUv8EJ2qDkoQbY0ThRG5Qc/AnMcBepJs+k2qDkoOTcFHU+1Ak9knDzqQI+CHdSt6Cby5vApLNTbGEbiV7ZfXPwAsVnnrdVtJRRG5R4LgNjf55mOxBJZt3FJQ4T66f0wz9NS4vIHNAtKBFcBSoBx6kX01r9dyxtUPz4BXAAzpPT0y9HKyJh0BXgHwGdeHM7kC2o58VaflKP9b1SD5wCvvJ/zpyYkR7zI4zIdMOYyk6lAjpxZeqrfxcAdVhbsUiggMm1czIOCemFJGV+JFSuzP0BeE5QMg2oHvJew/2Cmk1IqZEE54rcPcByQcm7gN2POBpiXVUXlpRpQUGsAqoF9XoDmwY7PGH324mFlDNo04pcEygCvhOUHYu1mFqclDMIYPPy3KvA08AlQdnXBq3xPCmoB6SoQQBbXsk5AzwL+IQkFbB14FrPA0J6QAobBFC1LOdzYK6gZFtgd/91njukBFPaID9rAaegXj6w7aF13jQJsZQ3aNuyHBOYgcy60gBPAG9ICKW8QQA7luZcB57BGrqRYkGfUm/MD8baID8fLck+j7UFy3VB2Yre670x7aicUiMJLbFzSfYx4AVBySxgV68y793RCugW1Ihdi7M3A6sFJfOA6oIyX0Y0hbVBoVmIfxcrIR4F1vbc4Gv1cJA2KAQ1i7K9WPuHSmxIEWAaML21hbRBYdizMOsS1kavsW5IEYyjx0bfY60poA1qhr0Ls74HJglKpgPV+eW+LpEW0Aa1wL4FWTVY7wGSogNQ063ciGgOSRsUGa8DHwvq9QWcXSvCv7MhgDYoAj6dn2VgvV/hpKDsOCJYOqoNipD98zLjMYe0qkulMaq5DHokoRV8Ni/zNNadLzmHVHWf0+gZLoNuQa3k4MuZB4F5gpJtgd15TrN9qJPaoOhwAJsE9boDVXaX2WQOSRsUBV/MzTSBYqw/QkoxAusfRzegDYqSQyUZ17DmkEIuXYySRXaXecO7G7RBMXC4JMONNYcU8yuhg3DaXWb/QKANipHaORl1yM8h1dhdZmfQBolwZHbG+8C7gpJ5QLXdZWZog+RYABwU1BsCOP4DNMctuHcT4JEAAAAASUVORK5CYII="/>
|
||||
</defs>
|
||||
</svg>
|
After Width: | Height: | Size: 4.4 KiB |
37
tools/configurator/icon.svg.import
Normal file
|
@ -0,0 +1,37 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bv6vh33cnfaw4"
|
||||
path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://icon.svg"
|
||||
dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
81
tools/configurator/locales/interface.csv
Normal file
|
@ -0,0 +1,81 @@
|
|||
keys,en,it,de,sv,ua,ja,zh
|
||||
TK_SYSTEM,"System","Sistema","System","System","Cистема","システム","系统"
|
||||
TK_GAME_SETTINGS,"Game Settings","Impostazioni di Gioco","Spieleinstellungen","Spelinställningar","Ігрові Налаштування","ゲーム設定","游戏设定"
|
||||
TK_QRESUME,"Quick Resume","Quick Resume","Schnellfortsetzung","Snabb Återupptagning","Швидкий Запуск","クイックリジューム","快速恢复"
|
||||
TK_ADVANCED,"Advanced","Avanzate","Erweitert","Avancerat","Розширені","アドバンスド","高级/进阶"
|
||||
TK_REWIND,"Rewind","Riavvolgimento","Zurückspulen","Tillbakaspolning","Перемотка","巻き戻し","倒带"
|
||||
TK_CONFIRMEXIT,"Quit Confirmation","Conferma per Uscire","Beenden Bestätigen","Avlutningsbekräftelse","Підтвердження Виходу","確認終了","退出确认"
|
||||
TK_CHEATS,"Cheats","Trucchi","Cheats","Fusk","Чіти","チート","作弊"
|
||||
TK_SOON,"(coming soon)","(in arrivo)","(bald verfügbar)","(kommer snart)","(незабаром)","(近日公開)","(即将到来)"
|
||||
TK_GRAPHICS,"Graphics","Grafica","Grafik","Grafik","Графіка","グラフィック","画质"
|
||||
TK_CONTROLS,"Controls","Controlli","Steuerung","Kontroller","Управління","コントロール","控制"
|
||||
TK_TOOLS,"Tools","Strumenti","Werkzeuge","Verktyg","Інструменти","ツール","工具"
|
||||
TK_NETWORK,"Network","Rete","Netzwerk","Nätverk","Мережа","ネットワーク","kai qi"
|
||||
TK_TROUBLESHOOT,"Troubleshoot","Risoluzione Problemi","Fehlerbehebung","Felsökning","Несправності","トラブルシューティング","排错"
|
||||
TK_TROUBLESHOOTLBL,"Troubleshoot","Risoluzione Problemi","Fehlerbehebung","Felsökning","Усунення Несправностей","トラブルシューティング","排错"
|
||||
TK_CONFIGURATOR,"Configurator","Configurator","Configurator","Configurator","Конфігуратор","確認","设置"
|
||||
TK_ABOUT,"About","Informazioni","Über","Om","Про Нас","アバウト","关于"
|
||||
TK_DECORATIONS,"Decorations","Decorazioni","Dekorationen","Dekorationer","Декорації","装飾","装饰"
|
||||
TK_BORDERS,"Borders","Bordi","Ränder","Ramar","Фони","ボーダー","边框"
|
||||
TK_WSCREEN,"Widescreen","Widescreen","Breitbild","Bredbild","Широкий Екран","ワイドスクリーン","宽屏"
|
||||
TK_SHADERS,"Shaders","Shader","Shaders","Shaders","Шейдери","シェーダ","着色器"
|
||||
TK_EXTRA,"Extra","Extra","Extra","Extra","Додатково","エクストラ","额外"
|
||||
TK_MODS,"Mods","Mod","Mods","Moddar","Модифікації","改造","游戏模组"
|
||||
TK_TATE,"TATE Mode","TATE Mode","TATE-Mode","TATE Läge","Режим TATE","垂直スクリーンモード","垂屏模式"
|
||||
TK_STEAMCONTEMP,"Steam: Controller Templates","Template dei Controller di Steam","Steam: Controller-Vorlagen","Steam: Kontroller Mallar","Steam: Шаблони Контролерів","Steam:コントローラーテンプレート","Steam:控制器模板"
|
||||
TK_INSTALL,"Install","Installa","Installieren","Installera","Встановити","インストール","安装"
|
||||
TK_BTNLAYOUT,"Button Layout","Layout Pulsanti","Tastenbelegung","Knapp Layout","Розташування Кнопок","ボタンのレイアウト","按键布局"
|
||||
TK_BTNCLASSIC,"Classic","Classico","Klassik","Klassisk","Класичний","クラッシク","经典"
|
||||
TK_BTNNINTENDO,"Nintendo","Nintendo","Nintendo","Nintendo","Nintendo","ニンテンドー","任天堂"
|
||||
TK_HOTKEYSOUND,"Hotkey Activation Sound","Suono su Attivazione Hotkey","Hotkey Aktivierungssound","Hotkey Aktiveringsljud","Звук Гарячих Клавіш","ホットキー起動音","热键激活音效"
|
||||
TK_SCAN,"Scan","Scansiona","Scan","Skanna","Сканувати","スキャン","扫描"
|
||||
TK_PS3SCAN,"PlayStation 3 Games","Giochi PlayStation 3","PlayStation 3 Spiele","PlayStation 3 Spel","Ігри для PlayStation 3","プレステ3ゲーム","PlayStation3游戏"
|
||||
TK_SCUMMVMSCAN,"ScummVM Games","Giochi ScummVM","ScummVM Spiele","ScummVM Spel","Ігри ScummVM","ScummVMゲーム","ScummVM游戏"
|
||||
TK_MULTIFILE,"Multi-File Structure","Struttura Multi-File","Mehrfachdateistruktur","Flerfilsstruktur","Багатофайлова Структура","マルチファイル構造","多文件结构"
|
||||
TK_3DSDECRYPT,"3DS Game Decrypter","Decrittatore Giochi 3DS","3DS Spielentcrypter","3DS Spelavkrypterare","Дешифратор Ігор 3DS","3DS ゲームデクリプタ","3DS游戏解密"
|
||||
TK_BIOS,"BIOS","BIOS","BIOS","BIOS","BIOS","BIOS","BIOS"
|
||||
TK_GENTOOLS,"General Tools","Strumenti Generali","Allgemeine Werkzeuge","Allmänt","Загальні Інструменти","一般的なツール","一般工具"
|
||||
TK_EMUOPEN,"Open Emulator...","Apri Emulatore...","Öffne Emulator...","Öppna Emulator...","Відкрити Емулятор...","エミュレータを開く...","打开模拟器..."
|
||||
TK_GRIDINSTALL,"Install RetroDECK Steam Grids","Installa le Steam Grids di RetroDECK","RetroDECK Steam Grids Installieren","Installera RetroDECK Steam Grids","Встановити RetroDECK Steam Grids","RetroDECK Steam Gridsをインストール","安装RetroDECK Steam Grids"
|
||||
TK_PS3FWINSTALL,"Install PS3 Firmware","Installa il Firmware PS3","Installiere PS3 Firmware","Installera PS3 Firmware","Встановити Прошивку PS3","PS3ファームウェアをインストール","安装PS3固件"
|
||||
TK_FAVSTEAM,"Show Favorites as Steam Games","Mostra Giochi Preferiti su Steam","Favoriten als Steam-Spiele anzeigen","Visa Favoriter som Spel i Steam","Показати Улюблені як Ігри в Steam","お気に入りを Steam ゲームとして表示","显示收藏夹为Steam游戏"
|
||||
TK_FILETOOLS,"File Maniuplation","Manipolazione File","Datei Werkzeuge","Filhantering","Маніпуляції з Файлами","ファイル操作","文件操作"
|
||||
TK_USBTOOL,"USB Transfer Tool","Strumento di Trasferimento USB","USB Transfer Tool","USB Överföringsverktyg","Інструмент для Передачі Даних USB","USB転送ツール","USB传输工具"
|
||||
TK_BACKUPBTN,"Backup User Data","Backup Dati Utente","Benutzerdaten Sichern","Backup av Användardata","Резервне Копіювання Даних Користувача","ユーザデータバックアップ","备份用户数据"
|
||||
TK_COMPRESSGAMES,"Compress Games","Comprimi Giochi","Spiele Komprimieren","Komprimera Spel","Стиснути Ігри","ゲームを圧縮","压缩游戏"
|
||||
TK_MOVEFILES,"Move User Files","Sposta File Utente","Benutzerdateien Verschieben","Flytta Användarfiler","Перемістити Файли Користувача","ユーザーファイルを移動","移动用户文件"
|
||||
TK_CHEEVOS,"Retro Achievements","Retro Achievements","Retro Achievements","Retro Achievements","Retro Achievements","レトロ実績","Retro成就"
|
||||
TK_CHEEVOSUNAME,"Username:","Nome Utente:","Benutzername:","Användarnamn:","Ім'я користувача:","ユーザー名:","用户名:"
|
||||
TK_CHEEVOSPWD,"Password:","Password:","Passwort:","Lösenord:","Пароль:","パスワード:","密码:"
|
||||
TK_CHEEVOSHARDCORE,"Hardcore Mode","Modalità Hardcore","Hardcore Modus","Hardcore Läge","Хардкорний Режим","ハードコアモード","硬核模式"
|
||||
TK_CHEEVOSTROPHYBTN,"Show Throphies","Mostra Trofei","Trophäen Anzeigen","Visa Troféer","Показати Трофеї","トロフィーを表示","显示奖杯"
|
||||
TK_LOGIN,"Login","Login","Login","Logga In","Увійти","ログイン","登录"
|
||||
TK_NETPLAY,"Netplay","Netplay","Netplay","Netplay","Netplay","ネットプレイ","网战"
|
||||
TK_NETPLAYID,"Netplay ID:","ID Netplay:","Netplay ID:","Netplay ID:","Netplay ID:","ネットプレイID:","网战ID:"
|
||||
TK_NETPLAYADDRESS,"Address:","Indirizzo:","Adresse:","Address:","Адреса:","アドレス:","地址:"
|
||||
TK_NETPLAYCONNECT,"Connect","Connetti","Verbinden","Anslut","Підключитися","接続","连接"
|
||||
TK_DATAMNG,"Data Management","Gestione Dati","Datenverwaltung","Datahantering","Управління Даними","データ管理","数据管理"
|
||||
TK_SAVESSYNC,"Synchronize Saves","Sincronizzazione Salvataggi","Spielstände Synchronisieren","Synkronisera Sparfiler","Синхронізувати Збереження","保存データを同期","同步存档"
|
||||
TK_FTPBTN,"Start sFTP Server","Avvia Server sFTP","Starte sFTP Server","Starta sFTP Server","Запустити Сервер sFTP","sFTPサーバーを起動","开启sFTP服务器"
|
||||
TK_CHECKCONN,"Check Connection","Controllo Connessione","Verbindung Überprüfen","Kontrollera Anslutning","Перевірити Підключення","接続を確認","检查连接"
|
||||
TK_LOGSBTN,"Show Logs","Mostra Log","Logs Anzeigen","Visa Loggar","Показати Логи","ログを表示","显示日志"
|
||||
TK_RESET,"Reset","Reset","Reset","Återställ","Скинути","リセット","重置"
|
||||
TK_RESETSINGLE,"Single Emulator...","Emulatore Singolo...","Einzelner Emulator...","En Emulator...","Один Емулятор...","単一エミュレータ...","单独模拟器..."
|
||||
TK_RESETALL,"All Emulators","Tutti gli Emulatori","Alle Emulatoren","Alla Emulatorer","Всі Емулятори","全エミュレータ","所有模拟器"
|
||||
TK_RESETFULL,"Full RetroDECK Reset","Reset RetroDECK Completo","Vollständiges Zurücksetzen von RetroDECK","Återställ Hela RetroDECK","Повне Скидання RetroDECK","RetroDECKを完全リセット","完全重置RetroDECK"
|
||||
TK_UPDATENOTIF,"Update Notification","Notifica gli Aggiornamenti","Update-Benachrichtigung","Uppdaterings-notifikation","Сповіщення про Оновлення","アップデート通知","更新通知"
|
||||
TK_EASTEREGGS,"Show Easter Eggs","Mostra Easter Eggs","Easter Eggs anzeigen","Visa Easter Eggs","Показувати Пасхальні Яйця","イースターエッグを表示","显示彩蛋"
|
||||
TK_MULTIUSR,"Multi-User Mode","Modalità Multi-Utente","Multi-User Mode","Flerspelarläge","Багатокористувацький Режим","マルチユーザーモード","多用户模式"
|
||||
TK_OFF,"Off","Off","Aus","Av","Вимк","オフ","关闭"
|
||||
TK_STEAMUSR,"Steam Users","Utenti Steam","Steam Benutzer","Steam Användare","Користувачі Steam","Steamユーザー","Steam用户"
|
||||
TK_CUSTOMUSR,"Custom Users","Utenti Personalizzati","Benutzerdefinierte Benutzer","Anpassade Användare","Кастомні Користувачі","カスタムユーザー","自定义用户"
|
||||
TK_MUSIC,"Menu Music","Musica del Menu","Menu Hintergrundmusik","Meny Musik","Музика Меню","メニュー音楽","菜单音乐"
|
||||
TK_ABOUTHEADER,"About RetroDECK","A Proposito di RetroDECK","Über RetroDECK","Om RetroDECK","Про RetroDECK","RetroDECKについて","关于RetroDECK"
|
||||
TK_WEBSITE,"Website","Sito Web","Website","Hemsida","Веб-сайт","公式サイト","网站"
|
||||
TK_CHANGELOG,"Version History","Storico Versioni","Versions History","Versionshistorik","Історія Версій","バージョン履歴","版本历史"
|
||||
TK_WIKI,"Wiki","Wiki","Wiki","Wiki","Wiki","Wiki","维基"
|
||||
TK_CREDITS,"Credits","Crediti","Credits","Tillskrivningar","Автори","クレジット","鸣谢"
|
||||
TK_DONATE,"Donate","Donazione","Spenden","Donera","Пожертвувати","寄付","捐赠"
|
||||
TK_CONTACTUS,"Reach Us","Contattaci","Kontakiere Uns","Kontakta Oss","Зв'язатися з Нами","連絡","联系我们"
|
||||
TK_LICENSES,"Licenses","Licenze","Lizenzen","Licenser","Ліцензії","ライセンス","许可"
|
||||
TK_ON,"On","On","An","På","Увімк","オン","开启"
|
|
17
tools/configurator/locales/interface.csv.import
Normal file
|
@ -0,0 +1,17 @@
|
|||
[remap]
|
||||
|
||||
importer="csv_translation"
|
||||
type="Translation"
|
||||
uid="uid://cwb782o5jh5lx"
|
||||
|
||||
[deps]
|
||||
|
||||
files=["res://locales/interface.en.translation", "res://locales/interface.it.translation", "res://locales/interface.de.translation", "res://locales/interface.sv.translation", "res://locales/interface.ua.translation", "res://locales/interface.ja.translation", "res://locales/interface.zh.translation"]
|
||||
|
||||
source_file="res://locales/interface.csv"
|
||||
dest_files=["res://locales/interface.en.translation", "res://locales/interface.it.translation", "res://locales/interface.de.translation", "res://locales/interface.sv.translation", "res://locales/interface.ua.translation", "res://locales/interface.ja.translation", "res://locales/interface.zh.translation"]
|
||||
|
||||
[params]
|
||||
|
||||
compress=true
|
||||
delimiter=0
|
BIN
tools/configurator/locales/interface.de.translation
Normal file
BIN
tools/configurator/locales/interface.en.translation
Normal file
BIN
tools/configurator/locales/interface.it.translation
Normal file
BIN
tools/configurator/locales/interface.ja.translation
Normal file
BIN
tools/configurator/locales/interface.sv.translation
Normal file
BIN
tools/configurator/locales/interface.ua.translation
Normal file
BIN
tools/configurator/locales/interface.zh.translation
Normal file
80
tools/configurator/main.gd
Normal file
|
@ -0,0 +1,80 @@
|
|||
extends Control
|
||||
|
||||
var bios_type:int
|
||||
|
||||
func _ready():
|
||||
var children = findElements(self, "Control")
|
||||
for n: Control in children: #iterate the children
|
||||
if (n.focus_mode == FOCUS_ALL):
|
||||
n.mouse_entered.connect(_on_control_mouse_entered.bind(n)) #grab focus on mouse hover
|
||||
if (n.is_class("BaseButton") and n.disabled == true): #if button-like control and disabled
|
||||
n.self_modulate.a = 0.5 #make it half transparent
|
||||
combine_tkeys()
|
||||
|
||||
func _input(event):
|
||||
if event.is_action_pressed("quit"):
|
||||
_exit()
|
||||
|
||||
func findElements(node: Node, className: String, result: Array = []) -> Array:
|
||||
if node.is_class(className):
|
||||
result.push_back(node)
|
||||
for child in node.get_children():
|
||||
result = findElements(child, className, result)
|
||||
return result
|
||||
|
||||
func _on_control_mouse_entered(control: Node):
|
||||
control.grab_focus()
|
||||
|
||||
func load_popup(title:String, content_path:String):
|
||||
var popup = load("res://components/popup.tscn").instantiate() as Control
|
||||
popup.set_title(title)
|
||||
popup.set_content(content_path)
|
||||
$Background.add_child(popup)
|
||||
|
||||
func _on_quickresume_advanced_pressed():
|
||||
load_popup("Quick Resume Advanced", "res://components/popups_content/popup_content_test.tscn")
|
||||
|
||||
func _on_bios_button_pressed():
|
||||
bios_type = 0
|
||||
load_popup("BIOS File Check", "res://components/bios_check/bios_popup_content.tscn")
|
||||
|
||||
|
||||
func _on_bios_button_expert_pressed():
|
||||
bios_type = 1
|
||||
load_popup("BIOS File Check", "res://components/bios_check/bios_popup_content.tscn")
|
||||
|
||||
|
||||
func _on_exit_button_pressed():
|
||||
_exit()
|
||||
|
||||
func _exit():
|
||||
get_tree().root.propagate_notification(NOTIFICATION_WM_CLOSE_REQUEST)
|
||||
get_tree().quit()
|
||||
|
||||
|
||||
func _on_locale_selected(index):
|
||||
match index:
|
||||
0:
|
||||
TranslationServer.set_locale("en")
|
||||
1:
|
||||
TranslationServer.set_locale("it")
|
||||
2:
|
||||
TranslationServer.set_locale("de")
|
||||
3:
|
||||
TranslationServer.set_locale("sv")
|
||||
4:
|
||||
TranslationServer.set_locale("ua")
|
||||
5:
|
||||
TranslationServer.set_locale("ja")
|
||||
6:
|
||||
TranslationServer.set_locale("zh")
|
||||
combine_tkeys()
|
||||
|
||||
func combine_tkeys(): #More as a test
|
||||
$Background/MarginContainer/TabContainer/TK_SYSTEM/ScrollContainer/VBoxContainer/game_control_container/GridContainer/cheats.text = tr("TK_CHEATS") + " " + tr("TK_SOON")
|
||||
$Background/MarginContainer/TabContainer/TK_GRAPHICS/ScrollContainer/VBoxContainer/decorations_container/GridContainer/shaders.text = tr("TK_SHADERS") + " " + tr("TK_SOON")
|
||||
$Background/MarginContainer/TabContainer/TK_GRAPHICS/ScrollContainer/VBoxContainer/extra_container/GridContainer/tate_mode.text = tr("TK_TATE") + " " + tr("TK_SOON")
|
||||
$Background/MarginContainer/TabContainer/TK_CONTROLS/ScrollContainer/VBoxContainer/controls_container/hotkey_sound.text = tr("TK_HOTKEYSOUND") + " " + tr("TK_SOON")
|
||||
$Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer/cheevos_container/cheevos_advanced_container/cheevos_hardcore.text = tr("TK_CHEEVOSHARDCORE") + " " + tr("TK_SOON")
|
||||
$Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer/data_mng_container/saves_sync.text = tr("TK_SAVESSYNC") + " " + tr("TK_SOON")
|
||||
$Background/MarginContainer/TabContainer/TK_CONFIGURATOR/ScrollContainer/VBoxContainer/system_container/easter_eggs.text = tr("TK_EASTEREGGS") + " " + tr("TK_SOON")
|
971
tools/configurator/main.tscn
Normal file
|
@ -0,0 +1,971 @@
|
|||
[gd_scene load_steps=27 format=3 uid="uid://61f6m4r1mpan"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://bv6vh33cnfaw4" path="res://icon.svg" id="1_axfei"]
|
||||
[ext_resource type="Script" path="res://main.gd" id="1_obpq7"]
|
||||
[ext_resource type="Script" path="res://TabContainer.gd" id="3_id6l4"]
|
||||
[ext_resource type="AudioStream" uid="uid://dig4pco500pyt" path="res://res/configurator.mp3" id="3_xivj6"]
|
||||
[ext_resource type="Texture2D" uid="uid://dx0u5hiwxfgu5" path="res://res/pixel_ui_theme/8x8_ui_elements.png" id="4_2tuu4"]
|
||||
[ext_resource type="Script" path="res://Rekku.gd" id="4_nqqx3"]
|
||||
[ext_resource type="Texture2D" uid="uid://cxyml1owhi6de" path="res://res/pixel_ui_theme/8x8_ui_icons.png" id="4_v1scw"]
|
||||
[ext_resource type="Script" path="res://helper_text.gd" id="5_cprkf"]
|
||||
[ext_resource type="Texture2D" uid="uid://dxdhjp18rgmr4" path="res://res/flags/united_kingdom_32.png" id="5_exkn2"]
|
||||
[ext_resource type="Texture2D" uid="uid://cru43y7hco6kh" path="res://res/flags/italy_32.png" id="6_fiylw"]
|
||||
[ext_resource type="Texture2D" uid="uid://cti2vt14gxisl" path="res://res/flags/germany_32.png" id="7_qgxid"]
|
||||
[ext_resource type="Texture2D" uid="uid://bns0ot5pbf03h" path="res://res/flags/sweden_32.png" id="8_lptln"]
|
||||
[ext_resource type="Texture2D" uid="uid://cor8ep0fkqm08" path="res://res/Rekku/base.png" id="9_brsrf"]
|
||||
[ext_resource type="Texture2D" uid="uid://dhsorn3kcfdcv" path="res://res/flags/ukraine_32.png" id="9_dp7oa"]
|
||||
[ext_resource type="Texture2D" uid="uid://dtwjo7co226dw" path="res://res/flags/japan_32.png" id="10_e8mt0"]
|
||||
[ext_resource type="Texture2D" uid="uid://cavtn1rljc5oe" path="res://res/Rekku/eyes-open.png" id="10_y6gkh"]
|
||||
[ext_resource type="Texture2D" uid="uid://cv7nckloqhn5m" path="res://res/Rekku/blink1.png" id="11_6deod"]
|
||||
[ext_resource type="Texture2D" uid="uid://cbwhpqip43aei" path="res://res/flags/china_32.png" id="11_ri2fv"]
|
||||
[ext_resource type="Texture2D" uid="uid://by0oj188x350g" path="res://res/Rekku/blink2.png" id="12_ro20g"]
|
||||
[ext_resource type="Texture2D" uid="uid://ciwghjy0ahxk6" path="res://res/Rekku/mouth-A.png" id="13_xj3b3"]
|
||||
[ext_resource type="Texture2D" uid="uid://kx8eypf4ffvu" path="res://res/Rekku/mouth-base.png" id="14_lnkoa"]
|
||||
[ext_resource type="Texture2D" uid="uid://b6gl8sltbak7v" path="res://res/Rekku/mouth-O.png" id="15_1sikj"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_st633"]
|
||||
atlas = ExtResource("4_v1scw")
|
||||
region = Rect2(72, 56, 8, 8)
|
||||
margin = Rect2(1, 1, 1, 1)
|
||||
|
||||
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_rf0rc"]
|
||||
texture = ExtResource("4_2tuu4")
|
||||
texture_margin_left = 6.0
|
||||
texture_margin_top = 6.0
|
||||
texture_margin_right = 6.0
|
||||
texture_margin_bottom = 6.0
|
||||
region_rect = Rect2(0, 8, 16, 16)
|
||||
modulate_color = Color(0.65098, 0.403922, 0.819608, 1)
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_trwmf"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 40.0,
|
||||
"texture": ExtResource("10_y6gkh")
|
||||
}, {
|
||||
"duration": 0.15,
|
||||
"texture": ExtResource("11_6deod")
|
||||
}, {
|
||||
"duration": 0.15,
|
||||
"texture": ExtResource("12_ro20g")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"blink",
|
||||
"speed": 5.0
|
||||
}]
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_p8gbs"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 15.0,
|
||||
"texture": ExtResource("14_lnkoa")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("13_xj3b3")
|
||||
}, {
|
||||
"duration": 0.5,
|
||||
"texture": ExtResource("14_lnkoa")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("14_lnkoa")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("15_1sikj")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("13_xj3b3")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("14_lnkoa")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"speech",
|
||||
"speed": 5.0
|
||||
}]
|
||||
|
||||
[node name="Control" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_obpq7")
|
||||
metadata/bios_type = 0
|
||||
|
||||
[node name="Background" type="Panel" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -500.0
|
||||
offset_top = -350.0
|
||||
offset_right = 500.0
|
||||
offset_bottom = 200.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="Background"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="TabContainer" type="TabContainer" parent="Background/MarginContainer"]
|
||||
layout_mode = 2
|
||||
tab_alignment = 1
|
||||
current_tab = 3
|
||||
script = ExtResource("3_id6l4")
|
||||
|
||||
[node name="TK_SYSTEM" type="MarginContainer" parent="Background/MarginContainer/TabContainer"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
theme_override_constants/margin_right = 240
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="Background/MarginContainer/TabContainer/TK_SYSTEM"]
|
||||
layout_mode = 2
|
||||
follow_focus = true
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="Background/MarginContainer/TabContainer/TK_SYSTEM/ScrollContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
theme_override_constants/separation = 64
|
||||
|
||||
[node name="game_control_container" type="VBoxContainer" parent="Background/MarginContainer/TabContainer/TK_SYSTEM/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="game_control_label" type="Label" parent="Background/MarginContainer/TabContainer/TK_SYSTEM/ScrollContainer/VBoxContainer/game_control_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_GAME_SETTINGS"
|
||||
|
||||
[node name="game_control_label2" type="HSeparator" parent="Background/MarginContainer/TabContainer/TK_SYSTEM/ScrollContainer/VBoxContainer/game_control_container"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="GridContainer" type="GridContainer" parent="Background/MarginContainer/TabContainer/TK_SYSTEM/ScrollContainer/VBoxContainer/game_control_container"]
|
||||
layout_mode = 2
|
||||
columns = 2
|
||||
|
||||
[node name="quick_resume" type="CheckButton" parent="Background/MarginContainer/TabContainer/TK_SYSTEM/ScrollContainer/VBoxContainer/game_control_container/GridContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
button_pressed = true
|
||||
text = "TK_QRESUME"
|
||||
metadata/description = "This is a test description set to this element"
|
||||
|
||||
[node name="quick_resume_adv_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_SYSTEM/ScrollContainer/VBoxContainer/game_control_container/GridContainer"]
|
||||
layout_mode = 2
|
||||
text = "TK_ADVANCED"
|
||||
|
||||
[node name="rewind" type="CheckButton" parent="Background/MarginContainer/TabContainer/TK_SYSTEM/ScrollContainer/VBoxContainer/game_control_container/GridContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "TK_REWIND"
|
||||
metadata/description = "This is another, very long and convoluted, description, that I put too much commas in to make in LONGER and more SOPHISTICATED. And I did it twice!!!This is another, very long and convoluted, description, that I put too much commas in to make in LONGER and more SOPHISTICATED."
|
||||
|
||||
[node name="rewind_adv_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_SYSTEM/ScrollContainer/VBoxContainer/game_control_container/GridContainer"]
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "TK_ADVANCED"
|
||||
|
||||
[node name="quit_confirm" type="CheckButton" parent="Background/MarginContainer/TabContainer/TK_SYSTEM/ScrollContainer/VBoxContainer/game_control_container/GridContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
button_pressed = true
|
||||
text = "TK_CONFIRMEXIT"
|
||||
|
||||
[node name="quit_confirm_adv_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_SYSTEM/ScrollContainer/VBoxContainer/game_control_container/GridContainer"]
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "TK_ADVANCED"
|
||||
|
||||
[node name="cheats" type="CheckButton" parent="Background/MarginContainer/TabContainer/TK_SYSTEM/ScrollContainer/VBoxContainer/game_control_container/GridContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
disabled = true
|
||||
text = "TK_CHEATS, TK_SOON"
|
||||
|
||||
[node name="cheats_adv_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_SYSTEM/ScrollContainer/VBoxContainer/game_control_container/GridContainer"]
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "TK_ADVANCED"
|
||||
|
||||
[node name="TK_GRAPHICS" type="MarginContainer" parent="Background/MarginContainer/TabContainer"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
theme_override_constants/margin_right = 240
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="Background/MarginContainer/TabContainer/TK_GRAPHICS"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
follow_focus = true
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="Background/MarginContainer/TabContainer/TK_GRAPHICS/ScrollContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
theme_override_constants/separation = 64
|
||||
|
||||
[node name="decorations_container" type="VBoxContainer" parent="Background/MarginContainer/TabContainer/TK_GRAPHICS/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="decorations_label" type="Label" parent="Background/MarginContainer/TabContainer/TK_GRAPHICS/ScrollContainer/VBoxContainer/decorations_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_DECORATIONS"
|
||||
|
||||
[node name="decorations_separator" type="HSeparator" parent="Background/MarginContainer/TabContainer/TK_GRAPHICS/ScrollContainer/VBoxContainer/decorations_container"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="GridContainer" type="GridContainer" parent="Background/MarginContainer/TabContainer/TK_GRAPHICS/ScrollContainer/VBoxContainer/decorations_container"]
|
||||
layout_mode = 2
|
||||
columns = 2
|
||||
|
||||
[node name="borders" type="CheckButton" parent="Background/MarginContainer/TabContainer/TK_GRAPHICS/ScrollContainer/VBoxContainer/decorations_container/GridContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
button_pressed = true
|
||||
text = "TK_BORDERS"
|
||||
|
||||
[node name="borders_adv_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_GRAPHICS/ScrollContainer/VBoxContainer/decorations_container/GridContainer"]
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "TK_ADVANCED"
|
||||
|
||||
[node name="wide_screen" type="CheckButton" parent="Background/MarginContainer/TabContainer/TK_GRAPHICS/ScrollContainer/VBoxContainer/decorations_container/GridContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "TK_WSCREEN"
|
||||
|
||||
[node name="wide_screen_adv_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_GRAPHICS/ScrollContainer/VBoxContainer/decorations_container/GridContainer"]
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "TK_ADVANCED"
|
||||
|
||||
[node name="shaders" type="CheckButton" parent="Background/MarginContainer/TabContainer/TK_GRAPHICS/ScrollContainer/VBoxContainer/decorations_container/GridContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
disabled = true
|
||||
button_pressed = true
|
||||
text = "TK_SHADERS"
|
||||
|
||||
[node name="shaders_adv_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_GRAPHICS/ScrollContainer/VBoxContainer/decorations_container/GridContainer"]
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "TK_ADVANCED"
|
||||
|
||||
[node name="extra_container" type="VBoxContainer" parent="Background/MarginContainer/TabContainer/TK_GRAPHICS/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="decorations_label" type="Label" parent="Background/MarginContainer/TabContainer/TK_GRAPHICS/ScrollContainer/VBoxContainer/extra_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_EXTRA"
|
||||
|
||||
[node name="decorations_separator" type="HSeparator" parent="Background/MarginContainer/TabContainer/TK_GRAPHICS/ScrollContainer/VBoxContainer/extra_container"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="GridContainer" type="GridContainer" parent="Background/MarginContainer/TabContainer/TK_GRAPHICS/ScrollContainer/VBoxContainer/extra_container"]
|
||||
layout_mode = 2
|
||||
columns = 2
|
||||
|
||||
[node name="wide_screen" type="CheckButton" parent="Background/MarginContainer/TabContainer/TK_GRAPHICS/ScrollContainer/VBoxContainer/extra_container/GridContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
disabled = true
|
||||
button_pressed = true
|
||||
text = "TK_MODS"
|
||||
|
||||
[node name="wide_screen_adv_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_GRAPHICS/ScrollContainer/VBoxContainer/extra_container/GridContainer"]
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "TK_ADVANCED"
|
||||
|
||||
[node name="tate_mode" type="CheckButton" parent="Background/MarginContainer/TabContainer/TK_GRAPHICS/ScrollContainer/VBoxContainer/extra_container/GridContainer"]
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "TK_TATE"
|
||||
|
||||
[node name="TK_CONTROLS" type="MarginContainer" parent="Background/MarginContainer/TabContainer"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
theme_override_constants/margin_right = 240
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="Background/MarginContainer/TabContainer/TK_CONTROLS"]
|
||||
layout_mode = 2
|
||||
follow_focus = true
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="Background/MarginContainer/TabContainer/TK_CONTROLS/ScrollContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="controls_container" type="VBoxContainer" parent="Background/MarginContainer/TabContainer/TK_CONTROLS/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="controls_label" type="Label" parent="Background/MarginContainer/TabContainer/TK_CONTROLS/ScrollContainer/VBoxContainer/controls_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_CONTROLS"
|
||||
|
||||
[node name="controls_separator" type="HSeparator" parent="Background/MarginContainer/TabContainer/TK_CONTROLS/ScrollContainer/VBoxContainer/controls_container"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="controller_templates_container" type="HBoxContainer" parent="Background/MarginContainer/TabContainer/TK_CONTROLS/ScrollContainer/VBoxContainer/controls_container"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="controller_templates" type="Label" parent="Background/MarginContainer/TabContainer/TK_CONTROLS/ScrollContainer/VBoxContainer/controls_container/controller_templates_container"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "TK_STEAMCONTEMP"
|
||||
|
||||
[node name="controller_templater_install_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_CONTROLS/ScrollContainer/VBoxContainer/controls_container/controller_templates_container"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 10
|
||||
size_flags_vertical = 4
|
||||
text = "TK_INSTALL"
|
||||
|
||||
[node name="button_layout_container" type="HBoxContainer" parent="Background/MarginContainer/TabContainer/TK_CONTROLS/ScrollContainer/VBoxContainer/controls_container"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="button_layout" type="Label" parent="Background/MarginContainer/TabContainer/TK_CONTROLS/ScrollContainer/VBoxContainer/controls_container/button_layout_container"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "TK_BTNLAYOUT"
|
||||
|
||||
[node name="button_layout_option" type="OptionButton" parent="Background/MarginContainer/TabContainer/TK_CONTROLS/ScrollContainer/VBoxContainer/controls_container/button_layout_container"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 10
|
||||
size_flags_vertical = 4
|
||||
item_count = 2
|
||||
selected = 0
|
||||
popup/item_0/text = "TK_BTNCLASSIC"
|
||||
popup/item_0/id = 0
|
||||
popup/item_1/text = "TK_BTNNINTENDO"
|
||||
popup/item_1/id = 1
|
||||
|
||||
[node name="hotkey_sound" type="CheckButton" parent="Background/MarginContainer/TabContainer/TK_CONTROLS/ScrollContainer/VBoxContainer/controls_container"]
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
button_pressed = true
|
||||
text = "TK_HOTKEYSOUND"
|
||||
|
||||
[node name="TK_TOOLS" type="MarginContainer" parent="Background/MarginContainer/TabContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_constants/margin_right = 240
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="Background/MarginContainer/TabContainer/TK_TOOLS"]
|
||||
layout_mode = 2
|
||||
follow_focus = true
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
theme_override_constants/separation = 36
|
||||
|
||||
[node name="scan_container" type="VBoxContainer" parent="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="scan_label" type="Label" parent="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/scan_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_SCAN"
|
||||
|
||||
[node name="scan_separator" type="HSeparator" parent="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/scan_container"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="ps3_scan" type="Button" parent="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/scan_container"]
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "TK_PS3SCAN"
|
||||
|
||||
[node name="scummvm_scan" type="Button" parent="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/scan_container"]
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "TK_SCUMMVMSCAN"
|
||||
|
||||
[node name="multifile_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/scan_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_MULTIFILE"
|
||||
|
||||
[node name="3ds_decrypt_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/scan_container"]
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "TK_3DSDECRYPT"
|
||||
|
||||
[node name="bios_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/scan_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_BIOS"
|
||||
|
||||
[node name="bios_button_expert" type="Button" parent="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/scan_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_BIOS_EXPERT"
|
||||
|
||||
[node name="tools_container" type="VBoxContainer" parent="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="tools_label" type="Label" parent="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/tools_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_GENTOOLS"
|
||||
|
||||
[node name="tools_separator" type="HSeparator" parent="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/tools_container"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="emu_open_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/tools_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_EMUOPEN"
|
||||
|
||||
[node name="steamgrid_install_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/tools_container"]
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "TK_GRIDINSTALL"
|
||||
|
||||
[node name="ps3_fw_install_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/tools_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_PS3FWINSTALL"
|
||||
|
||||
[node name="fav_steam" type="CheckButton" parent="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/tools_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_FAVSTEAM"
|
||||
|
||||
[node name="file_tools_container" type="VBoxContainer" parent="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="file_tools_label" type="Label" parent="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/file_tools_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_FILETOOLS"
|
||||
|
||||
[node name="file_tools_separator" type="HSeparator" parent="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/file_tools_container"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="usb_tool_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/file_tools_container"]
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "TK_USBTOOL"
|
||||
|
||||
[node name="backup_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/file_tools_container"]
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "TK_BACKUPBTN"
|
||||
|
||||
[node name="compress_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/file_tools_container"]
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "TK_COMPRESSGAMES"
|
||||
|
||||
[node name="move_files_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/file_tools_container"]
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "TK_MOVEFILES"
|
||||
|
||||
[node name="TK_NETWORK" type="MarginContainer" parent="Background/MarginContainer/TabContainer"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
theme_override_constants/margin_right = 240
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="Background/MarginContainer/TabContainer/TK_NETWORK"]
|
||||
layout_mode = 2
|
||||
follow_focus = true
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
theme_override_constants/separation = 64
|
||||
|
||||
[node name="cheevos_container" type="VBoxContainer" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="cheevos" type="CheckButton" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer/cheevos_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_CHEEVOS"
|
||||
|
||||
[node name="cheevos_separator" type="HSeparator" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer/cheevos_container"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="cheevos_login_container" type="GridContainer" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer/cheevos_container"]
|
||||
layout_mode = 2
|
||||
theme_override_constants/h_separation = 64
|
||||
columns = 2
|
||||
|
||||
[node name="cheevos_username_label" type="Label" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer/cheevos_container/cheevos_login_container"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
text = "TK_CHEEVOSUNAME"
|
||||
|
||||
[node name="cheevos_username" type="LineEdit" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer/cheevos_container/cheevos_login_container"]
|
||||
custom_minimum_size = Vector2(256, 0)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "username"
|
||||
placeholder_text = "username"
|
||||
|
||||
[node name="cheevos_pass_label" type="Label" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer/cheevos_container/cheevos_login_container"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 1
|
||||
text = "TK_CHEEVOSPWD"
|
||||
|
||||
[node name="cheevos_pass" type="LineEdit" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer/cheevos_container/cheevos_login_container"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "password"
|
||||
placeholder_text = "password"
|
||||
secret = true
|
||||
secret_character = "*"
|
||||
|
||||
[node name="cheevos_advanced_container" type="VBoxContainer" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer/cheevos_container"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="cheevos_advanced_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer/cheevos_container/cheevos_advanced_container"]
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "TK_ADVANCED"
|
||||
|
||||
[node name="cheevos_hardcore" type="CheckButton" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer/cheevos_container/cheevos_advanced_container"]
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "TK_CHEEVOSHARDCORE"
|
||||
|
||||
[node name="cheevos_loginout_container" type="HBoxContainer" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer/cheevos_container/cheevos_advanced_container"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
theme_override_constants/separation = 10
|
||||
|
||||
[node name="cheevos_trophies_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer/cheevos_container/cheevos_advanced_container/cheevos_loginout_container"]
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "TK_CHEEVOSTROPHYBTN"
|
||||
|
||||
[node name="cheevos_loginout_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer/cheevos_container/cheevos_advanced_container/cheevos_loginout_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_LOGIN"
|
||||
|
||||
[node name="netplay_container" type="VBoxContainer" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="netplay" type="Label" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer/netplay_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_NETPLAY"
|
||||
|
||||
[node name="netplay_separator" type="HSeparator" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer/netplay_container"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="netplay_id_container" type="GridContainer" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer/netplay_container"]
|
||||
layout_mode = 2
|
||||
theme_override_constants/h_separation = 64
|
||||
columns = 2
|
||||
|
||||
[node name="netplay_id_label" type="Label" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer/netplay_container/netplay_id_container"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 5
|
||||
text = "TK_NETPLAYID"
|
||||
|
||||
[node name="netplay_id" type="LineEdit" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer/netplay_container/netplay_id_container"]
|
||||
custom_minimum_size = Vector2(256, 0)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "RetroDECK"
|
||||
placeholder_text = "RetroDECK"
|
||||
|
||||
[node name="netplay_address_label" type="Label" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer/netplay_container/netplay_id_container"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 5
|
||||
text = "TK_NETPLAYADDRESS"
|
||||
|
||||
[node name="netplay_address" type="LineEdit" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer/netplay_container/netplay_id_container"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "127.0.0.1"
|
||||
placeholder_text = "127.0.0.1"
|
||||
|
||||
[node name="blank_label" type="Label" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer/netplay_container/netplay_id_container"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 5
|
||||
|
||||
[node name="netplay_connect_disconnect_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer/netplay_container/netplay_id_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_NETPLAYCONNECT"
|
||||
|
||||
[node name="data_mng_container" type="VBoxContainer" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="data_mng_label" type="Label" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer/data_mng_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_DATAMNG"
|
||||
|
||||
[node name="data_mng_separator" type="HSeparator" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer/data_mng_container"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="saves_sync" type="CheckButton" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer/data_mng_container"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
disabled = true
|
||||
text = "TK_SAVESSYNC"
|
||||
|
||||
[node name="ftp_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_NETWORK/ScrollContainer/VBoxContainer/data_mng_container"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
disabled = true
|
||||
text = "TK_FTPBTN"
|
||||
|
||||
[node name="TK_TROUBLESHOOT" type="MarginContainer" parent="Background/MarginContainer/TabContainer"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
theme_override_constants/margin_right = 240
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="Background/MarginContainer/TabContainer/TK_TROUBLESHOOT"]
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = 64
|
||||
|
||||
[node name="troubleshoot_container" type="VBoxContainer" parent="Background/MarginContainer/TabContainer/TK_TROUBLESHOOT/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="troubleshoot_label" type="Label" parent="Background/MarginContainer/TabContainer/TK_TROUBLESHOOT/VBoxContainer/troubleshoot_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_TROUBLESHOOTLBL"
|
||||
|
||||
[node name="troubleshoot_separator" type="HSeparator" parent="Background/MarginContainer/TabContainer/TK_TROUBLESHOOT/VBoxContainer/troubleshoot_container"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="check_conn_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_TROUBLESHOOT/VBoxContainer/troubleshoot_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_CHECKCONN"
|
||||
|
||||
[node name="logs_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_TROUBLESHOOT/VBoxContainer/troubleshoot_container"]
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "TK_LOGSBTN"
|
||||
|
||||
[node name="reset_container" type="VBoxContainer" parent="Background/MarginContainer/TabContainer/TK_TROUBLESHOOT/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="reset_label" type="Label" parent="Background/MarginContainer/TabContainer/TK_TROUBLESHOOT/VBoxContainer/reset_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_RESET"
|
||||
|
||||
[node name="reset_separator" type="HSeparator" parent="Background/MarginContainer/TabContainer/TK_TROUBLESHOOT/VBoxContainer/reset_container"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="reset_single_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_TROUBLESHOOT/VBoxContainer/reset_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_RESETSINGLE"
|
||||
|
||||
[node name="reset_all_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_TROUBLESHOOT/VBoxContainer/reset_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_RESETALL"
|
||||
|
||||
[node name="reset_full_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_TROUBLESHOOT/VBoxContainer/reset_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_RESETFULL"
|
||||
|
||||
[node name="TK_CONFIGURATOR" type="MarginContainer" parent="Background/MarginContainer/TabContainer"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
theme_override_constants/margin_right = 240
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="Background/MarginContainer/TabContainer/TK_CONFIGURATOR"]
|
||||
layout_mode = 2
|
||||
follow_focus = true
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="Background/MarginContainer/TabContainer/TK_CONFIGURATOR/ScrollContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
theme_override_constants/separation = 64
|
||||
|
||||
[node name="system_container" type="VBoxContainer" parent="Background/MarginContainer/TabContainer/TK_CONFIGURATOR/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="system_label" type="Label" parent="Background/MarginContainer/TabContainer/TK_CONFIGURATOR/ScrollContainer/VBoxContainer/system_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_SYSTEM"
|
||||
|
||||
[node name="system_separator" type="HSeparator" parent="Background/MarginContainer/TabContainer/TK_CONFIGURATOR/ScrollContainer/VBoxContainer/system_container"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="update_notification" type="CheckButton" parent="Background/MarginContainer/TabContainer/TK_CONFIGURATOR/ScrollContainer/VBoxContainer/system_container"]
|
||||
layout_mode = 2
|
||||
button_pressed = true
|
||||
text = "TK_UPDATENOTIF"
|
||||
|
||||
[node name="easter_eggs" type="CheckButton" parent="Background/MarginContainer/TabContainer/TK_CONFIGURATOR/ScrollContainer/VBoxContainer/system_container"]
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
button_pressed = true
|
||||
text = "TK_EASTEREGGS"
|
||||
|
||||
[node name="multi_user_container" type="HBoxContainer" parent="Background/MarginContainer/TabContainer/TK_CONFIGURATOR/ScrollContainer/VBoxContainer/system_container"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="multi_user_label" type="Label" parent="Background/MarginContainer/TabContainer/TK_CONFIGURATOR/ScrollContainer/VBoxContainer/system_container/multi_user_container"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 1
|
||||
text = "TK_MULTIUSR"
|
||||
|
||||
[node name="multi_user_option" type="OptionButton" parent="Background/MarginContainer/TabContainer/TK_CONFIGURATOR/ScrollContainer/VBoxContainer/system_container/multi_user_container"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 10
|
||||
item_count = 3
|
||||
selected = 0
|
||||
popup/item_0/text = "TK_OFF"
|
||||
popup/item_0/id = 0
|
||||
popup/item_1/text = "TK_STEAMUSR"
|
||||
popup/item_1/id = 1
|
||||
popup/item_2/text = "TK_CUSTOMUSR"
|
||||
popup/item_2/id = 2
|
||||
|
||||
[node name="menu_music" type="CheckButton" parent="Background/MarginContainer/TabContainer/TK_CONFIGURATOR/ScrollContainer/VBoxContainer/system_container"]
|
||||
layout_mode = 2
|
||||
button_pressed = true
|
||||
text = "TK_MUSIC"
|
||||
|
||||
[node name="fancy_audio_player_here_(please_no)" type="Label" parent="Background/MarginContainer/TabContainer/TK_CONFIGURATOR/ScrollContainer/VBoxContainer/system_container"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 1
|
||||
text = "|| ------( )--------"
|
||||
|
||||
[node name="TK_ABOUT" type="MarginContainer" parent="Background/MarginContainer/TabContainer"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
theme_override_constants/margin_right = 240
|
||||
|
||||
[node name="about_container" type="VBoxContainer" parent="Background/MarginContainer/TabContainer/TK_ABOUT"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="about_header" type="RichTextLabel" parent="Background/MarginContainer/TabContainer/TK_ABOUT/about_container"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
theme_override_font_sizes/normal_font_size = 23
|
||||
text = "TK_ABOUTHEADER"
|
||||
scroll_active = false
|
||||
|
||||
[node name="logo" type="TextureRect" parent="Background/MarginContainer/TabContainer/TK_ABOUT/about_container"]
|
||||
custom_minimum_size = Vector2(128, 128)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 0
|
||||
texture = ExtResource("1_axfei")
|
||||
expand_mode = 1
|
||||
stretch_mode = 4
|
||||
|
||||
[node name="website_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_ABOUT/about_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_WEBSITE"
|
||||
|
||||
[node name="changelog_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_ABOUT/about_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_CHANGELOG"
|
||||
|
||||
[node name="wiki_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_ABOUT/about_container"]
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "TK_WIKI"
|
||||
|
||||
[node name="credits_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_ABOUT/about_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_CREDITS"
|
||||
|
||||
[node name="donate_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_ABOUT/about_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_DONATE"
|
||||
|
||||
[node name="contactus_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_ABOUT/about_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_CONTACTUS"
|
||||
|
||||
[node name="licenses_button" type="Button" parent="Background/MarginContainer/TabContainer/TK_ABOUT/about_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_LICENSES"
|
||||
|
||||
[node name="side_logo" type="Control" parent="Background"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 6
|
||||
anchor_left = 1.0
|
||||
anchor_top = 0.5
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -240.0
|
||||
offset_top = -175.0
|
||||
offset_bottom = 45.0
|
||||
grow_horizontal = 0
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="logo" type="TextureRect" parent="Background/side_logo"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 5
|
||||
anchor_left = 0.5
|
||||
anchor_right = 0.5
|
||||
offset_left = -64.0
|
||||
offset_right = 64.0
|
||||
offset_bottom = 128.0
|
||||
grow_horizontal = 2
|
||||
texture = ExtResource("1_axfei")
|
||||
expand_mode = 5
|
||||
|
||||
[node name="rd_title" type="RichTextLabel" parent="Background/side_logo"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 7
|
||||
anchor_left = 0.5
|
||||
anchor_top = 1.0
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 1.0
|
||||
offset_left = -66.0
|
||||
offset_top = -76.0
|
||||
offset_right = 66.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 0
|
||||
text = "RetroDECK
|
||||
v0.8.0b"
|
||||
scroll_active = false
|
||||
|
||||
[node name="exit_button" type="Button" parent="Background"]
|
||||
layout_mode = 1
|
||||
anchors_preset = -1
|
||||
anchor_left = 1.0
|
||||
anchor_right = 1.0
|
||||
offset_left = -33.0
|
||||
offset_top = 50.0
|
||||
offset_right = -12.0
|
||||
offset_bottom = 71.0
|
||||
grow_horizontal = 0
|
||||
icon = SubResource("AtlasTexture_st633")
|
||||
|
||||
[node name="locale_option" type="OptionButton" parent="Background"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 3
|
||||
anchor_left = 1.0
|
||||
anchor_top = 1.0
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
offset_left = -68.0
|
||||
offset_top = -39.0
|
||||
offset_right = -9.0
|
||||
offset_bottom = -10.0
|
||||
grow_horizontal = 0
|
||||
grow_vertical = 0
|
||||
item_count = 7
|
||||
selected = 0
|
||||
popup/item_0/text = ""
|
||||
popup/item_0/icon = ExtResource("5_exkn2")
|
||||
popup/item_0/id = 0
|
||||
popup/item_1/text = ""
|
||||
popup/item_1/icon = ExtResource("6_fiylw")
|
||||
popup/item_1/id = 1
|
||||
popup/item_2/text = ""
|
||||
popup/item_2/icon = ExtResource("7_qgxid")
|
||||
popup/item_2/id = 2
|
||||
popup/item_3/text = ""
|
||||
popup/item_3/icon = ExtResource("8_lptln")
|
||||
popup/item_3/id = 3
|
||||
popup/item_4/text = ""
|
||||
popup/item_4/icon = ExtResource("9_dp7oa")
|
||||
popup/item_4/id = 4
|
||||
popup/item_5/text = ""
|
||||
popup/item_5/icon = ExtResource("10_e8mt0")
|
||||
popup/item_5/id = 5
|
||||
popup/item_6/text = ""
|
||||
popup/item_6/icon = ExtResource("11_ri2fv")
|
||||
popup/item_6/id = 6
|
||||
|
||||
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource("3_xivj6")
|
||||
volume_db = -11.243
|
||||
|
||||
[node name="CanvasModulate" type="CanvasModulate" parent="."]
|
||||
visible = false
|
||||
position = Vector2(134, 151)
|
||||
color = Color(0.858824, 0.890196, 1, 1)
|
||||
|
||||
[node name="coltroller_guide" type="PanelContainer" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 12
|
||||
anchor_top = 1.0
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
offset_top = -38.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 0
|
||||
|
||||
[node name="controller_guide_text" type="RichTextLabel" parent="coltroller_guide"]
|
||||
layout_mode = 2
|
||||
theme_override_colors/default_color = Color(1, 1, 1, 0.607843)
|
||||
theme_override_font_sizes/normal_font_size = 23
|
||||
text = "(A) Accept (B) Back (L/R) Tab Switch (Menu) Exit"
|
||||
fit_content = true
|
||||
scroll_active = false
|
||||
|
||||
[node name="rekku" type="Control" parent="."]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
anchors_preset = 7
|
||||
anchor_left = 0.5
|
||||
anchor_top = 1.0
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 1.0
|
||||
offset_top = 5.0
|
||||
offset_bottom = 5.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 0
|
||||
mouse_filter = 1
|
||||
mouse_default_cursor_shape = 8
|
||||
script = ExtResource("4_nqqx3")
|
||||
|
||||
[node name="speach_bubble" type="Panel" parent="rekku"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 7
|
||||
anchor_left = 0.5
|
||||
anchor_top = 1.0
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 1.0
|
||||
offset_left = -310.0
|
||||
offset_top = -206.0
|
||||
offset_right = 310.0
|
||||
offset_bottom = -66.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 0
|
||||
theme_override_styles/panel = SubResource("StyleBoxTexture_rf0rc")
|
||||
|
||||
[node name="helper_text" type="RichTextLabel" parent="rekku/speach_bubble"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -300.0
|
||||
offset_top = -60.0
|
||||
offset_right = 300.0
|
||||
offset_bottom = 60.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
text = "Rekku:
|
||||
|
||||
When \"Quick Resume\" is enabled, a savestate is created upon quit and it will be loaded once the game is started.
|
||||
This is mot working on the following systems: Switch, WiiU."
|
||||
scroll_following = true
|
||||
script = ExtResource("5_cprkf")
|
||||
|
||||
[node name="rekku_sprite" type="Sprite2D" parent="rekku"]
|
||||
position = Vector2(490, -194)
|
||||
scale = Vector2(0.292969, 0.292969)
|
||||
texture = ExtResource("9_brsrf")
|
||||
metadata/_edit_group_ = true
|
||||
|
||||
[node name="blink_anim" type="AnimatedSprite2D" parent="rekku/rekku_sprite"]
|
||||
sprite_frames = SubResource("SpriteFrames_trwmf")
|
||||
animation = &"blink"
|
||||
autoplay = "blink"
|
||||
frame_progress = 0.299789
|
||||
|
||||
[node name="speech_anim" type="AnimatedSprite2D" parent="rekku/rekku_sprite"]
|
||||
sprite_frames = SubResource("SpriteFrames_p8gbs")
|
||||
animation = &"speech"
|
||||
frame_progress = 0.664627
|
||||
|
||||
[connection signal="pressed" from="Background/MarginContainer/TabContainer/TK_SYSTEM/ScrollContainer/VBoxContainer/game_control_container/GridContainer/quick_resume_adv_button" to="." method="_on_quickresume_advanced_pressed"]
|
||||
[connection signal="pressed" from="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/scan_container/bios_button" to="." method="_on_bios_button_pressed"]
|
||||
[connection signal="pressed" from="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/scan_container/bios_button_expert" to="." method="_on_bios_button_expert_pressed"]
|
||||
[connection signal="pressed" from="Background/exit_button" to="." method="_on_exit_button_pressed"]
|
||||
[connection signal="item_selected" from="Background/locale_option" to="." method="_on_locale_selected"]
|
15
tools/configurator/popup_content_test.tscn
Normal file
|
@ -0,0 +1,15 @@
|
|||
[gd_scene format=3 uid="uid://bihon3xtx45y7"]
|
||||
|
||||
[node name="PopupContentTest" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="Button" type="Button" parent="."]
|
||||
layout_mode = 1
|
||||
offset_right = 12.0
|
||||
offset_bottom = 8.0
|
||||
text = "Test"
|
15
tools/configurator/progress_file.sh
Executable file
|
@ -0,0 +1,15 @@
|
|||
#!/bin/bash
|
||||
|
||||
progress_file="progress"
|
||||
echo "0" > "$progress_file"
|
||||
|
||||
for ((i=1; i<=100; i++)); do
|
||||
echo -ne "$i" > "$progress_file"
|
||||
# echo $i
|
||||
# sleep 0.1
|
||||
sleep $((RANDOM / 30000))
|
||||
done
|
||||
|
||||
sleep 1
|
||||
|
||||
rm "$progress_file"
|
95
tools/configurator/project.godot
Normal file
|
@ -0,0 +1,95 @@
|
|||
; Engine configuration file.
|
||||
; It's best edited using the editor UI and not directly,
|
||||
; since the parameters that go here are not all obvious.
|
||||
;
|
||||
; Format:
|
||||
; [section] ; section goes between []
|
||||
; param=value ; assign values to parameters
|
||||
|
||||
config_version=5
|
||||
|
||||
[application]
|
||||
|
||||
config/name="RetroDECK Configurator"
|
||||
run/main_scene="res://main.tscn"
|
||||
config/features=PackedStringArray("4.2", "GL Compatibility")
|
||||
boot_splash/bg_color=Color(0.141176, 0.141176, 0.141176, 0)
|
||||
boot_splash/show_image=false
|
||||
config/icon="res://icon.svg"
|
||||
|
||||
[display]
|
||||
|
||||
window/size/viewport_width=1280
|
||||
window/size/viewport_height=800
|
||||
window/size/borderless=true
|
||||
window/size/transparent=true
|
||||
window/per_pixel_transparency/allowed=true
|
||||
|
||||
[filesystem]
|
||||
|
||||
import/blender/enabled=false
|
||||
|
||||
[gui]
|
||||
|
||||
theme/custom="res://res/pixel_ui_theme/RetroDECKTheme.tres"
|
||||
|
||||
[input]
|
||||
|
||||
ui_accept={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194309,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194310,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"key_label":0,"unicode":32,"echo":false,"script":null)
|
||||
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":false,"script":null)
|
||||
]
|
||||
}
|
||||
ui_select={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"key_label":0,"unicode":32,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
ui_cancel={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194305,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
|
||||
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":1,"pressure":0.0,"pressed":false,"script":null)
|
||||
]
|
||||
}
|
||||
rekku_hide={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":3,"pressure":0.0,"pressed":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":true,"meta_pressed":false,"pressed":false,"keycode":72,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
quit={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":15,"pressure":0.0,"pressed":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":true,"meta_pressed":false,"pressed":false,"keycode":81,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
next_tab={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":10,"pressure":0.0,"pressed":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":69,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
previous_tab={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":9,"pressure":0.0,"pressed":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":81,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
|
||||
[internationalization]
|
||||
|
||||
locale/translation_remaps={
|
||||
"res://res/pixel_ui_theme/8x8_ui_elements.png": PackedStringArray("res://res/pixel_ui_theme/8x8_ui_elements_de.png:de", "res://res/pixel_ui_theme/8x8_ui_elements_sv.png:sv"),
|
||||
"res://res/pixel_ui_theme/8x8_ui_elements2x.png": PackedStringArray("res://res/pixel_ui_theme/8x8_ui_elements2x_de.png:de", "res://res/pixel_ui_theme/8x8_ui_elements2x_sv.png:sv")
|
||||
}
|
||||
locale/translations=PackedStringArray("res://locales/interface.en.translation", "res://locales/interface.it.translation", "res://locales/interface.de.translation", "res://locales/interface.sv.translation", "res://locales/interface.ua.translation", "res://locales/interface.zh.translation", "res://locales/interface.ja.translation")
|
||||
|
||||
[rendering]
|
||||
|
||||
textures/canvas_textures/default_texture_filter=0
|
||||
renderer/rendering_method="gl_compatibility"
|
||||
renderer/rendering_method.mobile="gl_compatibility"
|
||||
viewport/transparent_background=true
|
34
tools/configurator/res/Rekku/Rekku-base.png.import
Executable file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://d25k8xm78k7sg"
|
||||
path="res://.godot/imported/Rekku-base.png-ec524e22fc84c361466241e4e6648c25.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://res/Rekku/Rekku-base.png"
|
||||
dest_files=["res://.godot/imported/Rekku-base.png-ec524e22fc84c361466241e4e6648c25.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
34
tools/configurator/res/Rekku/Rekku-test.png.import
Executable file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dodf3rp1jsch0"
|
||||
path="res://.godot/imported/Rekku-test.png-377c1078b888c6a899d74f4e1c0b30d6.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://res/Rekku/Rekku-test.png"
|
||||
dest_files=["res://.godot/imported/Rekku-test.png-377c1078b888c6a899d74f4e1c0b30d6.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
BIN
tools/configurator/res/Rekku/Rekku-test.xcf
Executable file
BIN
tools/configurator/res/Rekku/base.png
Executable file
After Width: | Height: | Size: 854 KiB |
34
tools/configurator/res/Rekku/base.png.import
Normal file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cor8ep0fkqm08"
|
||||
path="res://.godot/imported/base.png-fa04a04461c99132fb42530f9f422101.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://res/Rekku/base.png"
|
||||
dest_files=["res://.godot/imported/base.png-fa04a04461c99132fb42530f9f422101.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
BIN
tools/configurator/res/Rekku/blink1.png
Executable file
After Width: | Height: | Size: 12 KiB |
34
tools/configurator/res/Rekku/blink1.png.import
Normal file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cv7nckloqhn5m"
|
||||
path="res://.godot/imported/blink1.png-2ff53dd2db061012dbd5bd7f4ee9f7de.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://res/Rekku/blink1.png"
|
||||
dest_files=["res://.godot/imported/blink1.png-2ff53dd2db061012dbd5bd7f4ee9f7de.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
BIN
tools/configurator/res/Rekku/blink2.png
Executable file
After Width: | Height: | Size: 12 KiB |
34
tools/configurator/res/Rekku/blink2.png.import
Normal file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://by0oj188x350g"
|
||||
path="res://.godot/imported/blink2.png-acc625fdb199f690a4a62f9989660ae9.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://res/Rekku/blink2.png"
|
||||
dest_files=["res://.godot/imported/blink2.png-acc625fdb199f690a4a62f9989660ae9.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
BIN
tools/configurator/res/Rekku/eyes-open.png
Executable file
After Width: | Height: | Size: 127 KiB |
34
tools/configurator/res/Rekku/eyes-open.png.import
Normal file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cavtn1rljc5oe"
|
||||
path="res://.godot/imported/eyes-open.png-66d49c486d52265b50e5d0fe3abb8fad.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://res/Rekku/eyes-open.png"
|
||||
dest_files=["res://.godot/imported/eyes-open.png-66d49c486d52265b50e5d0fe3abb8fad.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
BIN
tools/configurator/res/Rekku/mouth-A.png
Executable file
After Width: | Height: | Size: 15 KiB |
34
tools/configurator/res/Rekku/mouth-A.png.import
Normal file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://ciwghjy0ahxk6"
|
||||
path="res://.godot/imported/mouth-A.png-f35914bd03120177c7c482df466645b8.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://res/Rekku/mouth-A.png"
|
||||
dest_files=["res://.godot/imported/mouth-A.png-f35914bd03120177c7c482df466645b8.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
BIN
tools/configurator/res/Rekku/mouth-O.png
Executable file
After Width: | Height: | Size: 16 KiB |
34
tools/configurator/res/Rekku/mouth-O.png.import
Normal file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b6gl8sltbak7v"
|
||||
path="res://.godot/imported/mouth-O.png-68905b4fc98491fe877be590173085e9.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://res/Rekku/mouth-O.png"
|
||||
dest_files=["res://.godot/imported/mouth-O.png-68905b4fc98491fe877be590173085e9.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
BIN
tools/configurator/res/Rekku/mouth-base.png
Executable file
After Width: | Height: | Size: 18 KiB |
34
tools/configurator/res/Rekku/mouth-base.png.import
Normal file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://kx8eypf4ffvu"
|
||||
path="res://.godot/imported/mouth-base.png-bc1292aecbfbb8349d7c907692d65222.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://res/Rekku/mouth-base.png"
|
||||
dest_files=["res://.godot/imported/mouth-base.png-bc1292aecbfbb8349d7c907692d65222.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
BIN
tools/configurator/res/configurator.mp3
Executable file
19
tools/configurator/res/configurator.mp3.import
Normal file
|
@ -0,0 +1,19 @@
|
|||
[remap]
|
||||
|
||||
importer="mp3"
|
||||
type="AudioStreamMP3"
|
||||
uid="uid://dig4pco500pyt"
|
||||
path="res://.godot/imported/configurator.mp3-bf5a215ea0dc180d97009d0d9ee0165c.mp3str"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://res/configurator.mp3"
|
||||
dest_files=["res://.godot/imported/configurator.mp3-bf5a215ea0dc180d97009d0d9ee0165c.mp3str"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
BIN
tools/configurator/res/flags/afghanistan_32.png
Normal file
After Width: | Height: | Size: 781 B |
34
tools/configurator/res/flags/afghanistan_32.png.import
Normal file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://vux4rv0elpwg"
|
||||
path="res://.godot/imported/afghanistan_32.png-58a84762f21db2c34f863ad3c34f5280.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://res/flags/afghanistan_32.png"
|
||||
dest_files=["res://.godot/imported/afghanistan_32.png-58a84762f21db2c34f863ad3c34f5280.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
BIN
tools/configurator/res/flags/albania_32.png
Normal file
After Width: | Height: | Size: 541 B |
34
tools/configurator/res/flags/albania_32.png.import
Normal file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://srdppupxs06l"
|
||||
path="res://.godot/imported/albania_32.png-51c07292d1f87d87637793dbbd792219.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://res/flags/albania_32.png"
|
||||
dest_files=["res://.godot/imported/albania_32.png-51c07292d1f87d87637793dbbd792219.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
BIN
tools/configurator/res/flags/algeria_32.png
Normal file
After Width: | Height: | Size: 5.3 KiB |
34
tools/configurator/res/flags/algeria_32.png.import
Normal file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cda3dhanokt4h"
|
||||
path="res://.godot/imported/algeria_32.png-e0ce42d5df4370d9beb6f875d3bc98f8.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://res/flags/algeria_32.png"
|
||||
dest_files=["res://.godot/imported/algeria_32.png-e0ce42d5df4370d9beb6f875d3bc98f8.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
BIN
tools/configurator/res/flags/andorra_32.png
Normal file
After Width: | Height: | Size: 590 B |
34
tools/configurator/res/flags/andorra_32.png.import
Normal file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dm8dqr3nu3y6x"
|
||||
path="res://.godot/imported/andorra_32.png-72c1c6a031652b68670bf6f3e4ca589d.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://res/flags/andorra_32.png"
|
||||
dest_files=["res://.godot/imported/andorra_32.png-72c1c6a031652b68670bf6f3e4ca589d.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
BIN
tools/configurator/res/flags/andorra_la_vella_32.png
Normal file
After Width: | Height: | Size: 521 B |
34
tools/configurator/res/flags/andorra_la_vella_32.png.import
Normal file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bms561fenihwm"
|
||||
path="res://.godot/imported/andorra_la_vella_32.png-24b4d5b2d6bb85841457235cb3062347.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://res/flags/andorra_la_vella_32.png"
|
||||
dest_files=["res://.godot/imported/andorra_la_vella_32.png-24b4d5b2d6bb85841457235cb3062347.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
BIN
tools/configurator/res/flags/angola_32.png
Normal file
After Width: | Height: | Size: 5.3 KiB |
34
tools/configurator/res/flags/angola_32.png.import
Normal file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cs0xfn77783up"
|
||||
path="res://.godot/imported/angola_32.png-e05b0b666b0014cb3ee05223811a6dea.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://res/flags/angola_32.png"
|
||||
dest_files=["res://.godot/imported/angola_32.png-e05b0b666b0014cb3ee05223811a6dea.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
BIN
tools/configurator/res/flags/antarctica_32.png
Normal file
After Width: | Height: | Size: 5.3 KiB |
34
tools/configurator/res/flags/antarctica_32.png.import
Normal file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://vwvmbt22cgim"
|
||||
path="res://.godot/imported/antarctica_32.png-c4db612ad30d285f80c7aa1ae8a44968.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://res/flags/antarctica_32.png"
|
||||
dest_files=["res://.godot/imported/antarctica_32.png-c4db612ad30d285f80c7aa1ae8a44968.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
BIN
tools/configurator/res/flags/antarctica_british_ensign_32.png
Normal file
After Width: | Height: | Size: 5.3 KiB |
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c0b74ndbkrt3i"
|
||||
path="res://.godot/imported/antarctica_british_ensign_32.png-b3231df1aa65e9143ec208695aa1b7da.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://res/flags/antarctica_british_ensign_32.png"
|
||||
dest_files=["res://.godot/imported/antarctica_british_ensign_32.png-b3231df1aa65e9143ec208695aa1b7da.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
BIN
tools/configurator/res/flags/antarctica_magallanes_32.png
Normal file
After Width: | Height: | Size: 5.3 KiB |
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cm3iic71mnrn"
|
||||
path="res://.godot/imported/antarctica_magallanes_32.png-fd4122f33ef6d329580a3ecd467612ed.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://res/flags/antarctica_magallanes_32.png"
|
||||
dest_files=["res://.godot/imported/antarctica_magallanes_32.png-fd4122f33ef6d329580a3ecd467612ed.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
BIN
tools/configurator/res/flags/antarctica_treaty_32.png
Normal file
After Width: | Height: | Size: 5.3 KiB |
34
tools/configurator/res/flags/antarctica_treaty_32.png.import
Normal file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b0isqk6tfqonx"
|
||||
path="res://.godot/imported/antarctica_treaty_32.png-eb203480f465c4e527c72624aaa29875.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://res/flags/antarctica_treaty_32.png"
|
||||
dest_files=["res://.godot/imported/antarctica_treaty_32.png-eb203480f465c4e527c72624aaa29875.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
BIN
tools/configurator/res/flags/armenia_32.png
Normal file
After Width: | Height: | Size: 429 B |
34
tools/configurator/res/flags/armenia_32.png.import
Normal file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c350r3fn13y7m"
|
||||
path="res://.godot/imported/armenia_32.png-f2d5c666abf6b0f64987e1310d869b82.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://res/flags/armenia_32.png"
|
||||
dest_files=["res://.godot/imported/armenia_32.png-f2d5c666abf6b0f64987e1310d869b82.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
BIN
tools/configurator/res/flags/australia_32.png
Normal file
After Width: | Height: | Size: 5.3 KiB |
34
tools/configurator/res/flags/australia_32.png.import
Normal file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b5g0iv6xhtkva"
|
||||
path="res://.godot/imported/australia_32.png-a4a534c161665b547de0cf0fae8eab58.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://res/flags/australia_32.png"
|
||||
dest_files=["res://.godot/imported/australia_32.png-a4a534c161665b547de0cf0fae8eab58.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
BIN
tools/configurator/res/flags/australia_christmas_island_32.png
Normal file
After Width: | Height: | Size: 5.3 KiB |
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://k6tnrwafidyu"
|
||||
path="res://.godot/imported/australia_christmas_island_32.png-780ae3a1fb7585e974e6d649143f77b4.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://res/flags/australia_christmas_island_32.png"
|
||||
dest_files=["res://.godot/imported/australia_christmas_island_32.png-780ae3a1fb7585e974e6d649143f77b4.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
BIN
tools/configurator/res/flags/australia_cocos_keeling_32.png
Normal file
After Width: | Height: | Size: 5.3 KiB |