Player character decal hotfix
This commit is contained in:
parent
2dafe8f252
commit
4243226fba
8 changed files with 145 additions and 18 deletions
|
|
@ -9,7 +9,7 @@ custom_features=""
|
|||
export_filter="all_resources"
|
||||
include_filter=""
|
||||
exclude_filter="builds/*,playtest/*,scripts/*"
|
||||
export_path="builds/v0.5.0-prealpha/windows-x86_64/NETfishing.exe"
|
||||
export_path="builds/v0.5.1-prealpha/windows-x86_64/NETfishing.exe"
|
||||
patches=PackedStringArray()
|
||||
encryption_include_filters=""
|
||||
encryption_exclude_filters=""
|
||||
|
|
@ -35,11 +35,11 @@ application/modify_resources=true
|
|||
application/icon=""
|
||||
application/console_wrapper_icon=""
|
||||
application/icon_interpolation=4
|
||||
application/file_version="0.5.0.0"
|
||||
application/product_version="0.5.0.0"
|
||||
application/file_version="0.5.1.0"
|
||||
application/product_version="0.5.1.0"
|
||||
application/company_name=""
|
||||
application/product_name="NETfishing"
|
||||
application/file_description="NETfishing v0.5.0-prealpha"
|
||||
application/file_description="NETfishing v0.5.1-prealpha"
|
||||
application/copyright=""
|
||||
application/trademarks=""
|
||||
application/export_angle=0
|
||||
|
|
@ -51,6 +51,67 @@ ssh_remote_deploy/extra_args_scp=""
|
|||
ssh_remote_deploy/run_script="#!/usr/bin/env bash\nexport DISPLAY=:0\nunzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"\n\"{temp_dir}/{exe_name}\" {cmd_args}"
|
||||
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash\nkill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\")\nrm -rf \"{temp_dir}\""
|
||||
|
||||
[preset.3]
|
||||
|
||||
name="Linux ARM64"
|
||||
platform="Linux"
|
||||
runnable=false
|
||||
advanced_options=false
|
||||
dedicated_server=false
|
||||
custom_features=""
|
||||
export_filter="all_resources"
|
||||
include_filter=""
|
||||
exclude_filter="builds/*,playtest/*,scripts/*"
|
||||
export_path="builds/v0.5.1-prealpha/linux-arm64/NETfishing.arm64"
|
||||
patches=PackedStringArray()
|
||||
encryption_include_filters=""
|
||||
encryption_exclude_filters=""
|
||||
seed=0
|
||||
encrypt_pck=false
|
||||
encrypt_directory=false
|
||||
script_export_mode=2
|
||||
|
||||
[preset.3.options]
|
||||
|
||||
custom_template/debug=""
|
||||
custom_template/release=""
|
||||
debug/export_console_wrapper=0
|
||||
binary_format/embed_pck=false
|
||||
binary_format/architecture="arm64"
|
||||
texture_format/s3tc_bptc=true
|
||||
texture_format/etc2_astc=false
|
||||
|
||||
[preset.4]
|
||||
|
||||
name="macOS"
|
||||
platform="macOS"
|
||||
runnable=false
|
||||
advanced_options=false
|
||||
dedicated_server=false
|
||||
custom_features=""
|
||||
export_filter="all_resources"
|
||||
include_filter=""
|
||||
exclude_filter="builds/*,playtest/*,scripts/*"
|
||||
export_path="builds/v0.5.1-prealpha/macos/NETfishing.zip"
|
||||
patches=PackedStringArray()
|
||||
encryption_include_filters=""
|
||||
encryption_exclude_filters=""
|
||||
seed=0
|
||||
encrypt_pck=false
|
||||
encrypt_directory=false
|
||||
script_export_mode=2
|
||||
|
||||
[preset.4.options]
|
||||
|
||||
custom_template/debug=""
|
||||
custom_template/release=""
|
||||
application/bundle_identifier="io.makearmy.netfishing"
|
||||
application/short_version="0.5.1"
|
||||
application/version="0.5.1"
|
||||
application/architecture="universal"
|
||||
codesign/enable=false
|
||||
notarization/enable=false
|
||||
|
||||
[preset.2]
|
||||
|
||||
name="Android"
|
||||
|
|
@ -62,7 +123,7 @@ custom_features=""
|
|||
export_filter="all_resources"
|
||||
include_filter=""
|
||||
exclude_filter="builds/*,playtest/*,scripts/*"
|
||||
export_path="builds/android/NETfishing-debug.apk"
|
||||
export_path="builds/v0.5.1-prealpha/android/NETfishing.apk"
|
||||
patches=PackedStringArray()
|
||||
encryption_include_filters=""
|
||||
encryption_exclude_filters=""
|
||||
|
|
@ -83,8 +144,8 @@ architectures/armeabi-v7a=false
|
|||
architectures/arm64-v8a=true
|
||||
architectures/x86=false
|
||||
architectures/x86_64=false
|
||||
version/code=40100
|
||||
version/name="0.5.0-prealpha"
|
||||
version/code=50100
|
||||
version/name="0.5.1-prealpha"
|
||||
package/unique_name="io.makearmy.netfishing"
|
||||
package/name="NETfishing"
|
||||
package/signed=true
|
||||
|
|
@ -121,7 +182,7 @@ custom_features=""
|
|||
export_filter="all_resources"
|
||||
include_filter=""
|
||||
exclude_filter="builds/*,playtest/*,scripts/*"
|
||||
export_path="builds/v0.5.0-prealpha/linux-x86_64/NETfishing.x86_64"
|
||||
export_path="builds/v0.5.1-prealpha/linux-x86_64/NETfishing.x86_64"
|
||||
patches=PackedStringArray()
|
||||
encryption_include_filters=""
|
||||
encryption_exclude_filters=""
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
NETfishing
|
||||
v0.5.0-prealpha
|
||||
Pre-Alpha 0.5.0
|
||||
v0.5.1-prealpha
|
||||
Pre-Alpha 0.5.1
|
||||
|
||||
Thank you for trying this early private playtest.
|
||||
|
||||
|
|
|
|||
|
|
@ -155,15 +155,21 @@ static func _ensure_feature_assets() -> void:
|
|||
if directory != null:
|
||||
var files := directory.get_files()
|
||||
files.sort()
|
||||
var normalized_paths: Dictionary = {}
|
||||
for file_name: String in files:
|
||||
if not file_name.to_lower().ends_with(".png"):
|
||||
var normalized_file_name := _canonical_feature_filename(file_name)
|
||||
if (
|
||||
normalized_file_name.is_empty()
|
||||
or normalized_paths.has(normalized_file_name)
|
||||
):
|
||||
continue
|
||||
normalized_paths[normalized_file_name] = true
|
||||
var option_id := _feature_id_from_filename(
|
||||
category_id, file_name
|
||||
category_id, normalized_file_name
|
||||
)
|
||||
if option_id.is_empty() or textures.has(option_id):
|
||||
continue
|
||||
var resource_path := root_path.path_join(file_name)
|
||||
var resource_path := root_path.path_join(normalized_file_name)
|
||||
var texture := ResourceLoader.load(resource_path) as Texture2D
|
||||
if texture == null:
|
||||
push_warning(
|
||||
|
|
@ -181,6 +187,18 @@ static func _ensure_feature_assets() -> void:
|
|||
_feature_textures[category_id] = textures
|
||||
|
||||
|
||||
static func _canonical_feature_filename(file_name: String) -> String:
|
||||
var lower_name := file_name.to_lower()
|
||||
for sidecar_suffix: String in [".import", ".remap"]:
|
||||
if lower_name.ends_with(".png" + sidecar_suffix):
|
||||
return file_name.substr(
|
||||
0, file_name.length() - sidecar_suffix.length()
|
||||
)
|
||||
if lower_name.ends_with(".png"):
|
||||
return file_name
|
||||
return ""
|
||||
|
||||
|
||||
static func _feature_id_from_filename(
|
||||
category_id: String,
|
||||
file_name: String,
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ config_version=5
|
|||
[application]
|
||||
|
||||
config/name="NETFISHING"
|
||||
config/version="0.5.0-prealpha"
|
||||
config/version="0.5.1-prealpha"
|
||||
run/main_scene="res://main/main.tscn"
|
||||
config/features=PackedStringArray("4.7", "GL Compatibility")
|
||||
config/icon="res://icon.svg"
|
||||
|
|
|
|||
|
|
@ -4,12 +4,12 @@ set -euo pipefail
|
|||
|
||||
readonly SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
||||
readonly PROJECT_ROOT="$(cd -- "${SCRIPT_DIR}/.." && pwd)"
|
||||
readonly BUILD_ROOT="${PROJECT_ROOT}/builds/v0.5.0-prealpha"
|
||||
readonly BUILD_ROOT="${PROJECT_ROOT}/builds/v0.5.1-prealpha"
|
||||
readonly WINDOWS_DIR="${BUILD_ROOT}/windows-x86_64"
|
||||
readonly LINUX_DIR="${BUILD_ROOT}/linux-x86_64"
|
||||
readonly README_SOURCE="${PROJECT_ROOT}/playtest/README-PLAYTEST.txt"
|
||||
readonly WINDOWS_ZIP="${BUILD_ROOT}/NETfishing-v0.5.0-prealpha-windows-x86_64.zip"
|
||||
readonly LINUX_ZIP="${BUILD_ROOT}/NETfishing-v0.5.0-prealpha-linux-x86_64.zip"
|
||||
readonly WINDOWS_ZIP="${BUILD_ROOT}/NETfishing-v0.5.1-prealpha-windows-x86_64.zip"
|
||||
readonly LINUX_ZIP="${BUILD_ROOT}/NETfishing-v0.5.1-prealpha-linux-x86_64.zip"
|
||||
readonly GODOT_BIN="${GODOT_BIN:-godot}"
|
||||
|
||||
if [[ ! -f "${PROJECT_ROOT}/project.godot" ]]; then
|
||||
|
|
|
|||
47
tests/exported_decal_hotfix_validation.gd
Normal file
47
tests/exported_decal_hotfix_validation.gd
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
extends SceneTree
|
||||
|
||||
|
||||
func _initialize() -> void:
|
||||
call_deferred("_run")
|
||||
|
||||
|
||||
func _run() -> void:
|
||||
assert(
|
||||
CharacterCustomizationCatalog._canonical_feature_filename(
|
||||
"eyes_alligator_eyes.png"
|
||||
) == "eyes_alligator_eyes.png"
|
||||
)
|
||||
assert(
|
||||
CharacterCustomizationCatalog._canonical_feature_filename(
|
||||
"eyes_alligator_eyes.png.import"
|
||||
) == "eyes_alligator_eyes.png"
|
||||
)
|
||||
assert(
|
||||
CharacterCustomizationCatalog._canonical_feature_filename(
|
||||
"eyes_alligator_eyes.png.remap"
|
||||
) == "eyes_alligator_eyes.png"
|
||||
)
|
||||
assert(
|
||||
CharacterCustomizationCatalog._canonical_feature_filename(
|
||||
"eyes_alligator_eyes.jpg"
|
||||
).is_empty()
|
||||
)
|
||||
|
||||
var expected_counts := {"eyes": 22, "mouth": 17, "nose": 17}
|
||||
for category_id: String in expected_counts:
|
||||
var options := CharacterCustomizationCatalog.options_for(category_id)
|
||||
assert(options.size() == int(expected_counts[category_id]) + 1)
|
||||
var seen_ids: Dictionary = {}
|
||||
for option: Dictionary in options:
|
||||
var option_id := str(option.get("id", ""))
|
||||
assert(not seen_ids.has(option_id))
|
||||
seen_ids[option_id] = true
|
||||
if option_id != "none":
|
||||
assert(
|
||||
CharacterCustomizationCatalog.texture_for(
|
||||
category_id, option_id
|
||||
) != null
|
||||
)
|
||||
|
||||
print("Exported decal hotfix validation: PASS")
|
||||
quit()
|
||||
1
tests/exported_decal_hotfix_validation.gd.uid
Normal file
1
tests/exported_decal_hotfix_validation.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://dolsbknm52hsy
|
||||
|
|
@ -206,7 +206,7 @@ unique_name_in_owner = true
|
|||
layout_mode = 2
|
||||
theme_override_colors/font_color = Color(0.682, 0.733, 0.761, 1)
|
||||
theme_override_font_sizes/font_size = 22
|
||||
text = "v0.5.0-prealpha"
|
||||
text = "v0.5.1-prealpha"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="Spacer" type="Control" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent"]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue