From 876c243a8bc51f4a73c0655d047677021c1abc99 Mon Sep 17 00:00:00 2001 From: Voyager Date: Thu, 20 Aug 2026 23:48:00 -0400 Subject: [PATCH 01/90] fix(portmaster): align launcher with upstream conventions --- docs/PORTMASTER.md | 33 ++++++++++++++++-------------- scripts/build_portmaster.sh | 9 +++++--- scripts/portmaster/NETfishing.sh | 25 ++++++---------------- scripts/portmaster/netfishing.gptk | 5 +++-- 4 files changed, 33 insertions(+), 39 deletions(-) diff --git a/docs/PORTMASTER.md b/docs/PORTMASTER.md index e7e3e09..e8c24f6 100644 --- a/docs/PORTMASTER.md +++ b/docs/PORTMASTER.md @@ -28,18 +28,21 @@ directory. The templates in `scripts/portmaster/` are authoritative. - `port.json` uses schema version 4, names `netfishing.zip`, and marks the self-contained package ready to run. -- `NETfishing.sh` starts with `# PORTMASTER: netfishing.zip, NETfishing.sh`. +- `NETfishing.sh` does not contain a `# PORTMASTER:` signature in the source or + distributable archive. HarbourMaster adds that installation marker when it + installs the port. - The executable is `netfishing/NETfishing.aarch64`. - The package declares AArch64, two analog sticks, GLIBC 2.28, and `weston_pkg_0.2.squashfs`. - The launcher starts GPTOKEYB with the explicit `netfishing.gptk` no-op map. - Every keyboard and mouse binding is disabled, leaving only PortMaster's + Every keyboard and mouse binding is disabled, leaving only GPTOKEYB's device-specific force-quit chord while Godot and NETfishing's controller - mapping manager handle gameplay input. + mapping manager handle gameplay input. The explicit map also avoids the + anomalous controller behavior observed on ROCKNIX without a passthrough map. - The launcher calls `pm_platform_helper` for the game executable after starting GPTOKEYB and calls `pm_finish` after the game exits. -- New installations automatically create player data under - `ports/saves/netfishing/` and do not present the in-game folder picker. +- NETfishing automatically creates player data for new installations under + `ports/saves/netfishing/` and does not present the in-game folder picker. - Existing installations with a selected data root keep that location when upgraded. Device-local data, configuration, and cache remain under `netfishing/conf/data`, `netfishing/conf/config`, and @@ -103,15 +106,15 @@ Before upgrading an existing installation, preserve device. After installation: 1. Confirm the installed executable and PCK hashes match the staged release. -2. Confirm the installed launcher contains the canonical PortMaster header, - starts GPTOKEYB with `netfishing.gptk`, and calls - `pm_platform_helper` for the game executable. +2. Confirm HarbourMaster added its `# PORTMASTER:` installation signature to + the installed launcher, then confirm the launcher starts GPTOKEYB with + `netfishing.gptk` and calls `pm_platform_helper` for the game executable. 3. Confirm `conf/` and the external save directory were not replaced or removed. 4. Launch the installed port through the normal muOS menu. 5. Verify the displayed game version and controller face-button mapping. -6. Verify PortMaster's force-quit chord exits the game. This is Start+Select on - most devices. +6. Verify GPTOKEYB's device-specific force-quit chord exits the game. This is + Start+Select on most devices. Installing the public PortMaster catalog entry can still install an older catalog build until the upstream `netfishing.zip` is updated. A local release @@ -173,12 +176,12 @@ the game process. This applies the mapping at the same point as the working reconstruction. Do not move the mapping back to either side of `westonwrap.sh`. -Legacy GPTOKEYB builds can load their compiled default keyboard map when no -`-c` file is supplied. That map translates face buttons, D-pad directions, and -sticks into keyboard or mouse events on top of Godot's native controller input. Always pass `netfishing.gptk`, which explicitly unassigns every direct and -hotkey binding with GPTOKEYB's `\"` value. Do not add gameplay mappings to this -file. The Start+Select kill chord remains independent of the no-op bindings. +hotkey binding with GPTOKEYB's `\"` value. This keeps GPTOKEYB from injecting +keyboard or mouse events on top of Godot's native controller input and retains +the device-specific kill chord. Supplying the explicit passthrough map also +avoids the anomalous controller behavior observed on ROCKNIX when no map is +provided. Do not add gameplay mappings to this file. Do not call `Input.add_joy_mapping(..., true)` for a recognized connected muOS controller. Updating this virtual controller after connection can stop Godot diff --git a/scripts/build_portmaster.sh b/scripts/build_portmaster.sh index b5ad5ae..833305b 100755 --- a/scripts/build_portmaster.sh +++ b/scripts/build_portmaster.sh @@ -223,7 +223,7 @@ music while omitting rain and shoreline ambience in both profiles. See ## Controls -NETfishing reads the handheld controller directly. PortMaster's system +NETfishing reads the handheld controller directly. GPTOKEYB's device-specific force-quit chord remains available; this is Start+Select on most devices. EOF @@ -249,8 +249,11 @@ if unzip -Z1 "${ARCHIVE}" | grep -qx 'port.json'; then echo "port.json must be inside netfishing/, not at the archive root." >&2 exit 1 fi -grep -q '^# PORTMASTER: netfishing.zip, NETfishing.sh$' \ - "${STAGE_ROOT}/NETfishing.sh" +if grep -Eq '^[[:space:]]*#[[:space:]]*PORTMASTER:' \ + "${STAGE_ROOT}/NETfishing.sh"; then + echo "The distributable launcher contains an installed PortMaster signature." >&2 + exit 1 +fi grep -Fq 'PROFILE_PATH="$CONFDIR/performance_profile"' \ "${STAGE_ROOT}/NETfishing.sh" grep -Fq 'NETFISHING_PERFORMANCE_PROFILE=light' \ diff --git a/scripts/portmaster/NETfishing.sh b/scripts/portmaster/NETfishing.sh index fe6d778..8e118da 100755 --- a/scripts/portmaster/NETfishing.sh +++ b/scripts/portmaster/NETfishing.sh @@ -1,5 +1,4 @@ #!/bin/bash -# PORTMASTER: netfishing.zip, NETfishing.sh XDG_DATA_HOME=${XDG_DATA_HOME:-$HOME/.local/share} @@ -13,19 +12,11 @@ else controlfolder="/roms/ports/PortMaster" fi -if [ ! -f "$controlfolder/control.txt" ]; then - echo "PortMaster control.txt was not found at $controlfolder" >&2 - exit 1 -fi - source "$controlfolder/control.txt" [ -f "${controlfolder}/mod_${CFW_NAME}.txt" ] && source "${controlfolder}/mod_${CFW_NAME}.txt" get_controls GAMEDIR="/${directory}/ports/netfishing" -if [ ! -d "$GAMEDIR" ] && [ -d "/mnt/mmc/ports/netfishing" ]; then - GAMEDIR="/mnt/mmc/ports/netfishing" -fi CONFDIR="$GAMEDIR/conf" PORTS_ROOT="${GAMEDIR%/netfishing}" @@ -38,16 +29,13 @@ CONTROLLER_MAPPING_FILE="$CONFDIR/cache/controller_mapping.txt" WESTON_DIR="/tmp/netfishing-weston" WESTON_RUNTIME="weston_pkg_0.2" HARBOURMASTER="$controlfolder/harbourmaster" -if [ ! -x "$HARBOURMASTER" ] && [ -x "/mnt/mmc/MUOS/PortMaster/harbourmaster" ]; then - HARBOURMASTER="/mnt/mmc/MUOS/PortMaster/harbourmaster" -fi mkdir -p "$CONFDIR/data" "$CONFDIR/config" "$CONFDIR/cache" "$WESTON_DIR" chmod +x "$GAME_EXECUTABLE" -# New PortMaster installs use a predictable save directory beside the port -# instead of presenting a folder picker on a small screen. Preserve an -# established data-root choice when upgrading an existing installation. +# NETfishing uses a predictable save directory beside the port instead of +# presenting a folder picker on a small screen. Preserve an established +# data-root choice when upgrading an existing installation. NETFISHING_DATA_ENVIRONMENT=() if [ -f "$SAVEDIR/netfishing_data.json" ] || { [ ! -f "$DATA_BOOTSTRAP_DIR/data_root_bootstrap.json" ] && @@ -139,10 +127,9 @@ case "$PERFORMANCE_PROFILE" in ;; esac -# Keep NETfishing's native controller input separate from PortMaster's exit -# handling. Legacy GPTOKEYB builds can load their default keyboard map when no -# config is supplied, so the explicit no-op map preserves only the -# device-specific force-quit chord. +# NETfishing reads gameplay input natively. The explicit no-op map prevents +# GPTOKEYB from injecting duplicate keyboard or mouse input while retaining +# its device-specific force-quit chord, including on ROCKNIX. $GPTOKEYB "NETfishing.aarch64" -c "$GPTOKEYB_CONFIG" & pm_platform_helper "$GAME_EXECUTABLE" diff --git a/scripts/portmaster/netfishing.gptk b/scripts/portmaster/netfishing.gptk index ac03270..ff1ad36 100644 --- a/scripts/portmaster/netfishing.gptk +++ b/scripts/portmaster/netfishing.gptk @@ -1,5 +1,6 @@ -# NETfishing reads the controller directly. GPTOKEYB is retained only for the -# PortMaster force-quit chord, so every keyboard and mouse binding is disabled. +# NETfishing reads the controller directly. GPTOKEYB is retained only for its +# device-specific force-quit chord, so every keyboard and mouse binding is +# disabled to prevent duplicate input. back = \" guide = \" From 97c74323d8d2eebf064379adbe4cbc7c95e5fe67 Mon Sep 17 00:00:00 2001 From: Toes | Robin Ury <1146921+binury@users.noreply.github.com> Date: Thu, 20 Aug 2026 08:58:25 -0400 Subject: [PATCH 02/90] Change: empty check to reject all whitespace kinds --- ui/chat_ui.gd | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ui/chat_ui.gd b/ui/chat_ui.gd index 0e94e15..b157d70 100644 --- a/ui/chat_ui.gd +++ b/ui/chat_ui.gd @@ -893,8 +893,9 @@ func _on_entry_text_submitted(_value: String) -> void: func _send() -> void: if _send_pending: return - var body := _entry.text - if body.strip_edges().is_empty(): + var strippable_spaces := RegEx.create_from_string("(^\\s+|\\s+$)") + var body := strippable_spaces.sub(_entry.text, "", true) + if body.is_empty(): close_chat() return if _handle_editor_world_command(body): From 00ec796c7a685d455f5a1e9622b4af5b79a78e15 Mon Sep 17 00:00:00 2001 From: Toes | Robin Ury <1146921+binury@users.noreply.github.com> Date: Thu, 20 Aug 2026 16:38:04 -0400 Subject: [PATCH 03/90] Refactor: chat sanitization into NetworkChat proc --- network/network_chat_protocol.gd | 4 ++-- ui/chat_ui.gd | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/network/network_chat_protocol.gd b/network/network_chat_protocol.gd index ef7294d..6538295 100644 --- a/network/network_chat_protocol.gd +++ b/network/network_chat_protocol.gd @@ -15,8 +15,8 @@ enum Kind { PLAYER, SYSTEM } static func sanitize_body(value: Variant) -> String: if typeof(value) != TYPE_STRING: return "" - var result: String = str(value).replace("\r", " ").replace("\n", " ") - result = result.replace("\t", " ").strip_edges() + var strippable_whitespace = RegEx.create_from_string("^[\\s\\p{Z}\\p{Cf}\\x{2800}]+|[\\s\\p{Z}\\p{Cf}\\x{2800}]+$") + var result := strippable_whitespace.sub(value, "") if result.is_empty() or result.length() > MAX_VISIBLE_CHARACTERS: return "" if result.to_utf8_buffer().size() > MAX_UTF8_BYTES: diff --git a/ui/chat_ui.gd b/ui/chat_ui.gd index b157d70..0b26ffb 100644 --- a/ui/chat_ui.gd +++ b/ui/chat_ui.gd @@ -893,15 +893,14 @@ func _on_entry_text_submitted(_value: String) -> void: func _send() -> void: if _send_pending: return - var strippable_spaces := RegEx.create_from_string("(^\\s+|\\s+$)") - var body := strippable_spaces.sub(_entry.text, "", true) + var body := NetworkChatProtocol.sanitize_body(_entry.text) if body.is_empty(): close_chat() return if _handle_editor_world_command(body): return _send_pending = true - _pending_send_body = NetworkChatProtocol.sanitize_body(body) + _pending_send_body = body _entry.editable = false if not _service.send_local_message( body, From b1061f0165cbd27c9f957bb10d779c6a73aaddd3 Mon Sep 17 00:00:00 2001 From: Toes | Robin Ury <1146921+binury@users.noreply.github.com> Date: Fri, 21 Aug 2026 07:18:03 -0400 Subject: [PATCH 04/90] Refactor: invert whitespace stripping pattern --- network/network_chat_protocol.gd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/network/network_chat_protocol.gd b/network/network_chat_protocol.gd index 6538295..389260d 100644 --- a/network/network_chat_protocol.gd +++ b/network/network_chat_protocol.gd @@ -15,7 +15,7 @@ enum Kind { PLAYER, SYSTEM } static func sanitize_body(value: Variant) -> String: if typeof(value) != TYPE_STRING: return "" - var strippable_whitespace = RegEx.create_from_string("^[\\s\\p{Z}\\p{Cf}\\x{2800}]+|[\\s\\p{Z}\\p{Cf}\\x{2800}]+$") + var strippable_whitespace = RegEx.create_from_string("^[^\\w]+|[^\\w]+$") var result := strippable_whitespace.sub(value, "") if result.is_empty() or result.length() > MAX_VISIBLE_CHARACTERS: return "" From c20bb35929a98622a55b73363558f8104f6aba6d Mon Sep 17 00:00:00 2001 From: Toes | Robin Ury <1146921+binury@users.noreply.github.com> Date: Fri, 21 Aug 2026 07:19:34 -0400 Subject: [PATCH 05/90] Add(test): chat validation --- scripts/run_validations.sh | 1 + tests/chat_validation.gd | 21 +++++++++++++++++++++ tests/chat_validation.gd.uid | 1 + 3 files changed, 23 insertions(+) create mode 100644 tests/chat_validation.gd create mode 100644 tests/chat_validation.gd.uid diff --git a/scripts/run_validations.sh b/scripts/run_validations.sh index 7c2eb77..6bf5b1f 100755 --- a/scripts/run_validations.sh +++ b/scripts/run_validations.sh @@ -15,6 +15,7 @@ readonly -a QUICK_TESTS=( "tests/android_readiness_validation.gd" "tests/camera_drag_validation.gd" "tests/character_rig_validation.gd" + "tests/chat_validation.gd" "tests/controller_focus_presentation_validation.gd" "tests/controller_menu_accessibility_validation.gd" "tests/controller_mapping_validation.gd" diff --git a/tests/chat_validation.gd b/tests/chat_validation.gd new file mode 100644 index 0000000..aed8f17 --- /dev/null +++ b/tests/chat_validation.gd @@ -0,0 +1,21 @@ +extends SceneTree + +const MainScene: PackedScene = preload("res://main/main.tscn") + +func _initialize() -> void: + call_deferred("_run") + +func _run() -> void: + ## Regular whitespace should be stripped + assert(NetworkChatProtocol.sanitize_body(" a") == "a", "Leading space not trimmed") + assert(NetworkChatProtocol.sanitize_body("b ") == "b", "Trailing space not trimmed") + assert(NetworkChatProtocol.sanitize_body("a b") == "a b", "Innocent whitespace culled") + + ## Some examples of Unicode whitespace that should be stripped + const em_space := " " # U+2003 EM SPACE + assert(NetworkChatProtocol.sanitize_body(em_space + "a") == "a") + const braille_space := "⠀" # U+2800 BRAILLE PATTERN BLANK + assert(NetworkChatProtocol.sanitize_body(braille_space + "a") == "a") + + print("Chat validation: PASS") + quit(0) diff --git a/tests/chat_validation.gd.uid b/tests/chat_validation.gd.uid new file mode 100644 index 0000000..54e6823 --- /dev/null +++ b/tests/chat_validation.gd.uid @@ -0,0 +1 @@ +uid://ohemhv2sf5g4 From 91b54e4a01515416465ce63fce0dc222f4e6d9e5 Mon Sep 17 00:00:00 2001 From: Voyager Date: Fri, 21 Aug 2026 09:23:28 -0400 Subject: [PATCH 06/90] Fix Unicode chat sanitization --- network/network_chat_protocol.gd | 18 ++++++++++++--- tests/chat_validation.gd | 39 +++++++++++++++++++++++--------- 2 files changed, 43 insertions(+), 14 deletions(-) diff --git a/network/network_chat_protocol.gd b/network/network_chat_protocol.gd index 389260d..2e91432 100644 --- a/network/network_chat_protocol.gd +++ b/network/network_chat_protocol.gd @@ -9,15 +9,27 @@ const MAX_HISTORY: int = 100 const LATE_JOIN_HISTORY: int = 50 const MAX_ID_LENGTH: int = 96 +static var _invisible_edge_pattern: RegEx = RegEx.create_from_string( + "^[\\s\\p{Z}\\p{Cf}\\x{2800}]+|[\\s\\p{Z}\\p{Cf}\\x{2800}]+$" +) +static var _visible_content_pattern: RegEx = RegEx.create_from_string( + "[^\\s\\p{Z}\\p{Cf}\\x{2800}]" +) + enum Kind { PLAYER, SYSTEM } static func sanitize_body(value: Variant) -> String: if typeof(value) != TYPE_STRING: return "" - var strippable_whitespace = RegEx.create_from_string("^[^\\w]+|[^\\w]+$") - var result := strippable_whitespace.sub(value, "") - if result.is_empty() or result.length() > MAX_VISIBLE_CHARACTERS: + var result: String = str(value).replace("\r", " ").replace("\n", " ") + result = result.replace("\t", " ") + result = _invisible_edge_pattern.sub(result, "", true) + if ( + result.is_empty() + or _visible_content_pattern.search(result) == null + or result.length() > MAX_VISIBLE_CHARACTERS + ): return "" if result.to_utf8_buffer().size() > MAX_UTF8_BYTES: return "" diff --git a/tests/chat_validation.gd b/tests/chat_validation.gd index aed8f17..fa0cd8e 100644 --- a/tests/chat_validation.gd +++ b/tests/chat_validation.gd @@ -1,21 +1,38 @@ extends SceneTree -const MainScene: PackedScene = preload("res://main/main.tscn") - func _initialize() -> void: call_deferred("_run") -func _run() -> void: - ## Regular whitespace should be stripped - assert(NetworkChatProtocol.sanitize_body(" a") == "a", "Leading space not trimmed") - assert(NetworkChatProtocol.sanitize_body("b ") == "b", "Trailing space not trimmed") - assert(NetworkChatProtocol.sanitize_body("a b") == "a b", "Innocent whitespace culled") - ## Some examples of Unicode whitespace that should be stripped +func _run() -> void: + assert(NetworkChatProtocol.sanitize_body(42).is_empty()) + assert(NetworkChatProtocol.sanitize_body(" a ") == "a") + assert(NetworkChatProtocol.sanitize_body("a b") == "a b") + assert(NetworkChatProtocol.sanitize_body("a\tb\nc") == "a b c") + assert(NetworkChatProtocol.sanitize_body(" !hello!? ") == "!hello!?") + assert(NetworkChatProtocol.sanitize_body("!!!") == "!!!") + const em_space := " " # U+2003 EM SPACE - assert(NetworkChatProtocol.sanitize_body(em_space + "a") == "a") - const braille_space := "⠀" # U+2800 BRAILLE PATTERN BLANK - assert(NetworkChatProtocol.sanitize_body(braille_space + "a") == "a") + const zero_width_space := "​" # U+200B ZERO WIDTH SPACE + const braille_blank := "⠀" # U+2800 BRAILLE PATTERN BLANK + const invisible_padding := em_space + zero_width_space + braille_blank + assert( + NetworkChatProtocol.sanitize_body(invisible_padding + "a" + invisible_padding) + == "a" + ) + assert(NetworkChatProtocol.sanitize_body(invisible_padding).is_empty()) + assert(NetworkChatProtocol.sanitize_body(" \t\n" + invisible_padding).is_empty()) + + assert( + NetworkChatProtocol.sanitize_body("a".repeat( + NetworkChatProtocol.MAX_VISIBLE_CHARACTERS + )).length() == NetworkChatProtocol.MAX_VISIBLE_CHARACTERS + ) + assert( + NetworkChatProtocol.sanitize_body("a".repeat( + NetworkChatProtocol.MAX_VISIBLE_CHARACTERS + 1 + )).is_empty() + ) print("Chat validation: PASS") quit(0) From 8656f46ce452c26395e29b42aad7f22cf3dda190 Mon Sep 17 00:00:00 2001 From: Voyager Date: Fri, 21 Aug 2026 12:29:19 -0400 Subject: [PATCH 07/90] Separate generated freshwater fish habitats --- fish/pools/generated_lake_pool.tres | 13 ++++ fish/pools/generated_pond_pool.tres | 16 ++++ fish/pools/generated_river_pool.tres | 18 +++++ fish/species/catfish_blue/catfish_blue.tres | 2 +- .../catfish_channel/catfish_channel.tres | 2 +- .../catfish_flathead/catfish_flathead.tres | 2 +- fish/species/catfish_white/catfish_white.tres | 2 +- fish/species/chub_european/chub_european.tres | 2 +- fish/species/chub_flame/chub_flame.tres | 2 +- fish/species/chub_lake/chub_lake.tres | 2 +- fish/species/goldfish/goldfish.tres | 2 +- .../goldfish_bubbleeye.tres | 2 +- fish/species/sauger/sauger.tres | 2 +- fish/species/saugeye/saugeye.tres | 2 +- .../trout_cutthroat/trout_cutthroat.tres | 2 +- fish/species/trout_golden/trout_golden.tres | 2 +- fish/species/trout_rainbow/trout_rainbow.tres | 2 +- .../trout_steelhead/trout_steelhead.tres | 2 +- fish/species/walleye/walleye.tres | 2 +- tests/fish_catalog_content_validation.gd | 76 +++++++++++++++++-- tests/generated_world_runtime_validation.gd | 16 ++++ tests/terrain_chunk_generator_validation.gd | 10 ++- .../chunks/definitions/chunk_0003.tres | 2 +- .../chunks/definitions/chunk_0004.tres | 2 +- .../chunks/definitions/chunk_0016.tres | 4 +- world/generation/generated_world_region.gd | 20 ++++- world/regions/starter_island_region.tscn | 4 +- 27 files changed, 177 insertions(+), 36 deletions(-) create mode 100644 fish/pools/generated_lake_pool.tres create mode 100644 fish/pools/generated_pond_pool.tres create mode 100644 fish/pools/generated_river_pool.tres diff --git a/fish/pools/generated_lake_pool.tres b/fish/pools/generated_lake_pool.tres new file mode 100644 index 0000000..ac095b8 --- /dev/null +++ b/fish/pools/generated_lake_pool.tres @@ -0,0 +1,13 @@ +[gd_resource type="Resource" load_steps=8 format=3] + +[ext_resource type="Script" path="res://fish/fish_pool.gd" id="1_pool"] +[ext_resource type="Resource" path="res://fish/species/sturgeon_lake/sturgeon_lake.tres" id="2_sturgeon"] +[ext_resource type="Resource" path="res://fish/species/trout_golden/trout_golden.tres" id="3_trout"] +[ext_resource type="Resource" path="res://fish/species/chub_lake/chub_lake.tres" id="4_chub"] +[ext_resource type="Resource" path="res://fish/species/saugeye/saugeye.tres" id="5_saugeye"] +[ext_resource type="Resource" path="res://fish/species/walleye/walleye.tres" id="6_walleye"] +[ext_resource type="Resource" path="res://fish/species/goby_round/goby_round.tres" id="7_goby"] + +[resource] +script = ExtResource("1_pool") +candidates = [ExtResource("2_sturgeon"), ExtResource("3_trout"), ExtResource("4_chub"), ExtResource("5_saugeye"), ExtResource("6_walleye"), ExtResource("7_goby")] diff --git a/fish/pools/generated_pond_pool.tres b/fish/pools/generated_pond_pool.tres new file mode 100644 index 0000000..2b01e7d --- /dev/null +++ b/fish/pools/generated_pond_pool.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" load_steps=11 format=3] + +[ext_resource type="Script" path="res://fish/fish_pool.gd" id="1_pool"] +[ext_resource type="Resource" path="res://fish/species/bowfin/bowfin.tres" id="2_bowfin"] +[ext_resource type="Resource" path="res://fish/species/gar_spotted/gar_spotted.tres" id="3_gar_spotted"] +[ext_resource type="Resource" path="res://fish/species/lungfish_west_african/lungfish_west_african.tres" id="4_lungfish"] +[ext_resource type="Resource" path="res://fish/species/catfish_channel/catfish_channel.tres" id="5_catfish_channel"] +[ext_resource type="Resource" path="res://fish/species/catfish_white/catfish_white.tres" id="6_catfish_white"] +[ext_resource type="Resource" path="res://fish/species/carp/carp.tres" id="7_carp"] +[ext_resource type="Resource" path="res://fish/species/goldfish_bubbleeye/goldfish_bubbleeye.tres" id="8_bubbleeye"] +[ext_resource type="Resource" path="res://fish/species/goldfish/goldfish.tres" id="9_goldfish"] +[ext_resource type="Resource" path="res://fish/species/bluegill/bluegill.tres" id="10_bluegill"] + +[resource] +script = ExtResource("1_pool") +candidates = [ExtResource("2_bowfin"), ExtResource("3_gar_spotted"), ExtResource("4_lungfish"), ExtResource("5_catfish_channel"), ExtResource("6_catfish_white"), ExtResource("7_carp"), ExtResource("8_bubbleeye"), ExtResource("9_goldfish"), ExtResource("10_bluegill")] diff --git a/fish/pools/generated_river_pool.tres b/fish/pools/generated_river_pool.tres new file mode 100644 index 0000000..34b8f72 --- /dev/null +++ b/fish/pools/generated_river_pool.tres @@ -0,0 +1,18 @@ +[gd_resource type="Resource" load_steps=13 format=3] + +[ext_resource type="Script" path="res://fish/fish_pool.gd" id="1_pool"] +[ext_resource type="Resource" path="res://fish/species/gar_longnose/gar_longnose.tres" id="2_gar"] +[ext_resource type="Resource" path="res://fish/species/paddlefish/paddlefish.tres" id="3_paddlefish"] +[ext_resource type="Resource" path="res://fish/species/sturgeon_shovelnose/sturgeon_shovelnose.tres" id="4_sturgeon"] +[ext_resource type="Resource" path="res://fish/species/trout_cutthroat/trout_cutthroat.tres" id="5_cutthroat"] +[ext_resource type="Resource" path="res://fish/species/trout_rainbow/trout_rainbow.tres" id="6_rainbow"] +[ext_resource type="Resource" path="res://fish/species/catfish_blue/catfish_blue.tres" id="7_blue_catfish"] +[ext_resource type="Resource" path="res://fish/species/catfish_flathead/catfish_flathead.tres" id="8_flathead"] +[ext_resource type="Resource" path="res://fish/species/chub_european/chub_european.tres" id="9_chub_european"] +[ext_resource type="Resource" path="res://fish/species/chub_flame/chub_flame.tres" id="10_chub_flame"] +[ext_resource type="Resource" path="res://fish/species/sauger/sauger.tres" id="11_sauger"] +[ext_resource type="Resource" path="res://fish/species/trout_steelhead/trout_steelhead.tres" id="12_steelhead"] + +[resource] +script = ExtResource("1_pool") +candidates = [ExtResource("2_gar"), ExtResource("3_paddlefish"), ExtResource("4_sturgeon"), ExtResource("5_cutthroat"), ExtResource("6_rainbow"), ExtResource("7_blue_catfish"), ExtResource("8_flathead"), ExtResource("9_chub_european"), ExtResource("10_chub_flame"), ExtResource("11_sauger"), ExtResource("12_steelhead")] diff --git a/fish/species/catfish_blue/catfish_blue.tres b/fish/species/catfish_blue/catfish_blue.tres index e26c1e8..595db08 100644 --- a/fish/species/catfish_blue/catfish_blue.tres +++ b/fish/species/catfish_blue/catfish_blue.tres @@ -7,7 +7,7 @@ [sub_resource type="Resource" id="BlueCatfishAvailability"] script = ExtResource("3_availability_script") -allowed_location_tags = Array[StringName]([&"starter_pond"]) +allowed_location_tags = Array[StringName]([&"river"]) allow_day = false preferred_bait_tags = Array[StringName]([&"worm", &"minnow"]) preferred_bait_weight_multiplier = 1.35 diff --git a/fish/species/catfish_channel/catfish_channel.tres b/fish/species/catfish_channel/catfish_channel.tres index b545b89..5d265ef 100644 --- a/fish/species/catfish_channel/catfish_channel.tres +++ b/fish/species/catfish_channel/catfish_channel.tres @@ -7,7 +7,7 @@ [sub_resource type="Resource" id="ChannelCatfishAvailability"] script = ExtResource("3_availability_script") -allowed_location_tags = Array[StringName]([&"starter_pond"]) +allowed_location_tags = Array[StringName]([&"starter_pond", &"pond"]) allow_day = false preferred_bait_tags = Array[StringName]([&"worm"]) preferred_bait_weight_multiplier = 1.35 diff --git a/fish/species/catfish_flathead/catfish_flathead.tres b/fish/species/catfish_flathead/catfish_flathead.tres index 68a9bfd..b4df9d5 100644 --- a/fish/species/catfish_flathead/catfish_flathead.tres +++ b/fish/species/catfish_flathead/catfish_flathead.tres @@ -7,7 +7,7 @@ [sub_resource type="Resource" id="FlatheadCatfishAvailability"] script = ExtResource("3_availability_script") -allowed_location_tags = Array[StringName]([&"starter_pond"]) +allowed_location_tags = Array[StringName]([&"river"]) allow_day = false preferred_bait_tags = Array[StringName]([&"worm", &"minnow"]) preferred_bait_weight_multiplier = 1.35 diff --git a/fish/species/catfish_white/catfish_white.tres b/fish/species/catfish_white/catfish_white.tres index aad1cb5..4612c4f 100644 --- a/fish/species/catfish_white/catfish_white.tres +++ b/fish/species/catfish_white/catfish_white.tres @@ -7,7 +7,7 @@ [sub_resource type="Resource" id="WhiteCatfishAvailability"] script = ExtResource("3_availability_script") -allowed_location_tags = Array[StringName]([&"starter_pond"]) +allowed_location_tags = Array[StringName]([&"starter_pond", &"pond"]) allow_day = false preferred_bait_tags = Array[StringName]([&"worm"]) preferred_bait_weight_multiplier = 1.35 diff --git a/fish/species/chub_european/chub_european.tres b/fish/species/chub_european/chub_european.tres index 61ccc87..aded2f7 100644 --- a/fish/species/chub_european/chub_european.tres +++ b/fish/species/chub_european/chub_european.tres @@ -7,7 +7,7 @@ [sub_resource type="Resource" id="ChubEuropeanAvailability"] script = ExtResource("3_availability_script") -allowed_location_tags = Array[StringName]([&"starter_pond"]) +allowed_location_tags = Array[StringName]([&"river"]) [resource] script = ExtResource("1_fish_data") diff --git a/fish/species/chub_flame/chub_flame.tres b/fish/species/chub_flame/chub_flame.tres index 7a656cd..941c734 100644 --- a/fish/species/chub_flame/chub_flame.tres +++ b/fish/species/chub_flame/chub_flame.tres @@ -7,7 +7,7 @@ [sub_resource type="Resource" id="ChubFlameAvailability"] script = ExtResource("3_availability_script") -allowed_location_tags = Array[StringName]([&"starter_pond"]) +allowed_location_tags = Array[StringName]([&"river"]) [resource] script = ExtResource("1_fish_data") diff --git a/fish/species/chub_lake/chub_lake.tres b/fish/species/chub_lake/chub_lake.tres index 26a8fe5..788df16 100644 --- a/fish/species/chub_lake/chub_lake.tres +++ b/fish/species/chub_lake/chub_lake.tres @@ -7,7 +7,7 @@ [sub_resource type="Resource" id="ChubLakeAvailability"] script = ExtResource("3_availability_script") -allowed_location_tags = Array[StringName]([&"starter_pond"]) +allowed_location_tags = Array[StringName]([&"lake"]) [resource] script = ExtResource("1_fish_data") diff --git a/fish/species/goldfish/goldfish.tres b/fish/species/goldfish/goldfish.tres index a750280..e27ede5 100644 --- a/fish/species/goldfish/goldfish.tres +++ b/fish/species/goldfish/goldfish.tres @@ -7,7 +7,7 @@ [sub_resource type="Resource" id="GoldfishAvailability"] script = ExtResource("3_availability_script") -allowed_location_tags = Array[StringName]([&"starter_pond"]) +allowed_location_tags = Array[StringName]([&"starter_pond", &"pond"]) [resource] script = ExtResource("1_fish_data") diff --git a/fish/species/goldfish_bubbleeye/goldfish_bubbleeye.tres b/fish/species/goldfish_bubbleeye/goldfish_bubbleeye.tres index 56d0fac..beecd5b 100644 --- a/fish/species/goldfish_bubbleeye/goldfish_bubbleeye.tres +++ b/fish/species/goldfish_bubbleeye/goldfish_bubbleeye.tres @@ -7,7 +7,7 @@ [sub_resource type="Resource" id="GoldfishBubbleeyeAvailability"] script = ExtResource("3_availability_script") -allowed_location_tags = Array[StringName]([&"starter_pond"]) +allowed_location_tags = Array[StringName]([&"starter_pond", &"pond"]) [resource] script = ExtResource("1_fish_data") diff --git a/fish/species/sauger/sauger.tres b/fish/species/sauger/sauger.tres index 1ccd2b8..3ed1fc2 100644 --- a/fish/species/sauger/sauger.tres +++ b/fish/species/sauger/sauger.tres @@ -7,7 +7,7 @@ [sub_resource type="Resource" id="SaugerAvailability"] script = ExtResource("3_availability_script") -allowed_location_tags = Array[StringName]([&"starter_pond"]) +allowed_location_tags = Array[StringName]([&"river"]) [resource] script = ExtResource("1_fish_data") diff --git a/fish/species/saugeye/saugeye.tres b/fish/species/saugeye/saugeye.tres index 62baf45..63ea616 100644 --- a/fish/species/saugeye/saugeye.tres +++ b/fish/species/saugeye/saugeye.tres @@ -7,7 +7,7 @@ [sub_resource type="Resource" id="SaugeyeAvailability"] script = ExtResource("3_availability_script") -allowed_location_tags = Array[StringName]([&"starter_pond"]) +allowed_location_tags = Array[StringName]([&"lake"]) [resource] script = ExtResource("1_fish_data") diff --git a/fish/species/trout_cutthroat/trout_cutthroat.tres b/fish/species/trout_cutthroat/trout_cutthroat.tres index b2a958d..38c90a7 100644 --- a/fish/species/trout_cutthroat/trout_cutthroat.tres +++ b/fish/species/trout_cutthroat/trout_cutthroat.tres @@ -7,7 +7,7 @@ [sub_resource type="Resource" id="TroutCutthroatAvailability"] script = ExtResource("3_availability_script") -allowed_location_tags = Array[StringName]([&"starter_pond"]) +allowed_location_tags = Array[StringName]([&"river"]) [resource] script = ExtResource("1_fish_data") diff --git a/fish/species/trout_golden/trout_golden.tres b/fish/species/trout_golden/trout_golden.tres index 21a16ef..d455e21 100644 --- a/fish/species/trout_golden/trout_golden.tres +++ b/fish/species/trout_golden/trout_golden.tres @@ -7,7 +7,7 @@ [sub_resource type="Resource" id="TroutGoldenAvailability"] script = ExtResource("3_availability_script") -allowed_location_tags = Array[StringName]([&"starter_pond"]) +allowed_location_tags = Array[StringName]([&"lake"]) [resource] script = ExtResource("1_fish_data") diff --git a/fish/species/trout_rainbow/trout_rainbow.tres b/fish/species/trout_rainbow/trout_rainbow.tres index 227bb3a..3b9e9aa 100644 --- a/fish/species/trout_rainbow/trout_rainbow.tres +++ b/fish/species/trout_rainbow/trout_rainbow.tres @@ -7,7 +7,7 @@ [sub_resource type="Resource" id="TroutRainbowAvailability"] script = ExtResource("3_availability_script") -allowed_location_tags = Array[StringName]([&"starter_pond"]) +allowed_location_tags = Array[StringName]([&"river"]) [resource] script = ExtResource("1_fish_data") diff --git a/fish/species/trout_steelhead/trout_steelhead.tres b/fish/species/trout_steelhead/trout_steelhead.tres index 11e19a7..3bc9698 100644 --- a/fish/species/trout_steelhead/trout_steelhead.tres +++ b/fish/species/trout_steelhead/trout_steelhead.tres @@ -7,7 +7,7 @@ [sub_resource type="Resource" id="TroutSteelheadAvailability"] script = ExtResource("3_availability_script") -allowed_location_tags = Array[StringName]([&"starter_pond"]) +allowed_location_tags = Array[StringName]([&"river"]) [resource] script = ExtResource("1_fish_data") diff --git a/fish/species/walleye/walleye.tres b/fish/species/walleye/walleye.tres index e4f483d..a08adac 100644 --- a/fish/species/walleye/walleye.tres +++ b/fish/species/walleye/walleye.tres @@ -7,7 +7,7 @@ [sub_resource type="Resource" id="WalleyeAvailability"] script = ExtResource("3_availability_script") -allowed_location_tags = Array[StringName]([&"starter_pond"]) +allowed_location_tags = Array[StringName]([&"lake"]) [resource] script = ExtResource("1_fish_data") diff --git a/tests/fish_catalog_content_validation.gd b/tests/fish_catalog_content_validation.gd index 2afb18c..fb5f9e4 100644 --- a/tests/fish_catalog_content_validation.gd +++ b/tests/fish_catalog_content_validation.gd @@ -24,6 +24,15 @@ const PondPool: FishPoolType = preload( const OceanPool: FishPoolType = preload( "res://fish/pools/starter_ocean_pool.tres" ) +const GeneratedPondPool: FishPoolType = preload( + "res://fish/pools/generated_pond_pool.tres" +) +const GeneratedLakePool: FishPoolType = preload( + "res://fish/pools/generated_lake_pool.tres" +) +const GeneratedRiverPool: FishPoolType = preload( + "res://fish/pools/generated_river_pool.tres" +) const PelicanBuyer = preload("res://economy/buyers/pelicans.tres") const StarterRegionScene = preload( "res://world/regions/starter_island_region.tscn" @@ -73,6 +82,21 @@ const NEW_FRESH_WATER_IDS: Array[StringName] = [ &"bowfin", &"sturgeon_lake", &"gar_longnose", &"paddlefish", &"sturgeon_shovelnose", &"gar_spotted", &"lungfish_west_african", ] +const GENERATED_POND_IDS: Array[StringName] = [ + &"bowfin", &"gar_spotted", &"lungfish_west_african", + &"catfish_channel", &"catfish_white", &"carp", + &"goldfish_bubbleeye", &"goldfish", &"bluegill", +] +const GENERATED_LAKE_IDS: Array[StringName] = [ + &"sturgeon_lake", &"trout_golden", &"chub_lake", &"saugeye", + &"walleye", &"goby_round", +] +const GENERATED_RIVER_IDS: Array[StringName] = [ + &"gar_longnose", &"paddlefish", &"sturgeon_shovelnose", + &"trout_cutthroat", &"trout_rainbow", &"catfish_blue", + &"catfish_flathead", &"chub_european", &"chub_flame", &"sauger", + &"trout_steelhead", +] func _initialize() -> void: @@ -81,6 +105,7 @@ func _initialize() -> void: func _run() -> void: _validate_catalog_and_pools() + _validate_generated_habitat_pools() _validate_weight_based_display_scale() _validate_starter_water_bodies() _validate_authoritative_water_filter() @@ -89,6 +114,28 @@ func _run() -> void: quit() +func _validate_generated_habitat_pools() -> void: + var expected_by_pool: Dictionary = { + GeneratedPondPool: GENERATED_POND_IDS, + GeneratedLakePool: GENERATED_LAKE_IDS, + GeneratedRiverPool: GENERATED_RIVER_IDS, + } + for pool: FishPoolType in expected_by_pool: + var expected_ids: Array[StringName] = expected_by_pool[pool] + assert(pool.candidates.size() == expected_ids.size()) + for fish_id: StringName in expected_ids: + var fish: FishDataType = Catalog.get_fish_by_id(fish_id) + assert(fish != null and fish.is_fishable()) + assert(pool.get_fish_by_id(fish_id) == fish) + assert(fish.is_allowed_in_water(WaterType.Type.FRESH_WATER)) + assert(GeneratedPondPool.get_fish_by_id(&"pomfret_white") == null) + assert(GeneratedPondPool.get_fish_by_id(&"mackerel_atlantic") == null) + assert(GeneratedPondPool.get_fish_by_id(&"gar_longnose") == null) + assert(GeneratedRiverPool.get_fish_by_id(&"gar_longnose") != null) + assert(GeneratedRiverPool.get_fish_by_id(&"goby_round") == null) + assert(GeneratedLakePool.get_fish_by_id(&"goby_round") != null) + + func _validate_weight_based_display_scale() -> void: var previous_scale: float = 0.0 for fish: FishDataType in Catalog.candidates: @@ -235,7 +282,12 @@ func _validate_catalog_and_pools() -> void: assert(fish.is_selectable()) assert(PondPool.get_fish_by_id(fish_id) == fish) assert(OceanPool.get_fish_by_id(fish_id) == null) - assert(fish.availability.allowed_location_tags == [&"starter_pond"]) + var expected_tags: Array[StringName] = [] + if fish_id in [&"catfish_channel", &"catfish_white"]: + expected_tags.assign([&"starter_pond", &"pond"]) + else: + expected_tags.append(&"river") + assert(fish.availability.allowed_location_tags == expected_tags) assert( LogbookCatalog.category_for(fish) == LogbookCatalog.Category.FRESH_WATER @@ -306,17 +358,25 @@ func _validate_catalog_and_pools() -> void: var pond_context := FishingContextType.new() pond_context.location_tags = [&"starter_pond"] pond_context.water_type = WaterType.Type.FRESH_WATER - var night_pond_context := FishingContextType.new() - night_pond_context.location_tags = [&"starter_pond"] - night_pond_context.water_type = WaterType.Type.FRESH_WATER - night_pond_context.is_night = true var ocean_context := FishingContextType.new() ocean_context.location_tags = [&"coast", &"ocean"] ocean_context.water_type = WaterType.Type.SALT_WATER for fish_id: StringName in CATFISH_IDS: var fish: FishDataType = Catalog.get_fish_by_id(fish_id) - assert(not fish.availability.is_available(pond_context)) - assert(fish.availability.is_available(night_pond_context)) + var day_habitat_context := FishingContextType.new() + if fish_id in [&"catfish_channel", &"catfish_white"]: + day_habitat_context.location_tags.append(&"pond") + else: + day_habitat_context.location_tags.append(&"river") + day_habitat_context.water_type = WaterType.Type.FRESH_WATER + var night_habitat_context := FishingContextType.new() + night_habitat_context.location_tags = ( + day_habitat_context.location_tags.duplicate() + ) + night_habitat_context.water_type = WaterType.Type.FRESH_WATER + night_habitat_context.is_night = true + assert(not fish.availability.is_available(day_habitat_context)) + assert(fish.availability.is_available(night_habitat_context)) assert(not fish.availability.is_available(ocean_context)) var single_species_pool := FishPoolType.new() single_species_pool.candidates = [fish] @@ -326,7 +386,7 @@ func _validate_catalog_and_pools() -> void: selector.begin_roll() assert( selector.select_fish( - single_species_pool, night_pond_context, collection + single_species_pool, night_habitat_context, collection ) == fish ) collection.free() diff --git a/tests/generated_world_runtime_validation.gd b/tests/generated_world_runtime_validation.gd index 501deb9..03a5211 100644 --- a/tests/generated_world_runtime_validation.gd +++ b/tests/generated_world_runtime_validation.gd @@ -3,6 +3,15 @@ extends SceneTree const RegionScene: PackedScene = preload( "res://world/generation/generated_world_region.tscn" ) +const GeneratedPondPool: FishPool = preload( + "res://fish/pools/generated_pond_pool.tres" +) +const GeneratedLakePool: FishPool = preload( + "res://fish/pools/generated_lake_pool.tres" +) +const GeneratedRiverPool: FishPool = preload( + "res://fish/pools/generated_river_pool.tres" +) const FIRST_SEED := 13001 const SECOND_SEED := 13004 const EXPECTED_PROP_IDS: Array[StringName] = [ @@ -153,6 +162,13 @@ func _validate_generated_region( assert(fresh.surface_size.x < 10.0 or fresh.surface_size.y < 10.0) assert(not fresh.visual_surface_enabled) assert(not (fresh.get_node("VisualWater") as MeshInstance3D).visible) + if &"river" in fresh.location_tags: + assert(fresh.fish_pool == GeneratedRiverPool) + elif &"lake" in fresh.location_tags: + assert(fresh.fish_pool == GeneratedLakePool) + else: + assert(&"pond" in fresh.location_tags) + assert(fresh.fish_pool == GeneratedPondPool) _validate_authored_chunk_surfaces(region, generator) diff --git a/tests/terrain_chunk_generator_validation.gd b/tests/terrain_chunk_generator_validation.gd index b583a1f..deb097b 100644 --- a/tests/terrain_chunk_generator_validation.gd +++ b/tests/terrain_chunk_generator_validation.gd @@ -291,11 +291,15 @@ func _validate_catalog() -> void: and stream_variant.water_inlet_edges == stream.water_inlet_edges and stream_variant.water_outlet_edges == stream.water_outlet_edges and stream_variant.water_surface_size == stream.water_surface_size - and stream_variant.water_surface_offset - == stream.water_surface_offset, + and stream.water_surface_offset.x < 0.0 + and stream_variant.water_surface_offset.x > 0.0 + and is_equal_approx( + stream_variant.water_surface_offset.y, + stream.water_surface_offset.y, + ), ( "Both stream visuals must share one combined selection weight " - + "and identical terrain/water behavior." + + "and mirrored water footprints." ), ) for cliff_definition: TerrainChunkDefinition in [ diff --git a/world/generation/chunks/definitions/chunk_0003.tres b/world/generation/chunks/definitions/chunk_0003.tres index 4218357..125acf0 100644 --- a/world/generation/chunks/definitions/chunk_0003.tres +++ b/world/generation/chunks/definitions/chunk_0003.tres @@ -15,5 +15,5 @@ allowed_neighbor_tags = PackedStringArray("grass") preferred_neighbor_tags = PackedStringArray("grass") water_inlet_edges = 1 water_outlet_edges = 4 -water_surface_size = Vector2(2.1, 10) +water_surface_size = Vector2(2.3, 10) water_surface_offset = Vector2(-0.315, 0) diff --git a/world/generation/chunks/definitions/chunk_0004.tres b/world/generation/chunks/definitions/chunk_0004.tres index 5e1aad2..e56842e 100644 --- a/world/generation/chunks/definitions/chunk_0004.tres +++ b/world/generation/chunks/definitions/chunk_0004.tres @@ -14,5 +14,5 @@ tags = PackedStringArray("land", "walkable", "fresh_water", "pond") allowed_neighbor_tags = PackedStringArray("grass") preferred_neighbor_tags = PackedStringArray("grass") water_inlet_edges = 1 -water_surface_size = Vector2(6.7, 7.75) +water_surface_size = Vector2(7, 8) water_surface_offset = Vector2(-0.32, -1.03) diff --git a/world/generation/chunks/definitions/chunk_0016.tres b/world/generation/chunks/definitions/chunk_0016.tres index 804bb34..a49d124 100644 --- a/world/generation/chunks/definitions/chunk_0016.tres +++ b/world/generation/chunks/definitions/chunk_0016.tres @@ -15,5 +15,5 @@ allowed_neighbor_tags = PackedStringArray("grass") preferred_neighbor_tags = PackedStringArray("grass") water_inlet_edges = 1 water_outlet_edges = 4 -water_surface_size = Vector2(2.1, 10) -water_surface_offset = Vector2(-0.315, 0) +water_surface_size = Vector2(2.3, 10) +water_surface_offset = Vector2(0.323, 0) diff --git a/world/generation/generated_world_region.gd b/world/generation/generated_world_region.gd index 59876b3..e8ac760 100644 --- a/world/generation/generated_world_region.gd +++ b/world/generation/generated_world_region.gd @@ -16,8 +16,14 @@ const SALT_WATER_MATERIAL: Material = preload( const FRESH_WATER_MATERIAL: Material = preload( "res://world/materials/stylized_water_fresh.tres" ) -const POND_POOL: FishPool = preload( - "res://fish/pools/starter_pond_pool.tres" +const GENERATED_POND_POOL: FishPool = preload( + "res://fish/pools/generated_pond_pool.tres" +) +const GENERATED_LAKE_POOL: FishPool = preload( + "res://fish/pools/generated_lake_pool.tres" +) +const GENERATED_RIVER_POOL: FishPool = preload( + "res://fish/pools/generated_river_pool.tres" ) const OCEAN_POOL: FishPool = preload( "res://fish/pools/starter_ocean_pool.tres" @@ -374,7 +380,7 @@ func _configure_fresh_water(records: Array[Dictionary]) -> void: body.visual_surface_enabled = false body.water_material = _fresh_water_material() body.water_type = WaterType.Type.FRESH_WATER - body.fish_pool = POND_POOL + body.fish_pool = _fresh_water_pool(tags) body.location_tags = _fresh_water_location_tags(tags) body.selection_priority = 10 @@ -388,6 +394,14 @@ func _fresh_water_location_tags(tags: PackedStringArray) -> Array[StringName]: return result +func _fresh_water_pool(tags: PackedStringArray) -> FishPool: + if "river" in tags: + return GENERATED_RIVER_POOL + if "lake" in tags: + return GENERATED_LAKE_POOL + return GENERATED_POND_POOL + + func _configure_diggable_area() -> void: var half_extents := get_playable_half_extents() _diggable_beach.generation_bounds = Rect2( diff --git a/world/regions/starter_island_region.tscn b/world/regions/starter_island_region.tscn index 171e95c..e8bb51e 100644 --- a/world/regions/starter_island_region.tscn +++ b/world/regions/starter_island_region.tscn @@ -159,7 +159,7 @@ script = ExtResource("10_water_body") surface_size = Vector2(16.1, 12.3675) water_material = ExtResource("19_fresh_water") fish_pool = ExtResource("12_pond_pool") -location_tags = Array[StringName]([&"starter_pond"]) +location_tags = Array[StringName]([&"starter_pond", &"pond"]) selection_priority = 1 [node name="VisualWater" type="MeshInstance3D" parent="WaterBodies/Pond" unique_id=1034265960] @@ -171,7 +171,7 @@ collision_layer = 4 collision_mask = 0 monitoring = false script = ExtResource("3_water") -location_tags = Array[StringName]([&"starter_pond"]) +location_tags = Array[StringName]([&"starter_pond", &"pond"]) water_type = 0 fish_pool = ExtResource("12_pond_pool") selection_priority = 1 From 66ae8c8be7386c6f45f2b633da95927027fffa2a Mon Sep 17 00:00:00 2001 From: Voyager Date: Fri, 21 Aug 2026 12:29:39 -0400 Subject: [PATCH 08/90] Preserve player menu toggle input during transitions --- ...ontroller_menu_accessibility_validation.gd | 34 ++++++++++++++++ ui/player_menu.gd | 40 ++++++++++++++++++- 2 files changed, 73 insertions(+), 1 deletion(-) diff --git a/tests/controller_menu_accessibility_validation.gd b/tests/controller_menu_accessibility_validation.gd index 3e37223..4176ddc 100644 --- a/tests/controller_menu_accessibility_validation.gd +++ b/tests/controller_menu_accessibility_validation.gd @@ -50,6 +50,7 @@ func _run() -> void: await _validate_mail_navigation() await _validate_profile_confirmation_focus() await _validate_profile_voice_navigation() + await _validate_player_menu_toggle_queue() await _validate_inventory_tab_zone_transitions() await _validate_player_menu_nested_controller_back() await _validate_confirmation_dialog_navigation() @@ -64,6 +65,39 @@ func _run() -> void: quit(1) +func _validate_player_menu_toggle_queue() -> void: + var menu := PlayerMenuScene.instantiate() as Control + root.add_child(menu) + await process_frame + menu.visible = true + menu.set("_transitioning", true) + var toggle := InputEventAction.new() + toggle.action = &"open_backpack" + toggle.pressed = true + menu.call("_input", toggle) + _expect( + bool(menu.get("_backpack_toggle_queued")), + "Player menu discarded TAB during its entry transition.", + ) + menu.call("_input", toggle) + _expect( + not bool(menu.get("_backpack_toggle_queued")), + "Repeated TAB presses did not preserve toggle parity.", + ) + menu.call("_input", toggle) + menu.call( + "_finish_menu_entry", + int(menu.get("_transition_generation")), + ) + await create_timer(0.5).timeout + _expect( + not menu.visible, + "A queued TAB press did not close the menu after entry.", + ) + menu.queue_free() + await process_frame + + func _validate_primary_menu_navigation() -> void: var title := TitleScreenScene.instantiate() as Control root.add_child(title) diff --git a/ui/player_menu.gd b/ui/player_menu.gd index 3bb428e..95ebc2e 100644 --- a/ui/player_menu.gd +++ b/ui/player_menu.gd @@ -336,6 +336,7 @@ var _transition_generation: int = 0 var _page_transition_generation: int = 0 var _transitioning: bool = false var _page_transitioning: bool = false +var _backpack_toggle_queued: bool = false var _cooler_rest_position: Vector2 = Vector2.ZERO var _bag_rest_position: Vector2 = Vector2.ZERO var _tackle_rest_position: Vector2 = Vector2.ZERO @@ -676,7 +677,9 @@ func _input(event: InputEvent) -> void: return if visible: if event.is_action_pressed("open_backpack"): - if not _transitioning and not _page_transitioning: + if _transitioning or _page_transitioning: + _queue_backpack_toggle() + else: close_menu() get_viewport().set_input_as_handled() return @@ -3251,6 +3254,7 @@ func _finish_menu_entry(generation: int) -> void: _transitioning = false _set_shell_interactive(true) _reset_controller_zone_for_section() + _consume_queued_backpack_toggle() func _begin_menu_exit(reason: CloseReason, restore_controls: bool) -> void: @@ -3311,6 +3315,10 @@ func _finish_close( restore_controls: bool, closing_generation: int, ) -> void: + var reopen_after_close: bool = ( + reason == CloseReason.USER and _backpack_toggle_queued + ) + _backpack_toggle_queued = false _cancel_presentation_tween() _cancel_page_tween() _the_net_page.deactivate() @@ -3339,6 +3347,35 @@ func _finish_close( _menu_generation += 1 _transition_generation += 1 menu_visibility_changed.emit(false) + if reopen_after_close: + call_deferred("_open_queued_backpack_toggle") + + +func _consume_queued_backpack_toggle() -> void: + if not _backpack_toggle_queued: + return + _backpack_toggle_queued = false + if visible: + close_menu() + else: + _open_queued_backpack_toggle() + + +func _queue_backpack_toggle() -> void: + # Preserve press parity: one press reverses the pending menu state, while a + # second press during the same animation cancels that request. + _backpack_toggle_queued = not _backpack_toggle_queued + + +func _open_queued_backpack_toggle() -> void: + if ( + visible + or _fishing_spot == null + or not is_instance_valid(_fishing_spot) + or not _fishing_spot.can_open_player_menu() + ): + return + open_menu() func _get_section_root(section: Section) -> Control: @@ -3469,6 +3506,7 @@ func _finish_page_transition(generation: int) -> void: _reset_page_transition_visuals() _set_content_interactive(true) _reset_controller_zone_for_section() + _consume_queued_backpack_toggle() func _set_shell_interactive(interactive: bool) -> void: From e4ddf4e5a6bee3aaf9f83ca5005684726f20df19 Mon Sep 17 00:00:00 2001 From: Voyager Date: Fri, 21 Aug 2026 12:29:51 -0400 Subject: [PATCH 09/90] Fix fishing and chat interaction regressions --- fishing/fishing_spot.gd | 52 +++++++++++------- network/network_fishing_attempt.gd | 1 + network/network_fishing_service.gd | 60 ++++++++++++++------- player/player.gd | 61 ++++++++++++++++++++++ tests/art_tools_validation.gd | 51 +++++++++++++++++- tests/fishing_authority_validation.gd | 34 ++++++++++++ tests/fishing_multiplayer_validation.gd | 4 +- tests/gathering_showcase_validation.gd | 7 +++ tests/keyboard_mouse_mapping_validation.gd | 14 +++++ ui/chat_ui.gd | 10 +++- world/water_recovery_controller.gd | 5 +- 11 files changed, 256 insertions(+), 43 deletions(-) diff --git a/fishing/fishing_spot.gd b/fishing/fishing_spot.gd index 389d40b..a1c8ddf 100644 --- a/fishing/fishing_spot.gd +++ b/fishing/fishing_spot.gd @@ -417,20 +417,21 @@ func configure_accessibility_auto_click( func begin_water_recovery() -> void: _external_input_blocked = true - if state in [ - FishingState.AIMING_CAST, - FishingState.CASTING, - FishingState.WAITING_FOR_BITE, - FishingState.FIGHTING, - ]: - _cancel_attempt() - # Recovery replaces the normal rod-return presentation. Finish the local - # cleanup now so its temporary movement lock is not captured and restored - # after the player respawns. - if state != FishingState.READY: - _finalize_attempt_cleanup("") - elif state == FishingState.SHOWING_CATCH: + if state == FishingState.SHOWING_CATCH: _secure_showcase_catch_for_recovery() + elif is_fishing_sequence_active(): + if state in [ + FishingState.AIMING_CAST, + FishingState.CASTING, + FishingState.WAITING_FOR_BITE, + FishingState.FIGHTING, + ]: + _cancel_attempt() + # Recovery replaces every in-flight rod return. This includes RETURNING, + # which can be entered by Escape a frame before the water trigger fires. + # Finish cleanup now so recovery never snapshots the cast movement lock. + if state != FishingState.READY or _active_player != null: + _finalize_attempt_cleanup("") func end_water_recovery() -> void: @@ -538,6 +539,12 @@ func _unhandled_input(event: InputEvent) -> void: alternate_reel and state == FishingState.FIGHTING ): return + # A held keyboard key emits echo events. Treat the alternate reel exactly + # like a mouse button: one barrier hit per physical press, while the normal + # held-input path continues driving free reeling between barriers. + if event is InputEventKey and event.echo: + get_viewport().set_input_as_handled() + return var selected_item: ItemDataType = _get_active_item() if ( state == FishingState.READY @@ -948,7 +955,6 @@ func _on_cast_completed() -> void: if _selected_fish == null: _cleanup_attempt("nothing is biting here.", &"invalid") return - _consume_active_bait() state = FishingState.WAITING_FOR_BITE _active_player.set_fishing_visual(true) @@ -975,11 +981,13 @@ func _on_cast_completed() -> void: status_changed.emit("") -func _consume_active_bait() -> void: +func _consume_active_bait() -> bool: if _active_player == null or _active_player.active_bait_id.is_empty(): - return + return true if _local_bag == null or not _local_bag.remove_item(_active_player.active_bait_id, 1): _active_player.unequip_bait() + return false + return true func roll_bite_wait_time() -> float: @@ -1131,14 +1139,18 @@ func _activate_bite(confirmation_override: bool = false) -> void: return _set_bite_confirmation_pending(false) - state = FishingState.FIGHTING - _active_player.set_fighting_visual(true) - _state_time_remaining = 0.0 - _withdrawal_input_held = false _pending_catch = _fish_selector.create_catch(_selected_fish) if _pending_catch == null or not _pending_catch.is_valid(): _cancel_attempt() return + if not _consume_active_bait(): + _pending_catch = null + _cleanup_attempt("No bait available.", &"cancel") + return + state = FishingState.FIGHTING + _active_player.set_fighting_visual(true) + _state_time_remaining = 0.0 + _withdrawal_input_held = false _start_fight_audio() bite_activated.emit() status_changed.emit("fish on!") diff --git a/network/network_fishing_attempt.gd b/network/network_fishing_attempt.gd index 84511db..638b4da 100644 --- a/network/network_fishing_attempt.gd +++ b/network/network_fishing_attempt.gd @@ -22,6 +22,7 @@ var target: Vector3 var bobber_position: Vector3 var fish_id: StringName var rod_id: StringName +var bait_id: StringName var bait_tags: Array[StringName] = [] var lure_effects: Array[StringName] = [] var encounter_seed: int = 0 diff --git a/network/network_fishing_service.gd b/network/network_fishing_service.gd index e1dfe56..95de131 100644 --- a/network/network_fishing_service.gd +++ b/network/network_fishing_service.gd @@ -168,6 +168,7 @@ func cancel_local_attempt(reason: String = "Fishing attempt ended.") -> void: if _session.is_host(): _cancel_attempt(peer_id, reason) else: + _pending_local_bait_by_request.erase(attempt.request_id) submit_cancel_request.rpc_id(1, attempt.attempt_id) @@ -361,7 +362,7 @@ func _handle_cast_request(peer_id: int, data: Dictionary) -> void: owns_authoritative_bag and ( avatar_bag == null - or not avatar_bag.remove_item(bait_id, 1) + or not avatar_bag.owns_item(bait_id) ) ) ): @@ -378,6 +379,7 @@ func _handle_cast_request(peer_id: int, data: Dictionary) -> void: attempt.bobber_position = authoritative_target attempt.fish_id = selected_fish.id attempt.rod_id = rod.item_id + attempt.bait_id = bait_id attempt.bait_tags = _bait_tags_for_request(data) attempt.lure_effects.clear() if lure != null: @@ -564,7 +566,6 @@ func _start_bite(attempt: NetworkFishingAttempt) -> void: _cancel_attempt(attempt.owner_peer_id, "Fishing attempt ended.") return attempt.bite_confirmation_pending = false - attempt.phase = NetworkFishingAttempt.Phase.FIGHTING attempt.encounter_seed = _new_seed() var selector := FishSelectorType.new() selector.active_rod = rod @@ -575,6 +576,17 @@ func _start_bite(attempt: NetworkFishingAttempt) -> void: if fish_catch == null or not fish_catch.is_valid(): _cancel_attempt(attempt.owner_peer_id, "Fishing attempt ended.") return + if ( + attempt.owner_peer_id == _session.get_local_peer_id() + and not attempt.bait_id.is_empty() + and ( + _local_bag == null + or not _local_bag.remove_item(attempt.bait_id, 1) + ) + ): + _cancel_attempt(attempt.owner_peer_id, "No bait available.") + return + attempt.phase = NetworkFishingAttempt.Phase.FIGHTING attempt.catch_payload = fish_catch.to_network_dict() attempt.controller.start_authoritative_encounter( fish.catch_profile, @@ -1031,6 +1043,13 @@ func _apply_public_outcome(data: Dictionary) -> void: if peer_id == _session.get_local_peer_id(): if str(data["outcome"]) != "catch": if not _session.is_host(): + var local_attempt: NetworkFishingAttempt = _attempts.get( + peer_id + ) + if local_attempt != null: + _pending_local_bait_by_request.erase( + local_attempt.request_id + ) _attempts.erase(peer_id) local_attempt_ended.emit( StringName(str(data["outcome"])), @@ -1091,20 +1110,6 @@ func _apply_cast_accepted(data: Dictionary) -> void: # On the host this replaces the same authoritative value with itself. if not _session.is_host(): _attempts[peer_id] = attempt - var pending_bait_id: StringName = ( - _pending_local_bait_by_request.get( - attempt.request_id, - StringName(), - ) - ) - _pending_local_bait_by_request.erase(attempt.request_id) - if not pending_bait_id.is_empty() and ( - _local_bag == null - or not _local_bag.remove_item(pending_bait_id, 1) - ): - cancel_local_attempt("No bait available.") - local_cast_rejected.emit("No bait available.") - return local_cast_accepted.emit(attempt.attempt_id, target) else: var presentation := _get_remote_presentation(peer_id) @@ -1140,6 +1145,22 @@ func _apply_bite_started(data: Dictionary) -> void: return var peer_id: int = data["owner_peer_id"] if peer_id == _session.get_local_peer_id(): + if not _session.is_host(): + var attempt: NetworkFishingAttempt = _attempts.get(peer_id) + var pending_bait_id := StringName() + if attempt != null: + pending_bait_id = _pending_local_bait_by_request.get( + attempt.request_id, + StringName(), + ) + _pending_local_bait_by_request.erase(attempt.request_id) + if not pending_bait_id.is_empty() and ( + _local_bag == null + or not _local_bag.remove_item(pending_bait_id, 1) + ): + cancel_local_attempt("No bait available.") + local_cast_rejected.emit("No bait available.") + return local_bite_started.emit(str(data["attempt_id"])) else: var presentation := _get_remote_presentation(peer_id) @@ -1260,12 +1281,12 @@ func _dispose_attempt(peer_id: int) -> void: attempt.controller.reset() attempt.controller.queue_free() var avatar: Player = _spawn_service.get_avatar(peer_id) - var local_return_is_active: bool = ( + var local_fishing_sequence_is_active: bool = ( peer_id == _session.get_local_peer_id() and _fishing_spot != null - and _fishing_spot.is_returning() + and _fishing_spot.is_fishing_sequence_active() ) - if avatar != null and not local_return_is_active: + if avatar != null and not local_fishing_sequence_is_active: avatar.set_movement_enabled(true) @@ -1307,6 +1328,7 @@ func _clear_all() -> void: _result_acknowledgements.clear() _last_cast_time.clear() _last_input_time.clear() + _pending_local_bait_by_request.clear() _snapshot_accumulator = 0.0 _local_input_sequence = 0 diff --git a/player/player.gd b/player/player.gd index 7f3e7d2..d6281b3 100644 --- a/player/player.gd +++ b/player/player.gd @@ -85,6 +85,7 @@ const CHARACTER_NET_STRIKE_ANIMATION: StringName = &"strike" const CATCH_PRESENTATION_REFERENCE_LONG_SIDE_PX: float = 1280.0 const CATCH_PRESENTATION_MIN_TEXTURE_SCALE: float = 0.1 const CATCH_PRESENTATION_MAX_TEXTURE_SCALE: float = 20.0 +const CATCH_SHOWCASE_INPUT_OWNER: StringName = &"catch_showcase" # Add future networked emote animation IDs here. The protocol accepts unknown # safe IDs so newer clients can extend it, but Player only presents actions # explicitly approved by this catalog. @@ -122,6 +123,13 @@ const BLINK_INTERVAL_SECONDS := Vector2(2.8, 7.5) const BLINK_DURATION_SECONDS: float = 0.11 const CHARACTER_CALL_MOUTH_ID: String = "open_ah" const CHARACTER_CALL_MOUTH_DURATION_SECONDS: float = 0.16 +const SPEECH_MOUTH_IDS: Array[String] = [ + "open_ah", + "open_oh", + "open_small", + "open_smile", +] +const SPEECH_MOUTH_FRAME_SECONDS: float = 0.09 const BASE_REEL_SPEED: float = 0.16 const LANDING_DUST_MIN_FALL_SPEED: float = 2.5 const NETWORK_EXTRAPOLATION_LIMIT_SECONDS: float = 0.25 @@ -227,6 +235,42 @@ func play_character_call_visual() -> void: _apply_presented_appearance() +func play_speech_visual(duration_seconds: float) -> void: + stop_speech_visual() + if duration_seconds <= 0.0 or SPEECH_MOUTH_IDS.is_empty(): + return + var generation: int = _speech_visual_generation + var elapsed: float = 0.0 + var frame_index: int = 0 + _speech_mouth_active = true + while elapsed < duration_seconds: + _speech_mouth_id = SPEECH_MOUTH_IDS[ + frame_index % SPEECH_MOUTH_IDS.size() + ] + _apply_presented_appearance() + var frame_duration := minf( + SPEECH_MOUTH_FRAME_SECONDS, + duration_seconds - elapsed, + ) + await get_tree().create_timer(frame_duration).timeout + if generation != _speech_visual_generation: + return + elapsed += frame_duration + frame_index += 1 + _speech_mouth_active = false + _speech_mouth_id = "" + _apply_presented_appearance() + + +func stop_speech_visual() -> void: + _speech_visual_generation += 1 + if not _speech_mouth_active and _speech_mouth_id.is_empty(): + return + _speech_mouth_active = false + _speech_mouth_id = "" + _apply_presented_appearance() + + func set_fishing_visual(active: bool) -> void: if ( active @@ -295,6 +339,10 @@ func _apply_presented_appearance() -> void: if _fighting_visual_active: presented_appearance = appearance_snapshot.duplicate(true) presented_appearance["eyes"] = FIGHTING_EYES_ID + if _speech_mouth_active and not _speech_mouth_id.is_empty(): + if presented_appearance == appearance_snapshot: + presented_appearance = appearance_snapshot.duplicate(true) + presented_appearance["mouth"] = _speech_mouth_id if _character_call_mouth_active: if presented_appearance == appearance_snapshot: presented_appearance = appearance_snapshot.duplicate(true) @@ -505,6 +553,9 @@ var _blink_seconds_remaining: float = 0.0 var _blink_rng := RandomNumberGenerator.new() var _character_call_mouth_active: bool = false var _character_call_visual_generation: int = 0 +var _speech_mouth_active: bool = false +var _speech_mouth_id: String = "" +var _speech_visual_generation: int = 0 var _fishing_visual_active: bool = false var _fishing_visual_phase: FishingVisualPhase = FishingVisualPhase.NONE var _fishing_after_release_pending: bool = false @@ -1755,6 +1806,10 @@ func _update_free_camera_physics() -> void: if _free_camera == null or _free_camera_body == null: _set_free_camera_active(false) return + if not _is_movement_input_enabled(): + _free_camera_body.velocity = Vector3.ZERO + _free_camera_body.move_and_slide() + return var input_vector: Vector2 = Input.get_vector( "move_left", "move_right", @@ -2981,6 +3036,8 @@ func _begin_catch_showcase_now( ) -> void: if _pocket_visual_target == PocketVisualTarget.CATCH_SHOWCASE: _cancel_pocket_visual() + if local_control_enabled: + set_local_input_suppressed(CATCH_SHOWCASE_INPUT_OWNER, true) _showcase_animation_active = true set_fishing_visual(false) _kill_showcase_camera_tween() @@ -3149,6 +3206,8 @@ func end_catch_showcase( not _showcase_visual_rotation_stored and _showcase_camera_snapshot == null ): + if local_control_enabled: + set_local_input_suppressed(CATCH_SHOWCASE_INPUT_OWNER, false) if restored_callback.is_valid(): restored_callback.call() return @@ -3310,6 +3369,8 @@ func _complete_showcase_restore( and Input.is_action_pressed("camera_drag") ) _showcase_camera_snapshot = null + if local_control_enabled: + set_local_input_suppressed(CATCH_SHOWCASE_INPUT_OWNER, false) if restored_callback.is_valid(): restored_callback.call() diff --git a/tests/art_tools_validation.gd b/tests/art_tools_validation.gd index aeebe05..a4528c4 100644 --- a/tests/art_tools_validation.gd +++ b/tests/art_tools_validation.gd @@ -27,6 +27,7 @@ func _run() -> void: await physics_frame var player := main.get("_player") as Player + var session := main.get_node("%NetworkSession") as NetworkSession var sprint_dust := player.get_node("%SprintDust") as SprintDustTrail assert(sprint_dust != null) assert(sprint_dust.get_active_puff_count() == 0) @@ -310,6 +311,55 @@ func _run() -> void: right_stick_motion.axis_value = 0.0 Input.parse_input_event(right_stick_motion) await process_frame + + # Chat owns all movement while text entry is active, including developer + # freecam movement which reads the same WASD actions as the player. + var free_camera_body := player.get("_free_camera_body") as CharacterBody3D + assert(free_camera_body != null) + chat_ui.open_chat() + assert(chat_ui.is_open()) + var free_camera_position_before: Vector3 = free_camera_body.global_position + Input.action_press("move_forward") + for _frame: int in 3: + await physics_frame + Input.action_release("move_forward") + assert(free_camera_body.global_position.is_equal_approx( + free_camera_position_before + )) + chat_ui.refocus_gameplay() + + # Typewriter speech cycles the shared open-mouth faceplates, then restores + # the player's authored mouth. World speech also follows the active freecam, + # not the inactive normal gameplay camera. + var normal_camera := player.get_gameplay_camera() + var normal_camera_transform: Transform3D = normal_camera.global_transform + var chat_anchor: Vector3 = player.get_chat_anchor_position() + normal_camera.look_at( + normal_camera.global_position + - (chat_anchor - normal_camera.global_position), + Vector3.UP, + ) + assert(normal_camera.is_position_behind(chat_anchor)) + assert(not free_camera.is_position_behind(chat_anchor)) + chat_ui.show_local_speech("hello there friend") + await process_frame + assert(bool(player.get("_speech_mouth_active"))) + var first_speech_mouth: String = str(player.get("_speech_mouth_id")) + await create_timer(0.12).timeout + var second_speech_mouth: String = str(player.get("_speech_mouth_id")) + assert(not first_speech_mouth.is_empty()) + assert(not second_speech_mouth.is_empty()) + assert(first_speech_mouth != second_speech_mouth) + chat_ui.call("_update_speech") + var speech: Dictionary = chat_ui.get("_speech") + var local_speech: Dictionary = speech.get(session.get_local_peer_id(), {}) + var speech_bubble := local_speech.get("bubble") as PanelContainer + assert(speech_bubble != null and speech_bubble.visible) + normal_camera.global_transform = normal_camera_transform + await create_timer(0.6).timeout + assert(not bool(player.get("_speech_mouth_active"))) + chat_ui.call("_on_peer_removed", session.get_local_peer_id()) + game_ui.call("_on_quick_action_selected", &"freecam") assert(not player.is_free_camera_active()) game_ui.call("_on_quick_action_selected", &"hud") @@ -754,7 +804,6 @@ func _run() -> void: assert(not service.is_active() and not toolbar.visible) print("Art tools validation: PASS") - var session := main.get_node("%NetworkSession") as NetworkSession session.disconnect_session("") main.queue_free() for _frame: int in 4: diff --git a/tests/fishing_authority_validation.gd b/tests/fishing_authority_validation.gd index 8046668..1f40086 100644 --- a/tests/fishing_authority_validation.gd +++ b/tests/fishing_authority_validation.gd @@ -35,10 +35,17 @@ func _run() -> void: var fishing_status := game_ui.get_node("%StatusLabel") as Label var fishing_panel := game_ui.get_node("%FishingPanel") as PanelContainer var player := main.get("_player") as Player + var item_catalog := main.get("item_catalog") as ItemCatalog assert(session.is_host()) assert(not session.is_open_host()) assert(service != null and fishing_spot != null and player != null) assert(player.hotbar.get_selected_item_id() == &"basic_fishing_rod") + var worms: ItemData = item_catalog.get_item_by_id(&"worms") + assert(worms != null) + if player.bag.get_quantity(&"worms") == 0: + assert(player.bag.add_item(&"worms", 2)) + assert(player.equip_bait(worms)) + var bait_quantity_before: int = player.bag.get_quantity(&"worms") var fresh_root := main.get_node( "TestWorld/Regions/GeneratedWorldRegion/WaterBodies/FreshWaterBodies" ) as Node3D @@ -90,6 +97,7 @@ func _run() -> void: await process_frame assert(fishing_spot.state == FishingSpotType.FishingState.WAITING_FOR_BITE) assert(service.has_local_attempt()) + assert(player.bag.get_quantity(&"worms") == bait_quantity_before) assert(fishing_status.text.is_empty()) assert(not fishing_status.visible) assert(not fishing_panel.visible) @@ -124,6 +132,7 @@ func _run() -> void: assert(fishing_spot.state == FishingSpotType.FishingState.READY) assert(player.is_movement_enabled()) assert(not bobber.visible) + assert(player.bag.get_quantity(&"worms") == bait_quantity_before) # A private host rolls and retains the authoritative catch before the fight # so its quality selects the barrier band clients receive in snapshots. @@ -141,9 +150,11 @@ func _run() -> void: attempts = service.get("_attempts") attempt = attempts.get(session.get_local_peer_id()) assert(attempt != null) + assert(player.bag.get_quantity(&"worms") == bait_quantity_before) service.call("_start_bite", attempt) await process_frame assert(attempt.phase == NetworkFishingAttempt.Phase.FIGHTING) + assert(player.bag.get_quantity(&"worms") == bait_quantity_before - 1) var catalog: FishPool = main.get("fish_catalog") as FishPool assert(catalog != null) var fish: FishData = catalog.get_fish_by_id(attempt.fish_id) @@ -218,6 +229,29 @@ func _run() -> void: assert(fishing_spot.can_change_hotbar_selection()) assert(fishing_spot.can_open_fishing_shop()) + # Escape can put the rod into RETURNING immediately before deep-water + # recovery begins. Recovery must finish that return before snapshotting its + # movement state, otherwise the respawn restores a permanent cast lock. + var water_recovery := main.get_node("%WaterRecovery") as WaterRecoveryController + assert(water_recovery != null) + var pause_menu: PauseMenu = game_ui.get_pause_menu() + pause_menu.open_menu() + assert(pause_menu.visible) + player.set_movement_enabled(false) + fishing_spot.set("_active_player", player) + fishing_spot.state = FishingSpotType.FishingState.RETURNING + water_recovery.call( + "_on_recovery_requested", + player, + player.global_position.y, + ) + assert(fishing_spot.state == FishingSpotType.FishingState.READY) + assert(bool(water_recovery.get("_prior_movement_enabled"))) + assert(bool(water_recovery.get("_prior_camera_input_enabled"))) + assert(not pause_menu.visible) + water_recovery.call("_finish_recovery") + assert(player.is_movement_enabled()) + print("Fishing authority validation: PASS") session.disconnect_session("") main.queue_free() diff --git a/tests/fishing_multiplayer_validation.gd b/tests/fishing_multiplayer_validation.gd index 7965af6..73de1bd 100644 --- a/tests/fishing_multiplayer_validation.gd +++ b/tests/fishing_multiplayer_validation.gd @@ -302,7 +302,9 @@ func _run_client() -> void: ] ) assert(service.has_local_attempt()) - assert(player.bag.get_quantity(&"worms") == worms_before_cast - 1) + # Bait remains available while the bobber is waiting. It is consumed only + # once the authoritative bite begins. + assert(player.bag.get_quantity(&"worms") == worms_before_cast) var fishing_deadline: int = Time.get_ticks_msec() + 5000 while ( Time.get_ticks_msec() < fishing_deadline diff --git a/tests/gathering_showcase_validation.gd b/tests/gathering_showcase_validation.gd index e565beb..26a9e34 100644 --- a/tests/gathering_showcase_validation.gd +++ b/tests/gathering_showcase_validation.gd @@ -59,6 +59,11 @@ func _run() -> void: assert(fishing_spot.present_external_catch(crab_catch)) assert(fishing_spot.state == FishingSpot.FishingState.SHOWING_CATCH) assert(not player.is_movement_enabled()) + # Network attempt cleanup may restore the base movement flag before the + # presentation finishes. The showcase owns a separate local-input lock. + player.set_movement_enabled(true) + assert(not bool(player.call("_is_movement_input_enabled"))) + assert(not bool(player.call("_is_camera_input_enabled"))) Input.action_release("fish_primary") await process_frame assert(not bool(fishing_spot.get("_put_away_press_armed"))) @@ -85,6 +90,8 @@ func _run() -> void: await process_frame assert(fishing_spot.state == FishingSpot.FishingState.READY) assert(player.is_movement_enabled()) + assert(bool(player.call("_is_movement_input_enabled"))) + assert(bool(player.call("_is_camera_input_enabled"))) assert(player.inventory.contains_catch_id(crab_catch.catch_id)) assert(bool(player.get("_active_item_is_net"))) print("Gathering showcase validation: PASS") diff --git a/tests/keyboard_mouse_mapping_validation.gd b/tests/keyboard_mouse_mapping_validation.gd index 7d02736..d8e9a88 100644 --- a/tests/keyboard_mouse_mapping_validation.gd +++ b/tests/keyboard_mouse_mapping_validation.gd @@ -181,6 +181,20 @@ func _run() -> void: catch_profile.barrier_count_min = 0 catch_profile.barrier_count_max = 0 catch_controller.start_encounter(catch_profile, 1.0, 1) + var alternate_echo := InputEventKey.new() + alternate_echo.physical_keycode = KEY_QUOTELEFT + alternate_echo.pressed = true + alternate_echo.echo = true + assert(alternate_echo.is_action(&"reel_alternate")) + fishing_spot._unhandled_input(alternate_echo) + assert(not bool(catch_controller.get("_reel_input_held"))) + var alternate_key_press := InputEventKey.new() + alternate_key_press.physical_keycode = KEY_QUOTELEFT + alternate_key_press.pressed = true + assert(alternate_key_press.is_action(&"reel_alternate")) + fishing_spot._unhandled_input(alternate_key_press) + assert(bool(catch_controller.get("_reel_input_held"))) + catch_controller.set_reel_input(false) var alternate_press := InputEventAction.new() alternate_press.action = &"reel_alternate" alternate_press.pressed = true diff --git a/ui/chat_ui.gd b/ui/chat_ui.gd index 0b26ffb..c039046 100644 --- a/ui/chat_ui.gd +++ b/ui/chat_ui.gd @@ -1068,6 +1068,8 @@ func _show_speech_bubble( var voice_profile_id: String = VoiceProfilesType.DEFAULT_ID var sample_set_id: String = VoiceProfilesType.DEFAULT_SAMPLE_SET_ID var speaker_avatar := _spawn.get_avatar(peer_id) + if speaker_avatar != null: + speaker_avatar.play_speech_visual(reveal_seconds) if not requested_voice_profile_id.is_empty(): voice_profile_id = VoiceProfilesType.sanitized_id( requested_voice_profile_id @@ -1360,10 +1362,13 @@ func _update_speech() -> void: if bubble == null or now >= float(state.get("expires", 0.0)): if bubble != null: bubble.queue_free() + var expired_avatar := _spawn.get_avatar(peer_id) + if expired_avatar != null: + expired_avatar.stop_speech_visual() _speech.erase(peer_id) continue var avatar := _spawn.get_avatar(peer_id) - var camera := _player.get_gameplay_camera() + var camera := _player.get_active_gameplay_camera() if avatar == null or camera == null: bubble.hide() continue @@ -1824,4 +1829,7 @@ func _on_peer_removed(peer_id: int) -> void: var bubble := state.get("bubble") as PanelContainer if bubble != null: bubble.queue_free() + var avatar := _spawn.get_avatar(peer_id) + if avatar != null: + avatar.stop_speech_visual() _speech.erase(peer_id) diff --git a/world/water_recovery_controller.gd b/world/water_recovery_controller.gd index b764f80..9626881 100644 --- a/world/water_recovery_controller.gd +++ b/world/water_recovery_controller.gd @@ -143,14 +143,17 @@ func _on_recovery_requested( or not is_instance_valid(triggered_player) ): return - recovery_starting.emit() _generation += 1 _entry_position = _player.global_position _recovery_root_basis = _player.global_basis _fishing_spot.begin_water_recovery() _player.prepare_for_water_recovery() + # Snapshot the normalized gameplay state before recovery_starting closes + # menus for the handoff. Those closures deliberately disable movement and + # camera input, which are recovery-owned locks rather than states to restore. _prior_movement_enabled = _player.is_movement_enabled() _prior_camera_input_enabled = _player.is_camera_input_enabled() + recovery_starting.emit() _player.set_movement_enabled(false) _player.set_camera_input_enabled(false) _player.set_water_recovery_active(true) From 779e3d983efd2daa6f005bf8627ea4f0b731dda1 Mon Sep 17 00:00:00 2001 From: Voyager Date: Fri, 21 Aug 2026 12:30:00 -0400 Subject: [PATCH 10/90] Keep Fishnet lifetime jobs within the laptop layout --- tests/job_system_validation.gd | 26 ++++++++++++++++++++++++++ ui/the_net_page.gd | 9 ++++++++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/tests/job_system_validation.gd b/tests/job_system_validation.gd index 1526e44..8ffc633 100644 --- a/tests/job_system_validation.gd +++ b/tests/job_system_validation.gd @@ -86,6 +86,9 @@ func _run() -> void: (player_menu.get_node("%NavigationCluster") as Control).get_child_count() == 7 ) + net_page.call("_select_view", TheNetPage.View.LIFETIME) + await process_frame + _validate_fishnet_bounds(net_page) await _validate_unavailable_fishnet_layout() var wallet_before: int = player.wallet.get_balance() @@ -261,6 +264,29 @@ func _validate_unavailable_fishnet_layout() -> void: await process_frame +func _validate_fishnet_bounds(page: TheNetPage) -> void: + var laptop := page.get_node("UtilityMainBox") as PanelContainer + var forecast_column := page.find_child( + "ForecastColumn", true, false + ) as VBoxContainer + var refresh_label := page.find_child( + "DailyRefreshLabel", true, false + ) as Label + var jobs_scroll := page.find_child("JobsScroll", true, false) as ScrollContainer + assert(laptop != null) + assert(forecast_column != null and refresh_label != null) + assert(jobs_scroll != null) + var laptop_rect: Rect2 = laptop.get_global_rect() + assert(forecast_column.get_global_rect().end.x <= laptop_rect.end.x) + assert(refresh_label.get_global_rect().end.x <= laptop_rect.end.x) + assert(refresh_label.get_global_rect().end.y <= laptop_rect.end.y) + assert(jobs_scroll.horizontal_scroll_mode == ScrollContainer.SCROLL_MODE_DISABLED) + var list := page.get("_list") as VBoxContainer + assert(list != null) + for row: Control in list.get_children(): + assert(row.size.x <= jobs_scroll.size.x + 0.5) + + func _validate_creature_jobs(jobs: PlayerJobService) -> void: var fish_count: int = 0 var insect_count: int = 0 diff --git a/ui/the_net_page.gd b/ui/the_net_page.gd index 555eeda..5f699ad 100644 --- a/ui/the_net_page.gd +++ b/ui/the_net_page.gd @@ -172,6 +172,7 @@ func _build_laptop() -> void: margin.add_child(layout) var title_row := HBoxContainer.new() + title_row.name = "FishnetTitleRow" title_row.add_theme_constant_override("separation", 16) layout.add_child(title_row) var header_left := VBoxContainer.new() @@ -197,13 +198,14 @@ func _build_laptop() -> void: tab.text = ["daily jobs", "lifetime jobs", "payments"][view_index] tab.toggle_mode = true tab.pressed.connect(_select_view.bind(view_index as View)) - UtilityPageStyle.apply_ocean_button(tab) + UtilityPageStyle.apply_compact_ocean_button(tab) _tabs.add_child(tab) var refresh_alignment_spacer := Control.new() refresh_alignment_spacer.custom_minimum_size.y = 20.0 refresh_alignment_spacer.mouse_filter = Control.MOUSE_FILTER_IGNORE header_left.add_child(refresh_alignment_spacer) var forecast_column := VBoxContainer.new() + forecast_column.name = "ForecastColumn" forecast_column.custom_minimum_size.x = 292.0 forecast_column.size_flags_horizontal = Control.SIZE_SHRINK_END forecast_column.add_theme_constant_override("separation", 3) @@ -237,6 +239,7 @@ func _build_laptop() -> void: _forecast_list.add_theme_constant_override("separation", 6) forecast_stack.add_child(_forecast_list) _refresh_label = Label.new() + _refresh_label.name = "DailyRefreshLabel" _refresh_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_RIGHT _refresh_label.add_theme_font_size_override("font_size", 14) _refresh_label.add_theme_color_override( @@ -251,6 +254,7 @@ func _build_laptop() -> void: layout.add_child(jobs_column) _jobs_scroll = ScrollContainer.new() + _jobs_scroll.name = "JobsScroll" _jobs_scroll.size_flags_horizontal = Control.SIZE_EXPAND_FILL _jobs_scroll.size_flags_vertical = Control.SIZE_EXPAND_FILL _jobs_scroll.horizontal_scroll_mode = ScrollContainer.SCROLL_MODE_DISABLED @@ -320,6 +324,8 @@ func _build_job_rows(jobs: Array[Dictionary], empty_text: String) -> void: content.add_child(text_column) var title := Label.new() title.text = str(job.get("title", "job")) + title.clip_text = true + title.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS title.add_theme_font_size_override("font_size", 20) title.add_theme_color_override( "font_color", UtilityPageStyle.OCEAN_TEXT_PRIMARY @@ -327,6 +333,7 @@ func _build_job_rows(jobs: Array[Dictionary], empty_text: String) -> void: text_column.add_child(title) var description := Label.new() description.text = str(job.get("description", "")) + description.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART description.add_theme_font_size_override("font_size", 16) description.add_theme_color_override( "font_color", UtilityPageStyle.OCEAN_TEXT_SECONDARY From b2752b10743653d1ee38c55faef5febe88a1b855 Mon Sep 17 00:00:00 2001 From: Voyager Date: Fri, 21 Aug 2026 16:38:30 -0400 Subject: [PATCH 11/90] Expand generated terrain and forest variation --- docs/DEVELOPMENT.md | 129 ++++------- docs/README-PLAYTEST.txt | 50 ++-- tests/generated_world_runtime_validation.gd | 180 ++++++++++++++- .../biomes/definitions/biome_coast.tres | 6 +- .../biomes/definitions/biome_forest.tres | 2 +- .../biomes/definitions/biome_pine_forest.tres | 2 +- world/generation/generated_world_region.gd | 215 ++++++++++++++++-- .../props/assets/prop_pine_large.glb | Bin 0 -> 9624 bytes .../props/assets/prop_pine_large.glb.import | 45 ++++ .../props/assets/prop_tree_large.glb | Bin 0 -> 4304 bytes .../props/assets/prop_tree_large.glb.import | 45 ++++ .../props/definitions/prop_palm.tres | 11 +- .../props/definitions/prop_pine.tres | 6 +- .../props/definitions/prop_pine_large.tres | 20 ++ .../props/definitions/prop_tree_1.tres | 14 +- .../props/definitions/prop_tree_2.tres | 14 +- .../props/definitions/prop_tree_3.tres | 14 +- .../props/definitions/prop_tree_large.tres | 30 +++ .../generation/props/materials/wood_dark.tres | 9 + .../props/materials/wood_light.tres | 9 + .../generation/props/materials/wood_mid.tres | 9 + .../props/terrain_prop_catalog.tres | 6 +- world/generation/terrain_chunk_generator.gd | 172 ++++++++++++++ world/generation/terrain_prop_catalog.gd | 39 ++++ world/generation/terrain_prop_definition.gd | 16 ++ 25 files changed, 898 insertions(+), 145 deletions(-) create mode 100644 world/generation/props/assets/prop_pine_large.glb create mode 100644 world/generation/props/assets/prop_pine_large.glb.import create mode 100644 world/generation/props/assets/prop_tree_large.glb create mode 100644 world/generation/props/assets/prop_tree_large.glb.import create mode 100644 world/generation/props/definitions/prop_pine_large.tres create mode 100644 world/generation/props/definitions/prop_tree_large.tres create mode 100644 world/generation/props/materials/wood_dark.tres create mode 100644 world/generation/props/materials/wood_light.tres create mode 100644 world/generation/props/materials/wood_mid.tres diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index c82c549..6e19e1c 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -89,9 +89,8 @@ presented through a uniformly scaled SubViewport. Shared UI components and palette resources prevent page-specific geometry and style drift. World presentation systems (time/weather visuals, procedural sky and water, -shoreline ribbons, player blob shadows) do not own gameplay collision or -network authority. Generated shoreline meshes are deterministic presentation -resources baked from explicitly configured static terrain. +shoreline treatment, player blob shadows) do not own gameplay collision or +network authority. ### Engineering consequences @@ -129,9 +128,9 @@ remain authoritative in `.tres` resources and typed scripts. wallet exactly once. - Reserved assets are rejected atomically; mixed valid and reserved batches must not partially succeed. -- Item effects, shop prices, cooler capacity, fishing upgrades, jobs, and - experience are separate balance axes. Avoid changing several in an - unrelated presentation pass. +- Item effects, shop prices, inventory and storage capacity, fishing upgrades, + jobs, and experience are separate balance axes. Avoid changing several in + an unrelated presentation pass. Record affected stable IDs and resource paths, old and new values, intended player-facing outcome, interactions with quality/availability/economy, @@ -143,70 +142,57 @@ authored number changed. ### World composition -The active test world uses the canonical starter island through -`world/regions/starter_island_region.tscn`. +`world/test_world.tscn` is the shared gameplay stage. It owns the environment, +sun, world bounds, and below-world failsafe, then hosts exactly one active +`WorldRegion`. Two canonical region implementations are supported: -`world/test_world.tscn` owns the gameplay-wide environment, sun, world bounds, -and below-world failsafe. `StarterIslandRegion` owns the placed island content: +- the generated world, which is the default for new games and is rebuilt from + the saved seed; and +- the starter island, which remains an authored selectable layout and a useful + compatibility/reference scene. + +The stable layout IDs live in `world/world_layout.gd`. Do not infer a layout +from a scene filename, display label, or region node name. Both implementations +must satisfy the shared `WorldRegion` contract for player spawn, safe respawns, +water regions, recovery, gathering, digging, the shop, and player storage. + +A region owns the content that changes with the selected world: ```text -StarterIslandRegion +WorldRegion ├── Terrain -│ ├── Visual -│ └── Collision ├── WaterBodies -│ ├── Pond -│ │ ├── VisualWater -│ │ ├── FishingRegion -│ │ └── RecoveryRegion -│ └── Ocean -│ ├── VisualWater -│ ├── FishingRegions -│ └── RecoveryRegions ├── PlayerSpawn ├── SafeRespawns +├── DiggableAreas +├── GatherableAnchors └── Interactables ├── FishingShopWorld - └── PelicanCoolerPerch + └── PlayerStorageBox ``` -Move a meaningful feature root rather than one of its implementation children. -Child transforms are local offsets owned by that feature. +The generated region owns its chunk, biome, and prop catalogs and derives +terrain collision, water coverage, biome placement, and presentation reference +geometry from the generated result. The starter-island region owns its imported +terrain hierarchy and explicitly placed content. Code shared by both layouts +must depend on `WorldRegion`, not a starter-island child path. -Every fishable region authors its `water_type` explicitly. The starter pond is -`FRESH_WATER`; the starter coast is `SALT_WATER`. Fish species use the same -central type through an allowed-water-type bitmask. Do not infer habitat from -node names, pool filenames, coordinates, or water height. +Every fishable water body authors its water type explicitly. Fish species use +the same central type through an allowed-water-type bitmask. Do not infer +habitat from node names, pool filenames, coordinates, or water height. -Select `WaterBodies/Pond` to move or resize the pond. Its transform is the -authoritative surface position; surface size and fishing/recovery coverage are -owned together. Select `WaterBodies/Ocean` to move the surrounding water as one -feature. Its fishing coverage is derived from the visible water mesh and the -terrain collision determines the shoreline. New or revised land meshes do not -require hand-authored fishing exclusions. Recovery volumes remain explicit so -they can follow the playable world bounds rather than the horizon-sized visual -ocean. +In the generated layout, seed and layout ID are persistent data. Chunk IDs, +edge rules, biome definitions, and prop definitions are authored resources; +changing them can change the world produced by an existing seed and therefore +requires deliberate compatibility review. -Placed-feature ownership: +For the authored starter island, move a meaningful feature root rather than one +of its implementation children. Child transforms are local offsets owned by +that feature. Its imported GLB hierarchy is the starter region's terrain and +collision authority; this rule does not describe generated-world collision. -- `PlayerSpawn` defines the initial player transform and facing. -- `SafeRespawns` contains authoritative recovery destinations. Recovery - preserves current facing. -- `Interactables/FishingShopWorld` owns the shop visual, collision, interaction - area, prompt, and entrance marker. -- `Interactables/PelicanCoolerPerch` owns the Pelican landmark visual; selling - remains a Cooler action. -- `Terrain` owns imported visuals and generated collision. -- `BelowWorldFailsafe/Coverage` owns below-world recovery coverage. - -The starter-island GLB hierarchy is the terrain-collision authority. The -region rebuilds one concave collision shape from every imported -`MeshInstance3D` when it loads, so newly exported terrain and props participate -without a separate stale collision bake. Keep purely decorative meshes out of -that hierarchy if they should not block players. - -The active `Environment`, `Sun`, and starter-island grass material remain -Inspector-authored and are not recreated by runtime scripts. +The active `Environment` and `Sun` remain Inspector-authored on the shared +stage and are not recreated by either region. ### Reusable world props @@ -226,29 +212,14 @@ root scaling is acceptable when visual and collision scale together; avoid non-uniform root scaling. Make mutable per-instance shapes, meshes, and materials local to the scene. -### Shoreline tide ribbons +### Shoreline presentation -Maps using generated tide ribbons own a `ShorelineRibbonBaker` and one -`ShorelineRibbonConfig` per water body. Each configuration selects only its -static terrain source, water height, generation bounds, water-facing reference, -smoothing overrides, and generated `.tres` path. Props, players, bobbers, and -gameplay areas are not scanned unless selected explicitly. Only `SALT_WATER` -bodies generate ribbons. - -The editor automatically rebuilds configured shoreline resources when an -authored terrain GLB is reimported. Select the baker and press **Rebuild -Shoreline Ribbons** only when intentionally forcing a rebuild without a terrain -reimport. The equivalent headless fallback and validation command is: - -```sh -godot --headless --path . --script scripts/bake_shoreline_ribbons.gd -``` - -Use `debug_path_stage` only while comparing extraction stages and leave it Off -in committed scenes. A rebuild is required when saltwater terrain at the -waterline, water height, or generation bounds change; terrain reimports handle -the usual case automatically. Normal gameplay loads committed generated meshes -and never runs extraction. +The visible shoreline treatment is currently produced by the water materials. +The older smooth-ribbon baker and generated starter-island ribbon resource are +retained as development history/tooling, but the ribbon mesh is disabled and +is not part of the current rendered shoreline. Do not treat a ribbon rebuild +as a normal terrain-authoring requirement or re-enable the mesh as incidental +cleanup. ### Facial-feature textures @@ -299,12 +270,12 @@ with a -3 dBFS peak ceiling, mono, 48 kHz, 16-bit PCM. Import a supplied set through the normalization script rather than copying its WAV files directly: ```bash -scripts/import_animalese_voice.sh /path/to/source_clips sample_set_directory +scripts/import_animalese_voice.sh /path/to/source_clips ``` The source directory may contain lowercase letter, number, and underscore WAV filenames. The script converts every top-level WAV and writes the results under -`sound/dialogue/animalese/sample_set_directory/`. Add a new runtime set to +`sound/dialogue/animalese//`. Add a new runtime set to `player/animalese_voice_profiles.gd` after import, then run the quick validation suite. Keep the untouched submission and its original hashes in the private intake record; repository files are normalized derivatives. diff --git a/docs/README-PLAYTEST.txt b/docs/README-PLAYTEST.txt index 32b07d6..a0e9b20 100644 --- a/docs/README-PLAYTEST.txt +++ b/docs/README-PLAYTEST.txt @@ -1,6 +1,5 @@ NETfishing -v0.14.0-alpha -Alpha 0.14.0 +Alpha playtest Thank you for trying this early private playtest. @@ -30,13 +29,16 @@ Sprint Shift Sneak Ctrl or click right stick Slow walk Alt Rotate camera Hold right mouse, or use right stick -Cycle active hotbar slot Mouse wheel +Cycle active hotbar slot Mouse wheel or D-pad left/right Select hotbar slot 1 through 9 Zoom camera Shift + mouse wheel -Cast / withdraw / reel Left mouse -Cooler, Bag, and Logbook Tab +Primary tool / fishing Left mouse or right trigger +Inventory and player pages Tab Game Menu / back Escape -Open Fishing Shop E while near the shop +Interact E +Chat T + +Keyboard and controller bindings can be reviewed and changed in Settings. FISHING @@ -48,12 +50,14 @@ FISHING - At barriers, use distinct left-click presses to damage the barrier. - Do not let the red chase meter catch the green meter. - Accessibility auto-click can be enabled in Settings. -- Approach the bright Fishing Shop booth and press E to open it. -- The Fishing Shop buys one Cooler fish at a time for full base value. -- Buy Coffee, Energy Drinks, Snacks, and Fish Finders as Bag supplies. -- Drag supplies from Bag to the hotbar and left-click in READY to use one. +- Approach the Fishing Shop and interact to open it. +- Move sellable inventory entries into the shop's sell tray, review the total, + and confirm the sale. +- Buy supplies, equipment, and persistent upgrades from their shop tabs. +- Move world-use items into the hotbar and select their slot to use or hold + them. - Coffee improves movement; other supplies temporarily improve fishing. -- The Cooler starts at 12 fish; buy permanent capacity expansions at the shop. +- Inventory and storage capacity can be expanded permanently at the shop. - Reel Speed upgrades increase authoritative green reeling progress. - Rod Power upgrades increase damage per valid barrier action. - Shop upgrades persist in the local progression save. @@ -71,28 +75,24 @@ FEATURES TO TRY - Barrier-and-chase catching - Accessibility auto-click settings - Catch showcase and fish size variation -- Cooler, Bag, Logbook, favorites, and sorting -- Basic Fishing Rod equipment and the 1–9 hotbar -- Pelican selling and wallet updates -- Physical Fishing Shop sales and persistent fishing upgrades +- General inventory, separate tackle, hotbar storage, player storage, and the + Logbook +- Fishing, net gathering, and beach digging +- Equipment and consumable use from the hotbar +- Fishing Shop sell tray, wallet updates, and persistent upgrades +- Seeded generated worlds and the authored starter-island layout - Save, Continue, New Game, and Delete Save - Game Menu and persistent camera settings - Water-entry recovery from several shores SAVES AND SETTINGS -Progression and settings are stored in Godot's per-user application-data -directory, outside this extracted game folder. Delete Save removes progression -but preserves settings. - -Windows: - %APPDATA%\Godot\app_userdata\NETFISHING\ - -Linux: - ~/.local/share/godot/app_userdata/NETFISHING/ +Progression and settings are stored outside the extracted game folder. The +Data & Identity page shows the active player-data location. Delete Save removes +progression but preserves device settings. This is an early save format. Keep expectations modest and report any failure -to Continue, save, sell, favorite, or retain an individual fish. +to Continue, save, sell, move, favorite, or retain an inventory entry. FEEDBACK diff --git a/tests/generated_world_runtime_validation.gd b/tests/generated_world_runtime_validation.gd index 03a5211..e00178a 100644 --- a/tests/generated_world_runtime_validation.gd +++ b/tests/generated_world_runtime_validation.gd @@ -23,11 +23,13 @@ const EXPECTED_PROP_IDS: Array[StringName] = [ &"prop_mushroom", &"prop_palm", &"prop_pine", + &"prop_pine_large", &"prop_timber_1", &"prop_timber_2", &"prop_tree_1", &"prop_tree_2", &"prop_tree_3", + &"prop_tree_large", ] const EXPECTED_BIOME_IDS: Array[StringName] = [ &"biome_plains", @@ -40,9 +42,11 @@ const PROCEDURAL_PROP_IDS: Array[StringName] = [ &"prop_mushroom", &"prop_palm", &"prop_pine", + &"prop_pine_large", &"prop_tree_1", &"prop_tree_2", &"prop_tree_3", + &"prop_tree_large", ] @@ -53,6 +57,11 @@ func _initialize() -> void: func _run() -> void: var region := RegionScene.instantiate() as GeneratedWorldRegion assert(region != null) + var configured_generator := region.get_node( + "Terrain/TerrainChunkGenerator" + ) as TerrainChunkGenerator + assert(configured_generator != null) + configured_generator.elevated_cliff_third_level_chance = 1.0 root.add_child(region) await process_frame await physics_frame @@ -124,7 +133,10 @@ func _validate_generated_region( ) assert( generator.get_primary_terrain_meshes().size() - == expected_chunk_count + == ( + expected_chunk_count + + generator.stacked_elevated_placement_keys().size() + ) ) _validate_elevated_cliff_feature(generator) @@ -179,6 +191,16 @@ func _validate_generated_region( assert(decorations != null and decorations.get_child_count() > 0) assert(anchors != null) assert(anchors.get_spawn_positions().size() > 0) + var palm_clusters: Dictionary[int, Array] = {} + var tree_scales: Array[float] = [] + var tree_yaws: Dictionary[float, bool] = {} + var ocean_edges_by_coordinate: Dictionary[Vector2i, int] = {} + for record: Dictionary in generator.placement_records(): + var record_edges := int(record.get("ocean_facing_edges", 0)) + if record_edges != 0: + ocean_edges_by_coordinate[ + record.get("coordinate", Vector2i.ZERO) + ] = record_edges for child: Node in decorations.get_children(): var prop_id := StringName(child.get_meta(&"terrain_prop_id", &"")) assert(PROCEDURAL_PROP_IDS.has(prop_id)) @@ -211,13 +233,80 @@ func _validate_generated_region( child as Node3D, definition, ) - if prop_id in [&"prop_tree_1", &"prop_tree_2", &"prop_tree_3"]: + if prop_id == &"prop_palm": + var cluster_id := int( + child.get_meta(&"terrain_prop_cluster_id", -1) + ) + var members: Array = palm_clusters.get(cluster_id, []) + members.append(child) + palm_clusters[cluster_id] = members + var ocean_direction := _ocean_direction( + ocean_edges_by_coordinate.get(coordinate, 0) + ) + if ocean_direction.is_zero_approx(): + ocean_direction = _nearest_ocean_direction( + region, + generator, + (child as Node3D).position, + ) + var local_overhang := Vector3( + definition.local_overhang_direction.x, + 0.0, + definition.local_overhang_direction.y, + ).normalized() + var actual_overhang := local_overhang.rotated( + Vector3.UP, + (child as Node3D).rotation.y, + ) + assert( + actual_overhang.dot(ocean_direction) + >= cos(deg_to_rad(definition.ocean_facing_spread_degrees)) + - 0.001 + ) + elif prop_id in [ + &"prop_tree_1", + &"prop_tree_2", + &"prop_tree_3", + &"prop_tree_large", + &"prop_pine", + &"prop_pine_large", + ]: + tree_scales.append( + float(child.get_meta(&"terrain_prop_visual_scale", 1.0)) + ) + tree_yaws[snappedf((child as Node3D).rotation.y, 0.01)] = true + if prop_id in [ + &"prop_tree_1", + &"prop_tree_2", + &"prop_tree_3", + &"prop_tree_large", + ]: assert( _has_material_variant_override( child.get_node_or_null("Visual"), definition.material_variants, ) ) + assert( + _has_material_variant_override( + child.get_node_or_null("Visual"), + definition.secondary_material_variants, + ) + ) + assert(not palm_clusters.is_empty()) + for members: Array in palm_clusters.values(): + assert(members.size() >= 2 and members.size() <= 3) + for first_index: int in members.size(): + for second_index: int in range(first_index + 1, members.size()): + var first := members[first_index] as Node3D + var second := members[second_index] as Node3D + var separation := Vector2( + first.position.x - second.position.x, + first.position.z - second.position.z, + ).length() + assert(separation > 0.5 and separation < 6.1) + assert(tree_scales.max() - tree_scales.min() > 0.25) + assert(tree_yaws.size() >= 8) assert(_decoration_group_count(region, &"grass_tree") > 0) assert(_decoration_group_count(region, &"sand_tree") > 0) assert( @@ -297,6 +386,35 @@ func _validate_elevated_cliff_feature( assert(base_mesh.has_node("TerrainBaseLayerCollision")) assert(overlay_mesh.has_node("TerrainCollision")) assert(layered_count == 9) + var stacked_keys := generator.stacked_elevated_placement_keys() + assert(stacked_keys.size() in [0, 4]) + if stacked_keys.is_empty(): + return + for key: String in stacked_keys: + assert(key.begins_with("chunk_0010@")) + var stacked_count := 0 + for chunk_root: Node in generated.get_children(): + for child: Node in chunk_root.get_children(): + if not bool(child.get_meta(&"terrain_stacked_elevation", false)): + continue + stacked_count += 1 + assert( + StringName(child.get_meta(&"terrain_chunk_id", &"")) + == &"chunk_0010" + ) + assert( + is_equal_approx( + (child as Node3D).position.y, + generator.elevated_cliff_level_height, + ) + ) + var stacked_mesh := TerrainChunkAnalyzer.find_primary_mesh( + child, + &"chunk_0010", + ) + assert(stacked_mesh != null and stacked_mesh.mesh != null) + assert(stacked_mesh.has_node("TerrainCollision")) + assert(stacked_count == 4) func _validate_ocean_facing_record( @@ -323,6 +441,31 @@ func _validate_ocean_facing_record( ) +func _ocean_direction(ocean_edges: int) -> Vector3: + var result := Vector3.ZERO + for edge_value: int in TerrainChunkTopology.Edge.values(): + if (ocean_edges & (1 << edge_value)) != 0: + result += TerrainChunkTopology.edge_normal( + edge_value as TerrainChunkTopology.Edge + ) + return result.normalized() + + +func _nearest_ocean_direction( + region: GeneratedWorldRegion, + generator: TerrainChunkGenerator, + position: Vector3, +) -> Vector3: + var half_extents := region.get_playable_half_extents() + var distance_x := half_extents.x - absf(position.x) + var distance_z := half_extents.y - absf(position.z) + var direction_x := Vector3.RIGHT if position.x >= 0.0 else Vector3.LEFT + var direction_z := Vector3.BACK if position.z >= 0.0 else Vector3.FORWARD + if absf(distance_x - distance_z) <= generator.catalog.chunk_size * 0.35: + return (direction_x + direction_z).normalized() + return direction_x if distance_x < distance_z else direction_z + + func _validate_prop_catalog(region: GeneratedWorldRegion) -> void: var catalog := region.get_prop_catalog() assert(catalog != null) @@ -343,16 +486,49 @@ func _validate_prop_catalog(region: GeneratedWorldRegion) -> void: &"prop_tree_1", &"prop_tree_2", &"prop_tree_3", + &"prop_tree_large", ]: var tree := catalog.definition_for_id(tree_id) assert(tree != null) assert(tree.minimum_visual_scale < tree.maximum_visual_scale) assert(tree.material_variants.size() >= 3) assert(not tree.variant_material_slot_names.is_empty()) + assert(tree.secondary_material_variants.size() >= 3) + assert(not tree.secondary_variant_material_slot_names.is_empty()) var pine := catalog.definition_for_id(&"prop_pine") assert(pine != null) assert(pine.minimum_visual_scale < pine.maximum_visual_scale) assert(pine.material_variants.is_empty()) + var large_pine := catalog.definition_for_id(&"prop_pine_large") + assert(large_pine != null) + assert(large_pine.minimum_visual_scale < large_pine.maximum_visual_scale) + assert(large_pine.material_variants.is_empty()) + var palm := catalog.definition_for_id(&"prop_palm") + assert(palm != null) + assert(is_equal_approx(palm.minimum_visual_scale, 0.5)) + assert(is_equal_approx(palm.maximum_visual_scale, 1.0)) + assert(palm.minimum_cluster_size == 2) + assert(palm.maximum_cluster_size == 3) + assert(palm.minimum_cluster_radius > palm.clearance_radius) + assert(palm.maximum_cluster_radius > palm.minimum_cluster_radius) + assert(palm.prefer_ocean_facing) + assert(not palm.local_overhang_direction.is_zero_approx()) + var forest := region.get_biome_catalog().definition_for_id(&"biome_forest") + var forest_rule := forest.prop_rule_for_group(&"grass_tree") + var large_tree := catalog.definition_for_id(&"prop_tree_large") + var small_tree_weight := ( + catalog.definition_for_id(&"prop_tree_1").selection_weight + + catalog.definition_for_id(&"prop_tree_2").selection_weight + + catalog.definition_for_id(&"prop_tree_3").selection_weight + ) + assert(forest_rule.allows_prop(large_tree)) + assert(large_tree.selection_weight > small_tree_weight) + var pine_forest := region.get_biome_catalog().definition_for_id( + &"biome_pine_forest" + ) + var pine_rule := pine_forest.prop_rule_for_group(&"grass_tree") + assert(pine_rule.allows_prop(large_pine)) + assert(large_pine.selection_weight > pine.selection_weight) func _validate_biome_catalog( diff --git a/world/generation/biomes/definitions/biome_coast.tres b/world/generation/biomes/definitions/biome_coast.tres index 635181b..76b3c75 100644 --- a/world/generation/biomes/definitions/biome_coast.tres +++ b/world/generation/biomes/definitions/biome_coast.tres @@ -6,9 +6,9 @@ [sub_resource type="Resource" id="Rule_sand_tree"] script = ExtResource("2_rule") procedural_group = &"sand_tree" -placement_chance = 4200 -adjacency_bonus = 1200 -maximum_density = 5000 +placement_chance = 2200 +adjacency_bonus = 900 +maximum_density = 2800 minimum_placements = 1 allowed_prop_ids = PackedStringArray("prop_palm") diff --git a/world/generation/biomes/definitions/biome_forest.tres b/world/generation/biomes/definitions/biome_forest.tres index 21cd724..c0764e2 100644 --- a/world/generation/biomes/definitions/biome_forest.tres +++ b/world/generation/biomes/definitions/biome_forest.tres @@ -11,7 +11,7 @@ adjacency_bonus = 1200 maximum_density = 8500 minimum_placements = 2 placement_attempts_per_chunk = 3 -allowed_prop_ids = PackedStringArray("prop_tree_1", "prop_tree_2", "prop_tree_3") +allowed_prop_ids = PackedStringArray("prop_tree_large", "prop_tree_1", "prop_tree_2", "prop_tree_3") [sub_resource type="Resource" id="Rule_grass_detail"] script = ExtResource("2_rule") diff --git a/world/generation/biomes/definitions/biome_pine_forest.tres b/world/generation/biomes/definitions/biome_pine_forest.tres index eec39a4..6582a40 100644 --- a/world/generation/biomes/definitions/biome_pine_forest.tres +++ b/world/generation/biomes/definitions/biome_pine_forest.tres @@ -11,7 +11,7 @@ adjacency_bonus = 1200 maximum_density = 8500 minimum_placements = 2 placement_attempts_per_chunk = 3 -allowed_prop_ids = PackedStringArray("prop_pine") +allowed_prop_ids = PackedStringArray("prop_pine_large", "prop_pine") [sub_resource type="Resource" id="Rule_grass_detail"] script = ExtResource("2_rule") diff --git a/world/generation/generated_world_region.gd b/world/generation/generated_world_region.gd index e8ac760..94a04dd 100644 --- a/world/generation/generated_world_region.gd +++ b/world/generation/generated_world_region.gd @@ -31,6 +31,7 @@ const OCEAN_POOL: FishPool = preload( const WATER_HEIGHT := -0.25 const PROP_EDGE_MARGIN := 2.2 const PROP_PLACEMENT_ATTEMPTS := 12 +const PROP_CLUSTER_PLACEMENT_ATTEMPTS := 10 const PROP_MINIMUM_GROUND_CLEARANCE := 0.05 const PROP_CHANCE_SCALE := 10000 const PROP_SELECTION_WEIGHT_SCALE := 1000 @@ -268,6 +269,7 @@ func _on_generation_completed(summary: Dictionary) -> void: record.get("position", Vector3.ZERO), coordinate, biome.stable_id, + int(record.get("ocean_facing_edges", 0)), random, terrain_triangles, ): @@ -445,6 +447,7 @@ func _maybe_add_prop( chunk_center: Vector3, chunk_coordinate: Vector2i, biome_id: StringName, + ocean_facing_edges: int, random: RandomNumberGenerator, terrain_triangles: Array[PackedVector3Array], ) -> bool: @@ -460,6 +463,7 @@ func _maybe_add_prop( chunk_center, chunk_coordinate, biome_id, + ocean_facing_edges, random, terrain_triangles, ) @@ -470,19 +474,26 @@ func _add_prop( chunk_center: Vector3, chunk_coordinate: Vector2i, biome_id: StringName, + ocean_facing_edges: int, random: RandomNumberGenerator, terrain_triangles: Array[PackedVector3Array], ) -> bool: if definition == null or definition.packed_scene == null: return false - var visual_scale := random.randf_range( - definition.minimum_visual_scale, - definition.maximum_visual_scale, + var cluster_size := random.randi_range( + definition.minimum_cluster_size, + definition.maximum_cluster_size, ) - var scaled_clearance := definition.clearance_radius * visual_scale + var visual_scales := _prop_visual_scales( + definition, + cluster_size, + random, + ) + var primary_scale := visual_scales[0] + var scaled_clearance := definition.clearance_radius * primary_scale var placement := Vector3.ZERO var found_surface := false - for attempt: int in PROP_PLACEMENT_ATTEMPTS: + for _attempt: int in PROP_PLACEMENT_ATTEMPTS: var offset := Vector3( random.randf_range(-PROP_EDGE_MARGIN, PROP_EDGE_MARGIN), 0.0, @@ -507,6 +518,118 @@ func _add_prop( break if not found_surface: return false + var cluster_id := _decorations.get_child_count() + if not _instantiate_prop( + definition, + placement, + primary_scale, + _prop_yaw(definition, ocean_facing_edges, placement, random), + chunk_coordinate, + biome_id, + cluster_id, + 0, + random, + ): + return false + if cluster_size <= 1: + return true + var cluster_angle := random.randf_range(-PI, PI) + var companion_count := cluster_size - 1 + var chunk_half_extent := _generator.catalog.chunk_size * 0.5 - 0.25 + for member_index: int in range(1, cluster_size): + var member_scale := visual_scales[member_index] + var member_clearance := definition.clearance_radius * member_scale + for _attempt: int in PROP_CLUSTER_PLACEMENT_ATTEMPTS: + var sector_angle := ( + cluster_angle + + TAU * float(member_index - 1) / float(companion_count) + + random.randf_range(-0.45, 0.45) + ) + var radius := random.randf_range( + definition.minimum_cluster_radius, + definition.maximum_cluster_radius, + ) + var candidate := placement + Vector3( + cos(sector_angle) * radius, + 0.0, + sin(sector_angle) * radius, + ) + if ( + absf(candidate.x - chunk_center.x) > chunk_half_extent + or absf(candidate.z - chunk_center.z) > chunk_half_extent + ): + continue + var surface_height := _surface_height_at( + candidate, + terrain_triangles, + ) + if ( + surface_height <= WATER_HEIGHT + PROP_MINIMUM_GROUND_CLEARANCE + or not _has_prop_clearance(candidate, member_clearance) + ): + continue + candidate.y = surface_height + if _instantiate_prop( + definition, + candidate, + member_scale, + _prop_yaw( + definition, + ocean_facing_edges, + candidate, + random, + ), + chunk_coordinate, + biome_id, + cluster_id, + member_index, + random, + ): + break + return true + + +func _prop_visual_scales( + definition: TerrainPropDefinition, + count: int, + random: RandomNumberGenerator, +) -> Array[float]: + var result: Array[float] = [] + if count <= 1: + result.append( + random.randf_range( + definition.minimum_visual_scale, + definition.maximum_visual_scale, + ) + ) + return result + for index: int in count: + var descending_band := count - index - 1 + var band_minimum := lerpf( + definition.minimum_visual_scale, + definition.maximum_visual_scale, + float(descending_band) / float(count), + ) + var band_maximum := lerpf( + definition.minimum_visual_scale, + definition.maximum_visual_scale, + float(descending_band + 1) / float(count), + ) + result.append(random.randf_range(band_minimum, band_maximum)) + return result + + +func _instantiate_prop( + definition: TerrainPropDefinition, + placement: Vector3, + visual_scale: float, + yaw: float, + chunk_coordinate: Vector2i, + biome_id: StringName, + cluster_id: int, + cluster_member_index: int, + random: RandomNumberGenerator, +) -> bool: var packed_instance := definition.packed_scene.instantiate() var visual_root := packed_instance as Node3D if visual_root == null: @@ -522,8 +645,10 @@ func _add_prop( prop.set_meta(&"terrain_chunk_coordinate", chunk_coordinate) prop.set_meta(&"terrain_biome_id", biome_id) prop.set_meta(&"terrain_prop_visual_scale", visual_scale) + prop.set_meta(&"terrain_prop_cluster_id", cluster_id) + prop.set_meta(&"terrain_prop_cluster_member_index", cluster_member_index) prop.position = placement - prop.rotation.y = random.randf_range(-PI, PI) + prop.rotation.y = yaw _decorations.add_child(prop) visual_root.name = "Visual" prop.add_child(visual_root) @@ -533,7 +658,9 @@ func _add_prop( _apply_prop_material_variant(visual_root, definition, random) _add_prop_collision(prop, definition, visual_scale) _placed_prop_positions.append(placement) - _placed_prop_clearance_radii.append(scaled_clearance) + _placed_prop_clearance_radii.append( + definition.clearance_radius * visual_scale + ) _placed_prop_groups.append(definition.procedural_group) if definition.gatherable_anchor_height > 0.0: var anchor := Marker3D.new() @@ -547,6 +674,46 @@ func _add_prop( return true +func _prop_yaw( + definition: TerrainPropDefinition, + ocean_facing_edges: int, + placement: Vector3, + random: RandomNumberGenerator, +) -> float: + if not definition.prefer_ocean_facing: + return random.randf_range(-PI, PI) + var ocean_direction := Vector2.ZERO + for edge_value: int in TerrainChunkTopology.Edge.values(): + if (ocean_facing_edges & (1 << edge_value)) == 0: + continue + var edge_normal := TerrainChunkTopology.edge_normal( + edge_value as TerrainChunkTopology.Edge + ) + ocean_direction += Vector2(edge_normal.x, edge_normal.z) + if ocean_direction.is_zero_approx(): + ocean_direction = _nearest_ocean_direction(placement) + var local_direction := definition.local_overhang_direction.normalized() + var target_angle := atan2(ocean_direction.x, ocean_direction.y) + var local_angle := atan2(local_direction.x, local_direction.y) + var spread := deg_to_rad(definition.ocean_facing_spread_degrees) + return ( + target_angle + - local_angle + + random.randf_range(-spread, spread) + ) + + +func _nearest_ocean_direction(position: Vector3) -> Vector2: + var half_extents := get_playable_half_extents() + var distance_x := half_extents.x - absf(position.x) + var distance_z := half_extents.y - absf(position.z) + var direction_x := Vector2.RIGHT if position.x >= 0.0 else Vector2.LEFT + var direction_z := Vector2.DOWN if position.z >= 0.0 else Vector2.UP + if absf(distance_x - distance_z) <= _generator.catalog.chunk_size * 0.35: + return (direction_x + direction_z).normalized() + return direction_x if distance_x < distance_z else direction_z + + func _validate_prop_catalog() -> void: if prop_catalog == null: push_error("Generated world terrain prop catalog is unavailable.") @@ -776,6 +943,7 @@ func _ensure_minimum_props( record.get("position", Vector3.ZERO), coordinate, biome.stable_id, + int(record.get("ocean_facing_edges", 0)), random, terrain_triangles, ): @@ -819,17 +987,32 @@ func _apply_prop_material_variant( definition: TerrainPropDefinition, random: RandomNumberGenerator, ) -> void: - if ( - definition.material_variants.is_empty() - or definition.variant_material_slot_names.is_empty() - ): - return - var variant := definition.material_variants[ - random.randi_range(0, definition.material_variants.size() - 1) - ] - _apply_material_variant_to_meshes( + _apply_random_material_variant( root_node, definition.variant_material_slot_names, + definition.material_variants, + random, + ) + _apply_random_material_variant( + root_node, + definition.secondary_variant_material_slot_names, + definition.secondary_material_variants, + random, + ) + + +func _apply_random_material_variant( + root_node: Node, + target_material_names: PackedStringArray, + variants: Array[Material], + random: RandomNumberGenerator, +) -> void: + if variants.is_empty() or target_material_names.is_empty(): + return + var variant := variants[random.randi_range(0, variants.size() - 1)] + _apply_material_variant_to_meshes( + root_node, + target_material_names, variant, ) diff --git a/world/generation/props/assets/prop_pine_large.glb b/world/generation/props/assets/prop_pine_large.glb new file mode 100644 index 0000000000000000000000000000000000000000..99c9cd46061fb8f2b8f7dfc2d1db77f582d226a1 GIT binary patch literal 9624 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 M19X}U%nYpl4TObVTL1t6 literal 0 HcmV?d00001 diff --git a/world/generation/props/assets/prop_pine_large.glb.import b/world/generation/props/assets/prop_pine_large.glb.import new file mode 100644 index 0000000..08db8fb --- /dev/null +++ b/world/generation/props/assets/prop_pine_large.glb.import @@ -0,0 +1,45 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bsislktcsck1y" +path="res://.godot/imported/prop_pine_large.glb-97f0e7e162a6a624faaf2cc023211d3e.scn" + +[deps] + +source_file="res://world/generation/props/assets/prop_pine_large.glb" +dest_files=["res://.godot/imported/prop_pine_large.glb-97f0e7e162a6a624faaf2cc023211d3e.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 +gltf/texture_map_mode=1 diff --git a/world/generation/props/assets/prop_tree_large.glb b/world/generation/props/assets/prop_tree_large.glb new file mode 100644 index 0000000000000000000000000000000000000000..7cf2c4fd795ba2ba0fe605e4012e7ec9063ef2e5 GIT binary patch literal 4304 zcmd5;c~}(Z86Oc{P%cFdm17;N5?R){4`jb@5wYTh!829F1x8r|yJUCqD5098KGc}R zsA)}}#u}|hwI1=RQJ5J#aw3{08gf+=pQIQ~LSodUNlf2aNf_i2<3D{0&-~^$?>F!J zz1R27&M%)jCWIh}(=i0GE{q_?P062BO}hMkB|v6Ylk*ji;&TPOJ~ERWU*_|AyngF^ zP_d3GS3ISP&zd(P-@1^uGj>)cZRA45=XZNO@G@hk$Qm2zF98E&Ce_CLWag}D(&MTC z8961mW+Oe`QpH%H3Tq16pQ_0U#a|XwZF|4c=dCOX_!On6+~u3Ez;-@wz!eDYH;b}! ztSHbNCsHCqF)~eawhYS7^E}5e6eUrt$O|HEYZK8DBQp#uu#5zvo2mjWi!3cuEDdh> zOI+pPq0~`BFl@M#0EpDa0L{f+f{xu>QZl2ak(zs#ffLA#nPcKMYYZ@Jeu##Ium z1_VsWl*GbC@ifCjEIdR)@v-Oj0?tNyZJgZ$h% z6QMKg6vY_6_}mrlfO}!v3$8%G=Ps@a7?0KDnM{q1bbCtOC58$MiD@eu=olHfok7k<{$!BvXizX46wLeKz%iDoEGA~fPErYhxGDFFXB=bBaO3)`t1|=Ffb;BW@1qX!V1s=`< z#Y)irpcXtdoJh+&EekZ*W?48$tX+~sqp>7fmL#6xIj|83dPq*s&0*oFLywvwfh6B4 zlCIR5yHRI4?G9z^yn9d>%p(hVY}VY z1c9}&c7|sKSzsuZVQC3k+(;iJnPz2?f@~Y-u)PAo*J**Fp%63&W5$-j*ab?GSdOQ7 z3iL%mvSrA2##k0)D6K?sf?=Vn1VT^VDS)ojgQ4EO5smoU)jQ`Oy1w)7?fHi({j>g0 z1%PIY@kaFWy-t^0udjb(ruZ{c$exahSE;sab^=j(^{A77uomu{2(JUORcGp@PF4vj)c(+$AY*?&W!h6-5 zdCd5w+JX3$^?i?C?qJg_H{1VT?hEyRzh(IU_1=T%NyHF6;EDzpLx>2#2%;BZA;O7R zz*wRW(VYk-q5z|aNFt2rM)U^kP4p$MM#t-^#fi?ejnC_5{=?w2xM+WGr}dc)x|t8@ zeM<8_+|610#kczUW&7~wfBpbBPWw*()274PA-Pd|clZr`ZSzaG?DN&y?~=dOuZMiE zjoo6^cXL}i@MG&joaev(PO}{Pi*DxUuD58qxEy6PSsK1fOLo@A-Ovu@p4B}YccG!P zQ*>*|st&wK=%qW7QuVW&KGd^MQO*rdf9Yt9eXIljV(%FJbbqTF_SsXqnKu@uX~VXY z&b`mA)XjY44?Uen<_vVM8vUN$LjAse*qaefJjT+{l6#Ln^8H-r?38Bxvz?#dxtUwg zTPc=?+Tq!brav@kC%0G{78RUTpUj%<{ABVwx)ilGtL5W8=o@>#hSBeBMMJI+)n`t7 zUr%^>oT_(QU4JcQfxc+>Xy@s|rRcS|X8ja9Szk8q^{l|E5A+*U*%{wEo>y)HzxJVZ* zTJ7Au>Ztd6)#tQst$Vz2DIQp`1i!lC3CG3}g=+oQfOcf3P(S^Lwd(oiOGv$tj*q@D z6hE2~jhiEQGV*i~efIVHci9BTtKXTS6h)watcGzj+uf3Y~&0KO2HlpUuHe zeHB{p%o6@Bf8}vZYy94otvnLmCkk6^mQq*P?xTF5WQlnB(M)F?iY0GmcSX z{dmLhX0)387HvDf9OXV$ik-i0&6@k_AWXPEMi*BO!KXKWg06+k!LKY#z;#={Mq}5% zi1IFlp_S3ac=;QlIPF?Ao_pW>j&o5qtiRNN`kyU;nHWbT!MsT# z`U49g5&#q6DG9I#U=Jb@R+5642s0=YSTbNTOsGUy9RN50o{|AAfEHpPtRx3!0-P82I7t* literal 0 HcmV?d00001 diff --git a/world/generation/props/assets/prop_tree_large.glb.import b/world/generation/props/assets/prop_tree_large.glb.import new file mode 100644 index 0000000..2b5f6fd --- /dev/null +++ b/world/generation/props/assets/prop_tree_large.glb.import @@ -0,0 +1,45 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://c46jcb2vo2fd" +path="res://.godot/imported/prop_tree_large.glb-0a4ab94061e4876be025fa3d63aa7bd8.scn" + +[deps] + +source_file="res://world/generation/props/assets/prop_tree_large.glb" +dest_files=["res://.godot/imported/prop_tree_large.glb-0a4ab94061e4876be025fa3d63aa7bd8.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 +gltf/texture_map_mode=1 diff --git a/world/generation/props/definitions/prop_palm.tres b/world/generation/props/definitions/prop_palm.tres index 80f2193..4d1d344 100644 --- a/world/generation/props/definitions/prop_palm.tres +++ b/world/generation/props/definitions/prop_palm.tres @@ -11,6 +11,15 @@ packed_scene = ExtResource("2_scene") procedural_group = &"sand_tree" required_chunk_tags = PackedStringArray("sand") minimum_spawn_chunk_distance = 2 -clearance_radius = 2.0 +clearance_radius = 0.65 +minimum_visual_scale = 0.5 +maximum_visual_scale = 1.0 +minimum_cluster_size = 2 +maximum_cluster_size = 3 +minimum_cluster_radius = 1.4 +maximum_cluster_radius = 3.0 +prefer_ocean_facing = true +local_overhang_direction = Vector2(-0.883, 0.469) +ocean_facing_spread_degrees = 55.0 collision_radius = 0.4 collision_height = 6.0 diff --git a/world/generation/props/definitions/prop_pine.tres b/world/generation/props/definitions/prop_pine.tres index 0a569cf..aa5a638 100644 --- a/world/generation/props/definitions/prop_pine.tres +++ b/world/generation/props/definitions/prop_pine.tres @@ -6,15 +6,15 @@ [resource] script = ExtResource("1_definition") stable_id = &"prop_pine" -label = "pine" +label = "small pine" packed_scene = ExtResource("2_scene") procedural_group = &"grass_tree" required_chunk_tags = PackedStringArray("grass") selection_weight = 0.7 minimum_spawn_chunk_distance = 2 clearance_radius = 1.55 -minimum_visual_scale = 0.75 -maximum_visual_scale = 1.22 +minimum_visual_scale = 0.65 +maximum_visual_scale = 1.2 collision_radius = 0.5 collision_height = 4.0 gatherable_anchor_height = 2.15 diff --git a/world/generation/props/definitions/prop_pine_large.tres b/world/generation/props/definitions/prop_pine_large.tres new file mode 100644 index 0000000..05e4d2d --- /dev/null +++ b/world/generation/props/definitions/prop_pine_large.tres @@ -0,0 +1,20 @@ +[gd_resource type="Resource" script_class="TerrainPropDefinition" load_steps=3 format=3] + +[ext_resource type="Script" path="res://world/generation/terrain_prop_definition.gd" id="1_definition"] +[ext_resource type="PackedScene" path="res://world/generation/props/assets/prop_pine_large.glb" id="2_scene"] + +[resource] +script = ExtResource("1_definition") +stable_id = &"prop_pine_large" +label = "large pine" +packed_scene = ExtResource("2_scene") +procedural_group = &"grass_tree" +required_chunk_tags = PackedStringArray("grass") +selection_weight = 3.0 +minimum_spawn_chunk_distance = 2 +clearance_radius = 1.65 +minimum_visual_scale = 0.75 +maximum_visual_scale = 1.2 +collision_radius = 0.65 +collision_height = 9.5 +gatherable_anchor_height = 2.15 diff --git a/world/generation/props/definitions/prop_tree_1.tres b/world/generation/props/definitions/prop_tree_1.tres index 41ab406..bb5d2af 100644 --- a/world/generation/props/definitions/prop_tree_1.tres +++ b/world/generation/props/definitions/prop_tree_1.tres @@ -1,24 +1,30 @@ -[gd_resource type="Resource" script_class="TerrainPropDefinition" load_steps=6 format=3] +[gd_resource type="Resource" script_class="TerrainPropDefinition" load_steps=9 format=3] [ext_resource type="Script" path="res://world/generation/terrain_prop_definition.gd" id="1_definition"] [ext_resource type="PackedScene" path="res://world/generation/props/assets/prop_tree_1.glb" id="2_scene"] [ext_resource type="Material" path="res://world/generation/props/materials/leaf_light.tres" id="3_leaf_light"] [ext_resource type="Material" path="res://world/generation/props/materials/leaf_mid.tres" id="4_leaf_mid"] [ext_resource type="Material" path="res://world/generation/props/materials/leaf_dark.tres" id="5_leaf_dark"] +[ext_resource type="Material" path="res://world/generation/props/materials/wood_light.tres" id="6_wood_light"] +[ext_resource type="Material" path="res://world/generation/props/materials/wood_mid.tres" id="7_wood_mid"] +[ext_resource type="Material" path="res://world/generation/props/materials/wood_dark.tres" id="8_wood_dark"] [resource] script = ExtResource("1_definition") stable_id = &"prop_tree_1" -label = "small tree" +label = "small deciduous tree" packed_scene = ExtResource("2_scene") procedural_group = &"grass_tree" required_chunk_tags = PackedStringArray("grass") +selection_weight = 1.0 minimum_spawn_chunk_distance = 2 clearance_radius = 1.3 -minimum_visual_scale = 0.75 -maximum_visual_scale = 1.15 +minimum_visual_scale = 0.65 +maximum_visual_scale = 1.2 variant_material_slot_names = PackedStringArray("leaf_light", "leaf", "leaf_dark") material_variants = Array[Material]([ExtResource("3_leaf_light"), ExtResource("4_leaf_mid"), ExtResource("5_leaf_dark")]) +secondary_variant_material_slot_names = PackedStringArray("wood", "wood_light", "wood_mid") +secondary_material_variants = Array[Material]([ExtResource("6_wood_light"), ExtResource("7_wood_mid"), ExtResource("8_wood_dark")]) collision_radius = 0.4 collision_height = 3.2 gatherable_anchor_height = 2.15 diff --git a/world/generation/props/definitions/prop_tree_2.tres b/world/generation/props/definitions/prop_tree_2.tres index c4d09fa..a6931be 100644 --- a/world/generation/props/definitions/prop_tree_2.tres +++ b/world/generation/props/definitions/prop_tree_2.tres @@ -1,24 +1,30 @@ -[gd_resource type="Resource" script_class="TerrainPropDefinition" load_steps=6 format=3] +[gd_resource type="Resource" script_class="TerrainPropDefinition" load_steps=9 format=3] [ext_resource type="Script" path="res://world/generation/terrain_prop_definition.gd" id="1_definition"] [ext_resource type="PackedScene" path="res://world/generation/props/assets/prop_tree_2.glb" id="2_scene"] [ext_resource type="Material" path="res://world/generation/props/materials/leaf_light.tres" id="3_leaf_light"] [ext_resource type="Material" path="res://world/generation/props/materials/leaf_mid.tres" id="4_leaf_mid"] [ext_resource type="Material" path="res://world/generation/props/materials/leaf_dark.tres" id="5_leaf_dark"] +[ext_resource type="Material" path="res://world/generation/props/materials/wood_light.tres" id="6_wood_light"] +[ext_resource type="Material" path="res://world/generation/props/materials/wood_mid.tres" id="7_wood_mid"] +[ext_resource type="Material" path="res://world/generation/props/materials/wood_dark.tres" id="8_wood_dark"] [resource] script = ExtResource("1_definition") stable_id = &"prop_tree_2" -label = "medium tree" +label = "medium deciduous tree" packed_scene = ExtResource("2_scene") procedural_group = &"grass_tree" required_chunk_tags = PackedStringArray("grass") +selection_weight = 1.0 minimum_spawn_chunk_distance = 2 clearance_radius = 1.5 -minimum_visual_scale = 0.8 -maximum_visual_scale = 1.18 +minimum_visual_scale = 0.7 +maximum_visual_scale = 1.2 variant_material_slot_names = PackedStringArray("leaf_light", "leaf", "leaf_dark") material_variants = Array[Material]([ExtResource("3_leaf_light"), ExtResource("4_leaf_mid"), ExtResource("5_leaf_dark")]) +secondary_variant_material_slot_names = PackedStringArray("wood", "wood_light", "wood_mid") +secondary_material_variants = Array[Material]([ExtResource("6_wood_light"), ExtResource("7_wood_mid"), ExtResource("8_wood_dark")]) collision_radius = 0.5 collision_height = 3.8 gatherable_anchor_height = 2.15 diff --git a/world/generation/props/definitions/prop_tree_3.tres b/world/generation/props/definitions/prop_tree_3.tres index 642a8de..382117e 100644 --- a/world/generation/props/definitions/prop_tree_3.tres +++ b/world/generation/props/definitions/prop_tree_3.tres @@ -1,24 +1,30 @@ -[gd_resource type="Resource" script_class="TerrainPropDefinition" load_steps=6 format=3] +[gd_resource type="Resource" script_class="TerrainPropDefinition" load_steps=9 format=3] [ext_resource type="Script" path="res://world/generation/terrain_prop_definition.gd" id="1_definition"] [ext_resource type="PackedScene" path="res://world/generation/props/assets/prop_tree_3.glb" id="2_scene"] [ext_resource type="Material" path="res://world/generation/props/materials/leaf_light.tres" id="3_leaf_light"] [ext_resource type="Material" path="res://world/generation/props/materials/leaf_mid.tres" id="4_leaf_mid"] [ext_resource type="Material" path="res://world/generation/props/materials/leaf_dark.tres" id="5_leaf_dark"] +[ext_resource type="Material" path="res://world/generation/props/materials/wood_light.tres" id="6_wood_light"] +[ext_resource type="Material" path="res://world/generation/props/materials/wood_mid.tres" id="7_wood_mid"] +[ext_resource type="Material" path="res://world/generation/props/materials/wood_dark.tres" id="8_wood_dark"] [resource] script = ExtResource("1_definition") stable_id = &"prop_tree_3" -label = "large tree" +label = "decorative deciduous tree" packed_scene = ExtResource("2_scene") procedural_group = &"grass_tree" required_chunk_tags = PackedStringArray("grass") +selection_weight = 1.0 minimum_spawn_chunk_distance = 2 clearance_radius = 1.8 -minimum_visual_scale = 0.85 -maximum_visual_scale = 1.15 +minimum_visual_scale = 0.7 +maximum_visual_scale = 1.2 variant_material_slot_names = PackedStringArray("leaf_light", "leaf", "leaf_dark") material_variants = Array[Material]([ExtResource("3_leaf_light"), ExtResource("4_leaf_mid"), ExtResource("5_leaf_dark")]) +secondary_variant_material_slot_names = PackedStringArray("wood", "wood_light", "wood_mid") +secondary_material_variants = Array[Material]([ExtResource("6_wood_light"), ExtResource("7_wood_mid"), ExtResource("8_wood_dark")]) collision_radius = 0.55 collision_height = 4.2 gatherable_anchor_height = 2.15 diff --git a/world/generation/props/definitions/prop_tree_large.tres b/world/generation/props/definitions/prop_tree_large.tres new file mode 100644 index 0000000..b902944 --- /dev/null +++ b/world/generation/props/definitions/prop_tree_large.tres @@ -0,0 +1,30 @@ +[gd_resource type="Resource" script_class="TerrainPropDefinition" load_steps=9 format=3] + +[ext_resource type="Script" path="res://world/generation/terrain_prop_definition.gd" id="1_definition"] +[ext_resource type="PackedScene" path="res://world/generation/props/assets/prop_tree_large.glb" id="2_scene"] +[ext_resource type="Material" path="res://world/generation/props/materials/leaf_light.tres" id="3_leaf_light"] +[ext_resource type="Material" path="res://world/generation/props/materials/leaf_mid.tres" id="4_leaf_mid"] +[ext_resource type="Material" path="res://world/generation/props/materials/leaf_dark.tres" id="5_leaf_dark"] +[ext_resource type="Material" path="res://world/generation/props/materials/wood_light.tres" id="6_wood_light"] +[ext_resource type="Material" path="res://world/generation/props/materials/wood_mid.tres" id="7_wood_mid"] +[ext_resource type="Material" path="res://world/generation/props/materials/wood_dark.tres" id="8_wood_dark"] + +[resource] +script = ExtResource("1_definition") +stable_id = &"prop_tree_large" +label = "large deciduous tree" +packed_scene = ExtResource("2_scene") +procedural_group = &"grass_tree" +required_chunk_tags = PackedStringArray("grass") +selection_weight = 12.0 +minimum_spawn_chunk_distance = 2 +clearance_radius = 2.5 +minimum_visual_scale = 0.75 +maximum_visual_scale = 1.2 +variant_material_slot_names = PackedStringArray("leaf_light", "leaf", "leaf_dark") +material_variants = Array[Material]([ExtResource("3_leaf_light"), ExtResource("4_leaf_mid"), ExtResource("5_leaf_dark")]) +secondary_variant_material_slot_names = PackedStringArray("wood", "wood_light", "wood_mid") +secondary_material_variants = Array[Material]([ExtResource("6_wood_light"), ExtResource("7_wood_mid"), ExtResource("8_wood_dark")]) +collision_radius = 0.85 +collision_height = 7.5 +gatherable_anchor_height = 2.15 diff --git a/world/generation/props/materials/wood_dark.tres b/world/generation/props/materials/wood_dark.tres new file mode 100644 index 0000000..dc810b1 --- /dev/null +++ b/world/generation/props/materials/wood_dark.tres @@ -0,0 +1,9 @@ +[gd_resource type="StandardMaterial3D" format=3] + +[resource] +resource_name = "wood_variant_dark" +albedo_color = Color(0.163, 0.139, 0.0254, 1) +metallic = 0.0 +roughness = 1.0 +shading_mode = 1 +texture_filter = 0 diff --git a/world/generation/props/materials/wood_light.tres b/world/generation/props/materials/wood_light.tres new file mode 100644 index 0000000..ec4b63f --- /dev/null +++ b/world/generation/props/materials/wood_light.tres @@ -0,0 +1,9 @@ +[gd_resource type="StandardMaterial3D" format=3] + +[resource] +resource_name = "wood_variant_light" +albedo_color = Color(0.644, 0.563, 0.356, 1) +metallic = 0.0 +roughness = 1.0 +shading_mode = 1 +texture_filter = 0 diff --git a/world/generation/props/materials/wood_mid.tres b/world/generation/props/materials/wood_mid.tres new file mode 100644 index 0000000..894f446 --- /dev/null +++ b/world/generation/props/materials/wood_mid.tres @@ -0,0 +1,9 @@ +[gd_resource type="StandardMaterial3D" format=3] + +[resource] +resource_name = "wood_variant_mid" +albedo_color = Color(0.333, 0.271, 0.114, 1) +metallic = 0.0 +roughness = 1.0 +shading_mode = 1 +texture_filter = 0 diff --git a/world/generation/props/terrain_prop_catalog.tres b/world/generation/props/terrain_prop_catalog.tres index f6fd1dd..12c9b51 100644 --- a/world/generation/props/terrain_prop_catalog.tres +++ b/world/generation/props/terrain_prop_catalog.tres @@ -1,4 +1,4 @@ -[gd_resource type="Resource" script_class="TerrainPropCatalog" load_steps=16 format=3] +[gd_resource type="Resource" script_class="TerrainPropCatalog" load_steps=18 format=3] [ext_resource type="Script" path="res://world/generation/terrain_prop_catalog.gd" id="1_catalog"] [ext_resource type="Resource" path="res://world/generation/props/definitions/prop_bridge.tres" id="2_bridge"] @@ -15,7 +15,9 @@ [ext_resource type="Resource" path="res://world/generation/props/definitions/prop_tree_2.tres" id="13_tree_2"] [ext_resource type="Resource" path="res://world/generation/props/definitions/prop_tree_3.tres" id="14_tree_3"] [ext_resource type="Script" path="res://world/generation/terrain_prop_definition.gd" id="15_definition_script"] +[ext_resource type="Resource" path="res://world/generation/props/definitions/prop_tree_large.tres" id="16_tree_large"] +[ext_resource type="Resource" path="res://world/generation/props/definitions/prop_pine_large.tres" id="17_pine_large"] [resource] script = ExtResource("1_catalog") -definitions = Array[ExtResource("15_definition_script")]([ExtResource("2_bridge"), ExtResource("3_dock"), ExtResource("4_log"), ExtResource("5_post_1"), ExtResource("6_post_2"), ExtResource("7_mushroom"), ExtResource("8_palm"), ExtResource("9_pine"), ExtResource("10_timber_1"), ExtResource("11_timber_2"), ExtResource("12_tree_1"), ExtResource("13_tree_2"), ExtResource("14_tree_3")]) +definitions = Array[ExtResource("15_definition_script")]([ExtResource("2_bridge"), ExtResource("3_dock"), ExtResource("4_log"), ExtResource("5_post_1"), ExtResource("6_post_2"), ExtResource("7_mushroom"), ExtResource("8_palm"), ExtResource("9_pine"), ExtResource("10_timber_1"), ExtResource("11_timber_2"), ExtResource("12_tree_1"), ExtResource("13_tree_2"), ExtResource("14_tree_3"), ExtResource("16_tree_large"), ExtResource("17_pine_large")]) diff --git a/world/generation/terrain_chunk_generator.gd b/world/generation/terrain_chunk_generator.gd index 8f6235d..6555568 100644 --- a/world/generation/terrain_chunk_generator.gd +++ b/world/generation/terrain_chunk_generator.gd @@ -34,6 +34,11 @@ const MAX_PACKED_SOLVER_VARIANTS := 62 @export var elevated_cliff_edge_chunk_id: StringName = &"chunk_0011" @export var elevated_cliff_ramp_chunk_id: StringName = &"chunk_0012" @export_range(0.0, 1.0, 0.05) var elevated_cliff_ramp_chance := 0.75 +## A smaller third tier reuses the existing corner geometry at the authored +## two-meter level interval. It is nested into the lower cliff assembly rather +## than occupying or replacing additional terrain-grid cells. +@export_range(0.0, 1.0, 0.05) var elevated_cliff_third_level_chance := 0.7 +@export_range(0.1, 10.0, 0.1) var elevated_cliff_level_height := 2.0 @export_group("") @export_range(1.0, 100.0, 1.0) var required_chunk_weight_multiplier := 64.0 @export_range(1.0, 4.0, 0.05) var preferred_neighbor_weight_multiplier := 1.6 @@ -68,6 +73,7 @@ var _generated_chunks: Node3D var _backtrack_count := 0 var _elevated_feature_center := Vector2i(-1, -1) var _elevated_feature_reserved_grass_indices: Dictionary[int, bool] = {} +var _stacked_elevated_placements: Array[Dictionary] = [] func _ready() -> void: @@ -100,6 +106,9 @@ func generate() -> bool: if not _apply_elevated_feature(): _assign_placements(previous_placements) return false + if not _configure_stacked_elevated_feature(): + _assign_placements(previous_placements) + return false var solution_root := _build_solution_root() if solution_root == null: _assign_placements(previous_placements) @@ -138,6 +147,9 @@ func generate_from_placement_keys(keys: PackedStringArray) -> bool: previous_placements.assign(_placements) _assign_placements(resolved) _backtrack_count = 0 + if not _configure_stacked_elevated_feature(): + _assign_placements(previous_placements) + return false var solution_root := _build_solution_root() if solution_root == null: _assign_placements(previous_placements) @@ -1184,6 +1196,7 @@ func _candidate_can_occupy_cell( func _prepare_elevated_feature_region() -> bool: _elevated_feature_center = Vector2i(-1, -1) _elevated_feature_reserved_grass_indices.clear() + _stacked_elevated_placements.clear() if not elevated_cliff_feature_enabled: _build_grid_solver_caches() return true @@ -1439,6 +1452,65 @@ func _apply_elevated_feature() -> bool: return true +func _configure_stacked_elevated_feature() -> bool: + _stacked_elevated_placements.clear() + if ( + not elevated_cliff_feature_enabled + or elevated_cliff_third_level_chance <= 0.0 + ): + return true + var top_coordinate := Vector2i(-1, -1) + for index: int in _placements.size(): + var placement := _placements[index] + if ( + placement != null + and placement.definition.stable_id == elevated_cliff_top_chunk_id + ): + top_coordinate = Vector2i(index % grid_size.x, index / grid_size.x) + break + if top_coordinate.x < 0: + return true + var stack_random := RandomNumberGenerator.new() + stack_random.seed = generation_seed ^ 0x7312DC11F + if stack_random.randf() >= elevated_cliff_third_level_chance: + return true + var corner_definition := catalog.definition_for_id( + elevated_cliff_corner_chunk_id + ) + if corner_definition == null: + push_error( + "Stacked cliff feature references missing corner chunk %s." + % elevated_cliff_corner_chunk_id + ) + return false + # Four nearly half-cell-offset corners form a closed 2x2 ring. A slight + # inward overlap keeps the authored curved feet fully seated on the lower + # plateau instead of exposing a hairline gap at its outermost vertices. + var specs: Array[Dictionary] = [ + {"offset": Vector2(-0.45, -0.45), "turns": 2}, + {"offset": Vector2(0.45, -0.45), "turns": 1}, + {"offset": Vector2(-0.45, 0.45), "turns": 3}, + {"offset": Vector2(0.45, 0.45), "turns": 0}, + ] + for spec: Dictionary in specs: + var variant := _authored_variant( + corner_definition, + int(spec["turns"]), + ) + if variant == null: + push_error( + "Stacked cliff feature cannot resolve %s rotation %d." + % [elevated_cliff_corner_chunk_id, spec["turns"]] + ) + return false + _stacked_elevated_placements.append({ + "support_coordinate": top_coordinate, + "offset": spec["offset"], + "variant": variant, + }) + return true + + func _variant_respects_ocean_boundary( variant: TerrainChunkVariant, coordinate: Vector2i, @@ -2040,9 +2112,74 @@ func _build_solution_root() -> Node3D: _add_collision(chunk_root, variant.definition) if show_chunk_labels: _add_chunk_label(chunk_root, variant) + if not _add_stacked_elevated_chunks(solution_root): + solution_root.free() + return null return solution_root +func _add_stacked_elevated_chunks(solution_root: Node3D) -> bool: + for index: int in _stacked_elevated_placements.size(): + var record := _stacked_elevated_placements[index] + var variant := record.get("variant") as TerrainChunkVariant + var support_coordinate: Vector2i = record.get( + "support_coordinate", + Vector2i(-1, -1), + ) + var support_root := _find_chunk_root_for_coordinate( + solution_root, + support_coordinate, + ) + if variant == null or support_root == null: + push_error("Stacked cliff feature lost its supporting terrain cell.") + return false + var stacked_root := variant.definition.packed_scene.instantiate() as Node3D + if stacked_root == null: + push_error( + "%s does not instantiate as a stacked Node3D." + % variant.stable_key() + ) + return false + stacked_root.name = "Stacked_%s_%d" % [ + variant.stable_key().replace("@", "r"), + index, + ] + var offset: Vector2 = record.get("offset", Vector2.ZERO) + stacked_root.position = Vector3( + offset.x * catalog.chunk_size, + elevated_cliff_level_height, + offset.y * catalog.chunk_size, + ) + stacked_root.rotation.y = variant.rotation_radians() + stacked_root.set_meta(&"terrain_stacked_elevation", true) + stacked_root.set_meta( + &"terrain_chunk_id", + variant.definition.stable_id, + ) + stacked_root.set_meta( + &"terrain_chunk_coordinate", + support_coordinate, + ) + support_root.add_child(stacked_root) + if build_collision: + _add_collision(stacked_root, variant.definition) + if show_chunk_labels: + _add_chunk_label(stacked_root, variant) + return true + + +func _find_chunk_root_for_coordinate( + solution_root: Node3D, + coordinate: Vector2i, +) -> Node3D: + for child: Node in solution_root.get_children(): + if child.get_meta(&"terrain_chunk_coordinate", Vector2i(-1, -1)) == ( + coordinate + ): + return child as Node3D + return null + + func _instantiate_chunk_root( definition: TerrainChunkDefinition, ) -> Node3D: @@ -2171,6 +2308,7 @@ func _build_summary() -> Dictionary: "counts": counts, "variant_counts": variant_counts, "placements": placement_keys(), + "stacked_elevated_placements": stacked_elevated_placement_keys(), "layout_fingerprint": placement_fingerprint(), } @@ -2214,9 +2352,29 @@ func placement_fingerprint() -> String: "chunk_size:%.6f" % (catalog.chunk_size if catalog != null else 0.0), ]) fingerprint_input.append_array(placement_keys()) + fingerprint_input.append_array(stacked_elevated_placement_keys()) return "\n".join(fingerprint_input).sha256_text() +func stacked_elevated_placement_keys() -> PackedStringArray: + var result := PackedStringArray() + for record: Dictionary in _stacked_elevated_placements: + var variant := record.get("variant") as TerrainChunkVariant + var offset: Vector2 = record.get("offset", Vector2.ZERO) + if variant == null: + continue + result.append( + "%s@%.2f,%.2f,+%.2fm" + % [ + variant.stable_key(), + offset.x, + offset.y, + elevated_cliff_level_height, + ] + ) + return result + + func placement_records() -> Array[Dictionary]: var result: Array[Dictionary] = [] for index: int in _placements.size(): @@ -2276,4 +2434,18 @@ func get_primary_terrain_meshes() -> Array[MeshInstance3D]: ) if primary_mesh != null and primary_mesh.mesh != null: result.append(primary_mesh) + for child: Node in chunk_root.get_children(): + if not bool(child.get_meta(&"terrain_stacked_elevation", false)): + continue + var definition := catalog.definition_for_id( + StringName(child.get_meta(&"terrain_chunk_id", &"")) + ) + if definition == null: + continue + var stacked_mesh := TerrainChunkAnalyzer.find_primary_mesh( + child, + definition.primary_mesh_name, + ) + if stacked_mesh != null and stacked_mesh.mesh != null: + result.append(stacked_mesh) return result diff --git a/world/generation/terrain_prop_catalog.gd b/world/generation/terrain_prop_catalog.gd index e73fbe0..0bc1ca7 100644 --- a/world/generation/terrain_prop_catalog.gd +++ b/world/generation/terrain_prop_catalog.gd @@ -87,6 +87,23 @@ func validation_errors() -> PackedStringArray: "%s has an inverted visual scale range." % definition.stable_id ) + if definition.minimum_cluster_size > definition.maximum_cluster_size: + errors.append( + "%s has an inverted cluster size range." + % definition.stable_id + ) + if ( + definition.maximum_cluster_size > 1 + and ( + definition.minimum_cluster_radius <= 0.0 + or definition.minimum_cluster_radius + > definition.maximum_cluster_radius + ) + ): + errors.append( + "%s has an invalid loose-cluster radius." + % definition.stable_id + ) if ( not definition.material_variants.is_empty() and definition.variant_material_slot_names.is_empty() @@ -101,4 +118,26 @@ func validation_errors() -> PackedStringArray: "%s contains an empty material variant." % definition.stable_id ) + if ( + not definition.secondary_material_variants.is_empty() + and definition.secondary_variant_material_slot_names.is_empty() + ): + errors.append( + "%s has secondary variants but no target material slots." + % definition.stable_id + ) + for material: Material in definition.secondary_material_variants: + if material == null: + errors.append( + "%s contains an empty secondary material variant." + % definition.stable_id + ) + if ( + definition.prefer_ocean_facing + and definition.local_overhang_direction.is_zero_approx() + ): + errors.append( + "%s prefers the ocean but has no local overhang direction." + % definition.stable_id + ) return errors diff --git a/world/generation/terrain_prop_definition.gd b/world/generation/terrain_prop_definition.gd index f6e73ae..bfe3677 100644 --- a/world/generation/terrain_prop_definition.gd +++ b/world/generation/terrain_prop_definition.gd @@ -21,12 +21,28 @@ extends Resource ## Procedural instances use a deterministic uniform scale in this range. @export_range(0.1, 4.0, 0.05) var minimum_visual_scale := 1.0 @export_range(0.1, 4.0, 0.05) var maximum_visual_scale := 1.0 +## Values above one create a loose group of separately anchored instances. +## Cluster members are distributed across the configured scale range so a +## three-member cluster naturally contains a small, medium, and large prop. +@export_range(1, 4, 1) var minimum_cluster_size := 1 +@export_range(1, 4, 1) var maximum_cluster_size := 1 +@export_range(0.0, 10.0, 0.05) var minimum_cluster_radius := 0.0 +@export_range(0.0, 10.0, 0.05) var maximum_cluster_radius := 0.0 ## Presentation-only offset. The prop root remains exactly terrain-aligned. @export var visual_offset := Vector3.ZERO ## A single material is chosen per prop and applied only to matching imported ## material slots. This keeps trunks untouched while varying foliage. @export var variant_material_slot_names := PackedStringArray() @export var material_variants: Array[Material] = [] +## An independent second material channel, used when both foliage and wood +## should vary without coupling their color choices. +@export var secondary_variant_material_slot_names := PackedStringArray() +@export var secondary_material_variants: Array[Material] = [] +## Some asymmetric props can loosely face an authored ocean edge. The local +## direction describes the model's natural overhang in Godot X/Z space. +@export var prefer_ocean_facing := false +@export var local_overhang_direction := Vector2(0.0, -1.0) +@export_range(0.0, 180.0, 1.0) var ocean_facing_spread_degrees := 45.0 @export_range(0.0, 5.0, 0.05) var collision_radius := 0.0 @export_range(0.0, 20.0, 0.05) var collision_height := 0.0 @export var collision_box_size := Vector3.ZERO From f45550e46b8ac08ab8446c2f62c13e11f25c51e3 Mon Sep 17 00:00:00 2001 From: Voyager Date: Fri, 21 Aug 2026 16:39:33 -0400 Subject: [PATCH 12/90] Remove superseded contributor material --- docs/ATTRIBUTION.md | 230 +++++------------- items/icons/equipment/64_cooler_plus.png | Bin 3149 -> 0 bytes .../icons/equipment/64_cooler_plus.png.import | 40 --- items/icons/shop/64_power_plus.png | Bin 3012 -> 0 bytes items/icons/shop/64_power_plus.png.import | 40 --- items/icons/shop/64_speed_plus.png | Bin 2347 -> 0 bytes items/icons/shop/64_speed_plus.png.import | 40 --- player/animalese_voice_profiles.gd | 12 +- scripts/import_animalese_voice.sh | 2 +- scripts/run_validations.sh | 2 +- scripts/validate_animalese_samples.gd | 10 +- sound/dialogue/animalese/alphanumeric/0.wav | Bin 15140 -> 0 bytes .../animalese/alphanumeric/0.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/1.wav | Bin 15140 -> 0 bytes .../animalese/alphanumeric/1.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/2.wav | Bin 15464 -> 0 bytes .../animalese/alphanumeric/2.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/3.wav | Bin 15464 -> 0 bytes .../animalese/alphanumeric/3.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/4.wav | Bin 15464 -> 0 bytes .../animalese/alphanumeric/4.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/5.wav | Bin 15464 -> 0 bytes .../animalese/alphanumeric/5.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/6.wav | Bin 16520 -> 0 bytes .../animalese/alphanumeric/6.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/7.wav | Bin 16520 -> 0 bytes .../animalese/alphanumeric/7.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/8.wav | Bin 14828 -> 0 bytes .../animalese/alphanumeric/8.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/9.wav | Bin 16460 -> 0 bytes .../animalese/alphanumeric/9.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/a.wav | Bin 15344 -> 0 bytes .../animalese/alphanumeric/a.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/b.wav | Bin 18020 -> 0 bytes .../animalese/alphanumeric/b.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/c.wav | Bin 18020 -> 0 bytes .../animalese/alphanumeric/c.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/d.wav | Bin 18020 -> 0 bytes .../animalese/alphanumeric/d.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/e.wav | Bin 16064 -> 0 bytes .../animalese/alphanumeric/e.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/f.wav | Bin 16064 -> 0 bytes .../animalese/alphanumeric/f.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/g.wav | Bin 15620 -> 0 bytes .../animalese/alphanumeric/g.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/h.wav | Bin 15620 -> 0 bytes .../animalese/alphanumeric/h.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/i.wav | Bin 14552 -> 0 bytes .../animalese/alphanumeric/i.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/j.wav | Bin 19400 -> 0 bytes .../animalese/alphanumeric/j.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/k.wav | Bin 19400 -> 0 bytes .../animalese/alphanumeric/k.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/l.wav | Bin 16412 -> 0 bytes .../animalese/alphanumeric/l.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/m.wav | Bin 14900 -> 0 bytes .../animalese/alphanumeric/m.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/n.wav | Bin 16616 -> 0 bytes .../animalese/alphanumeric/n.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/o.wav | Bin 16616 -> 0 bytes .../animalese/alphanumeric/o.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/p.wav | Bin 14936 -> 0 bytes .../animalese/alphanumeric/p.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/q.wav | Bin 14936 -> 0 bytes .../animalese/alphanumeric/q.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/r.wav | Bin 18716 -> 0 bytes .../animalese/alphanumeric/r.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/s.wav | Bin 16064 -> 0 bytes .../animalese/alphanumeric/s.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/t.wav | Bin 14612 -> 0 bytes .../animalese/alphanumeric/t.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/u.wav | Bin 16604 -> 0 bytes .../animalese/alphanumeric/u.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/v.wav | Bin 18332 -> 0 bytes .../animalese/alphanumeric/v.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/w.wav | Bin 18332 -> 0 bytes .../animalese/alphanumeric/w.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/x.wav | Bin 15116 -> 0 bytes .../animalese/alphanumeric/x.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/y.wav | Bin 15992 -> 0 bytes .../animalese/alphanumeric/y.wav.import | 24 -- sound/dialogue/animalese/alphanumeric/z.wav | Bin 15140 -> 0 bytes .../animalese/alphanumeric/z.wav.import | 24 -- sound/dialogue/animalese/kim/0.wav | Bin 14516 -> 0 bytes sound/dialogue/animalese/kim/0.wav.import | 24 -- sound/dialogue/animalese/kim/1.wav | Bin 14516 -> 0 bytes sound/dialogue/animalese/kim/1.wav.import | 24 -- sound/dialogue/animalese/kim/2.wav | Bin 15656 -> 0 bytes sound/dialogue/animalese/kim/2.wav.import | 24 -- sound/dialogue/animalese/kim/3.wav | Bin 15656 -> 0 bytes sound/dialogue/animalese/kim/3.wav.import | 24 -- sound/dialogue/animalese/kim/4.wav | Bin 13136 -> 0 bytes sound/dialogue/animalese/kim/4.wav.import | 24 -- sound/dialogue/animalese/kim/5.wav | Bin 14456 -> 0 bytes sound/dialogue/animalese/kim/5.wav.import | 24 -- sound/dialogue/animalese/kim/6.wav | Bin 18536 -> 0 bytes sound/dialogue/animalese/kim/6.wav.import | 24 -- sound/dialogue/animalese/kim/7.wav | Bin 18536 -> 0 bytes sound/dialogue/animalese/kim/7.wav.import | 24 -- sound/dialogue/animalese/kim/8.wav | Bin 11096 -> 0 bytes sound/dialogue/animalese/kim/8.wav.import | 24 -- sound/dialogue/animalese/kim/9.wav | Bin 13136 -> 0 bytes sound/dialogue/animalese/kim/9.wav.import | 24 -- sound/dialogue/animalese/kim/a.wav | Bin 12296 -> 0 bytes sound/dialogue/animalese/kim/a.wav.import | 24 -- sound/dialogue/animalese/kim/b.wav | Bin 10496 -> 0 bytes sound/dialogue/animalese/kim/b.wav.import | 24 -- sound/dialogue/animalese/kim/c.wav | Bin 14876 -> 0 bytes sound/dialogue/animalese/kim/c.wav.import | 24 -- sound/dialogue/animalese/kim/d.wav | Bin 12476 -> 0 bytes sound/dialogue/animalese/kim/d.wav.import | 24 -- sound/dialogue/animalese/kim/e.wav | Bin 13436 -> 0 bytes sound/dialogue/animalese/kim/e.wav.import | 24 -- sound/dialogue/animalese/kim/f.wav | Bin 13436 -> 0 bytes sound/dialogue/animalese/kim/f.wav.import | 24 -- sound/dialogue/animalese/kim/g.wav | Bin 13076 -> 0 bytes sound/dialogue/animalese/kim/g.wav.import | 24 -- sound/dialogue/animalese/kim/h.wav | Bin 15176 -> 0 bytes sound/dialogue/animalese/kim/h.wav.import | 24 -- sound/dialogue/animalese/kim/i.wav | Bin 15176 -> 0 bytes sound/dialogue/animalese/kim/i.wav.import | 24 -- sound/dialogue/animalese/kim/j.wav | Bin 16136 -> 0 bytes sound/dialogue/animalese/kim/j.wav.import | 24 -- sound/dialogue/animalese/kim/k.wav | Bin 13316 -> 0 bytes sound/dialogue/animalese/kim/k.wav.import | 24 -- sound/dialogue/animalese/kim/l.wav | Bin 13316 -> 0 bytes sound/dialogue/animalese/kim/l.wav.import | 24 -- sound/dialogue/animalese/kim/m.wav | Bin 14696 -> 0 bytes sound/dialogue/animalese/kim/m.wav.import | 24 -- sound/dialogue/animalese/kim/n.wav | Bin 15836 -> 0 bytes sound/dialogue/animalese/kim/n.wav.import | 24 -- sound/dialogue/animalese/kim/o.wav | Bin 9896 -> 0 bytes sound/dialogue/animalese/kim/o.wav.import | 24 -- sound/dialogue/animalese/kim/p.wav | Bin 13736 -> 0 bytes sound/dialogue/animalese/kim/p.wav.import | 24 -- sound/dialogue/animalese/kim/q.wav | Bin 13736 -> 0 bytes sound/dialogue/animalese/kim/q.wav.import | 24 -- sound/dialogue/animalese/kim/r.wav | Bin 13736 -> 0 bytes sound/dialogue/animalese/kim/r.wav.import | 24 -- sound/dialogue/animalese/kim/s.wav | Bin 13736 -> 0 bytes sound/dialogue/animalese/kim/s.wav.import | 24 -- sound/dialogue/animalese/kim/t.wav | Bin 13736 -> 0 bytes sound/dialogue/animalese/kim/t.wav.import | 24 -- sound/dialogue/animalese/kim/u.wav | Bin 13736 -> 0 bytes sound/dialogue/animalese/kim/u.wav.import | 24 -- sound/dialogue/animalese/kim/v.wav | Bin 14756 -> 0 bytes sound/dialogue/animalese/kim/v.wav.import | 24 -- sound/dialogue/animalese/kim/w.wav | Bin 14756 -> 0 bytes sound/dialogue/animalese/kim/w.wav.import | 24 -- sound/dialogue/animalese/kim/x.wav | Bin 14756 -> 0 bytes sound/dialogue/animalese/kim/x.wav.import | 24 -- sound/dialogue/animalese/kim/y.wav | Bin 16136 -> 0 bytes sound/dialogue/animalese/kim/y.wav.import | 24 -- sound/dialogue/animalese/kim/z.wav | Bin 14516 -> 0 bytes sound/dialogue/animalese/kim/z.wav.import | 24 -- tests/chat_validation.gd | 38 --- tests/chat_validation.gd.uid | 1 - ...ontroller_menu_accessibility_validation.gd | 35 +-- tests/network_chat_protocol_validation.gd | 55 +++++ tests/network_chat_protocol_validation.gd.uid | 1 + tests/profile_multiplayer_validation.gd | 18 +- tests/title_credits_validation.gd | 26 +- ui/chat_ui.gd | 12 +- ui/fishing_shop.tscn | 8 +- ui/title_credits_page.tscn | 15 +- 165 files changed, 155 insertions(+), 2158 deletions(-) delete mode 100644 items/icons/equipment/64_cooler_plus.png delete mode 100644 items/icons/equipment/64_cooler_plus.png.import delete mode 100644 items/icons/shop/64_power_plus.png delete mode 100644 items/icons/shop/64_power_plus.png.import delete mode 100644 items/icons/shop/64_speed_plus.png delete mode 100644 items/icons/shop/64_speed_plus.png.import delete mode 100644 sound/dialogue/animalese/alphanumeric/0.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/0.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/1.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/1.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/2.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/2.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/3.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/3.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/4.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/4.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/5.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/5.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/6.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/6.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/7.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/7.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/8.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/8.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/9.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/9.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/a.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/a.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/b.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/b.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/c.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/c.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/d.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/d.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/e.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/e.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/f.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/f.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/g.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/g.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/h.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/h.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/i.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/i.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/j.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/j.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/k.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/k.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/l.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/l.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/m.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/m.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/n.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/n.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/o.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/o.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/p.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/p.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/q.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/q.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/r.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/r.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/s.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/s.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/t.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/t.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/u.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/u.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/v.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/v.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/w.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/w.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/x.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/x.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/y.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/y.wav.import delete mode 100644 sound/dialogue/animalese/alphanumeric/z.wav delete mode 100644 sound/dialogue/animalese/alphanumeric/z.wav.import delete mode 100644 sound/dialogue/animalese/kim/0.wav delete mode 100644 sound/dialogue/animalese/kim/0.wav.import delete mode 100644 sound/dialogue/animalese/kim/1.wav delete mode 100644 sound/dialogue/animalese/kim/1.wav.import delete mode 100644 sound/dialogue/animalese/kim/2.wav delete mode 100644 sound/dialogue/animalese/kim/2.wav.import delete mode 100644 sound/dialogue/animalese/kim/3.wav delete mode 100644 sound/dialogue/animalese/kim/3.wav.import delete mode 100644 sound/dialogue/animalese/kim/4.wav delete mode 100644 sound/dialogue/animalese/kim/4.wav.import delete mode 100644 sound/dialogue/animalese/kim/5.wav delete mode 100644 sound/dialogue/animalese/kim/5.wav.import delete mode 100644 sound/dialogue/animalese/kim/6.wav delete mode 100644 sound/dialogue/animalese/kim/6.wav.import delete mode 100644 sound/dialogue/animalese/kim/7.wav delete mode 100644 sound/dialogue/animalese/kim/7.wav.import delete mode 100644 sound/dialogue/animalese/kim/8.wav delete mode 100644 sound/dialogue/animalese/kim/8.wav.import delete mode 100644 sound/dialogue/animalese/kim/9.wav delete mode 100644 sound/dialogue/animalese/kim/9.wav.import delete mode 100644 sound/dialogue/animalese/kim/a.wav delete mode 100644 sound/dialogue/animalese/kim/a.wav.import delete mode 100644 sound/dialogue/animalese/kim/b.wav delete mode 100644 sound/dialogue/animalese/kim/b.wav.import delete mode 100644 sound/dialogue/animalese/kim/c.wav delete mode 100644 sound/dialogue/animalese/kim/c.wav.import delete mode 100644 sound/dialogue/animalese/kim/d.wav delete mode 100644 sound/dialogue/animalese/kim/d.wav.import delete mode 100644 sound/dialogue/animalese/kim/e.wav delete mode 100644 sound/dialogue/animalese/kim/e.wav.import delete mode 100644 sound/dialogue/animalese/kim/f.wav delete mode 100644 sound/dialogue/animalese/kim/f.wav.import delete mode 100644 sound/dialogue/animalese/kim/g.wav delete mode 100644 sound/dialogue/animalese/kim/g.wav.import delete mode 100644 sound/dialogue/animalese/kim/h.wav delete mode 100644 sound/dialogue/animalese/kim/h.wav.import delete mode 100644 sound/dialogue/animalese/kim/i.wav delete mode 100644 sound/dialogue/animalese/kim/i.wav.import delete mode 100644 sound/dialogue/animalese/kim/j.wav delete mode 100644 sound/dialogue/animalese/kim/j.wav.import delete mode 100644 sound/dialogue/animalese/kim/k.wav delete mode 100644 sound/dialogue/animalese/kim/k.wav.import delete mode 100644 sound/dialogue/animalese/kim/l.wav delete mode 100644 sound/dialogue/animalese/kim/l.wav.import delete mode 100644 sound/dialogue/animalese/kim/m.wav delete mode 100644 sound/dialogue/animalese/kim/m.wav.import delete mode 100644 sound/dialogue/animalese/kim/n.wav delete mode 100644 sound/dialogue/animalese/kim/n.wav.import delete mode 100644 sound/dialogue/animalese/kim/o.wav delete mode 100644 sound/dialogue/animalese/kim/o.wav.import delete mode 100644 sound/dialogue/animalese/kim/p.wav delete mode 100644 sound/dialogue/animalese/kim/p.wav.import delete mode 100644 sound/dialogue/animalese/kim/q.wav delete mode 100644 sound/dialogue/animalese/kim/q.wav.import delete mode 100644 sound/dialogue/animalese/kim/r.wav delete mode 100644 sound/dialogue/animalese/kim/r.wav.import delete mode 100644 sound/dialogue/animalese/kim/s.wav delete mode 100644 sound/dialogue/animalese/kim/s.wav.import delete mode 100644 sound/dialogue/animalese/kim/t.wav delete mode 100644 sound/dialogue/animalese/kim/t.wav.import delete mode 100644 sound/dialogue/animalese/kim/u.wav delete mode 100644 sound/dialogue/animalese/kim/u.wav.import delete mode 100644 sound/dialogue/animalese/kim/v.wav delete mode 100644 sound/dialogue/animalese/kim/v.wav.import delete mode 100644 sound/dialogue/animalese/kim/w.wav delete mode 100644 sound/dialogue/animalese/kim/w.wav.import delete mode 100644 sound/dialogue/animalese/kim/x.wav delete mode 100644 sound/dialogue/animalese/kim/x.wav.import delete mode 100644 sound/dialogue/animalese/kim/y.wav delete mode 100644 sound/dialogue/animalese/kim/y.wav.import delete mode 100644 sound/dialogue/animalese/kim/z.wav delete mode 100644 sound/dialogue/animalese/kim/z.wav.import delete mode 100644 tests/chat_validation.gd delete mode 100644 tests/chat_validation.gd.uid create mode 100644 tests/network_chat_protocol_validation.gd create mode 100644 tests/network_chat_protocol_validation.gd.uid diff --git a/docs/ATTRIBUTION.md b/docs/ATTRIBUTION.md index 18b2797..a3a640e 100644 --- a/docs/ATTRIBUTION.md +++ b/docs/ATTRIBUTION.md @@ -11,24 +11,21 @@ NETfishing is jointly owned, developed, and published by its creators, publicly credited as Voyager and Endeavour and operating collectively as the independent team Woofmeow. -- Voyager: co-owner, developer, project director, creator of the game's 3D - art, and composer of the original title/ambient track - `audio/music/title/as_in_four_wolves.ogg`, world track +- Voyager: co-owner, developer, project director, creator of the game's + current provisional fish artwork and original 3D work except where another + creator is credited, and composer of the original title track + `audio/music/title/as_in_four_wolves.ogg`, dusk/world track `audio/music/world/craft.mp3`, and the synthesized robot animalese tones. -- Endeavour: co-owner, developer, and creator of the game's 2D art, including - the original fish, environment, UI, and other artwork. +- Endeavour: co-owner, developer, and 2D artist. Her incorporated work includes + character pattern/channel-map art, environment and UI art, and item art. + Planned work is not described as incorporated until its files enter the + project. - chillnfill: contributor of original 3D models for the character bodies and arms, ears and tails, and multiple world props and decorative assets, including trees and bridges. The contributor requested to be credited as `chillnfill`. - adamantris: contributor of the original hand-net model and texture artwork; the contributor is credited as `adamantris`. -- Tekgator: creator of the cooler-capacity, reel-speed, and barrier-power shop - icons. -- kat: supplied the original recorded voice sample used for the animalese - alphabet and number sounds. -- kim: supplied the recorded voice performance used for the kim animalese - alphabet and number sounds. Voyager is also the original catalog porter credit in PortMaster metadata. Third-party creators are credited with their individual records below. Those @@ -44,7 +41,7 @@ Do not describe the complete repository as covered only by the GPL. | Project-owned artwork, textures, models, animation, music, audio, narrative content, characters, and other creative assets | Source-root or packaged `ASSET-LICENSE.md` | | NETfishing and Woofmeow names, logos, icons, and official identity | Source-root or packaged `TRADEMARKS.md` | | Third-party engines, fonts, sounds, and other external material | Their original terms, recorded below and in adjacent license texts where applicable | -| New outside contributions | Source-root `CONTRIBUTOR-TERMS.md` plus any separately signed agreement | +| Previously accepted or expressly invited outside contributions | Source-root `CONTRIBUTOR-TERMS.md` plus any separately signed agreement | Generated Godot import metadata and deterministic generated resources follow the terms of their source material or generating code. Repository location @@ -108,43 +105,59 @@ Public-domain fonts are not governed by the NETfishing Asset License. ## Intake policy -For every new external or supplied asset, record: +For every new external or supplied asset, retain a durable intake record with: - creator or supplying party; - original source location or delivery channel; -- source filename and repository destination; +- source filename and, when useful, its initial repository destination; - source and destination SHA-256 when copied without modification; - license or explicit permission; - any permitted transformations; - the importing commit or release. -Maintainers must also obtain affirmative agreement to the source-root -`CONTRIBUTOR-TERMS.md` before accepting an outside contribution and retain -that agreement in a durable pull request, issue, email, or signed document. +The intake record may live in the accepted pull request, issue, email, or the +owners' private project records. This public document should contain the +credits and license notices needed by recipients; it should not duplicate a +changing file inventory that can be derived from the repository itself. + +NETfishing does not accept unsolicited contributions. For work expressly +invited by both Owners, maintainers must obtain affirmative agreement to the +source-root `CONTRIBUTOR-TERMS.md` and retain the written invitation and +agreement in a durable Project record. Runtime resources must use `res://` paths. Workstation Sync folders are intake locations only and must never appear in scenes or resources. -## Asset inventory and provenance +## Project-created artwork and music -| Asset family | Repository location | Recorded provenance | +The current in-game fish images are provisional artwork by Voyager. Endeavour +is creating replacement fish artwork, but work that has not been incorporated +into this repository is not presented here as part of the game or attributed +as a shipped asset. + +Endeavour's incorporated 2D contributions include the inventory notepad, +environment and UI artwork, item artwork, and character customization pattern +and channel-map artwork. Voyager's incorporated original work includes 3D +assets, the provisional fish artwork, the title and dusk music identified +above, and the robot animalese tones. Specific contributor exceptions are +recorded below and in the in-game credits. + +These credits intentionally describe work by creator and contribution family +instead of maintaining a second file-by-file asset catalog. Runtime resources +and Git history identify the files present in a particular revision. A path, +directory name, commit author, or supplying party is not by itself evidence of +authorship. + +## Third-party and contributor runtime material + +The following paths identify distributed material whose external license or +individual contributor credit must remain easy to find. They were checked +against the repository when this record was revised. + +| Material | Runtime location | Credit or terms | | --- | --- | --- | -| Fish art and portraits | `fish/species/`, `art/exported/fish/` | Original 2D artwork by co-owner Endeavour. | -| Item icons | `items/icons/` | Original 2D artwork by co-owner Endeavour except where separately credited below. | -| Cooler-capacity shop icon | `items/icons/equipment/64_cooler_plus.png` | Original artwork by Tekgator. Repository SHA-256: `b63705be5b78915753c068170323781a90e22b555b57a5b2ca9466e2726539f7`. | -| Reel-speed shop icon | `items/icons/shop/64_speed_plus.png` | Original artwork by Tekgator. Repository SHA-256: `938452798f2be505e06ce3fbef178f52459331fd3bced8763fbc2a80157125ca`. | -| Barrier-power shop icon | `items/icons/shop/64_power_plus.png` | Original artwork by Tekgator. Repository SHA-256: `164d34ce152aa6d75de79b69f0be2d9074f7891057de9636678889028ff98ae7`. | -| Inventory notepad | `art/ui/ui_notepad.png` | Original 2D artwork by co-owner Endeavour; integrated without a runtime external path. | -| Environment textures | `art/exported/environment/textures/` | Original 2D artwork by co-owner Endeavour. | -| UI patterns | `art/patterns/` | Original 2D artwork by co-owner Endeavour. | -| Fur customization channel maps | `art/exported/characters/patterns/` | Original 2D channel-map artwork by co-owner Endeavour. Exact file hashes are recorded below. | -| Character base meshes and appendages | `art/source/characters/base/`, `art/exported/characters/base/`, and derived character resources | Original body and arm models and original ear and tail models by chillnfill. Any embedded original 2D artwork is by Endeavour. | -| World and decorative prop models | `art/source/environment/`, `art/exported/environment/`, and derived world resources | Original prop and decorative models by chillnfill, including trees and bridges. Any embedded original 2D artwork is by Endeavour. | -| Hand-net model | `art/source/items/equipment/net.blend`, `art/exported/items/equipment/net.glb`, and adjacent exported textures | Original model and texture artwork by adamantris; repository adaptation and rigging by Voyager. | | Tuffy font | `ui/fonts/Tuffy_Bold.otf` | Public-domain dedication in `ui/fonts/Tuffy-LICENSE.txt`. | -| Seattle Avenue font | `ui/fonts/seattle_avenue.otf` | Public-domain font by JLH Fonts; source record and hash in `ui/fonts/Seattle-Avenue-LICENSE.txt`. | -| Title music | `audio/music/title/as_in_four_wolves.ogg` | Original music composed and owned by co-owner Voyager. | -| Dusk music | `audio/music/world/craft.mp3` | Original music composed and owned by co-owner Voyager. | +| Seattle Avenue font | `ui/fonts/seattle_avenue.otf` | Public-domain font by JLH Fonts; notice in `ui/fonts/Seattle-Avenue-LICENSE.txt`. | | Fishing fight loop | `audio/sfx/fishing/fighting.wav` | Edited from “Spinning reel.wav” by Freesound user tosha73, sound 509902, CC0. | | Manual-reeling loop | `audio/sfx/fishing/reeling.wav` | Edited from the same CC0 “Spinning reel.wav” source. | | Saltwater wave ambience | `audio/ambience/waves.wav` | “Gentle Ocean Waves Loop” by Freesound user kkenny101, sound 852826, CC0. | @@ -152,9 +165,6 @@ locations only and must never appear in scenes or resources. | Rain ambience | `audio/ambience/rain_loop_ontario.ogg` | Converted from “Rain Loop Ontario” by Freesound user Ayton, sound 212799, CC BY 3.0. | | Character bark call | `sound/dialogue/calls/bark.wav` | Edited from `Dog_Bark.wav` by Freesound user ivolipa, sound 328729, CC0. | | Character meow call | `sound/dialogue/calls/meow.wav` | Edited from `Cat meow.m4a` by Freesound user Christyboy100, sound 495694, Attribution 3.0. | -| Animalese alphabet and number sounds | `sound/dialogue/animalese/alphanumeric/` | Processed derivatives of the original recorded voice sample supplied by NETfishing community member kat. | -| Kim animalese alphabet and number sounds | `sound/dialogue/animalese/kim/` | Processed per-character voice samples supplied by NETfishing community member kim. | -| Robot animalese tones | `sound/dialogue/animalese/robot/` | Original synthesized tones composed and owned by co-owner Voyager without third-party samples. | Creative Commons Zero information: https://creativecommons.org/publicdomain/zero/1.0/. Creative Commons @@ -167,10 +177,9 @@ https://creativecommons.org/licenses/by/3.0/legalcode. - Original contribution families: character bodies and arms; character ears and tails; and multiple world props and decorative assets, including trees and bridges. -- Repository mapping: character contributions are incorporated into the - character source/export families identified above. Prop contributions may - be incorporated into combined environment source and export files rather - than retained as one file per originally supplied model. +- Repository mapping: these contributions may be incorporated into combined + character or environment resources rather than retained as one file per + originally supplied model. Git history is the revision-specific file map. - Permission record: because these historical contributions predate the current `CONTRIBUTOR-TERMS.md`, retain the original permission record or a later written confirmation covering Project use, modification, @@ -180,10 +189,9 @@ https://creativecommons.org/licenses/by/3.0/legalcode. - Requested credit: `adamantris`. - Original contribution: hand-net model and texture artwork. -- Repository source: `art/source/items/equipment/net.blend`, SHA-256 - `4608993b2397681029c60eb6a7657e3db311ded99ebb5a461cdf4738c8858b39`. -- Repository export: `art/exported/items/equipment/net.glb`, SHA-256 - `d4c2d4903da3817ff9bb82e0404f5e51b74d299abc5bef28c7f6daf6371474fb`. +- The maintained repository source and runtime export contain later Project + adaptations. Git history, rather than a duplicated current-file hash here, + identifies their bytes at any given revision. - Repository adaptation: reshaping and the generic `net_root`, `net_rim`, `net_mid`, and `net_tip` deformation rig were prepared by Voyager for reuse across gathering activities. @@ -191,133 +199,17 @@ https://creativecommons.org/licenses/by/3.0/legalcode. written confirmation accepting `CONTRIBUTOR-TERMS.md` with the project records. -### Fur customization channel-map record +### Endeavour 2D contribution record -Original channel-map artwork by Endeavour. Repository paths preserve the -authored `mesh_style.png` filenames. +Endeavour created the incorporated character customization patterns and +channel maps as well as additional UI, environment, and item artwork. The +current provisional fish artwork is not part of this credit. New or replacement +art is added to this record only after it is accepted into the repository. -| Style and mesh | Source filename | Repository file | SHA-256 | -| --- | --- | --- | --- | -| Bengal spots, body and arms | `body_arms_bengal.png` | `art/exported/characters/patterns/bengal/body_arms_bengal.png` | `fa90bd4e74b0b770ce97bf69d069676f5d4bd1f5d649f89e09638a66b61a8470` | -| Bengal spots, main body | `body_main_bengal.png` | `art/exported/characters/patterns/bengal/body_main_bengal.png` | `8662fa198220cfdbe0aa83bdeeef7b855e20124d74f8481467f750d32b67ee8b` | -| Bengal spots, round head | `head_round_bengal.png` | `art/exported/characters/patterns/bengal/head_round_bengal.png` | `f397ed8d152e3fda8181757a2bbd01925b7b8c2c4362f515d91c7f0fbf3ddfb6` | -| Calico, main body | `body_main_calico.png` | `art/exported/characters/patterns/calico/body_main_calico.png` | `25b2389ee729a6bafafbe6b5440541b18f3c5db2808ca8d49c2d5c4d012d390c` | -| Fox, body and arms | `body_arms_fox.png` | `art/exported/characters/patterns/fox/body_arms_fox.png` | `9930808718f31d84b415902f1ba55ac2a508bb2ac127300e793d73a8a013022d` | -| Fox, main body | `body_main_fox.png` | `art/exported/characters/patterns/fox/body_main_fox.png` | `c65e4390173b8c31c9396edd053f940f0f809e47e01d18042cd7babc712dde9d` | -| Fox, short pointy ears | `ears_pointy_short_fox.png` | `art/exported/characters/patterns/fox/ears_pointy_short_fox.png` | `13cb35192d25c0136df287434fa056ce990698fc47dc50445c941f92a4ff42fb` | -| Fox, pointy head | `head_pointy_fox.png` | `art/exported/characters/patterns/fox/head_pointy_fox.png` | `71a9d2383e62884dbd3981460fcd985b18805fa907f61ffb16dce08ff9418ddf` | -| Fox, round head | `head_round_fox.png` | `art/exported/characters/patterns/fox/head_round_fox.png` | `1ac3d503bc1e47a5ae3c1a8af719c9d1be06aab2d6d4d30c179c2a021fe7d34d` | -| Fox tail | `tails_fox_fox.png` | `art/exported/characters/patterns/fox/tails_fox_fox.png` | `72da9673f038e2c3bb8aca19ed99932085fa3b162cab95366901c4e97153dd3e` | -| Paws, body and arms | `body_arms_paws.png` | `art/exported/characters/patterns/paws/body_arms_paws.png` | `38f31ecf7045510501bdd08cbc243065c2fadec481462671dd22b13e8a196e66` | -| Paws, main body | `body_main_paws.png` | `art/exported/characters/patterns/paws/body_main_paws.png` | `d52012d4a1ea3ed544582be714469ed8fec148ccd59417dda21e89c18509321b` | -| Stripes, main body | `body_main_stripes.png` | `art/exported/characters/patterns/stripes/body_main_stripes.png` | `4b1e5b412a7af3e6acd0a5bfb1b6ffd6e0814850a311fc8cc3061419a8f23555` | -| Tiger, main body | `body_main_tiger.png` | `art/exported/characters/patterns/tiger/body_main_tiger.png` | `64b6f47871802e72ba6fe15577f14949a760c6d44bb962bfbbdcddc991b2105b` | -| Tiger, round head | `head_round_tiger.png` | `art/exported/characters/patterns/tiger/head_round_tiger.png` | `6af27056b9827391a73b4ea6f3736b308fa93a03127570f90cc4d3701afd3d80` | -| Tummy, main body | `body_main_tummy.png` | `art/exported/characters/patterns/tummy/body_main_tummy.png` | `dad404614c3feae4082537c02556781ea46c664327e0dc4528804f76619af86a` | +The exact current filenames and bytes are intentionally not copied into this +document. The character appearance resources and Git history are the +revision-specific inventory. -### Tekgator shop icon contribution record - -- Requested credit: `Tekgator`. -- Original contributions: cooler-capacity, reel-speed, and barrier-power shop - icons. -- Repository files and SHA-256: - - `items/icons/equipment/64_cooler_plus.png`: - `b63705be5b78915753c068170323781a90e22b555b57a5b2ca9466e2726539f7` - - `items/icons/shop/64_speed_plus.png`: - `938452798f2be505e06ce3fbef178f52459331fd3bced8763fbc2a80157125ca` - - `items/icons/shop/64_power_plus.png`: - `164d34ce152aa6d75de79b69f0be2d9074f7891057de9636678889028ff98ae7` -- Permission record: retain the original permission record or a later written - confirmation covering Project use, modification, distribution, commercial - release, and applicable sublicensing. - -### kat animalese voice contribution record - -- Requested credit: `kat`. -- Original contribution: the recorded voice sample used to produce the - animalese alphabet and number sounds. -- Repository mapping: the heavily processed per-character derivatives are in - `sound/dialogue/animalese/alphanumeric/`. -- Intake filenames: `0.wav` through `9.wav` and `a.wav` through `z.wav`. -- Source and initial repository files were compared byte-for-byte at intake. - The hashes below identify those untouched intake files; runtime files are - normalized derivatives produced by `scripts/import_animalese_voice.sh`. -- Permission record: retain the original submission and permission record - covering Project use, processing, distribution, commercial release, and - applicable sublicensing. - -| Clip | SHA-256 | Clip | SHA-256 | -| --- | --- | --- | --- | -| `0.wav` | `0616a2fb035d410f24403e66c4fe46e9ff86e976126db16c56125af28bbe5ad6` | `a.wav` | `aa701de9370000e620dae16c4e3082bc79fc9692ed5260dfd5f4f2480b556e75` | -| `1.wav` | `e29191c0b4011d4237710b0ef4fe1f0ebe875bb3cf8abb62b057b7799c683dda` | `b.wav` | `149286a210d4fec9197f4c6109a066706cb890181b6663369a9941435ee859bb` | -| `2.wav` | `e4ce823498ec8440b2f870ea767b1b6185add948a3ba573ec476794fc6ab5abb` | `c.wav` | `4776bb64044e82f21755e771f31e30e18e8737533b08f04a9bd5103aa9adf923` | -| `3.wav` | `498a06196dd672f273c90802d0349f3ecc5f582a1aeb9b952ff54030bef523e0` | `d.wav` | `6bb00d354b5a621895412ae40a40f02f219976fc164b08389a6bb708a6c99e84` | -| `4.wav` | `dbb90d8e7e5cb9524cfd429d63e297548871ed6dda7c2594c5ea4e932c623754` | `e.wav` | `232edabddc6c046ba5bbb5f640cabe9c9a905c2a12cec07fc60ef657e83547c4` | -| `5.wav` | `dc6dc2946e0ebb5b346bbf4c646c72e27303f4bf8838c14038df5ce7087071f9` | `f.wav` | `f104a52c97605872de4cafab1f1c24a132051e14a9400c2098a24385525f1e15` | -| `6.wav` | `8dae2ce33aaa0d788964d0a7026d3c51738ef2b06672697675a7f2da0f9f7a59` | `g.wav` | `12915a19a9c3b0f1559a4c53734c16fedc1d82f7c24adce08608aad7da141968` | -| `7.wav` | `f5c5c855b06794a22954f3eb2b32f2caec877ce7dee27fd3153c7aa65ab1ff92` | `h.wav` | `951a2c1b074eb43c8016d592ed7d1bc63ec64ab95312d122fa8f2e717b61c1e1` | -| `8.wav` | `b31561b5e3748024daf109510d5ee955274d2ef45f7fed96882f8a4862b70e30` | `i.wav` | `1d51b902b1b667eadc7bcc569909ce927075e7b91b8a02ea811f361e3e95164c` | -| `9.wav` | `e46bb34cb045fb15bb0cbbfbd9364895521ee3c441290154a1f4ff67ffd38f2d` | `j.wav` | `9ef84e992d58349b42f642901688f49203af27dda85c5baee30b4c2cf93944c9` | -| | | `k.wav` | `65ae2072c6f55b5013dea21dd4644c2dd502963b89f5711eb22f741cee3dec09` | -| | | `l.wav` | `d87f8fcb4c217c0dbd5526705c982655e514a5645ef2391557b6c033344aa713` | -| | | `m.wav` | `1f1bc0ba3abe077febfa035e873d0e47838e880fbbd6e10164b1e58e13a5e47b` | -| | | `n.wav` | `2f422e00c4c42689e0d50adf2226c28a851960f3c460b2c8cdbbefb687175ad1` | -| | | `o.wav` | `70143fd697e1b1d1f1d27c8fc3bd59ea72e076e1679494f8022a44911752da46` | -| | | `p.wav` | `9419172ec8a595f89ac2993f4a942c554dc5a8fa64bd8a75f468718cdb2b176e` | -| | | `q.wav` | `e0117043020c0eda1d15f1315b7796774a219c1439bafc587c01e3661215abbb` | -| | | `r.wav` | `31f9a4a06975c55331b830247b39f47572622698457c191d03c92d02599b1131` | -| | | `s.wav` | `232edabddc6c046ba5bbb5f640cabe9c9a905c2a12cec07fc60ef657e83547c4` | -| | | `t.wav` | `a8b7379fa5c26462bde6e51cd74edb514aa731afa02efb5f82b42341c5a50964` | -| | | `u.wav` | `e25dec74b9f141203c92c4a8ebf296c80e031cc677d924656bef64e90a02c7a3` | -| | | `v.wav` | `643725a16a9e821a5e8a502aa43979a9f9ed73860839d28cf15b4b3fb4ff3539` | -| | | `w.wav` | `5a915415157775f00875b4985844a1cd28f36733744dbe718fdf8b714f1ccc89` | -| | | `x.wav` | `04fc26436d1524c5fb6e7f84c2a1a930aa519a57f594b73e7310c7187ac581c3` | -| | | `y.wav` | `7fbe3ee4f2a6c6432b8cbeeffe2cc422b3b960e0f148533ffcc0d42d73804f9c` | -| | | `z.wav` | `0616a2fb035d410f24403e66c4fe46e9ff86e976126db16c56125af28bbe5ad6` | - -### kim animalese voice contribution record - -- Requested credit: `kim`. -- Original contribution: the recorded voice performance used to produce the - kim animalese alphabet and number sounds. -- Repository mapping: the per-character samples are in - `sound/dialogue/animalese/kim/`. -- Intake filenames: `0.wav` through `9.wav` and `a.wav` through `z.wav`. -- Source and initial repository files were compared byte-for-byte at intake. - The hashes below identify those untouched intake files; runtime files are - normalized derivatives produced by `scripts/import_animalese_voice.sh`. -- Permission record: retain the original submission and permission record - covering Project use, processing, distribution, commercial release, and - applicable sublicensing. - -| Clip | SHA-256 | Clip | SHA-256 | -| --- | --- | --- | --- | -| `0.wav` | `cd107c5904569c87fb972dce3853e02d126d1d1fe61b16596a2e40b6c5ffa4c1` | `a.wav` | `037dde81eaae9d11b316a0336a2cf39090810afcb8e6a3349af674808a7b6a92` | -| `1.wav` | `4e2310d7af7912d7bf88dbe0b1b864bd491b412dfb46e28e8dbf7fc77d2b839e` | `b.wav` | `09e82faa88e7be9d3d9b984288f001cf722ba9c29f7a422053c90641e2406ff4` | -| `2.wav` | `ed54c8edc36b80e696a45e4eaefe724b714fa949a01af09d66ec4b8af4538dda` | `c.wav` | `8f8bf82630511d510042918389473a6bcb0c71173dc4bbfaaef0ec64c77a8b34` | -| `3.wav` | `41f6b3e0d30384c790ca625ab049826f2cf33aaca4b3bfbbbb833bfbd84d86c9` | `d.wav` | `ccf55a87158896e233afb3c3be517b92f97af92a8d972a8fc8f1ce88a418ec7c` | -| `4.wav` | `d9345022c32fc03f382d892d2ec105a3200c787dfac5357c8c192377b01b7816` | `e.wav` | `d62935c4d90cabc1fc789eab22da1aae205383ba5063b1d923ae3165bb231b92` | -| `5.wav` | `3ea7659d6d1bdc2cf6d5e9131d983ce27ec715d5a27923f141a9e8123f413551` | `f.wav` | `4a7957d71c3e287a94f94b40f77c631e41b9b885bbd968aee60b66e789f5fb65` | -| `6.wav` | `a91e64bccc07162cefaf1c59f838e4475e8ba40efcb749e965f87903f03c2a0d` | `g.wav` | `8fe9f4aa5a3c1f61860c9ef371674e9d3ce117fe222612465d2c7531367294e8` | -| `7.wav` | `e4e2e85f88625e152ff682c45ce816e7ec3fc15eb23ed01c686528f9abfa1015` | `h.wav` | `88a758b4f1e2a90758f93c72b15804b38152e3e8cf6b0b67558823d52e0a0648` | -| `8.wav` | `da94b98ef5bcf7460d3c9ca02b651f586b51ef2809f33da639898f81253e16a4` | `i.wav` | `f272e24648bbf62b09c83743b53c94168e81a90a8d3fff2aa0ba5a727927f494` | -| `9.wav` | `34aa49af5f8414bff289cb575468bef2745b3f6d0ac3420d9eb07ec148cdd645` | `j.wav` | `f25e1585e28313f63bcad0fe3c9a0032c96a32754687e592ea4f1989edfb3411` | -| | | `k.wav` | `3c39ede36a423577d75772ba5c1b7f1a4315aac0b5dea89fa6cd7ac647f4c342` | -| | | `l.wav` | `beda782f9b1de5e82e0f7c481f3e7a5694ead7c72ccabc684a7c330234b7ad7c` | -| | | `m.wav` | `b4002b6dc895896144711cf8a763cdc93d11d9bc74b0b57fbc55831ec3dbf28d` | -| | | `n.wav` | `d5e989ab8cc755cd8676fe05ec3e5b8e433d674694188df3717e3073bd27975b` | -| | | `o.wav` | `043e5f81a29400a4b8078168c187c0e0907ea43041c96be98b2bdf646afc0f61` | -| | | `p.wav` | `da228b88d1621a09b21b3a5e5ea57710fab0a726ef9655406b43da30cd67c6d4` | -| | | `q.wav` | `83cb2e061fa8473e9205d03b353c1d8a3c6cb26913b287571205033ce95e0c99` | -| | | `r.wav` | `4d58f4337a62d0b37b5cea427a22dc05f2b1cab505d6de6fa1d7d8363ee018d4` | -| | | `s.wav` | `93a19e046764af830fc5582f8de3b35b287eea2bc3abf0b269aa0e945405d95c` | -| | | `t.wav` | `c7b1f1d967736c3b640fab88fa4522ca6bec86fc96f2980c3948788c3d9ede9c` | -| | | `u.wav` | `320a3d89c0ad22cf4249d9647bedbb882e8ca561feb651eb7534f2ea51380c54` | -| | | `v.wav` | `8ed8d00aaf3f60531680241f65f45251639080258799698e81afce996ba506af` | -| | | `w.wav` | `edad2171e9b4238a20b8c3d6675b5ab457be0af0450f37950bc6d70215f9def7` | -| | | `x.wav` | `93896a36adeaf8628c18597957e86804c98115b40f41f7ea2d139ba9bf172da8` | -| | | `y.wav` | `9bde2a148b881ef04003286351cb7801fd65276d56b00433921bf7f42aa4d1ab` | -| | | `z.wav` | `cd107c5904569c87fb972dce3853e02d126d1d1fe61b16596a2e40b6c5ffa4c1` | ### Fishing fight loop source record diff --git a/items/icons/equipment/64_cooler_plus.png b/items/icons/equipment/64_cooler_plus.png deleted file mode 100644 index f81648d7149636a12d20c433612ebabd1ac4ac64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3149 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 diff --git a/items/icons/equipment/64_cooler_plus.png.import b/items/icons/equipment/64_cooler_plus.png.import deleted file mode 100644 index 44e493a..0000000 --- a/items/icons/equipment/64_cooler_plus.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://baht2hredfky8" -path="res://.godot/imported/64_cooler_plus.png-d0daa39246f92fd9774ec1721970efad.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://items/icons/equipment/64_cooler_plus.png" -dest_files=["res://.godot/imported/64_cooler_plus.png-d0daa39246f92fd9774ec1721970efad.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -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/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -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 diff --git a/items/icons/shop/64_power_plus.png b/items/icons/shop/64_power_plus.png deleted file mode 100644 index 7daf62fbfa3a3b8e8aaa36dbb8ff45cf43305612..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3012 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 - printf 'example: %s /path/to/voice_kim kim\n' "$0" >&2 + printf 'example: %s /path/to/voice_clips custom_voice\n' "$0" >&2 } if (( $# != 2 )); then diff --git a/scripts/run_validations.sh b/scripts/run_validations.sh index 6bf5b1f..8e083b9 100755 --- a/scripts/run_validations.sh +++ b/scripts/run_validations.sh @@ -15,7 +15,7 @@ readonly -a QUICK_TESTS=( "tests/android_readiness_validation.gd" "tests/camera_drag_validation.gd" "tests/character_rig_validation.gd" - "tests/chat_validation.gd" + "tests/network_chat_protocol_validation.gd" "tests/controller_focus_presentation_validation.gd" "tests/controller_menu_accessibility_validation.gd" "tests/controller_mapping_validation.gd" diff --git a/scripts/validate_animalese_samples.gd b/scripts/validate_animalese_samples.gd index a4e7502..1985ad9 100644 --- a/scripts/validate_animalese_samples.gd +++ b/scripts/validate_animalese_samples.gd @@ -16,20 +16,14 @@ func _initialize() -> void: "animalese supports every letter and digit", ) _expect( - VoiceProfilesType.DEFAULT_SAMPLE_SET_ID == "kat", - "kat is the default animalese voice set", + VoiceProfilesType.DEFAULT_SAMPLE_SET_ID == "robot", + "robot is the default animalese voice set", ) _expect( VoiceProfilesType.is_valid_sample_set("robot"), "the original tones remain available as robot", ) - _expect( - VoiceProfilesType.is_valid_sample_set("kim"), - "kim is available as an animalese voice set", - ) - _validate_set("kat", EXPECTED_CHARACTERS, false) _validate_set("robot", ROBOT_CHARACTERS, true) - _validate_set("kim", EXPECTED_CHARACTERS, false) if _failures.is_empty(): print("Animalese sample validation: PASS") quit(0) diff --git a/sound/dialogue/animalese/alphanumeric/0.wav b/sound/dialogue/animalese/alphanumeric/0.wav deleted file mode 100644 index 779e725e67f2924004eb771a1cbe3df7d3591653..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15140 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 E58{BWqW}N^ diff --git a/sound/dialogue/animalese/alphanumeric/0.wav.import b/sound/dialogue/animalese/alphanumeric/0.wav.import deleted file mode 100644 index 19ac04b..0000000 --- a/sound/dialogue/animalese/alphanumeric/0.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://cbn5ed728rsm" -path="res://.godot/imported/0.wav-9378d7763e1ef87ae982ab57f6e81f2d.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/alphanumeric/0.wav" -dest_files=["res://.godot/imported/0.wav-9378d7763e1ef87ae982ab57f6e81f2d.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/1.wav b/sound/dialogue/animalese/alphanumeric/1.wav deleted file mode 100644 index db7dd62e9a311c937a5df59314866fdb2e3fd1cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15140 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 diff --git a/sound/dialogue/animalese/alphanumeric/2.wav.import b/sound/dialogue/animalese/alphanumeric/2.wav.import deleted file mode 100644 index 800b899..0000000 --- a/sound/dialogue/animalese/alphanumeric/2.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://cmxvxip3pwuun" -path="res://.godot/imported/2.wav-4b3515a4b79f8ae9ffc829c8a5e3c285.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/alphanumeric/2.wav" -dest_files=["res://.godot/imported/2.wav-4b3515a4b79f8ae9ffc829c8a5e3c285.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/3.wav b/sound/dialogue/animalese/alphanumeric/3.wav deleted file mode 100644 index 6f9083569bab3964d1bbc626adcf965c53a92096..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15464 zcmXY21y~i$*Wcb7+`g9v2}K11ySux^R_ty?vAeswUfb7r?ZCor2?6QO%kAFX`Hp`7 zXCF{zV@}V^IlnWwSNHA{+G1Etr{UeE&RHCy#4rqpYwc6`PaKXBm=c>DyEwKjJTnE& zMR8~~T8rY*EHnf)MQUUgGK9~0#G-2Vh_52uAozBBbtC(A{8WKQoTN{A-S11F%UkP7Nfw`^#eOuw#?dTY~fnLLm zg+OB=+)F^`(I((y7|_}gb%wcP;0udDLK|UxEy!vX8V7RfgLw6x>EjP(xHIToG0XlZENRX5q2m5xM{!?~xtp zuyCv<7JzwS9LOOTC80!g2OUMrfzNt~Lir%G7s6YRJtstf+?Jw!=rm|$H&8VObwN$w z+pS=HA-wY(uIbx(6d`K`xVk_OYPDiSWNk@H-ZMrU17KVU9m?jRUC;K+#AE z8vZSO6Mle>cp((^fM+&=Mh>AJ@Z@CBMmLa6FVM~$`0g&CV>^t;!bo$}0BooanukuH zkH~;nOoBPlPjnJ=R14X`W_|$u4j~ZU9|!W94&SPW2$Uf_6aEvP3k8BdjQ<0AQe%-= zZFoB!bTkZkqaxt^neag<5tN|Yg~0bqkZ3tFgXCPmDTdLQ7%mdCqD=G%s2UHPu&7K( z6~4o~l>&{zP&+gj_@4^bizjQJqF@KtyT+O80SKpJOJ7Rb>b(}5&E!#uIz zaUtM$_5R9vKlsWWbO~+y%P)!YgfBo@x?mBss2ON;99)A?Yj_?BrC^omLZRRme1WsE z;75C4)+0dYBCxSWNQSC_uQ%YI-(hYQ$ayikh`xhg3LsxA$_8J#1opNH#utGtF9RE# z1D@Ftg(4he@>|FfOz`c#;9al5_cd4$robxEeR#exasXX-gj+%)d^-fFI*ooKFDx4C ziuJ@=W5JjW?0qNbIt)4COP@goxey`h!IS$y*QE#t&k$oSu@0{VdL{`mQy*`h&0df^vP_Dj%%d|JWi8u0w1@UsD;Q!G3=2s9l7 z+8qN?q9dvaa>)j}y(kOPHf{*lg_}UdTac4QkfR9TwmbN77qIm{6IdjUD!?BK1iRn|8dwTm{2sh1 z9khA^;z|Q#6W$3Ignhzp;pksUqyVSYAO|bV;1(#PMN!~M9CFVRQz_U>mHusW6UVW{}5b&~_F`J4Waz^o12C5n}5?@EtRffhXC3>&r0L z^uM+`8Qxw7T3rNQG7KVCC*WxeNbVx~3Q?Q}86Z>)vz~yb#)2pOS&_%WoC_feEQB~d z8T2*|yks_b&uX|9z}nCPY^DMt$vd!Zr_czj^9_<<9k8+3M65qn2eZT9e^$4dK*Iuf zXDjG>BXBYf=57HN+zO)C0+8oxSec!mA3G`li@FA@?JAga4qS6#zG*Ar@I7!f@bOuR-#Q z&?tzAlYpkDFdhl9VInpfYYTEng1fVU`@SHb)v%LDg71l8oCEDWg;in+&@B}j#MlMEWT zFI*DNfwzBx{YGn``}yCsnZ)wJ2F5~6crWY~77Fu(4Z>B31QJ-o|M>YI3I~I(d&BQo z;A|`KcMRko587>vykNCRhp*?tH*3PYJ0MCMU>6gOwTG)AP*eu~v=qK&g9x}+h!YmU zj^|(S`kG*6XTVQNU`Lh--n|2CE)W%icWe%=4Ad$7% z7*>EJ@aAj6d5G$FV6FTG`(O)1Jp)9PZ@}p-xOWTw{U+qYm`yN3O#BLSTmfEg!Vbm= ztKR^S=61LigLJ)Ng}5PX2d!=pPJ^y25YO7d6GOokx_}q701AeH)$9UWz6-JJk9Bqi z-zo$eUxEeLg}R`rqhPn`VEOOBuH%5>0N8D1!felg*PEc#i?GgI6P|#+>_RYjODx#h zWZ;QK&xDyE$3p%MNU54{BJ2d&bbD@jR~;+JTjv1?wz^mA)D{ z{0_Ue|A627U~xY|0+ldY4l(%~jNgMh2@v}nLO5`+0V3*G@MS$*rLcye<6I0I!SJ#6$2PJP@ye*TSRmj`&b~Hog%*f#1TP z;feTL{0&?m@D#iXR}r0w6~sfrNQ96b$-ZP)GLpo}pTs#Lju=A>CPov>h>JuH5k!t5 zkC5-lGSWdB$gkucvI+T=s78{^h=H`g-juYEEmrhUomIzcay7-8tC~R?T$8DGtLJE%YkTSTdYAju z^NaTX=3nMN-M^dP2A{^d+3LXxvDahKR{9vhV&!}vuCeEsd!GBWoAj*o6l=14{zHj@I`N8Myj#tN@-+$Ks+2@2Mujar1_j_r^h2mD`Tp>Y1>ad{JVasc# zhTji)8&ITUm7!9ejbsZ&Qdy*Cy?-cX9ZWLZvyLUZVbY|n(O?NkqY|<;*uU>J4Hq<|0 zfo_ZPwpR^Frs#!et@weYT>6jK7Ox>vi)a%)08ilhIOD8$Ox=tljRmHw)?v=2+##$x z)s&4A`%83^{$jCcKhu$v}#xBbgy=A5o5|Skz5qW!%(kVjil`{c;|*9WWOf zcI&rP{#Tw~nqR!4aD84{)`Ikj$;n@-51n4;JgfU?^1XyR{cii+_P*2P?wAK#p4@to z{nr2M+|-{r;pH{0uuG6+Xg>!1s(Gd^7bU6}9$6X@5PqPBcTl^)u|Z2hB5Nf@?uZ`M ztbfaEE%|1xq94_c4mzRoV_tbyTlD&#m9drA^nFdeZP%U0-P_#VoGwf4>b<4f{C%0P z(;|LV{<3A{=4gvcD{q?%ouNV(Vko_xZ6>}UY3mgrpP&?JoI0sraG+0(>d@;or_^o~ z8C<_sbgd@&&FGd*T4`EMY9VUs-!Q*Udgwv_N1Alm6!9@;0ezW%&D0gO6vv9&i7wF( z@vmH*W1_iz^_j|wijGxl4PC4jS1uYtKNer};$T)%0(ACEG@lAls($ z(Utfd^egjA^WE&-K{HViBaLHODhe+a0{9D_?(P(49Y>_?m$`wlonBgTxFoG0A*cE8 z)~VmV%Re=Iv+8-j$Bug+?o{83yVd7*^Z)esA|73SI^sq5#H;VqzSK*0{hm@Z(h%nf z6wT4b*BD=Cc7q;`@J0a*meg%rb90T&f%bs9!R2A=>ZU~RX)&^`w!O5irumV2n?f3C z{Fr~;Iy0$1S-DVu!jx&x@C-+jv5mrW*D*6*5t`p9qf@f)59JSS@`ZGLuC4TmVWNGg zr@t@**57n~JD2Vm&W#ZW!k29(`=;sXuMK%uGo+4xWM1UU$k51{bxn2jb>`F^8M!=a zWj$H_ym~L9_SPLAF(mAI&|Tk$8mIh{B$v5Dda$>GiJRl8@2>Bf>$EstIKDdqokyIF zT-mMz?!lf2E{q=|RH6(#f_l!Z7B}{~AU~z9(X&@6x=2}u9o0$>R-t>`F3TcVumb99LTgHOYrSP1U*bVRlY)V&u4_c-G7mv$~#6SNIx=@ zh;HZ{KaQ^{K%NO}gx|%gg+k8M?4@@8X%bAS-jQhIsW3RWh zUyVy>_~hfm9uMx_S3Vd8a!z~JNKvi z1B~-gP=BAD${5KKdMeQa|BUw~EmScbM-L@;qciS-wr$2*`WKals+JitETzt;{7yWH zoJy@DZ{s&n8^OefqPO^Z`jz;rOi<>kJ80Ue+bh4x)=5*uGI6w+mV`)YuP$D@q+i8# zSR=U~TfuwWty~e#jSjax!v4Uz*1X_rWiZOY?RfX! z>tQcao-Kbm_36H6-=3$xn)P%^ssNvD*{S8I+rbNWm=;oWL(#qyaOyauIF0z&iMp-OhB2A%> z3U};n3?0f>7xyb#UA&;Ian)^u%QVgW(Kt1F(Q4frDz4gpG)JUuSh) zpE|p0wy%-wTSIM^lI#r|bR02%(VNQWmQF6YT#``gE<0XsD%(}kzhHUR)ztgnwtg@s z#=YwNN|D&+UG>L~UzdEZ{bTI+eP54#Uj3>4=cC`UQ&O`N%QjeFq9)>E#aK;(=Amky zyp43c_=~v0Yl}L=?`G)5I`Q?pH@sKht8V?UQU08IxU9RxN3y_cfigwg(RZs~wNFot z%&R5o?^c-GSB);;Sl*%PfU%Q}bS1g{+`sGxOuZ|ki!`E@nFeJ#JM>Ed@h_;*;}TH9;w3;$fh1r%#a`&R^1 zKQb+~7TJnz53Kp-8m0!uE5;&oj=eoMh1e^?R$%JwI6uygKMjeR^YCO9{oGck3l}i03-$m=$O^k-=!FaR%MOVeC zlC9F+(qEEA;=}A#`UuGo7`_`jh-F|J+y=7#rqSO~w7AsyDcY2#Df?5bDNRzlrFKc3oN7sJn--t(E=!T` zTe7C|r}2z!pKBF2Q`n0JU|PHz5lLk-Z6!$dNM+P^^;zN@@4L>YL>HpHp#HAf!{|kZZf|do{4U7*6@-O#Q`d;)o>~r7ewNJdyHSadM=9*W^0Qq+5K=E;Q8Iwbw zr+3rSXr5|D$;oqg5cW{Gz_YxSi{%?bwy77^1pkdUB03U5LHA$wJ9wx zqiOcAe0TA?ijjt?mZ$ast`44eTvH(h72wOL9c+c9k9@T1i)Mx{+*|2AL$_LcPUE8y zYvME=v?02WI)iSs&Y}6GYM|)nwM87kj;0$@o5(QoF~Q>xvCl$JF4h%mKWmv`vKaaq z#v3e#C&nqJd#3fK6yp!WkzxYagj)kpCs($SX#`6if>EL%ipMy zwcC8I`KbdE0^S8o2>9sV*1y;<+0X6Q$iK6{)z8oGl+Sh@s~N1kEt?`eC7vaE%`Rt$ zuxfS#vy~2`<`Ms3IC{hT@+$r;e?~|~ZY&$*9Yfgh82k>_9J1hpFeg@uTL~k1hYF?} z(-`>CSgJiWi>jjT(dU`%YzNVC(Pj}L3S(I&lX^}5B5Dx(a5cULyN`|u;rs~CKv#W- z+7@7mF}*SLug<9ITDiD~}$yE>B+=Rkp6`jIoooy<@klx92if$&W_$@OZK#6C+;lwNznHJ=Q$eN_20ub+s!s zPW4-Lm3k!PF1l#@Xg_QIRlAf)^7&qBiGgjvWKpGL9dahI1P{T63nAQDm%?$)ddu9+ zwA$FmxW(u(&M{px9X2&E?J#B=#u<7Uz8H`(*F4Y`;`H$d{B?{awR914L^Mzm<<(q1 zOL?;(OC?sQ*U)Vg8kVQ~ip37x>D2ulm&YS>wG^*GrqA=9RS-<7IE8vn6B2 zdqsLShP}&_(?;qCd4iaa&&BRQBx(#{#S_L+?5HOg12>T67z zEKQ^)O5H+rRJlS~s(hh(tG=$OrFCc+%_vonV!xM2lE~WVTT~u7n#?1j32!_OjpTFP zU7cTT&n;cei%nfkJ53t%NwdjpG#@rQ;qQCK^~Nk?x@n2!uubN?v<^oGDNB zikFU+#EI{V1d!V(W(3`a@+L_l0AGN~vFg87zG2uDY#^q=o*0L- z?4??vnx*Oo*9MhEwM|_^vrThc(^S((U7@V6=q!to9u#Xu*-Qb=&^3Yg*We8;g$PdV zuI=1mkFo8uHni%j!PYuftu@s$+frp-Y_4mLG9NI{vfQ-xvDb2jxWhPqfxvR{C**nh z9Q#CEELF=Rm0I;Y`mFYzr}NQnQx_;ZE8fUf zdM%KilIX>~#79K0*k{ZR&_WS$0Y89!fU2Sv@E;u@@4Od0U^!%#38*_t^GfEI%;{MNvWMqh&Yx4XuJmC=iN3=4ucfwqtaH4(D;Fk6FosZ5wU~M$jpV(w zrEG${lcGp5Qh8HpQr1(&snNFjx$8JYc$5VR`J7!nePuOocdbtLAPVjEjj_5#D z(cRcFqCw*BlF`!hUcvGN#ROHp+D}`p9jxoCGi#@7Q#3IeT9dENhU=Mnr24pOnNpDV zki|=1i@S;Z*WdI4RJPNsTOTgbh{N_-Z!9_0#$peAP(=0a7g1MK7KVQ--NeqR_P z41#LSNHh{#2Yd8$O`yKK6Z?VPg9`ON zz$5h*lu%{W3no+tpFqrjti=*)A=QK`B5#uSNSZoE4W=n(4Rf4n%S@-6Q9p<|czeLp zRYBb~QFtg!6Rz>IxV!FuoQv(T)-&dTrlm%w;hdq7VP11>kb%vVJ&{jR98iQQDESbt9+Fz3X3R~8K@MjMJ(X@nKc%wCe~G@h9=(GK?HisDE(;sbSPaK|;^FvdEF0E} z6;NwjEQCV!eKLN6I8F8eneV4!C>2#nl2k0^qOQ|DnG0}c(=s7+204e2;<>P&!u@L19#W#FRXIQBhyD?17m`rgCV}UlYT>G|MH(D1B?6$=I3q99iLm2o0eCW z|E{1(p|Ws#!Gipid6l`kyq5V>3fGo&uIN@BY@TH^I!?HDxEaq3kA@q-cSO0kor)Gk zNw>>nic^X~iYf9&GPT!GX>I9V=`61$veEKy@MIQ3dbn3R8#%Vxx7$M;{?2x;f$qAV`yS+}!%g5axF@_8(sj4+UuIV>e;F(%A*RY;*NZtJXn58mhAONI!clv z>c>{ozbGAbg^VX>k;6$p@;qV0Rd_ho58V=Cq0atF=mj;|G1w*SCY*Tvu)Ba%7!MWT zj#w}r3Yh|)JV2#W->B_W9qJ>wm0UvZCf|}66-?38KctOd2?OMro(SK04ZoV>Jxe^F z-4(76&KZt8TX*Y2b8nN>Xs`C@Nxix9UPZ_9)1{@wor-=He9CW;ADX``->2Yv!NS6f zLQ~=E!dZnOg*6H<6s8q@FIiLmysEFUz|z8@bC2beKxHe;9}giGkzsTQ+ebW4I#l*S zeqCWx+*L>vb>*F44`P$vl%9~DlS60#55+z{q_AWKJ;F7h8^9#D0P&w87WIxw$LxjA%nX zAsbTrsNYZ-RMP~V4xZ41Dkc|`W@0??6c^z=u+`{}P|OGL!?<0Zm+oSh)miEIXy0!e zXjNMBOkd&Lqcn`Geyo@4dsU6D>`>t-J5(B7QeKo-*s!p)KwP-Buy;|tVy}`fC8J9p zmD)<9%MO+GDPLaEs4A|yxv7_RmE*KKo`=dkK9k%*&8C|&6l-JU;;xc)(hFW&WGZ>I zyja#zHpXk5bh_k_*ecp2YALd_XW1Zj4D7}OsK>-WTma;TlaGO_`oG+At{qnim1HN> zlwGddt}8BsYnywvXB+pK4?xqgt9TZ{QcdZ3%yTwed`zP9ikH2Xrzvj1PWYNCSLIOQ zYLQy5R;np=ChWj?Wh-R|MWDRE>!NgpWPy0UD2E-uW-?0|Z{{97fG!8yZAE#=WHJFF z_`l>Cay>biRFZFDRcb?M2odBb`Vo7GbU+6TgR|H{@+^6kd_aC7D@i5Q5YER9C>vP4 zi)c$s##duUVK-p}D_X;S^=Ldj-7{Tr&N#<>`&`>n>t4$fv)L4FnrS?4cvSsX|GMfy z<<*LR%5Ro^gPL>TT!$aRNxXb`MJHDUG9!Aev>O@r0vD${|z1gDerYz~u8{{!|#5_&)p-vVUG zY4iy&$K`-I?gEzKD;(p8@e}#C{9*wRsaQ>jK&@dvIG30MrydLOh%BO}GqprU@lmP8 zt5`NozCk`xu7njOQRa}%lLsiW6g!lps+g8j-PN=DD1AJKZ)!8_?}`UQQR{+Iqh+n~BVf|<`uV_Gv+^fo$# zenrK>zNQ7$5@g(p3W9UwT9P2=5cHxo`f2(O`g;06 zJ)uvnI#kuSN>OF4R9D4UHPlB|4>KGzzBPR_pRqKvp0PTt<84k`mR;*S<{ISj=AR3} z5OprWuJ{<<4$pzC;9=}5)(U@(_aLqjKZ(18)D zGD(`mD2b9Tl|GVYNE4-Vq?r&=`iM7*3fXveFguAo%~r7WMMFh!N)#2a``Es0EjEH3 z$R34^etl6t@W2XoCY)XUnH7-xyhZJzc2lPz1G<+QKxL8b$&JKYT!(Lg4CfzAT)|&_ z{AI|URta;2a()hv@fW#a9K~Jo)bs3ie|4Fh5@(cSy8Q>7S6bSlY>jQLZH;VV+Y4)q zHPbTIQf}U1?r!!r8%(cEt4zM8UB&`KxM525GksgVxvH>AtRJO+ukTcyP~F0C$I#UH z3F@sw%snjqt;1|R?P|v*2kxxzZ0GFnT;(iu?s08!-}1P*PQrN95_^IbU@x#)fB}9C zXs5eyUfhG#!5`tZ0NFEw2q%*8b$}ZhjGx3K2{VyJex@$bBban1iXFqQWpA=}cD$%u zv;hzohb4KED#>HXK*>9CbMaHrY>?nm(K}JJ_@vk<4wQIH^2D3P{^HxBk)kk>Or#Y> ziMojTi#mz?A*LK-N3sprP_`vIkA2LFM7=Ca5V7DL>Gy!V?=+HZWu`3pq2|mJS{v_;Iw(|S9wdP^TSQtJLKZ1Y6IlKwPj~hfO z5lHqVXOdgMx?hqNWKGDee}%mIC0ffYXOfrzb_BbFeacp`VWKgjqoN;Bxl)QH;!@F7 z(QuI)R)`q3E*r=;W~Z{ZSOTg+`$SJb8xKW$MI%H$qF?L@b~@XM4Pzy&mC0q^G1r-0 z%v@#=)0_!rM2v;bq!Z{v^mxeJCsLzfhdzACA5>AQdqwgRg1 z)n9ZW4#+0WM^cBW8`MA4PHHKv4u`2s z$g97g+rbK9VkA)4xWf!*?DR#bh%bhEM>Rc|dBCu2Gq7PLoFQj1D&`BIY_8KOv_CV4 zNno6ej#aSbAn8d=2t?`c^hdZ?46!_yz74hc0;(T%m1M~!kWsjf$KzA*N%&N-i~e{7 zUV)v*VgRpN1lCSHOhTRqFuH%-wvt8$1b6o@BTH;D@g}4v8C7xxTB#(}3 z4>iqk+!SsRx0id(iTDYyIz|KLo)d-u);bM|pdVl~wh6nBRYIJZ0en`#PPiX23lN4Y ziN(Y;KoiCg6N%NtEr>T=$&;j&>AV*(p$!28ngGbs@o_&o-90i-viqca zrn|GdmRsvqx^?alcci-^`~o1i9Ji zfEAs9ea3WnbKsG|zd%KF0bD0BBQ^;y#K#f|gpCkjT|G|pCNSa${vNNyTN3{e0g$21 zCK*Z~KalfCk~~6mfZd%3_W^y~AXst)xtF{`o`U^zbFv!N@5RJ0VjwYz*h)Mg3gNyV zsRL>MfNc9v*srJJ=kR4vJ86&CfeMHNOT+GBJFrQRCkO|OvlOz+-dG5%pkaXdHv>Zb z0CdFEMjT*ZzW_q_6Ch;20ZRA^@YoAjD>tpJ;0z`<6~im zW9Ra@VnB2T@@@Hn{2;y!ujJFYQ`}6hFGy@McO355?NnpQI!IIZ< zAGs#{J-$8QpIZVIKjA##0<3K+AmUH_#gghQGBW{1yc{}_mO<`s1oX-U zLYG1gbltoI6mJ#a&N~1qeJ@~uZvvip8`Ln`0#4Zhc;8e&KPLm`ISp{VKLFSK9T4UQ zK?VIpGhojDpo8H7Al9crM}!T~$F~6i{2h8bxVW%`5E{>V5U@YoB$n#TgByB%1D46?2nkR$qo%f1bqz5{6% zK+LZIynh;S^Au!u2l)R0Xlf36Hd;cJVh-T3Pk?kkflqMI8y5yx);fQqY7tbI&O;}| z0_ZfE^tYSuPiMq*IJ*yn{+E96dj@nxU573%J@ioUfV_SVPj?5ZQ(&dJ4zeo(JorS& z|K@=70-^s<1hRbrJFI0u|9JS)8t6B93;l6Yn6)9G`)fh}s1@XL7rFt~0ginMJaGVI z{iom41bYM{^ohNI2pR{L)(NEF0!||P!&!0{j z5>}o-(6R#hA*^r$ssyY1V=>;)DTQOdftMK2@iXwo5yAjrD)eO)2u-2;;vLYOR8zDIh;J*wsj|nq^Rr83H^yLF%W3_0T7@4f+Jq!Ghbu7yk75 YjR&jMAtPAnSK!tL8Mz@~jW^N%0X{s=(EtDd diff --git a/sound/dialogue/animalese/alphanumeric/3.wav.import b/sound/dialogue/animalese/alphanumeric/3.wav.import deleted file mode 100644 index 5430aea..0000000 --- a/sound/dialogue/animalese/alphanumeric/3.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://c8017waek7ew8" -path="res://.godot/imported/3.wav-ffb8f531dceaa153b492b74c4bbf7c7c.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/alphanumeric/3.wav" -dest_files=["res://.godot/imported/3.wav-ffb8f531dceaa153b492b74c4bbf7c7c.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/4.wav b/sound/dialogue/animalese/alphanumeric/4.wav deleted file mode 100644 index 061b5da54e5721d5ee5d9b59d103273f1bf112ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15464 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 bo57o_!KYio@|!VMpfHlyiVVTg&FKFJ3&)GH diff --git a/sound/dialogue/animalese/alphanumeric/4.wav.import b/sound/dialogue/animalese/alphanumeric/4.wav.import deleted file mode 100644 index 65e2fa4..0000000 --- a/sound/dialogue/animalese/alphanumeric/4.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://bbtypop1cmrw1" -path="res://.godot/imported/4.wav-effad197373ffb9b48afe78e0fe6c95a.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/alphanumeric/4.wav" -dest_files=["res://.godot/imported/4.wav-effad197373ffb9b48afe78e0fe6c95a.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/5.wav b/sound/dialogue/animalese/alphanumeric/5.wav deleted file mode 100644 index a6c50002c8a2aa89b2bfdbb11d8de78859552602..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15464 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 B9gP40 diff --git a/sound/dialogue/animalese/alphanumeric/5.wav.import b/sound/dialogue/animalese/alphanumeric/5.wav.import deleted file mode 100644 index cddbc1f..0000000 --- a/sound/dialogue/animalese/alphanumeric/5.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://ddwhh6igah1ok" -path="res://.godot/imported/5.wav-2cd0baa0afa291660575e1fc431a6b91.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/alphanumeric/5.wav" -dest_files=["res://.godot/imported/5.wav-2cd0baa0afa291660575e1fc431a6b91.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/6.wav b/sound/dialogue/animalese/alphanumeric/6.wav deleted file mode 100644 index 41154f8a512b0e50d1776220647463371da59822..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16520 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 diff --git a/sound/dialogue/animalese/alphanumeric/6.wav.import b/sound/dialogue/animalese/alphanumeric/6.wav.import deleted file mode 100644 index 4cb51b2..0000000 --- a/sound/dialogue/animalese/alphanumeric/6.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://cqsddej565w48" -path="res://.godot/imported/6.wav-8c88e3785af1748d3cc8334b825655e1.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/alphanumeric/6.wav" -dest_files=["res://.godot/imported/6.wav-8c88e3785af1748d3cc8334b825655e1.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/7.wav b/sound/dialogue/animalese/alphanumeric/7.wav deleted file mode 100644 index e732f42dba206193704a89b63c0ebfe1c7b2fd2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16520 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 diff --git a/sound/dialogue/animalese/alphanumeric/7.wav.import b/sound/dialogue/animalese/alphanumeric/7.wav.import deleted file mode 100644 index 7ed72ee..0000000 --- a/sound/dialogue/animalese/alphanumeric/7.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://de5lwv3vtq4jo" -path="res://.godot/imported/7.wav-aa6620dad62f7a8fa68ac3dfe0e8bce0.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/alphanumeric/7.wav" -dest_files=["res://.godot/imported/7.wav-aa6620dad62f7a8fa68ac3dfe0e8bce0.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/8.wav b/sound/dialogue/animalese/alphanumeric/8.wav deleted file mode 100644 index 277937592c6ddcf6f6df5d5efc941f66cb7bc5d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14828 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 diff --git a/sound/dialogue/animalese/alphanumeric/8.wav.import b/sound/dialogue/animalese/alphanumeric/8.wav.import deleted file mode 100644 index 4733d6c..0000000 --- a/sound/dialogue/animalese/alphanumeric/8.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://lsklvocqcohu" -path="res://.godot/imported/8.wav-ee305634b68bbc3c852777570ad90d81.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/alphanumeric/8.wav" -dest_files=["res://.godot/imported/8.wav-ee305634b68bbc3c852777570ad90d81.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/9.wav b/sound/dialogue/animalese/alphanumeric/9.wav deleted file mode 100644 index 644d326550cde1dddda92671ee6614e0ccf5d8b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16460 zcmXY21$Y!mw{5r4xDkOQIKkZ^xWfXA>tc($ySux)OR%893GTt-K1s&4{ayC`UwxBg zI^A7W=bpOvR@JHAo!YlgY=t2GTlZ@>X41?UBZ43(l%@CJk2xrUAx32Mh?yf|;2u3v zq&`-Usq57x>QZ&HdJ4W}se-CU!jK3g2;mS}b*N@24pmYqL&tm;Sgg1THCtTt8S z)o`_(T19QH{-sV(=c_BBEL11M|2nD-)JpKbAk`mA0Q?S7!{B?AS^=J_49`?nI!v(x(PmO)z#`cb(?xry{W!c^HjI0s*37_Rz6qHsawQtz0mby&csvd&&pHYvid)1BbeV#f8TCz&rt{zd(su$sN5c)Y&9Re+Ds8)lzqM
J{ke0JRacxq@0FFkrS3{x=B_?4mYP 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 S3roS<+JA1C=Q|*ig#Hg;JZ$Cw diff --git a/sound/dialogue/animalese/alphanumeric/a.wav.import b/sound/dialogue/animalese/alphanumeric/a.wav.import deleted file mode 100644 index f058d25..0000000 --- a/sound/dialogue/animalese/alphanumeric/a.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://dnnf2sfntra41" -path="res://.godot/imported/a.wav-07b66f5c4c337a0412ac22c096725756.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/alphanumeric/a.wav" -dest_files=["res://.godot/imported/a.wav-07b66f5c4c337a0412ac22c096725756.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/b.wav b/sound/dialogue/animalese/alphanumeric/b.wav deleted file mode 100644 index 56c49e23c3340a9643e415b663c0788399061dc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18020 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 s0qE%ijn)FU_aR>~;+Mr?{VmZM_XIko= z@V~FWB$Mvysw?N-s;<6g`gQHpX+$TA8vNU!juWQOtKvyf6pdrm1AJIWQw-%vjT=30 zbThOWM;a43Nt0em52QCzzT{5^kblTm!coQarV5UQA*B>f0WUP?!$ zebQwqRSG7faQAzXLyAZ`c}K32edI6PwU8_zbIDXP663TWF{Bo02AP(V%Or&m;z7x& zJaQc^8WD!%O4*Vi)gt4`zvL6iBUzAUC&n?7Ea{c>RQfJCq;S%mOeC|&Sn@m0XG+(l z?a~TqrL;@BCM8M~sYW`JF=PqZK~9qgr4kEKQQnjW`rjrqNmY_0os#~R_F{Yvwm1z9<&ZiT792(VNCs^E zUaFAlL8rH{Tm%(KDXAai5E)0>kOrh9bh`yj+f#F?_0%G&8~k+{{bVO^3y2Nn=~as zL`2(A;bv_S9*9HsZE^H7wNuq7n&4H-lQe` zJrVbIgEb{71yX#J3Z+0GaxA2d}6ou*;DFVaD2jkFDD<8bvl5l9TxmTCa&#iQrR z=%E7{OjZC58L*lk>|BaFXOkMF5ThM}*A7WnrPtC=DGx^q#(6B=!j%tFi4=gl7n7st z^*VkpCA~-(u}eu(tn^vRkld0lsRs;n$I%&oD?j~-kxl}81(4B2a-sPapeK|#q+F>; zQUZB%AxSooQC`4zF1bV2;(81TApVf3BarbIq&`j#kac7dMsG->akV`@?}Klx#7Kn$ z`!XsOu`r+fMtmVpHn5)wX?aNldql%a?ck>&=xZ)nMK+ObkYP1^Hk7m_k?^`xDupcN zkY7!L5e-d&lGdaN#`h;2DTfW-!4knQ2>iBf?h#H0f{1k zopt0MuCs`Hn#w}kb)+wefbVkZXn82zL3Cb|Zc0z2uh3b6k=mgBC?IYe(DesCjR%sKVzj>yJrhYM_{s`x zpJ2okNeesfK~!pxyQ)zt#MEBIO%*~Bx8zA$A(n5FLZYSoA$1YtUkwBV6PJ`F#Up0k zp^v-LCD`zwbOe82O9hf1*60PC4g^{v2u*U)G6DYZAzhIRuOjCpA^I+nWw4wtseosb zAvcE{&;l*G!-F-5j#%LDpBTk~`01sD27~Zfv1Zk8IctLAB96F74md3GHE=r(i6yb5WP=^t=j@C z%^}TrVCy>hNhIP=MI(bnA+s~c%W**c1xT|V2$%?6d&5UPpz$Q!f0DdGpIWqSgv?h5 zqf};_!)RBZ2(Z~XMDki`lXMK$a!HNJJdB%8C`v~us50b=eQ4Q+gu~ZikYN@~qGw+UAG30Y+DpaK)L8=tNC zv0=W+gnY*#Qw!kY2cqLLB0XL5gGEjtKk9+<|IHoyfgxX#gFJo@C{9AI2mx~XAglC; zF13g!@=gvgn2gzjM;>g1^V6ZzHpKo$*n1cv(~FcKQ{F-RJ%IEKY&M@eiG^zt;wYI}&q9;5eEE|3=hON92mt8UTd{}D(j@8J6Ga$_{AhR=U97947nT}s` zQ8IpuQYfN%CUAWL+4dyv>W>!r(E2Qp@(y!sS0FHlgi@_>gi_gvyw1p*uMtaUV2vE) z?cXrobZFfbk>i5RUcow9i22SK{U-8T0q*~bPy1nmrTEzo1bss`Ek6_!;su1(!wN70 z@mP+$bOxDw68zT-eGW#?)8L``XgwJ-@es%}2tKaF*CJqYGLR4h+$RGe2c@l8wfzgp zQY8Y}nqcnjfnIu{%|M`G8tkwME4Xd2_f%YohDL?3Ts-VXq-bcl4OuP^SXLkgGhnZk z=s^c7J%Cp(BWCg>18g!8=l{ak{Sm`?(iLfyG+r75tDHhV(eV2PWS2tN|0_N%!knNZ z>9F!~X%CKLn76)3b}0nsEAdj9Q~Cl=CXBIFnk7v_KS$8Q1NnS9GT9Qy-3TkwvRX1qCULc8n`Bz~8F_ofCq+Z$Smgkv zOu0<)RxZgJ%2shs_AI-Hz0c~nC0q&D18w)>&JfvIt_pXUt<9z~cbWT4Dq~=~urt^> zY&W)onaVt)Il41-ganfJ@Nfd2HvT0M)Dg-})ugM@#nf6#M7*1Tfa$=?N2wDcWGaAw>p{Y<`XfAZY zr;#{@2)%`_LN{TsFk3hvd=_+KA9(naNJ)`WQ>nQWBN-*D_)WYa9u~KYTg5%%QSmhT z-y_Zu+lrLt@(v8?r^5)KFS1 z-WNQCjeKK1gm1~O=ZpCv!d<~Bc!*ZvqR>*f&R600xue_(uA8ohu0mG>_eOV;+m~;^ zNAbnLn5TQQ%fofqxzIV^dDh9fmblEW{_elr3)~^@6|Qs6YmWQ&Y+E-QYYVV#wso-A zbHq3UTt8jI+&kQ>+|AsdU87wpSE{qb+1&NiHQU{k7x)W8eQ`Zv<)}Ch+RDXjAw_V( z8oOb~d5EsxuqJ+pteS=Oe?BzTV68I~mQc|n>C3c*uEq3crZJ0|70gOz4YP$g!aQJd z7+69RmIaaJ4vzjb(SSy;u=_)@5$cwdtdH4qAlFHA+emM~h|fpPz7z?+M#%cGq%$ zfjweeMa~<}jn2u={?6Z>b)DYMe8(9_cgGKVcl&=foo%``$uh)JV%}+PZO*QkQ}NTJ zGs(+emJTR+UDTlPdj80~PPq$mO0th-ugYGY{a5z(?8Di2v-#|`IdgLJ@@xgCi_6RI zn^WyI`6*-;Yfv;(Cuq$c`#e*;5)6mEn;I`0-9}#@tMPB+Pwyd*T~sdR6Xj-QU!{lgg<^rCfr3$3t&T}zzlu*(B`UHb)F16!Q+ zkaf59g*C?Z*0#>x*&=^2KCimHn*aL5+k_9^U%JOnN$!>Pw(w}hHdjCT zoN|CZ+D9Ik9rB{e{qX#V8If}%y(7m*EC}yXH9pJ`Y71Hru*Y|(_YZw7?Q*4^dqRuS z2cZey+Wj3UuIIk&j^Y2|2=MxAkt(Z?srXRPl` z-|s%ljPnc`db`%Cs;+p-l`wDULG%{7D>IpW%2kn%QA|_@sAj6BsQgvil(~u)iu3Z0 z@?d#A`8?#~I*QSXuE?ezWWBjR7;kE~sNv5zH`zZ~S6dF7b>_PjODY;xyff7{4JhwW zrY^l++@mO`U}b(--jkfc*_oLGGp?msQi77JC3z)$j~nyt=I2+jN8Sy59sHvCQ}tu# z!Ci3`L^}{{euMBR_DR+$}gJfO_ymZ5>?Dv$lTe!BU($GT$O2VEOoYwZtpZPj!|tZX5- zmu=6kXNPj+a;4&tyq7#&9w1l9pJ6tV z*uhL)>X`V&ZFRJ&pKvYfu(m*01bz8CyQQ{NM7A<*DUw%l|5um$xblDm_*l zTX-vfVQ!Ob-^@Dc>r-_pdw*sop8T=*``@2eyg%@=)8nYS)Q$hH%CDZjR(dDvS@`F& zw5FzK^zVkPRc_U)-tb|QTTQMt+*Rj~=z#DO!H4~a`=k} zq{x=259+TQn+BW@z8K1dT?}~{c))j$S3|8`KAia|9TjLnCLSOg*p*6uk2LSW0fx~3 zs+uCMMe-41RW@u^&~?9h#x`C)`uDn?x*57c-As?`9*d9xs%U-HHxw;p4yG2ZqaKkC z)Gm50n=MrW#2ibV07n4O#qHj_sNmZ$~ zkm4HVNVi@zJ4~hJ$I3aA#njNe$g<2ztSMHdb)Wf`>1f%mlJ`YZ3)d7d1#j|?=J(CN zlD9k8l>H{Nc6zfEWzv7~t-f9Tr2Nq1&DIz8C!ZcJxk^%pn2-TX(h!HrAnPN=abyl(Jo-zx@5zsDokBhsUm#|>S7?Hg5vER%|N z*S3x+C3$~mu1;;8?ELvSWopK?+@O+BON4tr#maT+&Dxc^P~8*FH`P}~U3n*2f7wL& zbY(3~Pmft%^^A>tTlfY0efL@H{k!LU?PTQw&PFwmrVHQrg~CW_Dm_=$NIg=&%eWxm zT8N{HAtF0sTEv^GHNujDYWPnz7J8=Yrf80;W-6a6W+=KSA{6QJaq^3@N8Ax-FH**<19V3H0nasFx4fdgvh{-Qpr%Y2Bj3!{qg#+$;sN0+-ZA&&Ela2`_&tx$mmL1LdaGSW6+y_QO z34EO0YDz5%%k7m>m@+8&bMnZvpIN4YC{vzeA2})iTkG_^>;1_%#h7L|;A!-Dp;4-% zRqa$=)IQojJl=X*3~P<`eBK#bcyITt(4J7*+3tknS32}IhviS}ANCyAJLw&_UbEXU zFW_2OQsnOF6E%x#F0Zkr+NAJhA+7v_y;pi%S7%|R++G$V`$yJ5{y=V%-vd*T*rfyAnoE(tc`DbC`l^>(OJ3k$N_xy$Xk?!8NTS2#W-#PPW#+y@d zXL6R?UCPga4{M%n`m)`Lj?Fve{ywbLriQC(^bITZ@$jgjoXDMGRx`7ZZ%buu<-KG{ z%r|MQE6KLxksjFih(nBG#>SiH1PVty4mW#6mPll%sk316^pgS zeF7tN<@>n}uC0zFTYzGD2u5+4I9uE- zY;q5C1X}cE{}%MjKAPsATq~(oQv2i?=}U5DrCV&%BwBIKBgt4lU}ezjpmu?M{FZwU z)z8y(Ro0UakX@GrDO#y6Y23QU`jejXJcIR@wS!cnWzn=+oaFk){=+)l+Qzohq2e!- z+Oh_k(O!f7t_KHH?GP!e)~T8?>Oi<(SZ?4L-!iWh-Awf-JY#yvUU61#yeth!ZzV64 zb(9U}erM}4UFiqZ87h))!<4aM@=MC`8ZVDUo}&y0ylLY`?|KHkXE&XX`n>!%){|;0 z=D9sxcN`z=jqFLb0Y6Uwpq}D=*11|v>ebjxh>tgd(&BUyH>j$yw3Yi%`+~K#0f)qUw$7y z7*AaP3A^~=E`vRW;|u)hepRM-7U&9o8dgneTsIU3LGcV&w{1Ypw_9=0urVk*sK@ zWR&$4$+DWYn)rfH{`RB-LC< zRAGY9pZ9Y;vdyemRMI*>ChJaW{h#p(7k+I0Q9HpW@m=DV#E%L4d zG*2|=S-kDtoetMgx5bs_SZWP1wJlzhH$Lk~`u?=j>8V)}1>xl*9Q7!Z(&l-_Z%^>T zu+~+$FyG)zzXHQOU6S%4cc12{Q)C6zmwCZWR(w|-)J)gMdXHa9amj z`dLD4_nnfskJD>YyvGOmhEJ_7*4$LvRck^G@2E*(h5pqIH#A=I3-k+Vu6RL=A;;;x z+&)DkwNWc*6STKAA63&7R_-m+k-kdRrDK_ivX{!gwSzq$c=z}H;8*Oo&-bTyn!a2; zL-vl$b;sMpA|nW`|WYA zx?%_FF4G!Mns?ZpbVo_%_OZPxpIp>0_g#i6wfWESiE9$3B%~#5O$XIR`=WDeM7I(<|tRm-FSu`!_l%bS+4x7f>M4^*yO8ZD_LK9 zp_I(8ab0k1wU4kjb2M;u6oyi5WH;55JUQQ5L0iI-!;2$NM#-Y;MU1HOEjZgh#~9(2 zs%xd`qcSRIDw^OqrYn9b|Q39-b+8BCot<-rR;z?Qu z=>oND)a#X9<>l;QdOq1BdI}bI8+X1d*+pDU-Q(SJ-F@6n*BsXuXB|90j&{s+WILWY zCD&R$MvRlXQR8WvVVFU*ofL>Ic$sseb%SYp$)y5S?#E33bUtN%^6a0llbR*1NbHj^ zJ^s=+#pe_6zq~R$Q$Lz<-*m6m!_Chcy;uC$lEc{M$zS<>t-htPZ@c79d%E`RGQa)l zmN)BfuND#1+4F)NyTVRlHJitnlgx3JSZfcP%X-*Sv*Ky#`NE#Lbu*JvKP4|oj!G@c zxSSVO_S()-F{(XYC;T%*G*$KC`l`c2Cj{Q``Q+I^+gaIHHkUoiyl0NFiFgi-P#jeB zQiRGm&PcBiH@ddk92E`9PnDi6T~HoldE_i6{gu5A#F#CVYE-6`#jX!A{ds@u%n#ABkG=J5RZHI{vmQD{7R67KZ1}&ipOyVX`x+ zB5_mVhQwouD-z=qCj9V=vwms$aqzo@S7TnBcwYDAqPI6be@dE>XSS~7e2tgF+t*b! zAJni6?+b_VrB z>WAIlC)gcb#B9J0Wd>_u`qSa$kifYwJ903m>1|`|F6TSp5730hGvx`h&f7n+L4#ah_su8Vhk(PWC`BS!J3otJDQ%&BEVi=FxD zIkmFP=^fG{Q@5qeO}UfOAoW_RkeZO{k-8*VpOhJ2<6Fm1*Wb(E{(OD^jqisVUu{WE zawnU=Qh)2ugw(4!tkLS0o!V|`yR6mPCN1lXi~JDKNAicg%aU|F@u_AvHo~1ugPF zU~KGpMKfHnft^alNU6eNAy06L^N0t%l$pccVXL!G=p#fX4sy$#TkXT_j~%)0H>A4! zux_8v+>p(Yood#tP=*KKpx7j}sW(nGxC_?xtl ze1%r7pSIfOX=UGvHs{~U8J+b{M%VP&Y3|gosVS)>H7HG!c0M&OWp?tSB-f9SxVm3= zeR>>QKX%l|(_fnWFr+aB|5#!um2OzTu*ktNpBheU8q$nwvar6brfi+LRKGE` zh1HIZ)<4X$N@vG%pcDbKEkrC4L$^j>Zl<~d4t zL$yT~MZXlzIkmPhGh=#NHmA%|R?ozl+gWeeV_d8FEn*Wg4;kz+olhszSLj)E4LXrp zNZIjTX`mD+{>@);ZE%F!wwY7P14{=L9nN>R;+x(6H+VK0XA6-&<=8Pz_x+cjB4gZEdi9S&8YU77ZA2i8p zaH00m$T>l&UR#wxl;B)yxmSLnG^F%dX~S}5MS{5_GKIm`%^GhmHx-qIm)eSN6(1}4 zTGj=-x;=zuOcQ0I?!IA@uQs4sU~)h=|Fb?V41GP?s(Z^{GT+Eyv7zt}f0Z94%op!V z4q~M?(7S0b+KYN5^%aAJ8T>&$6Yq^Wu)UOBJmQRtgKk!(tC!WR8Z#;8POZApz7gMp zGksor$dm@AiNL1>{R(_Wfk>D^&PcbZBxEcyp}hRx0LhpS;}SV zV(onWTdzIdJF&Ms!MloAyzaJ2E2~D0;E8>JWtS8XRO+q9;v7eB~r|>m|>q2kwtH?=@#T20juW{9|zcMSzs}y(0Kb1Wr<7Mje zhAB({wTIFXW@pr0+lU@dM(*<1-U}qU+JE_Y_CjMwHJi-d4D>Ft4abX#-QB<$!ItqmGkv zn(WawxA}#spzKZQf2GM~qblmzs=9NDzr3T??)A{ObzrmL9l_m$_V`~j(w=4NJXueA zp?K7t;$!`|t5C!dv=jYDMN_r?2Ks3^7@tMey@pL{nNp;?%ztJ5~Cu~*3 zu4*CCeD&(pUWR*z&i3zV2+`#*Bkw8U4+_Sew5aW@150bQ_XKp{Y-SlRdcva z?+oWP(i*BCGZb$yv}`Fom3kpH#J)on{--;b|IEh_Rdv-;=E&g)vRuP~_SWT8*N?A+wcy{Vd{+i^9%T0Z^r zX~CCIasMXY%{g2CnV+t_Vtf`>5WT(bfQH6Kh4rIidR0?|Dt+YI)9f_ij{UZIs_9aB z9n-doKP>fa=j@9eOC6`|I$Mc(tEorX`jTCUg`mqj4wN`(Q!Bf&1-C0FP*Y%X_1wpDhUYsLsokU_um;Zv#KkCj~o-(HvD;LlR%eozTTj&Ckv;mO1<&stBG(`Oe0H~=CY3p zmujbGnf8Hpoc5UJr24$7NV!Y-P&rd|0Q*T-bv5)IJ>Pro^jxbyuA?=d6~A%&DPPgy zn&CKV+ix9dO|`mg8ytgOjd`;$R+@tP2bwyH_tlIPERGW-UM{Q?W{9T{y|rnM>BPK- zcN$48`OA1pN-D2X^0T0EUgsP`_PVU4S)a0cXUAu^$(fV$XAYIqC%aD;l{q1ObL!IM zK}qcsmc@6DvwZ&?7nu-|oSD(Hpms$dzf)$>9}LK^+An%x?W%Qp#ni6p8?`ai;MYZe zSCL4``6c#lmPr+tO^K$X75|x^ShnJ6{HaxI%{MQv(3pOdMU*uvYgXR1Vv=>Sv$MD! zb3(qhyVqT##W%%ohTm%+KktkBB#m1!mK#ZjkjHpWxkp?lC6Lbac4jX7j$OeXVt%Lp zBlV>q@rf{2Y(SbZf5<0mD6gBoy5K!kvLmiXB}Da$>{68qN%H&Ma7nvL;m2MhbHqP| ziNZ)xPD1HF*mbgDihIhPs!Y`rRbSOBys?T@j#t)HEl@YmHuPxc>17z@UF^Nq+rzL` zAFQoV3}6pQ!S332ou$HLF84Gws%UIUvL!ohe6}=!?#r&@D!3EeRrYsg7nLaW5W|F7 zd=LH{KUU}=Mxw^xxRfe(6n?sH+clQJ@;b#k@>l0H%zBy8B4cC5_RR2XZLW8|RItD3 zdT~_AkK)@!uL}I~zGl@+Uy~e}xH8`L-Squ({IDcP+K9Zy2Y;#?A-|Udh5f#;( z)vs3@88Irfng3$1E9#+KmbA)g0CbI9CXvVJsC=*T&?IT0|iG)L%bCc(1_A30x{8)%k z7`(CrNELh3y6An;eX2=SeS#x=Uh1~WWz+%pcDusrG&izLw|21ian^RP;k{8$vC+NV zX|zwa6qy`l8Kt?U(dCya2H5gl-eduHQPtPOXt-@O`d0T<`4kw`o=>%-RL$hu*}e2+ z)P{|vdeOTW6I)BBkx!8~k%=MWeSuuDMoslcczmb1G-<~%zSI8pi7gI(it^TnkF7JD3Tw21Xlr!03 zCGTzCR6lj1HyhkFynD5z>dtCe5q#)t{}iuybsKK8q;luk!)=GK7OHLk$5HCcb#=fK ze5_OD_-37Eu3;KcHlVb3>D;ndQzz>+=L<2Movdu4YvAQ;eCXrj+sLQ0_fF3-Ixn?J z-ihnTXz3$V9`%SWWg2k&T9xCy+DZ41p7l3PYvFw5RN%>WasI-W~jz z;60(w!ls9v3fUF7$~V?4O&g*tWH;k2j9vI592Xmtp7e3HOy*SVR2^1(YIyZR^)=N` zWp(8{MV4ZN@|J3drlYQd-rzOe;O|{vc;$6f|3q6|Rb8g0!^DfO0=r;!SmG>8t&|&58s+#KVn%&xbUAR8f^N!~y&t9H&^b2&&HT#tJWuF*^S|v`w-rE;c z5Da!cb1rZVc6a7$3FX3HVxbr)RgpO9JL+dfiw#6iQ9$M~2?fG8;grx{i032u7H(hH zeMc?(9P3f@LsNR0U+IEkRZ&WT1#cJ4d7tyr^Njgp^B?C27ECX=Qt+c7qu^t~;er8p z19>}tL;mi3SN_j}enksQ`j=;$y&QM>$JXz9^FcS)0=%23#3t++4D3p$ieL-o@*TFv}qp0MY+jk4Zyt9-uVo5EY! zQMp+8Oj%F$U3EqMMB~u5K$XWZ&tgx}bE)TO{e9gDO?%Zx`2ubhlZ!gqqo_>(Km{|8 z*p0HG3J=u|b*$#TcChZ8?zV2TuA%O+wu$zP#$U5Ttyk|+1*rBaDP=Fk0{J{y7tX<7tJZ^R^(musqnAD4ut`Q zUWH8xw-kC5-6>jLJfNgusc#uw&X*f2Mw!bjUu;_EG51n&J#~=XBCoCLtBKbh)1A~6 zYS(G@sd_3B@RlfwYA)Ro&huLSi#r81Pk&(V>H&WpJ6Co1Soa)MFEw&6!Fi1^P|T4| zQ_GlM*sGtV*sUC_x~00N8lbwY{HjQlC&~)BU~UC#WHV8#MzL*CZz@owMN8IgT9rLcC30V3#>uj;`1(JR>ZW zno@6QPnPBOaD$!rs1%n`ZK$(UL;4Fni78~-qI#-XeG^hO_JKE?yI_>Y@oC%%!)|m3T26MDEyU$ zwdDo8BR;RRE1D{n!*2s+B34hII1?8mTPph^i;~Zk-w`>xgZNRKDJRu~o=cCS)$}~- zEV&_F5ibkRdC@%ql$KYnE3T`qN3K{`yz8s$vFng)yerK0);Y#$ax8R6_O13h_99e7 zy|WeCLhVEC>+O5&^X=jGqc(@NgY}f9k;Ti>!%|>LwyI#``Oe|41lKoL7gr}|v33nCH4?;^>a_F;r#$jSAq!s2P4r#nL<~3);)V<@e;QLZN7dHr;_)f=a+P%sW(mj-&RVBGf1?6P4mk>>TzG!jWUn^S${@_ZWAg zt0(N-*IDW~j`st@9OE2Y9r2FVm@9_6SobA&H$IlHj{45Ff|Fl~JLx;{DEI^!JM z9FrY?;27l?;Are1_S^Q+cCG!D?VxS1?WHZse%HRpG0fS=)x-T8A0ZS9TSc8T1$$9+LWbRpfFxrLSf81@kR5Y>&3*^77!xrSZFZeY)_39KJCn!C!0TnE`2)ZQlGO^p*r znJg7~=PIgcSHVYPWg}%HWTRxGWq-;B%i7B#Wlrunw~lMivD|Cqs*!AcR>7t*H<%wFq8Y`X;{7vj#Jw)xCOlT~O7FG*eg_Wp*^%U;%gLtR=A~Ng@_a^rT z)Y+Zn!-PGUnH!_3wu9&`K1aQ620sq9maE(~-KDNCt~i(5)y{nq`xz%Nw_gza#7W|Q zRFWP*C24!nAQlUWs3mm@)iKW>5kHG%SmEY~55%=%N4$T?7QW)DOzei5Ts>u9)cO%j!L%VVAKJRM(uhU=}f)C8b5*V4x)8}Y8Gn%=?q%kHYgSpC# zXEe-3x*z&Vq+U=TsA4LV9!Bq{W9f35r%Pb}l|c0qsz2CX8&GLZz{rRLid?8mZ;pI3 z6mm8ISM;m2Uz#AbL-lbT>37t}Zv)dS4%kZsduk0(RxbW44n?)IOUMU01tA#LoelfE z77MT==Z6~b2q{R?pmI4;ybD_{6DNuz#XrOum^*G^^%Q~X*8|{&SS1}eEjm2Qy^(fE zeI+j`0dG=wpwjuQm?VZtbHQ#1Mh*Q&NvF>e3sTYpA4?aIdEX!qkU~^G_?(L#5L+PwUPQ0?Tx4icYqrg0;cE$Y7=#e zx`BG)>xi@?@Zc_L59+5*p!Es-w*pzF6*ycx*a@k?Kq2nr@U+K*_xKLXj?v(CIuXfF zz_NG`{42rc>58iBvETr8#x(`r+`q*W^?C41uHX&KJ7}8@Z=^!!H{caq!Ig`6vsB4N zl7Wrz8#orDF@N-hhyB1ggd{e?WZ3H+Pcu`}ZaVIq0e@F=l{(?BS%{Sv;7TdL>7=P7yk+SFR^wf1HCQgAVBh12VlVJl z#$ueQ=)Ezj{B1x}0*+Kjm50px6(~CiHqLsmTFwGxdi1`7yh3KPgRzzXF6bWUI1OX1 z0}JRCs_Naaq7@vsTj2jqf)!dLqqm0!W6`FP?L8A#8w=0R1CQW3{3-)$s1@}a)dW~_ z!Y`L_ehJ#ng#9XQJR5BXL8DgCy%Nv!kw+^zeKw3#0^ZSa=-m_ypmapT3)rzt@&`X* z6~@m(Yy|+Ro{;Awn0PZ`_iEtL1|zc#{>6FCfS=`v#uP9am%wHLV1t!`-$x-A)xvnK z!P$ubzsmLNtQ-+C6#RiZV8LYoW0xUaWAHui!#<0o`QSz#fwg`BwRXvgj8+boj~Ve3 z0PhTgm3AOb4&(PS;I5KoRms%s0J~5A#b??Md#!_ZWAIGh0vPcJ(~N*cT7fKPl_dB$ z0yY>7E!KkBwG(nIhu4N6GTR}7I-{RT=K5M-w36pG^%vLccUY_ou1o}f=`V0MHsHz> z^wAMMX%5f#$A7Eg!K1*&7GS3TQ~*%0`=G5YTU`_F_lv!GEO%y&=l%@32L5m<-pf_;Ku(~Fqbo$z%& zuyh;`AUt;fRdf?yb?9@2l34mi;!7QA#+tozVLr%NH7{UTZI|v9&Gf# z+}Ix9%uxmV+_B(ZEd!b>`Jx*z(kJBhO8#&vJh2qkWl20Vz7Ct@V-+_D>;5;tEanZ* zaClc;i0?MY#TkO{=?FvC4adypfE_L(H;hMK?*cDX&eijPhB?r*B{*N{;Op*$oGY*@ zyNh0)jid;Ey^DSxqNNp# z$;$6-I0av1gMVd1#HC=~xC~URMTAza(566!(ZIlO;M41|GRXQhBV}W4>W54^1hTFD zmCKgHQlpS-dj85dm0Z$Fq%6es%Js}3Xw(m_$Dq%p$a1T3Wh``z#ww}^S-NtCnDJ}9 z+Zwtq{DrqIz}rmx*9#f4J>(pWJ{JScTkta<(bpI=c^)FFlEwTSdBX#(mO}RUU#k-b zy#59FKL+HkgAXf@<-pfy%q-QhmM%udNy77*3YmWj^22Ma05cHpCm?SPQUccSDd{x& zbxLi4%S3R|dadst6{XmG&R*AcCiQN0*rU&NJc z__-L-cpZ`q_%*s2bC^?7W35#mo^1~N207-KVjhS%eEn8dHqL9`4_M^n&L`2GKX z$D^@m5?X=|p$|xkyWmauDK3YjSUC1J-iQa|1~?q6;S-K);^weNA3OjLg6$*mRJg_w zICnXg6V-@DL=&P85lZ-QIzEjT<6gKHmf~_a?=5r+&i@ZOiyom|#NcGy8^*Z`ufg-+ zT(z+P`y4|n(JV9vZ9-R20SbrlZ^8Fr3{LFDHk^Z>;A3#acsOf&+!D8dPcz&QSI1iH zM4!ec;x8eJ@Ozl?2V4M=lM+(G4gcQ`qgCPG=oQ3@MStM6_$$^D^@)0fns|@r!u8&v z?J(LUkfkq329fE5`$4wV_&a2778(H<*$!DUK)$x&%lI1JhbKUOE$H@tkzbDvqbH~s zavOoG;TpIKj>U2CeQP`%vV0!D!})-cLO{k%IC3eTghxSqX9L~pc0u0q4 z;t3t$!JqI!I5HL&0U9==rD#1m2gr$mqYmS@fQIjY?IpM|wn2PnqAsWrYKYpwDA&UN zIS|dJFuGlUfnV4JILOAgAd2lUgFnIk$Iwkwit50)vT=1{C^3(iMf4%65O&D=X+YTx zIKP@`MU48dsuGAFfYKny=t?vijYAs%VFX}kES>{DO|c)aHwGml31Uzj8U&f)Q4hQq zMp+1RehGgK!I2R8Q)mGih&rJTs3+9iI&=|bA`zf*B*fqnU?LkA!4W?p!&mVhyaWGw=c!>3I0A8lWc~# za~yIWfQncMkuSmsGlUD!dI-*+02sUjd(4ONj6fsN1T+^=brQV+gw%rboPzP|i9d+0 zL^q;25eLZ4hgm&=vE~AyJsB-#@RL^)JfD_ny1!8tmk-hiRUNDuM91+{A=!U+-a z3s_Z^00oOMn_Ge&5*+>q!n~%>z4dg*gzXJ{qKx_uW zD3f3mL0Ab)=mxZYhuAzs4`4K30TBT>P6t<}0M$QW4%eVU@1jr01iTmxn2yH^T!Eef z($_=&4xzV53~aa_{|k(H75Jbr#9$8~pe1B^A$(gKkj~;3#28`%(F5XS2c)0DCxBIR z0bebMVZ>xWUt?hN7r?Vaf!EqY1eU=*A8-k9c0PUud#{4%3*LRzw3A>aZBQpaNdO)~gVam*_Y0qacV;Dlq3zIL}mw%vwO@MHtO5 zY{djHKo}7NY1{Ybd>c)0d{dCqvGXAiJSB3fQ+P#IPTX zY#8Jx4QjLroHq&PRu2&00k-sm?frqfI{+KigKuiV_f25G9Yt>dJ*W+z)-}E7Ahv?Sgsd z!e~DO;Aab zS_6G~I&^`BXa$^SBQWx2=+hhE?=`@R%V9;a9D46Y^f&b115g7SVK&2n3)-L_aKukE z2)gG}Vk6m_`b@>sHR#_|duj$bpO}j`p$|fu5F*40Lxk&s3iW{_r=n)aEbJ0G3X!mV zxbRJwg_5Bj4iPoUP2^qj4*55kMq=U;Fmw!22E4WwVi^v(JO;6A1}q$d{(!$O0Z;b> z7O>)2sJ3=cX)(ZIxe&>lFxPjms;C0Bd5$m>31nxoFPTc}$Y;c0h|46XtOLN-P2g-p z&`w~3AYi5mP&)$wX)Lh9D)_b?N`>*xLc7p)sJC~(B*&ps^+%0S4O9zqITs=?ppL*0 zx1sN)19tv`%!J_rsLewVsnftaCSb}Gh<;N*iUYPUfS5%fElNOrVKx|zf|?f-bz#jB zLsSAA^alhK0$zSVRj1%tfYTzVEHU)>FVMS|LKo->oHzs48xH`JcIbWIVf!SgGaFp( zDqJB0x?^|vJ`<2rANac?(Tu1LJy(D@6$8q%fob0ZnvX+N$3oR5L!|~mtyY0v)e+)3 z0a%>bymc2EP!u(clSJppRx31m(My*-rRfVbAcOzkj^ zRj~4$4mi1vN{|t%wlf@86IeMN(6$cHv>PI-fsXJ9)^M$0UDF&^WhY_PbRX)&E4&aM z2)~6YfIbHr2q-Rvl}-UVfQ&~H^)TX5?BeI1*U64Y$VG>}9-Li@Gk{UQL8qt# zb2|W|`wX9_z@>X3%PU|-u?;%i6^Py=d>2+pM`8Y(pl-JVcb^B;-GOa;@O0osF|0%m z0(SZWidvxN&@);B+Uf#!b%;g*ffFPs3ceZj-^%AHbfJ&XkqFUNjMMU;~bN3nNUxF94VA0M|odMIr_S zW#Vc?Z(<;CIDl~Axd@Nn~%6Yv7c}eP05Mma&j3tiR?&5kS5|Tu>m5Q0)6BE zy!Qq6`vRyb|8KP!2F%)l7*Fhk*eS>!MCt3HhiCCU7h& z;J0$K1K<6>{Rbh~pN04M7%8P+(0A!dY7u!7-x37wVW4WDb0Csi#8*cJcs#idxT`U6 zS4(OK8A2jr5;>7F)1O5-k{_}KiXBR%yr#UVNS1ezb{3CizEk(eL^6ilK(?ep=}LMV zV`lu!L#7+^n(jk~(sk*}^e!et)K^j|oghD^n6A93oS@vQXfEF?eJ3VFqi7{1CkFtt zuZ8HWL#Kr4yfx6$|Cd+KGM>NP-`pQPD`hB zC2xxN6yGoITGFHROWE6s6fpdTC`wK}C7+XRsR1-Cijyps zy;HnU)zOq|teO#;Me5C}LgjO1f7L1VR_zac&7j61H$!KH4GP;3T03NKkj_}5@1*ag z7xYz)JA))4?LtGsMudfgbqtk-tPRRHw9&uRuGB15-&fUBeNnDf)=}P7NED>}kTg^L zlvzqOCF-L6{3&ia=i{mfchGnum;6d;>Gf0(@-)sDhVaw4&hTAdL4$7-S)_rgPRg;F zOY(Ja-?w`#waw#AV@!8UzfHYOPb#EkgNjn}+GY>?`Df;ZpD%LO6)iOXVE2*#Dry*8 zhHs4Gqe>#uLuTvODbI>Kkq7w$KBMQUqpx*e<@{2naN+O7Uvqx^`?cB^XS(t0*zYGZ zS7x8gdt9`$%vt%yqP72YG;(!vCwpkNgst#K`?m&~@S!M%XiD{A28bI-b7b8V>y*1y zYt$n&4Ygw3SKTgsTf4s>-OZ_x`bv>{1=yduH z`c?WX`rG=y^hx>?I)!edHdQ-BTcXX<#TqsmGlE_R$A`QKJ{I)eFj@CNEhxsxq9yf3 zhv-(6mpG1VqAh%Opt(QS>tc_x0hae}^{?fw35D26exS#So{1|YzoolnNamA`kcCP$ z;x2SKj^=CoM!4;Enf0NGseDylRMxiaSLv-%Z|RG&)QVN68P;@1TThyAMPME$;#&Kc zvE5w#?5(WJEUDJf_Cc`mWde+yr!`-|;K#qFY3xv#R5vh#DArz!= zUe>;^iSM7kn)G_Zr|mf(?L%eL5>7Nb*nR!L!-E#}tkWvK+7;P;%d8)=7ruLQ?)7@w z_2aDUr{%|-BfYcP#rF8J2RYxqUHim->iuJ0L9}z2$P;?G=7YxGHn@Gm_WN6JYqBpT zq^7Y-d~EONPSM?BR>q3sVq^P9tqJ|EdnTjFslI%B6;no8-?D2J=dHIq2J~B;tZ5uP zE8=kUub90tTcWo{jg2}VeK;<>+J;(u-2n|3|FNLa>y*)nnNi8w4`fTXw>-F@#qZg_ z>l92b`(=$~HT+Lpll+4?E6fdC^A2R=z5N3pu|@n=-6eQfWPGeBt{~bMR<7SE_mE6r zqf27DY93|2ZV}s0Ig8!(*`{oPyRVbCPBgVCk1yR)@}@MqVzsrEdr&|{>}L8&oRY!f zED8&Ie9K&0Y-22gEaPqQuFu}(dqkaTyAq4# zpr<3(0y@t!?g+cxKDIKU-A+k10OX4Dlrk`$-#P6|a;06xR~vQUeJj1oNK)DbNe%2Z{snoHY;;*yS6= zUU5CP7h4vZK37z&I9O5Bbl&pG-oQQG8yd*vw)55bXMr=m+UzaYZU=1-vfZ{`x8AkR zvhK8)O>--Hmwqg4mlvIL=~vj#L77RJp_yAVyx;S_C_n!5O7pnI?M_!0T#%mUE}Cwb zpDy~gvU~ylD>%Q_!xlfgOz$SB{Y6z%IZK`<>mw_d z*HKFi;;^+bcdLG>sjtn}Zj-D?d>pTi_@-y&9hl*G8~>fl;2C_5)H0_2D&qu zh~EoWga|C9V#KfHO*NPG^NcaZjXJY3UF^lp{nK3yZFcj&=GNAD$36EL-!|^Mz`z~K z9MoE<i#Grl}%G)=;`a@SnYddVgeM#G-I6{8i-s7*jk|Eu_Z$8YilajW3M&+fY}2iIDheINq6un4IQzjyvA@ zc)KJ>(=O<67$5OhWO~Hn@IGOhu%z(J$imo{Rd3XMTANOJQTKTA$?C0Rx&&p&wWP$q z$t7~kc8qn0`41rv-A9_F=%W0o=qyi_&J!;aJr?zogvfWP8t8f&`vqqNp9p%d->+UR z3u1Cm_rMc&h`Wl*Z%lVN1SRglWKhQDok3Y}X*!R`@%R9-p!{448CLF-0 z$!hd#x*L6ne2*eH8~e%`WgB76sN7Y#*wn%@*|x<|-=%hQE{SWrW14NDCDZhvvO#5B zWrxb1mG+9#a(&t2;w}YGe%Hu)mT~i&;>*QPQ$Iw%JMo%&Ip^86f3o`d`M373 zwezwpT69`HAiAPf|3;qX>sqyHd9O)!y|XoA1Iu z9i|+tIj##a+%jx7+|UowUDo8NWXf*xvr@fersxd4kAx?-{6GGStiyHHQQf}QmT#-$ z=<4!%ihVD*G}M=PL~fxnsh8ApDuH@I4kruXZ9p_WE?nXI_;0de_iD#jTc*WoK5Z^G zFSazcR$8anF4#`l#@j@;?N*(2mF2tHY`ReyU(u?pc1e|@F$Kx_=kxON&g7pfm{K^l zFtngYRyc^Y)CXd^T)de=jz<9u{rilh*Fa;zJM?JMV{-9!?xqr z-PSbQCHp=nZxm-@B5x_AWnl0WTB^}Kd=blkTy4yPl{RpegHYG7USE+FH(3CEC{*aCMGBbezT ztvFu1UDTIZK&gpFf-#WJZg(xQ-?EH09j(|{yI7Uy)i5zx2&poT0A{ZmZkWSpZ@J5{bBt3pYNkS;!gv< zM13EdIXt_4ez(%?7K$B-o69)8BVu-fr$%_v(Pc7p|)B zA9uK8uO+EcQ?{n~S7EQh=%QXF1?5LAU0fUeB+*~oR5@99KS&ogHsVQSlPG(nGV*4) zA*^G_grHT1-MU?x$ttO0sC0^`6BUIM`TPE=zU$sYJ~r?#+DCVj4b-#^+8Ul6ZH~K; zkW}SN!o>I&vErD~QEbGm@YP{8LZ=5O8e8dZsIJInh`N&}g*O50o8mM0zXhfVJBbQ9 zLQ*6%D)*}vs=ugTsn@Dg)cLBts!pmO%21_M-c05aComRbgU~pT>aBDSb=`29oTaYW zp8nq6{`$~+>Y#SGE}O#wjCVVp75fs|HSTC7_%oEKs zEhW}D_6)~Q=SbIFS6$ar=KyCFXB+2r=LAnnHCZeP}HAj9uoaXWm-YviN=BmZBY{ z7fhp_Apse+RF%ta=Zw=oP_A{g+sJ_t%cNE50 z_AVqT=%((W>Y~gn`b|9}9>Md%kHjKsC9_%FQ957dmfefEA(7(ig&3DSXi0$Nw zaU*A*um?q@w6g;XejC`6GP6aNo_lvs^Eo6^=!Y^Nu6V$!@8)UmzC6Qfl!j*(D{TIjY^FtI!qb zPU!mU!gNmUFYOKOXzg>&eRW&aL`6SY2gzE|2quClVLpf-$QG%t=o~@mVHJ^%=;txR zVoXt2BP3zng3}G3bi=fZG)R3--CKP@wL{6vIq4(udgdfGn5-ZslSNcrQK+R;}72C`6)m`X5lfbp3=>7n_{r?rJ||4P~wH$ZAGWJmi}elX)N}L*)Hrxb`2|KIrnf^FNelf zY_4XiS{YTDWa?%~vzNF|d*iqY;XJNKEWn2aQ{aJjj(e)3+)7x^nyyxUuDDjNEW1{` zyCCcL`(IyvjQ#5ST=1#q=hQDNzhC;<{dZ9TSvt5P!?elr$ok8c=GfxOVh3?{B2D5| z^)fyUyAky==3&gKsE1*5jYHIGX*5L$q`xJ5%8gteS6%lYcSHASsQkYi3+?H)3Y)?) z++|`na%SR^xUX`GZd=gYP%^wl_`tAZA+v(28Kk-{8bTeVTB@`w+A7lIGTBmCv86E$ z=?_$A`Zd#1vO?Zb-AHc=QiTnQxD-i6Er?8wxDe(E85XPyiZ!k_#28-dyXjZyx@!MX zuU1CL_e&azYSZ^gnv5hF>L~qGlqlUMzocxVj@H!DOi_!eC6=WA82yYO6aBTv5|61P*-!K0~PJ#{*8d@f5Bi<A2=8FF z8+)E@?fvd;|;5ve&5L5 zpZ6?(Tj8*hMHLd8$HNPU#f>zYkVR4Dadeei33cLfBKwAP(DhZw#P`Vcs6Ss8$nZb) z_3;k(YkqlOm`f))ELjDYm3jHI*7PQYe%Wzzu zqL=9f-49)FT}SP1bxY-FSvzq;8=PwZmC3T#& z{xZKdEj8Iq9&;b-8=KJ~axQnSa7H_qJHFXF*jby&X0W%jr`kW*j#>Ab|EYLU(yCxs z&dN;fx2c~CKOBGm_MChPp5U&rTbvzi+2$suj+Mm~-ij%e%}f)_q&3q1(V4);1@53% zv{5!h-P3R~#1Jtp>Ui|6=nqkmk*2UEAS84* z>~CyiY@Ka$Z9i-s><8>e?X~Ptws97fsaCnUcx^#SZnf;)KTl>%`r-TD zt8&j5E-kAtr#t2TG5Dltv*NdQOpq&ddc^xkMO5p^HQ`*yTVt?Jq`D{V&+zyym+Kwu z9_$EMyIO{r>zUu1BdmJ+e&=parEei$1rR?_a!!6m)j~T+&l*%gCxe~`Eey&qRv4b> z$LR_+P1UoN`{j3}72=K}H?60iPf)yM*lf0^2q%;&=h8huQZqcT~?>GxcFsJ zeqsH>+XX`lLJEH8-^jn1UzY!OL2e;mtShf&ZsSPw9uxj#p2_!U#|4#!7KitZ=pN35 zJ~ifPZz=ampE5(p1<1gM1Sa~->_$&xSX)>eRUPl_q@%>K!Bye$_%`x$h-J(qsYn^8 zIi_1+IAd%P)H4VhhZ{EqB;ebX~M&wOaKo#AWkW@gY>#xLq^r1>Xd<(U-b$?``$LQ$2;=xFoGMV? zf6lkiciz|39~bDsUFTEKB`havQC?~Y-ILCw{Nx8>D)tLo`F30_SljIK(Y}>lfgQ)* z_Bh?~?t!k0&RWiV#|KBDL*=aJ{KF}B9&iNgt?Yl<)V4}%OPkK#*OBX-=DzEh$@XGX zJfthj#+ojcjV@Z7H#28y)<3_9tXbLr{+^cKvq)V!xx91bdDB_*TuXQBTw9D|wrd63 zB(Mlc=)ICG#Y#YL!^HE$Vu+30^n!l-^_8;=;eJi|1 zFX^4@-R+wZ;P@b71Feyak#|&W)aZ11I*I;YcnaQ1J5zH5Sbmi1tn!)SkUT}URq|a_ zk13?0DI--#ZDzb;udJhLpZ1VJ7yKgRaOly{f{?$0GmWf1OgC0zR$W(KQGAvMWYN$e zs!0rDxu_bmp6)`gquVnpMKvVhvSdX)l~3JIo2;9tljyYCgX&kx8}jwiq2fQ83Dgau zF3u9p@%y+Ffwz9Gf2l9h=k}_7Q++zW+ppw0^ZSJgRF!B(Mp4hG1iCF8Moq|uIOR#RU2DJV{cA=Yd?6Ix1*iCAaqjI0A%zV*$#6H(q?7HE8?@n?H&J_-k zy}&xqy4QNt)&tf*Q#?vZOW%QnmObJb|#os7?q!_$vG= zt}M_$knLaXAL(D`7yKUsZf=TD6{|@d9WF9ROwyflN|~aHQomN$)eO+I(U{bI)yq`l zl_83KGD12@%rQB1L%J57LAMeOl+bdSDp4D3*c{X)q*iDgtPOSt%{RpAGSwN%j*7UX#zD#dx?>_dLXR7AaoW6qxU0*yXOej!w2*i_JX595C%MQKs0+(((~yS4+gjdkS|H!~k?fFUj|lt?C)=Dsbf4*Vw<zGSFSAGTo{zM zJV%#p%ZkXEnR~NfU&-qVuf^h6EhH`YFx=_w)9z4TQ3m8QWh&_t@oG^orat`#H4pA7bmRf@BGsB{C0-{j zlh;+%)4b5W(bd+wbn&_`nkaQurA%Hd`5^j4JIN-*VH71?=F$R;|GW1iOS79i^E{cJ ze_7IZ-G7dIC_KYkNFP;64`jMBUuY?9pfsd`NW^Jqp0JJ|&xr$reUsQO?kK0m-pv{? z*Ef^qf#w8DQ|mn2HG8__xpSi{+5N=b+vD^cX1jXxz0G`o_-?=&uEKrJ8G!o)rm{-e z?&1Z7`T1Y-I_A~QTb7rQA5t*1kT1d|v&%=AURw7!@3UHN65dZwmE4mLQZ>*t){fHN z)AUfcR$h?Z5$~YK5Ceo=fhNA8tkToTEqAwd=fk`406WlE16z1U*q@7L^UzD2U z4&^a*ndX*OsdH%OYyZ{URUcO^P_|QubU^5Xkc+{820b^_)bG@aH7itJ#Yp*esY$F7)uacL&+!`cLO3i` zL&I@%@+dt@+*OvK{8#--+f?s^_uhT8hTJBw2_gO4OX5MxMdh0?o$pjyo#!(2d15-=ari)I+l+v>r&Rc{AT4M>tfev|6ObqO;(3gOzlCAzzCnhYi2XOOZ!yUKOtZU)qWMgDkyb^lTSF6eP5ggLlAd4ak}2QfcrE7aRIJYJ~H>HUqpcRUB( zd9K;6)~+O1qzgG;I%mMDX}6<}quicux7t%3FC8PDf^(_smFt;njO&u~tYeBj0-njg zFeB4$(-u>PX^5FKZ?pIy?m&jYn6>^KLT!v+J z<#XgOVomXDIpluwa&ldI&HWVK`) zrSB!ISSyYZCBjpdE};9nOsI%mp!li-3bDq=TAoCh%&9!W^ zOtMV1?6DME`dUrabGB{vW3bL`=lx<5+qFvtP7X+*@Ln43Hj?rb~Hg zL)m(nSGGnTtGKIZs9XwnUGd74z;E-r#HlaI)KK)LNWeXcYhp82^ z_=9{`zL*=!r3Y#UHu)XCnLeX0*PHGw_G*0{;C|zf@2u~DZ=SEMPwva|KJwo8W_abk zUcRHgGGBzho`1W`u-es(Wz2sTondaH$sqjo;L%l`bC%&WpnSmH?KlhD$ z$<5$?!^)sLJQvIJ&i1Bx7kJCOTYTO9`oQBrOKu&vhnvr};0W#)L^_1q!qw;fpzc}< zinc#NB}?GNC|!sU7V-@LnJeKs@@D>}07`FsiC95ar~aXeDT=0OCzS_p&59`%-J8Ba zCo*T4c+o~ty2vE@CR!(wiN-OPX&2R%dQYx`NIf81P!8%9eVUmsssS^5s0sM+m)z zeL|s-2%dyZpkUq#3gbpl_cw$ELMNe`U=S37OppkexA7VLZGJbu5T1uk5L_io2t{2%mAe?t2Gwgl zBu06{E8(f|RR{W=)vaiJf?-p4z6h0qT4h-%Qf)&WiFNTQHv z1#uWiO2|3HW&8?dLOu88{T$2n;1ORg*pUOjCi;-;V4n;km}rW}p+~|{p^tD%NJU{- zMmUHYWOHgMHIGW69+OSTTi`*^fc~{1v4@C;3=M+}jiis!r|60Bw4xa`lAKL!fIEO_ z^a?bi1gI&SgTv<$kwzXNkAfoc5qNg~fPO7SzXTfeq@BS@QybnGouPb`8?vN^)xZ%@ zEUpEvY76?`n^**j+3}!%j3pj`uKWf>JwrGO-9BBY4c?R1;H&9P+#pPZop=tq|1!Yi zIiyCLK#|GwgwRmf0a4$8IPmSv2PJ$G=rP-(`$7l73vuW9-a>{j6RAKE`G3`{1Dr+C zcmr|?vmv5xo)TIL2jTd+pa+$LDo}}YAhul)iQWq5gcHIoP{pd@eA7S+x)1z8bKtvB zR1Dj9zp)k%4wM($2#)9i+_4H!+k)hYo5T!oi>N@0Y=Y6dKo9Bx zRcJcsVK;$?pc|;1+k+QoEvVLgpvj#^90VolYlzan#4b3pBPg7C(CB{z2h1l>)l={W zdjKeN&kzrYhwyt5=(o!uE^ROd_48Z6oCGw;TOr@x% zPjE4KaZ}Ly&jnq3J3@|9s;E-bRNPaXD1ISI63t@H(WO*NP;@SZJL;=s0`-d8 zNDpJ`i9DhMVxwf3WS(TWBu?^5JVa~-c5Eo}FmIX5%mHQ{GoJZ_angI?PW~3vmih&C z+k9Qah=kR1EbKI!;~kE1*C^9EO;G1iii# zT?P&c6H54J{0;sd{|)M)wlErW%n!f=kSV+s&I>Dq9zwjp@ddzYS$qXg3gMu3ZY8vV z%8G*RU-@&O6rR8j;)n9Hp=W*P!-WZu3lXe~7D7!NgB;BV4S5u@3m;+oUE!197OJD+ zkn2a_$jS!9pMgD6L4#ioHT_ojA=rf=;NM|TO$%X^ZDE{`fImZo_xuii4!?*$3w6C* zhygdzR@{tu18#ygWH_vHq(l=u5UmtG^8@(Wd_VpJze*U6+T&p27NI7MO@imB zHw9YQ#*gE-^CGCQ9cUr$MKGYaz6;ry3Oa5orf)`!VpOT!P9y4rpA1YY|z*LO@6= zHIQlwD}kjX2QE1DpG&JX@Z2z1mpz2qrNLQJ25z6e*b4rRcvuZQfT$UOzv7`r=MfY+ z4C=oNnF+Nz6mLZDg%-e4e!dgrYc*;H>hSI``jOxznFjtj9Xv5kfUeXK*s=lml9q!j zBn=!;HHpW-gKME`20+(%4|!Jz<6i5en|WJJ7kzL=**R zhh@NT)nJeF#534yGx%mIz~#{r%iyhr0{HG9xDT2_ydW^4Cj-Pi(Ak%Q{-1$dZGhRF z0Y^?MxH=H-1o2->%mM8@3FjXK3jBA#9BbjT516bRg+NwDgY#%9co;^&d23)jcnD<8~E z0B%qLo?Hm?hKMJ<||3iWM1Hl#n_Qimj|KpN|tr)g&us8qTIV8ZJDyRf8 z)QcG$2KT|WHVYh4k>EIa{a;sD4jJAKT{;_SVUBA61BGxr4bHTmFt*9yarp(`cLM~J z2(N{E!b4yOlb{2)#Q6Vu#7|h~$e~L#g1$KodeMFG>8U}1*d9ERt-vAa1gFnj;A$7# zwd?{G`G0)IK~>I&>#m2mZHKe$gwGB@;zr2O0`S00fOAg;f7VWj;a51n4szQFqSXwt z)fkY}9sGY=z?qQ&9u5y&?;$u1>w(v48?3depdhHqj*yFcklzI8jorab*9@FA|996V z06s^9Bjv$=vt%INCE%aj2lH$V-+I6abPxL0dgy<{!H3chP_PypgHH4Z_(WbpoNEG_ wJArem3Pd^wX0{9FHV{0N)c~Cq$mw}N!&K;>-NBJE5@vV_Jd`y7pU?6C0K3SsaR2}S diff --git a/sound/dialogue/animalese/alphanumeric/e.wav.import b/sound/dialogue/animalese/alphanumeric/e.wav.import deleted file mode 100644 index 8d384a2..0000000 --- a/sound/dialogue/animalese/alphanumeric/e.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://cp6stdrpayltv" -path="res://.godot/imported/e.wav-6373ce27ee05eb89c9d510ca465a24d1.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/alphanumeric/e.wav" -dest_files=["res://.godot/imported/e.wav-6373ce27ee05eb89c9d510ca465a24d1.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/f.wav b/sound/dialogue/animalese/alphanumeric/f.wav deleted file mode 100644 index 0ec06441342431340245d32c13ef496c99cb9688..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16064 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 P6vzT2p}%DqJmr4?VZDp4 diff --git a/sound/dialogue/animalese/alphanumeric/g.wav.import b/sound/dialogue/animalese/alphanumeric/g.wav.import deleted file mode 100644 index f643d8d..0000000 --- a/sound/dialogue/animalese/alphanumeric/g.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://6k1d81vrewm7" -path="res://.godot/imported/g.wav-73da4ecac29d03a5e0c1bb2463bcb6cb.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/alphanumeric/g.wav" -dest_files=["res://.godot/imported/g.wav-73da4ecac29d03a5e0c1bb2463bcb6cb.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/h.wav b/sound/dialogue/animalese/alphanumeric/h.wav deleted file mode 100644 index 545915f5be77fcd8b1ff5bd45b24cb9968fabab0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15620 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 diff --git a/sound/dialogue/animalese/alphanumeric/h.wav.import b/sound/dialogue/animalese/alphanumeric/h.wav.import deleted file mode 100644 index c33b3bf..0000000 --- a/sound/dialogue/animalese/alphanumeric/h.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://boatg77atys5a" -path="res://.godot/imported/h.wav-44456bd4f004ee75088b13cb2069e3fb.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/alphanumeric/h.wav" -dest_files=["res://.godot/imported/h.wav-44456bd4f004ee75088b13cb2069e3fb.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/i.wav b/sound/dialogue/animalese/alphanumeric/i.wav deleted file mode 100644 index f464cbc02b4f0259cbf71eb68a061965d4ba650c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14552 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 diff --git a/sound/dialogue/animalese/alphanumeric/i.wav.import b/sound/dialogue/animalese/alphanumeric/i.wav.import deleted file mode 100644 index 51b5c36..0000000 --- a/sound/dialogue/animalese/alphanumeric/i.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://cvru47ct1d7mj" -path="res://.godot/imported/i.wav-8ce67b78d17a9ac111433177c3ed850b.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/alphanumeric/i.wav" -dest_files=["res://.godot/imported/i.wav-8ce67b78d17a9ac111433177c3ed850b.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/j.wav b/sound/dialogue/animalese/alphanumeric/j.wav deleted file mode 100644 index 138102674e901a9d636f34acca8286eaf9245f44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19400 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 z zo6h2G+GJEXA49j&Zp^laT3Idcd3}veyGZyoN;hcg z5xOaAt7+&2TB1xs|IHHA%s>6zgH{8Qg`+2;%83n|z&#!C|Phmz2Ad5;0} zTjLg3?LAhco1xqK=r{QW7P*Y>-}^v^9i1N?Aw_w=_)_%eje%sHftB_cX$Yj61s%_Y zBqLF`+yN4_0%8VWEwUJlv8a<9l9^uLFe6YeGn{@0xro1KEETtk1vEy#8rJs~G>Zxp2pt zeQh;*IL9dyU}Bkph!Sl3rId3&z=As{O{W-2Evwoe(PoA z?~HXnF!2pY4n(hDJA5lrZ9Fp$n&}H1d;xL~pug@8zDK1Z=6?wKwtW|vB(s(!0QueqdzcjKo?X1y0gba`zO&maRl7i8{N+3oz?&0cnWPY z&`l?d+#Q{g{)pZw$X#CmpFg09K(= zi*I=Ffp<@Wo_68*3k*5}IA{fFTHyJ;e`9m%Z!Il^4)y_8AAl diff --git a/sound/dialogue/animalese/alphanumeric/j.wav.import b/sound/dialogue/animalese/alphanumeric/j.wav.import deleted file mode 100644 index 83202fe..0000000 --- a/sound/dialogue/animalese/alphanumeric/j.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://dwi1wq2dyli5y" -path="res://.godot/imported/j.wav-c07aa6b0f20fa8fcc89a706a3391c11c.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/alphanumeric/j.wav" -dest_files=["res://.godot/imported/j.wav-c07aa6b0f20fa8fcc89a706a3391c11c.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/k.wav b/sound/dialogue/animalese/alphanumeric/k.wav deleted file mode 100644 index 3995b273e766c4c04140683008f6c3e66cfea482..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19400 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

{hCvwO1sDIze@yI*^A7 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

lL&r0H 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 NwG@AJbajLO{6F#0fR+FN diff --git a/sound/dialogue/animalese/alphanumeric/l.wav.import b/sound/dialogue/animalese/alphanumeric/l.wav.import deleted file mode 100644 index 8c05113..0000000 --- a/sound/dialogue/animalese/alphanumeric/l.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://d2o1hk6e4bbss" -path="res://.godot/imported/l.wav-722141f795e13543172ffd960308b24c.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/alphanumeric/l.wav" -dest_files=["res://.godot/imported/l.wav-722141f795e13543172ffd960308b24c.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/m.wav b/sound/dialogue/animalese/alphanumeric/m.wav deleted file mode 100644 index 6ea69d40217af2fcbfd37bb3aa2b57a9d142d26a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14900 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�Mk^~bOD1D|TXkAF4wiT}RmZm;{Np45MP>3i#v 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 diff --git a/sound/dialogue/animalese/alphanumeric/m.wav.import b/sound/dialogue/animalese/alphanumeric/m.wav.import deleted file mode 100644 index c5f005b..0000000 --- a/sound/dialogue/animalese/alphanumeric/m.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://c588ew7t8dwse" -path="res://.godot/imported/m.wav-2ad62bfb1ad90a0667f708c5154de5dc.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/alphanumeric/m.wav" -dest_files=["res://.godot/imported/m.wav-2ad62bfb1ad90a0667f708c5154de5dc.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/n.wav b/sound/dialogue/animalese/alphanumeric/n.wav deleted file mode 100644 index 636914e52f288b5691eb9c60befdbe0fa85242db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16616 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 AP5=M^ diff --git a/sound/dialogue/animalese/alphanumeric/n.wav.import b/sound/dialogue/animalese/alphanumeric/n.wav.import deleted file mode 100644 index 455c90b..0000000 --- a/sound/dialogue/animalese/alphanumeric/n.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://mc1vnfuhpuwr" -path="res://.godot/imported/n.wav-b995292a9ce9755047a5a6a6166a4a4c.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/alphanumeric/n.wav" -dest_files=["res://.godot/imported/n.wav-b995292a9ce9755047a5a6a6166a4a4c.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/o.wav b/sound/dialogue/animalese/alphanumeric/o.wav deleted file mode 100644 index 01613995bff6d80ff691cee492837d93fa444471..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16616 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 diff --git a/sound/dialogue/animalese/alphanumeric/p.wav.import b/sound/dialogue/animalese/alphanumeric/p.wav.import deleted file mode 100644 index 96ae91b..0000000 --- a/sound/dialogue/animalese/alphanumeric/p.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://blbcb70gci0q2" -path="res://.godot/imported/p.wav-bc58581e4a5d8761e1c8b91f069f951d.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/alphanumeric/p.wav" -dest_files=["res://.godot/imported/p.wav-bc58581e4a5d8761e1c8b91f069f951d.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/q.wav b/sound/dialogue/animalese/alphanumeric/q.wav deleted file mode 100644 index 80562cc6dad954bd8765fe38e945b9258c235346..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14936 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 diff --git a/sound/dialogue/animalese/alphanumeric/q.wav.import b/sound/dialogue/animalese/alphanumeric/q.wav.import deleted file mode 100644 index 896c936..0000000 --- a/sound/dialogue/animalese/alphanumeric/q.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://bmu30s0vscbvg" -path="res://.godot/imported/q.wav-b9d907f73d4a59dd6641ffe35c36aaac.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/alphanumeric/q.wav" -dest_files=["res://.godot/imported/q.wav-b9d907f73d4a59dd6641ffe35c36aaac.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/r.wav b/sound/dialogue/animalese/alphanumeric/r.wav deleted file mode 100644 index b38b3a8fbb38caed2b097143dc9cc4b2f868f86f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18716 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 diff --git a/sound/dialogue/animalese/alphanumeric/s.wav.import b/sound/dialogue/animalese/alphanumeric/s.wav.import deleted file mode 100644 index c48dad9..0000000 --- a/sound/dialogue/animalese/alphanumeric/s.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://draie1dh0muw" -path="res://.godot/imported/s.wav-0dfb29a8b9a3bf4890d24e227cd0d0c4.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/alphanumeric/s.wav" -dest_files=["res://.godot/imported/s.wav-0dfb29a8b9a3bf4890d24e227cd0d0c4.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/t.wav b/sound/dialogue/animalese/alphanumeric/t.wav deleted file mode 100644 index f34aa5dbbe6f14f1e2de3c80ebb9df165451ad3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14612 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 diff --git a/sound/dialogue/animalese/alphanumeric/t.wav.import b/sound/dialogue/animalese/alphanumeric/t.wav.import deleted file mode 100644 index cd55195..0000000 --- a/sound/dialogue/animalese/alphanumeric/t.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://ybmvcpv7prx" -path="res://.godot/imported/t.wav-d4e7e7dbe4c04e54e9c7edb0d85af81a.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/alphanumeric/t.wav" -dest_files=["res://.godot/imported/t.wav-d4e7e7dbe4c04e54e9c7edb0d85af81a.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/u.wav b/sound/dialogue/animalese/alphanumeric/u.wav deleted file mode 100644 index c41b3fc52afde2c215ea46ccb89348ae964fffc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16604 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 diff --git a/sound/dialogue/animalese/alphanumeric/u.wav.import b/sound/dialogue/animalese/alphanumeric/u.wav.import deleted file mode 100644 index 27b2e8b..0000000 --- a/sound/dialogue/animalese/alphanumeric/u.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://dn0hxgm1ueiv7" -path="res://.godot/imported/u.wav-b8a534783b71ec701bb0925308d513a2.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/alphanumeric/u.wav" -dest_files=["res://.godot/imported/u.wav-b8a534783b71ec701bb0925308d513a2.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/v.wav b/sound/dialogue/animalese/alphanumeric/v.wav deleted file mode 100644 index 78b81f94d60e7ef6abc38c900baaf15d3a9892a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18332 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 Qj5F#@23|8!cfS1p0YRCqfB*mh diff --git a/sound/dialogue/animalese/alphanumeric/v.wav.import b/sound/dialogue/animalese/alphanumeric/v.wav.import deleted file mode 100644 index 294b852..0000000 --- a/sound/dialogue/animalese/alphanumeric/v.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://c5p70bkanhlua" -path="res://.godot/imported/v.wav-0dc1396f424599662d6812e2e59a3b71.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/alphanumeric/v.wav" -dest_files=["res://.godot/imported/v.wav-0dc1396f424599662d6812e2e59a3b71.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/w.wav b/sound/dialogue/animalese/alphanumeric/w.wav deleted file mode 100644 index 26cbdc9b7dbd1898c7ec96504e39599614a3bb04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18332 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 diff --git a/sound/dialogue/animalese/alphanumeric/w.wav.import b/sound/dialogue/animalese/alphanumeric/w.wav.import deleted file mode 100644 index 5c13da4..0000000 --- a/sound/dialogue/animalese/alphanumeric/w.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://dr2025tcuq5lq" -path="res://.godot/imported/w.wav-caf9c9b3fa280c326a6be0c426672562.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/alphanumeric/w.wav" -dest_files=["res://.godot/imported/w.wav-caf9c9b3fa280c326a6be0c426672562.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/x.wav b/sound/dialogue/animalese/alphanumeric/x.wav deleted file mode 100644 index fa020f7e8c9770ef62f5410b7624ed51acb35be9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15116 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 E58{BWqW}N^ diff --git a/sound/dialogue/animalese/alphanumeric/z.wav.import b/sound/dialogue/animalese/alphanumeric/z.wav.import deleted file mode 100644 index b089115..0000000 --- a/sound/dialogue/animalese/alphanumeric/z.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://bujyv5lsxarhr" -path="res://.godot/imported/z.wav-38cc5c83dca1b80b731d307651219c08.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/alphanumeric/z.wav" -dest_files=["res://.godot/imported/z.wav-38cc5c83dca1b80b731d307651219c08.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/kim/0.wav b/sound/dialogue/animalese/kim/0.wav deleted file mode 100644 index ed9af437e6e0617702cde4afcd420473a01a7a4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14516 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 diff --git a/sound/dialogue/animalese/kim/3.wav.import b/sound/dialogue/animalese/kim/3.wav.import deleted file mode 100644 index c4f479d..0000000 --- a/sound/dialogue/animalese/kim/3.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://dn24y7on5811q" -path="res://.godot/imported/3.wav-da7f408c6ee782136a7225f6a5b4c2da.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/kim/3.wav" -dest_files=["res://.godot/imported/3.wav-da7f408c6ee782136a7225f6a5b4c2da.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/kim/4.wav b/sound/dialogue/animalese/kim/4.wav deleted file mode 100644 index 6d05ec7eea98df9b2ce54130c859e1192afa63a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13136 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�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 Qq0Ikk0vSfo70)dG5742XGXMYp diff --git a/sound/dialogue/animalese/kim/5.wav.import b/sound/dialogue/animalese/kim/5.wav.import deleted file mode 100644 index bc739df..0000000 --- a/sound/dialogue/animalese/kim/5.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://chf4scjvimr1o" -path="res://.godot/imported/5.wav-7adb723973f3005425a71be181ad28e9.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/kim/5.wav" -dest_files=["res://.godot/imported/5.wav-7adb723973f3005425a71be181ad28e9.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/kim/6.wav b/sound/dialogue/animalese/kim/6.wav deleted file mode 100644 index 379199e5e894ace420e9fab72c718a6ca2d24f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18536 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 diff --git a/sound/dialogue/animalese/kim/6.wav.import b/sound/dialogue/animalese/kim/6.wav.import deleted file mode 100644 index 3674eb9..0000000 --- a/sound/dialogue/animalese/kim/6.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://phxil12i1qmt" -path="res://.godot/imported/6.wav-1303e051aae59fdf169def7624379571.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/kim/6.wav" -dest_files=["res://.godot/imported/6.wav-1303e051aae59fdf169def7624379571.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/kim/7.wav b/sound/dialogue/animalese/kim/7.wav deleted file mode 100644 index ccfdd5f4ddaa39fe6668e24da1c87b50cc0db8a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18536 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 diff --git a/sound/dialogue/animalese/kim/9.wav.import b/sound/dialogue/animalese/kim/9.wav.import deleted file mode 100644 index 8739b30..0000000 --- a/sound/dialogue/animalese/kim/9.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://b3xwpno2ky226" -path="res://.godot/imported/9.wav-92fe849d00f43baa22f6338601438d71.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/kim/9.wav" -dest_files=["res://.godot/imported/9.wav-92fe849d00f43baa22f6338601438d71.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/kim/a.wav b/sound/dialogue/animalese/kim/a.wav deleted file mode 100644 index 78d2ae606298b920128b85e985174c002c11826e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12296 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 QUV?a!L7ol3UeGi0KX3u$k^lez diff --git a/sound/dialogue/animalese/kim/a.wav.import b/sound/dialogue/animalese/kim/a.wav.import deleted file mode 100644 index c0c8c4b..0000000 --- a/sound/dialogue/animalese/kim/a.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://c72cosdd78vhw" -path="res://.godot/imported/a.wav-19230b3cafcf4c28b5dd1f5c6133e5a5.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/kim/a.wav" -dest_files=["res://.godot/imported/a.wav-19230b3cafcf4c28b5dd1f5c6133e5a5.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/kim/b.wav b/sound/dialogue/animalese/kim/b.wav deleted file mode 100644 index 440592dbfad864366c24c525c715acc6477d0188..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10496 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 WOTdZ=I_s7AYY|TE0XmaG^#1_#Av`ny diff --git a/sound/dialogue/animalese/kim/c.wav.import b/sound/dialogue/animalese/kim/c.wav.import deleted file mode 100644 index 10afb6b..0000000 --- a/sound/dialogue/animalese/kim/c.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://cpshexs36p2g0" -path="res://.godot/imported/c.wav-bd1cbbf5862edfbaca6f9f8b0bb2990b.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/kim/c.wav" -dest_files=["res://.godot/imported/c.wav-bd1cbbf5862edfbaca6f9f8b0bb2990b.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/kim/d.wav b/sound/dialogue/animalese/kim/d.wav deleted file mode 100644 index 51b694b3b32873df4ba93095c01ab1f18667160f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12476 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 diff --git a/sound/dialogue/animalese/kim/d.wav.import b/sound/dialogue/animalese/kim/d.wav.import deleted file mode 100644 index 6654420..0000000 --- a/sound/dialogue/animalese/kim/d.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://bqhge2ptlm71d" -path="res://.godot/imported/d.wav-dd6ab85372a6bd92c069003d8685a7bf.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/kim/d.wav" -dest_files=["res://.godot/imported/d.wav-dd6ab85372a6bd92c069003d8685a7bf.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/kim/e.wav b/sound/dialogue/animalese/kim/e.wav deleted file mode 100644 index cb2c1c8d972edac3d833a635fd7e2d7a01f67852..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13436 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 diff --git a/sound/dialogue/animalese/kim/f.wav.import b/sound/dialogue/animalese/kim/f.wav.import deleted file mode 100644 index 03c1a4d..0000000 --- a/sound/dialogue/animalese/kim/f.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://uk0jqhph802c" -path="res://.godot/imported/f.wav-82aa6f7c781c80928450893a029aac45.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/kim/f.wav" -dest_files=["res://.godot/imported/f.wav-82aa6f7c781c80928450893a029aac45.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/kim/g.wav b/sound/dialogue/animalese/kim/g.wav deleted file mode 100644 index a37ac01480bc6a9dfd770b8a7f90c4a222001106..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13076 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 Hn@j%(SD+)v diff --git a/sound/dialogue/animalese/kim/g.wav.import b/sound/dialogue/animalese/kim/g.wav.import deleted file mode 100644 index a9b73ba..0000000 --- a/sound/dialogue/animalese/kim/g.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://1008bpcdr223" -path="res://.godot/imported/g.wav-372aa2fc0531a484e3322ee3d3b48085.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/kim/g.wav" -dest_files=["res://.godot/imported/g.wav-372aa2fc0531a484e3322ee3d3b48085.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/kim/h.wav b/sound/dialogue/animalese/kim/h.wav deleted file mode 100644 index 0c19076594081565da19007755802b1879ac7eb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15176 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 B>9GI+ diff --git a/sound/dialogue/animalese/kim/h.wav.import b/sound/dialogue/animalese/kim/h.wav.import deleted file mode 100644 index fb6ec91..0000000 --- a/sound/dialogue/animalese/kim/h.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://bw0ua5pignh1m" -path="res://.godot/imported/h.wav-f16878738745ac8ee0150078290ea7c5.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/kim/h.wav" -dest_files=["res://.godot/imported/h.wav-f16878738745ac8ee0150078290ea7c5.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/kim/i.wav b/sound/dialogue/animalese/kim/i.wav deleted file mode 100644 index cd097c29350fcc54cc1c99412d087a4025a932e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15176 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 KmtJ_Ong0V_(({P` diff --git a/sound/dialogue/animalese/kim/j.wav.import b/sound/dialogue/animalese/kim/j.wav.import deleted file mode 100644 index 4cc5f64..0000000 --- a/sound/dialogue/animalese/kim/j.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://b7hjrilpfkuxx" -path="res://.godot/imported/j.wav-e5a60e91add3cfd5587ee2205e401fef.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/kim/j.wav" -dest_files=["res://.godot/imported/j.wav-e5a60e91add3cfd5587ee2205e401fef.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/kim/k.wav b/sound/dialogue/animalese/kim/k.wav deleted file mode 100644 index fa1748d2a947fb4d96c4df8d4998d5899b839d37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13316 zcmX9_1$-3A)18@}b<4)xh>+kM?r?{@%K?Af4|hKf?r?WMTn=~lK!5~DNJt!nx6cJ1V!IIe%|er?D6HZ$CV<2W9#rMK{54$ldk z2RCZ?%;6b0C!KPP(j+>c`qJxUE*V2slWa18ex!ZbNtVD)uwE>UcA_uHbkdznA`eI_ znnHhN51E6Nv5Tw|OQ!v(o4g>Y#6ss$C!No}vFcnaE`m#ElbM@tqCeA6T9po^*Ju>m z!pd1~?iVhO%VBevjs8YU$tu#8R3&xDuVgRDCqK~{^dQc?Mvu|I=t$ZESBp676GK_70snK>ZV2X8Sc`SmXiZy5UEZ=Nj>r#d4lnuqM_^$mdxBt!45t)gND(j zbP(*jlrEvu@ToP8r-Aq;fJW0sv>P2w7t*b;&r4cNJy~P+Kem+Z0tQaABWxR6#(rZ1 zSvyvbg)2A|Xgch?1fOzX>ly44%VwqQ3%h|Ue}U~Buv8%H$u_ejc)pxHXN#CG zJ4V}38D5e|YkGo)ur=%x({dW_6Wh+(Fe@y*9e(+n-lWO&HN8Ps(qE_xHrfQAUm*&h zCYSbSSDBr8aVD;W-C-+PKUm9z=jGD3^bx%R?_Hy*RLMHS@5Ml5C$0r2a);oHldvTv zHWEwMVwU@vH#e9Y%hlx)FyrH}NES&X6{HKjPaCkUh=Ip!BWuWB0uh1mK`Ale`ss8B zJq%k-rp>64mXIHWqt)nejQR}hw}}p+;lR`zl0`h|IQovZXUEuAR>?lFLu?T9XQebB z*lL5BCn1suj_+k%nTlm%^lsV)R?lN5gzGidlpUf5x{pjH+lUr(n#ZEK4csoS5x0OX zr+<=La!+}zOk^AJWj@?d?hkGiyF{u=b)9u>+bV9A6_s`@dr}@>8SUuiZcYASzw&K_ zc|sH6CBKB<#K#ML6n62GDp4~fd{`=XA8;RYSGY$=@1%zE zOnIHW0q@=N16d?}$w7GLHlpmC+)6$sb(RK6Rw;94GO*RCpQfE z?929Z+l3s_q~5Qosa>R5p_;9@$nHro&e67H>+jYPl~wG$opaq$vYvR7?y_3i?u|%Iw~d!%lK2A zo6To&z+W1Ww}>`@_xF*(q%Mge4e)y{xkJ7a1FZ`b-KNc11xw@7_;lgAVt}|?oGNB1 zDulPV%ORGHX#I^|rnT8k76)Xu;9daN5j2Lhl-Ec>Ql;A@^^-139&%rKfxJ|njNk3# z-tr3hlROaoxsWQ@6n2ee;&qShVB=W}7Qmb|104A~_|XZ*=|&hVx*L|=Bj1(F<#;lJ zYz8a+%i?dyQ}F6Jatzi!NRE;VV5ZMRN$b!Nh{~t5j2c-m3t|RVN#7&VE@Qrz>0R*S zL-6TBT93XXlZl#~gZGBYQ{*FZh1>zyO(dD*A-KK~$&q*A_#}Co{8?^Jc9INIfNzG7 zC$d5AD*f#acYkoDyL9f+?$_?0q&d=NX_?eZ3Y03`4tFytSvn!#B>B|BdGfFMMnZc* zBW&gcelD0GjioU)Y<8au=7;fr;5CtN&&Tm${7?L7{v6K>orU?rGGT~d687WhVXisn zVDAx`I^?9~++D7KQ}e!j2p_@6@HP1Qd_%rEZ{|O6Tey~70oZjmIB*qv%KW*B+-WX> zJI9UW@>pB89sd56l*(u1&GIH#^&n<93n*pMeQA@lNLme#RY>*a3GyE}-a^imW=W!S z*gewS**)03-ks_Wl=?_>r9W`)G-)z^UzbesBH1brfxoVS_iB=(vR+;&c}aP0+1*e2 zBK-xwog)GbrVLRroLfMeY6d=XzmXe^k8 z>wH`OB{!V&gAD|(4mX>7#A)~@h{s>~K71#>1Ab2D5AZ3lTcl7;2okLPZGIWw3sz~w z_v6>{Z+L&9udr0uChQQ_;`c&fm2g5x7j%mHiVlhf3a79^5QGu@L#`p00;b)=9x$G3 zhjDD;7ICe)T;xVGyNi6h8@W1|Ed~!paBXn5f;-Q;u_7EF2DYsORt}(Pj@G|qoh&NQfa2tUeZfx?%VEHZeMAg6e-`4e?i>dLM76L>FG8m9MHnay;X}DBnnBu;HYAB8QU%w9uO(a% zjtM?ODDPt5Xe7-fA*d`gTsMBU&|a}yF;a0sIM46kjxZhjLE8e0dfp;@7ltXuDmX<4 zVFJI8Gs9NVz}qo?8;)lw%5YtY;353Pui&a77o6Zm@XZCi;-KQa;;f>IqK`0+U&DPv zy|tG)*#@o!|B>%1%o4f@U-(x1O4MepQ3)NTdl9`aX*SKI7r;zBT}6y!r(6&CJS8oc zev?K>L#1KT7-#T`tE10QLaFj-O0I{xc0cb-5cGKyCveZmXzh5 z=q`8t>1yq&?Hb^^?5gK}?CvaGlbn)4c1TYV4`ZYO(p2e;q>?Af&t)^IO=5{8-;n3R z-d*Hna+$o2w5I~94j=AkE}naXI`aapLT`dc|3>DXM}62Cu;UzL!r5R*j(Z2+#3Oz; z@#}@{isfPhvD()yU6yf3$@uL`t{8B?{6OV|!MITXC7{pfM3h{xM zE}jx=i6a$#g$TZweW4-rDk?fVnMA+SCae|vO#P`{-Xqm_S2!idL`NsbDu>>A*ck;2 zc62>=mODP$uh>phezMN8&bDS**Hwz~#!*4_WF+Y4nM~wdtLiETL+t$E!;NSX2$Vk$1~?e*Ic(j8V5^nlIBVOllsHjSEN|^ zzC4{&Lnauyz|4Lx6$kAL-}mf6{aMLY-R| zqaUL`rT?NQdYk^4exW{8e@8b-*H9O$YoVL1d#Ll&_th`bFVPRw8}tWt;kw;gU+n=+ z15K8Ct-7VURJBDFqdKG%lx@Vphy%*aW+%xOsiAAXJ;O@Ms+Pmd@|)$|DpD(kSRK~W zm9uPJ?NN>b$9kvQ)x$N}HOV#5)y~z*)!jA2b=>vIWpc;6Yr7-eCb#Ggc8_tFx^GC= zZS58ahl?pa9!x3SSp67 zzNt59-|IH$_vqDnqP?rxtiFfp;)Cjgy0=!NzhtnOtfn?*wRx;*zp>b`$#BIm&bZqY z=5f;!?G@p@+`F0gKrg{_rbmV8nz7Vy)=+5p%h<~lXg*^uHYb_;n~#}38><^n873R% z8g3Z;j8l!rjmM0`jUNrshR*sSy8mfAYmDkYm0K0QyhPf#dHcxn!$s=+S6}OX?)9

@XBfoSKMkAA#@+0}Hi01#X68Zp@d~d8~UW4;S3l5>XVya@IVt}Hb zVu|9rVv{&SIa@VH-CI+jsiw7P|Iq|!mZ-Jr43(f>tsbfQP5ZlUj=qLryA&d@7={{Ersbw2Q?4o1bk4NeG~2Y;bj(y_>SDfUZsU>evDnhmGr&vj zEqQ18toJSVE%9C8d&p;*cUQ0Go@*?_Es2&>o)5fEdgptK-rFssjFZ&GY_wxxNlD(6 zPwO-Gyxo`5E2T;5`L~AjyXjNX&1vsaetunpkQdVY6%6|0iPVrvr8;6&B zlDoc(cdV$KRWYjkbooGQL;EY&3UZZuD=bm$5L$EDGIh4FHLMt3#!CIm=UA`X`??dz zI1q)C3L3HQoR>1uw7SXbRd`?Ic!E=#jdbyIPGyF(U8VeaRyDeg?^ z0@=bsd4&)t4CfVGS9(AmB)xGrkT%M<>2$ug=u+vmU3ABFb#+nN6!jL>P31ymiBeY0 z&}enP=?57O7-}0L^~bep%^KBgrB(D$-c!C)g=>au$Lj+1ll5~E%dPbN^mp|u4Hu1Z z=GPv}J!8EO`4svxzwiEM0tN&Y2Tllj5o8K(5ZpC*Lh#XG|ByE!&q6c99)yQSEDv80 zdLrNCC2y_zX5O;yp8@RrQ)z1rZMcyJ^agTDpbqC4S=vyvX@jx|D+f%>T zkYSi(ScfRAscoh?uimNtrk<~f(4Nv3XrF0YYsY8?soSdtD{qPO#eJfW^0{)4YMeSi zb4bI3XBTRpXdCEqbZ_;ZV1yAK!#w}=zVA!?ql3ajQbXgzy(88~9E(^G(Ky0CqI-lg zvV9dPDl29|)edn-s?zBE@LB<7roBROWyZHjnWvLRKMuR=xOwX4uG@w8EB{2{)_f+44E5pSkVy2A+A(?%COf|VXUXGuD&BYpkJhg?!9iOq@m&5 z7XB^2p1VYrxF%HkmHt#P^qVnv>DQ~d)4sPaJYO1C>E~=NjUdahXR;C5yMQ#Ltylnm zPLZhc*2NnSnX6dFTl#s}jf-?`R9EFWkRLae%Ud~b;rF#+8{}8$@ST( zbEY^JJ8QVpS?&Bo2cEXX|8FlS*&@e$<;j34A2}_ z-%{OIz7@U2ZHnQFIf^7jKT)Af#A@_+^(0_+ux^NclwpQ(v+0$&iRFi9p?6!ql7Q#I zr^5P1u8#7GNshS{BSoi2ovxA{nHagdN~h@cv6*obtNm8ZGwx=Uz@RSX58UN4)9042 z*FAJyi@H$r?2WVRLdn%(w>v!e`ZzVA&eMenE1tA|vOA&0^FLm9%kWKNe z&wc-Q{&ReXdCoEJ(kvAZ@iACO%;q{_bvcZ`#jeQXoYk$%iWT|oz9watfBf)qVfK!k z=il}et}Cl)i*hxWC(s18np5zr_;JDqg-dx&lcTR{4)^@kdzMd(Pd6{OdAwd!b>-f; zJ?%3q>X!8^JylvzcA{c-rOlRSuk9$d53ncN_S&l24?7~=Ysdj!q3WvhH+fr3Ub2_X ztEN}6WuAwpImhTW^fsg-Q(w}(((clDtNSSDC=T;(wukN{4*81wOpd|&Z7bcw-f}H5 zmP5)l>NVP(`qRdT=3Gmt_hMgjKzh*A(5De+quR#~je8kCzuNR_@8c`uJmXeWU0tIl+Qp-u(m0hUldN5I*DbG}zBr}cj*J-8pz09Oy^0%uQG z4fibfdDj6)>&kbf=>@5IlfKmav^?ur){ak6Ii=s06!oeobmYn|&LBppMyL&%iJC;s zDD7C?C;d%hvN_$d%xkIlO7HPrM$2-eLi=7ZjW%>`ul!opw}chFF4|fwmcA}KTQRCK z-6lAcPQ9zM+a|@+a;|~+Og&ov(6q~P-Yd_$uFnbYDPA`$x6LPvf9r2*CG~JsuDDoH zLvV0EuwV8&ZH0Zp{WJpWwGpT=mh&oMv(QQrFAi6hV3+2z&d=E0Jk2uMtFup_pWUAZ zb`JR(c0KY?^n|L(@tdn}sBxo4jT$l4rFcdB>bQ$>hlt#{nksJFod7BA6m z-Ii1PO~`|7mo}W-e)!Jcdk>F1!Jq4Lwc(x0hyG8GB(mr4Uw92+W`!>bPYVeO@bmiHFi%yFk0m4Bw-A-}9Fy!pHm$XK*{Pz}`O3W8Uj}D4 z`n2Rz)6YG=F8MyYD6PDOW3XJzC5Ug;LAs0jJE&?t8QYm|nL3&a&1*f>mKv6q9+%CJ zjQP5F^*_RCGS@lH>L?jnn4f>`d(wB!k6MN0#iUGC`PSaiHBxFyWSYTA!XL`%nhSc9 zxxJ@{Pqbez|3&^M{A@luz212^jP>;oG?!E!$|S{GL6240EiRJV!K$zn?9W}JrL-G+ z3Hy5TIefMdARbgMQeV*4GJG+ew2b#w`b`Sh8?-OvkFb#u-KunmZWmiK?tOfC_0QFH zHBME}t!9l6ir*EtKCU8eMSOaE+xXC`SE~FO+}pFM@}BK}?ugXlhX*gOIN9k?%>#}D z^l-OR&o2zSQSJV|Cu^K_rNNg5IpcCKe=jafFN?OX zlOA&`m4~%uhGFIkk6V@xmPM9V9@JdTJi&C==x-co7^p{~tZt_K!WWV?F41~+zz zAIaa9-=}|f=T9h{U-GHEhi#{Gi`10v;Zg;Sa)3HhyV}s#Z1!B{J=6D`pQrzNzdF95 z-m5K_OmFoO+B>QnqOal^f1CTvV%SQmq5qIYWC^)MJh4|Dh#lir+-Gh-zg@^v98rE$ zuhZ=|e((tPj`w>X;1!$}Qa|k1@YxX;BdbQek3JteKh70jS*=C&m({MuH;mgK+d5`s zbVzj1=mXKyqIFRx!cPPqv+P$^+UI@io|gEy+0~>|oepacem+?1sOz-X+0Fn|4Pv4;I)AVeLGlM>69)?ZCRbdn!#o}PB^vnN!HEInP6SdjiB^T*SIKZ{CB z-j*wE1Dq$NY+A%8i+`!Zb^8s1`DaTnFK?g8zODRb`VrqupCIo~mM-SahL74_YNIkx zv5=4D3@niTOqR-Tq!!qxIOM*B-M_2SQ8|?~U{AQYLKm^MYJg^wF5l4KoNDRfebrYC zs1wvABs$C)el2ojlr?%l?EI>2;`Ya_j5Ee{tvV<6QOwAgnK9OwbFm$&)~}i#v$D$L zkj6fF+HiSKQLn5?FGKFmyx8ni*3qs<{ZC9i)BW<%TZKWqE)d-BxRE8Y~Q3{9Jo zIV!u>_eo{Hxd)4VjqAK82b>6M7BtU4->beUP}53?BeAZ2_Pv$2tOKon)&mt6%Bz=o zm#i*)nIHSD;_LhzG3Qp!x!iZ(bw!5qb@qDlNq&#&xlU{P#p4f4w&hRD8ISemUrkMn zKO5%gpX&T|ZM319)vBrD3;r~%BW-km2g(|j3@@5hxTtVyQQeZQWuvSU?ekod0Hj-kRFFg$9Rdi=~BkuJ6=<)F3gG3r~#r zUzG<@-=iPLbch`lYl-b2(>*#W%2K6Aq-W%m$bMB;N9~TTj4qDKiRckr=9Q%BDpe~Q zn-!O|^WOE#EzT@EIpO5|e{wDyy?*arw}kUA_PmNrIiC9TZNv1#87s5GbNc;AEYEa5 zP+ZgNJRA9{{1^Cr_kQYeTR%ZHlJ_SsTx%UI?MG~5Y_)6`E3aFtR%pwX7C$ejov-+| zCRfbemfPi9$d9i@%>;d&35k!@Sw!caL(j*{n4QMvI|^eu?g$Hd}L3 zT}M@2Jj@@U&82@FQI+4y>XbAoiYjCU357$8_m+08XliTZ43plIQQSj8P}WnA)^687 zGNzlaTRM16@YeWv`>gj~>P0Q#9=z$Aet@=IwLxqlXgQuXk{`LRy24ya*9cdvyRkH1 zP9#RwkZa5TEOb;%7vC$ls1IvJ!vRx&i{5*`ujC&PBn6)gtr@;C;zi_}Dr=&$qi#h7 zNBLGsi`XB2D{M{}4eKA#y~_OPMzPOg$Ha_{92!*L(oBr9*>dyWwn>P&IqAZRe||fC z_RNBdN!PdD%YH(iA4pDqUG!#G%Er`XY1WL`PnNua#S`pnm`klT*Yj@Zr}j_trC!WD zNWWG^c^5h1_Hov+zpwma^|7|E=uz%hwzcGS(f0!Nk8$5SeJjjc_N{h4SNN%9kG0&n zoH`Yyns8%Zk2#*JyiR(lz1~{}d)za{8!zgI>uPH~HI=AAM~f)};d1D5x!CoSV|rz3 z`SQ|h#ruke7I_xmDd}9krLw=Xn_PptqPVIG(&pOul`RC3^^hC8A3C!fQyrrm2OK)*9%o0F7xv+JIhIVO@7PG*S78;2 zs-bp|KE!m=ql(ugpK*T7KQ{1dVEdqHLCb><27L-@9eg*qamd<`%^^R9j1TS_WDG3! zujB9Of71U;z>J`;!CONzgDrtCy)z6$g^#v~{F?7WlI#yw-xzp#*~N#KmRu{i9sH{HF_hPgr?p;;_e z<*U*;lG1g{zO1ryg`w?XBXO57f$Koq%k!~&cgOM7KF;3RzQS&Bq&l8Eb6s9iCwUpUPJggK?63Z%cqV$N z`l&Z)PHDI4n(Ei<|Ii0v#Wz&jNTXLfltIc>VrOxvcutH`?p4~AeyS4X9OZp6SD{yo zzz%Uo!AG$~T%an_9MMlRg;|z(P51fg`_`|A|5X2O{(}E5KTp2_zMXt-dd;$QHihUu ziaY57M`CIA_vp{c%-j@@~+xF;TadRK7M|dJ3jw;Au9>1_{Fx^ znIbi2`-CjzD@}WSpfSeO%e2!-^?S72Q~`=XY@PJkv7mB6d0EMqqE3a81;76Ik^eCN zQ+~4_Uw)((1Qy*XepDJ)QC!J6`$(_pK;f-2LK|tgW6Jaxjb$$Gi3)W+T4wFVV&kfXnSk!@w=QtPyespXr?ic2?@{#BY% zI-#shd8dkL)?<|)ZDvO!XJ6!+snP_wH;G0sZ4x?BF8%@@8nwu zD5l!dY!s0_EguYqE$DP-IU+4cU@I{tyrLlR6If#Cyj5)FXzs&+w?41 zEf18U-A?C6N48yMA7uMfxwUdZ<+{qpmHxIRwsPATd#1gu<1`p&tn-O8#&hgGrXN4ozVRM8#M?3F3>ta7}klRDbl5WaJ$rieZ z4dlZ3m;6xSozP6NMe$WpM_eR67MU2Wj8lrrGh&oDS+Pwx#ot30B%bZ0KT!wyK;Gh& zioW7CbjWrEgK zf1$UR%+2JYxqPg){$XeF^F4Dx4^S0qfZALP=Y#$6GM0m*@1bcZMmJ5*1>*ebTn#Rk z3&2ig7F06hplG;8JJa{*!3pFn`g{MAr=n}bk(tnFEQT&)6qGVw(ETsRyl8-5VN^S?nDX(H*=BZ9)q4B5vq^F5{VI zd_D+eMm97cTWJ@{(MRaZ9EC#156XySC^~wu5m0?Zv3&G|7tm4A=xo9+P!O94g-AYn zvjIC{yip&yB*&&X(WrT54!^Wpp>^cRmnf7F}ag}$g%z9k<(Z}u;A z2D{6_u;~$LKAy2&`XKd#MURnzRHjQ<2GgJ`BBIxu!k)3$tblo-8`+2ZmFvLyqldYa z)yCfRQ|wM>K|3-Cs*VB{f-{<+OJ(M4@NX8B8!l!>S0J3zL(#I2b!QyAg}uRp%OYK3S9lG>G_@gj2`6| zXdHf^TRVnbXEF=Lyq{n`Yv>JZfq%ag5+Lf$I+jT*pmEXOBPyu^8x!M%VQ-y-xoG+C0!- zJqHEUKZt=yU?-2ZV>?+YMoRGhicd+1uVVP19@i6b(1)uDjnEGE6HBCHsF}XRwJWe% zT}C$G(`k(9E;Lz*!1WizYanfh@!dwebi!DY(1D2He!`t%p_;S7yDx!@6ku2derUyY z<2rNop*+ZdpGUGf=w@?Fgx;bF{#wVbAbu)$&SN9jbYt^@NpzZ;nP$oCjP~%2I{MF zcAw3~9!U~iLHonbW9R|wl(dBg>J|FlcJ>{bwi}4whnRgRH-KBg?SR_oXYL~#%u?w9 zXsS}dM1eqg2^4~7aOW3LPSpnX+tFOG!zO6#@}W&QMZJ-~?&GOpux#W1Y-`~vVA+Fg z8nhIVu%ZV%-iggad_BSOi_i&#v#Yct;^a7b!22=#M)V|fcB^0=Z}_)1EUbrrauElq zuyX-O%QL5F=r3Vvn~914_HLqgZy&^XY2t_T7l;oh{zYX<7;%$mq4%J0^a99LC^#` zfayS26{y9`&z6^7F_?X%-Dv{pMMS6!T+kOB!8s>sRb=(A=*QNC8Y7zX1p2>2 zw|E`s{tXH=JNB+d!2j7`z+JHBPI&nid5OqL!_PZV2OdC#{hJBT;F(F}9k?U~>YdBT zkK2LujkxM0zIjK=p<$~@`@$->z(&8YweYL}Y({|jUa$o$l-&Vm2h&2Rf&SG5eTKd* zAJ({w8P6lbpm&@=wg6@RP`n)g8@{EF=^l(N8v4c*jO7b4!skn&EqI39a{|m)4;Fh0 zEzvEg{$l7{Xbyakn|=j1#vn)R2TNP%C(Pj=`1ce!59{6pZWDng0m{TBV4T|Ubt+Rr zt)k>!!ImayZbIoL@;_3I1VSA%3i`kZC`q)y)-&WdUm!a3Kjq$gx(e2ANIO9P^pW;L z^mgU0aFmNgmY~qQECzckxNJn@+y69r1XzEMc$?gn~3GhV-9Sq#2<5__$ zjCnHx_2n}>>l}2W51@L?LmvyxFKD&Cfo0QB0i@!U43*YF_@WsY;wjL*9XwJ(y2F3% z*ld)!Wi}T2u~fv~Kw1NA&SN}k=#S&E z_uU`bw-uQ0O<3DW1AzLT$TPE{r`^B~;K~%JCBwm#W4Kw|RP>J{{?m;1LR9l$-XL)2 z?>Orn^rTO4MQip0ao-D1iHE)aK+X&R=2jzT{taZzVZ&H&y#5EKSP9-;iAt_6IQAf{ zTNC=thIA^>TNSu_2izIBLezRanH7j14*Rr&US=P%m=9Q{H|xS`VFXDS`2x&f7WBAx zX*rFATDCuGp}OFk+pv5cFiR%l=?4jb9{L;*(Uq-$BJ==at}&E<^I(nhKyp1&1@94v z1)1~%8f>&0X4VDPFrp6Ihz@}l{eh_e09{fe*y|&$4-4G^7k)-o*@-y@;%=9qi{6Nc zIEV;5f=}aUZ75aGfSLM&n+B8L5szP>?DK(U^9PW)jP!$QsRyu_ji-K~!;wX6bEDzI zu~5J1P$}+5Z1uuOBbgRe&}%U0-%t>p0TR7Y?_EYUP!ngyLG`=|=sg1~l>;^B@XiBQ zbV1zjKoxTuv2+Sd`IvsC24u>y@YGpkl~=HHHY-H6;RiHzLWb#wyLoU)i1skl#*@%P z{6X%6E4Pr<808;$uLg=w{TCA+v@vYD7*9Bf9sWnicRAF7dLj(0UIl8!uXyf6Ai)I> zq+mP-plud>`LBL)6FeG+Z$5(Q)ZqV%G>rWP{iGI8FGVIBz!=8+|8?wIaAq;}g)X}m z@a9BRoq!H}HSF*Z%H3vc3H(q7-BLB=wp#yXrBYN8N0C`OKz*K%_&ka+?uJS@1@YU6 zO~+pOM^qD0Tm!Btt_cO}rvMTEVo_jOn8^)1@hPJCBVyt{kkt!%_)BCWX$Zw%9Vqs1 zLCL(2S`Z}(SfTiV#{)5L4S4e3@%y3Lw?O6d9yVTp?CJsTItOm<2{m{Dc=k`=tS1>j z=HoMmd+)`#3g~CB$t)% zFIagD!dhl3*!eX^oeYcAg7wCL=RMgqShft_T89jkjr(1pG0>FX1*<=XGH@)=?F)Q| zAZjP$@7u`YkDxtYhU@EsaRo4E3C5Lx7@LR{AWuJ|3a~?OzY6~7g8J?*vi>UM@x=dD zDmTDzm#{`^2Gwc-;-@RhumhtWjM`0R z)u2WE1%3%Zt(1+5CM#8iyudh zI0!qw1sh`@A80Y*>1pu%a*VJpD$xqq?*nwfO613Bu*bg@eNQOa8-p)SBVMeq{aR#( z*Q74+*97wm2IutyRuV9ZhtTh50{=@84@syWR)TT*fTN075XR9K>z~@FA@UKI^PnQ9 zs8EgqJzMbe2`pkj6vsk|?gT6T4LnRo>>NiW)P$`^+$(_`D?1PF`h>XCVtscQm2w7n ze-7;DkEaj8cd@|pJ|IbtJa`GU#T8i4fd3=djr%u3-F_W>^zW)S1K67fp8U72&HgWX z`k>Y;W%a-;i@`5Fu;xkterv)$slfUxpv(^KzR1dexsAA^jwVBm{3ltAx^^FOZW5IB z*?3w4D&hU8h1O%mbQIa~6^`cN{R-#o#rbpbS_!1SK^;*a|KG3Rkbx?|hF4$<4*!R;0hZGv MQaZ9e_%DtB0~;*Wr~m)} diff --git a/sound/dialogue/animalese/kim/k.wav.import b/sound/dialogue/animalese/kim/k.wav.import deleted file mode 100644 index 171b8a0..0000000 --- a/sound/dialogue/animalese/kim/k.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://n4n7gg0bqbbm" -path="res://.godot/imported/k.wav-82cc304c4627c5fcf78403e0d82b4066.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/kim/k.wav" -dest_files=["res://.godot/imported/k.wav-82cc304c4627c5fcf78403e0d82b4066.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/kim/l.wav b/sound/dialogue/animalese/kim/l.wav deleted file mode 100644 index aea20f2b88112eadc2acca8c30c47dccaf9a3e41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13316 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 E4~C^HApigX diff --git a/sound/dialogue/animalese/kim/l.wav.import b/sound/dialogue/animalese/kim/l.wav.import deleted file mode 100644 index 1845e6d..0000000 --- a/sound/dialogue/animalese/kim/l.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://nle3bfrffs5t" -path="res://.godot/imported/l.wav-4b9d875920578dd42b0265fdc42a4c0d.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/kim/l.wav" -dest_files=["res://.godot/imported/l.wav-4b9d875920578dd42b0265fdc42a4c0d.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/kim/m.wav b/sound/dialogue/animalese/kim/m.wav deleted file mode 100644 index 68a5aceac27a4653cdaa6fbcb20a61836e0c4381..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14696 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 diff --git a/sound/dialogue/animalese/kim/q.wav.import b/sound/dialogue/animalese/kim/q.wav.import deleted file mode 100644 index 0e794ee..0000000 --- a/sound/dialogue/animalese/kim/q.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://ci6h5d2oag4an" -path="res://.godot/imported/q.wav-729a36d49b5b3bd23f1badb802667428.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/kim/q.wav" -dest_files=["res://.godot/imported/q.wav-729a36d49b5b3bd23f1badb802667428.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/kim/r.wav b/sound/dialogue/animalese/kim/r.wav deleted file mode 100644 index 1fa9937c7df057ad74686e04da8305bcf2cded9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13736 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 diff --git a/sound/dialogue/animalese/kim/r.wav.import b/sound/dialogue/animalese/kim/r.wav.import deleted file mode 100644 index 84c2887..0000000 --- a/sound/dialogue/animalese/kim/r.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://c03fj374ceaqc" -path="res://.godot/imported/r.wav-74003e87654a77c6a0afc0d80fca9cf3.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/kim/r.wav" -dest_files=["res://.godot/imported/r.wav-74003e87654a77c6a0afc0d80fca9cf3.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/kim/s.wav b/sound/dialogue/animalese/kim/s.wav deleted file mode 100644 index 962fd46dc08f94e52995a4c3789d5db558a7730c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13736 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 diff --git a/sound/dialogue/animalese/kim/s.wav.import b/sound/dialogue/animalese/kim/s.wav.import deleted file mode 100644 index c39714d..0000000 --- a/sound/dialogue/animalese/kim/s.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://d0yb6lesxgm8j" -path="res://.godot/imported/s.wav-627d8bd9f4cee8c43ac9237705df784f.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/kim/s.wav" -dest_files=["res://.godot/imported/s.wav-627d8bd9f4cee8c43ac9237705df784f.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/kim/t.wav b/sound/dialogue/animalese/kim/t.wav deleted file mode 100644 index c5fcc51304e9cf8832283ee1a3083399b4c9924a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13736 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 A&;S4c diff --git a/sound/dialogue/animalese/kim/t.wav.import b/sound/dialogue/animalese/kim/t.wav.import deleted file mode 100644 index b6d0ae9..0000000 --- a/sound/dialogue/animalese/kim/t.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://bcvrvl4mli82i" -path="res://.godot/imported/t.wav-aec336b52646bd870831f9effe598c92.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/kim/t.wav" -dest_files=["res://.godot/imported/t.wav-aec336b52646bd870831f9effe598c92.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/kim/u.wav b/sound/dialogue/animalese/kim/u.wav deleted file mode 100644 index 56caa56614e69ce51b05ece7eb3fadb6df1440ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13736 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 C`TIBk diff --git a/sound/dialogue/animalese/kim/u.wav.import b/sound/dialogue/animalese/kim/u.wav.import deleted file mode 100644 index 7724a93..0000000 --- a/sound/dialogue/animalese/kim/u.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://mpw8xt0uxm5d" -path="res://.godot/imported/u.wav-02b540f73efcb10ad4943d4f37bdf90b.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/kim/u.wav" -dest_files=["res://.godot/imported/u.wav-02b540f73efcb10ad4943d4f37bdf90b.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/kim/v.wav b/sound/dialogue/animalese/kim/v.wav deleted file mode 100644 index 4add64f45f44a98864201ce75a9f01b0d0cd57a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14756 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 od~SGtIQ&Xc3y!+~)141rKNdN!< diff --git a/sound/dialogue/animalese/kim/v.wav.import b/sound/dialogue/animalese/kim/v.wav.import deleted file mode 100644 index fb772de..0000000 --- a/sound/dialogue/animalese/kim/v.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://n0r81bxuadfo" -path="res://.godot/imported/v.wav-d66f5caffb359fad446ec9ddbacdf071.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/kim/v.wav" -dest_files=["res://.godot/imported/v.wav-d66f5caffb359fad446ec9ddbacdf071.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/kim/w.wav b/sound/dialogue/animalese/kim/w.wav deleted file mode 100644 index 9020a844228197c62f49bebde44dd9cf9cda5320..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14756 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 diff --git a/sound/dialogue/animalese/kim/w.wav.import b/sound/dialogue/animalese/kim/w.wav.import deleted file mode 100644 index b6f0a30..0000000 --- a/sound/dialogue/animalese/kim/w.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://dm742m0d4b8o7" -path="res://.godot/imported/w.wav-46b37c23c004fe793f00e82c587efbcf.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/kim/w.wav" -dest_files=["res://.godot/imported/w.wav-46b37c23c004fe793f00e82c587efbcf.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/kim/x.wav b/sound/dialogue/animalese/kim/x.wav deleted file mode 100644 index f147ef3eddbbd5ed3d211b2d0691522c482a9bce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14756 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 Ms1aHU=UI;b58zv^i2wiq diff --git a/sound/dialogue/animalese/kim/x.wav.import b/sound/dialogue/animalese/kim/x.wav.import deleted file mode 100644 index 4fcd581..0000000 --- a/sound/dialogue/animalese/kim/x.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://cn2my2uukyd8u" -path="res://.godot/imported/x.wav-90efe4fb55c5c2061c2e9dbc89bfb532.sample" - -[deps] - -source_file="res://sound/dialogue/animalese/kim/x.wav" -dest_files=["res://.godot/imported/x.wav-90efe4fb55c5c2061c2e9dbc89bfb532.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/sound/dialogue/animalese/kim/y.wav b/sound/dialogue/animalese/kim/y.wav deleted file mode 100644 index 7f818c8e30b53d6f97be609b07bdff35fd99880d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16136 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Ð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 void: - call_deferred("_run") - - -func _run() -> void: - assert(NetworkChatProtocol.sanitize_body(42).is_empty()) - assert(NetworkChatProtocol.sanitize_body(" a ") == "a") - assert(NetworkChatProtocol.sanitize_body("a b") == "a b") - assert(NetworkChatProtocol.sanitize_body("a\tb\nc") == "a b c") - assert(NetworkChatProtocol.sanitize_body(" !hello!? ") == "!hello!?") - assert(NetworkChatProtocol.sanitize_body("!!!") == "!!!") - - const em_space := " " # U+2003 EM SPACE - const zero_width_space := "​" # U+200B ZERO WIDTH SPACE - const braille_blank := "⠀" # U+2800 BRAILLE PATTERN BLANK - const invisible_padding := em_space + zero_width_space + braille_blank - assert( - NetworkChatProtocol.sanitize_body(invisible_padding + "a" + invisible_padding) - == "a" - ) - assert(NetworkChatProtocol.sanitize_body(invisible_padding).is_empty()) - assert(NetworkChatProtocol.sanitize_body(" \t\n" + invisible_padding).is_empty()) - - assert( - NetworkChatProtocol.sanitize_body("a".repeat( - NetworkChatProtocol.MAX_VISIBLE_CHARACTERS - )).length() == NetworkChatProtocol.MAX_VISIBLE_CHARACTERS - ) - assert( - NetworkChatProtocol.sanitize_body("a".repeat( - NetworkChatProtocol.MAX_VISIBLE_CHARACTERS + 1 - )).is_empty() - ) - - print("Chat validation: PASS") - quit(0) diff --git a/tests/chat_validation.gd.uid b/tests/chat_validation.gd.uid deleted file mode 100644 index 54e6823..0000000 --- a/tests/chat_validation.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://ohemhv2sf5g4 diff --git a/tests/controller_menu_accessibility_validation.gd b/tests/controller_menu_accessibility_validation.gd index 4176ddc..87f2798 100644 --- a/tests/controller_menu_accessibility_validation.gd +++ b/tests/controller_menu_accessibility_validation.gd @@ -964,20 +964,19 @@ func _validate_profile_voice_navigation() -> void: for item: Variant in page.call("_controls_under", sample_grid): sample_buttons.append(item as Control) _expect( - sample_buttons.size() == 3, - "The voice-set row must expose kat, robot, and kim.", + sample_buttons.size() == 1, + "The voice-set row must expose the project-owned robot set.", ) - if sample_buttons.size() != 3: + if sample_buttons.size() != 1: page.queue_free() await process_frame return - var kat_button := sample_grid.get_node("VoiceSet_kat") as Button var robot_button := sample_grid.get_node("VoiceSet_robot") as Button - var kim_button := sample_grid.get_node("VoiceSet_kim") as Button - _expect(kat_button.text == "kat", "The default voice set is not labeled kat.") _expect(robot_button.text == "robot", "The tone voice set is not labeled robot.") - _expect(kim_button.text == "kim", "The kim voice set is not labeled kim.") - _expect(kat_button.button_pressed, "The kat voice set is not selected by default.") + _expect( + robot_button.button_pressed, + "The project-owned robot voice set is not selected by default.", + ) var option_controls: Array[Control] = [] var option_groups: Array = page.call("_controller_option_groups") for item: Variant in option_groups[0]: @@ -992,12 +991,12 @@ func _validate_profile_voice_navigation() -> void: ), "The controller voice zone does not contain every voice setting.", ) - _assert_directionally_reachable(kat_button, option_controls) - var kat_down := kat_button.get_node_or_null( - kat_button.focus_neighbor_bottom + _assert_directionally_reachable(robot_button, option_controls) + var robot_down := robot_button.get_node_or_null( + robot_button.focus_neighbor_bottom ) as Control _expect( - kat_down != null and pitch_grid.is_ancestor_of(kat_down), + robot_down != null and pitch_grid.is_ancestor_of(robot_down), "Down from the voice-set row does not enter the pitch row.", ) if OS.has_environment("NETFISHING_PROFILE_VOICE_CAPTURE"): @@ -1021,18 +1020,6 @@ func _validate_profile_voice_navigation() -> void: str(page.get("_draft_sample_set_id")) == "robot", "Selecting robot did not update the profile draft.", ) - kim_button.grab_focus() - kim_button.button_pressed = true - kim_button.pressed.emit() - await process_frame - _expect( - root.gui_get_focus_owner() == kim_button, - "Selecting kim moved controller focus out of the voice-set row.", - ) - _expect( - str(page.get("_draft_sample_set_id")) == "kim", - "Selecting kim did not update the profile draft.", - ) var category_controls: Array[Control] = [] for item: Variant in page.call( "_controls_under", page.get("_category_list") diff --git a/tests/network_chat_protocol_validation.gd b/tests/network_chat_protocol_validation.gd new file mode 100644 index 0000000..9368189 --- /dev/null +++ b/tests/network_chat_protocol_validation.gd @@ -0,0 +1,55 @@ +extends SceneTree + +const EDGE_PADDING: String = " \t\n ​⠀" + + +func _initialize() -> void: + call_deferred("_validate_protocol") + + +func _validate_protocol() -> void: + _validate_type_and_empty_handling() + _validate_message_cleanup() + _validate_protocol_limits() + print("Network chat protocol validation: PASS") + quit() + + +func _validate_type_and_empty_handling() -> void: + assert(NetworkChatProtocol.sanitize_body(null) == "") + assert(NetworkChatProtocol.sanitize_body(42) == "") + assert(NetworkChatProtocol.sanitize_body(EDGE_PADDING) == "") + assert(NetworkChatProtocol.sanitize_body("\u0001") == "") + + +func _validate_message_cleanup() -> void: + assert(NetworkChatProtocol.sanitize_body(" hello ") == "hello") + assert(NetworkChatProtocol.sanitize_body("a\tb\nc") == "a b c") + assert(NetworkChatProtocol.sanitize_body("word word") == "word word") + assert(NetworkChatProtocol.sanitize_body(" !!! ") == "!!!") + assert( + NetworkChatProtocol.sanitize_body( + EDGE_PADDING + "visible" + EDGE_PADDING + ) == "visible" + ) + + +func _validate_protocol_limits() -> void: + var maximum_body: String = "a".repeat( + NetworkChatProtocol.MAX_VISIBLE_CHARACTERS + ) + assert(NetworkChatProtocol.sanitize_body(maximum_body) == maximum_body) + assert( + NetworkChatProtocol.sanitize_body(maximum_body + "a") == "" + ) + var maximum_utf8_body: String = "🐟".repeat( + NetworkChatProtocol.MAX_VISIBLE_CHARACTERS + ) + assert( + maximum_utf8_body.to_utf8_buffer().size() + == NetworkChatProtocol.MAX_UTF8_BYTES + ) + assert( + NetworkChatProtocol.sanitize_body(maximum_utf8_body) + == maximum_utf8_body + ) diff --git a/tests/network_chat_protocol_validation.gd.uid b/tests/network_chat_protocol_validation.gd.uid new file mode 100644 index 0000000..5e98b42 --- /dev/null +++ b/tests/network_chat_protocol_validation.gd.uid @@ -0,0 +1 @@ +uid://bj7nq2k6q5c7f diff --git a/tests/profile_multiplayer_validation.gd b/tests/profile_multiplayer_validation.gd index ec7a669..6352ea2 100644 --- a/tests/profile_multiplayer_validation.gd +++ b/tests/profile_multiplayer_validation.gd @@ -53,7 +53,7 @@ func _run_host() -> void: "deep", profile.speech_speed_id, profile.call_id, - "kim", + "robot", )) var save_manager := main.get("_save_manager") as PlayerSaveManager assert(session.start_private_host(TEST_PORT)) @@ -62,7 +62,7 @@ func _run_host() -> void: ) as Player assert(local_avatar != null) assert(local_avatar.get_animalese_voice_id() == "deep") - assert(local_avatar.get_animalese_sample_set_id() == "kim") + assert(local_avatar.get_animalese_sample_set_id() == "robot") assert(save_manager.initialize_new_game()) main.call("_enter_gameplay") for _frame: int in 4: @@ -114,7 +114,7 @@ func _run_host() -> void: await process_frame assert(not voice_messages.is_empty()) assert(str(voice_messages[0].get("voice_id", "")) == "deep") - assert(str(voice_messages[0].get("sample_set_id", "")) == "kim") + assert(str(voice_messages[0].get("sample_set_id", "")) == "robot") var disconnect_deadline: int = Time.get_ticks_msec() + 8000 while ( Time.get_ticks_msec() < disconnect_deadline @@ -182,7 +182,7 @@ func _run_client() -> void: "deep", service.get_persisted_speech_speed_id(), service.get_persisted_call_id(), - "kim", + "robot", )) var apply_deadline: int = Time.get_ticks_msec() + 8000 while Time.get_ticks_msec() < apply_deadline and apply_results.is_empty(): @@ -191,11 +191,11 @@ func _run_client() -> void: assert(bool(apply_results[0][0])) assert(service.get_persisted_appearance() == changed) assert(service.get_persisted_voice_id() == "deep") - assert(service.get_persisted_sample_set_id() == "kim") + assert(service.get_persisted_sample_set_id() == "robot") assert(Dictionary(session.get("_local_appearance_snapshot")) == changed) var player := main.get_node("%PlayerSpawnService").get_local_player() as Player assert(player.get_animalese_voice_id() == "deep") - assert(player.get_animalese_sample_set_id() == "kim") + assert(player.get_animalese_sample_set_id() == "robot") var host_voice_messages: Array[Dictionary] = [] for message: Dictionary in chat_service.get_history(): if str(message.get("body", "")) == HOST_VOICE_MESSAGE: @@ -217,8 +217,8 @@ func _run_client() -> void: host_voice_messages.append(message) assert(not host_voice_messages.is_empty()) assert(str(host_voice_messages[0].get("voice_id", "")) == "deep") - assert(str(host_voice_messages[0].get("sample_set_id", "")) == "kim") - assert(remote_voice_samples.has("kim")) + assert(str(host_voice_messages[0].get("sample_set_id", "")) == "robot") + assert(remote_voice_samples.has("robot")) var local_confirmations: Array[Dictionary] = [] chat_service.local_message_confirmed.connect( func(message: Dictionary) -> void: @@ -238,7 +238,7 @@ func _run_client() -> void: await process_frame assert(not local_confirmations.is_empty()) assert(str(local_confirmations[0].get("voice_id", "")) == "deep") - assert(str(local_confirmations[0].get("sample_set_id", "")) == "kim") + assert(str(local_confirmations[0].get("sample_set_id", "")) == "robot") print("Profile multiplayer client validation: PASS") await _session_cleanup(main, session) diff --git a/tests/title_credits_validation.gd b/tests/title_credits_validation.gd index abee11e..99ed3df 100644 --- a/tests/title_credits_validation.gd +++ b/tests/title_credits_validation.gd @@ -155,12 +155,6 @@ func _run() -> void: var adamantris_credit := credits_page.get_node( "Paper/Margin/Layout/Columns/CreativeCredits/AdamantrisCredit" ) as Label - var tekgator_name := credits_page.get_node( - "Paper/Margin/Layout/Columns/CreativeCredits/TekgatorName" - ) as Label - var tekgator_credit := credits_page.get_node( - "Paper/Margin/Layout/Columns/CreativeCredits/TekgatorCredit" - ) as Label var credits_paper := credits_page.get_node("Paper") as PanelContainer var audio_credits := credits_page.get_node( "Paper/Margin/Layout/Columns/AdditionalCredits/AudioCredits" @@ -187,27 +181,11 @@ func _run() -> void: and "texture artwork" in adamantris_credit.text.to_lower(), "in-game credits describe adamantris's hand-net contribution", ) - _expect( - tekgator_name.text == "Tekgator", - "in-game credits name Tekgator", - ) - _expect( - "shop icon" in tekgator_credit.text.to_lower(), - "in-game credits describe Tekgator's shop icon artwork", - ) - _expect( - "kat • animalese voice sample" in audio_credits.text, - "in-game credits name kat's animalese voice contribution", - ) - _expect( - "kim • animalese voice sample" in audio_credits.text, - "in-game credits name kim's animalese voice contribution", - ) _expect( credits_paper.get_global_rect().encloses( - tekgator_credit.get_global_rect() + audio_credits.get_global_rect() ), - "contributor credits stay inside the authored credits panel", + "audio credits stay inside the authored credits panel", ) title_screen.queue_free() diff --git a/ui/chat_ui.gd b/ui/chat_ui.gd index c039046..fc63203 100644 --- a/ui/chat_ui.gd +++ b/ui/chat_ui.gd @@ -893,17 +893,19 @@ func _on_entry_text_submitted(_value: String) -> void: func _send() -> void: if _send_pending: return - var body := NetworkChatProtocol.sanitize_body(_entry.text) - if body.is_empty(): + var submitted_text: String = NetworkChatProtocol.sanitize_body( + _entry.text + ) + if submitted_text.length() == 0: close_chat() return - if _handle_editor_world_command(body): + if _handle_editor_world_command(submitted_text): return _send_pending = true - _pending_send_body = body + _pending_send_body = submitted_text _entry.editable = false if not _service.send_local_message( - body, + submitted_text, _player.get_animalese_voice_id(), _player.get_animalese_sample_set_id(), ): diff --git a/ui/fishing_shop.tscn b/ui/fishing_shop.tscn index d3e7e66..70ccec1 100644 --- a/ui/fishing_shop.tscn +++ b/ui/fishing_shop.tscn @@ -1,9 +1,7 @@ -[gd_scene load_steps=8 format=3] +[gd_scene load_steps=6 format=3] [ext_resource type="Script" path="res://ui/fishing_shop.gd" id="1_script"] [ext_resource type="Theme" path="res://ui/game_theme.tres" id="2_theme"] -[ext_resource type="Texture2D" path="res://items/icons/shop/64_speed_plus.png" id="3_reel"] -[ext_resource type="Texture2D" path="res://items/icons/shop/64_power_plus.png" id="4_barrier"] [ext_resource type="Texture2D" path="res://items/icons/shop/32_currency.png" id="5_coin"] [ext_resource type="Texture2D" path="res://ui/icons/pictograms/x_light.png" id="7_close"] [ext_resource type="PackedScene" path="res://ui/components/currency_amount.tscn" id="8_currency"] @@ -211,7 +209,7 @@ unique_name_in_owner = true offset_right = 144.0 offset_bottom = 144.0 tooltip_text = "reel speed" -icon = ExtResource("3_reel") +icon = ExtResource("7_close") expand_icon = true icon_max_width = 128 @@ -240,7 +238,7 @@ unique_name_in_owner = true offset_right = 144.0 offset_bottom = 144.0 tooltip_text = "rod power" -icon = ExtResource("4_barrier") +icon = ExtResource("7_close") expand_icon = true icon_max_width = 128 diff --git a/ui/title_credits_page.tscn b/ui/title_credits_page.tscn index 566bee7..7f222f9 100644 --- a/ui/title_credits_page.tscn +++ b/ui/title_credits_page.tscn @@ -127,19 +127,6 @@ theme_override_font_sizes/font_size = 15 text = "original hand-net model and texture artwork" autowrap_mode = 2 -[node name="TekgatorName" type="Label" parent="Paper/Margin/Layout/Columns/CreativeCredits"] -layout_mode = 2 -theme_override_colors/font_color = Color(0.902, 0.969, 0.969, 1) -theme_override_font_sizes/font_size = 18 -text = "Tekgator" - -[node name="TekgatorCredit" type="Label" parent="Paper/Margin/Layout/Columns/CreativeCredits"] -layout_mode = 2 -theme_override_colors/font_color = Color(0.624, 0.812, 0.824, 1) -theme_override_font_sizes/font_size = 15 -text = "cooler-capacity, reel-speed, and barrier-power shop icon artwork" -autowrap_mode = 2 - [node name="AdditionalCredits" type="VBoxContainer" parent="Paper/Margin/Layout/Columns"] custom_minimum_size = Vector2(404, 0) layout_mode = 2 @@ -156,7 +143,7 @@ text = "additional audio" layout_mode = 2 theme_override_colors/font_color = Color(0.624, 0.812, 0.824, 1) theme_override_font_sizes/font_size = 15 -text = "kat • animalese voice sample\nkim • animalese voice sample\ntosha73 • fishing reel sounds\nkkenny101 • ocean ambience\nqubodup • water impact\nAyton • rain ambience\nivolipa • dog bark\nChristyboy100 • cat meow" +text = "tosha73 • fishing reel sounds\nkkenny101 • ocean ambience\nqubodup • water impact\nAyton • rain ambience\nivolipa • dog bark\nChristyboy100 • cat meow" [node name="TechnologySpacer" type="Control" parent="Paper/Margin/Layout/Columns/AdditionalCredits"] custom_minimum_size = Vector2(0, 9) From ba35db101596665b13e903db62909e9209b82cf5 Mon Sep 17 00:00:00 2001 From: Voyager Date: Fri, 21 Aug 2026 16:39:44 -0400 Subject: [PATCH 13/90] Close project to unsolicited contributions --- CONTRIBUTING.md | 51 ++++++++++++++++++++++++-------------------- CONTRIBUTOR-TERMS.md | 32 ++++++++++++++++----------- README.md | 6 ++++-- docs/README.md | 15 +++++++++++++ 4 files changed, 66 insertions(+), 38 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6e982f1..7017110 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,29 +1,32 @@ -# Contributing +# Contribution policy -NETfishing is currently developed through focused changes on the repository's -active development branch. Coordinate scope with the project owner before -starting substantial work. +NETfishing is an owner-directed Woofmeow project and is not accepting +unsolicited contributions. Please do not submit pull requests, patches, code, +artwork, models, audio, writing, documentation, translations, designs, or +other implementation work. Pull requests are disabled for the official +repositories. -By intentionally submitting material for inclusion, contributors agree to the -applicable grants and representations in -[`CONTRIBUTOR-TERMS.md`](CONTRIBUTOR-TERMS.md). Maintainers must preserve an -affirmative record of that agreement. Contact the owners before submitting if -separate written terms are needed. +Issues remain available for reproducible bug reports and player feedback. An +Issue is not a request for contributed implementation, and attaching or +linking unsolicited work does not make it an accepted Project contribution. + +The owners may occasionally invite specific work in writing before it is +created or submitted. [`CONTRIBUTOR-TERMS.md`](CONTRIBUTOR-TERMS.md) is retained +to document previously accepted contributions and govern expressly invited +work; it is not a standing invitation to contribute. ## Contribution forks -The [NETfishing Asset License](ASSET-LICENSE.md) permits a public source-control -fork to retain NETfishing assets when the fork is maintained in good faith to -prepare, test, review, or submit changes for possible inclusion in the official -project. Keep the hosting platform's fork relationship visible, preserve all -license and attribution notices, and do not publish general-audience builds or -use the fork as an independent game or distribution. +The [NETfishing Asset License](ASSET-LICENSE.md) contains limited permissions +for qualifying Contribution Forks. Those permissions do not promise review or +acceptance and do not override the policy above. Keep the hosting platform's +fork relationship visible, preserve all license and attribution notices, and +do not publish general-audience builds or use the fork as an independent game +or distribution. Private test builds and temporary access-controlled test servers may be shared -with people directly participating in development or review of the proposed -contribution. Submission remains subject to `CONTRIBUTOR-TERMS.md`; permission -to maintain a Contribution Fork does not guarantee that its changes will be -accepted. +only as allowed by that license. Permission to maintain a Contribution Fork +does not authorize unsolicited submission or obligate the owners to review it. ## Change discipline @@ -36,13 +39,15 @@ accepted. - Keep presentation-only systems out of save files and network messages. - Store runtime assets under repository-owned paths; never reference a workstation sync or temporary directory. -- Record the source and license of newly imported assets in - [`docs/ATTRIBUTION.md`](docs/ATTRIBUTION.md). +- Retain source, permission, and license evidence for newly imported assets. + Update [`docs/ATTRIBUTION.md`](docs/ATTRIBUTION.md) when the accepted work + adds or changes a distributed credit or third-party notice; do not add a + file-by-file inventory of ordinary project-owned assets. - Do not assume the GPL code license applies to project assets; observe [`ASSET-LICENSE.md`](ASSET-LICENSE.md) and third-party terms. - Do not commit `.godot/`, test data, logs, captures, or build outputs. -## Before requesting review +## Before committing a maintainer change ```sh git diff --check @@ -63,7 +68,7 @@ tests are supporting evidence, not a replacement. - Do not mix generated build artifacts with source changes. - Do not rewrite published release tags. - Describe behavior, compatibility impact, validation, and asset provenance in - the review or release record. + the internal review or release record. ## Style diff --git a/CONTRIBUTOR-TERMS.md b/CONTRIBUTOR-TERMS.md index 8ef207e..e0d801a 100644 --- a/CONTRIBUTOR-TERMS.md +++ b/CONTRIBUTOR-TERMS.md @@ -1,8 +1,13 @@ # NETfishing contributor terms -These terms apply to contributions intentionally submitted for inclusion in -NETfishing after these terms are published. They do not retroactively change -ownership of earlier work or replace a separately signed agreement. +NETfishing does not accept unsolicited contributions. These terms are retained +as the governing record for contributions previously accepted after their +publication and for specific future work that both Owners expressly invite in +writing before submission. They are not a request or standing invitation for +patches, pull requests, assets, or other material. + +These terms do not retroactively change ownership of earlier work or replace a +separately signed agreement. “Owners” means the two NETfishing co-owners who publish the Project as Woofmeow and are publicly credited as Voyager and Endeavour. “Project” means @@ -80,15 +85,16 @@ separate written agreement signed by the appropriate parties. ## 7. Acceptance -A contribution is not accepted merely because it was posted, uploaded, or -discussed. The Owners or their authorized maintainers may accept, modify, -decline, or later remove it. +A contribution is not accepted merely because it was posted, uploaded, linked, +emailed, or discussed. Unsolicited material will not be reviewed or accepted. +The Owners or their authorized maintainers may modify, decline, or later +remove previously accepted or expressly invited work. -By intentionally submitting a patch, pull request, asset, or other material -for Project inclusion after receiving notice of these terms, you agree to the -applicable grants above. Maintainers should record the contributor’s -affirmative agreement in the pull request, issue, email, or another durable -written record. +For work expressly invited in writing, intentionally delivering the requested +material for Project inclusion after receiving notice of these terms records +agreement to the applicable grants above. Maintainers must retain both the +written invitation and the contributor's affirmative agreement in a durable +Project record. -If you cannot agree to these terms, do not submit the contribution; contact -the Owners to discuss a separate written arrangement. +Do not send unsolicited work. An owner invitation may instead specify a +separate written arrangement signed by the appropriate parties. diff --git a/README.md b/README.md index cd48545..ac3635b 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ godot --path . ## Validation The validation scripts isolate Godot's settings and application-data roots. -Run the fast, deterministic suite before submitting a change: +Run the fast, deterministic suite before committing a change: ```sh scripts/run_validations.sh quick @@ -101,7 +101,9 @@ world and UI authoring, and testing are consolidated in [TRADEMARKS.md](TRADEMARKS.md). - Third-party materials retain their own terms; see the consolidated [credits, notices, and provenance record](docs/ATTRIBUTION.md). -- Contributions are accepted under [CONTRIBUTOR-TERMS.md](CONTRIBUTOR-TERMS.md). +- Unsolicited contributions are not accepted. See + [CONTRIBUTING.md](CONTRIBUTING.md). Historical and expressly invited work is + governed by [CONTRIBUTOR-TERMS.md](CONTRIBUTOR-TERMS.md). Material boundaries and binary-release requirements are recorded in that same [`docs/ATTRIBUTION.md`](docs/ATTRIBUTION.md) reference. diff --git a/docs/README.md b/docs/README.md index 49645b3..05ac0b4 100644 --- a/docs/README.md +++ b/docs/README.md @@ -34,6 +34,12 @@ and resources. These documents describe boundaries, policy, and maintenance procedures; they should not duplicate changing constants or inventories that can be derived reliably from the project. +The same rule applies to credits. `ATTRIBUTION.md` records creators, licenses, +and durable contribution families. It does not attempt to mirror every current +asset filename or private intake-directory layout. Planned or unincorporated +work is not described as shipped, and repository paths are included only when +they help recipients locate a distributed third-party work or license. + ## Files intentionally kept at the repository root The following are entry points or governing legal documents rather than @@ -46,6 +52,10 @@ general project documentation, so they remain at conventional root paths: - `TRADEMARKS.md` - `CONTRIBUTOR-TERMS.md` +`CONTRIBUTING.md` records that unsolicited contributions are not accepted. +`CONTRIBUTOR-TERMS.md` remains a governing legal record for previously +accepted and expressly invited work, not an invitation for new submissions. + Third-party font license texts stay beside their font files under `ui/fonts/` so the licensed files and their original notices cannot drift apart. Build scripts collect those legal files and the authoritative attribution record @@ -58,3 +68,8 @@ update the appropriate reference above and link to its heading when source comments need more context. Player-facing package instructions belong only in `README-PLAYTEST.txt`; source and scripts remain authoritative for command-line usage. + +Before adding a literal project path to prose, verify that it exists in the +same revision and that readers actually need the path. Prefer a stable owner, +interface, or resource type over a directory listing. A path or Git author is +never evidence of creative authorship. From 8107e2d89cd79c5f1f00a285d69350cc795816e7 Mon Sep 17 00:00:00 2001 From: Voyager Date: Fri, 21 Aug 2026 21:01:21 -0400 Subject: [PATCH 14/90] Add artwork export and stamping --- drawing/surface_drawing_canvas.gd | 320 ++++++-- drawing/surface_drawing_protocol.gd | 83 ++ economy/art_shop_stock.gd | 7 + main/main.gd | 1 + network/network_player_list_service.gd | 74 ++ network/network_surface_drawing_service.gd | 716 +++++++++++++++++- network/player_list_entry.gd | 1 + progression/player_art_unlocks.gd | 8 +- scripts/run_validations.sh | 1 + tests/art_tools_validation.gd | 36 +- tests/economy_regression_validation.gd | 22 +- tests/operator_multiplayer_validation.gd | 1 + .../surface_drawing_multiplayer_validation.gd | 117 ++- tests/surface_drawing_runtime_validation.gd | 43 ++ ...ace_drawing_texture_renderer_validation.gd | 101 +++ ...drawing_texture_renderer_validation.gd.uid | 1 + tests/surface_drawing_validation.gd | 80 +- ui/fishing_shop.gd | 18 +- ui/players_page.gd | 24 +- ui/surface_drawing_toolbar.gd | 92 ++- ui/surface_drawing_toolbar.tscn | 86 ++- 21 files changed, 1727 insertions(+), 105 deletions(-) create mode 100644 tests/surface_drawing_texture_renderer_validation.gd create mode 100644 tests/surface_drawing_texture_renderer_validation.gd.uid diff --git a/drawing/surface_drawing_canvas.gd b/drawing/surface_drawing_canvas.gd index f6ceb94..01d34d7 100644 --- a/drawing/surface_drawing_canvas.gd +++ b/drawing/surface_drawing_canvas.gd @@ -2,7 +2,6 @@ class_name SurfaceDrawingCanvas extends Node3D const GUIDED_PIXEL_FILL: float = 0.88 -const FINISHED_PIXEL_FILL: float = 1.0 const SURFACE_OFFSET: float = 0.012 const LAYER_OFFSET_STEP: float = 0.0002 const SURFACE_SAMPLE_DEPTH: float = 0.45 @@ -13,13 +12,17 @@ var grid_height: int = 0 var cell_size: float = 0.0 var revision: int = -1 var creator_fingerprint: String = "" +var participant_fingerprints: Array[String] = [] var _surface_origin: Vector3 var _surface_normal: Vector3 var _surface_tangent: Vector3 var _surface_bitangent: Vector3 var _cells: Dictionary[int, Dictionary] = {} -var _color_meshes: Dictionary[StringName, MultiMeshInstance3D] = {} +var _cell_surface_transforms: Array[Transform3D] = [] +var _pixel_image: Image +var _pixel_texture: ImageTexture +var _pixel_instance: MeshInstance3D var _grid_instance: MeshInstance3D var _guide_visible: bool = true var _finalized: bool = false @@ -42,6 +45,7 @@ func setup( cell_size = float(data["cell_size"]) revision = int(data["revision"]) creator_fingerprint = str(data["creator_fingerprint"]) + participant_fingerprints = _participants_from_state(data) _finalized = bool(data.get("finalized", false)) _guide_visible = bool(data.get("guide_visible", true)) and not _finalized _layer = int(data.get("layer", 0)) @@ -65,7 +69,7 @@ func setup( var cell: Dictionary = cell_value _cells[_cell_key(int(cell["x"]), int(cell["y"]))] = cell.duplicate(true) _build_grid() - _rebuild_pixels() + _build_pixel_renderer() return true @@ -83,8 +87,15 @@ func apply_update(data: Dictionary) -> bool: _cells.erase(key) else: _cells[key] = edit.duplicate(true) + participant_fingerprints = _participants_from_update( + data, participant_fingerprints + ) revision = int(data["revision"]) - _rebuild_pixels() + if is_hidden_by_relationship(): + _rebuild_pixel_image() + else: + _apply_pixel_edits(data["edits"]) + _refresh_grid_visibility() return true @@ -96,15 +107,32 @@ func apply_guide_update(data: Dictionary) -> bool: ): return false revision = int(data["revision"]) + participant_fingerprints = _participants_from_update( + data, participant_fingerprints + ) _finalized = bool(data["finalized"]) _guide_visible = bool(data["guide_visible"]) and not _finalized - _refresh_grid_visibility() - _rebuild_pixels() + if _finalized: + _destroy_grid() + else: + _refresh_grid_visibility() return true func refresh_relationship_visibility() -> void: - _rebuild_pixels() + _rebuild_pixel_image() + if _pixel_instance != null: + _pixel_instance.visible = not is_hidden_by_relationship() + _refresh_grid_visibility() + + +func is_hidden_by_relationship() -> bool: + if _relationships == null: + return false + for fingerprint: String in participant_fingerprints: + if _relationships.is_blocked(fingerprint): + return true + return false func set_stencil_visible(should_be_visible: bool) -> void: @@ -121,7 +149,27 @@ func is_finalized() -> bool: func get_rendered_pixel_size() -> float: - return cell_size * _pixel_fill() + return cell_size + + +func get_rendered_pixel_count() -> int: + if is_hidden_by_relationship(): + return 0 + var count: int = 0 + for cell: Dictionary in _cells.values(): + if not _visible_cell_color(cell).is_equal_approx(Color.TRANSPARENT): + count += 1 + return count + + +func get_export_image() -> Image: + if _pixel_image == null or _pixel_image.is_empty(): + return null + return _pixel_image.duplicate() as Image + + +func has_guide_geometry() -> bool: + return _grid_instance != null and is_instance_valid(_grid_instance) func contains_world_point(world_point: Vector3, tolerance: float = 0.3) -> bool: @@ -192,7 +240,18 @@ func get_cell_surface_transform( ) -> Transform3D: if x < 0 or x >= grid_width or y < 0 or y >= grid_height: return Transform3D.IDENTITY - return global_transform * _sample_cell_transform(x, y, fill) + var key: int = _cell_key(x, y) + var local_transform: Transform3D = ( + _cell_surface_transforms[key] + if key >= 0 and key < _cell_surface_transforms.size() + else _sample_cell_transform(x, y, 1.0) + ) + var scaled_basis: Basis = local_transform.basis + var resolved_fill: float = clampf(fill, 0.05, 1.0) + scaled_basis.x *= resolved_fill + scaled_basis.y *= resolved_fill + local_transform.basis = scaled_basis + return global_transform * local_transform func get_authoritative_cells() -> Array[Dictionary]: @@ -210,6 +269,9 @@ func get_authoritative_cells() -> Array[Dictionary]: func _build_grid() -> void: if _grid_instance != null: _grid_instance.queue_free() + _grid_instance = null + if _finalized: + return var immediate := ImmediateMesh.new() var material := StandardMaterial3D.new() material.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED @@ -219,6 +281,7 @@ func _build_grid() -> void: immediate.surface_begin(Mesh.PRIMITIVE_LINES, material) var half_width: float = float(grid_width) * cell_size * 0.5 var half_height: float = float(grid_height) * cell_size * 0.5 + var sampled_vertices: Dictionary[Vector2i, Dictionary] = {} for x: int in range(grid_width + 1): var horizontal: float = -half_width + float(x) * cell_size for y_segment: int in range(grid_height): @@ -229,11 +292,15 @@ func _build_grid() -> void: immediate, _surface_origin + _surface_tangent * horizontal + _surface_bitangent * start_vertical, + Vector2i(x, y_segment), + sampled_vertices, ) _add_grid_vertex( immediate, _surface_origin + _surface_tangent * horizontal + _surface_bitangent * (start_vertical + cell_size), + Vector2i(x, y_segment + 1), + sampled_vertices, ) for y: int in range(grid_height + 1): var vertical: float = -half_height + float(y) * cell_size @@ -245,12 +312,16 @@ func _build_grid() -> void: immediate, _surface_origin + _surface_tangent * start_horizontal + _surface_bitangent * vertical, + Vector2i(x_segment, y), + sampled_vertices, ) _add_grid_vertex( immediate, _surface_origin + _surface_tangent * (start_horizontal + cell_size) + _surface_bitangent * vertical, + Vector2i(x_segment + 1, y), + sampled_vertices, ) immediate.surface_end() _grid_instance = MeshInstance3D.new() @@ -261,8 +332,16 @@ func _build_grid() -> void: _refresh_grid_visibility() -func _add_grid_vertex(immediate: ImmediateMesh, world_point: Vector3) -> void: - var sampled: Dictionary = _sample_surface(world_point) +func _add_grid_vertex( + immediate: ImmediateMesh, + world_point: Vector3, + grid_point: Vector2i, + sampled_vertices: Dictionary[Vector2i, Dictionary], +) -> void: + var sampled: Dictionary = sampled_vertices.get(grid_point, {}) + if sampled.is_empty(): + sampled = _sample_surface(world_point) + sampled_vertices[grid_point] = sampled var point: Vector3 = sampled["position"] var normal: Vector3 = sampled["normal"] immediate.surface_add_vertex( @@ -270,56 +349,130 @@ func _add_grid_vertex(immediate: ImmediateMesh, world_point: Vector3) -> void: ) -func _rebuild_pixels() -> void: - for instance: MultiMeshInstance3D in _color_meshes.values(): - instance.queue_free() - _color_meshes.clear() - var cells_by_color: Dictionary[StringName, Array] = {} - for cell: Dictionary in _cells.values(): - var author_fingerprint: String = str(cell.get("author_fingerprint", "")) - if ( - _relationships != null - and _relationships.is_blocked(author_fingerprint) - ): - continue - var color_id := StringName(str(cell.get("color_id", ""))) - if not SurfaceDrawingPalette.has_color(color_id): - continue - var color_cells: Array = cells_by_color.get(color_id, []) - color_cells.append(cell) - cells_by_color[color_id] = color_cells - for color_id: StringName in cells_by_color: - _create_color_mesh(color_id, cells_by_color[color_id]) - - -func _create_color_mesh(color_id: StringName, cells: Array) -> void: - if cells.is_empty(): - return - var quad := QuadMesh.new() - quad.size = Vector2.ONE +func _build_pixel_renderer() -> void: + if _pixel_instance != null: + _pixel_instance.queue_free() + _pixel_instance = null + var cell_count: int = grid_width * grid_height + var vertices := PackedVector3Array() + var texture_coordinates := PackedVector2Array() + var indices := PackedInt32Array() + vertices.resize(cell_count * 4) + texture_coordinates.resize(cell_count * 4) + indices.resize(cell_count * 6) + _cell_surface_transforms.clear() + _cell_surface_transforms.resize(cell_count) + for y: int in range(grid_height): + for x: int in range(grid_width): + var cell_index: int = _cell_key(x, y) + var surface_transform := _sample_cell_transform(x, y, 1.0) + _cell_surface_transforms[cell_index] = surface_transform + var center: Vector3 = surface_transform.origin + var horizontal: Vector3 = surface_transform.basis.x * 0.5 + var vertical: Vector3 = surface_transform.basis.y * 0.5 + var vertex_offset: int = cell_index * 4 + vertices[vertex_offset] = center - horizontal - vertical + vertices[vertex_offset + 1] = center + horizontal - vertical + vertices[vertex_offset + 2] = center + horizontal + vertical + vertices[vertex_offset + 3] = center - horizontal + vertical + var image_row: int = _image_y(y) + var u_min: float = float(x) / float(grid_width) + var u_max: float = float(x + 1) / float(grid_width) + var v_min: float = float(image_row) / float(grid_height) + var v_max: float = float(image_row + 1) / float(grid_height) + texture_coordinates[vertex_offset] = Vector2(u_min, v_max) + texture_coordinates[vertex_offset + 1] = Vector2(u_max, v_max) + texture_coordinates[vertex_offset + 2] = Vector2(u_max, v_min) + texture_coordinates[vertex_offset + 3] = Vector2(u_min, v_min) + var index_offset: int = cell_index * 6 + indices[index_offset] = vertex_offset + indices[index_offset + 1] = vertex_offset + 1 + indices[index_offset + 2] = vertex_offset + 2 + indices[index_offset + 3] = vertex_offset + indices[index_offset + 4] = vertex_offset + 2 + indices[index_offset + 5] = vertex_offset + 3 + _rebuild_pixel_image() + var arrays: Array = [] + arrays.resize(Mesh.ARRAY_MAX) + arrays[Mesh.ARRAY_VERTEX] = vertices + arrays[Mesh.ARRAY_TEX_UV] = texture_coordinates + arrays[Mesh.ARRAY_INDEX] = indices + var mesh := ArrayMesh.new() + mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays) var material := StandardMaterial3D.new() material.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED - material.albedo_color = SurfaceDrawingPalette.get_color(color_id) + material.albedo_color = Color.WHITE + material.albedo_texture = _pixel_texture + material.texture_filter = BaseMaterial3D.TEXTURE_FILTER_NEAREST + material.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA_SCISSOR + material.alpha_scissor_threshold = 0.5 material.cull_mode = BaseMaterial3D.CULL_DISABLED - quad.material = material - var multimesh := MultiMesh.new() - multimesh.transform_format = MultiMesh.TRANSFORM_3D - multimesh.mesh = quad - multimesh.instance_count = cells.size() - for cell_index: int in range(cells.size()): - var cell: Dictionary = cells[cell_index] - multimesh.set_instance_transform( - cell_index, - _sample_cell_transform( - int(cell["x"]), int(cell["y"]), _pixel_fill() - ), + mesh.surface_set_material(0, material) + _pixel_instance = MeshInstance3D.new() + _pixel_instance.name = "ArtworkTexture" + _pixel_instance.mesh = mesh + _pixel_instance.cast_shadow = GeometryInstance3D.SHADOW_CASTING_SETTING_OFF + add_child(_pixel_instance) + _pixel_instance.visible = not is_hidden_by_relationship() + + +func _rebuild_pixel_image() -> void: + if ( + _pixel_image == null + or _pixel_image.get_width() != grid_width + or _pixel_image.get_height() != grid_height + ): + _pixel_image = Image.create( + grid_width, grid_height, false, Image.FORMAT_RGBA8 ) - var instance := MultiMeshInstance3D.new() - instance.name = "Pixels_%s" % color_id - instance.multimesh = multimesh - instance.cast_shadow = GeometryInstance3D.SHADOW_CASTING_SETTING_OFF - add_child(instance) - _color_meshes[color_id] = instance + _pixel_image.fill(Color.TRANSPARENT) + if not is_hidden_by_relationship(): + for cell: Dictionary in _cells.values(): + _set_image_cell(int(cell["x"]), int(cell["y"]), cell) + if _pixel_texture == null: + _pixel_texture = ImageTexture.create_from_image(_pixel_image) + else: + _pixel_texture.update(_pixel_image) + + +func _apply_pixel_edits(edits: Array) -> void: + if _pixel_image == null or _pixel_texture == null: + _rebuild_pixel_image() + return + for edit_value: Variant in edits: + var edit: Dictionary = edit_value + var x: int = int(edit["x"]) + var y: int = int(edit["y"]) + var cell: Dictionary = _cells.get(_cell_key(x, y), {}) + _set_image_cell(x, y, cell) + _pixel_texture.update(_pixel_image) + + +func _set_image_cell(x: int, y: int, cell: Dictionary) -> void: + if ( + _pixel_image == null + or x < 0 + or x >= grid_width + or y < 0 + or y >= grid_height + ): + return + _pixel_image.set_pixel(x, _image_y(y), _visible_cell_color(cell)) + + +func _visible_cell_color(cell: Dictionary) -> Color: + if cell.is_empty(): + return Color.TRANSPARENT + var color_id := StringName(str(cell.get("color_id", ""))) + return ( + SurfaceDrawingPalette.get_color(color_id) + if SurfaceDrawingPalette.has_color(color_id) + else Color.TRANSPARENT + ) + + +func _image_y(cell_y: int) -> int: + return grid_height - 1 - cell_y func _sample_cell_transform( @@ -376,17 +529,60 @@ func _sample_surface(expected: Vector3) -> Dictionary: return {"position": point, "normal": normal} -func _pixel_fill() -> float: - return GUIDED_PIXEL_FILL if _guide_visible else FINISHED_PIXEL_FILL - - func _surface_offset() -> float: return SURFACE_OFFSET + float(_layer) * LAYER_OFFSET_STEP +func _destroy_grid() -> void: + if _grid_instance == null: + return + _grid_instance.queue_free() + _grid_instance = null + + func _refresh_grid_visibility() -> void: if _grid_instance != null: - _grid_instance.visible = _stencil_requested_visible and _guide_visible + _grid_instance.visible = ( + _stencil_requested_visible + and _guide_visible + and not is_hidden_by_relationship() + ) + + +func _participants_from_state(data: Dictionary) -> Array[String]: + var result: Array[String] = [] + _append_participant(result, str(data.get("creator_fingerprint", ""))) + for value: Variant in data.get("participant_fingerprints", []): + _append_participant(result, str(value)) + for cell_value: Variant in data.get("cells", []): + var cell: Dictionary = cell_value + _append_participant( + result, str(cell.get("author_fingerprint", "")) + ) + return result + + +func _participants_from_update( + data: Dictionary, + fallback: Array[String], +) -> Array[String]: + var result: Array[String] = fallback.duplicate() + for value: Variant in data.get("participant_fingerprints", []): + _append_participant(result, str(value)) + for edit_value: Variant in data.get("edits", []): + var edit: Dictionary = edit_value + _append_participant( + result, str(edit.get("author_fingerprint", "")) + ) + return result + + +func _append_participant(result: Array[String], fingerprint: String) -> void: + if ( + NetworkIdentityCrypto.valid_fingerprint(fingerprint) + and fingerprint not in result + ): + result.append(fingerprint) func _cell_key(x: int, y: int) -> int: diff --git a/drawing/surface_drawing_protocol.gd b/drawing/surface_drawing_protocol.gd index 5ca4ae0..8fdb054 100644 --- a/drawing/surface_drawing_protocol.gd +++ b/drawing/surface_drawing_protocol.gd @@ -18,6 +18,9 @@ const MAX_CANVAS_ID_LENGTH: int = 64 const MAX_REQUEST_ID_LENGTH: int = 64 const MAX_STROKE_ID_LENGTH: int = 64 const MAX_SESSION_ID_LENGTH: int = 96 +# Sessions support up to 128 simultaneous players. Keep enough bounded history +# for a complete room turnover while never accepting unattributed edits. +const MAX_PARTICIPANTS: int = 256 const MAX_COORDINATE: float = 10000.0 @@ -64,6 +67,38 @@ static func validate_edit_request(data: Variant) -> bool: return true +static func validate_stamp_request(data: Variant) -> bool: + if typeof(data) != TYPE_DICTIONARY: + return false + var value: Dictionary = data + if ( + not _valid_common(value) + or not _valid_vector(value.get("origin")) + or not _valid_vector(value.get("normal")) + or not _valid_vector(value.get("tangent")) + or typeof(value.get("width")) != TYPE_INT + or int(value["width"]) not in GRID_SIZES + or typeof(value.get("height")) != TYPE_INT + or int(value["height"]) != int(value["width"]) + or typeof(value.get("cell_size")) not in [TYPE_FLOAT, TYPE_INT] + or not is_equal_approx(float(value["cell_size"]), CELL_SIZE) + or typeof(value.get("pixels")) != TYPE_PACKED_BYTE_ARRAY + ): + return false + var pixels: PackedByteArray = value["pixels"] + var expected_size: int = int(value["width"]) * int(value["height"]) + if pixels.size() != expected_size: + return false + var maximum_palette_index: int = SurfaceDrawingPalette.COLORS.size() + var painted_count: int = 0 + for palette_index: int in pixels: + if palette_index > maximum_palette_index: + return false + if palette_index > 0: + painted_count += 1 + return painted_count > 0 + + static func validate_guide_request(data: Variant) -> bool: if typeof(data) != TYPE_DICTIONARY: return false @@ -112,6 +147,9 @@ static func validate_canvas_state(data: Variant) -> bool: or not NetworkIdentityCrypto.valid_fingerprint( value.get("creator_fingerprint") ) + or not _valid_participant_fingerprints( + value.get("participant_fingerprints", []) + ) or typeof(value.get("cells")) != TYPE_ARRAY ): return false @@ -127,6 +165,13 @@ static func validate_canvas_state(data: Variant) -> bool: or int((cell_value as Dictionary)["y"]) >= grid_height ): return false + var participants: Array = value.get("participant_fingerprints", []) + if not participants.is_empty(): + if str(value["creator_fingerprint"]) not in participants: + return false + for cell_value: Variant in cells: + if str((cell_value as Dictionary)["author_fingerprint"]) not in participants: + return false return true @@ -143,6 +188,9 @@ static func validate_guide_update(data: Variant) -> bool: and int(value["revision"]) >= 1 and typeof(value.get("guide_visible")) == TYPE_BOOL and typeof(value.get("finalized")) == TYPE_BOOL + and _valid_participant_fingerprints( + value.get("participant_fingerprints", []) + ) ) @@ -160,6 +208,9 @@ static func validate_canvas_update(data: Variant) -> bool: or typeof(value.get("revision")) != TYPE_INT or int(value["revision"]) < 1 or typeof(value.get("edits")) != TYPE_ARRAY + or not _valid_participant_fingerprints( + value.get("participant_fingerprints", []) + ) ): return false var edits: Array = value["edits"] @@ -168,6 +219,18 @@ static func validate_canvas_update(data: Variant) -> bool: for edit_value: Variant in edits: if not validate_authoritative_cell(edit_value, true): return false + var participants: Array = value.get("participant_fingerprints", []) + if not participants.is_empty(): + for edit_value: Variant in edits: + var edit: Dictionary = edit_value + var author_fingerprint: String = str( + edit.get("author_fingerprint", "") + ) + if ( + not str(edit.get("color_id", "")).is_empty() + and author_fingerprint not in participants + ): + return false return true @@ -242,6 +305,26 @@ static func _valid_stroke_id(value: Variant) -> bool: ) +static func _valid_participant_fingerprints(value: Variant) -> bool: + if typeof(value) != TYPE_ARRAY: + return false + var fingerprints: Array = value + if fingerprints.size() > MAX_PARTICIPANTS: + return false + var seen: Dictionary[String, bool] = {} + for fingerprint_value: Variant in fingerprints: + if typeof(fingerprint_value) != TYPE_STRING: + return false + var fingerprint: String = str(fingerprint_value) + if ( + not NetworkIdentityCrypto.valid_fingerprint(fingerprint) + or seen.has(fingerprint) + ): + return false + seen[fingerprint] = true + return true + + static func _valid_vector(value: Variant) -> bool: if typeof(value) != TYPE_ARRAY: return false diff --git a/economy/art_shop_stock.gd b/economy/art_shop_stock.gd index ff84d09..ddd6f3c 100644 --- a/economy/art_shop_stock.gd +++ b/economy/art_shop_stock.gd @@ -24,6 +24,9 @@ const GRID_PRODUCTS: Array[StringName] = [ &"grid_64x", &"grid_128x", ] +const STAMP_PRODUCTS: Array[StringName] = [ + PlayerArtUnlocks.STAMP_PRODUCT_ID, +] static func get_price(product_id: StringName) -> int: @@ -44,6 +47,8 @@ static func get_display_name(product_id: StringName) -> String: var grid_size: int = PlayerArtUnlocks.grid_size_for_product(product_id) if grid_size > 0: return "%d×%d grid" % [grid_size, grid_size] + if product_id == PlayerArtUnlocks.STAMP_PRODUCT_ID: + return "Stamp tool" return "Unknown art supply" @@ -61,4 +66,6 @@ static func get_description(product_id: StringName) -> String: return "Unlocks the %d×%d grid in the Paint UI." % [ grid_size, grid_size, ] + if product_id == PlayerArtUnlocks.STAMP_PRODUCT_ID: + return "Unlocks saved artwork stamps in the Art Kit." return "" diff --git a/main/main.gd b/main/main.gd index fa8fc0b..5e3a097 100644 --- a/main/main.gd +++ b/main/main.gd @@ -729,6 +729,7 @@ func _initialize_application(dedicated: bool) -> void: _player.bag, _player.hotbar, _player.art_unlocks, + _data_root, ) _network_player_list.set_surface_drawing_service( _network_surface_drawing diff --git a/network/network_player_list_service.gd b/network/network_player_list_service.gd index 4742d14..2014665 100644 --- a/network/network_player_list_service.gd +++ b/network/network_player_list_service.gd @@ -81,6 +81,7 @@ func get_entries() -> Array[PlayerListEntry]: and (_session.is_host() or not entry.is_operator) ) entry.can_ban = entry.can_kick + entry.can_clear_art = entry.can_kick entry.can_manage_operator = ( _session.can_manage_operators() and peer_id != local_id @@ -189,6 +190,20 @@ func kick(peer_id: int, fingerprint: String, revision: int) -> bool: return true +func clear_art(peer_id: int, fingerprint: String, revision: int) -> bool: + if _session.is_host(): + return _clear_art_on_host( + peer_id, fingerprint, revision, true + ) + if not _session.is_local_operator(): + moderation_finished.emit( + false, "Only the host or an operator can clear player artwork." + ) + return false + request_clear_art.rpc_id(1, peer_id, fingerprint) + return true + + func ban( peer_id: int, fingerprint: String, @@ -257,6 +272,23 @@ func request_kick(peer_id: int, fingerprint: String) -> void: ) +@rpc("any_peer", "call_remote", "reliable", 0) +func request_clear_art(peer_id: int, fingerprint: String) -> void: + var sender_id: int = multiplayer.get_remote_sender_id() + if not _valid_operator_sender(sender_id): + return + var ok: bool = _clear_art_on_host( + peer_id, fingerprint, -1, false + ) + _send_moderation_result( + sender_id, + ok, + "Player artwork cleared." + if ok + else "Player artwork could not be cleared.", + ) + + @rpc("any_peer", "call_remote", "reliable", 0) func request_ban(peer_id: int, fingerprint: String) -> void: var sender_id: int = multiplayer.get_remote_sender_id() @@ -551,12 +583,54 @@ func _ban_on_host( if local_host_request: moderation_finished.emit(false, "Ban could not be saved.") return false + if _surface_drawing != null: + _surface_drawing.clear_artwork_by_fingerprint(fingerprint) var ok: bool = _session.kick_authenticated_peer(peer_id, fingerprint, true) if local_host_request: moderation_finished.emit(ok, "Player banned." if ok else "Ban saved.") return true +func _clear_art_on_host( + peer_id: int, + fingerprint: String, + revision: int, + local_host_request: bool, +) -> bool: + if not _valid_moderation_target( + peer_id, + fingerprint, + revision, + local_host_request, + local_host_request, + ): + if local_host_request: + moderation_finished.emit( + false, "That player is no longer connected." + ) + return false + if _surface_drawing == null: + if local_host_request: + moderation_finished.emit( + false, "Player artwork could not be cleared." + ) + return false + var affected_layers: int = ( + _surface_drawing.clear_artwork_by_fingerprint(fingerprint) + ) + var ok: bool = affected_layers >= 0 + if local_host_request: + moderation_finished.emit( + ok, + "Player artwork cleared." + if affected_layers > 0 + else "No shared artwork from that player was found." + if ok + else "Player artwork could not be cleared.", + ) + return ok + + func _reset_session_artwork_on_host( emit_local_result: bool = true, ) -> bool: diff --git a/network/network_surface_drawing_service.gd b/network/network_surface_drawing_service.gd index e42519c..10348aa 100644 --- a/network/network_surface_drawing_service.gd +++ b/network/network_surface_drawing_service.gd @@ -27,6 +27,9 @@ const MAX_REQUESTS_PER_WINDOW: int = 32 const MAX_RECENT_REQUEST_IDS: int = 64 const GRID_PREVIEW_SURFACE_OFFSET: float = 0.03 const POINTER_EDGE_MARGIN: float = 2.0 +const ARTWORK_DIRECTORY_NAME: String = "artwork" +const STAMP_ALPHA_THRESHOLD: float = 0.5 +const STAMP_COLOR_TOLERANCE: float = 0.012 const INVALID_POINTER_SCREEN_POSITION := Vector2(-1.0, -1.0) enum GuideAction { @@ -43,17 +46,25 @@ var _local_player: Player var _bag: PlayerBag var _hotbar: PlayerHotbar var _art_unlocks: PlayerArtUnlocks +var _data_root: PlayerDataRoot var _drawing_root: Node3D var _canvas_states: Dictionary[String, Dictionary] = {} var _canvas_nodes: Dictionary[String, SurfaceDrawingCanvas] = {} var _selected_canvas_id: String = "" +var _hovered_canvas_id: String = "" var _brush_preview: MultiMeshInstance3D var _brush_preview_multimesh: MultiMesh var _brush_preview_material: ShaderMaterial var _placement_preview: MeshInstance3D var _placement_preview_material: StandardMaterial3D +var _stamp_preview: MeshInstance3D +var _stamp_preview_material: StandardMaterial3D var _active: bool = false var _placing_grid: bool = false +var _stamp_mode: bool = false +var _stamp_path: String = "" +var _stamp_pixels := PackedByteArray() +var _stamp_image: Image var _brush_size: int = 1 var _grid_size: int = SurfaceDrawingProtocol.DEFAULT_GRID_SIZE var _color_ids: Array[StringName] = [] @@ -90,6 +101,7 @@ func setup( bag: PlayerBag, hotbar: PlayerHotbar, art_unlocks: PlayerArtUnlocks, + data_root: PlayerDataRoot = null, ) -> void: _session = session _spawn_service = spawn_service @@ -99,6 +111,7 @@ func setup( _bag = bag _hotbar = hotbar _art_unlocks = art_unlocks + _data_root = data_root _refresh_local_unlocks() if _session != null: _session.state_changed.connect(_on_session_state_changed) @@ -178,6 +191,8 @@ func handle_input( if mouse_event.pressed: if _armed_guide_action != GuideAction.NONE: _execute_armed_guide_action() + elif _stamp_mode: + _request_stamp_at_aim() elif mouse_event.shift_pressed and mouse_event.ctrl_pressed: _finalize_selected_guide() elif mouse_event.shift_pressed: @@ -221,6 +236,7 @@ func activate( return _active = true _placing_grid = false + _clear_stamp_mode() _eraser_mode = false _clear_armed_guide_action(false) _refresh_local_unlocks() @@ -244,11 +260,13 @@ func deactivate() -> void: return _active = false _placing_grid = false + _clear_stamp_mode() _eraser_mode = false _clear_armed_guide_action(false) _camera_look_active = false _reset_stroke() _selected_canvas_id = "" + _hovered_canvas_id = "" _aim_hit.clear() _hide_previews() _refresh_stencil_visibility() @@ -281,6 +299,7 @@ func set_color_id(color_id: StringName) -> bool: if color_index < 0: return false _clear_armed_guide_action(true) + _clear_stamp_mode() _eraser_mode = false _color_index = color_index _reset_stroke() @@ -292,6 +311,7 @@ func set_eraser_mode(enabled: bool) -> void: if not _active: return _clear_armed_guide_action(true) + _clear_stamp_mode() _eraser_mode = enabled if _eraser_mode and _placing_grid: _placing_grid = false @@ -318,6 +338,7 @@ func arm_guide_action(action: int) -> bool: if _armed_guide_action == GuideAction.NONE: _armed_return_placement_mode = _placing_grid _armed_return_eraser_mode = _eraser_mode + _clear_stamp_mode() _armed_guide_action = action _placing_grid = true _eraser_mode = false @@ -349,6 +370,7 @@ func set_grid_size(value: int) -> bool: return false if _grid_size == value: return true + _clear_stamp_mode() _grid_size = value _rebuild_placement_preview() _update_previews() @@ -476,6 +498,28 @@ func _peer_can_place_grid(peer_id: int, grid_size: int) -> bool: ) +func _peer_can_stamp(peer_id: int, request: Dictionary) -> bool: + var entitlement: Dictionary = _peer_entitlement(peer_id) + var unlock_mask: int = int(entitlement.get("unlock_mask", 0)) + if ( + not bool(entitlement.get("has_kit", false)) + or not _mask_owns_product( + unlock_mask, PlayerArtUnlocks.STAMP_PRODUCT_ID + ) + or not _mask_unlocks_grid(unlock_mask, int(request["width"])) + ): + return false + var palette_ids: Array[StringName] = SurfaceDrawingPalette.get_color_ids() + var pixels: PackedByteArray = request["pixels"] + for palette_index: int in pixels: + if palette_index <= 0: + continue + var color_id: StringName = palette_ids[palette_index - 1] + if not _mask_unlocks_color(unlock_mask, color_id): + return false + return true + + func _peer_can_edit(peer_id: int, request: Dictionary) -> bool: var entitlement: Dictionary = _peer_entitlement(peer_id) if not bool(entitlement.get("has_kit", false)): @@ -564,6 +608,42 @@ func request_canvas_at_surface( return true +func request_stamp_at_surface( + origin: Vector3, + normal: Vector3, + tangent: Vector3, +) -> bool: + if ( + not can_activate() + or not _stamp_mode + or _stamp_pixels.size() != _grid_size * _grid_size + or _art_unlocks == null + or not _art_unlocks.is_stamp_unlocked() + or not _art_unlocks.is_grid_size_unlocked(_grid_size) + or normal.is_zero_approx() + or tangent.is_zero_approx() + ): + return false + var data: Dictionary = { + "request_id": _new_request_id("stamp"), + "session_id": _session.get_session_id(), + "origin": SurfaceDrawingProtocol.vector_to_array(origin), + "normal": SurfaceDrawingProtocol.vector_to_array(normal.normalized()), + "tangent": SurfaceDrawingProtocol.vector_to_array(tangent.normalized()), + "width": _grid_size, + "height": _grid_size, + "cell_size": SurfaceDrawingProtocol.CELL_SIZE, + "pixels": _stamp_pixels, + } + if not SurfaceDrawingProtocol.validate_stamp_request(data): + return false + if _session.is_host(): + _handle_stamp_request(_session.get_local_peer_id(), data) + else: + submit_stamp_request.rpc_id(1, data) + return true + + func request_cell_edits( canvas_id: String, edits: Array[Dictionary], @@ -670,6 +750,29 @@ func clear_session_artwork() -> bool: return true +func clear_artwork_by_fingerprint(fingerprint: String) -> int: + if ( + not _drawing_available() + or not _session.is_host() + or not NetworkIdentityCrypto.valid_fingerprint(fingerprint) + ): + return -1 + var affected_layers: int = _apply_artwork_fingerprint_clear(fingerprint) + for peer_id: int in _session.get_authenticated_peer_ids(): + if ( + peer_id != _session.get_local_peer_id() + and _session.peer_supports_capability( + peer_id, SurfaceDrawingProtocol.CAPABILITY + ) + ): + receive_artwork_fingerprint_clear.rpc_id( + peer_id, + _session.get_session_id(), + fingerprint, + ) + return affected_layers + + func get_canvas_ids() -> Array[String]: var result: Array[String] = [] for canvas_id: String in _canvas_states: @@ -682,6 +785,212 @@ func get_canvas_state(canvas_id: String) -> Dictionary: return Dictionary(_canvas_states.get(canvas_id, {})).duplicate(true) +func is_stamp_mode() -> bool: + return _stamp_mode + + +func get_saved_stamp_entries() -> Array[Dictionary]: + var result: Array[Dictionary] = [] + var directory: String = _artwork_directory() + if directory.is_empty() or not DirAccess.dir_exists_absolute(directory): + return result + var file_names: PackedStringArray = DirAccess.get_files_at(directory) + file_names.sort() + file_names.reverse() + for file_name: String in file_names: + if file_name.get_extension().to_lower() != "png": + continue + var entry: Dictionary = _decode_stamp_file( + directory.path_join(file_name) + ) + if entry.is_empty(): + continue + entry["available"] = _stamp_entry_is_unlocked(entry) + result.append(entry) + if result.size() >= 64: + break + return result + + +func select_saved_stamp(path: String) -> bool: + if ( + not _active + or _art_unlocks == null + or not _art_unlocks.is_stamp_unlocked() + ): + _emit_hud_state("unlock the stamp tool in Art Supplies") + return false + var entry: Dictionary = _decode_stamp_file(path) + if entry.is_empty(): + _emit_hud_state("this artwork PNG cannot be used as a stamp") + return false + if not _stamp_entry_is_unlocked(entry): + _emit_hud_state("this stamp uses an art supply that is still locked") + return false + _clear_armed_guide_action(true) + _stamp_path = str(entry["path"]) + _stamp_pixels = entry["pixels"] + _stamp_image = entry["image"] + _stamp_mode = true + _placing_grid = true + _eraser_mode = false + _grid_size = int(entry["grid_size"]) + _reset_stroke() + _selected_canvas_id = "" + _rebuild_placement_preview() + _rebuild_stamp_preview() + _update_aim() + _refresh_stencil_visibility() + _emit_hud_state( + "stamp selected • click a solid surface to place finalized artwork" + ) + return true + + +func export_aimed_canvas() -> String: + _update_aim() + if _hovered_canvas_id.is_empty(): + _emit_hud_state("aim at artwork before exporting") + return "" + return export_canvas_png(_hovered_canvas_id) + + +func export_canvas_png(canvas_id: String) -> String: + var canvas: SurfaceDrawingCanvas = _canvas_nodes.get(canvas_id) + if canvas == null or not is_instance_valid(canvas): + _emit_hud_state("artwork is no longer available") + return "" + if canvas.get_rendered_pixel_count() <= 0: + _emit_hud_state("paint something before exporting") + return "" + if _data_root == null or _data_root.root_path.is_empty(): + _emit_hud_state("choose a NETfishing data folder before exporting") + return "" + var export_directory: String = _artwork_directory() + if DirAccess.make_dir_recursive_absolute(export_directory) != OK: + _emit_hud_state("the artwork folder could not be created") + return "" + var image: Image = canvas.get_export_image() + if image == null or image.is_empty(): + _emit_hud_state("the artwork image could not be prepared") + return "" + var export_path: String = _next_artwork_export_path(export_directory) + if image.save_png(export_path) != OK: + _emit_hud_state("the artwork PNG could not be saved") + return "" + print("Art Kit artwork exported: ", export_path) + _emit_hud_state("artwork exported to the data folder • artwork") + return export_path + + +func _artwork_directory() -> String: + if _data_root == null or _data_root.root_path.is_empty(): + return "" + return _data_root.root_path.path_join(ARTWORK_DIRECTORY_NAME) + + +func _decode_stamp_file(path: String) -> Dictionary: + var directory: String = _artwork_directory() + if directory.is_empty(): + return {} + var normalized_directory: String = directory.simplify_path().trim_suffix( + "/" + ) + var normalized_path: String = path.simplify_path() + if not normalized_path.begins_with(normalized_directory + "/"): + return {} + if normalized_path.get_extension().to_lower() != "png": + return {} + var image: Image = Image.load_from_file(normalized_path) + if image == null or image.is_empty(): + return {} + if ( + image.get_width() != image.get_height() + or image.get_width() not in SurfaceDrawingProtocol.GRID_SIZES + ): + return {} + if image.is_compressed() and image.decompress() != OK: + return {} + image.convert(Image.FORMAT_RGBA8) + var grid_size: int = image.get_width() + var pixels := PackedByteArray() + pixels.resize(grid_size * grid_size) + var used_color_ids: Array[StringName] = [] + var painted_count: int = 0 + for cell_y: int in range(grid_size): + var image_y: int = grid_size - 1 - cell_y + for x: int in range(grid_size): + var color: Color = image.get_pixel(x, image_y) + var palette_index: int = 0 + if color.a >= STAMP_ALPHA_THRESHOLD: + palette_index = _stamp_palette_index(color) + if palette_index <= 0: + return {} + painted_count += 1 + var color_id: StringName = SurfaceDrawingPalette.get_color_ids()[ + palette_index - 1 + ] + if color_id not in used_color_ids: + used_color_ids.append(color_id) + pixels[cell_y * grid_size + x] = palette_index + if painted_count <= 0: + return {} + return { + "path": normalized_path, + "file_name": normalized_path.get_file(), + "grid_size": grid_size, + "painted_count": painted_count, + "used_color_ids": used_color_ids, + "pixels": pixels, + "image": image, + } + + +func _stamp_palette_index(color: Color) -> int: + var palette_ids: Array[StringName] = SurfaceDrawingPalette.get_color_ids() + for index: int in range(palette_ids.size()): + var palette_color: Color = SurfaceDrawingPalette.get_color( + palette_ids[index] + ) + var difference := Vector3( + color.r - palette_color.r, + color.g - palette_color.g, + color.b - palette_color.b, + ) + if difference.length() <= STAMP_COLOR_TOLERANCE: + return index + 1 + return 0 + + +func _stamp_entry_is_unlocked(entry: Dictionary) -> bool: + if _art_unlocks == null or not _art_unlocks.is_stamp_unlocked(): + return false + if not _art_unlocks.is_grid_size_unlocked(int(entry.get("grid_size", 0))): + return false + for color_id: StringName in entry.get("used_color_ids", []): + if not _art_unlocks.is_color_unlocked(color_id): + return false + return true + + +func _next_artwork_export_path(directory: String) -> String: + var date_time: Dictionary = Time.get_datetime_dict_from_system() + var stem: String = "netfishing-artwork-%04d%02d%02d-%02d%02d%02d" % [ + int(date_time.get("year", 0)), + int(date_time.get("month", 0)), + int(date_time.get("day", 0)), + int(date_time.get("hour", 0)), + int(date_time.get("minute", 0)), + int(date_time.get("second", 0)), + ] + var candidate: String = directory.path_join(stem + ".png") + var suffix: int = 2 + while FileAccess.file_exists(candidate): + candidate = directory.path_join("%s-%d.png" % [stem, suffix]) + suffix += 1 + return candidate + + func _process(_delta: float) -> void: if not _active: return @@ -714,26 +1023,53 @@ func _update_aim() -> void: _aim_hit = _raycast_from_pointer() var previous_canvas_id: String = _selected_canvas_id var found_canvas_id: String = "" + var found_hovered_canvas_id: String = "" var nearest_plane_distance: float = INF + var nearest_hovered_plane_distance: float = INF + var selected_layer: int = -1 + var hovered_layer: int = -1 if not _aim_hit.is_empty(): var hit_position: Vector3 = _aim_hit["position"] for canvas_id: String in _canvas_nodes: var canvas: SurfaceDrawingCanvas = _canvas_nodes[canvas_id] - if canvas.is_finalized(): + if canvas.is_hidden_by_relationship(): continue var plane_distance: float = canvas.get_surface_plane_distance( hit_position ) + if not canvas.contains_world_point( + hit_position, + SurfaceDrawingCanvas.SURFACE_SAMPLE_DEPTH + 0.05, + ): + continue + var state: Dictionary = _canvas_states.get(canvas_id, {}) + var layer: int = int(state.get("layer", 0)) if ( - canvas.contains_world_point( - hit_position, - SurfaceDrawingCanvas.SURFACE_SAMPLE_DEPTH + 0.05, + plane_distance < nearest_hovered_plane_distance + or ( + is_equal_approx( + plane_distance, nearest_hovered_plane_distance + ) + and layer > hovered_layer + ) + ): + found_hovered_canvas_id = canvas_id + nearest_hovered_plane_distance = plane_distance + hovered_layer = layer + if canvas.is_finalized(): + continue + if ( + plane_distance < nearest_plane_distance + or ( + is_equal_approx(plane_distance, nearest_plane_distance) + and layer > selected_layer ) - and plane_distance < nearest_plane_distance ): found_canvas_id = canvas_id nearest_plane_distance = plane_distance + selected_layer = layer _selected_canvas_id = found_canvas_id + _hovered_canvas_id = found_hovered_canvas_id if previous_canvas_id != _selected_canvas_id: _reset_stroke() _update_previews() @@ -771,6 +1107,8 @@ func _update_previews() -> void: return if _placement_preview != null: _placement_preview.hide() + if _stamp_preview != null: + _stamp_preview.hide() _update_brush_preview() @@ -778,6 +1116,8 @@ func _update_placement_preview() -> void: if _placement_preview == null or _aim_hit.is_empty(): if _placement_preview != null: _placement_preview.hide() + if _stamp_preview != null: + _stamp_preview.hide() return var placement: Dictionary = _resolved_placement() var normal: Vector3 = placement["normal"] @@ -788,6 +1128,11 @@ func _update_placement_preview() -> void: Basis(tangent, bitangent, normal), hit_position + normal * GRID_PREVIEW_SURFACE_OFFSET, ) + if _stamp_preview != null: + _stamp_preview.global_transform = Transform3D( + Basis(tangent, bitangent, normal), + hit_position + normal * (GRID_PREVIEW_SURFACE_OFFSET + 0.001), + ) if _placement_preview_material != null: _placement_preview_material.albedo_color = ( Color(0.34, 1.0, 0.72, 0.88) @@ -795,6 +1140,8 @@ func _update_placement_preview() -> void: else Color(0.46, 0.91, 0.95, 0.72) ) _placement_preview.show() + if _stamp_preview != null: + _stamp_preview.visible = _stamp_mode func _update_brush_preview() -> void: @@ -841,6 +1188,8 @@ func _hide_previews() -> void: _hide_brush_preview() if _placement_preview != null: _placement_preview.hide() + if _stamp_preview != null: + _stamp_preview.hide() func _resolved_placement() -> Dictionary: @@ -889,6 +1238,20 @@ func _request_canvas_at_aim() -> void: ) +func _request_stamp_at_aim() -> void: + if _aim_hit.is_empty(): + _emit_hud_state("aim at a solid surface before placing a stamp") + return + var placement: Dictionary = _resolved_placement() + var normal: Vector3 = placement["normal"] + var origin: Vector3 = placement["origin"] + if _overlaps_existing_canvas(origin, normal, _grid_size): + _emit_hud_state("an active shared grid already covers this area") + return + if request_stamp_at_surface(origin, normal, placement["tangent"]): + _emit_hud_state("placing finalized stamp...") + + @rpc( "any_peer", "call_remote", @@ -969,6 +1332,7 @@ func _handle_canvas_request(peer_id: int, data: Dictionary) -> void: "finalized": false, "layer": _canvas_sequence, "creator_fingerprint": record.identity_fingerprint, + "participant_fingerprints": [record.identity_fingerprint], "cells": [], } _apply_canvas_state(state) @@ -976,6 +1340,117 @@ func _handle_canvas_request(peer_id: int, data: Dictionary) -> void: _emit_hud_state("shared grid placed • everyone can draw here") +@rpc( + "any_peer", + "call_remote", + "reliable", + SurfaceDrawingProtocol.RELIABLE_CHANNEL, +) +func submit_stamp_request(data: Dictionary) -> void: + var sender_id: int = multiplayer.get_remote_sender_id() + if _session.is_host() and _session.is_authenticated_peer(sender_id): + _handle_stamp_request(sender_id, data) + + +func _handle_stamp_request(peer_id: int, data: Dictionary) -> void: + var requested_size: int = int(data.get("width", 0)) + if ( + not _session.is_host() + or not SurfaceDrawingProtocol.validate_stamp_request(data) + or str(data["session_id"]) != _session.get_session_id() + or not _accept_request(peer_id, str(data["request_id"])) + or not _peer_can_stamp(peer_id, data) + or _canvas_states.size() >= SurfaceDrawingProtocol.MAX_CANVASES + or _allocated_grid_cells() + requested_size * requested_size + > SurfaceDrawingProtocol.MAX_SESSION_GRID_CELLS + ): + return + var avatar: Player = _spawn_service.get_avatar(peer_id) + var requested_origin: Vector3 = SurfaceDrawingProtocol.array_to_vector( + data["origin"] + ) + if ( + avatar == null + or avatar.global_position.distance_to(requested_origin) + > MAX_DRAW_DISTANCE + 2.0 + ): + return + var requested_normal: Vector3 = SurfaceDrawingProtocol.array_to_vector( + data["normal"] + ).normalized() + var surface_hit: Dictionary = _validate_surface( + requested_origin, requested_normal + ) + if surface_hit.is_empty(): + return + var normal: Vector3 = _normalized_or( + surface_hit.get("normal", requested_normal), requested_normal + ) + if _overlaps_existing_canvas( + surface_hit["position"], normal, requested_size + ): + return + var tangent: Vector3 = SurfaceDrawingProtocol.array_to_vector( + data["tangent"] + ) + tangent = (tangent - normal * tangent.dot(normal)).normalized() + if tangent.is_zero_approx(): + tangent = _surface_tangent(normal) + var record: PeerRegistry.PeerRecord = _session.get_peer_record(peer_id) + if record == null or not record.identity_authenticated: + return + _canvas_sequence += 1 + var canvas_id: String = "%s-%d" % [ + _session.get_session_id().left(16), _canvas_sequence, + ] + var state: Dictionary = { + "session_id": _session.get_session_id(), + "canvas_id": canvas_id, + "origin": SurfaceDrawingProtocol.vector_to_array( + surface_hit["position"] + ), + "normal": SurfaceDrawingProtocol.vector_to_array(normal), + "tangent": SurfaceDrawingProtocol.vector_to_array(tangent), + "width": requested_size, + "height": requested_size, + "cell_size": SurfaceDrawingProtocol.CELL_SIZE, + "revision": 1, + "guide_visible": false, + "finalized": true, + "layer": _canvas_sequence, + "creator_fingerprint": record.identity_fingerprint, + "participant_fingerprints": [record.identity_fingerprint], + "cells": _stamp_cells( + data["pixels"], requested_size, record.identity_fingerprint + ), + "stamp": true, + } + _apply_canvas_state(state) + _broadcast_canvas_state(state) + _emit_hud_state("stamp placed • finalized artwork shared with everyone") + + +func _stamp_cells( + pixels: PackedByteArray, + grid_size: int, + author_fingerprint: String, +) -> Array[Dictionary]: + var result: Array[Dictionary] = [] + var palette_ids: Array[StringName] = SurfaceDrawingPalette.get_color_ids() + for cell_key: int in range(pixels.size()): + var palette_index: int = pixels[cell_key] + if palette_index <= 0: + continue + var cell_y: int = floori(float(cell_key) / float(grid_size)) + result.append({ + "x": cell_key % grid_size, + "y": cell_y, + "color_id": str(palette_ids[palette_index - 1]), + "author_fingerprint": author_fingerprint, + }) + return result + + @rpc( "any_peer", "call_remote", @@ -1000,7 +1475,13 @@ func _handle_guide_request(peer_id: int, data: Dictionary) -> void: var canvas_id: String = str(data["canvas_id"]) var state: Dictionary = _canvas_states.get(canvas_id, {}) var avatar: Player = _spawn_service.get_avatar(peer_id) - if state.is_empty() or avatar == null: + var record: PeerRegistry.PeerRecord = _session.get_peer_record(peer_id) + if ( + state.is_empty() + or avatar == null + or record == null + or not record.identity_authenticated + ): return var origin: Vector3 = SurfaceDrawingProtocol.array_to_vector(state["origin"]) if avatar.global_position.distance_to(origin) > MAX_DRAW_DISTANCE + 2.0: @@ -1015,6 +1496,11 @@ func _handle_guide_request(peer_id: int, data: Dictionary) -> void: and was_finalized == finalized ): return + if not _register_canvas_participant( + canvas_id, record.identity_fingerprint + ): + return + state = _canvas_states.get(canvas_id, {}) state["revision"] = int(state["revision"]) + 1 state["guide_visible"] = guide_visible state["finalized"] = finalized @@ -1025,6 +1511,9 @@ func _handle_guide_request(peer_id: int, data: Dictionary) -> void: "revision": int(state["revision"]), "guide_visible": guide_visible, "finalized": finalized, + "participant_fingerprints": state.get( + "participant_fingerprints", [] + ), } var canvas: SurfaceDrawingCanvas = _canvas_nodes.get(canvas_id) if canvas != null: @@ -1205,6 +1694,15 @@ func _queue_cell_mutation( var next: Dictionary = _cell_value_from_edit(edit) if _same_cell_value(current, next): return + var record: PeerRegistry.PeerRecord = _session.get_peer_record(peer_id) + if ( + record == null + or not record.identity_authenticated + or not _register_canvas_participant( + canvas_id, record.identity_fingerprint + ) + ): + return _record_stroke_change( peer_id, stroke_id, canvas_id, x, y, current, next ) @@ -1346,12 +1844,18 @@ func _publish_cell_mutations( continue state["revision"] = int(state["revision"]) + 1 state["cells"] = _sorted_cells(cells) + state["participant_fingerprints"] = _merged_participants( + state, {"edits": edits} + ) _canvas_states[canvas_id] = state var update: Dictionary = { "session_id": _session.get_session_id(), "canvas_id": canvas_id, "revision": int(state["revision"]), "edits": edits, + "participant_fingerprints": state.get( + "participant_fingerprints", [] + ), } var local_canvas: SurfaceDrawingCanvas = _canvas_nodes.get(canvas_id) if local_canvas != null: @@ -1489,6 +1993,23 @@ func receive_session_artwork_reset(session_id: String) -> void: _clear_session_artwork_state() +@rpc( + "authority", + "call_remote", + "reliable", + SurfaceDrawingProtocol.RELIABLE_CHANNEL, +) +func receive_artwork_fingerprint_clear( + session_id: String, + fingerprint: String, +) -> void: + if ( + session_id == _session.get_session_id() + and NetworkIdentityCrypto.valid_fingerprint(fingerprint) + ): + _apply_artwork_fingerprint_clear(fingerprint) + + @rpc( "any_peer", "call_remote", @@ -1525,7 +2046,28 @@ func _apply_canvas_state(data: Dictionary) -> void: and int(data["revision"]) <= int(previous_state["revision"]) ): return - _canvas_states[canvas_id] = data.duplicate(true) + var normalized_state: Dictionary = data.duplicate(true) + normalized_state["participant_fingerprints"] = _state_participants( + normalized_state + ) + _canvas_states[canvas_id] = normalized_state + _rebuild_canvas_node(normalized_state) + _refresh_stencil_visibility() + _emit_artwork_changed() + if ( + _active + and str(normalized_state.get("creator_fingerprint", "")) + == _session.get_local_identity_fingerprint() + ): + _emit_hud_state( + "stamp placed • move and click to place another" + if bool(normalized_state.get("stamp", false)) + else "shared grid placed • move and click to place another" + ) + + +func _rebuild_canvas_node(data: Dictionary) -> void: + var canvas_id: String = str(data["canvas_id"]) var previous_canvas: SurfaceDrawingCanvas = _canvas_nodes.get(canvas_id) if previous_canvas != null: previous_canvas.queue_free() @@ -1536,14 +2078,6 @@ func _apply_canvas_state(data: Dictionary) -> void: canvas.queue_free() return _canvas_nodes[canvas_id] = canvas - _refresh_stencil_visibility() - _emit_artwork_changed() - if ( - _active - and str(data.get("creator_fingerprint", "")) - == _session.get_local_identity_fingerprint() - ): - _emit_hud_state("shared grid placed • move and click to place another") func _apply_canvas_update(data: Dictionary) -> void: @@ -1575,6 +2109,9 @@ func _apply_canvas_update(data: Dictionary) -> void: cells[key] = edit.duplicate(true) state["revision"] = int(data["revision"]) state["cells"] = _sorted_cells(cells) + state["participant_fingerprints"] = _merged_participants( + state, data + ) _canvas_states[canvas_id] = state canvas.apply_update(data) _emit_artwork_changed() @@ -1600,6 +2137,9 @@ func _apply_guide_update(data: Dictionary) -> void: state["guide_visible"] = ( bool(data["guide_visible"]) and not bool(data["finalized"]) ) + state["participant_fingerprints"] = _merged_participants( + state, data + ) _canvas_states[canvas_id] = state canvas.apply_guide_update(data) if _active: @@ -1834,10 +2374,46 @@ func _rebuild_placement_preview() -> void: _drawing_root.add_child(_placement_preview) +func _rebuild_stamp_preview() -> void: + if _stamp_preview != null: + _stamp_preview.queue_free() + _stamp_preview = null + _stamp_preview_material = null + if ( + _drawing_root == null + or not _stamp_mode + or _stamp_image == null + or _stamp_image.is_empty() + ): + return + var quad := QuadMesh.new() + quad.size = Vector2.ONE * ( + float(_grid_size) * SurfaceDrawingProtocol.CELL_SIZE + ) + _stamp_preview_material = StandardMaterial3D.new() + _stamp_preview_material.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED + _stamp_preview_material.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA + _stamp_preview_material.texture_filter = BaseMaterial3D.TEXTURE_FILTER_NEAREST + _stamp_preview_material.cull_mode = BaseMaterial3D.CULL_DISABLED + _stamp_preview_material.albedo_color = Color(1.0, 1.0, 1.0, 0.72) + _stamp_preview_material.albedo_texture = ImageTexture.create_from_image( + _stamp_image + ) + quad.material = _stamp_preview_material + _stamp_preview = MeshInstance3D.new() + _stamp_preview.name = "ArtworkStampPlacementPreview" + _stamp_preview.mesh = quad + _stamp_preview.cast_shadow = GeometryInstance3D.SHADOW_CASTING_SETTING_OFF + _stamp_preview.hide() + _drawing_root.add_child(_stamp_preview) + + func _set_placement_mode(enabled: bool) -> void: if not _active: return _clear_armed_guide_action(true) + if _stamp_mode: + _clear_stamp_mode() if _placing_grid == enabled: _emit_hud_state("") return @@ -1855,6 +2431,17 @@ func _set_placement_mode(enabled: bool) -> void: ) +func _clear_stamp_mode() -> void: + _stamp_mode = false + _stamp_path = "" + _stamp_pixels = PackedByteArray() + _stamp_image = null + if _stamp_preview != null: + _stamp_preview.queue_free() + _stamp_preview = null + _stamp_preview_material = null + + func _execute_armed_guide_action() -> void: var action: int = _armed_guide_action match action: @@ -2013,7 +2600,11 @@ func _current_color() -> Color: func _emit_hud_state(status: String) -> void: hud_state_changed.emit( _active, - "place grid" if _placing_grid else "marker", + ( + "stamp" + if _stamp_mode + else "place grid" if _placing_grid else "marker" + ), SurfaceDrawingPalette.get_display_name(_current_color_id()), _current_color(), _brush_size, @@ -2074,6 +2665,68 @@ func _state_cell(state: Dictionary, x: int, y: int) -> Dictionary: ).duplicate(true) +func _register_canvas_participant( + canvas_id: String, + fingerprint: String, +) -> bool: + if not NetworkIdentityCrypto.valid_fingerprint(fingerprint): + return false + var state: Dictionary = _canvas_states.get(canvas_id, {}) + if state.is_empty(): + return false + var participants: Array[String] = _state_participants(state) + if fingerprint in participants: + return true + if participants.size() >= SurfaceDrawingProtocol.MAX_PARTICIPANTS: + return false + participants.append(fingerprint) + state["participant_fingerprints"] = participants + _canvas_states[canvas_id] = state + return true + + +func _merged_participants( + state: Dictionary, + update: Dictionary, +) -> Array[String]: + var result: Array[String] = _state_participants(state) + for value: Variant in update.get("participant_fingerprints", []): + _append_participant(result, str(value)) + for edit_value: Variant in update.get("edits", []): + var edit: Dictionary = edit_value + _append_participant( + result, str(edit.get("author_fingerprint", "")) + ) + return result + + +func _state_participants(state: Dictionary) -> Array[String]: + var result: Array[String] = [] + _append_participant( + result, str(state.get("creator_fingerprint", "")) + ) + for value: Variant in state.get("participant_fingerprints", []): + _append_participant(result, str(value)) + for cell_value: Variant in state.get("cells", []): + var cell: Dictionary = cell_value + _append_participant( + result, str(cell.get("author_fingerprint", "")) + ) + return result + + +func _append_participant( + participants: Array[String], + fingerprint: String, +) -> void: + if ( + NetworkIdentityCrypto.valid_fingerprint(fingerprint) + and fingerprint not in participants + and participants.size() < SurfaceDrawingProtocol.MAX_PARTICIPANTS + ): + participants.append(fingerprint) + + func _cell_value_from_edit(edit: Dictionary) -> Dictionary: if edit.is_empty() or str(edit.get("color_id", "")).is_empty(): return {} @@ -2211,6 +2864,7 @@ func _clear_session_artwork_state() -> void: _canvas_nodes.clear() _canvas_sequence = 0 _selected_canvas_id = "" + _hovered_canvas_id = "" _stroke_history_by_peer.clear() _cell_last_stroke.clear() _last_local_stroke_id = "" @@ -2218,6 +2872,36 @@ func _clear_session_artwork_state() -> void: _emit_artwork_changed() +func _apply_artwork_fingerprint_clear(fingerprint: String) -> int: + var affected_canvas_ids: Array[String] = [] + for canvas_id: String in _canvas_states: + var state: Dictionary = _canvas_states[canvas_id] + if fingerprint in _state_participants(state): + affected_canvas_ids.append(canvas_id) + if affected_canvas_ids.is_empty(): + return 0 + for canvas_id: String in affected_canvas_ids: + _remove_canvas_state(canvas_id) + _stroke_history_by_peer.clear() + _cell_last_stroke.clear() + _last_local_stroke_id = "" + _hide_previews() + _emit_artwork_changed() + return affected_canvas_ids.size() + + +func _remove_canvas_state(canvas_id: String) -> void: + _canvas_states.erase(canvas_id) + var canvas: SurfaceDrawingCanvas = _canvas_nodes.get(canvas_id) + if canvas != null: + canvas.queue_free() + _canvas_nodes.erase(canvas_id) + if _selected_canvas_id == canvas_id: + _selected_canvas_id = "" + if _hovered_canvas_id == canvas_id: + _hovered_canvas_id = "" + + func _emit_artwork_changed() -> void: session_artwork_changed.emit( get_canvas_count(), get_painted_cell_count() diff --git a/network/player_list_entry.gd b/network/player_list_entry.gd index f401da6..5aa9643 100644 --- a/network/player_list_entry.gd +++ b/network/player_list_entry.gd @@ -14,5 +14,6 @@ var muted := false var blocked := false var can_kick := false var can_ban := false +var can_clear_art := false var can_manage_operator := false var revision := 0 diff --git a/progression/player_art_unlocks.gd b/progression/player_art_unlocks.gd index c6a6e57..0bc7acc 100644 --- a/progression/player_art_unlocks.gd +++ b/progression/player_art_unlocks.gd @@ -7,6 +7,7 @@ signal unlocks_changed(unlock_mask: int) const BASE_BRUSH_SIZE: int = 1 const BASE_GRID_SIZE: int = 16 +const STAMP_PRODUCT_ID: StringName = &"stamp_tool" const BRUSH_SIZES: Array[int] = [1, 2, 3, 4] const GRID_SIZES: Array[int] = [16, 32, 64, 128] @@ -25,6 +26,7 @@ const PRODUCT_BITS: Dictionary[StringName, int] = { &"grid_32x": 10, &"grid_64x": 11, &"grid_128x": 12, + STAMP_PRODUCT_ID: 13, } const COLOR_PRODUCTS: Dictionary[StringName, StringName] = { &"marker_ocean_teal": &"ocean_teal", @@ -45,7 +47,7 @@ const GRID_PRODUCTS: Dictionary[StringName, int] = { &"grid_64x": 64, &"grid_128x": 128, } -const ALL_UNLOCK_MASK: int = (1 << 13) - 1 +const ALL_UNLOCK_MASK: int = (1 << 14) - 1 var _unlock_mask: int = 0 @@ -146,6 +148,10 @@ func is_grid_size_unlocked(grid_size: int) -> bool: return grid_size in get_unlocked_grid_sizes() +func is_stamp_unlocked() -> bool: + return owns_product(STAMP_PRODUCT_ID) + + static func get_product_bit(product_id: StringName) -> int: return int(PRODUCT_BITS.get(product_id, -1)) diff --git a/scripts/run_validations.sh b/scripts/run_validations.sh index 8e083b9..64fbfc3 100755 --- a/scripts/run_validations.sh +++ b/scripts/run_validations.sh @@ -44,6 +44,7 @@ readonly -a QUICK_TESTS=( "tests/player_experience_validation.gd" "tests/shoreline_ambience_validation.gd" "tests/surface_drawing_validation.gd" + "tests/surface_drawing_texture_renderer_validation.gd" "tests/tackle_order_validation.gd" "tests/terrain_biome_validation.gd" "tests/terrain_blender_material_validation.gd" diff --git a/tests/art_tools_validation.gd b/tests/art_tools_validation.gd index a4528c4..44ec053 100644 --- a/tests/art_tools_validation.gd +++ b/tests/art_tools_validation.gd @@ -481,6 +481,8 @@ func _run() -> void: var hide_button := toolbar.get_node("%HideGuideButton") as Button var restore_button := toolbar.get_node("%RestoreGuideButton") as Button var finalize_button := toolbar.get_node("%FinalizeGuideButton") as Button + var export_button := toolbar.get_node("%ExportButton") as Button + var stamp_button := toolbar.get_node("%StampButton") as Button assert( mode_button != null and eraser_button != null @@ -488,7 +490,13 @@ func _run() -> void: and hide_button != null and restore_button != null and finalize_button != null + and export_button != null + and stamp_button != null ) + assert(export_button.text == "png") + assert(export_button.tooltip_text == "export aimed artwork as PNG") + assert(stamp_button.text == "stamp") + assert(stamp_button.disabled) assert(toolbar.get_node_or_null("%CloseButton") == null) var expected_toolbar_icons: Dictionary[Button, String] = { mode_button: "/art/art_kit_marker.png", @@ -511,6 +519,8 @@ func _run() -> void: hide_button, restore_button, finalize_button, + export_button, + stamp_button, ]: assert(icon_button.custom_minimum_size == Vector2(48, 44)) assert(icon_button.get_theme_constant("icon_max_width") == 40) @@ -521,7 +531,9 @@ func _run() -> void: assert(is_equal_approx(icon_style.content_margin_top, 2.0)) assert(mode_button.custom_minimum_size == Vector2(48, 48)) assert(mode_button.get_theme_constant("icon_max_width") == 40) - assert(mode_button.get_index() > finalize_button.get_index()) + assert(export_button.get_index() > finalize_button.get_index()) + assert(stamp_button.get_index() > export_button.get_index()) + assert(mode_button.get_index() > stamp_button.get_index()) assert(hide_button.button_group != null) assert(hide_button.button_group == restore_button.button_group) assert(hide_button.button_group == finalize_button.button_group) @@ -537,6 +549,8 @@ func _run() -> void: hide_button, restore_button, finalize_button, + export_button, + stamp_button, ]: assert(pointer_only_control.focus_mode == Control.FOCUS_NONE) assert(brush_option.get_popup().unfocusable) @@ -639,13 +653,31 @@ func _run() -> void: )) == 24) for product_id: StringName in [ - &"marker_ocean_teal", &"brush_4x", &"grid_128x", + &"marker_ocean_teal", + &"brush_4x", + &"grid_128x", + PlayerArtUnlocks.STAMP_PRODUCT_ID, ]: assert(player.art_unlocks.unlock_product(product_id)) await process_frame assert(not (color_buttons[&"ocean_teal"] as Button).disabled) assert(not brush_option.get_popup().is_item_disabled(3)) assert(not grid_option.get_popup().is_item_disabled(3)) + assert(not stamp_button.disabled) + var stamp_library_panel := toolbar.get_node( + "%StampLibraryPanel" + ) as PanelContainer + var stamp_library_close := toolbar.get_node( + "%StampLibraryClose" + ) as Button + assert(stamp_library_panel != null and not stamp_library_panel.visible) + stamp_button.pressed.emit() + assert(stamp_library_panel.visible) + var library_pointer := InputEventMouseMotion.new() + library_pointer.position = stamp_library_panel.get_global_rect().get_center() + assert(toolbar.owns_pointer_event(library_pointer)) + stamp_library_close.pressed.emit() + assert(not stamp_library_panel.visible) assert(not locked_color_lock.visible) assert(str(brush_option.get_item_icon(3).get_meta( &"channel_mask_source", "" diff --git a/tests/economy_regression_validation.gd b/tests/economy_regression_validation.gd index 884ad9b..9a53975 100644 --- a/tests/economy_regression_validation.gd +++ b/tests/economy_regression_validation.gd @@ -487,7 +487,7 @@ func _test_host_art_shop_purchase( for _frame: int in 4: await physics_frame var required_balance: int = ( - ArtShopStock.ART_KIT_PRICE + ArtShopStock.UPGRADE_PRICE * 3 + ArtShopStock.ART_KIT_PRICE + ArtShopStock.UPGRADE_PRICE * 4 ) if player.wallet.get_balance() < required_balance: assert(player.wallet.credit(required_balance - player.wallet.get_balance())) @@ -505,7 +505,10 @@ func _test_host_art_shop_purchase( assert(art_item.icon.resource_path.ends_with("/art/art_kit.png")) assert(player.hotbar.assign_item(0, ArtShopStock.ART_KIT_ITEM_ID)) for product_id: StringName in [ - &"marker_ocean_teal", &"brush_2x", &"grid_32x", + &"marker_ocean_teal", + &"brush_2x", + &"grid_32x", + PlayerArtUnlocks.STAMP_PRODUCT_ID, ]: _shop_result.clear() assert(not shop_service.request_art_upgrade(product_id).is_empty()) @@ -844,7 +847,9 @@ func _test_fishing_shop_sale_ui( for child: Node in shop.get_node("%SuppliesList").get_children(): if child is Label: stock_sections.append((child as Label).text) - assert(stock_sections == ["art kit", "markers", "brushes", "grids"]) + assert(stock_sections == [ + "art kit", "markers", "brushes", "grids", "stamps", + ]) var marker_icons := shop.find_children( "MarkerIcon", "TextureRect", true, false ) @@ -903,6 +908,17 @@ func _test_fishing_shop_sale_ui( ) ) assert(found_art_upgrade_icons == expected_art_upgrade_icons.size()) + var stamp_button: Button + for upgrade_node: Node in shop.find_children("*", "Button", true, false): + var upgrade_button := upgrade_node as Button + if StringName(str(upgrade_button.get_meta(&"art_product_id", ""))) == ( + PlayerArtUnlocks.STAMP_PRODUCT_ID + ): + stamp_button = upgrade_button + break + assert(stamp_button != null) + assert(stamp_button.text == "stamp") + assert(stamp_button.icon == null) var price_bubbles := shop.find_children( "PriceBubble", "PanelContainer", true, false ) diff --git a/tests/operator_multiplayer_validation.gd b/tests/operator_multiplayer_validation.gd index 3712fd4..059ced1 100644 --- a/tests/operator_multiplayer_validation.gd +++ b/tests/operator_multiplayer_validation.gd @@ -65,6 +65,7 @@ func _run_host() -> void: assert(players_page != null) players_page.call("_refresh") assert(_has_button_text(players_page, "deop")) + assert(_has_button_text(players_page, "clear art")) var unban_deadline: int = Time.get_ticks_msec() + 12000 while ( diff --git a/tests/surface_drawing_multiplayer_validation.gd b/tests/surface_drawing_multiplayer_validation.gd index 74c86d2..ebba510 100644 --- a/tests/surface_drawing_multiplayer_validation.gd +++ b/tests/surface_drawing_multiplayer_validation.gd @@ -2,7 +2,7 @@ extends SceneTree const MainScene: PackedScene = preload("res://main/main.tscn") const TEST_PORT: int = 18133 -const WAIT_MSEC: int = 20000 +const WAIT_MSEC: int = 60000 func _initialize() -> void: @@ -83,6 +83,10 @@ func _run_host() -> void: str(overwritten_cell["author_fingerprint"]) == remote_record.identity_fingerprint ) + assert( + remote_record.identity_fingerprint + in overwritten_state.get("participant_fingerprints", []) + ) assert(service.request_cell_edits(canvas_id, [{ "x": 8, @@ -112,7 +116,61 @@ func _run_host() -> void: assert(service.request_guide_visibility(canvas_id, false, true)) await create_timer(1.0).timeout assert(service.clear_session_artwork()) + var stamp_deadline: int = Time.get_ticks_msec() + WAIT_MSEC + while ( + Time.get_ticks_msec() < stamp_deadline + and service.get_canvas_ids().is_empty() + ): + await process_frame + assert(service.get_canvas_ids().size() == 1) + var stamp_id: String = service.get_canvas_ids()[0] + var stamp_state: Dictionary = service.get_canvas_state(stamp_id) + assert(bool(stamp_state.get("stamp", false))) + assert(bool(stamp_state["finalized"])) + assert((stamp_state["cells"] as Array).size() == 1) + assert(str(stamp_state["cells"][0]["color_id"]) == "coral") + assert( + stamp_state.get("participant_fingerprints", []) + == [remote_record.identity_fingerprint] + ) + # Give the client a full observation window before the authoritative clear. await create_timer(1.0).timeout + assert( + service.clear_artwork_by_fingerprint( + remote_record.identity_fingerprint + ) == 1 + ) + assert(service.get_canvas_ids().is_empty()) + var second_stamp_deadline: int = Time.get_ticks_msec() + WAIT_MSEC + while ( + Time.get_ticks_msec() < second_stamp_deadline + and service.get_canvas_ids().is_empty() + ): + await process_frame + assert(service.get_canvas_ids().size() == 1) + var player_list := main.get_node( + "%NetworkPlayerListService" + ) as NetworkPlayerListService + var remote_entry: PlayerListEntry = null + for entry: PlayerListEntry in player_list.get_entries(): + if entry.peer_id == remote_peer_id: + remote_entry = entry + break + assert(remote_entry != null and remote_entry.can_ban) + assert(player_list.ban( + remote_peer_id, + remote_record.identity_fingerprint, + remote_record.display_name, + remote_entry.revision, + )) + assert(service.get_canvas_ids().is_empty()) + var removed_deadline: int = Time.get_ticks_msec() + WAIT_MSEC + while ( + Time.get_ticks_msec() < removed_deadline + and session.is_authenticated_peer(remote_peer_id) + ): + await process_frame + assert(not session.is_authenticated_peer(remote_peer_id)) print("Surface drawing multiplayer host validation: PASS") session.disconnect_session("") main.queue_free() @@ -210,8 +268,63 @@ func _run_client() -> void: if service.get_canvas_ids().is_empty(): break assert(service.get_canvas_ids().is_empty()) + var data_root := main.get("_data_root") as PlayerDataRoot + var stamp_directory: String = data_root.root_path.path_join("artwork") + assert(DirAccess.make_dir_recursive_absolute(stamp_directory) == OK) + var stamp_path: String = stamp_directory.path_join("multiplayer-stamp.png") + var stamp_image := Image.create(16, 16, false, Image.FORMAT_RGBA8) + stamp_image.fill(Color.TRANSPARENT) + stamp_image.set_pixel(3, 11, SurfaceDrawingPalette.get_color(&"coral")) + assert(stamp_image.save_png(stamp_path) == OK) + assert(service.select_saved_stamp(stamp_path)) + var stamp_surface: Dictionary = _surface_below_local_player(main) + assert(not stamp_surface.is_empty()) + assert(service.request_stamp_at_surface( + stamp_surface["position"], stamp_surface["normal"], Vector3.RIGHT + )) + var shared_stamp_deadline: int = Time.get_ticks_msec() + WAIT_MSEC + while ( + Time.get_ticks_msec() < shared_stamp_deadline + and service.get_canvas_ids().is_empty() + ): + await process_frame + assert(service.get_canvas_ids().size() == 1) + var stamp_state: Dictionary = service.get_canvas_state( + service.get_canvas_ids()[0] + ) + assert(bool(stamp_state.get("stamp", false))) + assert(bool(stamp_state["finalized"])) + assert(str(stamp_state["cells"][0]["color_id"]) == "coral") + assert( + session.get_local_identity_fingerprint() + in stamp_state.get("participant_fingerprints", []) + ) + var clear_deadline: int = Time.get_ticks_msec() + WAIT_MSEC + while ( + Time.get_ticks_msec() < clear_deadline + and not service.get_canvas_ids().is_empty() + ): + await process_frame + assert(service.get_canvas_ids().is_empty()) + assert(service.request_stamp_at_surface( + stamp_surface["position"], stamp_surface["normal"], Vector3.RIGHT + )) + var second_stamp_deadline: int = Time.get_ticks_msec() + WAIT_MSEC + while ( + Time.get_ticks_msec() < second_stamp_deadline + and service.get_canvas_ids().is_empty() + ): + await process_frame + assert(service.get_canvas_ids().size() == 1) + var ban_deadline: int = Time.get_ticks_msec() + WAIT_MSEC + while ( + Time.get_ticks_msec() < ban_deadline + and session.state != NetworkSession.State.SERVER_LOST + ): + await process_frame + assert(session.state == NetworkSession.State.SERVER_LOST) + assert(service.get_canvas_ids().is_empty()) print("Surface drawing multiplayer client validation: PASS") - session.disconnect_session("") main.queue_free() for _frame: int in 4: await process_frame diff --git a/tests/surface_drawing_runtime_validation.gd b/tests/surface_drawing_runtime_validation.gd index 8835127..6fa7a9e 100644 --- a/tests/surface_drawing_runtime_validation.gd +++ b/tests/surface_drawing_runtime_validation.gd @@ -67,6 +67,16 @@ func _run() -> void: state["cells"][0]["author_fingerprint"] == session.get_local_identity_fingerprint() ) + var export_path: String = service.export_canvas_png(canvas_id) + assert(not export_path.is_empty()) + var data_root := main.get("_data_root") as PlayerDataRoot + assert(export_path.begins_with(data_root.root_path.path_join("artwork"))) + assert(FileAccess.file_exists(export_path)) + var exported_image: Image = Image.load_from_file(export_path) + assert(exported_image.get_size() == Vector2i(16, 16)) + assert(exported_image.get_pixel(8, 7).is_equal_approx( + SurfaceDrawingPalette.get_color(&"ocean_teal") + )) assert(service.request_guide_visibility(canvas_id, false)) state = service.get_canvas_state(canvas_id) assert(not bool(state["guide_visible"])) @@ -78,6 +88,7 @@ func _run() -> void: assert(service.request_guide_visibility(canvas_id, false, true)) assert(bool(service.get_canvas_state(canvas_id)["finalized"])) assert(canvas.is_finalized()) + assert(not canvas.has_guide_geometry()) assert(service.request_canvas_at_surface( hit["position"], hit["normal"], Vector3.RIGHT )) @@ -109,6 +120,38 @@ func _run() -> void: assert(player_list.get_session_artwork_counts() == Vector2i(2, 1)) assert(player_list.reset_session_artwork()) assert(service.get_canvas_ids().is_empty()) + var stamp_entries: Array[Dictionary] = service.get_saved_stamp_entries() + assert(stamp_entries.size() == 1) + assert(str(stamp_entries[0]["path"]) == export_path) + assert(int(stamp_entries[0]["grid_size"]) == 16) + assert(bool(stamp_entries[0]["available"])) + service.activate(Vector2(640.0, 360.0)) + assert(service.select_saved_stamp(export_path)) + assert(service.is_stamp_mode()) + assert(service.request_stamp_at_surface( + hit["position"], hit["normal"], Vector3.RIGHT + )) + assert(service.get_canvas_ids().size() == 1) + var stamp_id: String = service.get_canvas_ids()[0] + var stamp_state: Dictionary = service.get_canvas_state(stamp_id) + assert(bool(stamp_state["stamp"])) + assert(bool(stamp_state["finalized"])) + assert(not bool(stamp_state["guide_visible"])) + assert((stamp_state["cells"] as Array).size() == 1) + assert(int(stamp_state["cells"][0]["x"]) == 8) + assert(int(stamp_state["cells"][0]["y"]) == 8) + assert(str(stamp_state["cells"][0]["color_id"]) == "ocean_teal") + assert( + stamp_state.get("participant_fingerprints", []) + == [session.get_local_identity_fingerprint()] + ) + var stamp_canvas_nodes: Dictionary = service.get("_canvas_nodes") + var stamp_canvas := stamp_canvas_nodes[stamp_id] as SurfaceDrawingCanvas + assert(stamp_canvas.is_finalized()) + assert(not stamp_canvas.has_guide_geometry()) + service.set_placement_mode(false) + assert(not service.is_stamp_mode()) + assert(service.clear_session_artwork()) print("Surface drawing runtime validation: PASS") session.disconnect_session("") diff --git a/tests/surface_drawing_texture_renderer_validation.gd b/tests/surface_drawing_texture_renderer_validation.gd new file mode 100644 index 0000000..ed99383 --- /dev/null +++ b/tests/surface_drawing_texture_renderer_validation.gd @@ -0,0 +1,101 @@ +extends SceneTree + +const CANVAS_COUNT: int = 5 +const GRID_SIZE: int = 32 +const FINGERPRINT: String = ( + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" +) + + +func _initialize() -> void: + call_deferred("_run") + + +func _run() -> void: + var world := Node3D.new() + root.add_child(world) + var color_ids: Array[StringName] = SurfaceDrawingPalette.get_color_ids() + var cells: Array[Dictionary] = [] + for y: int in range(GRID_SIZE): + for x: int in range(GRID_SIZE): + cells.append({ + "x": x, + "y": y, + "color_id": str(color_ids[(x + y) % color_ids.size()]), + "author_fingerprint": FINGERPRINT, + }) + var canvases: Array[SurfaceDrawingCanvas] = [] + var persistent_meshes: Array[Mesh] = [] + var persistent_textures: Array[Texture2D] = [] + for canvas_index: int in range(CANVAS_COUNT): + var canvas := SurfaceDrawingCanvas.new() + world.add_child(canvas) + assert(canvas.setup({ + "session_id": "texture-renderer-session", + "canvas_id": "canvas-%d" % canvas_index, + "origin": [float(canvas_index) * 3.0, 0.0, 0.0], + "normal": [0.0, 1.0, 0.0], + "tangent": [1.0, 0.0, 0.0], + "width": GRID_SIZE, + "height": GRID_SIZE, + "cell_size": SurfaceDrawingProtocol.CELL_SIZE, + "revision": 0, + "guide_visible": true, + "finalized": false, + "layer": canvas_index, + "creator_fingerprint": FINGERPRINT, + "cells": cells, + }, null)) + assert(canvas.get_rendered_pixel_count() == GRID_SIZE * GRID_SIZE) + var pixel_instance := canvas.get("_pixel_instance") as MeshInstance3D + assert(pixel_instance != null) + assert(pixel_instance.mesh.get_surface_count() == 1) + var material := pixel_instance.mesh.surface_get_material( + 0 + ) as StandardMaterial3D + assert(material != null) + assert(material.albedo_texture is ImageTexture) + canvases.append(canvas) + persistent_meshes.append(pixel_instance.mesh) + persistent_textures.append(material.albedo_texture) + for canvas_index: int in range(CANVAS_COUNT): + var canvas: SurfaceDrawingCanvas = canvases[canvas_index] + assert(canvas.apply_update({ + "session_id": "texture-renderer-session", + "canvas_id": "canvas-%d" % canvas_index, + "revision": 1, + "edits": [{ + "x": canvas_index, + "y": canvas_index, + "color_id": "coral", + "author_fingerprint": FINGERPRINT, + }], + })) + var pixel_instance := canvas.get("_pixel_instance") as MeshInstance3D + var material := pixel_instance.mesh.surface_get_material( + 0 + ) as StandardMaterial3D + assert(pixel_instance.mesh == persistent_meshes[canvas_index]) + assert(material.albedo_texture == persistent_textures[canvas_index]) + assert(canvas.apply_guide_update({ + "session_id": "texture-renderer-session", + "canvas_id": "canvas-%d" % canvas_index, + "revision": 2, + "guide_visible": false, + "finalized": true, + })) + assert(not canvas.has_guide_geometry()) + await process_frame + for canvas: SurfaceDrawingCanvas in canvases: + var artwork_mesh_count: int = 0 + for child: Node in canvas.get_children(): + if child is MultiMeshInstance3D: + assert(false, "Art Kit pixels regressed to per-color MultiMeshes.") + if child is MeshInstance3D: + artwork_mesh_count += 1 + assert(artwork_mesh_count == 1) + assert(canvas.get_export_image().get_size() == Vector2i(32, 32)) + world.queue_free() + await process_frame + print("Surface drawing texture renderer validation: PASS") + quit() diff --git a/tests/surface_drawing_texture_renderer_validation.gd.uid b/tests/surface_drawing_texture_renderer_validation.gd.uid new file mode 100644 index 0000000..c64b594 --- /dev/null +++ b/tests/surface_drawing_texture_renderer_validation.gd.uid @@ -0,0 +1 @@ +uid://qj7jd2p3b4p8 diff --git a/tests/surface_drawing_validation.gd b/tests/surface_drawing_validation.gd index 596cec0..ac48a67 100644 --- a/tests/surface_drawing_validation.gd +++ b/tests/surface_drawing_validation.gd @@ -90,6 +90,21 @@ func _validate_protocol_bounds() -> void: unsupported_size["width"] = 48 unsupported_size["height"] = 48 assert(not SurfaceDrawingProtocol.validate_canvas_request(unsupported_size)) + var stamp_pixels := PackedByteArray() + stamp_pixels.resize(16 * 16) + stamp_pixels[0] = 1 + var stamp_request: Dictionary = canvas_request.duplicate(true) + stamp_request["request_id"] = "stamp-1" + stamp_request["pixels"] = stamp_pixels + assert(SurfaceDrawingProtocol.validate_stamp_request(stamp_request)) + var invalid_stamp: Dictionary = stamp_request.duplicate(true) + var invalid_pixels: PackedByteArray = invalid_stamp["pixels"] + invalid_pixels[0] = SurfaceDrawingPalette.COLORS.size() + 1 + invalid_stamp["pixels"] = invalid_pixels + assert(not SurfaceDrawingProtocol.validate_stamp_request(invalid_stamp)) + var empty_stamp: Dictionary = stamp_request.duplicate(true) + empty_stamp["pixels"] = PackedByteArray() + assert(not SurfaceDrawingProtocol.validate_stamp_request(empty_stamp)) var guide_request: Dictionary = { "request_id": "guide-1", "session_id": "session", @@ -116,9 +131,11 @@ func _validate_art_unlocks() -> void: assert(unlocks.unlock_product(&"marker_ocean_teal")) assert(unlocks.unlock_product(&"brush_4x")) assert(unlocks.unlock_product(&"grid_128x")) + assert(unlocks.unlock_product(PlayerArtUnlocks.STAMP_PRODUCT_ID)) assert(unlocks.is_color_unlocked(&"ocean_teal")) assert(unlocks.is_brush_size_unlocked(4)) assert(unlocks.is_grid_size_unlocked(128)) + assert(unlocks.is_stamp_unlocked()) assert(not unlocks.restore_mask(PlayerArtUnlocks.ALL_UNLOCK_MASK + 1)) unlocks.free() @@ -177,6 +194,16 @@ func _validate_canvas_geometry_and_collaboration() -> void: "cells": [], } assert(canvas.setup(state, null)) + var pixel_instance := canvas.get("_pixel_instance") as MeshInstance3D + assert(pixel_instance != null) + assert(pixel_instance.name == "ArtworkTexture") + var persistent_mesh: Mesh = pixel_instance.mesh + var pixel_material := persistent_mesh.surface_get_material( + 0 + ) as StandardMaterial3D + assert(pixel_material != null) + var persistent_texture: Texture2D = pixel_material.albedo_texture + assert(persistent_texture is ImageTexture) var first_center: Vector3 = canvas.get_cell_world_position(0, 0) assert(canvas.cell_at_world_point(first_center) == Vector2i(0, 0)) assert(canvas.contains_world_point(first_center)) @@ -192,6 +219,15 @@ func _validate_canvas_geometry_and_collaboration() -> void: }], } assert(canvas.apply_update(first_update)) + assert(pixel_instance.mesh == persistent_mesh) + assert(pixel_material.albedo_texture == persistent_texture) + assert(canvas.get_rendered_pixel_count() == 1) + var export_image: Image = canvas.get_export_image() + assert(export_image.get_size() == Vector2i(16, 16)) + assert(export_image.get_pixel(3, 11).is_equal_approx( + SurfaceDrawingPalette.get_color(&"coral") + )) + assert(export_image.get_pixel(0, 0).is_equal_approx(Color.TRANSPARENT)) var finish_update: Dictionary = { "session_id": "session", "canvas_id": "canvas-1", @@ -202,6 +238,9 @@ func _validate_canvas_geometry_and_collaboration() -> void: assert(canvas.apply_guide_update(finish_update)) assert(not canvas.is_guide_visible()) assert(canvas.is_finalized()) + assert(not canvas.has_guide_geometry()) + assert(pixel_instance.mesh == persistent_mesh) + assert(pixel_material.albedo_texture == persistent_texture) await process_frame var finished_pixel_scale: float = canvas.get_rendered_pixel_size() assert( @@ -223,6 +262,8 @@ func _validate_canvas_geometry_and_collaboration() -> void: }], } assert(canvas.apply_update(second_update)) + assert(pixel_instance.mesh == persistent_mesh) + assert(pixel_material.albedo_texture == persistent_texture) var cells: Array[Dictionary] = canvas.get_authoritative_cells() assert(cells.size() == 1) assert(cells[0]["color_id"] == "blue") @@ -240,6 +281,10 @@ func _validate_canvas_geometry_and_collaboration() -> void: } assert(canvas.apply_update(erase_update)) assert(canvas.get_authoritative_cells().is_empty()) + assert(canvas.get_rendered_pixel_count() == 0) + assert(canvas.get_export_image().get_pixel(3, 11).is_equal_approx( + Color.TRANSPARENT + )) world.queue_free() await process_frame @@ -282,6 +327,7 @@ func _validate_blocked_author_visibility() -> void: "cell_size": SurfaceDrawingProtocol.CELL_SIZE, "revision": 1, "creator_fingerprint": FINGERPRINT_A, + "participant_fingerprints": [FINGERPRINT_A, FINGERPRINT_B], "cells": [ { "x": 1, @@ -298,20 +344,30 @@ func _validate_blocked_author_visibility() -> void: ], } assert(canvas.setup(state, relationships)) - assert(_rendered_pixel_count(canvas) == 1) + assert(canvas.is_hidden_by_relationship()) + assert(canvas.get_rendered_pixel_count() == 0) relationships.set("_records", {}) canvas.refresh_relationship_visibility() await process_frame - assert(_rendered_pixel_count(canvas) == 2) + assert(not canvas.is_hidden_by_relationship()) + assert(canvas.get_rendered_pixel_count() == 2) + relationships.set("_records", { + FINGERPRINT_B: {"blocked": true, "muted": true}, + }) + assert(canvas.apply_update({ + "session_id": "session", + "canvas_id": "blocked-author-canvas", + "revision": 2, + "participant_fingerprints": [FINGERPRINT_A, FINGERPRINT_B], + "edits": [{ + "x": 2, + "y": 1, + "color_id": "", + "author_fingerprint": "", + }], + })) + canvas.refresh_relationship_visibility() + assert(canvas.is_hidden_by_relationship()) + assert(canvas.get_rendered_pixel_count() == 0) world.queue_free() await process_frame - - -func _rendered_pixel_count(canvas: SurfaceDrawingCanvas) -> int: - var count: int = 0 - for child: Node in canvas.get_children(): - if child is MultiMeshInstance3D: - var instance := child as MultiMeshInstance3D - if instance.multimesh != null: - count += instance.multimesh.instance_count - return count diff --git a/ui/fishing_shop.gd b/ui/fishing_shop.gd index f56b0ae..ad8247c 100644 --- a/ui/fishing_shop.gd +++ b/ui/fishing_shop.gd @@ -1118,6 +1118,10 @@ func _refresh_supplies() -> void: var canvas_grid := _add_stock_icon_grid() for product_id: StringName in ArtShopStockType.GRID_PRODUCTS: _add_art_upgrade_button(product_id, canvas_grid) + _add_stock_section("stamps") + var stamp_grid := _add_stock_icon_grid() + for product_id: StringName in ArtShopStockType.STAMP_PRODUCTS: + _add_art_upgrade_button(product_id, stamp_grid) call_deferred("_configure_controller_focus") @@ -1361,7 +1365,9 @@ func _add_art_upgrade_button( var marker_color_id: StringName = ( PlayerArtUnlocksType.color_id_for_product(product_id) ) - if marker_color_id.is_empty(): + if product_id == PlayerArtUnlocksType.STAMP_PRODUCT_ID: + _configure_art_text_tile(button, "stamp") + elif marker_color_id.is_empty(): var upgrade_icon: Texture2D = ART_UPGRADE_ICONS.get( product_id, FALLBACK_SUPPLY_ICON, @@ -1390,6 +1396,16 @@ func _add_art_upgrade_button( button.pressed.connect(_purchase_art_upgrade.bind(product_id)) +func _configure_art_text_tile(button: Button, label_text: String) -> void: + button.custom_minimum_size = SUPPLY_ICON_TILE_SIZE + button.size_flags_horizontal = Control.SIZE_SHRINK_BEGIN + button.icon = null + button.expand_icon = false + button.alignment = HORIZONTAL_ALIGNMENT_CENTER + button.text = label_text + button.add_theme_font_size_override("font_size", 17) + + func _make_stock_button( button_text: String, tooltip: String, diff --git a/ui/players_page.gd b/ui/players_page.gd index 6748e6d..04e078b 100644 --- a/ui/players_page.gd +++ b/ui/players_page.gd @@ -522,6 +522,15 @@ func _build_active_rows() -> void: operator.pressed.connect(_confirm_operator.bind(entry)) UtilityPageStyle.apply_compact_ocean_button(operator) row.add_child(operator) + var clear_art := Button.new() + clear_art.text = "clear art" + clear_art.disabled = not entry.can_clear_art + clear_art.tooltip_text = ( + "Remove every shared artwork this player participated in." + ) + clear_art.pressed.connect(_confirm_clear_art.bind(entry)) + UtilityPageStyle.apply_compact_ocean_button(clear_art) + row.add_child(clear_art) var kick := Button.new() kick.disabled = not entry.can_kick kick.pressed.connect(_confirm_kick.bind(entry)) @@ -704,8 +713,21 @@ func _confirm_kick(entry: PlayerListEntry) -> void: ) +func _confirm_clear_art(entry: PlayerListEntry) -> void: + _confirm( + ( + "Clear every shared artwork %s participated in?\n" + + "This removes it for everyone and cannot be undone." + ) % entry.display_name, + func() -> void: + _service.clear_art( + entry.peer_id, entry.full_fingerprint, entry.revision + ) + ) + + func _confirm_ban(entry: PlayerListEntry) -> void: - _confirm("Ban %s · %s from this server?" % [ + _confirm("Ban %s · %s from this server?\nTheir shared artwork will also be removed." % [ entry.display_name, entry.compact_fingerprint, ], func() -> void: _service.ban( diff --git a/ui/surface_drawing_toolbar.gd b/ui/surface_drawing_toolbar.gd index edd920e..af8fda0 100644 --- a/ui/surface_drawing_toolbar.gd +++ b/ui/surface_drawing_toolbar.gd @@ -29,7 +29,7 @@ const GRID_SIZE_ICONS: Dictionary[int, Texture2D] = { 64: preload("res://items/icons/art/art_kit_grid_large_light.png"), 128: preload("res://items/icons/art/art_kit_grid_xl_light.png"), } -const TOOLBAR_WIDTH: float = 510.0 +const TOOLBAR_WIDTH: float = 634.0 const TOOLBAR_HEIGHT: float = 373.0 const COLOR_RAIL_WIDTH: float = 46.0 const POPUP_LOCK_ICON_SIZE: int = 24 @@ -48,6 +48,13 @@ const COLOR_LOCK_ICON_ALPHA: float = 0.34 @onready var _hide_guide_button: Button = %HideGuideButton @onready var _restore_guide_button: Button = %RestoreGuideButton @onready var _finalize_guide_button: Button = %FinalizeGuideButton +@onready var _export_button: Button = %ExportButton +@onready var _stamp_button: Button = %StampButton +@onready var _stamp_library_panel: PanelContainer = %StampLibraryPanel +@onready var _stamp_library_close: Button = %StampLibraryClose +@onready var _empty_stamp_library: Label = %EmptyStampLibrary +@onready var _stamp_scroll: ScrollContainer = %StampScroll +@onready var _stamp_grid: GridContainer = %StampGrid var _service: NetworkSurfaceDrawingService var _unlocks: PlayerArtUnlocks @@ -65,6 +72,7 @@ func _ready() -> void: UtilityPageStyleType.apply_page(self) _apply_toolbar_panel(_top_panel) _apply_toolbar_panel(_color_panel) + _apply_toolbar_panel(_stamp_library_panel) UtilityPageStyleType.apply_ocean_button(_mode_button) UtilityPageStyleType.apply_ocean_button(_brush_option) UtilityPageStyleType.apply_ocean_button(_grid_option) @@ -102,6 +110,9 @@ func _ready() -> void: _finalize_guide_button.pressed.connect( _arm_guide_action.bind(NetworkSurfaceDrawingService.GuideAction.FINALIZE) ) + _export_button.pressed.connect(_export_aimed_artwork) + _stamp_button.pressed.connect(_toggle_stamp_library) + _stamp_library_close.pressed.connect(_close_stamp_library) _brush_option.item_selected.connect(_select_brush) _grid_option.item_selected.connect(_select_grid) _configure_pointer_only_controls() @@ -136,6 +147,8 @@ func _action_buttons() -> Array[Button]: _hide_guide_button, _restore_guide_button, _finalize_guide_button, + _export_button, + _stamp_button, ] @@ -224,6 +237,12 @@ func owns_pointer_event(event: InputEvent) -> bool: return ( _top_panel.get_global_rect().has_point(pointer_position) or _color_panel.get_global_rect().has_point(pointer_position) + or ( + _stamp_library_panel.visible + and _stamp_library_panel.get_global_rect().has_point( + pointer_position + ) + ) ) return false @@ -264,6 +283,9 @@ func _configure_pointer_only_controls() -> void: _hide_guide_button, _restore_guide_button, _finalize_guide_button, + _export_button, + _stamp_button, + _stamp_library_close, ]: control.focus_mode = Control.FOCUS_NONE control.focus_neighbor_left = NodePath() @@ -443,6 +465,14 @@ func _refresh_unlocks() -> void: and _service.get_color_id() == color_id ), ) + _stamp_button.disabled = not _unlocks.is_stamp_unlocked() + _stamp_button.tooltip_text = ( + "Place saved artwork stamps" + if not _stamp_button.disabled + else "Unlock the stamp tool in Art Supplies" + ) + if _stamp_button.disabled: + _close_stamp_library() func _apply_popup_unlock_state( @@ -524,6 +554,65 @@ func _arm_guide_action(action: int) -> void: _service.arm_guide_action(action) +func _export_aimed_artwork() -> void: + if _service != null: + var export_path: String = _service.export_aimed_canvas() + if not export_path.is_empty() and _stamp_library_panel.visible: + _rebuild_stamp_library() + + +func _toggle_stamp_library() -> void: + if _stamp_button.disabled or _service == null: + return + if _stamp_library_panel.visible: + _close_stamp_library() + return + _rebuild_stamp_library() + _stamp_library_panel.show() + + +func _close_stamp_library() -> void: + _stamp_library_panel.hide() + + +func _rebuild_stamp_library() -> void: + for child: Node in _stamp_grid.get_children(): + child.queue_free() + var entries: Array[Dictionary] = ( + _service.get_saved_stamp_entries() if _service != null else [] + ) + _empty_stamp_library.visible = entries.is_empty() + _stamp_scroll.visible = not entries.is_empty() + for entry: Dictionary in entries: + var button := Button.new() + button.custom_minimum_size = Vector2(110.0, 108.0) + button.focus_mode = Control.FOCUS_NONE + button.expand_icon = true + button.icon_alignment = HORIZONTAL_ALIGNMENT_CENTER + button.vertical_icon_alignment = VERTICAL_ALIGNMENT_TOP + button.add_theme_constant_override("icon_max_width", 74) + button.texture_filter = CanvasItem.TEXTURE_FILTER_NEAREST + button.icon = ImageTexture.create_from_image(entry["image"]) + button.text = "%d×%d" % [entry["grid_size"], entry["grid_size"]] + button.tooltip_text = str(entry["file_name"]) + button.accessibility_name = "saved artwork %s" % str( + entry["file_name"] + ) + button.disabled = not bool(entry.get("available", false)) + if button.disabled: + button.tooltip_text += "\nrequires its grid, colors, and stamp unlock" + UtilityPageStyleType.apply_ocean_button(button) + button.pressed.connect( + _select_saved_stamp.bind(str(entry["path"])) + ) + _stamp_grid.add_child(button) + + +func _select_saved_stamp(path: String) -> void: + if _service != null and _service.select_saved_stamp(path): + _close_stamp_library() + + func _on_unlocks_changed(_unlock_mask: int) -> void: _refresh_unlocks() @@ -539,6 +628,7 @@ func _on_service_state_changed( ) -> void: visible = is_active if not is_active: + _close_stamp_library() hide_virtual_pointer_overlay() return _mode_button.icon = ( diff --git a/ui/surface_drawing_toolbar.tscn b/ui/surface_drawing_toolbar.tscn index 349b209..89e19ac 100644 --- a/ui/surface_drawing_toolbar.tscn +++ b/ui/surface_drawing_toolbar.tscn @@ -20,7 +20,7 @@ layout_mode = 0 anchors_preset = 1 anchor_left = 1.0 anchor_right = 1.0 -offset_left = -510.0 +offset_left = -634.0 offset_bottom = 373.0 grow_horizontal = 0 mouse_filter = 2 @@ -30,7 +30,7 @@ script = ExtResource("1_script") [node name="TopPanel" type="PanelContainer" parent="."] unique_name_in_owner = true layout_mode = 0 -offset_right = 510.0 +offset_right = 634.0 offset_bottom = 60.0 [node name="Top" type="HBoxContainer" parent="TopPanel"] @@ -109,6 +109,22 @@ accessibility_name = "toggle finalize grid mode" icon = ExtResource("9_grid_finish") expand_icon = true +[node name="ExportButton" type="Button" parent="TopPanel/Top"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "export aimed artwork as PNG" +focus_mode = 0 +accessibility_name = "export aimed artwork as PNG" +text = "png" + +[node name="StampButton" type="Button" parent="TopPanel/Top"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "place saved artwork stamps" +focus_mode = 0 +accessibility_name = "place saved artwork stamps" +text = "stamp" + [node name="ModeButton" type="Button" parent="TopPanel/Top"] unique_name_in_owner = true layout_mode = 2 @@ -121,12 +137,74 @@ expand_icon = true [node name="ColorPanel" type="PanelContainer" parent="."] unique_name_in_owner = true layout_mode = 0 -offset_left = 464.0 +offset_left = 588.0 offset_top = 54.0 -offset_right = 510.0 +offset_right = 634.0 offset_bottom = 373.0 [node name="ColorList" type="VBoxContainer" parent="ColorPanel"] unique_name_in_owner = true layout_mode = 2 theme_override_constants/separation = 5 + +[node name="StampLibraryPanel" type="PanelContainer" parent="."] +unique_name_in_owner = true +visible = false +z_index = 10 +layout_mode = 0 +offset_left = 57.0 +offset_top = 64.0 +offset_right = 577.0 +offset_bottom = 366.0 + +[node name="Margin" type="MarginContainer" parent="StampLibraryPanel"] +layout_mode = 2 +theme_override_constants/margin_left = 12 +theme_override_constants/margin_top = 10 +theme_override_constants/margin_right = 12 +theme_override_constants/margin_bottom = 10 + +[node name="Layout" type="VBoxContainer" parent="StampLibraryPanel/Margin"] +layout_mode = 2 +theme_override_constants/separation = 8 + +[node name="Header" type="HBoxContainer" parent="StampLibraryPanel/Margin/Layout"] +layout_mode = 2 + +[node name="Title" type="Label" parent="StampLibraryPanel/Margin/Layout/Header"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "saved artwork" +theme_override_font_sizes/font_size = 22 + +[node name="StampLibraryClose" type="Button" parent="StampLibraryPanel/Margin/Layout/Header"] +unique_name_in_owner = true +custom_minimum_size = Vector2(42, 36) +layout_mode = 2 +focus_mode = 0 +tooltip_text = "close saved artwork" +accessibility_name = "close saved artwork" +text = "×" + +[node name="EmptyStampLibrary" type="Label" parent="StampLibraryPanel/Margin/Layout"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 +text = "export artwork to add stamps" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="StampScroll" type="ScrollContainer" parent="StampLibraryPanel/Margin/Layout"] +unique_name_in_owner = true +visible = false +layout_mode = 2 +size_flags_vertical = 3 +horizontal_scroll_mode = 0 + +[node name="StampGrid" type="GridContainer" parent="StampLibraryPanel/Margin/Layout/StampScroll"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_constants/h_separation = 12 +theme_override_constants/v_separation = 12 +columns = 4 From 86e59800191c52418c3beb644ab2d669732ef9f5 Mon Sep 17 00:00:00 2001 From: Voyager Date: Fri, 21 Aug 2026 21:32:58 -0400 Subject: [PATCH 15/90] Restore Kat and Kim animalese voices --- player/animalese_voice_profiles.gd | 12 +++++- scripts/import_animalese_voice.sh | 2 +- scripts/validate_animalese_samples.gd | 10 ++++- sound/dialogue/animalese/alphanumeric/0.wav | Bin 0 -> 15140 bytes .../animalese/alphanumeric/0.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/1.wav | Bin 0 -> 15140 bytes .../animalese/alphanumeric/1.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/2.wav | Bin 0 -> 15464 bytes .../animalese/alphanumeric/2.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/3.wav | Bin 0 -> 15464 bytes .../animalese/alphanumeric/3.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/4.wav | Bin 0 -> 15464 bytes .../animalese/alphanumeric/4.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/5.wav | Bin 0 -> 15464 bytes .../animalese/alphanumeric/5.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/6.wav | Bin 0 -> 16520 bytes .../animalese/alphanumeric/6.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/7.wav | Bin 0 -> 16520 bytes .../animalese/alphanumeric/7.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/8.wav | Bin 0 -> 14828 bytes .../animalese/alphanumeric/8.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/9.wav | Bin 0 -> 16460 bytes .../animalese/alphanumeric/9.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/a.wav | Bin 0 -> 15344 bytes .../animalese/alphanumeric/a.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/b.wav | Bin 0 -> 18020 bytes .../animalese/alphanumeric/b.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/c.wav | Bin 0 -> 18020 bytes .../animalese/alphanumeric/c.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/d.wav | Bin 0 -> 18020 bytes .../animalese/alphanumeric/d.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/e.wav | Bin 0 -> 16064 bytes .../animalese/alphanumeric/e.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/f.wav | Bin 0 -> 16064 bytes .../animalese/alphanumeric/f.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/g.wav | Bin 0 -> 15620 bytes .../animalese/alphanumeric/g.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/h.wav | Bin 0 -> 15620 bytes .../animalese/alphanumeric/h.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/i.wav | Bin 0 -> 14552 bytes .../animalese/alphanumeric/i.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/j.wav | Bin 0 -> 19400 bytes .../animalese/alphanumeric/j.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/k.wav | Bin 0 -> 19400 bytes .../animalese/alphanumeric/k.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/l.wav | Bin 0 -> 16412 bytes .../animalese/alphanumeric/l.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/m.wav | Bin 0 -> 14900 bytes .../animalese/alphanumeric/m.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/n.wav | Bin 0 -> 16616 bytes .../animalese/alphanumeric/n.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/o.wav | Bin 0 -> 16616 bytes .../animalese/alphanumeric/o.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/p.wav | Bin 0 -> 14936 bytes .../animalese/alphanumeric/p.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/q.wav | Bin 0 -> 14936 bytes .../animalese/alphanumeric/q.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/r.wav | Bin 0 -> 18716 bytes .../animalese/alphanumeric/r.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/s.wav | Bin 0 -> 16064 bytes .../animalese/alphanumeric/s.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/t.wav | Bin 0 -> 14612 bytes .../animalese/alphanumeric/t.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/u.wav | Bin 0 -> 16604 bytes .../animalese/alphanumeric/u.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/v.wav | Bin 0 -> 18332 bytes .../animalese/alphanumeric/v.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/w.wav | Bin 0 -> 18332 bytes .../animalese/alphanumeric/w.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/x.wav | Bin 0 -> 15116 bytes .../animalese/alphanumeric/x.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/y.wav | Bin 0 -> 15992 bytes .../animalese/alphanumeric/y.wav.import | 24 ++++++++++++ sound/dialogue/animalese/alphanumeric/z.wav | Bin 0 -> 15140 bytes .../animalese/alphanumeric/z.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/0.wav | Bin 0 -> 14516 bytes sound/dialogue/animalese/kim/0.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/1.wav | Bin 0 -> 14516 bytes sound/dialogue/animalese/kim/1.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/2.wav | Bin 0 -> 15656 bytes sound/dialogue/animalese/kim/2.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/3.wav | Bin 0 -> 15656 bytes sound/dialogue/animalese/kim/3.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/4.wav | Bin 0 -> 13136 bytes sound/dialogue/animalese/kim/4.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/5.wav | Bin 0 -> 14456 bytes sound/dialogue/animalese/kim/5.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/6.wav | Bin 0 -> 18536 bytes sound/dialogue/animalese/kim/6.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/7.wav | Bin 0 -> 18536 bytes sound/dialogue/animalese/kim/7.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/8.wav | Bin 0 -> 11096 bytes sound/dialogue/animalese/kim/8.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/9.wav | Bin 0 -> 13136 bytes sound/dialogue/animalese/kim/9.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/a.wav | Bin 0 -> 12296 bytes sound/dialogue/animalese/kim/a.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/b.wav | Bin 0 -> 10496 bytes sound/dialogue/animalese/kim/b.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/c.wav | Bin 0 -> 14876 bytes sound/dialogue/animalese/kim/c.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/d.wav | Bin 0 -> 12476 bytes sound/dialogue/animalese/kim/d.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/e.wav | Bin 0 -> 13436 bytes sound/dialogue/animalese/kim/e.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/f.wav | Bin 0 -> 13436 bytes sound/dialogue/animalese/kim/f.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/g.wav | Bin 0 -> 13076 bytes sound/dialogue/animalese/kim/g.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/h.wav | Bin 0 -> 15176 bytes sound/dialogue/animalese/kim/h.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/i.wav | Bin 0 -> 15176 bytes sound/dialogue/animalese/kim/i.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/j.wav | Bin 0 -> 16136 bytes sound/dialogue/animalese/kim/j.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/k.wav | Bin 0 -> 13316 bytes sound/dialogue/animalese/kim/k.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/l.wav | Bin 0 -> 13316 bytes sound/dialogue/animalese/kim/l.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/m.wav | Bin 0 -> 14696 bytes sound/dialogue/animalese/kim/m.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/n.wav | Bin 0 -> 15836 bytes sound/dialogue/animalese/kim/n.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/o.wav | Bin 0 -> 9896 bytes sound/dialogue/animalese/kim/o.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/p.wav | Bin 0 -> 13736 bytes sound/dialogue/animalese/kim/p.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/q.wav | Bin 0 -> 13736 bytes sound/dialogue/animalese/kim/q.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/r.wav | Bin 0 -> 13736 bytes sound/dialogue/animalese/kim/r.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/s.wav | Bin 0 -> 13736 bytes sound/dialogue/animalese/kim/s.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/t.wav | Bin 0 -> 13736 bytes sound/dialogue/animalese/kim/t.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/u.wav | Bin 0 -> 13736 bytes sound/dialogue/animalese/kim/u.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/v.wav | Bin 0 -> 14756 bytes sound/dialogue/animalese/kim/v.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/w.wav | Bin 0 -> 14756 bytes sound/dialogue/animalese/kim/w.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/x.wav | Bin 0 -> 14756 bytes sound/dialogue/animalese/kim/x.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/y.wav | Bin 0 -> 16136 bytes sound/dialogue/animalese/kim/y.wav.import | 24 ++++++++++++ sound/dialogue/animalese/kim/z.wav | Bin 0 -> 14516 bytes sound/dialogue/animalese/kim/z.wav.import | 24 ++++++++++++ ...ontroller_menu_accessibility_validation.gd | 35 ++++++++++++------ tests/profile_multiplayer_validation.gd | 18 ++++----- 149 files changed, 1781 insertions(+), 24 deletions(-) create mode 100644 sound/dialogue/animalese/alphanumeric/0.wav create mode 100644 sound/dialogue/animalese/alphanumeric/0.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/1.wav create mode 100644 sound/dialogue/animalese/alphanumeric/1.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/2.wav create mode 100644 sound/dialogue/animalese/alphanumeric/2.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/3.wav create mode 100644 sound/dialogue/animalese/alphanumeric/3.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/4.wav create mode 100644 sound/dialogue/animalese/alphanumeric/4.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/5.wav create mode 100644 sound/dialogue/animalese/alphanumeric/5.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/6.wav create mode 100644 sound/dialogue/animalese/alphanumeric/6.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/7.wav create mode 100644 sound/dialogue/animalese/alphanumeric/7.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/8.wav create mode 100644 sound/dialogue/animalese/alphanumeric/8.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/9.wav create mode 100644 sound/dialogue/animalese/alphanumeric/9.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/a.wav create mode 100644 sound/dialogue/animalese/alphanumeric/a.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/b.wav create mode 100644 sound/dialogue/animalese/alphanumeric/b.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/c.wav create mode 100644 sound/dialogue/animalese/alphanumeric/c.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/d.wav create mode 100644 sound/dialogue/animalese/alphanumeric/d.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/e.wav create mode 100644 sound/dialogue/animalese/alphanumeric/e.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/f.wav create mode 100644 sound/dialogue/animalese/alphanumeric/f.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/g.wav create mode 100644 sound/dialogue/animalese/alphanumeric/g.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/h.wav create mode 100644 sound/dialogue/animalese/alphanumeric/h.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/i.wav create mode 100644 sound/dialogue/animalese/alphanumeric/i.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/j.wav create mode 100644 sound/dialogue/animalese/alphanumeric/j.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/k.wav create mode 100644 sound/dialogue/animalese/alphanumeric/k.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/l.wav create mode 100644 sound/dialogue/animalese/alphanumeric/l.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/m.wav create mode 100644 sound/dialogue/animalese/alphanumeric/m.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/n.wav create mode 100644 sound/dialogue/animalese/alphanumeric/n.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/o.wav create mode 100644 sound/dialogue/animalese/alphanumeric/o.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/p.wav create mode 100644 sound/dialogue/animalese/alphanumeric/p.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/q.wav create mode 100644 sound/dialogue/animalese/alphanumeric/q.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/r.wav create mode 100644 sound/dialogue/animalese/alphanumeric/r.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/s.wav create mode 100644 sound/dialogue/animalese/alphanumeric/s.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/t.wav create mode 100644 sound/dialogue/animalese/alphanumeric/t.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/u.wav create mode 100644 sound/dialogue/animalese/alphanumeric/u.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/v.wav create mode 100644 sound/dialogue/animalese/alphanumeric/v.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/w.wav create mode 100644 sound/dialogue/animalese/alphanumeric/w.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/x.wav create mode 100644 sound/dialogue/animalese/alphanumeric/x.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/y.wav create mode 100644 sound/dialogue/animalese/alphanumeric/y.wav.import create mode 100644 sound/dialogue/animalese/alphanumeric/z.wav create mode 100644 sound/dialogue/animalese/alphanumeric/z.wav.import create mode 100644 sound/dialogue/animalese/kim/0.wav create mode 100644 sound/dialogue/animalese/kim/0.wav.import create mode 100644 sound/dialogue/animalese/kim/1.wav create mode 100644 sound/dialogue/animalese/kim/1.wav.import create mode 100644 sound/dialogue/animalese/kim/2.wav create mode 100644 sound/dialogue/animalese/kim/2.wav.import create mode 100644 sound/dialogue/animalese/kim/3.wav create mode 100644 sound/dialogue/animalese/kim/3.wav.import create mode 100644 sound/dialogue/animalese/kim/4.wav create mode 100644 sound/dialogue/animalese/kim/4.wav.import create mode 100644 sound/dialogue/animalese/kim/5.wav create mode 100644 sound/dialogue/animalese/kim/5.wav.import create mode 100644 sound/dialogue/animalese/kim/6.wav create mode 100644 sound/dialogue/animalese/kim/6.wav.import create mode 100644 sound/dialogue/animalese/kim/7.wav create mode 100644 sound/dialogue/animalese/kim/7.wav.import create mode 100644 sound/dialogue/animalese/kim/8.wav create mode 100644 sound/dialogue/animalese/kim/8.wav.import create mode 100644 sound/dialogue/animalese/kim/9.wav create mode 100644 sound/dialogue/animalese/kim/9.wav.import create mode 100644 sound/dialogue/animalese/kim/a.wav create mode 100644 sound/dialogue/animalese/kim/a.wav.import create mode 100644 sound/dialogue/animalese/kim/b.wav create mode 100644 sound/dialogue/animalese/kim/b.wav.import create mode 100644 sound/dialogue/animalese/kim/c.wav create mode 100644 sound/dialogue/animalese/kim/c.wav.import create mode 100644 sound/dialogue/animalese/kim/d.wav create mode 100644 sound/dialogue/animalese/kim/d.wav.import create mode 100644 sound/dialogue/animalese/kim/e.wav create mode 100644 sound/dialogue/animalese/kim/e.wav.import create mode 100644 sound/dialogue/animalese/kim/f.wav create mode 100644 sound/dialogue/animalese/kim/f.wav.import create mode 100644 sound/dialogue/animalese/kim/g.wav create mode 100644 sound/dialogue/animalese/kim/g.wav.import create mode 100644 sound/dialogue/animalese/kim/h.wav create mode 100644 sound/dialogue/animalese/kim/h.wav.import create mode 100644 sound/dialogue/animalese/kim/i.wav create mode 100644 sound/dialogue/animalese/kim/i.wav.import create mode 100644 sound/dialogue/animalese/kim/j.wav create mode 100644 sound/dialogue/animalese/kim/j.wav.import create mode 100644 sound/dialogue/animalese/kim/k.wav create mode 100644 sound/dialogue/animalese/kim/k.wav.import create mode 100644 sound/dialogue/animalese/kim/l.wav create mode 100644 sound/dialogue/animalese/kim/l.wav.import create mode 100644 sound/dialogue/animalese/kim/m.wav create mode 100644 sound/dialogue/animalese/kim/m.wav.import create mode 100644 sound/dialogue/animalese/kim/n.wav create mode 100644 sound/dialogue/animalese/kim/n.wav.import create mode 100644 sound/dialogue/animalese/kim/o.wav create mode 100644 sound/dialogue/animalese/kim/o.wav.import create mode 100644 sound/dialogue/animalese/kim/p.wav create mode 100644 sound/dialogue/animalese/kim/p.wav.import create mode 100644 sound/dialogue/animalese/kim/q.wav create mode 100644 sound/dialogue/animalese/kim/q.wav.import create mode 100644 sound/dialogue/animalese/kim/r.wav create mode 100644 sound/dialogue/animalese/kim/r.wav.import create mode 100644 sound/dialogue/animalese/kim/s.wav create mode 100644 sound/dialogue/animalese/kim/s.wav.import create mode 100644 sound/dialogue/animalese/kim/t.wav create mode 100644 sound/dialogue/animalese/kim/t.wav.import create mode 100644 sound/dialogue/animalese/kim/u.wav create mode 100644 sound/dialogue/animalese/kim/u.wav.import create mode 100644 sound/dialogue/animalese/kim/v.wav create mode 100644 sound/dialogue/animalese/kim/v.wav.import create mode 100644 sound/dialogue/animalese/kim/w.wav create mode 100644 sound/dialogue/animalese/kim/w.wav.import create mode 100644 sound/dialogue/animalese/kim/x.wav create mode 100644 sound/dialogue/animalese/kim/x.wav.import create mode 100644 sound/dialogue/animalese/kim/y.wav create mode 100644 sound/dialogue/animalese/kim/y.wav.import create mode 100644 sound/dialogue/animalese/kim/z.wav create mode 100644 sound/dialogue/animalese/kim/z.wav.import diff --git a/player/animalese_voice_profiles.gd b/player/animalese_voice_profiles.gd index 4ebb528..ded0898 100644 --- a/player/animalese_voice_profiles.gd +++ b/player/animalese_voice_profiles.gd @@ -2,16 +2,26 @@ class_name AnimaleseVoiceProfiles extends RefCounted const DEFAULT_ID: String = "natural" -const DEFAULT_SAMPLE_SET_ID: String = "robot" +const DEFAULT_SAMPLE_SET_ID: String = "kat" const DEFAULT_SPEED_ID: String = "normal" const DEFAULT_CALL_ID: String = "meow" const CALL_AUDIO_DIRECTORY: String = "res://sound/dialogue/calls" const SAMPLE_SET_OPTIONS: Array[Dictionary] = [ + { + "id": "kat", + "label": "kat", + "directory": "res://sound/dialogue/animalese/alphanumeric", + }, { "id": "robot", "label": "robot", "directory": "res://sound/dialogue/animalese/robot", }, + { + "id": "kim", + "label": "kim", + "directory": "res://sound/dialogue/animalese/kim", + }, ] const OPTIONS: Array[Dictionary] = [ {"id": "tiny", "label": "tiny", "pitch": 1.24}, diff --git a/scripts/import_animalese_voice.sh b/scripts/import_animalese_voice.sh index c9c2bc9..cb7eded 100755 --- a/scripts/import_animalese_voice.sh +++ b/scripts/import_animalese_voice.sh @@ -7,7 +7,7 @@ readonly OUTPUT_SAMPLE_RATE="48000" usage() { printf 'usage: %s SOURCE_DIRECTORY SAMPLE_SET_DIRECTORY\n' "$0" >&2 - printf 'example: %s /path/to/voice_clips custom_voice\n' "$0" >&2 + printf 'example: %s /path/to/voice_kim kim\n' "$0" >&2 } if (( $# != 2 )); then diff --git a/scripts/validate_animalese_samples.gd b/scripts/validate_animalese_samples.gd index 1985ad9..a4e7502 100644 --- a/scripts/validate_animalese_samples.gd +++ b/scripts/validate_animalese_samples.gd @@ -16,14 +16,20 @@ func _initialize() -> void: "animalese supports every letter and digit", ) _expect( - VoiceProfilesType.DEFAULT_SAMPLE_SET_ID == "robot", - "robot is the default animalese voice set", + VoiceProfilesType.DEFAULT_SAMPLE_SET_ID == "kat", + "kat is the default animalese voice set", ) _expect( VoiceProfilesType.is_valid_sample_set("robot"), "the original tones remain available as robot", ) + _expect( + VoiceProfilesType.is_valid_sample_set("kim"), + "kim is available as an animalese voice set", + ) + _validate_set("kat", EXPECTED_CHARACTERS, false) _validate_set("robot", ROBOT_CHARACTERS, true) + _validate_set("kim", EXPECTED_CHARACTERS, false) if _failures.is_empty(): print("Animalese sample validation: PASS") quit(0) diff --git a/sound/dialogue/animalese/alphanumeric/0.wav b/sound/dialogue/animalese/alphanumeric/0.wav new file mode 100644 index 0000000000000000000000000000000000000000..779e725e67f2924004eb771a1cbe3df7d3591653 GIT binary patch literal 15140 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 E58{BWqW}N^ literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/alphanumeric/0.wav.import b/sound/dialogue/animalese/alphanumeric/0.wav.import new file mode 100644 index 0000000..19ac04b --- /dev/null +++ b/sound/dialogue/animalese/alphanumeric/0.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://cbn5ed728rsm" +path="res://.godot/imported/0.wav-9378d7763e1ef87ae982ab57f6e81f2d.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/alphanumeric/0.wav" +dest_files=["res://.godot/imported/0.wav-9378d7763e1ef87ae982ab57f6e81f2d.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/1.wav b/sound/dialogue/animalese/alphanumeric/1.wav new file mode 100644 index 0000000000000000000000000000000000000000..db7dd62e9a311c937a5df59314866fdb2e3fd1cd GIT binary patch literal 15140 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 literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/alphanumeric/2.wav.import b/sound/dialogue/animalese/alphanumeric/2.wav.import new file mode 100644 index 0000000..800b899 --- /dev/null +++ b/sound/dialogue/animalese/alphanumeric/2.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://cmxvxip3pwuun" +path="res://.godot/imported/2.wav-4b3515a4b79f8ae9ffc829c8a5e3c285.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/alphanumeric/2.wav" +dest_files=["res://.godot/imported/2.wav-4b3515a4b79f8ae9ffc829c8a5e3c285.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/3.wav b/sound/dialogue/animalese/alphanumeric/3.wav new file mode 100644 index 0000000000000000000000000000000000000000..6f9083569bab3964d1bbc626adcf965c53a92096 GIT binary patch literal 15464 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 YjR&jMAtPAnSK!tL8Mz@~jW^N%0X{s=(EtDd literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/alphanumeric/3.wav.import b/sound/dialogue/animalese/alphanumeric/3.wav.import new file mode 100644 index 0000000..5430aea --- /dev/null +++ b/sound/dialogue/animalese/alphanumeric/3.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://c8017waek7ew8" +path="res://.godot/imported/3.wav-ffb8f531dceaa153b492b74c4bbf7c7c.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/alphanumeric/3.wav" +dest_files=["res://.godot/imported/3.wav-ffb8f531dceaa153b492b74c4bbf7c7c.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/4.wav b/sound/dialogue/animalese/alphanumeric/4.wav new file mode 100644 index 0000000000000000000000000000000000000000..061b5da54e5721d5ee5d9b59d103273f1bf112ed GIT binary patch literal 15464 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 bo57o_!KYio@|!VMpfHlyiVVTg&FKFJ3&)GH literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/alphanumeric/4.wav.import b/sound/dialogue/animalese/alphanumeric/4.wav.import new file mode 100644 index 0000000..65e2fa4 --- /dev/null +++ b/sound/dialogue/animalese/alphanumeric/4.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://bbtypop1cmrw1" +path="res://.godot/imported/4.wav-effad197373ffb9b48afe78e0fe6c95a.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/alphanumeric/4.wav" +dest_files=["res://.godot/imported/4.wav-effad197373ffb9b48afe78e0fe6c95a.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/5.wav b/sound/dialogue/animalese/alphanumeric/5.wav new file mode 100644 index 0000000000000000000000000000000000000000..a6c50002c8a2aa89b2bfdbb11d8de78859552602 GIT binary patch literal 15464 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 B9gP40 literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/alphanumeric/5.wav.import b/sound/dialogue/animalese/alphanumeric/5.wav.import new file mode 100644 index 0000000..cddbc1f --- /dev/null +++ b/sound/dialogue/animalese/alphanumeric/5.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://ddwhh6igah1ok" +path="res://.godot/imported/5.wav-2cd0baa0afa291660575e1fc431a6b91.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/alphanumeric/5.wav" +dest_files=["res://.godot/imported/5.wav-2cd0baa0afa291660575e1fc431a6b91.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/6.wav b/sound/dialogue/animalese/alphanumeric/6.wav new file mode 100644 index 0000000000000000000000000000000000000000..41154f8a512b0e50d1776220647463371da59822 GIT binary patch literal 16520 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 literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/alphanumeric/6.wav.import b/sound/dialogue/animalese/alphanumeric/6.wav.import new file mode 100644 index 0000000..4cb51b2 --- /dev/null +++ b/sound/dialogue/animalese/alphanumeric/6.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://cqsddej565w48" +path="res://.godot/imported/6.wav-8c88e3785af1748d3cc8334b825655e1.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/alphanumeric/6.wav" +dest_files=["res://.godot/imported/6.wav-8c88e3785af1748d3cc8334b825655e1.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/7.wav b/sound/dialogue/animalese/alphanumeric/7.wav new file mode 100644 index 0000000000000000000000000000000000000000..e732f42dba206193704a89b63c0ebfe1c7b2fd2e GIT binary patch literal 16520 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 literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/alphanumeric/7.wav.import b/sound/dialogue/animalese/alphanumeric/7.wav.import new file mode 100644 index 0000000..7ed72ee --- /dev/null +++ b/sound/dialogue/animalese/alphanumeric/7.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://de5lwv3vtq4jo" +path="res://.godot/imported/7.wav-aa6620dad62f7a8fa68ac3dfe0e8bce0.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/alphanumeric/7.wav" +dest_files=["res://.godot/imported/7.wav-aa6620dad62f7a8fa68ac3dfe0e8bce0.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/8.wav b/sound/dialogue/animalese/alphanumeric/8.wav new file mode 100644 index 0000000000000000000000000000000000000000..277937592c6ddcf6f6df5d5efc941f66cb7bc5d0 GIT binary patch literal 14828 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 literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/alphanumeric/8.wav.import b/sound/dialogue/animalese/alphanumeric/8.wav.import new file mode 100644 index 0000000..4733d6c --- /dev/null +++ b/sound/dialogue/animalese/alphanumeric/8.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://lsklvocqcohu" +path="res://.godot/imported/8.wav-ee305634b68bbc3c852777570ad90d81.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/alphanumeric/8.wav" +dest_files=["res://.godot/imported/8.wav-ee305634b68bbc3c852777570ad90d81.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/9.wav b/sound/dialogue/animalese/alphanumeric/9.wav new file mode 100644 index 0000000000000000000000000000000000000000..644d326550cde1dddda92671ee6614e0ccf5d8b3 GIT binary patch literal 16460 zcmXY21$Y!mw{5r4xDkOQIKkZ^xWfXA>tc($ySux)OR%893GTt-K1s&4{ayC`UwxBg zI^A7W=bpOvR@JHAo!YlgY=t2GTlZ@>X41?UBZ43(l%@CJk2xrUAx32Mh?yf|;2u3v zq&`-Usq57x>QZ&HdJ4W}se-CU!jK3g2;mS}b*N@24pmYqL&tm;Sgg1THCtTt8S z)o`_(T19QH{-sV(=c_BBEL11M|2nD-)JpKbAk`mA0Q?S7!{B?AS^=J_49`?nI!v(x(PmO)z#`cb(?xry{W!c^HjI0s*37_Rz6qHsawQtz0mby&csvd&&pHYvid)1BbeV#f8TCz&rt{zd(su$sN5c)Y&9Re+Ds8)lzqM
J{ke0JRacxq@0FFkrS3{x=B_?4mYP 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 S3roS<+JA1C=Q|*ig#Hg;JZ$Cw literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/alphanumeric/a.wav.import b/sound/dialogue/animalese/alphanumeric/a.wav.import new file mode 100644 index 0000000..f058d25 --- /dev/null +++ b/sound/dialogue/animalese/alphanumeric/a.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://dnnf2sfntra41" +path="res://.godot/imported/a.wav-07b66f5c4c337a0412ac22c096725756.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/alphanumeric/a.wav" +dest_files=["res://.godot/imported/a.wav-07b66f5c4c337a0412ac22c096725756.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/b.wav b/sound/dialogue/animalese/alphanumeric/b.wav new file mode 100644 index 0000000000000000000000000000000000000000..56c49e23c3340a9643e415b663c0788399061dc4 GIT binary patch literal 18020 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 s0qE%ijn)FU_aR>~;+Mr?{VmZM_XIko= z@V~FWB$Mvysw?N-s;<6g`gQHpX+$TA8vNU!juWQOtKvyf6pdrm1AJIWQw-%vjT=30 zbThOWM;a43Nt0em52QCzzT{5^kblTm!coQarV5UQA*B>f0WUP?!$ zebQwqRSG7faQAzXLyAZ`c}K32edI6PwU8_zbIDXP663TWF{Bo02AP(V%Or&m;z7x& zJaQc^8WD!%O4*Vi)gt4`zvL6iBUzAUC&n?7Ea{c>RQfJCq;S%mOeC|&Sn@m0XG+(l z?a~TqrL;@BCM8M~sYW`JF=PqZK~9qgr4kEKQQnjW`rjrqNmY_0os#~R_F{Yvwm1z9<&ZiT792(VNCs^E zUaFAlL8rH{Tm%(KDXAai5E)0>kOrh9bh`yj+f#F?_0%G&8~k+{{bVO^3y2Nn=~as zL`2(A;bv_S9*9HsZE^H7wNuq7n&4H-lQe` zJrVbIgEb{71yX#J3Z+0GaxA2d}6ou*;DFVaD2jkFDD<8bvl5l9TxmTCa&#iQrR z=%E7{OjZC58L*lk>|BaFXOkMF5ThM}*A7WnrPtC=DGx^q#(6B=!j%tFi4=gl7n7st z^*VkpCA~-(u}eu(tn^vRkld0lsRs;n$I%&oD?j~-kxl}81(4B2a-sPapeK|#q+F>; zQUZB%AxSooQC`4zF1bV2;(81TApVf3BarbIq&`j#kac7dMsG->akV`@?}Klx#7Kn$ z`!XsOu`r+fMtmVpHn5)wX?aNldql%a?ck>&=xZ)nMK+ObkYP1^Hk7m_k?^`xDupcN zkY7!L5e-d&lGdaN#`h;2DTfW-!4knQ2>iBf?h#H0f{1k zopt0MuCs`Hn#w}kb)+wefbVkZXn82zL3Cb|Zc0z2uh3b6k=mgBC?IYe(DesCjR%sKVzj>yJrhYM_{s`x zpJ2okNeesfK~!pxyQ)zt#MEBIO%*~Bx8zA$A(n5FLZYSoA$1YtUkwBV6PJ`F#Up0k zp^v-LCD`zwbOe82O9hf1*60PC4g^{v2u*U)G6DYZAzhIRuOjCpA^I+nWw4wtseosb zAvcE{&;l*G!-F-5j#%LDpBTk~`01sD27~Zfv1Zk8IctLAB96F74md3GHE=r(i6yb5WP=^t=j@C z%^}TrVCy>hNhIP=MI(bnA+s~c%W**c1xT|V2$%?6d&5UPpz$Q!f0DdGpIWqSgv?h5 zqf};_!)RBZ2(Z~XMDki`lXMK$a!HNJJdB%8C`v~us50b=eQ4Q+gu~ZikYN@~qGw+UAG30Y+DpaK)L8=tNC zv0=W+gnY*#Qw!kY2cqLLB0XL5gGEjtKk9+<|IHoyfgxX#gFJo@C{9AI2mx~XAglC; zF13g!@=gvgn2gzjM;>g1^V6ZzHpKo$*n1cv(~FcKQ{F-RJ%IEKY&M@eiG^zt;wYI}&q9;5eEE|3=hON92mt8UTd{}D(j@8J6Ga$_{AhR=U97947nT}s` zQ8IpuQYfN%CUAWL+4dyv>W>!r(E2Qp@(y!sS0FHlgi@_>gi_gvyw1p*uMtaUV2vE) z?cXrobZFfbk>i5RUcow9i22SK{U-8T0q*~bPy1nmrTEzo1bss`Ek6_!;su1(!wN70 z@mP+$bOxDw68zT-eGW#?)8L``XgwJ-@es%}2tKaF*CJqYGLR4h+$RGe2c@l8wfzgp zQY8Y}nqcnjfnIu{%|M`G8tkwME4Xd2_f%YohDL?3Ts-VXq-bcl4OuP^SXLkgGhnZk z=s^c7J%Cp(BWCg>18g!8=l{ak{Sm`?(iLfyG+r75tDHhV(eV2PWS2tN|0_N%!knNZ z>9F!~X%CKLn76)3b}0nsEAdj9Q~Cl=CXBIFnk7v_KS$8Q1NnS9GT9Qy-3TkwvRX1qCULc8n`Bz~8F_ofCq+Z$Smgkv zOu0<)RxZgJ%2shs_AI-Hz0c~nC0q&D18w)>&JfvIt_pXUt<9z~cbWT4Dq~=~urt^> zY&W)onaVt)Il41-ganfJ@Nfd2HvT0M)Dg-})ugM@#nf6#M7*1Tfa$=?N2wDcWGaAw>p{Y<`XfAZY zr;#{@2)%`_LN{TsFk3hvd=_+KA9(naNJ)`WQ>nQWBN-*D_)WYa9u~KYTg5%%QSmhT z-y_Zu+lrLt@(v8?r^5)KFS1 z-WNQCjeKK1gm1~O=ZpCv!d<~Bc!*ZvqR>*f&R600xue_(uA8ohu0mG>_eOV;+m~;^ zNAbnLn5TQQ%fofqxzIV^dDh9fmblEW{_elr3)~^@6|Qs6YmWQ&Y+E-QYYVV#wso-A zbHq3UTt8jI+&kQ>+|AsdU87wpSE{qb+1&NiHQU{k7x)W8eQ`Zv<)}Ch+RDXjAw_V( z8oOb~d5EsxuqJ+pteS=Oe?BzTV68I~mQc|n>C3c*uEq3crZJ0|70gOz4YP$g!aQJd z7+69RmIaaJ4vzjb(SSy;u=_)@5$cwdtdH4qAlFHA+emM~h|fpPz7z?+M#%cGq%$ zfjweeMa~<}jn2u={?6Z>b)DYMe8(9_cgGKVcl&=foo%``$uh)JV%}+PZO*QkQ}NTJ zGs(+emJTR+UDTlPdj80~PPq$mO0th-ugYGY{a5z(?8Di2v-#|`IdgLJ@@xgCi_6RI zn^WyI`6*-;Yfv;(Cuq$c`#e*;5)6mEn;I`0-9}#@tMPB+Pwyd*T~sdR6Xj-QU!{lgg<^rCfr3$3t&T}zzlu*(B`UHb)F16!Q+ zkaf59g*C?Z*0#>x*&=^2KCimHn*aL5+k_9^U%JOnN$!>Pw(w}hHdjCT zoN|CZ+D9Ik9rB{e{qX#V8If}%y(7m*EC}yXH9pJ`Y71Hru*Y|(_YZw7?Q*4^dqRuS z2cZey+Wj3UuIIk&j^Y2|2=MxAkt(Z?srXRPl` z-|s%ljPnc`db`%Cs;+p-l`wDULG%{7D>IpW%2kn%QA|_@sAj6BsQgvil(~u)iu3Z0 z@?d#A`8?#~I*QSXuE?ezWWBjR7;kE~sNv5zH`zZ~S6dF7b>_PjODY;xyff7{4JhwW zrY^l++@mO`U}b(--jkfc*_oLGGp?msQi77JC3z)$j~nyt=I2+jN8Sy59sHvCQ}tu# z!Ci3`L^}{{euMBR_DR+$}gJfO_ymZ5>?Dv$lTe!BU($GT$O2VEOoYwZtpZPj!|tZX5- zmu=6kXNPj+a;4&tyq7#&9w1l9pJ6tV z*uhL)>X`V&ZFRJ&pKvYfu(m*01bz8CyQQ{NM7A<*DUw%l|5um$xblDm_*l zTX-vfVQ!Ob-^@Dc>r-_pdw*sop8T=*``@2eyg%@=)8nYS)Q$hH%CDZjR(dDvS@`F& zw5FzK^zVkPRc_U)-tb|QTTQMt+*Rj~=z#DO!H4~a`=k} zq{x=259+TQn+BW@z8K1dT?}~{c))j$S3|8`KAia|9TjLnCLSOg*p*6uk2LSW0fx~3 zs+uCMMe-41RW@u^&~?9h#x`C)`uDn?x*57c-As?`9*d9xs%U-HHxw;p4yG2ZqaKkC z)Gm50n=MrW#2ibV07n4O#qHj_sNmZ$~ zkm4HVNVi@zJ4~hJ$I3aA#njNe$g<2ztSMHdb)Wf`>1f%mlJ`YZ3)d7d1#j|?=J(CN zlD9k8l>H{Nc6zfEWzv7~t-f9Tr2Nq1&DIz8C!ZcJxk^%pn2-TX(h!HrAnPN=abyl(Jo-zx@5zsDokBhsUm#|>S7?Hg5vER%|N z*S3x+C3$~mu1;;8?ELvSWopK?+@O+BON4tr#maT+&Dxc^P~8*FH`P}~U3n*2f7wL& zbY(3~Pmft%^^A>tTlfY0efL@H{k!LU?PTQw&PFwmrVHQrg~CW_Dm_=$NIg=&%eWxm zT8N{HAtF0sTEv^GHNujDYWPnz7J8=Yrf80;W-6a6W+=KSA{6QJaq^3@N8Ax-FH**<19V3H0nasFx4fdgvh{-Qpr%Y2Bj3!{qg#+$;sN0+-ZA&&Ela2`_&tx$mmL1LdaGSW6+y_QO z34EO0YDz5%%k7m>m@+8&bMnZvpIN4YC{vzeA2})iTkG_^>;1_%#h7L|;A!-Dp;4-% zRqa$=)IQojJl=X*3~P<`eBK#bcyITt(4J7*+3tknS32}IhviS}ANCyAJLw&_UbEXU zFW_2OQsnOF6E%x#F0Zkr+NAJhA+7v_y;pi%S7%|R++G$V`$yJ5{y=V%-vd*T*rfyAnoE(tc`DbC`l^>(OJ3k$N_xy$Xk?!8NTS2#W-#PPW#+y@d zXL6R?UCPga4{M%n`m)`Lj?Fve{ywbLriQC(^bITZ@$jgjoXDMGRx`7ZZ%buu<-KG{ z%r|MQE6KLxksjFih(nBG#>SiH1PVty4mW#6mPll%sk316^pgS zeF7tN<@>n}uC0zFTYzGD2u5+4I9uE- zY;q5C1X}cE{}%MjKAPsATq~(oQv2i?=}U5DrCV&%BwBIKBgt4lU}ezjpmu?M{FZwU z)z8y(Ro0UakX@GrDO#y6Y23QU`jejXJcIR@wS!cnWzn=+oaFk){=+)l+Qzohq2e!- z+Oh_k(O!f7t_KHH?GP!e)~T8?>Oi<(SZ?4L-!iWh-Awf-JY#yvUU61#yeth!ZzV64 zb(9U}erM}4UFiqZ87h))!<4aM@=MC`8ZVDUo}&y0ylLY`?|KHkXE&XX`n>!%){|;0 z=D9sxcN`z=jqFLb0Y6Uwpq}D=*11|v>ebjxh>tgd(&BUyH>j$yw3Yi%`+~K#0f)qUw$7y z7*AaP3A^~=E`vRW;|u)hepRM-7U&9o8dgneTsIU3LGcV&w{1Ypw_9=0urVk*sK@ zWR&$4$+DWYn)rfH{`RB-LC< zRAGY9pZ9Y;vdyemRMI*>ChJaW{h#p(7k+I0Q9HpW@m=DV#E%L4d zG*2|=S-kDtoetMgx5bs_SZWP1wJlzhH$Lk~`u?=j>8V)}1>xl*9Q7!Z(&l-_Z%^>T zu+~+$FyG)zzXHQOU6S%4cc12{Q)C6zmwCZWR(w|-)J)gMdXHa9amj z`dLD4_nnfskJD>YyvGOmhEJ_7*4$LvRck^G@2E*(h5pqIH#A=I3-k+Vu6RL=A;;;x z+&)DkwNWc*6STKAA63&7R_-m+k-kdRrDK_ivX{!gwSzq$c=z}H;8*Oo&-bTyn!a2; zL-vl$b;sMpA|nW`|WYA zx?%_FF4G!Mns?ZpbVo_%_OZPxpIp>0_g#i6wfWESiE9$3B%~#5O$XIR`=WDeM7I(<|tRm-FSu`!_l%bS+4x7f>M4^*yO8ZD_LK9 zp_I(8ab0k1wU4kjb2M;u6oyi5WH;55JUQQ5L0iI-!;2$NM#-Y;MU1HOEjZgh#~9(2 zs%xd`qcSRIDw^OqrYn9b|Q39-b+8BCot<-rR;z?Qu z=>oND)a#X9<>l;QdOq1BdI}bI8+X1d*+pDU-Q(SJ-F@6n*BsXuXB|90j&{s+WILWY zCD&R$MvRlXQR8WvVVFU*ofL>Ic$sseb%SYp$)y5S?#E33bUtN%^6a0llbR*1NbHj^ zJ^s=+#pe_6zq~R$Q$Lz<-*m6m!_Chcy;uC$lEc{M$zS<>t-htPZ@c79d%E`RGQa)l zmN)BfuND#1+4F)NyTVRlHJitnlgx3JSZfcP%X-*Sv*Ky#`NE#Lbu*JvKP4|oj!G@c zxSSVO_S()-F{(XYC;T%*G*$KC`l`c2Cj{Q``Q+I^+gaIHHkUoiyl0NFiFgi-P#jeB zQiRGm&PcBiH@ddk92E`9PnDi6T~HoldE_i6{gu5A#F#CVYE-6`#jX!A{ds@u%n#ABkG=J5RZHI{vmQD{7R67KZ1}&ipOyVX`x+ zB5_mVhQwouD-z=qCj9V=vwms$aqzo@S7TnBcwYDAqPI6be@dE>XSS~7e2tgF+t*b! zAJni6?+b_VrB z>WAIlC)gcb#B9J0Wd>_u`qSa$kifYwJ903m>1|`|F6TSp5730hGvx`h&f7n+L4#ah_su8Vhk(PWC`BS!J3otJDQ%&BEVi=FxD zIkmFP=^fG{Q@5qeO}UfOAoW_RkeZO{k-8*VpOhJ2<6Fm1*Wb(E{(OD^jqisVUu{WE zawnU=Qh)2ugw(4!tkLS0o!V|`yR6mPCN1lXi~JDKNAicg%aU|F@u_AvHo~1ugPF zU~KGpMKfHnft^alNU6eNAy06L^N0t%l$pccVXL!G=p#fX4sy$#TkXT_j~%)0H>A4! zux_8v+>p(Yood#tP=*KKpx7j}sW(nGxC_?xtl ze1%r7pSIfOX=UGvHs{~U8J+b{M%VP&Y3|gosVS)>H7HG!c0M&OWp?tSB-f9SxVm3= zeR>>QKX%l|(_fnWFr+aB|5#!um2OzTu*ktNpBheU8q$nwvar6brfi+LRKGE` zh1HIZ)<4X$N@vG%pcDbKEkrC4L$^j>Zl<~d4t zL$yT~MZXlzIkmPhGh=#NHmA%|R?ozl+gWeeV_d8FEn*Wg4;kz+olhszSLj)E4LXrp zNZIjTX`mD+{>@);ZE%F!wwY7P14{=L9nN>R;+x(6H+VK0XA6-&<=8Pz_x+cjB4gZEdi9S&8YU77ZA2i8p zaH00m$T>l&UR#wxl;B)yxmSLnG^F%dX~S}5MS{5_GKIm`%^GhmHx-qIm)eSN6(1}4 zTGj=-x;=zuOcQ0I?!IA@uQs4sU~)h=|Fb?V41GP?s(Z^{GT+Eyv7zt}f0Z94%op!V z4q~M?(7S0b+KYN5^%aAJ8T>&$6Yq^Wu)UOBJmQRtgKk!(tC!WR8Z#;8POZApz7gMp zGksor$dm@AiNL1>{R(_Wfk>D^&PcbZBxEcyp}hRx0LhpS;}SV zV(onWTdzIdJF&Ms!MloAyzaJ2E2~D0;E8>JWtS8XRO+q9;v7eB~r|>m|>q2kwtH?=@#T20juW{9|zcMSzs}y(0Kb1Wr<7Mje zhAB({wTIFXW@pr0+lU@dM(*<1-U}qU+JE_Y_CjMwHJi-d4D>Ft4abX#-QB<$!ItqmGkv zn(WawxA}#spzKZQf2GM~qblmzs=9NDzr3T??)A{ObzrmL9l_m$_V`~j(w=4NJXueA zp?K7t;$!`|t5C!dv=jYDMN_r?2Ks3^7@tMey@pL{nNp;?%ztJ5~Cu~*3 zu4*CCeD&(pUWR*z&i3zV2+`#*Bkw8U4+_Sew5aW@150bQ_XKp{Y-SlRdcva z?+oWP(i*BCGZb$yv}`Fom3kpH#J)on{--;b|IEh_Rdv-;=E&g)vRuP~_SWT8*N?A+wcy{Vd{+i^9%T0Z^r zX~CCIasMXY%{g2CnV+t_Vtf`>5WT(bfQH6Kh4rIidR0?|Dt+YI)9f_ij{UZIs_9aB z9n-doKP>fa=j@9eOC6`|I$Mc(tEorX`jTCUg`mqj4wN`(Q!Bf&1-C0FP*Y%X_1wpDhUYsLsokU_um;Zv#KkCj~o-(HvD;LlR%eozTTj&Ckv;mO1<&stBG(`Oe0H~=CY3p zmujbGnf8Hpoc5UJr24$7NV!Y-P&rd|0Q*T-bv5)IJ>Pro^jxbyuA?=d6~A%&DPPgy zn&CKV+ix9dO|`mg8ytgOjd`;$R+@tP2bwyH_tlIPERGW-UM{Q?W{9T{y|rnM>BPK- zcN$48`OA1pN-D2X^0T0EUgsP`_PVU4S)a0cXUAu^$(fV$XAYIqC%aD;l{q1ObL!IM zK}qcsmc@6DvwZ&?7nu-|oSD(Hpms$dzf)$>9}LK^+An%x?W%Qp#ni6p8?`ai;MYZe zSCL4``6c#lmPr+tO^K$X75|x^ShnJ6{HaxI%{MQv(3pOdMU*uvYgXR1Vv=>Sv$MD! zb3(qhyVqT##W%%ohTm%+KktkBB#m1!mK#ZjkjHpWxkp?lC6Lbac4jX7j$OeXVt%Lp zBlV>q@rf{2Y(SbZf5<0mD6gBoy5K!kvLmiXB}Da$>{68qN%H&Ma7nvL;m2MhbHqP| ziNZ)xPD1HF*mbgDihIhPs!Y`rRbSOBys?T@j#t)HEl@YmHuPxc>17z@UF^Nq+rzL` zAFQoV3}6pQ!S332ou$HLF84Gws%UIUvL!ohe6}=!?#r&@D!3EeRrYsg7nLaW5W|F7 zd=LH{KUU}=Mxw^xxRfe(6n?sH+clQJ@;b#k@>l0H%zBy8B4cC5_RR2XZLW8|RItD3 zdT~_AkK)@!uL}I~zGl@+Uy~e}xH8`L-Squ({IDcP+K9Zy2Y;#?A-|Udh5f#;( z)vs3@88Irfng3$1E9#+KmbA)g0CbI9CXvVJsC=*T&?IT0|iG)L%bCc(1_A30x{8)%k z7`(CrNELh3y6An;eX2=SeS#x=Uh1~WWz+%pcDusrG&izLw|21ian^RP;k{8$vC+NV zX|zwa6qy`l8Kt?U(dCya2H5gl-eduHQPtPOXt-@O`d0T<`4kw`o=>%-RL$hu*}e2+ z)P{|vdeOTW6I)BBkx!8~k%=MWeSuuDMoslcczmb1G-<~%zSI8pi7gI(it^TnkF7JD3Tw21Xlr!03 zCGTzCR6lj1HyhkFynD5z>dtCe5q#)t{}iuybsKK8q;luk!)=GK7OHLk$5HCcb#=fK ze5_OD_-37Eu3;KcHlVb3>D;ndQzz>+=L<2Movdu4YvAQ;eCXrj+sLQ0_fF3-Ixn?J z-ihnTXz3$V9`%SWWg2k&T9xCy+DZ41p7l3PYvFw5RN%>WasI-W~jz z;60(w!ls9v3fUF7$~V?4O&g*tWH;k2j9vI592Xmtp7e3HOy*SVR2^1(YIyZR^)=N` zWp(8{MV4ZN@|J3drlYQd-rzOe;O|{vc;$6f|3q6|Rb8g0!^DfO0=r;!SmG>8t&|&58s+#KVn%&xbUAR8f^N!~y&t9H&^b2&&HT#tJWuF*^S|v`w-rE;c z5Da!cb1rZVc6a7$3FX3HVxbr)RgpO9JL+dfiw#6iQ9$M~2?fG8;grx{i032u7H(hH zeMc?(9P3f@LsNR0U+IEkRZ&WT1#cJ4d7tyr^Njgp^B?C27ECX=Qt+c7qu^t~;er8p z19>}tL;mi3SN_j}enksQ`j=;$y&QM>$JXz9^FcS)0=%23#3t++4D3p$ieL-o@*TFv}qp0MY+jk4Zyt9-uVo5EY! zQMp+8Oj%F$U3EqMMB~u5K$XWZ&tgx}bE)TO{e9gDO?%Zx`2ubhlZ!gqqo_>(Km{|8 z*p0HG3J=u|b*$#TcChZ8?zV2TuA%O+wu$zP#$U5Ttyk|+1*rBaDP=Fk0{J{y7tX<7tJZ^R^(musqnAD4ut`Q zUWH8xw-kC5-6>jLJfNgusc#uw&X*f2Mw!bjUu;_EG51n&J#~=XBCoCLtBKbh)1A~6 zYS(G@sd_3B@RlfwYA)Ro&huLSi#r81Pk&(V>H&WpJ6Co1Soa)MFEw&6!Fi1^P|T4| zQ_GlM*sGtV*sUC_x~00N8lbwY{HjQlC&~)BU~UC#WHV8#MzL*CZz@owMN8IgT9rLcC30V3#>uj;`1(JR>ZW zno@6QPnPBOaD$!rs1%n`ZK$(UL;4Fni78~-qI#-XeG^hO_JKE?yI_>Y@oC%%!)|m3T26MDEyU$ zwdDo8BR;RRE1D{n!*2s+B34hII1?8mTPph^i;~Zk-w`>xgZNRKDJRu~o=cCS)$}~- zEV&_F5ibkRdC@%ql$KYnE3T`qN3K{`yz8s$vFng)yerK0);Y#$ax8R6_O13h_99e7 zy|WeCLhVEC>+O5&^X=jGqc(@NgY}f9k;Ti>!%|>LwyI#``Oe|41lKoL7gr}|v33nCH4?;^>a_F;r#$jSAq!s2P4r#nL<~3);)V<@e;QLZN7dHr;_)f=a+P%sW(mj-&RVBGf1?6P4mk>>TzG!jWUn^S${@_ZWAg zt0(N-*IDW~j`st@9OE2Y9r2FVm@9_6SobA&H$IlHj{45Ff|Fl~JLx;{DEI^!JM z9FrY?;27l?;Are1_S^Q+cCG!D?VxS1?WHZse%HRpG0fS=)x-T8A0ZS9TSc8T1$$9+LWbRpfFxrLSf81@kR5Y>&3*^77!xrSZFZeY)_39KJCn!C!0TnE`2)ZQlGO^p*r znJg7~=PIgcSHVYPWg}%HWTRxGWq-;B%i7B#Wlrunw~lMivD|Cqs*!AcR>7t*H<%wFq8Y`X;{7vj#Jw)xCOlT~O7FG*eg_Wp*^%U;%gLtR=A~Ng@_a^rT z)Y+Zn!-PGUnH!_3wu9&`K1aQ620sq9maE(~-KDNCt~i(5)y{nq`xz%Nw_gza#7W|Q zRFWP*C24!nAQlUWs3mm@)iKW>5kHG%SmEY~55%=%N4$T?7QW)DOzei5Ts>u9)cO%j!L%VVAKJRM(uhU=}f)C8b5*V4x)8}Y8Gn%=?q%kHYgSpC# zXEe-3x*z&Vq+U=TsA4LV9!Bq{W9f35r%Pb}l|c0qsz2CX8&GLZz{rRLid?8mZ;pI3 z6mm8ISM;m2Uz#AbL-lbT>37t}Zv)dS4%kZsduk0(RxbW44n?)IOUMU01tA#LoelfE z77MT==Z6~b2q{R?pmI4;ybD_{6DNuz#XrOum^*G^^%Q~X*8|{&SS1}eEjm2Qy^(fE zeI+j`0dG=wpwjuQm?VZtbHQ#1Mh*Q&NvF>e3sTYpA4?aIdEX!qkU~^G_?(L#5L+PwUPQ0?Tx4icYqrg0;cE$Y7=#e zx`BG)>xi@?@Zc_L59+5*p!Es-w*pzF6*ycx*a@k?Kq2nr@U+K*_xKLXj?v(CIuXfF zz_NG`{42rc>58iBvETr8#x(`r+`q*W^?C41uHX&KJ7}8@Z=^!!H{caq!Ig`6vsB4N zl7Wrz8#orDF@N-hhyB1ggd{e?WZ3H+Pcu`}ZaVIq0e@F=l{(?BS%{Sv;7TdL>7=P7yk+SFR^wf1HCQgAVBh12VlVJl z#$ueQ=)Ezj{B1x}0*+Kjm50px6(~CiHqLsmTFwGxdi1`7yh3KPgRzzXF6bWUI1OX1 z0}JRCs_Naaq7@vsTj2jqf)!dLqqm0!W6`FP?L8A#8w=0R1CQW3{3-)$s1@}a)dW~_ z!Y`L_ehJ#ng#9XQJR5BXL8DgCy%Nv!kw+^zeKw3#0^ZSa=-m_ypmapT3)rzt@&`X* z6~@m(Yy|+Ro{;Awn0PZ`_iEtL1|zc#{>6FCfS=`v#uP9am%wHLV1t!`-$x-A)xvnK z!P$ubzsmLNtQ-+C6#RiZV8LYoW0xUaWAHui!#<0o`QSz#fwg`BwRXvgj8+boj~Ve3 z0PhTgm3AOb4&(PS;I5KoRms%s0J~5A#b??Md#!_ZWAIGh0vPcJ(~N*cT7fKPl_dB$ z0yY>7E!KkBwG(nIhu4N6GTR}7I-{RT=K5M-w36pG^%vLccUY_ou1o}f=`V0MHsHz> z^wAMMX%5f#$A7Eg!K1*&7GS3TQ~*%0`=G5YTU`_F_lv!GEO%y&=l%@32L5m<-pf_;Ku(~Fqbo$z%& zuyh;`AUt;fRdf?yb?9@2l34mi;!7QA#+tozVLr%NH7{UTZI|v9&Gf# z+}Ix9%uxmV+_B(ZEd!b>`Jx*z(kJBhO8#&vJh2qkWl20Vz7Ct@V-+_D>;5;tEanZ* zaClc;i0?MY#TkO{=?FvC4adypfE_L(H;hMK?*cDX&eijPhB?r*B{*N{;Op*$oGY*@ zyNh0)jid;Ey^DSxqNNp# z$;$6-I0av1gMVd1#HC=~xC~URMTAza(566!(ZIlO;M41|GRXQhBV}W4>W54^1hTFD zmCKgHQlpS-dj85dm0Z$Fq%6es%Js}3Xw(m_$Dq%p$a1T3Wh``z#ww}^S-NtCnDJ}9 z+Zwtq{DrqIz}rmx*9#f4J>(pWJ{JScTkta<(bpI=c^)FFlEwTSdBX#(mO}RUU#k-b zy#59FKL+HkgAXf@<-pfy%q-QhmM%udNy77*3YmWj^22Ma05cHpCm?SPQUccSDd{x& zbxLi4%S3R|dadst6{XmG&R*AcCiQN0*rU&NJc z__-L-cpZ`q_%*s2bC^?7W35#mo^1~N207-KVjhS%eEn8dHqL9`4_M^n&L`2GKX z$D^@m5?X=|p$|xkyWmauDK3YjSUC1J-iQa|1~?q6;S-K);^weNA3OjLg6$*mRJg_w zICnXg6V-@DL=&P85lZ-QIzEjT<6gKHmf~_a?=5r+&i@ZOiyom|#NcGy8^*Z`ufg-+ zT(z+P`y4|n(JV9vZ9-R20SbrlZ^8Fr3{LFDHk^Z>;A3#acsOf&+!D8dPcz&QSI1iH zM4!ec;x8eJ@Ozl?2V4M=lM+(G4gcQ`qgCPG=oQ3@MStM6_$$^D^@)0fns|@r!u8&v z?J(LUkfkq329fE5`$4wV_&a2778(H<*$!DUK)$x&%lI1JhbKUOE$H@tkzbDvqbH~s zavOoG;TpIKj>U2CeQP`%vV0!D!})-cLO{k%IC3eTghxSqX9L~pc0u0q4 z;t3t$!JqI!I5HL&0U9==rD#1m2gr$mqYmS@fQIjY?IpM|wn2PnqAsWrYKYpwDA&UN zIS|dJFuGlUfnV4JILOAgAd2lUgFnIk$Iwkwit50)vT=1{C^3(iMf4%65O&D=X+YTx zIKP@`MU48dsuGAFfYKny=t?vijYAs%VFX}kES>{DO|c)aHwGml31Uzj8U&f)Q4hQq zMp+1RehGgK!I2R8Q)mGih&rJTs3+9iI&=|bA`zf*B*fqnU?LkA!4W?p!&mVhyaWGw=c!>3I0A8lWc~# za~yIWfQncMkuSmsGlUD!dI-*+02sUjd(4ONj6fsN1T+^=brQV+gw%rboPzP|i9d+0 zL^q;25eLZ4hgm&=vE~AyJsB-#@RL^)JfD_ny1!8tmk-hiRUNDuM91+{A=!U+-a z3s_Z^00oOMn_Ge&5*+>q!n~%>z4dg*gzXJ{qKx_uW zD3f3mL0Ab)=mxZYhuAzs4`4K30TBT>P6t<}0M$QW4%eVU@1jr01iTmxn2yH^T!Eef z($_=&4xzV53~aa_{|k(H75Jbr#9$8~pe1B^A$(gKkj~;3#28`%(F5XS2c)0DCxBIR z0bebMVZ>xWUt?hN7r?Vaf!EqY1eU=*A8-k9c0PUud#{4%3*LRzw3A>aZBQpaNdO)~gVam*_Y0qacV;Dlq3zIL}mw%vwO@MHtO5 zY{djHKo}7NY1{Ybd>c)0d{dCqvGXAiJSB3fQ+P#IPTX zY#8Jx4QjLroHq&PRu2&00k-sm?frqfI{+KigKuiV_f25G9Yt>dJ*W+z)-}E7Ahv?Sgsd z!e~DO;Aab zS_6G~I&^`BXa$^SBQWx2=+hhE?=`@R%V9;a9D46Y^f&b115g7SVK&2n3)-L_aKukE z2)gG}Vk6m_`b@>sHR#_|duj$bpO}j`p$|fu5F*40Lxk&s3iW{_r=n)aEbJ0G3X!mV zxbRJwg_5Bj4iPoUP2^qj4*55kMq=U;Fmw!22E4WwVi^v(JO;6A1}q$d{(!$O0Z;b> z7O>)2sJ3=cX)(ZIxe&>lFxPjms;C0Bd5$m>31nxoFPTc}$Y;c0h|46XtOLN-P2g-p z&`w~3AYi5mP&)$wX)Lh9D)_b?N`>*xLc7p)sJC~(B*&ps^+%0S4O9zqITs=?ppL*0 zx1sN)19tv`%!J_rsLewVsnftaCSb}Gh<;N*iUYPUfS5%fElNOrVKx|zf|?f-bz#jB zLsSAA^alhK0$zSVRj1%tfYTzVEHU)>FVMS|LKo->oHzs48xH`JcIbWIVf!SgGaFp( zDqJB0x?^|vJ`<2rANac?(Tu1LJy(D@6$8q%fob0ZnvX+N$3oR5L!|~mtyY0v)e+)3 z0a%>bymc2EP!u(clSJppRx31m(My*-rRfVbAcOzkj^ zRj~4$4mi1vN{|t%wlf@86IeMN(6$cHv>PI-fsXJ9)^M$0UDF&^WhY_PbRX)&E4&aM z2)~6YfIbHr2q-Rvl}-UVfQ&~H^)TX5?BeI1*U64Y$VG>}9-Li@Gk{UQL8qt# zb2|W|`wX9_z@>X3%PU|-u?;%i6^Py=d>2+pM`8Y(pl-JVcb^B;-GOa;@O0osF|0%m z0(SZWidvxN&@);B+Uf#!b%;g*ffFPs3ceZj-^%AHbfJ&XkqFUNjMMU;~bN3nNUxF94VA0M|odMIr_S zW#Vc?Z(<;CIDl~Axd@Nn~%6Yv7c}eP05Mma&j3tiR?&5kS5|Tu>m5Q0)6BE zy!Qq6`vRyb|8KP!2F%)l7*Fhk*eS>!MCt3HhiCCU7h& z;J0$K1K<6>{Rbh~pN04M7%8P+(0A!dY7u!7-x37wVW4WDb0Csi#8*cJcs#idxT`U6 zS4(OK8A2jr5;>7F)1O5-k{_}KiXBR%yr#UVNS1ezb{3CizEk(eL^6ilK(?ep=}LMV zV`lu!L#7+^n(jk~(sk*}^e!et)K^j|oghD^n6A93oS@vQXfEF?eJ3VFqi7{1CkFtt zuZ8HWL#Kr4yfx6$|Cd+KGM>NP-`pQPD`hB zC2xxN6yGoITGFHROWE6s6fpdTC`wK}C7+XRsR1-Cijyps zy;HnU)zOq|teO#;Me5C}LgjO1f7L1VR_zac&7j61H$!KH4GP;3T03NKkj_}5@1*ag z7xYz)JA))4?LtGsMudfgbqtk-tPRRHw9&uRuGB15-&fUBeNnDf)=}P7NED>}kTg^L zlvzqOCF-L6{3&ia=i{mfchGnum;6d;>Gf0(@-)sDhVaw4&hTAdL4$7-S)_rgPRg;F zOY(Ja-?w`#waw#AV@!8UzfHYOPb#EkgNjn}+GY>?`Df;ZpD%LO6)iOXVE2*#Dry*8 zhHs4Gqe>#uLuTvODbI>Kkq7w$KBMQUqpx*e<@{2naN+O7Uvqx^`?cB^XS(t0*zYGZ zS7x8gdt9`$%vt%yqP72YG;(!vCwpkNgst#K`?m&~@S!M%XiD{A28bI-b7b8V>y*1y zYt$n&4Ygw3SKTgsTf4s>-OZ_x`bv>{1=yduH z`c?WX`rG=y^hx>?I)!edHdQ-BTcXX<#TqsmGlE_R$A`QKJ{I)eFj@CNEhxsxq9yf3 zhv-(6mpG1VqAh%Opt(QS>tc_x0hae}^{?fw35D26exS#So{1|YzoolnNamA`kcCP$ z;x2SKj^=CoM!4;Enf0NGseDylRMxiaSLv-%Z|RG&)QVN68P;@1TThyAMPME$;#&Kc zvE5w#?5(WJEUDJf_Cc`mWde+yr!`-|;K#qFY3xv#R5vh#DArz!= zUe>;^iSM7kn)G_Zr|mf(?L%eL5>7Nb*nR!L!-E#}tkWvK+7;P;%d8)=7ruLQ?)7@w z_2aDUr{%|-BfYcP#rF8J2RYxqUHim->iuJ0L9}z2$P;?G=7YxGHn@Gm_WN6JYqBpT zq^7Y-d~EONPSM?BR>q3sVq^P9tqJ|EdnTjFslI%B6;no8-?D2J=dHIq2J~B;tZ5uP zE8=kUub90tTcWo{jg2}VeK;<>+J;(u-2n|3|FNLa>y*)nnNi8w4`fTXw>-F@#qZg_ z>l92b`(=$~HT+Lpll+4?E6fdC^A2R=z5N3pu|@n=-6eQfWPGeBt{~bMR<7SE_mE6r zqf27DY93|2ZV}s0Ig8!(*`{oPyRVbCPBgVCk1yR)@}@MqVzsrEdr&|{>}L8&oRY!f zED8&Ie9K&0Y-22gEaPqQuFu}(dqkaTyAq4# zpr<3(0y@t!?g+cxKDIKU-A+k10OX4Dlrk`$-#P6|a;06xR~vQUeJj1oNK)DbNe%2Z{snoHY;;*yS6= zUU5CP7h4vZK37z&I9O5Bbl&pG-oQQG8yd*vw)55bXMr=m+UzaYZU=1-vfZ{`x8AkR zvhK8)O>--Hmwqg4mlvIL=~vj#L77RJp_yAVyx;S_C_n!5O7pnI?M_!0T#%mUE}Cwb zpDy~gvU~ylD>%Q_!xlfgOz$SB{Y6z%IZK`<>mw_d z*HKFi;;^+bcdLG>sjtn}Zj-D?d>pTi_@-y&9hl*G8~>fl;2C_5)H0_2D&qu zh~EoWga|C9V#KfHO*NPG^NcaZjXJY3UF^lp{nK3yZFcj&=GNAD$36EL-!|^Mz`z~K z9MoE<i#Grl}%G)=;`a@SnYddVgeM#G-I6{8i-s7*jk|Eu_Z$8YilajW3M&+fY}2iIDheINq6un4IQzjyvA@ zc)KJ>(=O<67$5OhWO~Hn@IGOhu%z(J$imo{Rd3XMTANOJQTKTA$?C0Rx&&p&wWP$q z$t7~kc8qn0`41rv-A9_F=%W0o=qyi_&J!;aJr?zogvfWP8t8f&`vqqNp9p%d->+UR z3u1Cm_rMc&h`Wl*Z%lVN1SRglWKhQDok3Y}X*!R`@%R9-p!{448CLF-0 z$!hd#x*L6ne2*eH8~e%`WgB76sN7Y#*wn%@*|x<|-=%hQE{SWrW14NDCDZhvvO#5B zWrxb1mG+9#a(&t2;w}YGe%Hu)mT~i&;>*QPQ$Iw%JMo%&Ip^86f3o`d`M373 zwezwpT69`HAiAPf|3;qX>sqyHd9O)!y|XoA1Iu z9i|+tIj##a+%jx7+|UowUDo8NWXf*xvr@fersxd4kAx?-{6GGStiyHHQQf}QmT#-$ z=<4!%ihVD*G}M=PL~fxnsh8ApDuH@I4kruXZ9p_WE?nXI_;0de_iD#jTc*WoK5Z^G zFSazcR$8anF4#`l#@j@;?N*(2mF2tHY`ReyU(u?pc1e|@F$Kx_=kxON&g7pfm{K^l zFtngYRyc^Y)CXd^T)de=jz<9u{rilh*Fa;zJM?JMV{-9!?xqr z-PSbQCHp=nZxm-@B5x_AWnl0WTB^}Kd=blkTy4yPl{RpegHYG7USE+FH(3CEC{*aCMGBbezT ztvFu1UDTIZK&gpFf-#WJZg(xQ-?EH09j(|{yI7Uy)i5zx2&poT0A{ZmZkWSpZ@J5{bBt3pYNkS;!gv< zM13EdIXt_4ez(%?7K$B-o69)8BVu-fr$%_v(Pc7p|)B zA9uK8uO+EcQ?{n~S7EQh=%QXF1?5LAU0fUeB+*~oR5@99KS&ogHsVQSlPG(nGV*4) zA*^G_grHT1-MU?x$ttO0sC0^`6BUIM`TPE=zU$sYJ~r?#+DCVj4b-#^+8Ul6ZH~K; zkW}SN!o>I&vErD~QEbGm@YP{8LZ=5O8e8dZsIJInh`N&}g*O50o8mM0zXhfVJBbQ9 zLQ*6%D)*}vs=ugTsn@Dg)cLBts!pmO%21_M-c05aComRbgU~pT>aBDSb=`29oTaYW zp8nq6{`$~+>Y#SGE}O#wjCVVp75fs|HSTC7_%oEKs zEhW}D_6)~Q=SbIFS6$ar=KyCFXB+2r=LAnnHCZeP}HAj9uoaXWm-YviN=BmZBY{ z7fhp_Apse+RF%ta=Zw=oP_A{g+sJ_t%cNE50 z_AVqT=%((W>Y~gn`b|9}9>Md%kHjKsC9_%FQ957dmfefEA(7(ig&3DSXi0$Nw zaU*A*um?q@w6g;XejC`6GP6aNo_lvs^Eo6^=!Y^Nu6V$!@8)UmzC6Qfl!j*(D{TIjY^FtI!qb zPU!mU!gNmUFYOKOXzg>&eRW&aL`6SY2gzE|2quClVLpf-$QG%t=o~@mVHJ^%=;txR zVoXt2BP3zng3}G3bi=fZG)R3--CKP@wL{6vIq4(udgdfGn5-ZslSNcrQK+R;}72C`6)m`X5lfbp3=>7n_{r?rJ||4P~wH$ZAGWJmi}elX)N}L*)Hrxb`2|KIrnf^FNelf zY_4XiS{YTDWa?%~vzNF|d*iqY;XJNKEWn2aQ{aJjj(e)3+)7x^nyyxUuDDjNEW1{` zyCCcL`(IyvjQ#5ST=1#q=hQDNzhC;<{dZ9TSvt5P!?elr$ok8c=GfxOVh3?{B2D5| z^)fyUyAky==3&gKsE1*5jYHIGX*5L$q`xJ5%8gteS6%lYcSHASsQkYi3+?H)3Y)?) z++|`na%SR^xUX`GZd=gYP%^wl_`tAZA+v(28Kk-{8bTeVTB@`w+A7lIGTBmCv86E$ z=?_$A`Zd#1vO?Zb-AHc=QiTnQxD-i6Er?8wxDe(E85XPyiZ!k_#28-dyXjZyx@!MX zuU1CL_e&azYSZ^gnv5hF>L~qGlqlUMzocxVj@H!DOi_!eC6=WA82yYO6aBTv5|61P*-!K0~PJ#{*8d@f5Bi<A2=8FF z8+)E@?fvd;|;5ve&5L5 zpZ6?(Tj8*hMHLd8$HNPU#f>zYkVR4Dadeei33cLfBKwAP(DhZw#P`Vcs6Ss8$nZb) z_3;k(YkqlOm`f))ELjDYm3jHI*7PQYe%Wzzu zqL=9f-49)FT}SP1bxY-FSvzq;8=PwZmC3T#& z{xZKdEj8Iq9&;b-8=KJ~axQnSa7H_qJHFXF*jby&X0W%jr`kW*j#>Ab|EYLU(yCxs z&dN;fx2c~CKOBGm_MChPp5U&rTbvzi+2$suj+Mm~-ij%e%}f)_q&3q1(V4);1@53% zv{5!h-P3R~#1Jtp>Ui|6=nqkmk*2UEAS84* z>~CyiY@Ka$Z9i-s><8>e?X~Ptws97fsaCnUcx^#SZnf;)KTl>%`r-TD zt8&j5E-kAtr#t2TG5Dltv*NdQOpq&ddc^xkMO5p^HQ`*yTVt?Jq`D{V&+zyym+Kwu z9_$EMyIO{r>zUu1BdmJ+e&=parEei$1rR?_a!!6m)j~T+&l*%gCxe~`Eey&qRv4b> z$LR_+P1UoN`{j3}72=K}H?60iPf)yM*lf0^2q%;&=h8huQZqcT~?>GxcFsJ zeqsH>+XX`lLJEH8-^jn1UzY!OL2e;mtShf&ZsSPw9uxj#p2_!U#|4#!7KitZ=pN35 zJ~ifPZz=ampE5(p1<1gM1Sa~->_$&xSX)>eRUPl_q@%>K!Bye$_%`x$h-J(qsYn^8 zIi_1+IAd%P)H4VhhZ{EqB;ebX~M&wOaKo#AWkW@gY>#xLq^r1>Xd<(U-b$?``$LQ$2;=xFoGMV? zf6lkiciz|39~bDsUFTEKB`havQC?~Y-ILCw{Nx8>D)tLo`F30_SljIK(Y}>lfgQ)* z_Bh?~?t!k0&RWiV#|KBDL*=aJ{KF}B9&iNgt?Yl<)V4}%OPkK#*OBX-=DzEh$@XGX zJfthj#+ojcjV@Z7H#28y)<3_9tXbLr{+^cKvq)V!xx91bdDB_*TuXQBTw9D|wrd63 zB(Mlc=)ICG#Y#YL!^HE$Vu+30^n!l-^_8;=;eJi|1 zFX^4@-R+wZ;P@b71Feyak#|&W)aZ11I*I;YcnaQ1J5zH5Sbmi1tn!)SkUT}URq|a_ zk13?0DI--#ZDzb;udJhLpZ1VJ7yKgRaOly{f{?$0GmWf1OgC0zR$W(KQGAvMWYN$e zs!0rDxu_bmp6)`gquVnpMKvVhvSdX)l~3JIo2;9tljyYCgX&kx8}jwiq2fQ83Dgau zF3u9p@%y+Ffwz9Gf2l9h=k}_7Q++zW+ppw0^ZSJgRF!B(Mp4hG1iCF8Moq|uIOR#RU2DJV{cA=Yd?6Ix1*iCAaqjI0A%zV*$#6H(q?7HE8?@n?H&J_-k zy}&xqy4QNt)&tf*Q#?vZOW%QnmObJb|#os7?q!_$vG= zt}M_$knLaXAL(D`7yKUsZf=TD6{|@d9WF9ROwyflN|~aHQomN$)eO+I(U{bI)yq`l zl_83KGD12@%rQB1L%J57LAMeOl+bdSDp4D3*c{X)q*iDgtPOSt%{RpAGSwN%j*7UX#zD#dx?>_dLXR7AaoW6qxU0*yXOej!w2*i_JX595C%MQKs0+(((~yS4+gjdkS|H!~k?fFUj|lt?C)=Dsbf4*Vw<zGSFSAGTo{zM zJV%#p%ZkXEnR~NfU&-qVuf^h6EhH`YFx=_w)9z4TQ3m8QWh&_t@oG^orat`#H4pA7bmRf@BGsB{C0-{j zlh;+%)4b5W(bd+wbn&_`nkaQurA%Hd`5^j4JIN-*VH71?=F$R;|GW1iOS79i^E{cJ ze_7IZ-G7dIC_KYkNFP;64`jMBUuY?9pfsd`NW^Jqp0JJ|&xr$reUsQO?kK0m-pv{? z*Ef^qf#w8DQ|mn2HG8__xpSi{+5N=b+vD^cX1jXxz0G`o_-?=&uEKrJ8G!o)rm{-e z?&1Z7`T1Y-I_A~QTb7rQA5t*1kT1d|v&%=AURw7!@3UHN65dZwmE4mLQZ>*t){fHN z)AUfcR$h?Z5$~YK5Ceo=fhNA8tkToTEqAwd=fk`406WlE16z1U*q@7L^UzD2U z4&^a*ndX*OsdH%OYyZ{URUcO^P_|QubU^5Xkc+{820b^_)bG@aH7itJ#Yp*esY$F7)uacL&+!`cLO3i` zL&I@%@+dt@+*OvK{8#--+f?s^_uhT8hTJBw2_gO4OX5MxMdh0?o$pjyo#!(2d15-=ari)I+l+v>r&Rc{AT4M>tfev|6ObqO;(3gOzlCAzzCnhYi2XOOZ!yUKOtZU)qWMgDkyb^lTSF6eP5ggLlAd4ak}2QfcrE7aRIJYJ~H>HUqpcRUB( zd9K;6)~+O1qzgG;I%mMDX}6<}quicux7t%3FC8PDf^(_smFt;njO&u~tYeBj0-njg zFeB4$(-u>PX^5FKZ?pIy?m&jYn6>^KLT!v+J z<#XgOVomXDIpluwa&ldI&HWVK`) zrSB!ISSyYZCBjpdE};9nOsI%mp!li-3bDq=TAoCh%&9!W^ zOtMV1?6DME`dUrabGB{vW3bL`=lx<5+qFvtP7X+*@Ln43Hj?rb~Hg zL)m(nSGGnTtGKIZs9XwnUGd74z;E-r#HlaI)KK)LNWeXcYhp82^ z_=9{`zL*=!r3Y#UHu)XCnLeX0*PHGw_G*0{;C|zf@2u~DZ=SEMPwva|KJwo8W_abk zUcRHgGGBzho`1W`u-es(Wz2sTondaH$sqjo;L%l`bC%&WpnSmH?KlhD$ z$<5$?!^)sLJQvIJ&i1Bx7kJCOTYTO9`oQBrOKu&vhnvr};0W#)L^_1q!qw;fpzc}< zinc#NB}?GNC|!sU7V-@LnJeKs@@D>}07`FsiC95ar~aXeDT=0OCzS_p&59`%-J8Ba zCo*T4c+o~ty2vE@CR!(wiN-OPX&2R%dQYx`NIf81P!8%9eVUmsssS^5s0sM+m)z zeL|s-2%dyZpkUq#3gbpl_cw$ELMNe`U=S37OppkexA7VLZGJbu5T1uk5L_io2t{2%mAe?t2Gwgl zBu06{E8(f|RR{W=)vaiJf?-p4z6h0qT4h-%Qf)&WiFNTQHv z1#uWiO2|3HW&8?dLOu88{T$2n;1ORg*pUOjCi;-;V4n;km}rW}p+~|{p^tD%NJU{- zMmUHYWOHgMHIGW69+OSTTi`*^fc~{1v4@C;3=M+}jiis!r|60Bw4xa`lAKL!fIEO_ z^a?bi1gI&SgTv<$kwzXNkAfoc5qNg~fPO7SzXTfeq@BS@QybnGouPb`8?vN^)xZ%@ zEUpEvY76?`n^**j+3}!%j3pj`uKWf>JwrGO-9BBY4c?R1;H&9P+#pPZop=tq|1!Yi zIiyCLK#|GwgwRmf0a4$8IPmSv2PJ$G=rP-(`$7l73vuW9-a>{j6RAKE`G3`{1Dr+C zcmr|?vmv5xo)TIL2jTd+pa+$LDo}}YAhul)iQWq5gcHIoP{pd@eA7S+x)1z8bKtvB zR1Dj9zp)k%4wM($2#)9i+_4H!+k)hYo5T!oi>N@0Y=Y6dKo9Bx zRcJcsVK;$?pc|;1+k+QoEvVLgpvj#^90VolYlzan#4b3pBPg7C(CB{z2h1l>)l={W zdjKeN&kzrYhwyt5=(o!uE^ROd_48Z6oCGw;TOr@x% zPjE4KaZ}Ly&jnq3J3@|9s;E-bRNPaXD1ISI63t@H(WO*NP;@SZJL;=s0`-d8 zNDpJ`i9DhMVxwf3WS(TWBu?^5JVa~-c5Eo}FmIX5%mHQ{GoJZ_angI?PW~3vmih&C z+k9Qah=kR1EbKI!;~kE1*C^9EO;G1iii# zT?P&c6H54J{0;sd{|)M)wlErW%n!f=kSV+s&I>Dq9zwjp@ddzYS$qXg3gMu3ZY8vV z%8G*RU-@&O6rR8j;)n9Hp=W*P!-WZu3lXe~7D7!NgB;BV4S5u@3m;+oUE!197OJD+ zkn2a_$jS!9pMgD6L4#ioHT_ojA=rf=;NM|TO$%X^ZDE{`fImZo_xuii4!?*$3w6C* zhygdzR@{tu18#ygWH_vHq(l=u5UmtG^8@(Wd_VpJze*U6+T&p27NI7MO@imB zHw9YQ#*gE-^CGCQ9cUr$MKGYaz6;ry3Oa5orf)`!VpOT!P9y4rpA1YY|z*LO@6= zHIQlwD}kjX2QE1DpG&JX@Z2z1mpz2qrNLQJ25z6e*b4rRcvuZQfT$UOzv7`r=MfY+ z4C=oNnF+Nz6mLZDg%-e4e!dgrYc*;H>hSI``jOxznFjtj9Xv5kfUeXK*s=lml9q!j zBn=!;HHpW-gKME`20+(%4|!Jz<6i5en|WJJ7kzL=**R zhh@NT)nJeF#534yGx%mIz~#{r%iyhr0{HG9xDT2_ydW^4Cj-Pi(Ak%Q{-1$dZGhRF z0Y^?MxH=H-1o2->%mM8@3FjXK3jBA#9BbjT516bRg+NwDgY#%9co;^&d23)jcnD<8~E z0B%qLo?Hm?hKMJ<||3iWM1Hl#n_Qimj|KpN|tr)g&us8qTIV8ZJDyRf8 z)QcG$2KT|WHVYh4k>EIa{a;sD4jJAKT{;_SVUBA61BGxr4bHTmFt*9yarp(`cLM~J z2(N{E!b4yOlb{2)#Q6Vu#7|h~$e~L#g1$KodeMFG>8U}1*d9ERt-vAa1gFnj;A$7# zwd?{G`G0)IK~>I&>#m2mZHKe$gwGB@;zr2O0`S00fOAg;f7VWj;a51n4szQFqSXwt z)fkY}9sGY=z?qQ&9u5y&?;$u1>w(v48?3depdhHqj*yFcklzI8jorab*9@FA|996V z06s^9Bjv$=vt%INCE%aj2lH$V-+I6abPxL0dgy<{!H3chP_PypgHH4Z_(WbpoNEG_ wJArem3Pd^wX0{9FHV{0N)c~Cq$mw}N!&K;>-NBJE5@vV_Jd`y7pU?6C0K3SsaR2}S literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/alphanumeric/e.wav.import b/sound/dialogue/animalese/alphanumeric/e.wav.import new file mode 100644 index 0000000..8d384a2 --- /dev/null +++ b/sound/dialogue/animalese/alphanumeric/e.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://cp6stdrpayltv" +path="res://.godot/imported/e.wav-6373ce27ee05eb89c9d510ca465a24d1.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/alphanumeric/e.wav" +dest_files=["res://.godot/imported/e.wav-6373ce27ee05eb89c9d510ca465a24d1.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/f.wav b/sound/dialogue/animalese/alphanumeric/f.wav new file mode 100644 index 0000000000000000000000000000000000000000..0ec06441342431340245d32c13ef496c99cb9688 GIT binary patch literal 16064 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 P6vzT2p}%DqJmr4?VZDp4 literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/alphanumeric/g.wav.import b/sound/dialogue/animalese/alphanumeric/g.wav.import new file mode 100644 index 0000000..f643d8d --- /dev/null +++ b/sound/dialogue/animalese/alphanumeric/g.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://6k1d81vrewm7" +path="res://.godot/imported/g.wav-73da4ecac29d03a5e0c1bb2463bcb6cb.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/alphanumeric/g.wav" +dest_files=["res://.godot/imported/g.wav-73da4ecac29d03a5e0c1bb2463bcb6cb.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/h.wav b/sound/dialogue/animalese/alphanumeric/h.wav new file mode 100644 index 0000000000000000000000000000000000000000..545915f5be77fcd8b1ff5bd45b24cb9968fabab0 GIT binary patch literal 15620 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 literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/alphanumeric/h.wav.import b/sound/dialogue/animalese/alphanumeric/h.wav.import new file mode 100644 index 0000000..c33b3bf --- /dev/null +++ b/sound/dialogue/animalese/alphanumeric/h.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://boatg77atys5a" +path="res://.godot/imported/h.wav-44456bd4f004ee75088b13cb2069e3fb.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/alphanumeric/h.wav" +dest_files=["res://.godot/imported/h.wav-44456bd4f004ee75088b13cb2069e3fb.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/i.wav b/sound/dialogue/animalese/alphanumeric/i.wav new file mode 100644 index 0000000000000000000000000000000000000000..f464cbc02b4f0259cbf71eb68a061965d4ba650c GIT binary patch literal 14552 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 literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/alphanumeric/i.wav.import b/sound/dialogue/animalese/alphanumeric/i.wav.import new file mode 100644 index 0000000..51b5c36 --- /dev/null +++ b/sound/dialogue/animalese/alphanumeric/i.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://cvru47ct1d7mj" +path="res://.godot/imported/i.wav-8ce67b78d17a9ac111433177c3ed850b.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/alphanumeric/i.wav" +dest_files=["res://.godot/imported/i.wav-8ce67b78d17a9ac111433177c3ed850b.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/j.wav b/sound/dialogue/animalese/alphanumeric/j.wav new file mode 100644 index 0000000000000000000000000000000000000000..138102674e901a9d636f34acca8286eaf9245f44 GIT binary patch literal 19400 zcmX|J1ymK=_nx>@H|bPt3=})D6}$V{9T?B<)@Qfx`Rs0=-7N-+sEDF~ASfZ7x93j$ zKm4urU$a1*J2PjWy}$kKea`HC2Xyb!2b5PvKp35swd zCXSmw?l7+Dp-xtJs1MalwfwA(Fstv?qv~w6n_5q;rq)thssq#rb%pwux<;L+j#9g- zP1U+;eYG{tPghr~+tqFAN_CRjMXjxRt8QwL+7{=JtDjV-Y9IunP<^7VRXeJJ`dxXc zJXPK+If_;d!E^plC*Zz`I3m==kl}(FrKYLHszuFH85l~TVbPn1X{P4QMosuxwO+K3oVOd&=Ptq3jgMLnr5 zRmZ6P)qd(=%%Xhc3Fs&SKmU~8blXjFwqxJWr+{!K6MJl?5qw{7vkPn)vU4v zLlmp;)Dw8pXgp<%x(uJhs70y1jBQeei zjQ>k@s4nR43oN}G$QpxZ55m(%!#e$;!$8%he8ICGDDM=j(g0R?q}tR#q6XnX{8G;Y zHNmQ=WGkhxcQ2suovPr|%7l@~RUbg6iI{13JZ~{Zdk5>e6IFqlDugHeph!)D-R`Sr zaNP_bw}M)##3+|BtE155XN6Lm!xG2UH}Hxw+?xmey}%6j!3SnTOM@|DIOfv<_~?oM zjRk_|s`J%3u=WUy+Ya|P#TcSS?avG8{XYjeEiG?=|210+R-b4$cE9MajtLK3|&Z)bg=S8r?ba>q#utXR&pM<)DbKeRpyW6k)@r@!ELUf{o9>NUvI1S1t<6eE~$ z4Rm5x{b4(A!h#X^!&U=7ohJpK<0YeeM$a6IpEMtJDW@DtkF-9M7 zUKsE<03I_Qp4Sc@Q>wgCE&;>mz_evbEj(p2{Q5lRwG6XptOlqazH%aNRWAGZi}OgE{yCFUhdoBjDttQUJ|10Mkr@WaZeO z0-a2RuWrQbW1;N;qA}4HQq&}PA|3qj5B#M(8uWxG_s2{|VqW8MjDfv}LZ{{2(G9vE zfb;W#gv;QNY}i?a*QEll+i_(JwIcKxpfY&kGaoKXF^{S!B*q&dkVBS7SCx3l!!_S zfh7U8b3@U1?-_0kve48+kNM|rfHgGhe~ddLB9EAZSe>J@bz zFcuC>4~85MR7q_`OeK~RbK#W~aT)j0YBbPu4PI03vqvB~0biww4D~K%KOC~xL3D2f zKOGDyr$dfO7-=+qFI4xccfdtXRfnv^4ow}xOzOgq%!*41gssatUsZ#EFFlb0jQ3Sp zH3m5T2eBzqF)Q_em80PBEaU=q#LhHC`I~skT8uLk`A2J5FbvWU!f5ls5X*tffodo+ ziLb!>A!WaE0iI4m#@V>*CK&K2P}5%3s^6f!ONfFoN|E9PmhBD{wF5uU>QA6I66bRj zKV%wP)u)JaE*!a#<0yEvCy-tdHmHf`jDvUHfJP+Mj|c%i8z4Ffh+eOdRjkLD(}3f( zxa$$3Pp+B|Z@L5S=mdnk!WpIi z;|Ri+2qx;ni~M2VOvJw&*8_U&2HXsR?Ir?ilYpZ?fSX>>O;2cI7Z6eKG<3<}>AS%vB(jkzgb5jCB(O0Z zPwx)f&4%TpfJQf>((hOp16*_i5@KP!gUCak0|}w63>8qGa=tNu)#1qxttx^0}no`Q~3sY{!`9Fze(_z-s&Dm%m8^cfXyUClAfvt z*emz>%Ss$D(-iYv1K!vM=ADEmbptxfdHfyxy%jNvh#*FS6gXK0XUS6EIQ_WH-&=gPnks#o&hLh`SD8tUQ{&1nw6@l8#`kav$vvt{4H_G*fLx!-p=z=B3~W5ndPtc3ue{90R%5Ayaq< zk8&c@`2^n{1g+dxmMZ;~j!Iu-9~Tkds{pmrp_Or%l^0@DB+gy{3i6dYV1eg|cO8g{ z#7x++5!mS(v{xQS-@<;8$XM)30C=M>BpgWJh?YGm_T0t0@!?3T7Av-T#F=VFmnP1n%pGqc`HfAZWcUBp{)edx!>` zq4#osESKRmBIjFZ>k*`Q3W>|G&gl)!9|aCBgPSIU<;$SqL-690n7a{rJ_8JvuR(mV zVtoQ`=z>+B3LAI;Co{qLalbQW6{w6s&ax56n+i;<2g62UWsr|qd`9$L0HnJRV=jOp zu3%&q=v)kTeu(IM9QQOuru_s++oBwRd=%zz7+&RvJh>x&DkJjdg8x3_iN)YAUt|&P zkmm&$zSD1JxB<;vfsTJE0uay|Qg($ewZT!o5}t;Vq351HlWyNcGfw<%BX)2~qs98lDELw*U$Qz@U4Gox}ui{sY*JSKq^`PLta=6%k9B^zCi7FFo*!l z&Vl`&K_8ERy$E2E2a_aW)IvoA{Z&IQK&wg6;7p~RQUjdb5m1nJ+tyQWDQ%S$`JlW`J|btygTWnhV1o(73F0C$v5Le2 zK?+aeCf~#Ks_N3~-Zwm6ab-3>=u?R@L3+rbfqOAdn z-$1JiF+UDb)c$#_}QuQY`5XXrF!~!A=YSfEzMh18LJ)rj05cxQvo^q%UW%a9L8g|Y%)&D!5a)<%U@4ZEqTWz6 z%3`^O>?aSD-^x>vQyfM#@<3iZ4|;8^oRRy=;qo3i6tm7%pAf^zW8`X*B%2Z))V|6# zIZ$?!XUWyUstl1pj3QT(O~@_8G4+^oAJ0sbSRi7lvRs`@G$Ie+XiBaluo42oqUDcr z7~)g9`k6RRR;RjAEH#tdM_g1tDxpfMTp;(yn&p|gjtC@Yl2b@6If>Y<-c$;Jp8&az zyiu-zOmh|X_9hXFv7XL=KI4#cm=syA34f=NkqGe1ZNw^~6IQ=Vkw3jdwtNRUaSL$c zFSQEM68WwS#+r-h?+<_P21dzN+YoDrQ^aAc&;5z(;GI0&wG%uRiG05WqQ`RJq6^S` zO&Oz9P|D6JZdMTe5R*=0 z?&T3C6?$tA)ILDQ5{*2uBeI;8z@i^`Z#ERvLBFFs7%A^p*H-ZH*)7hWa|xq*e^hn+xKe|tF2et^VNDq;n$Ez;4&pR%o;XCT#tv^&j89-SEP)B!aH!zR zeb8qzR!Dl~j=V_jFL#!E$>ZcD@^<-O_|+PDvfND$l`G3t z;}GK?B4(XOPICs)_6m@78>qSs4d1|V6Mx@Fo^ub^oIpnRr_x8Ms~8lEoFS*kKjjjc zRjMLO8>1`-BFk3|1TZxX@x!5ZBlZ#B316~3IgA`l4kde#ZOE2nXL2mLi~L9iP?M;O zR4OG?G+j)+rgl<&DI@inJV`Fc)m_O3qz`E!qVbH8;NnbV92>!BV}RUw*!{YX2oa1u zu8Tw=QIDKRZYR%>=gEJ_S!4^+LEI&lA$HV(y*!W+`C>1$d>8sLqFq0%D+&-j?;^Lp zg5x}Lh$Yys^HtL13-U^NtlSU!>xm;3<9E}`|L$Vtkbse1?T^w~B#rDJYPIjj)!B%D)W;Z$9oxQ~KEQ}YKiknPG<;-mOR!f2t7U=nWdJ@_1MKR1C3=UQ=1xjLMli(}`r zR%SSJNn@vb(ATJ@R4RFeJVo9kGs%k7P--)EiMmT&h88DMjVYcgAhSuCtV_+Io>3;c zKfRP*Pfw?t(Am@;sslw)DdZ>eC#jN^sD@N+ilA;l<8Ps}WbAT{L9V$9v85RKRAunj zMOgG7r3iX?EcKEk*BjS)*ACY#S6i1;JR!Cg!C&1&hM61U=mg`*2L<#)`#kRMZUv`AALYkpxn?QA8DR4gh@ z9wBo{52_2WF^KM}S-?cH4DTl-2@SP@+7m(&pT*^}4BMYc(j3sN*R0bl*9_H=nz{6U z)C2N5aSjZgD-V`M>5KGTqUDzI9QmXi1+3=EWwI=LC{2*5mB+nFV47aU2jUO1n1oJf zg^tqfW2Uh!IhDJ`_ZQ-X2HF|g_1Y!czFJm$TBs|W;5mLQcNKPM#>~-Nq|>R2)M)Y| za?RPug0~^F(JJ|J8jf7qA@j)NLa+)Mg?#!B7`QW7#-a8{^iCxh(v#%KOyW8*k7!7g zg0WX4uMR-QbqHBN24uEM3naU1jmyV%M;s+`;w5J%XS5^CamZe1Yi?U>{bZ?Q*<{Wx zYg@Li^lC|D@spyvg)a)|f`j?z^Sc(TFC0_+vUIoQko~f_Pp(V!qpWmgCW9Hx-e4(i zDp$sx=vJCwCWo2Ho@WoS zgV-Ww8#9QR&g3!Q*d~06a6vcCkZrV?mbguFdu6(7oNS==PqmK)H{mXSj6cVp=KtjL zIgWeF^wQj*Ldjz6CcVQB!9z8gV5qiqcMZo(VP-O+OtfZ-rmm)$=5I|WrUBc6YseSz zU4+WQpL`g1jEST_krc6986{tnW=X50$C6Xx<>!*8WEST+uh?U)lx22V)6x+o$;AhX zXBF2jK2mhPuvtOpyv*#zSp(Cjq^(c6omBQUB)(@{_=gHHrLWbOC!cqX93MIK#q`%V z-!osOG%2r>jU_i|Lp?6|<_6TQP#72+u+IOS-!;EDe=#sID6`6{>e^s7xMuY+m2(4H zc;)ENGJfhar`Z~14lo}wf3@_sZMKIvWV_i`-)bp4TC%SwtT3hET;YY{*JaOb?Olm# zMa^Zdt@eVhSl33EE_COAvBB&p_6}D^yV@|oy`uMEzm);)16KqL@~h#!!d)=V(RI{* z(l#(ua*B9Jm$05y|$s2_6)z9KPYt8Df)KCL&hY7OV>;& zWR6l%YCQ6;f8{|cPYq&XctXG5IKa)r{kvO|se^H>ew8+rzsm7k4%>`-$qnW&@mu(p zTt}AE)F(^jf5Zs;6H83lozk_X?q#*jD=hb{+iXv5jcs`r-u$X$N>RgtA$g@aWX`l~ z>#vAkJF=Q&c1nMcb}6N4(vmN`tzh_3YN#53!|W_QosxN;@o(vyqICGTs!?jDW2 z@!{L|Dn(P2^@iC24@Lcc6NbI6%2HtGKViQyp*k*D%9yTt7;eB=qDn+1Cuq9Mi1S ztj13-O%xqZ%^>%x<7B(I%2CtiZ&_3}q%^YRMu}JHyVBcb7tHG{Rjq$ohg-i}MDzW! z;L?7@;f3z`PjUwQip^;Fb6)DE$2c&PwH03ld=w9;3T;0~s-qSwN_TJLi%#>X& zT~fBql45TvwITmv|JA9cF`f&(>-cQ&e&SipJ<#Z_TgIPaUogdtJD1Pb)QvDyGpT^S9;;ZKK|j4G4c_hwGN(m6bO~m9#D1U-Z4mQGB~J#++w;VGneEaK<}3 zI@>sGw*A&l7S{Z=^iWBo;>Csi^Ka)|%<7STGnGjmlyKtnx7cqni(l_~Uj1>uyECsd z|GhuA_e_Pe`irlw_kP^zUHW%Z>0-@2pH0C(8U==F+u7Rg2}^BC)vr~nSJkRPYT)O< zMir-5I#tD0^?KFzm1hL@_ZqEhPkyx73$|vqOr8C0NK(|dA*s_d`sB7R-f#KhxP%Bxpzv^|*C&D+%r_`&yM}o1h&cW4TYSMlbM}4Pe zXlAgR_^H|_x}N$X-39FlzB0Rs?ncHTZtW&~=@Ry>F4TRiPq)AyK}D5YSBb5ZUg5i6 z53h%&2fCYl4m+I< zj}u;(y=Qx8dp306Wf(0mOdc^wzAaiDKFF+EInFrJ9XA~|`+qhw*rajk^I~g}wdj5E z^wOi|YPQP`vv^B-ftA8cSu5o`>)P|oT}mbtOwC!58U17S_if**C074BA^y;(MIVp9 z{}`S5vgAqkdmFDWyX1dv#F+}`tp5ex9r!B$>)X67>KV@yHQF^f)^=3qJ>j1_n%c~1 zTEE`Z8m^$Z0XE-3zDB>f{tp6b1y%{@=o{hjNVlKfB@QkK%Q7o=cq}J}Il@AlV}O6Eo@4Tt9uOo5tJEFWJ9JK(60#pQj#6 zj8@?!lSLZTesYvFNv72iq?hJ3YZCTo-E}jxH~EUJo>tX0vab{(N%BteKQ>c;*t1H& z^GZ3@Y6t%jyra5bm1PwM__p`>YFMpZ&VS}c@UMaDbA~RamTtY>W|=M;>g(F`^_YH? zOI@It7Wk*mX;IdY7(BeR3 z!3SKY#AePT_S&{U>j}#{%MNR#E!45k`AD4ZTIos^|8lOdf3;jGtyVNLZ}qQR=@rvH zCI3w9_%-G8s<@I5MKR%T5?|bU5^#Uj&Fxoomp)wh_mcHm$b$;6!xLWQPM6c&K2)_f zoYv-0=RdnP>vE#QnO1)^imNSE*&dkVQ_-u`qtIi%XR_yN&kXmQ#&{uuj&?0D8}r*` zTusSO81<$3mqiI_$?DH`xuqo&9ZsdOCYrk-I0U0GncK*SbUiwPj@5MG_GtSX-91Ko zfAID4r~LQ$W_mSq|Do^BC(#x)7a2lbal2UJ@>Wh0ZRzz)FjvCGa*1p>Glz~Q9})i% z$>ao09X?mz*kheZ<8Z=mzOI!#2Zf z!x=*jLoa=8U92#W{|Hv8s%b=DqK+U>x6)0RqpXu-g-t?#p&LJ&&7pINC-MU^#L>sr z&05iV&zfVK;h@B6uDOy%t{}%qjiuGDZ{kF;vDimED^_zIa}~LMxyHKMiE|xxYjRnu z;;?)}c3S%P)auER2^ZrZ$G!QmGv>?dIWLAixqR={joO#Doqup<&6z#tCta=nVE>z1 z-_i=#QFnX-YcFY$*(tt9Xzy-4zlHy7v$9Eioy;op0xVt|+-;`!rpazvch3E_DO=y3 z&mo(Lmr89pAAb}j6~=e^6#D6U{O+WYKj!6BDm~`xL@wiUbd!v%DZuEf-ywK&&6$y! z7n+4^AHk-V-BP`L{F(&(3LpYD_@42+ZVV8{(3G;k>1_+N95k=8?6NI$ev`Tqi|z7#_E;p}z|O_yTd=`nejGSllAimS$-;s^1; zTrjhOnx%$IgPp%@4Xr~hV=b+%FKjOylGsqLt==RqlML1!3B*!0O3rl|#Zln=ENh7M znx&s5$?RqRP?}m?xA1Q6uB_A_pOTM#T@bhU-NV;iUU)sN`f&c;>bE9dUvu@x74y|P zH&gF*jO_pJO;Xj|lg@G4h=32Z9ydAJCZtpU@S&X_wXYdAvT+ z;@&U)SDn8uOWR*JK>yMZVRE^JdPI7x^%(Bn!!%QG=j$@V$#^+SeCxPkKV?7WSSxzU zJmF3!GgbK;!aQw+_K|RoU&3u+Yq5W`C0sl0Sc8W<;r-f=sW3I@Zl#1uaY64Y@Bv?a zHhIo;duh0(8=(D1m@FI?blSDr1Z|%7tX8Ad3enssHe0iWo=#mLM_~Qlni@(+YI?IV zK!2=2XxAg(+QSag#F3rUOetIZ6EUl+W38j2v&8vM+~#tZdP*&&Y}Yi`cdU>IF~OPX ztSl}TV?~XtOk5-`ac0`DTeHjlDNfA)n0+#1W?IkWUJ0{5Ux_V?srn}5rRLd#hx6_( zzFFs*=E}Cq;a3meOnAV*QsTP)Y+RN~ck`ZBqhI4@ZT}5#)xA}BS9q27i(91BuToPE zviSD%2r@R-wGbY19oXTT%cP)8bY`043y)+!_<1oUJ@M(+)n8jBCMVbY`82z3@h{tC zr5=-@4KyXYSMv1mBs{vf^)&veCv{D=RkaVaUv*6kn~j@I#is41-pEv@2!ZSYDpai@ zJ#~gSR@-0Le>(1p-ttRzCl$^-;=T#Hb?N$K!!Bcx>6EFJo89e~JLB2S>tFA9pJd-n zeoy_T`K|Khe7wD)-Fund=@)6|^I2>%Gn$#q{A6yj_qccbJ7K@pPuE^&&~4B@72^05 zPGyI%X66Uu!>(otZU%RN8^s-BJ2RtbndqpSBi`=3-;XiuFMY z>~}50j#P-+NU1FcOD$aE#gon=M+?WF_I0)iR@L0IEUe^BVR7D-Y-6VHkL2VT32C2t ze0UW-@m0IXIgkAxjJvzy_LW;LZ%@0s?&1B&DsQjGSO4i#TqK+IBLaujYSwss*!uRX zJFe)E+@@9wQ^O9mr&JLFHhTsbp9+K7Lv%;drp%SrgDdKll@%V%U6qylvwqtC@58_E zPHpqEUDl|)P9?i+-=ur+fppzV;~Y2A{i54-(==lxgSUQ(Zmcd+w@N?F(AoIam~R|o ztYT=QyT(6ec2FbKu~M8f4S7a??Buj`OcqMG zV?)y_Q!CR%qruQe*GFi^HDadG4zd{giyYpWv)JoR97u!C2@t?sxdRsEXnO-w=*_6gPg72mr|Uft%2o0Y1iWJg(vd6=QYmlk~1-T z*00W4uQPu9T$Z*Y#V5)C%bAa#W1^z2MSgm;+?i-J?>Lv+OeW= zCChNC!j0OanpA6juf2E2+3j1k);8M{x+!>1Pz&E=w~M+n+*!?3>Te=mNsy+9lkD;4 z&&5abmuJ7sc>CjPYPHl)skuJ}XXfUNE1G6GC0-|5u!Y+F#sK%39_Kt9?kC&|jCBkr zbz8s(-rDop9lA~WK86E^Mh2TML-6FD(#?qkNpzOkt+tBxagM*mdGc8zp1#c5_?_A% zx_DiJ?hRH^+w^Y?*G;WFntG4*iwGoxk}BP+yrOcoN|6;d`rq+B=)Tr)S6Ijv(oLzs z*o#adX?ne;0UOVC5hiH8biH)$x_R0i!UldVcY*b1vlvhIUv?lD#J}N#gfhMce~w+H zi6I{;J6$^*E~~eNF=v!rG`F`dvU`Xhq$%ndaya(!zG#kUlIa^%SMsUaQh6(_at#%` zI>Q`+_GoK}rFPkk;%5aza@S>z`KkYYJ#j(&vX5!+Zbi#cw_e6PZy1^Q^yw4Z|OOQ|D=7(U+v7{dis2-cBa0r<$`v5JC5k6Z&$fx`-V+wy$Cw%J>Rg0 zZ9w*x?~B3CMvf)+6SgVV6Xq_Z5k;-@ z>*sdW^N_cXPgn0no~m28@se(hpm1S`k+->j_$@+T?IrCz?LNVu_hxU=A>>VEt@K8` zh&`y|&KKe-DMW2c-DbuMUWWZ{PdrEZ4D|ckKPW);ALQTJ&+fC&JKQV4v#Q5P_a|;m z+%B5*re4Nz$as8pABC;_7;Zd!j%m-dVD>V7*>T)GzNPksuAyPHv8HK`slI8f(Zeu7 zw@6sV?PGH3jnsVdG~Pi?Q12)|rIbM={WSzay$xz;;R*_T^=&3~1AE3A|MS59fx%#4yB(^6xS`J@V8^`En2 zqu#xWW?r9u`Q-V`$f#%O&%Q;ze~}v1FedY(ka+yZ*1WCO_GDed1HV4i`q%B;_-*q$ zE!|qWHw$cdqt4W79|LE2oiaS+K2cdpylbX&uKm0<&1^1BDBfGxKA+1C$i9(9WHrnh z`|IDFxB1_S_gMaOrYLcAd%i$-(Kywup1ZgE0Jk91J;MlnW8Elix^Pc;EfgUBr3(v% zEBq$TogJmwLfs=+b+Dpi6)g!rq+@pj-^k?TcS6S+gm`ptzhpXV zn5P>cEa&{$c1*Fxm-(A%!G2_Ga}~H<>ABYZy=jK=Ps3OJKK()c8$E4kU}$d8Vn0XH)z-Dv z_7Rq2Kl>E-h8xKb6V7Wx^tTP(rU19YZY$hwnYtTC=zX-;xe3e|`Ym}IZ=MSA=BF~= z?3?lK3e_>P>bfYdciwYMbnJ%}){BDlL|&wt$Vt>VtR(_8v9u3uCzlczl)X}SF~h#t zTEk3~1{5zV3@FITdziZ@r}!6@btwH_+O(99iIu)=jqCAYL(GWixYy}X%c3?$Iiq4< z2SpoVzP`U7SNiqr_l&H+iaUr$8QT3-V6z%e>*hCH++;8(K3GTV7rIYT$% z9lGbn1#VvMPuNmk}xv$eZz^j(WL^sA%+n8vejqAWMcTF0% zY*QaonDM3Fpz9(W z?aQdV7h95ByLN>($uhDw~8LxJ;~|XNuCD+Pgbp2D<>qf-nDv( zAxmoIRofNx(NFN)Y}m}#(JUk;%BkW@hut>J`oY|z>~%?x;`GAP1())@@|C1C>tzJJpw|E4)KQ!$y zUNTfPr0a|Ibqy;FuMByHM8jG`w%$!|)QLg~Z{TNeRk_yOLvBC+L~z&5(qA^5H?}bi zF=ZNa4fFLUw14vp*?F3)R5%$krW}Rij-|OJ2QxX?!(5Dk!?@`yHQ#CXM?!FR#62yb{5uy7vg^ zUS&&gO6>+AN9qizb-B8x^6P+6-qqa3>AG@xbSJWfdQ|Qp6^Toouk0_atITet$BQNv z{F^r`*C+RKZtMJeg=A@lrHXToyn}4cwBi?PQ*}%A6ZKKLIPHDmD*ufe!qvskGp+~! zfv+Ld5nl2c+*US5^NKo2>_g_Y&*c)Uy8@*|xiis>UdqM`T0<7{p*+uAua@4$UbVf9 zo^RY&xb-y+HJ&ikH;DQ&y~Yq=sA3Qd(fW}X$z9h2>#aDxGhf1`b5;1O{08A)ZH$gF z1RHgxe@!<{eZga1hOxT2!dz|(lS*%+PLNednW#XHBoC4|$gOx=+aEnveoBh;(3K$e z!rRexVz_Ip^gs?(|0O<<*QsFIk6ulUAz!GG@&Xs-+-$3BVajTh>@DhA7+MgL@1GZ+ z(>l9V*6Z}Vv?nRkl7havf1dww<_Ev`%iryN*X#YZ4`Cm>e!37pIpObby;85Hf6k69 z{L^yRHG*b!Lp^@^4GJ1i^>XzAHTqTmTBUB#MgMDF2TZrMo!IGAdo@x@7UyHP|DgSs zt*LF1^{gezoL*)sn^tNptx$TkG^OmK#mBA_C(0$ne9aB+Pwfi*14BjQHN#%LP3tMt zV}=fnT@ROvSF=D)4g)RLTBB>?JGFq0CusytcWa)HKqg zr`JC38a`%kt@mcn!|qE=!wm~{Ho?KK=XW9U-V@eqTkD?cY{+FJbkDR_Ay`f;RB~?@sj8Z+7?NWlMI0U=KYAY)!DJ}9S z9F`xQJ1M7Xc4^j=%-I>{pDlj0OjVK(B-KiIAAkLm?c<|Z|JaJLA7h)u_5NJ(>xCrq zcOv6$PKV+ywsUe7W`f?`GtO^t#Zi^tRQbEg_ev=hGW_~_tue)Ex3E8{GFZK>)YJ7u zoGyll-<=V7pDEjYuzNVv`pmN4^31Zynr@46G;o#3X~a8v9UIT@*WS`q)o1G}>T-m+ zd@j3?X`u*mVBKODpE)eNU+<8Ar@av$Es{~!y=*W?)T zCi?1LE05(^se<&tb=^fs`=xPmYgC(FRXq{Eb5XIm0P&lawupAeK>G!&VjfoZ1n&s$ z7Y-^Q@*m}{&I!+Ee?7{an4$jM{iAZ)z3<~vY9@PptDQ72(UNc{;blT-qL4J}+oF`P zw72QCvbz_!mGyQ+Dpi?^y2)<$yi$B``?m~O=6~Eb9s6~k4W8N!>?ryP@jw}ftT;f@ zOQF(mX|6OfC~N_Ti2MN11b{>yT_wXHf|nf_uyt32U{BwBLnTegWrT z)@j1%7SuMf8CefAy+wMW;$S~@hT2LEr1Vq_d5*kI3e;8VKU&coWM}bXwFC8aj8P_& zdx`rPj}aaP?p58r-F_NRfzcy$d$c9O8X-(D2s!*ieg$8fkL3Ds>FgHv54_zx$_8-> zkl>N<6mM?k=b3x4H4%p0B?m978PI&)_FgCFhEyi)sqS5m5dfAIZAYH8ZYpP$p)W$w&+_A4!$ z$sL^M$`361QqsiI&~ZtcLDpjrYo{8!y9=J%Jrg~6_n}62-4@PALz3&27t$No2G1K>3g~F&A&$Kd5_&9ppi3H$7PMSwk^7ntwD^HCO1tbW?gfolAevaO^s+mhe?O zT_0t5V;p5#W~u@v>26^3x3#N<^?VYyk=x3B=DP5ad^KT!&`L-I`X?jGL@}+98&zj6 zF@LcKxhVdZkf2?Gz0?16O?7{2=LiG%5UfxZnxRipBd8jblZ+wvlHE|>Fph{s zhe9hQLcV|snq#g-uEQ?9^h7!)|E;V*4d!*?J+YREM@{P*S&-I>r1Ow{xUGY=hh?Vu zaM|0^f)ZD;tthqdVZpxqrFrvmx8}rThh?Yzdh{#qSB30-*)4L+Irnpy<%Q%w%CA*0 zr{F}v>jJT0NTIc`u&7T-#j=5x6x$K!Y$;T|Mt;Hm{Z)1lw~TAf9cSa1Y>kVqirvRl zas}CiY=pX@-lzgxiAc7YTucr}C83EdBeIB6#JH(s0yz=LdPL9FRA%loP1$Yi1NIqv zik->^Ku1fMwoGNFCNmg%s>)ttyK|}BI8^j7LIpuDq@kW+IQYcL6>~J-ke|)p>vwVB(Wq09X*zv3fo5n;l@0fH(!-k+@Vkvu=eZ(fRWh~G6aTPglPQqGb58H(; zV-7Pt@h13#<}@l`CTZGfIL&RkBixHYE z6fgaOI?Mo6^ww3fMgaSmv4!l|3)Dl(a3m zRNS$c#d|iPxOwrS;)lhq;(8^0N`{vVC~00|D)~`-wfL{%>BSMnTZ_LG_bHJ|zLyr2 z1zVO`Q*G@XyPYq^Sl1P44C)yBphGhay%nQSC2muDqfS&NdO+Xz$t1FXw3058r2^rX ztEkVY@OVP^)?{f`Fh+J4E3y5#?c5D63h!UOa6dR3=g;@#H)4-QBQz4a3!Q{O;WH{m zoZM3EW&X`}WZhT-Kdss2Y!vIs4d?zv4x5GhB+kJVao@4#`j6X;UCv-Gi#@=0W^(aI95HLy@-IX3dkDy1>!{{z_HB_ygr}|JoQRAOR z3?QOV=ldGfJ}i8AryL>oM*WzVTp-<(7U3;jqHDdYxyvp_i`T?U;vMm=m?~zADdKH$ z2KKJ!JKs4x9sTWlZ9lD@tWPY1ER5y7`J(x6^Ct5e^HTF{^Eh))b3HR-{#>@dY)F|K zd}CYbsM7G#-lfY+zm$$FGnsSDKP&}S%I=LFayKzgJO^vXO6}ysa=u(2^~J|fpYMR~ zTcP4V0=1R9VS|ULfhtDNOnua7&O`2Um-t4IWL@z35!8>h1FQSd`>>8Yp{c=~#NP07 z_A6VBo6Mc$QaEqEZ+X=R@8GKlErjMm0C2vE_v80-p4?uxIvWd&Zf8z0iA*rNj?G4m z+acJ^1cncVFQ~BNUalACVo$T(*c@gPa;cA+Wtw`LEcz5ZnGU5z>K%28T1U-9e2<`( zBgWjLzEC+-9u-fWqy|yNiWhkooUdm(SB59$dxVE~g zxuV52Vh=G`^c3C13V2gC5bp;LiT7ZQXz`}_m)K6sKn?rS?^nSSjSo$S#{PzOR6Q)LRgzx*IRR}qiiX*;r3X2W5;U8EyqX4 zH%AKIQQI9gor|4?Sd}+*SzR}=N_C)8>N2{S-lBqkhcXMb{$rFCsIXL&p{M|J16!UU zk_eT62cuH5KRE++lFvwq>`Wb?L~0_PK=;)|YubThIJOULu^oCH%hqA@nDeNEYR}YW zYJrEQFh`hgj5phZod=fM$L_|C{v_bLGV5XznA^-gW*IY)>Cc4Y+OXe83*g?Lv1{I7 ze>z;_q%R?Y2GLp69aIxWP~lVn^$SsbH2Cl->du>^cdr-~?#1Z2GorTA0~M~sq z8n|QVxG^b7@-=xkYEehaoltcuNuQ*1sJj|1g-gwlb<~lnOMVgok2vlc>e65bqdz?0 zv2%xWzH^Rqt@E_=laq%<=8MP0=VF5RU5pnWiwDJ-VwlK_iOy@zz0UQ{b3EA>HLa{+37YvKq(ovkNoAKMYLi7SMaXpOjV3p>YFl0rR%mU5>mQ!S~{ z)OPA6MbK^Om52;3x`k$e=Bg%BV`AzuO_=J8sJWvVt#Q!1faWxC#ZGEBsx-f#-nA~6 zq%XLoI#3>qO2@ycUBL89s*I{e_oAoJGr%w*bS||Id2R~1hOAHKpxSsPF$_I*Rnb>k z-e>s*eF&$~H!~8wB;_6Dt5Ao}D_`VG@>Y2v_-B$lL7s@;lkj_jJRZkH)B;b&zkkSG z<+`#~&O|NTVQIazR9Y?VlkQ8Il84+%9wtwfr^rL_mycX3eU$D>=cUuI;5F%i^c=c- zf%tt_x+&e3o+6r*N&c|%bW|Ik#>gk+zvSVtd4_aKnkI#zW-vgihdlErbU##nELQ~T z&!JlIDdNC*)O^3i^@HS&=ndE;r^-Fh!`Mtch|UQCovy{`;a`B>6dS7DU!sr0g)XiI z@RNey8FYPQ(Lt!^_D7fIAYvD4Dx0JFw*;KE0<3k1x(>dWgGyHel}uhGw~_P6$>anw zf?R^XPa;!~K@DyiEc$`Gi_Co{*^YF>>fs@(@;9PpeGR@j;23d>c!QpU??fW;nz%&# z1?|^FFUo6lS1d;raz7xxEvm+wLjTqAjUY6-;=W>Lmrwz}6P+j9&^2-#RmSDt1d@P? z^<-3AKSyufHf0K;ubYxC-$IwlM7ay<+iT19d*gF*5cao@45I3 zy)rWqS-L6p;az$1Gt_lYmfOkI5MO*@$pP{PIZ{^T=I9h$hr0b8sHmTUI_(yykgthn zbpq2YMpxNI)N#K=7soq9f_UWz>f3pA=Cno4e*}7vmZO7VF7_3Nqe8ta7_}ohp}J$1 z zo6h2G+GJEXA49j&Zp^laT3Idcd3}veyGZyoN;hcg z5xOaAt7+&2TB1xs|IHHA%s>6zgH{8Qg`+2;%83n|z&#!C|Phmz2Ad5;0} zTjLg3?LAhco1xqK=r{QW7P*Y>-}^v^9i1N?Aw_w=_)_%eje%sHftB_cX$Yj61s%_Y zBqLF`+yN4_0%8VWEwUJlv8a<9l9^uLFe6YeGn{@0xro1KEETtk1vEy#8rJs~G>Zxp2pt zeQh;*IL9dyU}Bkph!Sl3rId3&z=As{O{W-2Evwoe(PoA z?~HXnF!2pY4n(hDJA5lrZ9Fp$n&}H1d;xL~pug@8zDK1Z=6?wKwtW|vB(s(!0QueqdzcjKo?X1y0gba`zO&maRl7i8{N+3oz?&0cnWPY z&`l?d+#Q{g{)pZw$X#CmpFg09K(= zi*I=Ffp<@Wo_68*3k*5}IA{fFTHyJ;e`9m%Z!Il^4)y_8AAl literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/alphanumeric/j.wav.import b/sound/dialogue/animalese/alphanumeric/j.wav.import new file mode 100644 index 0000000..83202fe --- /dev/null +++ b/sound/dialogue/animalese/alphanumeric/j.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://dwi1wq2dyli5y" +path="res://.godot/imported/j.wav-c07aa6b0f20fa8fcc89a706a3391c11c.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/alphanumeric/j.wav" +dest_files=["res://.godot/imported/j.wav-c07aa6b0f20fa8fcc89a706a3391c11c.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/k.wav b/sound/dialogue/animalese/alphanumeric/k.wav new file mode 100644 index 0000000000000000000000000000000000000000..3995b273e766c4c04140683008f6c3e66cfea482 GIT binary patch literal 19400 zcmYLx1y~%(^Y-}q;toL~#NFLJcX7YC8?lSK5cf+i?w;I5iC&brD-l9~;Jyp2jrI2~ zzvusa%(Lw7>`Zrc$y?RkRnxmm$By^AQPhAo{X2}CIy=IXq9_{2vfKDDm!=rXlNvK} z_Q?IXMp8>vS@kA$$pEsD>?UW)1#*)7MHZ8Bq%Y}CdXZ81e2_dK$;3t|N+reQCwYYH zwv(k~7MVgOlWBOLkE@oE6=Wq|%kgO`zAwbtx#UkAbIAg-1i!5%>&ZH@8lV5fePht} zI5HF850D$=J;@{`#6c`1mAoQX$UYK_`=;SKcMmgh#~gg0k9*gUo#YI;M?RBm(B#A& zZi-H#^=V`%sP0cjk{O_58`(qlk{vidpG+<5Z9L8|B^z=7Zk%6(_QsPTWFQ%i_P3zV zFKACg=_nUTAjioBQiWL5c=eQeSp8Rhr_!V;XgH7Gti(kM$UAZjJvJaj{h(e|PpcQy z7vN?U^mKr{#x)$pQx5Wj+(vH;aCQ)mkt7BqSWmX%*Z__!CX2`_va76bl|)f3s4i4{ zsyf9|Z$afyQjKUysamWOHIOtR!*IuOavv0Afmco(R`QFy1WmCRM;&4!C2F=>sA}+e z963S~iIJ*BwZ&1F@}o+~TXGQ`*#sGE0C#rc*aB%y1<#t1io}-~h@N;Kw1i6LLCV`?nk^?PyNA8eQxMLCIHk=H`7$!gy zc9A%6*Gc@SDxjq{6-DW(d{F)mepv@eYz4J9$QzP^RtlgAUm(#7WIx#q?N|-(7=zlR8L4GG)%XEG|Y~Uj9O@&4Xln)g`m7{_w6Xf{?bgdwL zNHqE?Qgc;@>WiMIk;7#&*Wp?(N=u0tMFx(1Xo`*sq#|(ypr>?L(teC)H0bG7#^Yts z(u?FV`2-&RLVrn+?ki~b1yH{pqaKT^`ht&>!2fg5c|s~st*CBPM@UvreTUx90vD=b z#1XLK-@%K$kib{Sq7dWz0&O{gc4k0#dgIqVW&BzW>pg_?CqT%J=z^mU>|qto zK875u#Evn1E7RWDxVHhgYbG?Yt9fdQ`U$%J1g~$ZO${a8z`Ju8e=;obB{_}p^(56v zAdVWib0xV((g+Riao}`3tYJFF-j=i>zkv^nK+9qDc?cG{64XzGZjFV`Ova~SkVXw? zWw!cC{ZGBEzEpF7RW0%R3TWhdU_yWBgC}vS1!{>ZK!-b*@o6^@YaeuK1+JKacBX(w z3(@)-@NflsoQGoxbn7H^BLj9CM%AF|Kr;g<1!H)K5&TuA?Taw3B{&wte&>R=S$NHZ z6~uyTTX6pxoS%RZHYHK8Jz2GYzAWfO5x62j3t8w0LsZoX>I&8TGAdQogH$5zfPHRG z#{(Ypt(JCVJ}cdCc!`;Z*b=-c-WX|pkb+yng>QR7Q8+Qi#!i{S7StfkbaM7d+fz^2<`j(hBrN79{E!nilLslp1J`zg>+^Bl|9Qv-@QSN(?OOa_3O>z% z1gE0+RnXMyptu;G#|voWgpHrZ`S#$546U)0VSfYkH5OiK4&*ZxdNC3AufUx*aJ3s_ zMD(6mX6tSlF2@*-;af71h!?aw0{G(*k zH4}ay8=MtY7M?^8`MYT@g6*c^$bq%8;73(hNFPXkChUI|#^8=!VxfmiVFCX`ga6^d zB2XWT-!|a23S5{~X1#8En1%BPp@E;F6>b~PhJ_!&SQ-KqKC9Q&v+70lIp`=4eBTDG z$s<}S2$mZPFQS1aEPR9aAGxRS&jE4Wz^5X@9t=7F-EhZ>{wQYa`SN3eSRUXTZVDDV>vha zxzEqT`(m6~iDNm&ITtz@gV#LBbwBXu1CWfPd_jE({_7|i8div-6xzl@ZwP*W3;Uf9 zJC6j%EzoXR^@Eo52Bq`S`ZP$oIsBN8NRSN&oN5U9E`ZHm$DL_tiKWay=@4+q16Z8_ zoH<|SHGktCi5xEO22RMl}OkG7!fY(7z2- z#R0XBVqE=6W#~wj`U`PFFg)f4$fXc5fR?huN-sj!=3vx|VBhzEa2ik&04w;07G^_2 zwQzSMv>FS3{6f5JhL5&`s%yA@6?pCD)c}q27`AsCd{q&na8xnIcOCStgM8QHJr1#)J0>rM9)7}gN8le~ z!H<35?OW)w6BuG8-w|W&hX&1tMy&xC-a*>ssg_h{sx=i2tVjTj8=xz*pi%BP_XDVM zmEHLhsOi?#RnRuK^cUeZ1GwHD8WD=|Yv8GBK>q8&=_2BZ2+R-h*E2|KFgO-OLSWBh zA+u!S4ewnaUM~|g4un6+0~ZT{93#=Ug@jWz5rL%w3+j@u>Na(PI#ykyK2t-$ue%tZ z9#kfQZ&RT!LBO9-_?syhQ#{7@12N!fXnk);HWWuqL@rCGd;GzZN zc1PjE;6Z|5-A+}7g*JwE?SRkwQRWFBgL4z19VSu?89UVg(i(m41W)dRho`~45x6@5 z$X0@b;QpGhl(FE;7TkFl`n>~uo(!F=13xY!n#h5U8u4uyu=Nh)s6bB%`f~R)9U4;= zt$6~Gqkt8i!I{x$Z8-Fx8T`MFSb?+eU>`4_bxCNAhMv`cryK^0*a1KP45KUn_UA*N zZa{+uBj$Bru5$~soxAF1*i#Vb?S<<{pzW?`wH7=_Rmi3hJ~zTAA7TTF-%wAgCxCX} zpmU8ufjeSZ4U}#L%8KE4vta49+s=C2{bO@rQEMXS9KS9xH(RiQImft$t9Y8_Py$(({lPsGSa17X}V(K-0s z0&#3F0p7^~2 zC^k{useV*t>K*WzCy&%PHBqe&4b3N!K!(?dx(=&~vQ`

{hCvwO1sDIze@yI*^A7 zE6)(uxt_arNzr5uSI_X=dunjQ$YzzURgS9MyTanI7QTyhLsfn0!MxIp&1oyr7iK>x z9B=QacH_6`XPIu8RvP+h3hCx@Wyj)@C)Sq5FG^Ksef1Q(RolVX*SyKBGllE>2yK`p z>T2nXi+8PZ6^MCq6*7eG&C1*u;k-uF#^?i#sis372Cpw(H@%j5mNQ?~Zxf;!q8t@h zItv{(=M0G<5o}e>D*YK_2U8Q{8C@a2nXaI8bFH_xv~97)IQELiRFTb0r=}29qYqE>E(foCO96z7)Vn@48Bs61D##7SMDY337Mldec5sVkKB@^8{T@sub?&!l&N53^x?HWJ-d8#(3G!-rs5~71<7JJ~S{bekQ(7v5@>t#| zPmssSYviYLfHGD&p!}Sdo%TBr0s zo9aBHG(?#5yLquU>$lm@r`@Dk$}{XzYLNOX9luqY&@$n7ilBaOT91uCD}!% zxK%nJ7b+decq)?aM~jG`a@CDWOSzu(mpEU{5Fbf)xx2cXoTEn5XX(Xs7Vth_eXYEd zIeCjTTZ)s~$vP!Zd8KZ}TxUFvDD-b6Q`9tNoibI~smRK9wKaU|6zUokhu=Q}XBw$f zlsEERdA|GwCYt7ezcj&Q(r1?Wgq#RbVw?cHp(NE-_=Hl)E81` zsbyHMKa-6bW?TCom1PU(!h4!d=^^h`6S)qJaCc&S5B`YYJ z?nrl~P4qsrFoawK7Tr=7D3g>m$}6R&dIVl&Ir)gloB@?{5K9kIZzvU&EAlLPihM}s zFrq+p5Bx?b;)-~6pqi}ARH`b$N>?RL=>|;yoA^+Dso&B1Qu0NORyW|cG&x7EggaGb zs`^-UAv(@hFRRnkYHEq{M!Bav!2cAbNO34m#im#li(*$8)l&^s%c&k}zH(ieqtsJW zIUSZ#UHMCiLMsyyKMbcfQVXc6)G0)RJ=OC{W!TMKIaO||+*bO5mW}YuW2jx!LGY^s z;;6&$eICRezp(HR`>=X5k$Olelm}fxox-}(Va&Lvsm00>Wfd$dTN#8XE(WnfZ)y|T zSVQ$fRDA=HNP9#AZQx_#;30-lC#eML7xkE02yZcmyavq+lw$cWd9u7%elB-{W*k%h zfWO~BWl$!Xr$14#K>QboX&NC~5U~Oz!P`60*Dct8GqpfDqzqCb6cJo2lJ!bc$mgjN zs?Ja!z|++M<#mao9tZdKDU>onPL}?Z>Plf!V`+($B~6k=d86X5ZiTmK2XD0(s|5QY z)4rHbeNeO%4 zP^u526#@9Qp7cOlB4!aV&-rsYj<7CPVp-0ctHd?ue&Yt?=+4#P6!tDVn~h{&G4q+4Od)-X-bpW_W9Z3c z#{~Khx-%V3OVlIiYG*_>DVP=9L`0i}If*+S4x^G0aotuwD*wrAq;6uQE7CdAQDpyM z=N)q$Ud~I-`mWioUal+7b&ij=y(M;wu29T%W>w3${p&$W_vFDpza*VZ+MBdGsd3V# zAJY?4zB#|-edazL_z?8r^M|m{k>7HE_RkC|y6cQ%h8x5D#)Q6z^sHE|QoD+0qdu4G z61>?j#H*{Rm%f>{P^cqZmSzsVLUc(0a(a%6iLEt0*tuJ2xeBciOU)k4cvj%YB!=n!eIs zmVR#XQF(j+<%K8J9z4I@`ugCjU#|4O*7CnIkB5DDn;KQpi8lvyj?Sv@+p0^4L7o2W z5Y@VJ1P$uA_ zm%nMTPNTWbPvc8@M$=WhR5wz8SHE0;M%PyxCwTA|*d*pN^B=pL@2cHti1b+H-N&y+ zz>5GbAjx-$S8Y>&?O^t}x=HNsh_u;D?w1TGjkS3@9yo`JandO{P;tqfWlw3UYqevu z?LoFe;)+g4d#a^Y|Z2@*KdtvFy;zS9D-!F<8bds0s)*0U@sdUA ziz_EV_amgouCI>nwy5F>g{^ZFGiIlDOWOTyNrL86$cGj0^4`d=M!(2?vi{+sI}LA4 zzT&#@^51(Gms}flf7qMih)@$)pOjy`GdO+Sp2(p`>qX_M+-qtLp3_c zl~U5d`owb8+PNgYbeTSjhj~QS8O2|n#|1ITbx6B1auUt#Hr{?5< zh;Z);b1U_(lwST+c;n!1zT3h+(nWi4z&MO zEEOdd4lP=0jk2k(IP!z1jkmq7_@4=$9~KcF7d|F@ayetznh>AhPl4Y9q5^jLd-;#| zo9avZn7lTcw;Gyi?{S0a-_`F@ZShanZI>tpDVd}ayG8h}dua6XIN;gOtC`m*&th|c zi8thHtwL=+j$OAxY& zul#^Yb)z3v91t}rY-hj%uPcT}f{wjR-N8z5MfwG^m`mW73T*@}|BGR$%W@A_efy)5 z&c#k^VR5uA*7;F>L<^cW#t5%J{2m6@4A~uO3_BZoB&1UC%)ndz(SDzO-guk5mw2&W z3q0?8+%)$#tusu}=`>rps*IKzpte-L$hDMqs!SR&Pq^tCSy$Ki%amts=JCP&$W+JJ zRo`CQTR6(~W#=(E#!4HR8ca0vj`pN~kk;xTxwkmndDXty_O0||=@{Eg`$xw>*K3iM z-^iiL57|S$FS4#8`=QcW#n+3v7qEF5+0M-R8L??^Qqz*RCLRB7O&IyX^(y1Z;`{Ay zrC#;EwC6(kOZBgr?;Uv=o2V90%w>W=G;T_B5;_@X&ixVw!!N}YVnP&KeamnRV3VuDxnpL>XzKPt`&hlb{ zQp%l;s##%n`M8K7p+)|BuP%oALStqZ8I8H-IkJRa$+qMB3KNAvd^Af_&E<~HeWh_$ zspv+L(OOUv?Hr}lV!d^LnS1(3{!@bv1^*NLI;cb7DF3OxN4=|iMR~6BXyeh;ql-sJ z4}-@d^IB6i<23zvZBxO-c{0rTSRm|Y#tNG{Ko93|AMdFtt3dn;#TJ<$7TE9c0Wgy^O!3}>ZgR01JnsR zn6c2+AeBfpTz0wMJMP$CmPpnPmVJf!`O$gpa++nCGVcBAo$@3pAhF5Uh|l-m2fu0g zqW_b#5BJ?Wai_-}zk3toH^12OseUSLX-wsKY9m+H8r|$yyCt1hcA)qhXA9Y+$RfmJxqM9*(GAZes8mzsa5z4IPCjrc_OkPGpI=yJw5CfFlj$)laDv{rqLZ4Ur$=k#!u4Ly|XJglQ*B-Gi5PP_MK)x*hE1#CHVGc4v z@xY3rLcCxTFPX|L&vs{uDW^I`9_P~97Zhg{&dTeQy*Q&{TI zd&2vVHQoik%6dxTv+mcuH|?I^!zE8&z5VrlboOP3sA(6tF8WpdI<0&=`gN($d1`|olcwyECgndW~wq@>)gh}984%6$xZ5Mb~LH4oL5=daMU$uXr=cF0o^um6qR z;I-;aWs-bX%yHIqe6R)BYT6puYdN*jc6BRrL%6RWXP)U5@6*lC!@sKk9Y4FT>LYs_ zz1w=7^sMKZ;&ISpsE5X5o7rLtGx-^R>X+*b+HFEr-pbPKEM^E3&-}w0`Nu+>_JV$y zQ8d}ieLeIZA?5?di~5z?_Cf`&GxM6dk9EjotY2!dYT5v+e_Pd0N}~K9RvlI&Zf@qR z=RD!u>iQ)vmpiLw>J**N+(9INk&S2C(Jja$xzP2&zPcpbaxH&EPW{XdX~$EB{ha;d z=l6Br`hE@la^ti1lk|S~TjurR7Zabgcsl>-uIJ9zUq3bfnV&P=5hNJ>29`I}?%H%h zo09gA+mqIYrWL|Q~z<#aZ)N%pYZu>95qmkO2?e9l+$ ze#@(n_a*O4!6Qoz+as|f-BUZs!^{79NQH=xQD@2@i^>YW6SCg_p=YALBR_(gEN^f< zbqJ0S$1}%EXEHEzigZ+(CjAtB#0IW;PJ=VV`N~;G{9O(siEXubnw!^7=OWck(a?E-B{B=bi;J5bZc}T`m_4#hN*^LhFAJD-5G5g%{TracZVIs z#Rb(J9b%W+%0tzQs!PjsH%7};pbwIT%4_kQqkicI%lG^qIi8u_ z(;`!kCBOT*{panUd~!r`+|PMQ4HAER+5GYFn_bV#Jr*D2-QV+Y!P7f$+azwv`R*!j zXdOzbwQEwTowm!Nu4<lgrn+!amVvvK_ItcgU_wNfH%;pG+$+C;WF(V}jni8VbcI06eyC)kVP)DmOi`rKRDzh$Ro zn{vnH?aUuou(6@0FVb4?I0h}*>=aj0vB^SYyogK>;=OmT*Z zbL8>l1G7z-tM6?t@`~`g8L%hlZ1At(j=?#BdH!>J|MMy~cQF>|h-SNRmT%72;V1GB zcz>b0&`Ssx?(og{IIa`ti4}nT+)Vzk;H^EY>u9)ZEHqs+Qy%}Bb4*)}5B2-Bt%c9* zDtacluf)plrNdITv`wC?%vMK|K&+9i#|qC5aue&0`EpCFp1zX&b{araC?R9l@TrIU(!;0GHugY;{{+FKgYgB5Rl%dHRe(p?a_hZcW?_W-Tvc2

lL&r0H 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 NwG@AJbajLO{6F#0fR+FN literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/alphanumeric/l.wav.import b/sound/dialogue/animalese/alphanumeric/l.wav.import new file mode 100644 index 0000000..8c05113 --- /dev/null +++ b/sound/dialogue/animalese/alphanumeric/l.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://d2o1hk6e4bbss" +path="res://.godot/imported/l.wav-722141f795e13543172ffd960308b24c.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/alphanumeric/l.wav" +dest_files=["res://.godot/imported/l.wav-722141f795e13543172ffd960308b24c.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/m.wav b/sound/dialogue/animalese/alphanumeric/m.wav new file mode 100644 index 0000000000000000000000000000000000000000..6ea69d40217af2fcbfd37bb3aa2b57a9d142d26a GIT binary patch literal 14900 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�Mk^~bOD1D|TXkAF4wiT}RmZm;{Np45MP>3i#v z<7^|Mdsw%criM$JeQi3Y!K8%fh*s)0*f@U@yVtqgIm#WxE%UDSP4imVZuV&7+M<85 z|IJwcBj;yYmQZxn{GJcOCu(kl^@z!$nn6zJGJa-uBC5YARt_X9MnMJsDHh86gP>@b(J~yIrE)&TqgHW z&r`0HKj1y&eZ~7d?cHbXqs+G}=#nq_f8~h3e`Ws2y#CvnMdb|78JK-Gv(t~opR3;O ze7X2Z>cb_E5}qUPlYjIq+2gk3sfIIgW9ue1xLW^R?MJcMAxD{RSYd$YPO?+kJ)Rgo z!h4Tj=;`jO&4X7+>LDUesj&VrJ3uScUx}Q4QvfxbL0{#QSihT(oF1E z800!U5}@2;h+@g%xu*cM%HWgi8FJ(hJrJK+&TG<}-U zs^iq}m=<(}VjlLlbOU5}4U&tpMEP5)sX9nsX&4#OE995qPd%+Usa!}_$=kxS)m)6l zuHzkGb@UFOjg6DNLrj4f-xE&eiDeU5iDxA@%-hPJ5hxcriP^%NKy812?`lq9rR+tw z)%}S5;qh@Me!6$C_XIzbyTGQnDjeHYD+XjG%wY;swAcpJ%o6KU6RZR%;x3nZf7sY5XU8F zFgutJ_%9=V*%kbV;scRHek8lWGi79+5g*j4-w#ZlrUNl>3joHQz4%M0;!_%FOdeul`Rx-%!$`?XcN75WzX+PZm~ zE~+egHrY%u7%xDxWi4d|(yNf0X(>&SL`XU#y~RPo!a$mTx_^j&tv}P>G%zgT`o+_+4w8zd*83EJ~N*-ru9g}(l&g2nQHow^x?~g2On>JiO3-G8yVf~By@u2 zO~i)y!rDvgj;T$?_p8=ipGnr0+PvG{v?IYb(kivCwM;V4HeIclSK6)UQ~u?=@%bH! z`jz*yykMPT0&zlfKLm>$9CJ0cf9$#F8j%CS_l7hxOw5NkQD)k*Tuc|tn?&shxuK;dx2!pAh`v(P#q!>X8RsHw^JndQRLLFY~Hp^@C7V|mtNAo2!SGC2|tFlkoqoPlFDOq_L9lw)bJAbmK z8a{k_*ZSQ*@49|ip0+-HS!SQYWE0`JEWNGl7JNFgdEC3|lj0Uc9S%LN9Y`%ew+lu5 zViqz$j<+_M^?em?EG>Ik99%dnzjJvs5 z%MAH$po5O+W@~3_W~dvgb}197(~ADsLCMuXA-|C|J4ZNJ`)5b0>zXIQmoD^@cE&cy zQ6h)vN8TqFQh9W3)i~`)!?Q4T)T`Kj@x5!Ti}%DDBfp3C)H|3lq<|CHaAM*?E(S@`CI3p+BgceB{)>E~=b78; zLfyIU2A-qbZ9dw2jUNt{DR6GFKem2_wO+W5x9ePA-6vRtedf%uUNt@`xtG`TH}SLk zH(h#z^n`DdzK{NK{zvo=-?uyI()2s&8-BQd#}&P<3WF8ST&*!;M)i(06KamDezKZT z|2H*5`qCTZK4oug>uqalukBdx_-1!ngJG4LRK^y2i>$@U@{U#Yot=EIWmd|dyBRV& zqE%$u$WIZI!nOuK)DP93QeRRHQ%zTGRSi`wVeZftq79xaX&QLOd0Yb=VfKagzRpCp zmv^nORqDo8D%21W{E&5|pv* z)fGwDWLZmTv7{|zwsU23(FN#TSzRe7jtxBXuH*vjN;Vu;JTbn!z;a}x^n`4OY>+e> z=@%I6J?lB|KJ41&`pf-_9l~AWCwRMfJMeQn2KNp}16zMfg!$j9l&U^vi+Pk~kmb5L zv1+xkdd1?>lSNnZFXU|c-6@gB^1eaZ=5Ot@D@%XcBZQa4XWg>! z&e6V@^yrS&Bq0Tw^Av}*m7EL&yc&MC=c;?D^NOvv`EaGPG^^-+K|(>xLT$<3iW!y$ z?vef}vI1flO#gKL zGW**V?b_sWxT|v?y;}ne5-i;!n}?#ClQ($RWUHNrIDY1g=OO7E5@nClsocmb!=r;i&bH> zStncDTav28%7pUxk~W3^=FQJZ&Z_Y2U|AAJfxre~tRZ<$p3} zvejhk87w3yu%)#uhC;zHXfx=6AK~xxl}P$-W2bF6`>8VuDD(?i_|DD ztBjiMx^eo!`Z>Bx&1=;>WdapO%$Ik@H)64nmwSqiL9fe>OKV6bipv9MeHt&z&F2nq z{rR^4~r2BjMe)4CyEYD`oSq}}`_i!5i5m)Tl%a*wm&RX^bR?_0G z`lITYDaf?IxTkVZ#f`FSCF6>U^9SXoWlhM8&xral_M7*s=4<+w1z($e>-{tHcW!?3 z^263G+%m~0qEg-8a3i!bOc%B!c#G}>^O#6S#~?fXllb@S7T0{oXj@%Nx#@c4gYrMi z&Xtm7C(5TA$5?teOSv532fC14pgOF3YWN;f9Eyic46Pfo&+t+2*LKm|P_<=p=>=3N z5u|Wo>tq>-7UEhhewk+N4$6J+J?$FVs!Yu2U~!X3^Wp62%I6Z@dH65p5yUNmG$AVqRdJU+OF2iIh-r%_So$`pGo-*t42@{8UQx+tPw#LduZL4T^e3WxN4Ae-;($#!>lYuv9~9_J!Q z2irRHX=6~ugfhOgPI<8Lf@PQMFW-9U9O8&-uRb_L6}AhWMH_@rhIhILnh>=_HJz!) zP|OphkKRj7A=coOtgm?4x0Y+d%G_%AK=vrN-3iMpA- zd&sVcozXAiuEdM+hpO+2X;w`Ua!k8c*^a1zk3ql7x}t-zefU4}KNL}lW%7CW0Bjzb zfL=wT@wtkb)Jukh=X0BZ4=xP8Z8)aS)qG%XQF)4$_+@mgY@^gISt;R=jz}*tTzKoB z>+9~F&+GWsd>Jo#M?>C04b?%3NDE}K*j~8nSNqoUow%tUnMdIn;rZlg$|Z8GxJ#Zp z>>Rh>x!j?)f3iNbq?#+McvG%%Wo1UWsq|;@ox+RxpK}}M{K~rUdsF7fUrffCA1%MD zzO6_%ra%4OT3~O1{(94Gpa}B2rduN$5a*FD6>CSehE>>kW7gvUl7? zu6s_CJ;^$y{k7m*A#Fmg7#8X^+A>uK zrn9n=W?&!ot@5?9zOs}mBHGI9q7EcK(7`v5@4!WH+1yC)6xc&6Nh|iJNqIbn~ig_4CRa+4HXOLC>jqXVt#&b|L94F8@SZBNtuO$zK zT*FvA2=W_e@CWjd#4IXB8LRH9b?Kx*gM&)+&vX*)Pt_DrM0cs%fUD#x};smC8z{;(8fZLKcS%-{ot*2< z-IG_6_biXfE6UlDJtIq<<;~ic8(g%!VxDahzeB2|RN68_tc@;k`H2dKUG-h$VDcwXp;#negGI?!BgKK8z7+licaB@ZxANT%BqRAULT)E! z(eoKx-BmM8J4JUy?+@A;+%WWBSW)<*h|Uo;!Xrbw88WnCs%ccHVm@|3_Fno$x?fg= zF2;it8;En{Wa=x$Qz#t_yOkg5t;&te1=R=Gr%2MCfIWggHIG!u$~M$tg%z7E>nzzM z_7M&RhC^LTZeW~HA`FCj$H!0wcor&w=0ZhP5>(ubftsYd;0td54PQs^J8rV44LiY| z=Sp_na;3Y9U9VjuT!*2yp{f0?b%cdB+fB5ozwun9u>z_1RyM5kNb#-0_xV`fuAEib zxml;PZfAM224vsOu9Nd4rzH1eey1W?nbYXAWq9;rJU)XSs+p;u5!6TDUGssSBL5)S z?r+H9?l|W($2LctGsUTQWjdwKTlR*wBFIL~v6!uo9Ix0{zM&F@d<<<>Pt%_<91NZi z+|jUHKVI8X-GW(1SEux3D`Ju2viv^29jk$Em;OYe#l3<4{^h=gzSX{&etUoyr%PiY zJCQ{mQbwppXuIft2ZaUGAvZ&q(3sGQkg*|ag8Lah=zUtJ`aQFsUPx|Ml;dZyG;{)* zh`vD=ViWKs^0Tl*$B}Z{L%&f@XN<6$yhe3Wby~GUHBJ?#y3NEhla;gR7SwB46ST&A zpd+Lkkt*R#;EBH->={h*m;3hydI}z49pGLERYO%!4cZIpPG$`rv;bxU#8KI^Y&|5A&}8`MtXj=Tk46WazB zID>Y=>f*iS+ZDfwD5@X*m$DPXGpkjACm*owp;}C^g=xIZ>;JLxogU1_22ldbo(H+yqYI8N$G}ASeYD|5NDWy}$<%+KO z1eB4@lb(~Fl6ArUl3yjPRE2VeYMlCo`lQ;R?x&i|oK#xqB-%h1QIDuiR0HZ?@-vaF zXd~Z>otIsaJQh8HjsC5^NMCeqAqz^yaDQg+85U>W{RtdUKO1vI#BefXjbvRC0omyR35K7X+zu# z`7?p$l5*K*jK()%_0aCpnn<)T+uzo=-#gK}&ile!?)~B&?>)s|;*ud6ZDq4qm#2{5 z?f)e%k=2u5BrhsC)e=p0Ev{{^38>~V-|1eIkKh!Y6+h$$pn9mKybPa!U&cP5zhoZR zyV6TXOFPI?&@6l;p{AcRH8ncjP>8Yi!cs7D9e}l#Zcidf2sE+Z-bg3 zguCEr3A~Wze&agkob8xuzhWC@+i3g4-qx|pX>}#AQqK^mpon5GxKbUDY&R{1Rr5`& zjg*lvjy4t==bNmic2$F`npPQ2n@rKB6yrMM7~^2$SmPq&A>(tS2dY+5O`EHBn~j#8 zwposut|Yb#m%)?1Z@xeLfA}kXt9%;YQ>aP2?!|n2eck=~Kw03rFjZ6{r;*x_P3$Bs zknV=;SUe_yRmv0jHbr-$l9)+;g?vviEVC6M>9zBU(OFyM?Wl!aDePY}(lf%gxWCoE)d{Klby2yv)qp?xwXxVh>4#^j&T73sK zyz`*m_LUff{EhrV>Pn_dwn#QeMnfgVb)-3R3*zu$fe`)<s56wgP{^uMJK*~2S`KHYJ7M3=-rT<2_RZSX`rI$3V5rNB#iRiM`-^dF%N4`AB?x zM5K~Il8uu6lBJTil44{L{EJ~X{Hx$K{Ig3hJPHg7WchpfFZw**PToVjjNixg<63hA zxgA^{*Mwiq-{If!cj2=kRGG}=)Z9zY2FT^K@&OsErDO`^ zgY~j*vPrTfvdyyNvPUu_x&%&rfQ2X#t-1z@Zop>>bBglmdcaOmPN__4_|`XBme*a literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/alphanumeric/m.wav.import b/sound/dialogue/animalese/alphanumeric/m.wav.import new file mode 100644 index 0000000..c5f005b --- /dev/null +++ b/sound/dialogue/animalese/alphanumeric/m.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://c588ew7t8dwse" +path="res://.godot/imported/m.wav-2ad62bfb1ad90a0667f708c5154de5dc.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/alphanumeric/m.wav" +dest_files=["res://.godot/imported/m.wav-2ad62bfb1ad90a0667f708c5154de5dc.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/n.wav b/sound/dialogue/animalese/alphanumeric/n.wav new file mode 100644 index 0000000000000000000000000000000000000000..636914e52f288b5691eb9c60befdbe0fa85242db GIT binary patch literal 16616 zcmXY21$fk2(~fL5*=(}D^_I3sk>Y&7MT$#tcXxMpch`#-ceuE_drP5EcW<}rn@u*! zKk)odo|dx7o-=3Wop&bZ%=C%v*fFa$f(&dkpu>de^TKrqf}n7%dIWzgL=g&5R z8~qrbIVL@loKh=!r~E@EkU+RoEh!wlI#*I zSAkJt z=K^_~d|rMIPp8ViIzoQTew2&tMl#}EXIUVkOlyAxV<$3Y| zkh-p1Q?4b~k!#CUWs@vO>C$tU<-BxD`YuUQ19_~x1!jnow}T`dK#Pn_%Kma=kZK+1 z;*7joo&?`5lWs_xq{Y$}(26YemQTrrptq{9R)_ouv>gNA$^d=clCHrD?n`f^-;zx- z$!$Q2OCTGDm=O(9269b;(LYOjrTNlA>7W!Z`N_lN1M)-pg?vR`1@jSB;60Q{3oSJIv9BjU}KovKz6|=Goe`X7wb6|6K;9tYPbkhQ1W5mwtmZVl_4Aa4SFWy@Nm zG13cc-3_p1m#>1PL4eN((pA7ip;QI*a2r-u1!;wJM4E$5)QD5g17zmPWwKlL$~Msd zeX#OikXSAIBn-6G32b%~G=d;3pvNYE1FftE31a2uauc~3=;M!E;{dxmV8-t7tY*g#cP#fIrqpTEP4jfR3)9$E(r`X_~ZDIxFQ%b-^DW z0%ioTz!!NB%8Tk9Yz5`$2QDay$5ZB|M)k3SoA!gj*@Rk z6Quf5pcE-}m9|USQZukuB3RV~<6Gs|py@Gyrpj_K*sGD;O&$+2tOmWz1~fE>Pkr#6 zFVa)#&R==YNJpi8(l%+mv|3sR;~fKk{wkG7gd7UGi2-bO0UqrQnjH-syB_%A0r;5> zRuhC&L8>8PFsl>hzXr%13%*(xn6nD}ZVR)`0G3_{-Y^-)h?KpclRKcD)8Hkaq;kms z()ENhVgpx77`4)tdKK6!el_6Pd38m^^tnO(`sO%Prx^OfN|!4PWr>zLI4|2f!~Hp zt)-??7iocXSHfZTgMgd@xdg^|2!AgE?idfey$diBFXw}Y<-q+*@@CM-Sis$4c;+EI zTLCsIkrTjo)`NGq1?|-Ye{TYEc7rkdz||L4FhyPizVaHz-~jh7VDFm{TmIlM08kb3 z7jKimb5_B)6G1;s?WSFw&VFRFT9B`3QE(8w047j}k+*<)YR}Yxz57+7B za=^(w`23NS2x$H@erxcRn!qT9!1mW+=3DTD1909BRy-5*It{Ql6y}@)c0Ui=^2q)W zVe0{l1p(0Oh1^p56HG%{ujJ{9^fEIE&4lUfDM4?|LE>nc1&QAR z2iyi$K|mWDAd;7Y965m7aS;FR0&6vws!8>vet?Jffc_?cw?B3t2=S%?#Nt{o(qQnT zYhY;+a1{WaTka5xz8sKo6Igiz*j+2f1FNh9zdQ{q4+B~L#8e*q+zJ@G0D2qz zcV$tqx+b8LzF^l$p!bPj_b#AG4XpUFvpP zVANlH#DL9P!xaPT{0DH-8L+bgc=w}R1QI)dpU%VB5fFtgLxkK8cuABPSmh$H)+z9S zrJ$*Xav;oW28p@>8n(cvdtkoa!0Kh7g)_kTrvXdp5(@0p9K5;**tjFe-UaYFSKbR2 zO@!Ra4hTtu*b)cxkA{(2!L!Z(dVE7*78Y>-9kPw{Fy4QEbE8J^-Txr^sgX*cR~jjh z?*aPy0a5}0-JuY1`@s|2K+e5?wN^{!0R{hoESCTicBwjOU_Zo#WQd*_@@KHXK6xQ% z@lRZ=4{NFM|9;#NaJK-SybX~v8~7m=Y`Gu4TMhEGR}f*20ZQLXZisu+8Y z97z1DyO|(|2;OoDv~V2c&zHhsbtk|_O2I4QfyeqlK6pc#DYcUtN-d>PV7t%2M)g2T zL&4TP0kutlF`I+7M*PiomqGT@2joNL-!R@;=@eM_gH$SMLFzvm9SyP#0~8O2zvjUD zufQx$KyEbB4049rkVogr7XjhHasouK!N7p^r4A6!?!c`5{zjcru*PS|dxwBsv%ss) zLl*f8BCrnD(g*xzDqNFcwF|)3XTf5BG?)t6(q_Pg3{iI*WPHoPPPveCu9v?;ysiqf zhe34BhyT5Sv2!3xtb(*eI>ApUI1X#a8R)AMk z2HZ@Ac@Beg8-Rry%St&FuyqNp2Y^hwqzAh-0oIEKUJ)SnzXc|{1u}hy9Muf|`3G^U zfCm?W2717A)dAao*kTw+dJ8h@Kk?KLI4c+aw-`K)kbgmRI0t&Z30lton^DyVZ2pOl zU15ZNpyj!cC!PmxPY3_vK-bxTkbS_6QL7zA9= z5KvYNR^ACDmOZ-fI{e}UXrVP!XA71`iDRp6;9z?0WNi)AtinydAfWBn2S zZw|Z#Y%&-m8UayjKg6aCU@Q|7jzmCw{FB4Dz{AQwMh|4oD)>YXc{+(mAaOZZybPj} z0-}2(qz^I+*@;|2o+AlJGV%-gjNC_#B1@3|Fq;n8JRdkD8=eph=T8!FUog9&L^ z+N1PpY4@@!h2MKW#=ouqX#WZR zJ^X|HzxmDfBm8!o1I#B()lIjIt&QIdBMjyG#d=J?UWe%xY6~>oHP=}UJDvHaZlbnE$;Q@2q8j8 zexi3P_t=AZ#=8q$8(lFj%=N~(%o*%F;_%v=+o#y}S>IQfD%M-VEqUed%b%6sFF#p6 zwOmuauIxvtvb1JN&*HU3@rC~sJ}l@`keWXxKOwJL-ss%zIZv|5>@`^(vPNfRWIfKd z=1j>m75pxYD;`m*EI(k;TUXff?LD2(UCljDxeok0p_O<+5|$eB6RT(Ivs2g`tiZO^%+VawT-Q9;Bx-D$NbNLjyta!jQ8!Yb zqwj9mZ}`t}#L(Z6tM9HqrpwZXYbR@7u(jBWOcT)cR5h;NP80N4)p_b0nW;=AJ}K_v z=de@gO(Yd~be)7r2gR16#dq4*--iGy8wmIL`h1+1@QwpLYds^}mtCB*v-6~bc5JkV z+7oOiZCh;{Y@2NBZ8L1mY}wW^)@K!X#XpugfWVNl!=?30f0isLK}$v#Z!Vf!Sh?VQ zUSRIO*`2exWZumOsntwxW-c?I8NoDSFeX8LRee%@ zN9|A#WlEXD>@ZE3_N#V??yfFb_fEG#7o~fm9j*=1V%jj!VUczn*r!N;(D0A(i*cYS z!!*e(na}tQ_V*9?6|gn1dQeP}gE7?}&4ZaWr>?J6MNkx7f4oKkRSq*XJZF4XuZ$n5fyo1t5)!{8tcwqgKNC-X zkNWXAX>D@jw4)ijv&bAK_f_ujJT@OI7*SZecv7je{E~Hurq4e)k9u}r)w zU6(QR9JX6=U71U1)qZTMri-qx-mb51zzqlWqHcihrFOKohxU-RGkkv95MbJ5e(!hP zKQsUf80O#H@0rP99H-CK-qG0EbL=O!heoe;Ytwbt^urAWhCaqy#!%B4(?D~KUqAnC z0bc@rLEhl=A-0f@A@xJ*2B!pe3pnqmHt#o%FwE7b=(g#W>h|jH>*94U;jeP7SGYG+90?Ef;6`wg_MOX8c?4L@(>T z%C+F`dO|$&+@Ddpg?_SKLYlV**kt9FF$gx+GPZi+Ui znX3UqFEDR6jWCjiGrB(7TAJ4E5vDa$n;FF1Wm>T5>@H0=EejevpdVqVVRRc`nYNi@ z{cL`V{eSp-{nP!I`6v0=%qgbR#!-gqdV{X6c8exTgK1bz6U`LO4$V&BEj!zp9nbVv zSEGxm>*QwT8sfCViciJ$crx|~yNn&dR$!em3pxdTh~&T*G;*jT>YIV9BRh_dqewo z+bG)?tIir#5n!>FJuBT+GQGH8QOiRAg801txkt0lWv)x_m)bgc(XU!btA1|#*+1#y zuXoA8X}dEVSpm7ZdEEYHjhnYJnE5ZotjbiP=8i0Vmh(Wnm{e3tI&PaA29SbdX3vnYV%z4 zbF!P%oud zshPZi7_{Qt`8QvUj8mHnO zg7&9-R(f7|8gnV!Y3~xgoscQi^#%F%3CH0{D9r9AyzD=9KD_1l%tijRZe8{RMZaQXArgpa?9 zGCCJ@ERS_$c;4_H;eybdug96(LSxY9@@Mg(kmo(d zMR0pL58Mlu$6_ytTxx@Q4!cG3QPV}!jLlZ>p!cgJ>@sbv{;eUwINtQHX`g9_>5-{}xvk$V|K)*m zgNKFkVaD*4;Z?(xm70f^1@#NKX>M<9qyMHQv{{-S+G@Hc`VNLb<2vJb<1ND?{SU2| zjbJv?gH`vbi&T&*OZ9?YuKuk)tNu=pSFIuk6AkcK^edbdOqE7MmV6TSDjtY4e7pEo z++Ei{4ufrZ#VN~9OXG?;R*gNuvDPKH!?+x-t9QJ&mA8N!%RTTEx$Ul0=XJ*l`(Rry z>*R`~mW1-`vbfT$;x&aU^2)N%bZzq7pBuk#k3aG4^tbNuQ3>Y~IwYL_7Wa9|`wg$2 zKh-~4_8|4)lV`2pD}L0;S#8^jB(nYii^7hFKMy+|ILy$O{*961LGM$p0pCpgiIn1N zi84hFdf0c{Rn5W{uF4*p(K4fUc1FQ*%R zehJ2Nx$!)jd?+fQ9xwTHZ-oTGfBoJrQE z9#9EX2l$3f(H0An-w3O@gRXXtE0D4Lu#U0ywNG_SafZ9*xCXn*fd8L6raG27D5u6X z+bww(cn|Rnh04Mh9{1Mu1i4)HA}dkRseEtgi{kTz)$$wVWM>RcP5yP}M|nd0x0tW! zmlvN*9}m6Ly`KM!eK_;>?Cbg~y)P5juH7E=Z2OnK8NIA!=q`OmXl~VJHA1TQsjLrq zZ_HEgB(|V5@&NgYH6gw#4=OGARjGlezolJ%m-Ms0TK(LYv_JJ$uBDvzKEQu5yNs*+ zp9XyLUu=GE*bCX>R$U!qtbenRIuWr|-$sR0H&*)?aWi7mmWWmF0e1vSp_tA3=KZEijKi2qOXKnr4^|#mERBK?h&*8U%@AnE4Gd}>kYPHZtHxBPx)VmlZAB1SK(EkNHH8Nx1pN%w244$^FynfW zIj@>e9#QJZ?bK2FCevP%qv@y_#SB)hCx)PdM9%xKXSRF0`=ckzJJrWa;phtN2d2a- zA$`OO?+7>R7-zk0iMD*T%(Z^9PjY?t{OcXhYxv__Z}%QYw)HvWK1a*HSaPky9fw?H z?lH95j2fg{<>!~lNJrf^xgN^gxi^XT|osK)#?^@Br zkDuOTR&}{l9YSW;9M|wc<9Chr)Y(&YX>h5&F0CStVe_!#c!9!1)Wfe!`#p;+6Z4*= z|7MuUo}|Kw@%TP`A+enbV)|$o>1F*n-3qpZ+JZ+) zbG%{h&CajRd+rb35#m#%6+RB)cqw{LI?Zo%yY0)Y^DBH6rM4_*Pj0^uB#nkMfqr6b zKFIx_ZGZXLl08M^i_(g3l})t{az6Liyd(KX9O9Z+aki*yc7qiEA8Wro`h4+I{-@`k zCw-y6;GeK}m0$QCY`Yn8CH%sV^YyMAzmxkaG%2wp3JEa1tMa&BXp=8ZCO3?(bwB*O z*}z;<&#|XszJ<0vcKpYc zi)*plgo!+;+^sl|-ja^{8u^q`4=kH%q@NMAsq*|`R2< zd2+OGJ-5g;$+68|U~lj2=HABb;0uNBzGFhBx09!q(`nUM(n?R3EGrpRYAkP3G0?`@ zFFJx8Rc$HdON$re^~;P)`JU9|N7naa-?7AbiQN)y3F6nmAG^I?`K0{riyP6`8~(TU zPUmM~UyK>gtqbr)re=}*Yq{!9u6wNJqsV4~N41Sf4(TeYeA|7$#gDKvogkFBi!1gP zsx#03y8JyPVMAhB^3z;fMYPDPDD$Auv5_^a)T-Pme0NAl;3vOoezE?!f$c*#g+Gf7 ztsEY4IfV8rW}6bI*xG&9_N8Krb(9@I>QwEK^?Ns%U$0uUsamBqW&Uhy|yW_mpWw96lO3<#TYqT(=xg>>hhVXNWtN>%u=1M*5V#JN#ZQ z%Vo8PS|64(Wi3kkmbNH+Qof<0p>4SRg8hr_T1CGyz7WaHO|O<5^K->_B;icFCgDMX z>ig`3-QW6tcE1aJb?WKKM^zs&PZM7+{kACmLHSonr!5XqM(v93TKh#yi0`2K34ePnQGr$8kRRUeedsEN#lOMPM=&b(-tS5SG6-O33(JzQF(4< zBw|gdB{0B$i+PdxuHWYXCiqcEbZBw#%Ya|T{p<4ylOpw}2 z`_zxwecB3LfBhESUd;pbLTVxriC4z1WA7EUsG-aQ-C@&o|1Sai0@D0^#<{w0%zjmM z@;=dq*haKcRw$d3$;ykw1H2WwQ&Rb8K8f4SHT3S~C;Ns;dL#zDipHWLNDnE{_r`m` z^U<}%S>h;iOm?<&wRTtWJoaRI7JAmZBVEfJ-)zIJqbrDt0Tr#SJ8d>Q;hg0BepOET{!^3GHYxsR!yjP@2R{?@(0;oi7!09yOXpsSWypCppDUnco_MCxo>O~JSuWT^_kJy zI&AG-HOy6pg?9COuRTh4BelvW%1r95`kdyuZjJtou94;dJxjS2yD4vw#>>61GUX0t zkYS|%kDzKH5y4jfVB-|_4XMTpFgytE3%@fbV`E0c?S`@B=#>5k_1Yqm!AvyO+Z5N;Mf&i6p;1) z;OC?_1E0q}x$-3Z9bv84=8Y3p zic6)t;yr$?E6ySoe9r8Yvhr8e-!s!Rc}*cJJ2pTLJrjO7d~H~};P?LJrq0Gn z#=)j-ex|^N!Hq-q2eW|}OwTkWWF9h~@9HYFZLvn%);P4DhC&zlEfzzpQ65+RB91AR z;2vxXzLF@WPO%-0T>^vwnR{vcYZ$HAVR?4j32IGI&)`k^eH|PWFcKgdFP4bWE~JmZKFuTb!%d z`#;HrzE;drn#oe-7$r|cD+iG`RsUnp>reU}3iefMUzw_^uR6MNo$$bvSOZC1aczpEBgN-~jXO3Wk9DPK|h)vq*J`bDNHe#iXYn6DW3=u#P( zT15PZS)i)tCX$KHz^w|NXbSrs>G%rtnPl)4c#m+Cxk28R!V7T*@(vpU=K~>%R@g>) zw6BNvqq~XgoAaP+gy*Aotnaea5V;IzEdkO{A&`6P{BAp3G0alaQel~H?FI4Vu4}V< zzI%deisPDfLAkjktDsUIo%0~8N>)VHw5+RH8?w%3eoyzMbo@mozWG|~Q`!4l@1>90 z_#eOWve%bC^DZZ@Xvg_8ArnGR2lw%h)o-L#iWAazKAxMzg?Rtr6~b@6mv?}>o_$Vv zQPGV2uetm4q{5u?$F8T6l^mjr@_!x7g%*TjA>M#p=GBH_y6M_Gz~zSx!KUA)ex~k* z7aFf>o+4RF_UheE$8ASzS39nmZ#}Y3ag%(YT20rZBUDMS8*xwhlB`U>Vfz|l{i%?$ zN>d^uDqAC5VLO64n%`>g(&v>Do{x3I3l;6jR8sAoWlu0~=+9J5vXgR>@*J6? z`pj6h9}GWC7tO4hGsI~psedciU>0eOZ-MYyXdn)jAE4jx+QfDuUC|CVppT_zzV*UD zp_8wn^cPPwudW=Tes3}0H0 zR64nJQh1{DE%wX$Pfb6ie0~`3Od6HBtN6P!7LjSv6c^MbEF)}hh~58<-c3(YWJyW< z0`8#avu6qC<6d(MJ-F+XExx>Y$>G9-1?LOBC6lciJg4Mx@_@F`JUZxWNSjb5z3ExJT`5UV5A=Yu@4E|;^i`y5xzR}X2YC?Vg`=b3fv zCKh7{GIn(xrUTnit26X7pAJ|NJS|ik)-d#UP*eYVhIF>2Y8Y`A>y3^_Z(!+)xuj3U zGDFzc>;SeSlTYtb9izHY52*~*M)ef7hIXnhPd7nVs@csPRP|HVz-J?Kq=8~p@r7uY zrXx8hgOS$H^$9aZRDz$!JE0uu2Ki-&^cU= z^{$2Ru3cXk=gaq9^1T%%^WVA79<@8x6##GMjor09MlOy!$bIxwabI<8wmQpN6yMK( zl(QwPUuKO=N9OYEnYp9#vkEpAQiZMaV{*D=WF#N?+3@>-_}%f%5=Z}jnVC@Z+Ww#K zEb)W6pwBRFf=n@poln{DmPow#%U4gFFBy>uXevsh-=v;`%RR~-YnfOYThh67re%f0 z;SEL`P|G#rjobaw{1^GZGPgBu(D`cyF{{;k)PtC%>^4oP_J?K#Yf`@=^YIFKtnab6 zKR1H=<=y1dBX0Z_nMh-7pr)E;0^5x7Q%|LL(l^!L*lRkA(cphL&=lM(*cmw9KgU?0 zmDJa$G0FkN9->ewQX|y6LGM}G!`f+@!^~=W2UUgKt}Is8p{mmJm>Zhex}o}}dS3gI z{Xy>`Co7(y=}@;vKs8k_G#6{3API`7saTD5LDIw{LK*D9_V8}vkN6tMS!jL5W1@+2 z1#ueBMD~k~`NkfP^R8pPqqFm&Yo({2cQ!BcPx%MlNUptmkyG#JZtrO~I_5a*y1kw? z-gSID-v$5J4ejeI>}7{aHW$4u=$wz`W#`0aKhD~l*&*XYT4-vwM)92|$e3b*I_>bS-k0q5~F(43(Qo9^W`& zyjS6w>ddvhs+eFgThNL|w!O{_?wR-vyF?1=)!IIdug zYmaIMu&{fsT1gs+IBWVj$<9Zx6H)99P3c*;W#CIiWC zq=hV^baW$iICFuy%2Z)Y>O-m&l2rCmWMMzh=BOU+fZj*jV=pib?9YD2Vz4#nBRI>y zC?ACyniI$xbTSr*55+N@L)#;?v{9hE>F#c>HO_6$0j^8#81ALFjNc+`6%ZkS5Ab&8 z@;qAZ16S^CE{yW2M7Iy~HRA7hJ~_YI^cCOB>Xk;8tSrWg#}thyOw50t+b#QP#*DPv zDGA9%$z>^*)4pdA*%dj1^BU)0$QSdE6jT)UC@CzzW*^K=m%1u?sPdW1u-m+v@l$<3Z;k8>GVX{gD+AaRVULYR5BT)3{=#@mLSpcKsfuX412VL z)y_$W8eVAjsbDnFc+u;uPq`IrR8P`b%XA8Ghw*-}8 zC8dRh`9$8}99vdmrjRi#BO`r$dU{&Rv>mDLlxrzyYE0Vsj0rhQ3m=p}bET#-HN*8WM zw@Igcn}qIA2jVAQlSaZm8G)b0pW&16k619a8y$eIK~0zqE5e^B>JlVTS+NAGg7g#n z@H0G|Gulz#PTP;#Z#!t$Aop;O)q}xFlI-s0{^+{y3U-@3Yhb@SUHAudrjTliON2mg zYj-0@Q|pHEwx!F8YZf&soLBHFAIRJrH`m}l=Q_j?4a~Us0ir!QT z(E(3G3Z&yuWAm?=Bt1eXd^T}~oUb}XhpT<`aPY2M)IU^rN~>B!uV>OU|I;@$?lDp3 zr6!Nzf-a49(F3WW%GN|UVI@|;p2vE1dv+4k6136?OkH)9>L2nBk)*h%=nL;S7zLxz zz14NpZRlgv0;NIm3jHCkmP$o4RE9+$o6(=xYrLkyfmes!!dZw@x-F*pHu!G%+KF1I z)Sn5pL=EK_>4Q(;S#L|vTh~wLTIUbve=e(g1e`FJ^8X2<5HI{A4CH%yW4Vc*XYOI{ zrtUWGq3+S{dhScEd(N(oX|`Gw=gL$iYYRK%FV2n0Ih%bUyMB%-HzZG=|2Ut^znhQc zQ+ZVGz??2Qb#t5LuPDkXi?SDau82;o8#$6jm8$C*TRTXk*q zJ#{X#OS4SZ-|)gX*VNd=84`2?`<1>$YKVsTAZ$B!2j5TpB>iCjq&549oyyK+6zYYl zK&m#GqijdUP;sit>V-@Xb|!m|sj5z*2&I6r$VTzJu$S-8r|`V6ObnAxBgyCqtO$FE z)xjp9Tac$v$N3n#Cr&~YTA@?`)qp`#Q<3x?;dS0ko+vl#>g`0GAnrogGOmiHHxmU?#8TU4{1heFG2mnI!!Hh4de+`s2pV^yibmUj9>*7uVT~+<`DB3 zPP)FUd0J1mQ2k3arNZGfX%DbhO;rO`3Dt&bK)!{ukS5q5=zFRwM*A)ccZBx74&nhx zi>!jWskd-~_6USMm)M)X};piAfl^hMQSYC73nIRW0%J}BxF zDrIAG2bHT*sgu<)Ohe|a+N|zE?^Ok;c&f8XR#EEK%p!KRrk-}9HdxzR6V6^&*QB3Q z|B~O}L~n&MN4bV<2HKygdZ2o&TBPy<=WQilDV56M#0N!3#V5Qw{t}D8CZk7@*HGtM z59*p4i-BT0@s>DDik4|46_V zN09xkwNb^f@|d#N(zFt(o8^a4QCv&fAhnX4ARQrRWbh48yEq=|4J%>2&^=J+`WC7= zCnG)3b(jNRN{Grq)O@IidO_Rh0{T9^o*qxnpfA&*z&>Lcf?W+c(RsERyPR1E5v8wc z7!^m>BMoFr@)Q|G-KOfRcEEZ17u7?s-cr?E)i%{PRWmp{AFYZPLCDN%ZS4v7hGLqDRg$6256Au-a@h#XabOCY$YN0()ciR@K(zVER znfy<-O8Aag}ejumsRfd-ro~ISgtb7kG@G zf8DHmrAu@ka*lvA+Bwb}PRZHcHPbZxCGOI(aAGpS_R}%WUCcEX8i^02 zhjLTsCvrkfZ?e=M_OLQUQS2c-lbS#$O%~+oiBQMeKu-VLKO{?MExnDtPCMxSkaxy1_rM0>tjxqQBrw=iK>QD?EmcbXAiZQy>J`-% z7>%J@(Cz6Oz)&w$hgCaO*HoNpGHs_E0O$RoO3~BDf|*$Y`kZ9xI=bu8G@yy#*Hb-yeHEyS463t_Cj3g}ThH=C0YUTQ1B! z-2KX3-*W=;tM1%vZVVU5?eiqN-C!fqS=}+$?yz07?X>N)ov~fA?Xq>ZrCVdICo4qD zB1?5km}Ru3%yPA2hjorE#-0Iwv%;~%vD0zFk>VKWtn7+$ANGWKFY8s+)5Pl10-!@+zu|PZ}^?~k`34khpbU1nz<iZs>o0rBZexq_MP7@Yw3W$FmklZvE*s7BNT>MWH@=~dNKAu1cp)0?Uw_mFMj{U%2l zul%5Vp}eSEpbS>-AyO4yoX1MhY{UY!;Jc+5DH`gSZ$Ss?bGbY67O8}Ghbt1^FUBE- zV1az7>eoQc$SkOM&G+r|HS|3e>Orh8^LFrF;p%WdJy$$;JQh!HE}k3a&GGi)5As*} z?R<0oi8s=_m`n7;c;32axm&ucyK6#b)ydrxexlu?>yc}Ui*;Rcws&SZRyk@qvh5e` zo9rv?yX=qbyuFj-pd-r>;A{r>n>%YctHSTqPSW+$RqSrUUGi2FHv8_1`=tP=uh#-j zf~7rTlxX#Nd@aR0Vpqs9W|$tGkHXfI6plQ;#{*xQLqL^=_s9IHI7 z{GqhKSz%M|>_8YVZnu)B2&I&!Efco~Pz)+WvVyKbmj!s5r0}r=F)$krT9s1=i zK)rt+^w6|{cg3&bDRGI|2ll+Iknv9P1^d1T8{my4N(h8Xkv75%;iT|IC>F|uufh(Y zu5b_PXfJu|dA~tj+hT4D_l(neXL!GPtML>0t^7`Y9v{Pdyyv_Fy*lr2?gn>=+sZ!w>Chyjf^0R1tFdRZtfZ2Rk}7y{*0bypenw ze_dGbixrE+!O-9Ir@!$C{Cf*}FvmiN!&zh?>O~h|PqFvdJ}erGLluy}d!bu04*G^_ zK@G|TI2BF7*5M|_TE%CDRbf~BQk+vvR8&zE;t%jM_!ayo9;R5Ouqnn8?+KlUSAA*>WO38#fm0w+}Qb@fg4ZG;-?x8M;i;7yGN%mhL|X(+M`xr4lf zj({N$`Ig8Muv&A8mJlfv&eN|+YUmuf2AvsydQeiJr)CRuh7Ev@mj%$BQYhC!<{%f5 zkH~lADMZg+(1~^*I#Jp}2TU~dv1|iAZ-ZPwXy`jQfxbb%q0gWTVLVy`wZe>Nkz;W0 zEn-1}(RT2}RKRstv;c@rM1COYNDA@^Gx1t$zRn>=g&oqc; zHt6bE0`tFwUX_{>FJ_8~;y3XV>{DMC_d!3&2(cfaWCM&{33~QQqz=#tbQiw!f5Yrr AP5=M^ literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/alphanumeric/n.wav.import b/sound/dialogue/animalese/alphanumeric/n.wav.import new file mode 100644 index 0000000..455c90b --- /dev/null +++ b/sound/dialogue/animalese/alphanumeric/n.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://mc1vnfuhpuwr" +path="res://.godot/imported/n.wav-b995292a9ce9755047a5a6a6166a4a4c.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/alphanumeric/n.wav" +dest_files=["res://.godot/imported/n.wav-b995292a9ce9755047a5a6a6166a4a4c.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/o.wav b/sound/dialogue/animalese/alphanumeric/o.wav new file mode 100644 index 0000000000000000000000000000000000000000..01613995bff6d80ff691cee492837d93fa444471 GIT binary patch literal 16616 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 literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/alphanumeric/p.wav.import b/sound/dialogue/animalese/alphanumeric/p.wav.import new file mode 100644 index 0000000..96ae91b --- /dev/null +++ b/sound/dialogue/animalese/alphanumeric/p.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://blbcb70gci0q2" +path="res://.godot/imported/p.wav-bc58581e4a5d8761e1c8b91f069f951d.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/alphanumeric/p.wav" +dest_files=["res://.godot/imported/p.wav-bc58581e4a5d8761e1c8b91f069f951d.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/q.wav b/sound/dialogue/animalese/alphanumeric/q.wav new file mode 100644 index 0000000000000000000000000000000000000000..80562cc6dad954bd8765fe38e945b9258c235346 GIT binary patch literal 14936 zcmYj&by!r}_xFi8eI`j!RP1i-7RA@pO2#8244Z{r6ea`+Z z{Jwv@&wd7G&g{MRTAx)r)(q;^qsPFu7&g4iuL5QvAh#^bI@AJ9f;nEHeB^?b z2k#D}*{Ba{g<7JXXeQA6fb1w3YlMYkjj^hjhO35>sJXc+r@Q zoXCR8V5UNpg%Z#+bP?@^asQxMXaV#;15|U7gp_~*jhWDQbPpYe*`lFs0l7~BKc`^C zQZy3e4MRHQk7|PK^I_ySkVlF6VFKnrY3M2RJc15E?_202`i0EM1H2l6(+`021r&ph z0p%0uBmYw0#X_N%A24hu# zYdh%nIE?NKaXIO=~$tM2XyisJx1q%)6Jldb!a14%MP>)?Sa{j0grb5b6MYH2`{pfbJHUKL*CHKx5!}4HS$*Q8*d}&+niVRE!Ex9MD++mKcI4 zM58Le!&=~=2+^Q91k|shC4h8Q#3K@36;OSk+!b0oz^oRkhH3+P{lK!efLyoGeRy2} z+;*bvptsAwQwd_RP{70wvw~gi0b6N`0+9+RH3z(xL9er*#eFc#2-F_c1*Dn+5Ay(( zH^7~Y1VEj~6o34yoTosn0?@*-TtH?QSbHbns2p<%|u*0u_`9FWWt`+#`43O~|c(xO~+zEF6 z34Hnl_~mh!{|$JX8|=3Nj10om7zLR7K=%k?m=8QA1$4X(bk_ul$R_J$tIWg9!$3!u zLD~}N_di5}z;g)90N!u~twBQoM+TYXV(6~~*(ZWkJq8~zgD+SC)g<&BT>}}90B8H) zyWL<_Tfn-??W*9R5L+qejt$!WXT5$xC%5kf@Q9Tzk30hOAyO$qZ?p%hvCV5h%*DhLplMS2(YA4 z5cigWz3&IlI}3Bh!s{&Hbrh)V0{%9k4e;6yUV0X&yhA@BrdW^zQMp{vQ9s#ahtRHt^M3psixi zsS5N&VMh3L8R*S{dB#Hw+z42_hiL6WIK)Z|Ap8k*a2fphJj{I^xVsD-Yz40vfw}?C z&A>9{l3SLnMYlC&bnu9Ib0G}fuWj~O-HRxwD^t=VKI3c?5z-<9|(g~1c z1n|@l;!+*px(oQh4DjW0^xwk_`ad2>LM$OcdKqj0gLe$ZL8BmAl!7h20Nw2dI#D2F zAE3}0;zDh(?TUXaydj`F5>Vd*z3xL6cm$jt1N7!VRO=61MF1{c0qOGWUJV5xB}7a$ zMBFBjd&h&NuLktiLM&bgnp^~&9RV~FVO|+>iyI>NOR$=yfOS8}2cw|>UWgQ5A##*J z%Yj_*7V_dHuzBg?UFpbUFazlE7ol z;M2dr_8x;z#zLfc061qsHn)L4=Yj=1gr_lp;}zf}9dtxOHul0duOYsz1L{$rfmI-V zx%J2V@tCHNHS**ia;EH)8v@#~Firy9N044CO}3}V=mCcS(qmh zY$pI#7uBKH7>EJ;0PT}tm#YEMUf@Nw;rk|_<#FI)$G`^SK`$nV;0X9v{IRTZ5B5Rs z_8>1jRe*JBAYW<0#>zGP8n9adw$&1>LJ8Qhur8?fXLU6dDDDN1zYAJU0xgw*w#xH* z5m@OplNM-RjLL;R(%c!)vM!E^q{S9#=J0#V~A@OBC;@fbvdL-0BVS}c#@hXJGQAX&L3 z9R``Ng9qIPJs$*A$H5GZ!SfqKuAUB>dj=6zMm+Fu1JAw>G}nTL=K}qWf3n9lu)M24 z6!CW!_-^@qyV1D15m@ODm)(sNSyhTO`IUT3+yKWxHt*a zqT!oWAp7n==$7Y}GcfN_n5BFT@V~YPd~Yv!&~dQ1`+uT?3H%v{wMZ$%pK=UWL%x~@ zk!K}fbr&qP6uu_`lmBI{yFm3Q_{%>;X81V`8 zcM3RK4|G@m@!s;adwFcS44Nso$=M)r8<0#y7?NcMtiL^Awgbi`|M8I`So2&5w8nw; z)dBCQ4^eLte7*>F9S`j#yxRgCM}psm!RV^ct9c;2+)K zd1F|eO7buHoqSimA>Wff!^%qs^G*hPF1L^)V1MONtT)VAz9Ni(XgdX-tp6itx!eb# z&qqmnL~DLatf|( zE`@uA+vDEliSRb?{Utq+$73Cc_KI$FGq#Y66xxb+pmi5l3CsB5Tx&L*nMl8(##8mF zP^uQyff`9IrDCYBl$KsVyXgzeGWH)Xnm;AH7fY0~%A@|F*{T(ELv-VHwRP9EUQMtj zSglfNlugC80xP`cukbhdS9~1*jz7ys@ge*tZZkKI8^JB&u5)&-6+eNW#E0`gxnbNB zwhFt8@n`PRv*@~X1~s3`P-qnaq#1vJtwzJ;zobRJ7vB2bE1njf7w*39Y}XoBdsnba z;|g-=Tv^T`&Owe>wv!gAj4%`x8wv*Ib;|kn3uRx+K9_wydqH+qR$}JxjJ;`(eg>rc zN{&n(o{W;UDZPJAO|6r*G;Km!aGIRDEv;?FitK}VNAyE&<76Fo&2MUGbj{iIlN()V ztZKBV-i(^Ns;sN<)h|)?p1;j3pgxcj2?JIWrTZ|?S%=lqrtFKJDehAExZp&gp?JHY zm1Uo^iS#cqi|H*8s*P%+dWm|Ws=KnQcvtu!tQFrVhpLM-^>oR)$GSLe4UJv7R~W(_ zW=_*5=!493E<^ZN)lYlauW3M8!0Uh){sDfJHbYe?P7&7d{rK1XDEd_*hoMAnGVpLh0$1>_7Z=ai6NcX0NuhZlLa?_N8W+`ns}IXvlA3NhX$> zqZmj=5S{VPSXUG&50+;64trBPO+9Db4c(ty3tZJ*an4yzi({nYxc#o}vURPcn^`Km zXIx_FP>SjQD{fsBU9cdJ&*_!jJ)?SRz>h&m%7j_*>*Bh{9g6E1k9|A!&GF6k?cKKv z->`(CiPe*Tq+b7ZtN4t~iy`HwklD5PCdQVR+E#2gzjf{ACH1#ePYXGs8zrouD&zI! z(Y}7({hrtEovvq&-nKqwkKtm;ox&CQgYp*TF$Hw-K*L$fSyzs1Pz>dts&ciL{DS<4 z``y8M$tex~dxjA2Jn*NG=s3TlLX!S^V_*|Fkb z%>w^DK^H3Q3W*G{2d4yf_TQ>y)JTjGOuUhwFLW2{D+`sqR83U}mFvVnVIAjV9@8f3 z8P$fKz*Oai3SX6jH0O1@{WAk*238A1{#w6fnrTWu{xyA@48g-thSXacBE?Ia<<5|+ z^pFLTegH4nx@k90Z9p5sqqhI`dy5Mof!^aPwJYM{w?}wpD{eK@f z_a++$(6tV>Nb1B#mh{@)b5*x3?H)9(Q9HiUcE4` z#c?5Rf-eThx~-bcsw&D!Vo!)fE0j}J?bKh@cJ*0xy6U!anCRfYasu~*?aX!K-wH>R z(drJ`L%K133;dFG`?YcEJIcjE53VE+3VS+TjEW#%DNhR7$%m^)^{zrQ*^4pk{kOg zDdW`7?%z>7|7Guo|K3i2ed*2agPGSG7u5c-559)giY7kuFtzKsiRND}EA- zltJo3wN33-rHbdd7^((--}lpnId<6|*>*ch-5X>hd7X<;xA$)o>~JP%aP|u_@3wuAHeN)GgH}RRa~FJR;QQOV|o*2Gg4z%enX>QLlQUsiaHQ zrR%EdUT6wcU&X8Z12&LJqiAZ2B0>?OC?R9WI^;GY4)S1c>@uuH4RR9fS-f)jX;=$5 znR_XBmk&y}egArgdU9L?oj2@S+fGY!v)WX(Y=rS&!>iJN^-}Tc!nC|zzZ+-1_}S&V zH@@kYfRB&gRe4+G&9>L|UjKNt`c=DE{a%H>Zupk^SSkKR3d;G{Bw&j*KdN#~Z0*nW znAO+TuUDVsh(YacH&#?17`T@2jfJ|ZSvnfSN{8!5>0|W?`Yrm4B`u1F6b{H=o7*=> z%u(g8&tG1gZk%cV>|3u;iMhHR!IvvhRrXg|T-jT3ckp%pG|d{Nl^@4FXZ7r1ZW?dn z4SWzkn*B_jBpRZ0Z=k!q^Pr=bbF}-i&xYkv{z4VaCI2bG!4+dGiJ_w_Jqei_d^F&c z?wPu&vX1bQV>lx_f(z!|{2QUKI8Ur2t`v6gTe*vD7#qsoVGFop!U^SF^${)O_suWa zPv;k-J)!QW%;S%-M`^F(Bk3X*5LJj@_zAoho{5dYzQL;Eojguf%c;_R>6ElXnlJT~ zXz7A4%s1D&+q25u))nvQWq)jKXUR6*D|=_;jDH(ml;-O%lw=moDHxU;o4qSNG9@Ib zcf9J$#*eq(uY335?Vz`gH>ci=e>43}@Y|wyV?LF{7o^O{>0aiOJ}7U59%?YHO`UGF zd*OZV^o;2`vklW|Mc6lg2YXQ-@91xuQaZBaaWPZ!uw<?CjE1hM_=tB#zkQ_F;x2Woyu+o7*ek^lPEwB5RSL8O-wNqf@nuMt3RqB2|7qGY zs`lb!z6lr0-e)^9iRehA;dk(>_*r~4tpBdU{<{$xEU%LieM5W!z7XGd-w)p` ziI&&PujPw!MOlt@9RC!;?89c}TuDZW)j*%2gNS0hf9#WX8 zHcS}1kPT!7W)ZcO+=<7bJ+f9_B*!5QQGvR_ZWqUBzWK!jZVz5qp!PNrS`av95 zzTsD}DYTxtONG)BU6Y;4?cp~G&BguV4e^AyR2(Bt7Gp#|BO7 z$7v^Pc=c4}F5v`sgZW7{R6HQo;2W^#u%mt|&y%~z_2dQ+M;6F8Wry4nb|Evt^7G~1 z@-k_aFUs57)5hJ+HQ)K((ZTWFKFpqCYh#;boocCM-dT3fa75p_IHn*mxA2!alTGja zGd}rxk}cunx3ls2aglMCzS_Rj`ZE0U(@$4F?fRVbwJ@Q=&mF(&>rXfbQcL~nhb?UQ zPphdNv$|aGf;x0H~s@DaVjT&jj0tGS-l!f2AK^+Rk7%^fCq*hZ~xdrj?v7 z{#o?3=yh>{KBDZ4wZD56a#4fCDmqW#(U6aoR))T=ln_!Dw9x;lrkYaE^<}0|;fm|z z4U$vrPzbR8oXnU_!uIQ%%Ucu^hT^UtzX#tMf2^qoqc6;&$iliwk? z^w;>T%jt%n{eRe#@WgfB7RSGj8yHveb^h11FHOH(`F!&8+Anc&Skj!-E;(Zj<2|R? zPC;#JZfn}P-I*?(Bjm0XJ63O*UB5%saQ|!UG`YmSp{%RkTQst$tf*7TcYRO8Amaz) zS)*j&44Tr(`XT!Ir6I<)<_-1)Pa4*ZIiXzTw>Y?ErL~p2R9RDbW~H7L<_GlB)>qEr zdeM4v0uciU8}akRQnIb$qe4rmsE>*r67&T0E~R)O^xa_y6wy z)!*O$h0d=o*Fx1argXarW&-yySdg{lc0>>XON&=Zv#V zOU&oYlIg!P&N!6PWSX)ioSkpk= zS~XLdC@vHu#kOKIQ7zsSaKXf_WN*<|6+4NQ*crL1r13?2=Xg`RvA*|GCA1Us;RDIJ ziXO1a|4dD$HY>W2=kPBmO|p7hdY-@z{eh#Jv;(r&R^KJ5BNFgrVwU0(wVY0)Q|bM5Gdh?00lH8!i`a4eC9$shwDyPJ zj(~%KiGl3`v;5O_lQp-Myl|SmN)M#YC@v@lQ+w!kY<)glY@pJs2WY$M9_ViA+UsUR zWbdr5scNX4DHaHag;_#hAxOBv%bcCv$K+CoWQc0mB0#^rFU4!}M*C( zkl)AxawB<*SdQCJM|r95wWpoi=5#nZI$qkN?7{XYwhp%4)*F^n=Gm~Cd}A0}T2L~q z_(b6iSmXKsUXXP^ok(5wqx1KKIPW)N~DX)w$E`Wt-C-f;+ZuHzJ&G$X2f&Tu+%oymSw-yf3X)JfILS%q`qod|v<3 zaHPy)x@Ar`Z#ElDgH3{Iis`J`VV&)?c?aVynEJ|Bx(z{^iq%4ohpw$eh0G6ZpgW;# z!nLDF;u`8MKb1`2-Ed-y)gY>qx#W1oS;Z?ws)C{ZrYg|2n1k$CK1w{GdZf9k>*U`* z;7LGqz!Cone$}Se0K%6xH#SVc4o?}W7iC3NJ&xc?XrRZ-ELn2IIJ2c)OILB9UJ3%(vw1(}BP!&K}D zUY(dt%pyXFh4?ybAS#oV!piHCd!=i$^OK{UAyQHo-c~5@wDon{5;gcl47= z#NyM1VnK(z`Z*cdlQVPD*8Gh6@!!PEYowJR!lGaj-8QM3?3QMuMqB+P^XxwWE zDqUJ~wdi`m%Dm8=bJ-0uf2HOBoRBj82l1oIkK;djr07#7{@nX>{m;oiSN?3C>PTyl zRW;XIyvGvjyTuTGaiIfiCpP-jJTIINpW1X-{b|)ZglyB;=>U16qrT~!KCvjKFtM;k zaR>c#LqF3|%QV|AyXdgnSK9M!>unco2kk4Jvpqv(FQH|dDoxtrfcL?JLzaYetdJPE z%x{x=n9!9uLLSCu$Tg)8zOK?ga&@dO(MK_quD~wg#_;d?xBNoh$8F7EMZ<_b2wP5>dwkNHi#z2N9sm`>MQSfcV>8gnukJiucu-{t0 zblo#;f6YBr4dqiIhX2M5;Q}}t`;}b=JKH>Z7ga59 zH*^=%5uM4piU*1e#WuwYaxIaGmCEsON^`}fcWkh)wPjhiSSML~TPs^%SgKfBnU$tn z#>e4ZjTe)eKg<10CUO1f*6bYjX`ZH0j!OP-ADk^EC{W=K6mX4wCJB0ggdt+~`+2 zL4RHUsI;B2q-?9X(2`^Q$9BZF+!kSLVq0MwYsZ}{-0yv_v6fT<*IrdcS3jUukRfPQ zkRf1>Usuh2F@(EIy(N}l#c~a~x||@Zusir+ayvBzE@`{*m4&@Rtguw5B_#7#K^JWV zg&3-gQax6eYT~pVbk%f=wB0o4Rd2;49_LmvQFI!WNzJ6^F-h!PzMA+>*{W5J)*g+KB$_n94U?#Ht^rMNbV~;l>NvAGvRb4Dv_Ku zNnY6>Ym7H1MDil(AsysV@)z+9Uj)8dQR?g6;x2SXJI2{J+nm-@)_<)1tTnCqmS{_v zxrKR%X>eI9BWAd!Z&PxjD6PPpXUVbrQf2?08J5vM-IW%celWdPh9dKLrXkamc{g)< z=HSe4neDPme^)Lj*0-|0@>Zg5seT73s&203sK+)u*C4O1y5{c6#er8;Q|V*!LuY^` z&(Kz{ENN2`t>0$|F}<)fw>NR_bhUAJc7JrKUE`dXvxBpztAi(4dWhvIdU89IL$!na zBLg)-7Xm{A&gd4XvxFw>1H}V83KhYr{~qa-JOo=wWGlKdbGUF}nOILbKq-l%#lu1_ zKbs#4=jPGEH8DhWNNv(MwHtIRbjjLdu-Z%)Z}5BBdvqi$`V40S8j8Zm?an`_GsV{XwM=uB!6Wl*$GM3B{qU)Vu3RvsoD@-_0+ zg8PS12}wMvfwjbI6S>3)axvMI+(695CDcxi@U`@`bVWIeZHd-KR<|Y0y4?yVIJOL1 zj%~N?mo?3@+pICoH@+?P(@!k^uaGDhmG?ZS^KVmjepd6W{7hfwtgMji-`U51)%ZQ_ z_k`aKetUlT{r>cOVeYVkn3BIt1Dt(O0yA6_5lmO9TBBv{z&g)rjjGq3fzE&K>Iwm&fB)#VvM_ zxLsXQ7w@;tKf+&xQ}aox2|`DGWj%ExO`^uB*`qnF?yTA^KIUy~6w{X8LXDyBQ`_lROh+z@ zUnA10!Ro&>CQV(fTN9;OqaLARlox~nd=RH$yD(SiuC$A~M@^&biXn>CFerS^(k>7LU*XL8Ps99{0x z+_+pKPs}UJeV!YW`y_Wn-hcVN!YDm%dTfvK-6ER^Q*~d1%R;AzIjXIx7F^X+absWu z%{(rVc;P$f+-7}hs#kW~Si7vZDb;+?+ROggfxEI@Gu`*x8E(we1LEihZ!4)5+KrD? zjAf?tos<{VGqn?S|L6{C^I?zrn19Y>DMk@9uyFK6u8YF45BN>;5p|Q9#eL?V3Z2EV za3=Ol=pej;+oCS~DEkD)4vMf0$WtSG5&Z=i}(1 z%r-WYYbcBr2P=_sq-wINrs}GaQT7s73%B_)E}YxMW-+aqJ@hZC1~pQ#hCD`G!5?B@ zp^~eCe)^JpjI=;f$#L=-v<&Nn|H6C23aA}%1OJ5WL27xFZ;R)S%jKADuWf5) zJz(i!>0p^^xnL=>_*;Xm#g_Gui>sMinOc;E8A(Hy{$|Ol;)o(;VNQN>o-=n`Zg6hn z+|#*};1q0T!NS53MP%`U;s?dH;?X5_^hZjwj3Ji495cKP@Cc@_GFi7UC_dy&rMOCi zD-I8?=8|VG#b$D0# zR!9<*;LIc|&_CEH;efJ%n$v`6CaSGUw{V_o&SWcch$wsyHWO|(Ly6bqW9kQ!!~G|O zC~4JnRTtF-R=@xH`;o^3<2h?+ZTqL`fanOrto{ptDQLi9+jf97^R5I*Z2V6JcaDoJmzB#}i%fL=+}>@%8bHbZvrYbjW(t z;xu0}pEiFnYc0bpn=N}SGb}308uL4ozRYek8d6Ii>yMNyEFNAouy9VnoBXK!Dfw^n zHy0c$EGUXBIjp}~y24OokPRt@(}w*9gQ3KD-!#k0JLh_*V#ldF`~bDT--7@?$R4;Z z;D@e}I)$%IFTn$(NOwm^kS!hZPm!g>I?Qf&9CoQaoxFj*y}swZ2fowLvV2RVHL{Ef z@i4`D`WLGZUO+5apz5hwq|}L#d<5H(o}sW2IB^~?z@HE*#UttvvzTiv{41VSwovs` zxt0BtQDT%Zk3Y?+xHs%OSfQ@xg81uvV_~y!QP?T85$^J8ehhbw4PehQlbGSmMy7yS zz=m;o++}_$@W>CohnN=1{)_E-k0_*wd-H&@95v^ZTj}5M@tz)w83SV zZhUQ&jH)uL@w&0EF~_jSu+;Fvu-#}c6D*%?)m;X!6A_9pjK6S3*-!0NUs6Y@hKrZE zWAt=#0Jd3b<6Y~X<#IaJu4Arw?s=Yt-qAjdv`zXT{Qw#6z#Y3$ijo_nNbDlsiL@y$ z(_PpY?mXX9SSfT9F7i*fW9%fR1>KZds;Hs}S3FnTr#R*q+mkOAMkwd0g4LbWxhk#d zm$*=HaJ$&a%sx1mZcpE$S23&E1Kcrwo`8f_qMvw7$lxuUlV#aXkZb4Ct6?9#go$8l za}581A1oXY)(OGFSbi+mfX$(gQc;Qt9QEG|e>6 zG}koUG!fpdH9a-eGQTySvAnX@vVU@%b)EM-_I;B-V+V*pMJI};r_vK?k{&~?RcwY; z!cP1a)Tk_nx-OS&mMOSl8v&It*PsHd1S*~DV56~EI61tE&ml&WvthRyN6Snw$MYZg zKEfX1n6OZ&FC_9y`9^RiVCHDP4ZogG;p+)=gyX_x;ixb}s3v^ir|~2o%Z=nJaTYd> z{my2vCYI;waNVJv;2)?bn8OX{nsO5RlwHg=X3LnT%t_`bbDc?NDzM|(Q?UB~$=+p0 zv2Pd~ZJ|CZ_K?GfCU_HU3i=^$l~=;aJpmOw9Mo}CgtNde;FDkRmADnEH@czvvd8z# zyVWz(y~y>Sv$``5?rJYNo;xxeCWqPa({a%;)e-E7x9_w64Ye2}?33*??Gx>-?YXw` zwyV}eOO`p?R8+>74Kc=p7G@iE8Gaka8GXk8%I2Axm~+i5EP6|QYjZ1QyLPoDHuKR*Ef@CzVf?2bIl~7eqoF zAv}Ugj3n*|w+UYFIgTH~ALA2v3vcJs_;dUS9^)?o*7dmxTmx1mZcgu z8dn$}8#|V{%2G}7=69B>)_FGG{*V2beW$&j{g-X9?Y32GT?J9>jrob$Yu;oTV_j;C zxBulVb?xwk`gThRayp8|n&a!?4sHiN92f9A*eLit!aJzV+6?tw51{(04|Wan!aS4Vu_-jBA$#Qt;BMIBo0F*lYo0LEj|#xjW;6h z5pBuKu=7$YO36)R7U9BwVdtUpMwC*#pFB4AIJfBbx~jPsxHH{-J=Z)&kHTBxISsWU zvF?==#gG%(>Vx*51oD$hym-wq%-}=HZr7%UNrb zt%m)*y{lul$V~WGyaTltZknIUnIBmC`v8CGTgGbShRSu(Lp!2x%lQR?OKXM*) zE^AWR_FW_&UD^BtUo=Q+eg zI8Pp+xB)t7MNOhMQkSVTsxrNTw$huJ`fMt@4sK_6@#(yi&jp+B2DJx+x!>#tz_Tvf zh#kPLXJ4_1Z4M_zQ^6Oyalu>;d!CJA>$5iI4RefH!i;1(GBp^EDWTuc2k7CnioQn; zrV15H6@ua-Ig|_r^os}^;ZJrV=fd6j3o;4XGx8ugiqw(Mi7AAFIE}Z*ld(Ba({>6f z=5pnIa$ng`E|xw^52UNoc_~KPD?vPvy283O-*+AM4()xEFUcG0UFV(Z9pLTgZQ`x! z<-J9oyPjDd(R0wvyXU!*oE@Ey9m5?J9ipS2W1b@gQ2pxcI&9MOfKXH^fYC9)7k2w>Zlq=jd(Y47H>w4q*<&wb`{&MejXSq9pHB|Q= z@shq#zC*s7zN@|+zR|F+^m>cDUT+)Ud0%_UDm|C?qS0V&m*H%274ewJCkQ~J5!sy_ zM=pVzmNVpkH>75RxwBduhRqPt>+;;zD^s7sBbcEdW~0J<7N?}B?_nrX{SU=}d5 znSM|+_MV*&YSLaGZ@8|v2D!VTIE>IvK?uyiP0gRV>qw1IjHv1mLMMrA4vD0(W~ zP;c4LOUnk%i7Zb)XSt9(>0g)_xzkVO{5?*z2yxjadxA=6DDNsj^OE;J?-lP+?^181m+?LU zO@?|>+^5}Z-Amn@+_CQOZpPEfGtslwbJ%my^T6}PQ|!@tyLnf5Z+f%6vX}MA-W=E! z9Pvg&JLS#y_V*?G{*lyjtXv<~bLmh)?FaSQB<6%_XdnEpq!l&|I|en69NrmUgkQq5 z@c^PPv6i?^WDs6BnbE-gu!|@FJQ9dhq6};}f?NUTl)p(@Q3=-b6&0+aj7$a{UL((u zXUSN&(Y!}KA|H^~!O}O9(_qb68M0S0P&`CL!wK^wVk|M9m`2P6i`W9F?0=y4i2j}oIEDigFJ;xqFdx3q%Qn5nJf;lh~Jimjj#9Cn4P(fM?eUrDz zBjnCd?`M+uc{O&O^5#5r1jDa(5OOs=9>>T{@Z)myWTtByV$$S zd(T_!t?C=L%aoE6Mhu=1=|g^ zt6{MIvLgmCSdM+i+TrJL7H~aIJcrf7bwIWaQHbxuyTJPLD|Qd?OT#qy2=GHM-i=ra znD2wCl6DX+V*qO!{{i){pD+Vf9iNP!!N21sybRV8`|wUsak32RTa$s4^55}&fZF6< z*glw%!|UPUpd}hlz;`@=pxLLLh>2s`9c@_+IZ t`4zNB@)h}@yd0i)mTN*443g~7zf>xcvZSxlO+a~+6b3Q!vTw2P{{W*31ttIh literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/alphanumeric/q.wav.import b/sound/dialogue/animalese/alphanumeric/q.wav.import new file mode 100644 index 0000000..896c936 --- /dev/null +++ b/sound/dialogue/animalese/alphanumeric/q.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://bmu30s0vscbvg" +path="res://.godot/imported/q.wav-b9d907f73d4a59dd6641ffe35c36aaac.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/alphanumeric/q.wav" +dest_files=["res://.godot/imported/q.wav-b9d907f73d4a59dd6641ffe35c36aaac.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/r.wav b/sound/dialogue/animalese/alphanumeric/r.wav new file mode 100644 index 0000000000000000000000000000000000000000..b38b3a8fbb38caed2b097143dc9cc4b2f868f86f GIT binary patch literal 18716 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 literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/alphanumeric/s.wav.import b/sound/dialogue/animalese/alphanumeric/s.wav.import new file mode 100644 index 0000000..c48dad9 --- /dev/null +++ b/sound/dialogue/animalese/alphanumeric/s.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://draie1dh0muw" +path="res://.godot/imported/s.wav-0dfb29a8b9a3bf4890d24e227cd0d0c4.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/alphanumeric/s.wav" +dest_files=["res://.godot/imported/s.wav-0dfb29a8b9a3bf4890d24e227cd0d0c4.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/t.wav b/sound/dialogue/animalese/alphanumeric/t.wav new file mode 100644 index 0000000000000000000000000000000000000000..f34aa5dbbe6f14f1e2de3c80ebb9df165451ad3c GIT binary patch literal 14612 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 literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/alphanumeric/t.wav.import b/sound/dialogue/animalese/alphanumeric/t.wav.import new file mode 100644 index 0000000..cd55195 --- /dev/null +++ b/sound/dialogue/animalese/alphanumeric/t.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://ybmvcpv7prx" +path="res://.godot/imported/t.wav-d4e7e7dbe4c04e54e9c7edb0d85af81a.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/alphanumeric/t.wav" +dest_files=["res://.godot/imported/t.wav-d4e7e7dbe4c04e54e9c7edb0d85af81a.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/u.wav b/sound/dialogue/animalese/alphanumeric/u.wav new file mode 100644 index 0000000000000000000000000000000000000000..c41b3fc52afde2c215ea46ccb89348ae964fffc0 GIT binary patch literal 16604 zcmXY21y~$O)1H}icL5fcK-}dn?#ad7J;dGJ<>KxacTb4B3q)}Z8f;-*#^*2c{m(qR z3o||4Rc}dGcUKMQ(Y0%8djuKUVMv$wSqsC|2!fz+t$hlAEI|l*MrtA9hz23KLhds>xe9OH;a+j6 zTp8!%SdQjgToL!3djWmig6HqJ46c$R;EA6rfqqVN%emoPC$2Tug&WPShf&husRju| zbO;B1zTl2=E4g@X1UHNu$IXEjhhcqgTKBjRaxk21O_@2(K<&FRi zAAp8T?kD#WIQf^G4Wsno`f+2qrQA_?F9+x+I5$@SJ)PoK!TsJ`H+Vi7MmP`emcUaX zB16Q0Pfa@q@PTtEA_ZRc@DT&YWn2pMehb>4g6lkY4Mx2OpUW`*dZ4I3a8;kH%{2o4 z#&YZa^jiphk${Yq%Lcrj04jI5$J{6QubQJc3HIUev6goFU*N`&Fcq4i6kt48)uV4NJF)emwcI6KJW2Ry6c@H}@8bm0& zK>Qida*{g;Tpt8kUxog^g50V>Dg^XX3{p%0t5^xTI|#<>0#|qLpFi3@0Pc(c)D{8N z7rD3GFQ67f1R!NA(Ebp5-2rHB;`RW~4}ta+xN5BU7+AzakV#Llh>5`OdAMukL}2gX zNEl)Q{i5LiJfQc(9~(ReTDpOo&rRS4bG=~n?(jVjMji)uCV-qrazo)71)MJ9_JWOn z0y+CY?`kx{3p)D~G~zCBcKMIbx%0j}yoA=f z0JjOy^I-5DGvN7d;OHXgALvxnPe6;r;`7>kW)mBcaRC>OZ*7z+bn4 z`)45U$MDx#pl~(l*%-jCX57i3fBV78lK^QiXb}(4t3f>(@O%I=y9(De;ORPi*I2_T zpy3=?&vTGm$)7h6!~v|`?d%5p zj|Oeo0dIc-j7ZQd321^1B%1(OFNSgZL)(5p!Ax!q+_?apyaBW_0IMp{dkj3A7BRp_ z0ybR<`tatD13RFdq1w0lsY#pxh5+*Pd(pM}A|u1>l>Hz*sf>p8zaZ!|XH> z_!rRJ;NiJOr6t0?jx9*BRjYAz+>fSouMp_`taj^eGYW-vy|QgmHUu zLtxZxaOVd|pN}YjPXgrl7JAtOv~K|HP6AdR!JE{~aW8<5%|PW4(4hXn<0^Ri0`RZm zJRtj0!0i)I@)+)YhW4c}n>oQ>rNW&WOP>l-j^|bYZSTOJ>W~IVYvgaFF8EY0Ao~>f zI04)o25t|5&aDHChJv0pf|;!W*8ya;8LTM>{G=J8ffyths3pKJW`d0-0auBjanC^_ z2SKZcb8Wa-E|iPlngGfRVe}d*tuSf{aQYC&*$k}~fiK$u96bdaD+WJj1Eli*c&4`? z=MT_t7Tm9Z_sZaYD)99B56+(ejbh*phsyy^J_G7UpvTof^B&;h19(#eW^W64FcDG> zmT?noeK{aK8LsJo{c>oz1+;q?XvZ<2phl}-11dH1;R(>hvA}O_E*P$QU=6bXljmTY z4$%23!1yUx?FR5zGvKoU+CPDNcCdvSk74`s{1nJ;CRkTr@T|STuBL%+Jr1)@8gR*h z74Sh5e!*y`fQ}iUdy@d8Jur3#czPWY`6t#gfdBSG`%3tDU|z;Re{hiL7oc`Gw6F1( z13^OLp!eA@+9de9JNFmYm}?4B8v$}Y4IC8#%{1Ut337T5$k#+JFF^)Hpcy1wH6E^J zu1^3A?*Rs>pfC8Jv1;PBuW;`)%tt$cx}$*8HPF26 zqkxi8@N_gFG8kmh1uVM*NM$4-xF5Jn0d!fgJPz>41-x#+SbL$T17KO#fTJ3%cmvd4 zhx^+B)0x0|ji2lbef0qwtigX4=~LLMO>kPNs-Abfa^p-viPUH-5a|Jnx zY(wTFBaxm+CqQHrvK;PzL41e>ZH4wmhoZyL!DwH!C)y3|0l!1hG3W$z96AK;jMhda zXesgrIg4yT79vxT@yHlt1Tp~Wh{QqklMQst<^JZRTrv9r_`S*AViVYh@Yi+rFuRoP z3;0->N6c1cEYp^WW^{~%;V~#&JVwl@m;fe*X~uM61~Oxq3Gf-nv}a-&CF7?{>3q7F zcF{7XHq)D#!|Y_vGxwR-Od^xa{9+u8h>iY(@)q_qdxw3@K7lcBvp3-Ll>N?HStWSr zVW8JX0i`6ccm%vpUt}Zl77?TU(8FjBYQ}nD%dpefTdWL|^P2PGc_(;jJT<=;e-r-+ zzlt9y=q#8mI3#!}C>N-N&4fdQ^Mo6PdxZOhJA`Y6vxP&2t%V^%N{}YFB3L45C%^+;7+rhSUYou8N$ezXY>?WN}s2iQ*X$B z$W&q+;lwxNq4*R3Ab+KAxexQL_fno&o?Le?_X}4G*CS_VXO3fyqoKoYe`-H$UuR!o zUk|^J?Z54Tj-iedj!H*o=XGbS>xnDg-Oyw7ntToX!|@%&Ytl&>nL2DeE*PPZM06+C zh3Dm+5B6tczgSC{2sZ1p2!YBdSD&-jfE=lPstovvAnLbr>ec$p!u#@q*dsS>mv0R^$~`{ z2A*-E@qv*tHZb)wjW!K3H8Q!4M~xB2J%-=RgVqf{IGJk3F(j~v|mi#Jq6;%|zDp;8x{p(Bax}4$J6SHn)w$4;% zhGvewDJX>~=YAa<}ER&7V_Pzhq@uKkET|v?m+i!tk+r!U{=Ug-6v>+g4v} z=xy3%z8{bjm>HCBDGDwQDGJRG%LxAvaW-;vRB2RPv^IKg)X~V=5&wkAL$(I}GB+}w z)AiBxP@Pcpl=qNrm$H)Wk}$~)akO}?=$SBEkk3!%y})jv2}l;qgkRVPEXl%70b)b9 z@`eaHh#E=MvPAhnVwHT8 zY=N|+#35QCEaSK4twUdPLUsiGmh4It`;Ymic)NONs^1k@5;?+fa3zrwP&v)b<%59Tl&AN~|J)?Dc zaGEwXHf2$=HaR5uX)=~7PXC!XBzJW|_-|FE*6wj{!7tK(A#HdGf}5hQk|WZWvJAOb zQCqb^Ez&;L9Wz`sr34r(!$UTOt&NC_ijNM7X&>`0`gW8yk{^CCB*?NkKw!G9KcIc6 zHmj~HrpepOVx%gGSM*bORxpJh!AnCoBY$xulR_s`B5EDkhg?odD4OcU*x6L13^NM) zh}K9>$c`(PsOo4QXwCY*hEc}$CdPEgtO}SF@F>6?5Eb}OV0_^Gz{!Cv0`mg;25d5~ zFf}pW)|1*mjYTC>IHj55Pr^_9Tug!v;2to|=^x}8q8%>wr+H6#Cb~mi>5lF8ZZ=)D z-%3~3soYedsCZR=y!>$a_41T*ens<&2^Fg<)>MqCP*?0K|527wdiZx}$-JV21qXgD z$?crY%Y2kJGbQdP@?H3KR8nl>!OveldlGAXo&DoQsz0kJzj^7Is;{o8cq4{DZt(gE zFrh~LX=56%gW3W*B&5gZn*wcH4#%^DMG_^nM*=PK2Tg))isv-rB`yzrvn0{;ka8P)}* zxD#w`<|-9V9>i7t!`{C<0ypMr?R?@`=~(M{gma*4t82Gwf{W)`=KSiAIGWf8 z*rrs^ubOY2SlP8Au)L`B^zT6>WYNEcj{Kls-khmfGt>DgUB8b@+V`>EyB)8EugYFd ze7)=4;Lq#7KTY5DYh|g>_SDmvoX!TJ)3JZC*XVSlkX^&E{Pqj(9Tl&?8e#W+@5#}2Kt%97Ew;}t(+DF`od>%C>dQ)_x=$TPnBENxS_nz~<^*-^g^BTRYJg?mzS6$ayC(rrHao>^Z z5I7^9GUqYJWBXX!{;Ii^!Q~%*A1i)Z*uJ24{?uPtc?0sU9lQvcLMIo1;kgk$k6Nibviq49* zi{^=1i_(O#!rFplUNlx8;jyo%&BS8=UGEUja(7+#LiZrg2k#4iU6P{p$OztDAt})- zidDV9uirA9G6tHOn8c>X#wo^z#=7ubYCLD!Y2F)fC~#v?S4*Nr80@m_uw({h1|A5| znMWH}1KJDK@yf~ab<(%u=AvA|UH%>3cZ@?Dqhpa(+%|SIvy7fjO(16yyYMgmSpR8X zBVU$xzjutcl{Xr$R^Cb83trMY!I$A1>`(U(#NXpF#0+8^v5cro9Kj#>*ZF8qU3a*% z%66t|aHYB2{kyc-TIkIGotKc)C+k*vK??CB{M)}tGd^=4mwfbn-1)irm(1^-Q`=^( z`}Mgvt$befV&^x{LjPPMll(|cq`%WmAhul09^&evJ$ODreMynrqi$!|7w|B6Y52J) zb*(e8|HP@|c(I*hsK_DV>qD*vxy%cU9rf|rLiG*RE2UVuNa2uAls}YZNN-6Ri3bVI z{Eg^!_6l_Zzv`u3_Z>c4diA903)TB=p^m1m`<{*dwd7W2Ez+BpEeH@J(p|D7`5VP% zWj)n*)q3>^&1CH*U5Me8afP`>U~W+V;I$#cLcfOQgl-J|5%M{Bm4yx*9B{;xY*6Wk zYagqdslF*Tf~_@`21|J2JmDEZPksjW4|QJpd{vvuCoq61~?st8A# zhxW&l!E{sR3nOQP*?R0mwv5f>dZR;lUO}WJN&ZcZ8kz<)3Vt8x4G5v<{eJOwk?Iyj1m3wo`19E9B2*D`c^qCVTof zc(kqn$8B4A^~dU7wwZRb^Dp-k?@D|!HJojO61=6tE8-1Op1htyp?siht$L#BruM1R zHC5W?`s;?)rd0E&z*j*wOIq-ZkSig(LV`jD1h=si1@;ZtYkFeH*73DH)DM&c6k+lJ zS!3x)$vW|V(MDlUK{;u&5pYhTfdeldRoNV(AAdh z0pE<{^+O@TSfe_xG%BAfRw@2cq{*Ae+scY0W^ultBX20uicylZua4)9Gv9vHhS-d@ z3|ljY#Wmj(==T#=I-9$Kbrc*D9hP*E9hRR~%v35=Csg&-+3LHR*IK!Luc3=6AOH_c zv@8p;g&M;P!@EUvj7SOR!csyDgRpTm8^Z~>r&4Ci2By% zOGuI{F(v8K*Ec`TrZ&!M_A9=4eR=Qd!_IczCir|(Ld%&GOb%mbP_`MYJ@;@9qyU>L z*eH&a*H+KbzcYI*iDAa5n=y-H$HYyJI}|Ial^@kMqJL<6OVfb9#@o7?n!TzhWvF7Y zTr1Czot5>My^&^tR^1lH^KYXU*?7u`=XwgA-RuxS)+#EnOg+D-Tp`Q{=(A?Ih@Spt`N*s&`Ge;U<=vHYKs%|Rk$t$Fpk}|PC93g5ftS3%ouIzsFd zt5;iBSIj9J`MX20r7-{3s@#gK(2Uqr(@*ucE=g6N+I^h&;qnLkYc8cd7h<1*n-Hy z==rsRVhd^|$0(xjMc6`rTV4g6Hzw#rn)}Kmc^_FT=~{^bR$FVu5#lYP{lZ3qVLTZ+ zgdIqQ0Lr(WFKp3ONadvRab-wZkFvkZzgJM!>$XqM2Hxj*5Bete0b2r*d%Wblbh(Tt zA0xjh*C@^?<|?wFd`VDgtJjUg}Y8 zf7NH088?fIg$D(P_!+!zFgK3EveD+~L}WN;U=P!!q>2dh*YS37uX8%>=WQ3N$*S{J zr>cspCRdwn4qKi*+40(W!Zq0a%N^&be6b~kmEJBHhjRzJ0-RM^T);4`)ty(uXC zm63ZiJ1TQy+V|u-KR$lVOxl+io_H=X_RH08n&f8bh1ps8g(a^mdfJA%etNIt733Z| zfte0_U2?7!>=vU)0n!o+;_nk4m4qmGnh--f@X>F=-bSip_SR|@D~;9Enj9S&IVWs( zaF;-%iLbAtIjdYDe<__K*(`R8{u50TH4$YC+Xy=ge(^Bu0VidQ;5Q1~R!2vhxN2nO zzzVv2OvRGQ)>X%C%bbrqP4Q1uZ|)p+RnS|!TG~p!0X&CDHCy#urBp9d>onyWPCHz0 zHzb($2P_Th8Egyb8P+xYTX5lzm5xzYR52VzH_B3&YkZ* z=;`Rq_V)7~@E!FH@;&#ac#gWwuF;MqwgpvVE8CTuOG}H-7xu|7%pISdnK3#|mLmGO zUBBgi>+|Di^3}A-S!ePZ78RCmvO4UX`+)xxX<%@+KhhXYK;5Vb>x`Yn2J#m1 zLxjV{k+Rv!P_5c%2xNnghrfvGR7(}7uHC8jwYU+nQ(_#Erf@bmG4Mar0ezyTzpABT zy{x{pv1FB)5bYFML_37<1h@F@cyrM9+;bWyl>T5(FXt=U=_-XasuHi*TUlkLt1mhd z-R=Fq$mOg94Hx)C-FPnM=h=N{Q#)P~G zeHS(~d~$e6SXyYOkPep0fZ?WFdZBiSO0TGp(&B!iBEfb3W!@J|fsIF>!dZMTZU#G% zX+&p|E`Uq zzcv=nDz9C=#W~8m2RBm$-4XTySHQk;66}ojMcfF1&gV@P{1SbUMk|MTJJx4;5Gv&1Vc(w2bPuB2m^y+DtNATq0U2GKr1|iv>me zO}uyLIj#;fm)!0@0rOy(J*|qXyjLNv5LDc$5L&6KRrUq0SKbap3Ox`x%{wJ*EtxKh z0$(v)(vk@R?KD%qHL=a2O*@H}@#I$znZ z*}T;ktDjcav6a~}?G+AzE5L2^I6ddRvA$)#eZILqm2akZvuA=^;9BAMY13B^v>vR; zFRNd=yyRg~RzcdYOSyxy?HPO0#-wce+33fP?+?F!{P8OJa9YExNqJ~da_L!Xd&hcD zH+%)9X2r;Kv@4c?ea9YShp_F~Q>-hmJO8JkQnW{USJ7PK*MByzwv>jZMMOnEj9FQ0 zMy;(eMNxYqZih~_6qwr?ZfgcB`^g@QPYY!NoHv|j=9zdccmsIdc_cOfYlptzQkmV9 zm>A`|?T&NWZBf+~)}hwb*7z#9ZIWZS`>XFbd7M3m?GQGU&Q-KfFVe>7`xr<=Ygo0E z7}gqs3}5t@^)K{BLxN$i@q($)+#qmC&>74A;N~GqLb`>V3|?-@56m_%HU7}yYLU_` z>mWWXsL#`({W&XBOgE;#QWvSq)N3k-DyBYBt0{!)MNTEg;%)popUYF>7P$wzemO5V zZ#X^9C9Z~Uy(hri(AUl13$H``AnK5H$wY!jWcd5|7J3G|5XbuJvdUKFtA0N%BJw-r zoyo49=}ikteUfbZ`Q_)7B5dlk{LK*=&uN8v0%8UF--7QZ#$${Wkufb~S-Oqp3mp~M_t3CuuK?DwlTR#jR( z)+<#48)x6_TIWs1htm#j5$~h$i)5z!xN?B{fM&Y3M61)Obx!RU?E~#=EvcQVQ|c@A z9z(Ecuz7R9vB2d)T1!7mEz91Z9f6jBUZz;X8*P2{YQ;xsuy~)KB`+B5%cU{*X&bea z>PB^?##1Y)b<{A*P4*#qBNXEAu_0Dq!? z82%V9!av|+@N@oyzQ4U^-04n-9kW@g{;51z?kk=0JEyoq(e8q0zdq$Y%f6ZUFr7?2 zp7JbtWwI?fG*y{?GqW=1Z2rAsysTT*a>qQ60&hkAW~9g^^c}W<_nG&bSH^Sm>hkaK zPY4iEvAB!Or0k@*tdB5n3A!0FJN$fPlW0+lK4w^SZsgr?cgX7?*d@_Z>WzwF(tV=N zf+f6ItPh%oTtvLSkqAIDXZ}m>w21m4e zv`}lF+ zJ|D0#P#x4Ps4OrvFyCCyWHuydwd&rAmC}16sbCK_7@5p|rZ-VA50Y<*w*)~9AfJ%I z)O2bWwU%m0Js?>khzP)?e%34UHu7wDTijL`;p*Z}a8>w@)}`V)qsMvrll>5yrSDZn(|IK)8f zMrv28rz-2pQzdgmGQmS^BeIr#Mt7zn$kBucFT~BnW!5;yTq2mS>9-RJ++VAO)SHQ`WyNb zUdk2~Yu8IBmz z4Nim0P-6ILcxQNT$byrX_QtKo6raMti(gGgoW%*E+a3H@5pcD3vw^ngRBOLgcFJQ zPJAK09)EyKh`B@#(F$7aCg+kSaue|sf8{^w>+Q{V_j8?ee71e9x?DL1cA(}LR~F3v zrO)+e)yw>m?oGR%hNctg2QoipZ^?UF(4$0Gj$2dh|GIIoc^S723jrkLv3Nkh=UQ6BesWY!W1EggA&aj4Og{$ zRfpu?CH+OU1rvF2w2h8}Q}JTRd8mYZjth|2GMAmisOk0Oci1}~!ZgE0}Xu)BEud%sT-zyq>a&D*9_1E zYc!e$5UrGG=D-=)Og-6a9$_slUr`!d^1X0h{*1i%oSj*oj2r1c(q^X} zNgI}aC*wqxEZ6!gylBsFOU0!sGeibMeIjBUHHP7FgOHJE6!r$|!TZje$!{w7OSoOs zKoTXJpvY3q*Xj(XO#T1_)^3R*GeXyd@}&%zftkwu%@~;ydLON&hf|Zu7DSGJtS`ee5@M=qM;*scyWPISan;$$-P`-XKb;)F z3`7R=+6h_lD%mZ?HkDWttF>x}>sIQ<>kPW9+J@RkntmFdCRd%WR%j+_GBp#me(fe5 zryHtYr(d9t)gRL(LYt}T0%a{lS6Menb5W>33v*{b?g=x69!FgVEp9@NC7+XjQy-`v z^gWuSHH?qG3K7g9>KCaa+Y(dogZ}TnVBZ$l&rbDx_As7#-f$n!FTfQ9M?409q@q@l zqlg>+<=#wJzWqkk_zGj`@1m0Yh`d|bM=~qYZ>Q0z*{Orm7Nxh&JePemPgwY=k1CUEzVcr*`fge}DqvA=l*yia_d@Th2~Bv-aVIaD)PKg84`Fxesu zeGv9FylsRiqCxoE(5&EXK~8gRV;|iT^BfF69u&zjgT#|e? zkTo%x)FkpVZuU>}Cc9_4dONo{nm7hJ+zy@Vj{CK@1xhaw#f+!NP)A4unMR}$a&k6VNzQ=SFoteL3+b)YOY$E0yeR)S z?>^5q_ZQa`*JRf_*J}4h&nvIlKM%h_+$E<{~ip3;(M@t?lio&l~e_9oRwDi!7b z{qA4f5O)2R=UH<<$H2wIHcjQMRnoQ9a1{uV<-WO?Ib4 z*dyFaX`8T+^ zWqx39bH1UCZiD)hB0_daJPCH5?qPk=X2@9X4cnh(m z+9J(NO}Iv)iP0?7RBBdggLDscf9a3v-|BDb`{^&~?r7&}Y^nyzj`F5bz1S@%;yKXz z$R+S+Gw3H&Un-Oeq5h^OQ`=!TXfHK};!*3#5~3-w7SHf^^=JC_`&RgN`ri8j{cHS{ z{yz9AJQXj+f8e|DFvul%=gal}gmvf?m)d#3UfXu63bPKZ*j;x2_q*bkh1c^B=k3n9 zmc`4wo1T%jJ*_0omHsrdbgC?3UG4$~1Dl(o_|&!IBU%CTv#tkMNb@bHZ+fbhh*i$Tfs$TPcS~ z&j>s6h9NZbH*KOek@LuxWN*q(ouGr5(M&(468xlrdPqdzGkn)Ph~BBUW$Ot8X?$gBXl`l#VzL_lGdOjm z=9_B0qOL4gd`7s5zYk6ey1+@j2mD1Mb%A7;}lyvxC^7kX5#mc}KsaPLlCN z16<<|@lErxo-)`ax$E8R+u^@~eS8D7y-2*H`*0o6bJ!YK-Bk1L zK<<(qyMsN!>hogxj|HWoi_!wcTuqGOtGR*296C1qcf?^pc}2vhuz4Xzg2tH3^}{u( zilx$tqFemASOT2!ePQ=P#zrt?3R;k9$P~yP4dPxgF6uoo*#F+s+Er-JuI^d&kJVk- z+d8@`$hOQe)_u#@g`}AqXcLIJJIYQ%enO)9v__znX+LX*X}+tws(+}~sK%%kt3Ig) zskIuv#tT~P(0?$*8(+XR%(%(WQNK^ST5VP?kX;q$3SxLyAl`mOFQKlHgUKmmA~~K? z(f8?A%)iW0CLZR*0rVE?9Qf(C;5q!hDBoo7b5C_Y$Z6TlwL$u#Ke12z#v)W2qL`|_ugf%^53tp& zYrr?_LXs@Dz!PT5P+vDpeNe$j&x-d5zwyWOx?`(R9JvfRii2SF_=r<*681EmO5VnM z_+GnPJBw|(Ro$)aD^n_jm8q2tt3)%#bN1?}b9-x1^bAz=_a{n2tYOut9i2bVK|? zk|CvJbrmy|4^$G(SXjlm^g+fjlh3r@TxF)s&&~DCeN5rT8+t;k(IBc+`G3-B;vT|( z_{*_8WEt0+9l)%n-%}=P3VDS{$E*BSU!FI~^TwUxlDOtM4Nlq-=RD;c0~vP-o=!dm zE+re#GuT^5ImQ<_h3CZvX?t01d7eC8k)mj>Jf@VYcBsPCZ`HFjMs0%jFWp&PvCgYY z)veH#X-!(0=A){w@}}G&jgpKMT@sl1Pq4#~1*JevL*{5r?Li;NY8(amxy>Le^)Y0j z7C_GAeOeBY-!s@@dP*z+JzYw?C)$uH_hv4#5y)rsKi(0+9Z{Bqlc|-o>W(Hx*I!@X@B&t7nDLdNv*D2bx$dp@ zmS&rJG|cE?MU^a1nk^|5TSac6OHjyv%3FigLEmyc*mv|_)NSx|&wb;)Q69NF(ly_S zIx`%8$3$mJWFy$S|E#5 zOi=DqU4lKSKHAS(Mq8oXsdZ|?G;wN+N~|R1tjs9uEZrdaDh?D+5SGQx+#s&6_kgHq!-g=^jye1J)-%>xRj;e2RR`HJZKv%^9h00>TwC1lJ(0e%{`Le#{-7VR*O80ZG5%U%Z!s=e zD*GfaQ6wqXs>JH4>Z|HBwOx&9q#Bh*4d0|XSAAVQSOwaT@pe=lNBTH+bB)#y1~!g_rm?!CA*WU#gFR{L$HPMjeiy zz?%^^;tTnMqUc`i3$7ecP;ybM5g!+I z5vf4ZWx_&XsxU#gKqwW?7hL9F=WWDVqAA>DmZ7gvYsr6!@Az;$25*cnz_amTL^jc% zyb19%OWI&vz6>%!3yCYl4q^}Sm=HpgNGZ!+v#-r0Y8u5O0Zt=SdcI92~Z&>Bn4H1bipIRUcm%GU4fH-kH4JXjUUSA z^L;!Q>@RzGHeNRGK5r$jAukP^hbgfHbUNAsyi6G6>rX~cpc$wdYllt5R$yDOZIGq6 z1=|Ya9mLLHH?RlTBRGdSkL|?fV*RluSP&+~co-kPHJA>*UFb)2EA*BQo{EM_p<3K$ zb}?I@wK4aYRe-XF$)PWS4fTd7Uq(Br4C*1Qwfa#Qb%tyVGfX$40N;;KgUEg#{u>`o z6cdX{KI|74Q?=+`^f1u2?sO+Wc0TMq=$XAt6#Jf?3DLm?Bo^Hd5()&#bii6+(U=T# zqS@$I^fQ`_mZBII0r!Vvld#e7tHeH_GofDN2vP^?Fs6fkm$EO}E9_bJGUWQFvOYEx zDpl4%-A56pKAW>=( zWFY)aAEt9?9@H=JnF{(dc$`b{c0L`!tY8Y5f7rWl>NpZ=T;4&w76&yb4Um68`?f z3)zRfLR?5B+6SEr*1sLyfX+b&pbfwelp&vy1c<)QLSOfhM5GvDkwCO5+8ydThC+o$ zGgO6UBgc^buuFI!c2D9s7yFsL!TtwT8pqf(>{Y03dCI~qN8l5pV=#r_2~N8JJGNl+%atiMM023{qjsO4v literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/alphanumeric/u.wav.import b/sound/dialogue/animalese/alphanumeric/u.wav.import new file mode 100644 index 0000000..27b2e8b --- /dev/null +++ b/sound/dialogue/animalese/alphanumeric/u.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://dn0hxgm1ueiv7" +path="res://.godot/imported/u.wav-b8a534783b71ec701bb0925308d513a2.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/alphanumeric/u.wav" +dest_files=["res://.godot/imported/u.wav-b8a534783b71ec701bb0925308d513a2.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/v.wav b/sound/dialogue/animalese/alphanumeric/v.wav new file mode 100644 index 0000000000000000000000000000000000000000..78b81f94d60e7ef6abc38c900baaf15d3a9892a8 GIT binary patch literal 18332 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 Qj5F#@23|8!cfS1p0YRCqfB*mh literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/alphanumeric/v.wav.import b/sound/dialogue/animalese/alphanumeric/v.wav.import new file mode 100644 index 0000000..294b852 --- /dev/null +++ b/sound/dialogue/animalese/alphanumeric/v.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://c5p70bkanhlua" +path="res://.godot/imported/v.wav-0dc1396f424599662d6812e2e59a3b71.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/alphanumeric/v.wav" +dest_files=["res://.godot/imported/v.wav-0dc1396f424599662d6812e2e59a3b71.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/w.wav b/sound/dialogue/animalese/alphanumeric/w.wav new file mode 100644 index 0000000000000000000000000000000000000000..26cbdc9b7dbd1898c7ec96504e39599614a3bb04 GIT binary patch literal 18332 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 literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/alphanumeric/w.wav.import b/sound/dialogue/animalese/alphanumeric/w.wav.import new file mode 100644 index 0000000..5c13da4 --- /dev/null +++ b/sound/dialogue/animalese/alphanumeric/w.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://dr2025tcuq5lq" +path="res://.godot/imported/w.wav-caf9c9b3fa280c326a6be0c426672562.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/alphanumeric/w.wav" +dest_files=["res://.godot/imported/w.wav-caf9c9b3fa280c326a6be0c426672562.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/alphanumeric/x.wav b/sound/dialogue/animalese/alphanumeric/x.wav new file mode 100644 index 0000000000000000000000000000000000000000..fa020f7e8c9770ef62f5410b7624ed51acb35be9 GIT binary patch literal 15116 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 E58{BWqW}N^ literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/alphanumeric/z.wav.import b/sound/dialogue/animalese/alphanumeric/z.wav.import new file mode 100644 index 0000000..b089115 --- /dev/null +++ b/sound/dialogue/animalese/alphanumeric/z.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://bujyv5lsxarhr" +path="res://.godot/imported/z.wav-38cc5c83dca1b80b731d307651219c08.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/alphanumeric/z.wav" +dest_files=["res://.godot/imported/z.wav-38cc5c83dca1b80b731d307651219c08.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/kim/0.wav b/sound/dialogue/animalese/kim/0.wav new file mode 100644 index 0000000000000000000000000000000000000000..ed9af437e6e0617702cde4afcd420473a01a7a4a GIT binary patch literal 14516 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 literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/kim/3.wav.import b/sound/dialogue/animalese/kim/3.wav.import new file mode 100644 index 0000000..c4f479d --- /dev/null +++ b/sound/dialogue/animalese/kim/3.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://dn24y7on5811q" +path="res://.godot/imported/3.wav-da7f408c6ee782136a7225f6a5b4c2da.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/kim/3.wav" +dest_files=["res://.godot/imported/3.wav-da7f408c6ee782136a7225f6a5b4c2da.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/kim/4.wav b/sound/dialogue/animalese/kim/4.wav new file mode 100644 index 0000000000000000000000000000000000000000..6d05ec7eea98df9b2ce54130c859e1192afa63a6 GIT binary patch literal 13136 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�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 Qq0Ikk0vSfo70)dG5742XGXMYp literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/kim/5.wav.import b/sound/dialogue/animalese/kim/5.wav.import new file mode 100644 index 0000000..bc739df --- /dev/null +++ b/sound/dialogue/animalese/kim/5.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://chf4scjvimr1o" +path="res://.godot/imported/5.wav-7adb723973f3005425a71be181ad28e9.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/kim/5.wav" +dest_files=["res://.godot/imported/5.wav-7adb723973f3005425a71be181ad28e9.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/kim/6.wav b/sound/dialogue/animalese/kim/6.wav new file mode 100644 index 0000000000000000000000000000000000000000..379199e5e894ace420e9fab72c718a6ca2d24f2a GIT binary patch literal 18536 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 literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/kim/6.wav.import b/sound/dialogue/animalese/kim/6.wav.import new file mode 100644 index 0000000..3674eb9 --- /dev/null +++ b/sound/dialogue/animalese/kim/6.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://phxil12i1qmt" +path="res://.godot/imported/6.wav-1303e051aae59fdf169def7624379571.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/kim/6.wav" +dest_files=["res://.godot/imported/6.wav-1303e051aae59fdf169def7624379571.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/kim/7.wav b/sound/dialogue/animalese/kim/7.wav new file mode 100644 index 0000000000000000000000000000000000000000..ccfdd5f4ddaa39fe6668e24da1c87b50cc0db8a8 GIT binary patch literal 18536 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 literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/kim/9.wav.import b/sound/dialogue/animalese/kim/9.wav.import new file mode 100644 index 0000000..8739b30 --- /dev/null +++ b/sound/dialogue/animalese/kim/9.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://b3xwpno2ky226" +path="res://.godot/imported/9.wav-92fe849d00f43baa22f6338601438d71.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/kim/9.wav" +dest_files=["res://.godot/imported/9.wav-92fe849d00f43baa22f6338601438d71.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/kim/a.wav b/sound/dialogue/animalese/kim/a.wav new file mode 100644 index 0000000000000000000000000000000000000000..78d2ae606298b920128b85e985174c002c11826e GIT binary patch literal 12296 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 QUV?a!L7ol3UeGi0KX3u$k^lez literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/kim/a.wav.import b/sound/dialogue/animalese/kim/a.wav.import new file mode 100644 index 0000000..c0c8c4b --- /dev/null +++ b/sound/dialogue/animalese/kim/a.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://c72cosdd78vhw" +path="res://.godot/imported/a.wav-19230b3cafcf4c28b5dd1f5c6133e5a5.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/kim/a.wav" +dest_files=["res://.godot/imported/a.wav-19230b3cafcf4c28b5dd1f5c6133e5a5.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/kim/b.wav b/sound/dialogue/animalese/kim/b.wav new file mode 100644 index 0000000000000000000000000000000000000000..440592dbfad864366c24c525c715acc6477d0188 GIT binary patch literal 10496 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 WOTdZ=I_s7AYY|TE0XmaG^#1_#Av`ny literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/kim/c.wav.import b/sound/dialogue/animalese/kim/c.wav.import new file mode 100644 index 0000000..10afb6b --- /dev/null +++ b/sound/dialogue/animalese/kim/c.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://cpshexs36p2g0" +path="res://.godot/imported/c.wav-bd1cbbf5862edfbaca6f9f8b0bb2990b.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/kim/c.wav" +dest_files=["res://.godot/imported/c.wav-bd1cbbf5862edfbaca6f9f8b0bb2990b.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/kim/d.wav b/sound/dialogue/animalese/kim/d.wav new file mode 100644 index 0000000000000000000000000000000000000000..51b694b3b32873df4ba93095c01ab1f18667160f GIT binary patch literal 12476 zcmX|n2UJwo_w{}6O|J|C3=A+-5qpV>HTGU&Y_XTvWAtY)i7~N96Jtv(QKK>T5@U~* z*bqgq0)ik#klva8-o5{=-&)^#3&c0C+-MzXO>MQ!$QtsfTjR#G0`$*cO(=G^7`qOIDEu zq$hE*Us*$Ti_V}eXgKXmzoTzxFLn}dYeJ{)bJ-K7#4}6S4vcjN^`Xb4>C$j%fplGppu4G#EnqiU33ISw_5gFAiKtsJ^BP)- z9~UJ|jR^Q7=Rx=hK+X)vy?`qyFd-m2zWBrjRD>XA8k~2~T3Uygs&GD*eZt~cOT>w= zO!^O9PbUBiQPfN|R7KTPOAQ#2FZH7q8bTw0xW+hQXeiF|)G5_S^^!ns!0iHhkS5V8 zJk<}QFyT!qj4P7$0FDj;#f(LeHY5(%3M7;ju{8D!KgCQ&8j>MoDfxpWkV<0VdT{f( zKe)$S4QJrP`6%APGcKFE%>B$web7fb4~_CYYlRILHNpDo}%i*;e)x zD6!!n@Ca0U!_2g718NU`jHNZPZ9f@Edd6j zkkKgCoy}ptv-?0%8Ovu0><=~{pM^06^C16TyrSnYrs1?9##td1N+ps@(gF1? zPz~)6g-GO3jn8R<>Gk~a36V*Uz39ABw$cYi3_z^vr!oxhkcSACs93>tyoIA!9 za!Ovw=W_?Rp4?mV1LmzDA2_ZHSxIh?Dx&2yTroL=J7nY>@ZK5-Rs!W8_$>zc4Mxo~ zT2HH~9q8BNyn)rD{+H4KdR%HNJrS3Sy~MWSVDU#WN9-g0gLx&>gKSPYPF zW`$s>nHaGsl+beNom2#5_yQ4q=tyL>H}Wl~`G~`FjpC(N@+S~{uNj-0-Vqr?2tvfq9?gn2QrDwCSyoj@b+_dkSzpnHbRby={@>8 zor_ooQWq*K2X7OlVDzgQ$iQWAz7q8?jqL({Du4?EVJw3kKn)A*GF?P_e&m)Yptck3 zMmqq_I$9-VNYA89$tg9U6X_nXOeL6&BL8pEThj2qU^W^xm4T|$k{WiAjbjeiMlkx?dNA}#Fdn5}urr8zAR=xc1^9a*`}8BjI;flSz}E+E zwR~hW8FEd~Z8YewemG~rZxgCt#pLKl1cQ<=G6n8vj(+zIJHb+!lc`Y!1?ZjAaP?!l z6KL8VC1D4l+JPde$AadQ74yN?Mnvm?O#cGi=1rA$2G zo#vV7zUkWODsx?NzxFf~mrDETa@^g3sK{N^R8JhM!7jT=SMDhn%eUn#xpCZ1as?}j zFEERy^bj4#x{?^KoLj`7;BRCt_?SpY-exi z7<7hEFvLUJ9rGk46l=17uwpre*!(Gtkh)0Yq?1w*-HUOr#tOi}D5^RgGq{B{8BYe2 zQ$)|r;jVD+IR{t7-R4$vojC`&O4gBaq!VhHvR7ct&zT(zWJQ0ElTyX?;HMU16S154 zmH3xfD8@(=q_tqC4d_l$(rfW&vA<{&{lr${GBIDAiCW%7waEExaIC~WtRPh+g!CZG z$YoN8Irrf{v;@PuSs}|pU#i3t zRlsQ#y3-asOF(^Xq0?!9;3yKErAWGlxeb(pBs*qWB1&SA)I$11vPiGQS>kJNOYaY! z*Y1AqOxJeTT-Q|BY}W$UV%Jx$5w18_sLRJ?!M}4|7hE1!oO^P8$x~89C<)>^aZ|Z%+zl=V z`C^>N)d4ZpoSN^<|Hzl}V}wMZne02+1zED}g)B*SPxesuR%VocA-^EEC{`*m6-|`$ zlt+~rN|S1Y>ZHo3UZWP(3pB4avD)$4CE8`$ueB4kBei3+bF>?^$F#S#ceST+K0J$!?$ZHuGJ^!i+N+hciFR+V^&B-l&4nMa@btmlsstss5@~UH{nr(%IRg zltRcbVS%EvdZkvU&(zoG=jqqzrfPd@K3DHo#j5g^XO&+n^Au)9mFx%M4Hr$mqjKq$ zx7stpQ|&(MUgU1-PCNR5nx{Q8iJgsCQ`QY6t0j^@sI^`egki{VCm3ZH=al=AwF~db2u79i^GC z*`wK_8LTNqG~(2a)eF?V8eZE#H%hGP8D+UizZe%>esotdoFr@^PKUV^fKu+ zCsV5R?aX%qD?(z!qQl;Y+zgB}`{DC62Ow zRcC7dvOjaG++*Cld!~yy<6M*7`@CuNF|SoxwDS!YeU6!Wnc|I$^%T04L&PP zUz&IM=U8Oc)Zn<#7)07*vxYSYvxa5c+S}fT?6+DioqPq|AF`QZTHV63TkpcN-=@o7 zEqwmwX;z9MB{=zMQiI2R64xgTexQF4mGCH0oqYYp4;lHnBa25>t+H?NETyBl6+$a{ zmg0dbK>Jev%IAf7VZhM9;Gn&M*8+Yu&oKU^nIm67?B4dS(e@#Ao|?#-AFC^>BCCv* zm&%)$oi3SK{8!P=qRGX9rRU3))wy+Ur$T(dD8Ey_QkkSWuI{TT(45!4(0y*O`KW!9 z%>n+~{hfZnW{2^#cD z$sBwLKa;;NRLM7~nrc_-yBNp&RQfbD4K^JyP4wMi{=`4j5)#C$M?z$_c40HalOi@o z9ckch*tGGbCiP8*G#(gpG3>8^9ol~Ezgk%l%Nm_J@>xo9o8*hhqf$DgTzm5CBhUTy z@e$YaE=+eV~8~oSk@!M2u{_%?MoTc=HP%Q7PSS9~MwnTPVK2vpES8SSZnI7T{ zTN`mUd~T?3U{liy^*!#cN3f?>_o-}9;ajn_BCxVk<*|yk<<64Wq9z3^^0ww=zrC2# zK7aiCys|O19o!`>Q@%&@R=>~aF%CCI8LD)xbUk$a^ev2MO~d^52FLB72dlbXLXHnr|H~y;E2`-$Z^@ zaY)%&m9NTF_t8e^I~fOV` zpM*Dxco~@<{a4I)4UfmHjQTA!-|vF@lK7^wYhLZE)W<9Csp5Oy`t??9eDIw^cN^VX zbvN<9^|u$_{OU%Vo73ZaJ-CwG<8_0Aud9Q^0g7=3huLOn6nN4yJRryKo%x=5zh9q# zF@b%p^MiW?4-Z=Cf6@4rssY*QoL@D)xHf-kPJH&u><&3|^YY)>-X|7aD<&nG#m9@& zi_=Q%Ws|Cm^~vr|Bv;Wv|Jb*UrGxchaBZ-|8Wofgu-LDU?AHYjIn`x>)+J^ot*4_I4=j1O&W`_uN&cGUK{%^vzV)M5(>Q$(aj4aHaT7R@y+ zFSS_IG_}E#;Jb$HY);kXoX5`}C(Ma|bK~C|QMb$P#6MV=*!q8oav=8d+Khm_o&{F?cul1Q>)?0$C{{%M)ZWegK z*Q71s^sX6|DTU(O>6vX`4}RT0b9eSnc`FMuihGsqDlaYHS}v8{F8iXqW##IcfsWx~ zBcY3?!skdpk#%lpgso9%y7jO{=eOJEjDDwfrY15y9d&`=j*x(@{k)cmR7ufv6u7(W>e;(c^;$Fm@$mvlj(MMzAW8)iJn?^Tn+W26D zNZUp8B}J)oM)9poR@ZaONz%)*`RsMsN zR3BB|q2PFS{_DnRTT-*r5;9V<=jMkN%_?(O9;x|X-NyQEcA4W-=V13d@dBxr=VRZ~|hG^gW{$B;9 zg(QZ_A}2>BMh%V%kK7X;5!TEWZi@?B9`R>%)7a5Xx;K+Gd)H`A)Rv$#y1mlMij&#P zo+|DK-mJem?&@#XcHN4(8=9~y(eKfohX?QL@6cO&Z>HY*>~8bNmefx9%c|GV5N&t= zej)C#ZQ)04e!))zZutIeJf&}{PuI6G9`#vo>S@-NoVzqu#5{HV*4wsb(lVM zWsu9y-{))X8s&MJRXD)s^Ir;^gopek5+yZtwX97lyH)rs_d<4d)|$89=T9wOS7ml~ zrK4oos)O2#x<$Ha+DJ_|bu)FOCPeqfP-}YYXSKuy)>*m)bT;=i-q&J`}~ zqIdY;VK>6IhDS!WitZb8w_!;`Ma-s%NNc*$C~T=8TX-z(;GDHy$SKr<6 zy;Jhwmq)9U&Lu5;ygKno!e8gR`w z$hcY8T$`uquPxBV>UL?Lt4}K$^Xo*5V_enqVn=?Px34n|8M&|9WoBfp&V5y|w8T*P zd9B6~?B3v=E|t;Iq>3vO{-;={*6W}7EcH8JDF~w0o7Rw^{sB9EXBs+dRw-5qUvf6` z4R(Wmq4TAM-bJnr^{%RJWp(dQzRSzA=dpKLMa?T_*Oj>g$Q1cfbqn2JdOt&f{s(Q%}|> zDU!q_;pyyG5m|Q&_f+5W4p%HNev2N_B2*I^94uOf_#N|Eq<3k0t3Op8RW?>GQ*@ON z5WXcZ#d)rEb>k}smYga`&ZXH4v-)PO%J$~0fA_5D`|`M&KkeVUPl-0>Ak+Bc0w+JJ zIHwBJzR+*=(V9Je!2!Jk=K7y9H#2oK1Z#a%edJI1L*#e5LmcPHa4PKHn##)9a;fA- z@xJ1JOVs7#t7g_caW)ZKljFiX#THexW{P&X?pOU2L%7d!(`nxy%{k_+=AV3Xe9jme z>NczO${bmUkc?f$vG~@Uh28td*qQ4>QpsITC;TnjtvIiGtC8yijV6=BH{I_}Kz!g+ z>)VhN+v4z}5#1u=BKJgW3I8Ijx9w2q{?OjGD`GB;tE(+VoFiGusnZLtmf4z8T4LM-K?@GTFQ#~INpoz&aL=Cd`~`rPvef_ z`;L-N<%492@`uVAb+oR#p`(w^_knqde+!Ekm})&5($}^#?91?d;a$ULAgZ>|4k5|G zj^M)~J446X=GxkXHnLXuP1gS-408$PCvrY{wf1q(doONxxYhW!=}xl;XCA#uwmy%0 z+4|L}R}Eivf7LVfbo$*l+wwAsqideKoAX=MvyESx$N10k&ooDvZs}WS3Kh*|ZFmp% zf|_C1q=5BiX4*l#>AvNdS7)xamya*qP<*K9Zc%x$yez+>UrlZO0hd-Zupha3!Xw!^ zc`wB&g-W?hsaD-l?NzVTe5S3(_uG!TquTE@*HmK_a|D6(5+}IU)jO(dE6$fqF13~x zmYy!}Q8lMF%Rbost=N$*<=O~4Wq0Kc#blLD(?Pf25Nujvp5}inKxQ3`4T>n-^(w-zSTW&`8e58d2?l!YLDhKomYR**w4h9U;8}@ zco=xe`gKS`=%2Py+X3-~EpFWeIN*L!NYa`sn%Im#1E}OWl*&HEmaVZN|FnLHXgurz_Xkn}}`s z9!ekWI{jaU9fr;NSK2G;#mZjtfx-a}dv2@;T_If*GrX@oN8BAo+=kA z&nlM4lZ30>V0K(AbjLVvf@xhb;X;?FRF*tUaFtuZ0iY>s@PG!nS71% zhU+r?;TP_A+OYHK=?Bnr`?G_hbHlS%QOlTh+mngTDyY1)sJ~ zv3_pdU@f=y4elB|+1e&>l;2vzB}KT@yEg6psW(TTZ+#@YKjO}+J1y=%P286f|LU8} zb~y*~|14NhxUFze;l;wo@AW0S%Lmq^I}*e#{0Ze@ZA(Kl<59z7U77kT#aZ6Svb=rW zGo4)==j{jVFYF2f}h2`!A@H$>4<&MZv0{XIncX}@4@qYJ=cY=#ORH*S)G+Re!|Z#_8)0_Qpy9ERi(fI|^=LiR_N7Ru(A#R6bL_U4Bu1M}A(u zLLMOhN%lrC3!V7M+>hisG`a!w40d!cVW+dNI95C^wvei%ELy>^ z2|4@;emrmI=5Y_9|AexJG)8J5Hud)PtaQI{4R94Y|8V}#`I)nwGss!%xanBzusLqq zC)nlo`1;@Kx744muc{wq&#*6Y1Unx)m$|~+x7>q0$(~N$UEVCO0lVt$akLa;#fD-V z#ALIWCborU<`3nimVO4UC>{Iup-_-pVFx?}I&B*E=Rbpry9s;#hov^sOL2oZ6!*3i zdy2Eg{bHsV2DSK-B!gOT5jxAa*oB`+GRRo&EjOJn=NAgK!YtV{Sws0O`LFWR@_*zf zGcisrS$BfKxgc95XD)>Y4nCyV6wS*m}SEWR;&>P}i z;;C}4b2o9PyH>j*Tvwd~ocWF|j?s=mj`^tXuFeeSYFDiLj=P8FsHfZ$;_c!c=l$M$ z!Rz!66>o^GB%qaUgHqiF3e_^U2-;d>DA=dzEU0NJ>Xi&o>3)YVVH*pE&JX~-{tWc` z6z(2(kvqwq zMv9cw(o=DsSm2HGF7}*sm$-Vl9yk{}hdakRH#!rX2JB<+bUkoYxQy;LP!A5fUGC|g z63_SEF!8Q92^gOP4K*A}#~Ntsm!ZU#Fe7@y5^|0dK-r1pLO3V6L`GrV@HM;zyPycS zf~GzZ+Nc9)Is|P@3$3;R@(>Iau_KuUl~;hq@PG^F=K||5_zIo~CZU1QRhS}d6iy2d zgr~w?VV^Ko;DvpBGyV=YiPLk*|9RygzS- za$kjP@8QO9ChiWIhw4dTKe8cUA|5(;6*PGsnyBrgJ{}AWnLzP#KuwN>I`|7TZa-+= z^U1eR7X=Nsup*MokWK>(R)@KvVID1^tgprOnP8h*Xt@V4ziRjlx=BjRiAe3F zE%25sfpR?#%D#iyz(cJ_G_-y z{*?Bh9icb-!x>O3Rlx7S!9&p$=ljvVP~aP2PPHGs1aE;IKb)Tf*8dkub1r=kZLJuw z_fQjS#l|4cr`aR8S>B+2{$W3{=~!d8!VEg$v$b$+q0T4Ze=Wdm-@=(dXc?5c z5U98N;0*ZSQ)>pqq(M9E3irTW>6mm}x)0qyj($Tg(YL^s8!^iQD?UO*oFBb3f3er_ zBS`SloI_{SvWwuU)?f%5M!N`HT}PV$dDFpV1K_2pr8l7b4};45q(<;4n%>J`&L{YQPCipqO?gE#MP)%Z|YX(+N%|!rajOweSeo z;0NGX7MOA|yj=!(E#633h_xIVXeX=!1|!-{;i{>{*;n{+z~40rivB%Xj+zlzH7amF z+!kF?0hW(`ixn6x4?T4gRNq2qtXjNT16~lJ&(_0N;($8-K?gR#Yh%G-!e>?Rot$Tz z5sOb*I2;)wJVGwS%}z_;iaHPW9E)4g&bGoormED+>NWU(W{5z z374STzhL)}wKZ%q+!Nj4SD68nUc}j4WcLdD0Z((&+hF%ia8tx%oXz06SP2IB8Xh(s zOGRFH0jJk#8TP;@0Pj2SGY+elG`wp(X4ei?^PxU&0-JA9vlrpbnT9&*jGx)yfK2!y z2BWUOM^~Kye}RVO!Vz{1IrtUF4zSrb@M?UD+}C35brY+NTT+@trB4v$f3OZ{0SC!e z)PFoyU02|_`5u+k3WzU*)8ZlgNl!4_dQ?#hu<=~X`4DCok2&AMJ$o>diKxgnh-Ei8 zHMXNl)xh#}vXD#xQ@+E~eApr2v>f?8BAtcfMg|wpDzI1vFj9+pPo`(+kI3O5T-6?q zze&K-RYW5c-jzuh+c0?H>M+u|z?X)4Bn6yE)8SXCM4f()`WuIJj1}2QhDY=oe%I4j zkOOQ#mHvn4Y{Qk2_|_JV5pP1zxdj(b z7eszED#uQTBfoh}gx>!g4y=i+DcD5I8erA%JF*;#nw|hW_X5LPv++2#4U`P1qs8oy&ng^D$ z0iWC8+?C_K-GQ0b-~If)YUa`wjBMo3Hby^EV!ot9d{CH?O%+x4Z4ya<}n?dQB7N-Viv(k zI{YIxQczpxfcOtJv6x*&1booHHMsu_s3!}k=mf!c<9$)%?Pkv4{+!W)Xy7?xG}z0S&*53XaiK69(zYy$u6=Sxw9ko z(~)2QkM6K&d>8A8%8J0+yb$QPjgjS{4u`UxSVMTh+9K8+>oD>M=uK8yASFr(;K>gN zYl9WV0MuD?FtUJeUA6G}sBleVe9{&ktq4TH7w)7kbRl|y5BTmXc;65HE-&Wv3u+}A zV=%$N`z31UIndw%qW?tC$OoI)XeLK}s2_n^AoNu|J$8QGcuw!eW@ni-t@q59jR&IGVUCb~f`o@N0D zd>l*a3D6F;`Vy(Cj{5k~vs|st6o@5|U*c2;KFYua=qX>J|WnicTWOzD@ zgirfd-1DIt31;64HFyXyYybrO2Ch#BlfK7lD-pG@5#MPVVg-2-9{wJ{vIv&aAphSW hcCo0yCs;jLu+}XAVummWJwm5oCSkx$Q!vIb`hUdr;8g$s literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/kim/d.wav.import b/sound/dialogue/animalese/kim/d.wav.import new file mode 100644 index 0000000..6654420 --- /dev/null +++ b/sound/dialogue/animalese/kim/d.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://bqhge2ptlm71d" +path="res://.godot/imported/d.wav-dd6ab85372a6bd92c069003d8685a7bf.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/kim/d.wav" +dest_files=["res://.godot/imported/d.wav-dd6ab85372a6bd92c069003d8685a7bf.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/kim/e.wav b/sound/dialogue/animalese/kim/e.wav new file mode 100644 index 0000000000000000000000000000000000000000..cb2c1c8d972edac3d833a635fd7e2d7a01f67852 GIT binary patch literal 13436 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 literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/kim/f.wav.import b/sound/dialogue/animalese/kim/f.wav.import new file mode 100644 index 0000000..03c1a4d --- /dev/null +++ b/sound/dialogue/animalese/kim/f.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://uk0jqhph802c" +path="res://.godot/imported/f.wav-82aa6f7c781c80928450893a029aac45.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/kim/f.wav" +dest_files=["res://.godot/imported/f.wav-82aa6f7c781c80928450893a029aac45.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/kim/g.wav b/sound/dialogue/animalese/kim/g.wav new file mode 100644 index 0000000000000000000000000000000000000000..a37ac01480bc6a9dfd770b8a7f90c4a222001106 GIT binary patch literal 13076 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 Hn@j%(SD+)v literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/kim/g.wav.import b/sound/dialogue/animalese/kim/g.wav.import new file mode 100644 index 0000000..a9b73ba --- /dev/null +++ b/sound/dialogue/animalese/kim/g.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://1008bpcdr223" +path="res://.godot/imported/g.wav-372aa2fc0531a484e3322ee3d3b48085.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/kim/g.wav" +dest_files=["res://.godot/imported/g.wav-372aa2fc0531a484e3322ee3d3b48085.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/kim/h.wav b/sound/dialogue/animalese/kim/h.wav new file mode 100644 index 0000000000000000000000000000000000000000..0c19076594081565da19007755802b1879ac7eb0 GIT binary patch literal 15176 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 B>9GI+ literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/kim/h.wav.import b/sound/dialogue/animalese/kim/h.wav.import new file mode 100644 index 0000000..fb6ec91 --- /dev/null +++ b/sound/dialogue/animalese/kim/h.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://bw0ua5pignh1m" +path="res://.godot/imported/h.wav-f16878738745ac8ee0150078290ea7c5.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/kim/h.wav" +dest_files=["res://.godot/imported/h.wav-f16878738745ac8ee0150078290ea7c5.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/kim/i.wav b/sound/dialogue/animalese/kim/i.wav new file mode 100644 index 0000000000000000000000000000000000000000..cd097c29350fcc54cc1c99412d087a4025a932e9 GIT binary patch literal 15176 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 KmtJ_Ong0V_(({P` literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/kim/j.wav.import b/sound/dialogue/animalese/kim/j.wav.import new file mode 100644 index 0000000..4cc5f64 --- /dev/null +++ b/sound/dialogue/animalese/kim/j.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://b7hjrilpfkuxx" +path="res://.godot/imported/j.wav-e5a60e91add3cfd5587ee2205e401fef.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/kim/j.wav" +dest_files=["res://.godot/imported/j.wav-e5a60e91add3cfd5587ee2205e401fef.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/kim/k.wav b/sound/dialogue/animalese/kim/k.wav new file mode 100644 index 0000000000000000000000000000000000000000..fa1748d2a947fb4d96c4df8d4998d5899b839d37 GIT binary patch literal 13316 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 MQaZ9e_%DtB0~;*Wr~m)} literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/kim/k.wav.import b/sound/dialogue/animalese/kim/k.wav.import new file mode 100644 index 0000000..171b8a0 --- /dev/null +++ b/sound/dialogue/animalese/kim/k.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://n4n7gg0bqbbm" +path="res://.godot/imported/k.wav-82cc304c4627c5fcf78403e0d82b4066.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/kim/k.wav" +dest_files=["res://.godot/imported/k.wav-82cc304c4627c5fcf78403e0d82b4066.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/kim/l.wav b/sound/dialogue/animalese/kim/l.wav new file mode 100644 index 0000000000000000000000000000000000000000..aea20f2b88112eadc2acca8c30c47dccaf9a3e41 GIT binary patch literal 13316 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 E4~C^HApigX literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/kim/l.wav.import b/sound/dialogue/animalese/kim/l.wav.import new file mode 100644 index 0000000..1845e6d --- /dev/null +++ b/sound/dialogue/animalese/kim/l.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://nle3bfrffs5t" +path="res://.godot/imported/l.wav-4b9d875920578dd42b0265fdc42a4c0d.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/kim/l.wav" +dest_files=["res://.godot/imported/l.wav-4b9d875920578dd42b0265fdc42a4c0d.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/kim/m.wav b/sound/dialogue/animalese/kim/m.wav new file mode 100644 index 0000000000000000000000000000000000000000..68a5aceac27a4653cdaa6fbcb20a61836e0c4381 GIT binary patch literal 14696 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 literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/kim/q.wav.import b/sound/dialogue/animalese/kim/q.wav.import new file mode 100644 index 0000000..0e794ee --- /dev/null +++ b/sound/dialogue/animalese/kim/q.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://ci6h5d2oag4an" +path="res://.godot/imported/q.wav-729a36d49b5b3bd23f1badb802667428.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/kim/q.wav" +dest_files=["res://.godot/imported/q.wav-729a36d49b5b3bd23f1badb802667428.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/kim/r.wav b/sound/dialogue/animalese/kim/r.wav new file mode 100644 index 0000000000000000000000000000000000000000..1fa9937c7df057ad74686e04da8305bcf2cded9b GIT binary patch literal 13736 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 literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/kim/r.wav.import b/sound/dialogue/animalese/kim/r.wav.import new file mode 100644 index 0000000..84c2887 --- /dev/null +++ b/sound/dialogue/animalese/kim/r.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://c03fj374ceaqc" +path="res://.godot/imported/r.wav-74003e87654a77c6a0afc0d80fca9cf3.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/kim/r.wav" +dest_files=["res://.godot/imported/r.wav-74003e87654a77c6a0afc0d80fca9cf3.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/kim/s.wav b/sound/dialogue/animalese/kim/s.wav new file mode 100644 index 0000000000000000000000000000000000000000..962fd46dc08f94e52995a4c3789d5db558a7730c GIT binary patch literal 13736 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 literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/kim/s.wav.import b/sound/dialogue/animalese/kim/s.wav.import new file mode 100644 index 0000000..c39714d --- /dev/null +++ b/sound/dialogue/animalese/kim/s.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://d0yb6lesxgm8j" +path="res://.godot/imported/s.wav-627d8bd9f4cee8c43ac9237705df784f.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/kim/s.wav" +dest_files=["res://.godot/imported/s.wav-627d8bd9f4cee8c43ac9237705df784f.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/kim/t.wav b/sound/dialogue/animalese/kim/t.wav new file mode 100644 index 0000000000000000000000000000000000000000..c5fcc51304e9cf8832283ee1a3083399b4c9924a GIT binary patch literal 13736 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 A&;S4c literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/kim/t.wav.import b/sound/dialogue/animalese/kim/t.wav.import new file mode 100644 index 0000000..b6d0ae9 --- /dev/null +++ b/sound/dialogue/animalese/kim/t.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://bcvrvl4mli82i" +path="res://.godot/imported/t.wav-aec336b52646bd870831f9effe598c92.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/kim/t.wav" +dest_files=["res://.godot/imported/t.wav-aec336b52646bd870831f9effe598c92.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/kim/u.wav b/sound/dialogue/animalese/kim/u.wav new file mode 100644 index 0000000000000000000000000000000000000000..56caa56614e69ce51b05ece7eb3fadb6df1440ea GIT binary patch literal 13736 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 C`TIBk literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/kim/u.wav.import b/sound/dialogue/animalese/kim/u.wav.import new file mode 100644 index 0000000..7724a93 --- /dev/null +++ b/sound/dialogue/animalese/kim/u.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://mpw8xt0uxm5d" +path="res://.godot/imported/u.wav-02b540f73efcb10ad4943d4f37bdf90b.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/kim/u.wav" +dest_files=["res://.godot/imported/u.wav-02b540f73efcb10ad4943d4f37bdf90b.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/kim/v.wav b/sound/dialogue/animalese/kim/v.wav new file mode 100644 index 0000000000000000000000000000000000000000..4add64f45f44a98864201ce75a9f01b0d0cd57a6 GIT binary patch literal 14756 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 od~SGtIQ&Xc3y!+~)141rKNdN!< literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/kim/v.wav.import b/sound/dialogue/animalese/kim/v.wav.import new file mode 100644 index 0000000..fb772de --- /dev/null +++ b/sound/dialogue/animalese/kim/v.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://n0r81bxuadfo" +path="res://.godot/imported/v.wav-d66f5caffb359fad446ec9ddbacdf071.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/kim/v.wav" +dest_files=["res://.godot/imported/v.wav-d66f5caffb359fad446ec9ddbacdf071.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/kim/w.wav b/sound/dialogue/animalese/kim/w.wav new file mode 100644 index 0000000000000000000000000000000000000000..9020a844228197c62f49bebde44dd9cf9cda5320 GIT binary patch literal 14756 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 literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/kim/w.wav.import b/sound/dialogue/animalese/kim/w.wav.import new file mode 100644 index 0000000..b6f0a30 --- /dev/null +++ b/sound/dialogue/animalese/kim/w.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://dm742m0d4b8o7" +path="res://.godot/imported/w.wav-46b37c23c004fe793f00e82c587efbcf.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/kim/w.wav" +dest_files=["res://.godot/imported/w.wav-46b37c23c004fe793f00e82c587efbcf.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/kim/x.wav b/sound/dialogue/animalese/kim/x.wav new file mode 100644 index 0000000000000000000000000000000000000000..f147ef3eddbbd5ed3d211b2d0691522c482a9bce GIT binary patch literal 14756 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 Ms1aHU=UI;b58zv^i2wiq literal 0 HcmV?d00001 diff --git a/sound/dialogue/animalese/kim/x.wav.import b/sound/dialogue/animalese/kim/x.wav.import new file mode 100644 index 0000000..4fcd581 --- /dev/null +++ b/sound/dialogue/animalese/kim/x.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://cn2my2uukyd8u" +path="res://.godot/imported/x.wav-90efe4fb55c5c2061c2e9dbc89bfb532.sample" + +[deps] + +source_file="res://sound/dialogue/animalese/kim/x.wav" +dest_files=["res://.godot/imported/x.wav-90efe4fb55c5c2061c2e9dbc89bfb532.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/sound/dialogue/animalese/kim/y.wav b/sound/dialogue/animalese/kim/y.wav new file mode 100644 index 0000000000000000000000000000000000000000..7f818c8e30b53d6f97be609b07bdff35fd99880d GIT binary patch literal 16136 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Ð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 void: for item: Variant in page.call("_controls_under", sample_grid): sample_buttons.append(item as Control) _expect( - sample_buttons.size() == 1, - "The voice-set row must expose the project-owned robot set.", + sample_buttons.size() == 3, + "The voice-set row must expose kat, robot, and kim.", ) - if sample_buttons.size() != 1: + if sample_buttons.size() != 3: page.queue_free() await process_frame return + var kat_button := sample_grid.get_node("VoiceSet_kat") as Button var robot_button := sample_grid.get_node("VoiceSet_robot") as Button + var kim_button := sample_grid.get_node("VoiceSet_kim") as Button + _expect(kat_button.text == "kat", "The default voice set is not labeled kat.") _expect(robot_button.text == "robot", "The tone voice set is not labeled robot.") - _expect( - robot_button.button_pressed, - "The project-owned robot voice set is not selected by default.", - ) + _expect(kim_button.text == "kim", "The kim voice set is not labeled kim.") + _expect(kat_button.button_pressed, "The kat voice set is not selected by default.") var option_controls: Array[Control] = [] var option_groups: Array = page.call("_controller_option_groups") for item: Variant in option_groups[0]: @@ -991,12 +992,12 @@ func _validate_profile_voice_navigation() -> void: ), "The controller voice zone does not contain every voice setting.", ) - _assert_directionally_reachable(robot_button, option_controls) - var robot_down := robot_button.get_node_or_null( - robot_button.focus_neighbor_bottom + _assert_directionally_reachable(kat_button, option_controls) + var kat_down := kat_button.get_node_or_null( + kat_button.focus_neighbor_bottom ) as Control _expect( - robot_down != null and pitch_grid.is_ancestor_of(robot_down), + kat_down != null and pitch_grid.is_ancestor_of(kat_down), "Down from the voice-set row does not enter the pitch row.", ) if OS.has_environment("NETFISHING_PROFILE_VOICE_CAPTURE"): @@ -1020,6 +1021,18 @@ func _validate_profile_voice_navigation() -> void: str(page.get("_draft_sample_set_id")) == "robot", "Selecting robot did not update the profile draft.", ) + kim_button.grab_focus() + kim_button.button_pressed = true + kim_button.pressed.emit() + await process_frame + _expect( + root.gui_get_focus_owner() == kim_button, + "Selecting kim moved controller focus out of the voice-set row.", + ) + _expect( + str(page.get("_draft_sample_set_id")) == "kim", + "Selecting kim did not update the profile draft.", + ) var category_controls: Array[Control] = [] for item: Variant in page.call( "_controls_under", page.get("_category_list") diff --git a/tests/profile_multiplayer_validation.gd b/tests/profile_multiplayer_validation.gd index 6352ea2..ec7a669 100644 --- a/tests/profile_multiplayer_validation.gd +++ b/tests/profile_multiplayer_validation.gd @@ -53,7 +53,7 @@ func _run_host() -> void: "deep", profile.speech_speed_id, profile.call_id, - "robot", + "kim", )) var save_manager := main.get("_save_manager") as PlayerSaveManager assert(session.start_private_host(TEST_PORT)) @@ -62,7 +62,7 @@ func _run_host() -> void: ) as Player assert(local_avatar != null) assert(local_avatar.get_animalese_voice_id() == "deep") - assert(local_avatar.get_animalese_sample_set_id() == "robot") + assert(local_avatar.get_animalese_sample_set_id() == "kim") assert(save_manager.initialize_new_game()) main.call("_enter_gameplay") for _frame: int in 4: @@ -114,7 +114,7 @@ func _run_host() -> void: await process_frame assert(not voice_messages.is_empty()) assert(str(voice_messages[0].get("voice_id", "")) == "deep") - assert(str(voice_messages[0].get("sample_set_id", "")) == "robot") + assert(str(voice_messages[0].get("sample_set_id", "")) == "kim") var disconnect_deadline: int = Time.get_ticks_msec() + 8000 while ( Time.get_ticks_msec() < disconnect_deadline @@ -182,7 +182,7 @@ func _run_client() -> void: "deep", service.get_persisted_speech_speed_id(), service.get_persisted_call_id(), - "robot", + "kim", )) var apply_deadline: int = Time.get_ticks_msec() + 8000 while Time.get_ticks_msec() < apply_deadline and apply_results.is_empty(): @@ -191,11 +191,11 @@ func _run_client() -> void: assert(bool(apply_results[0][0])) assert(service.get_persisted_appearance() == changed) assert(service.get_persisted_voice_id() == "deep") - assert(service.get_persisted_sample_set_id() == "robot") + assert(service.get_persisted_sample_set_id() == "kim") assert(Dictionary(session.get("_local_appearance_snapshot")) == changed) var player := main.get_node("%PlayerSpawnService").get_local_player() as Player assert(player.get_animalese_voice_id() == "deep") - assert(player.get_animalese_sample_set_id() == "robot") + assert(player.get_animalese_sample_set_id() == "kim") var host_voice_messages: Array[Dictionary] = [] for message: Dictionary in chat_service.get_history(): if str(message.get("body", "")) == HOST_VOICE_MESSAGE: @@ -217,8 +217,8 @@ func _run_client() -> void: host_voice_messages.append(message) assert(not host_voice_messages.is_empty()) assert(str(host_voice_messages[0].get("voice_id", "")) == "deep") - assert(str(host_voice_messages[0].get("sample_set_id", "")) == "robot") - assert(remote_voice_samples.has("robot")) + assert(str(host_voice_messages[0].get("sample_set_id", "")) == "kim") + assert(remote_voice_samples.has("kim")) var local_confirmations: Array[Dictionary] = [] chat_service.local_message_confirmed.connect( func(message: Dictionary) -> void: @@ -238,7 +238,7 @@ func _run_client() -> void: await process_frame assert(not local_confirmations.is_empty()) assert(str(local_confirmations[0].get("voice_id", "")) == "deep") - assert(str(local_confirmations[0].get("sample_set_id", "")) == "robot") + assert(str(local_confirmations[0].get("sample_set_id", "")) == "kim") print("Profile multiplayer client validation: PASS") await _session_cleanup(main, session) From bb1942a057cecf779c9ae451cfbc24bcc5c56fe5 Mon Sep 17 00:00:00 2001 From: Voyager Date: Fri, 21 Aug 2026 21:33:02 -0400 Subject: [PATCH 16/90] Stabilize camera drag and Tab menu input --- player/player.gd | 47 ++++++------------- tests/camera_drag_validation.gd | 15 +++--- ...ontroller_focus_presentation_validation.gd | 13 +++++ ui/controller_focus_presentation.gd | 6 +++ 4 files changed, 43 insertions(+), 38 deletions(-) diff --git a/player/player.gd b/player/player.gd index d6281b3..680350c 100644 --- a/player/player.gd +++ b/player/player.gd @@ -466,11 +466,10 @@ var _catch_attachment_offset: Vector3 = Vector3(0.0, 0.08, 0.04) var _gravity: float = float(ProjectSettings.get_setting("physics/3d/default_gravity")) var _camera_dragging: bool = false -var _camera_drag_button_held: bool = false var _camera_input_enabled: bool = true var _camera_drag_prior_mouse_mode: Input.MouseMode = Input.MOUSE_MODE_VISIBLE -var _camera_drag_capture_pending: bool = false -var _camera_drag_generation: int = 0 +var _camera_drag_pointer_origin: Vector2 = Vector2.ZERO +var _camera_drag_restore_pointer: bool = false var _free_camera_active: bool = false var _free_camera_body: CharacterBody3D var _free_camera: Camera3D @@ -1616,7 +1615,6 @@ func _input(event: InputEvent) -> void: return var mouse_button := event as InputEventMouseButton if mouse_button != null and event.is_action("camera_drag"): - _camera_drag_button_held = mouse_button.pressed _set_camera_dragging(mouse_button.pressed) return var mouse_motion := event as InputEventMouseMotion @@ -1626,7 +1624,6 @@ func _input(event: InputEvent) -> void: _rotate_free_camera(mouse_motion.screen_relative * mouse_sensitivity) else: _rotate_camera(mouse_motion.screen_relative * mouse_sensitivity) - _request_camera_drag_capture() func _notification(what: int) -> void: @@ -1689,38 +1686,24 @@ func _set_camera_dragging(active: bool) -> void: if _camera_dragging == active: return _camera_dragging = active - _camera_drag_generation += 1 - _camera_drag_capture_pending = false if active: _camera_drag_prior_mouse_mode = Input.mouse_mode + _camera_drag_restore_pointer = _camera_drag_prior_mouse_mode in [ + Input.MOUSE_MODE_VISIBLE, + Input.MOUSE_MODE_CONFINED, + ] + if _camera_drag_restore_pointer: + _camera_drag_pointer_origin = get_viewport().get_mouse_position() + # Capture starts with the physical press, before any motion is applied. + # Switching modes after the first movement can synthesize a center warp + # in the middle of the drag and interrupt camera control. + Input.mouse_mode = Input.MOUSE_MODE_CAPTURED else: - _camera_drag_button_held = false if Input.mouse_mode == Input.MOUSE_MODE_CAPTURED: Input.mouse_mode = _camera_drag_prior_mouse_mode - - -func _request_camera_drag_capture() -> void: - if ( - _camera_drag_capture_pending - or Input.mouse_mode == Input.MOUSE_MODE_CAPTURED - ): - return - _camera_drag_capture_pending = true - _capture_camera_drag_pointer.call_deferred(_camera_drag_generation) - - -func _capture_camera_drag_pointer(generation: int) -> void: - if generation != _camera_drag_generation: - return - _camera_drag_capture_pending = false - if ( - not _camera_dragging - or not local_control_enabled - or not _is_camera_input_enabled() - or not _camera_drag_button_held - ): - return - Input.mouse_mode = Input.MOUSE_MODE_CAPTURED + if _camera_drag_restore_pointer: + Input.warp_mouse(_camera_drag_pointer_origin) + _camera_drag_restore_pointer = false func _get_network_aware_speed() -> float: diff --git a/tests/camera_drag_validation.gd b/tests/camera_drag_validation.gd index a64f5ac..0299492 100644 --- a/tests/camera_drag_validation.gd +++ b/tests/camera_drag_validation.gd @@ -20,10 +20,11 @@ func _run() -> void: press.button_index = MOUSE_BUTTON_RIGHT press.button_mask = MOUSE_BUTTON_MASK_RIGHT press.pressed = true - player.call("_input", press) + Input.parse_input_event(press) + await process_frame assert(bool(player.get("_camera_dragging"))) if DisplayServer.get_name() != "headless": - assert(Input.mouse_mode == Input.MOUSE_MODE_VISIBLE) + assert(Input.mouse_mode == Input.MOUSE_MODE_CAPTURED) var yaw := player.get_node("%CameraYaw") as Node3D var previous_yaw: float = yaw.rotation.y @@ -31,9 +32,9 @@ func _run() -> void: motion.button_mask = MOUSE_BUTTON_MASK_RIGHT motion.relative = Vector2(18.0, -4.0) motion.screen_relative = motion.relative - player.call("_input", motion) - assert(not is_equal_approx(yaw.rotation.y, previous_yaw)) + Input.parse_input_event(motion) await process_frame + assert(not is_equal_approx(yaw.rotation.y, previous_yaw)) assert(bool(player.get("_camera_dragging"))) if DisplayServer.get_name() != "headless": assert(Input.mouse_mode == Input.MOUSE_MODE_CAPTURED) @@ -41,12 +42,14 @@ func _run() -> void: var release := InputEventMouseButton.new() release.button_index = MOUSE_BUTTON_RIGHT release.pressed = false - player.call("_input", release) + Input.parse_input_event(release) + await process_frame assert(not bool(player.get("_camera_dragging"))) if DisplayServer.get_name() != "headless": assert(Input.mouse_mode == Input.MOUSE_MODE_VISIBLE) - player.call("_input", press) + Input.parse_input_event(press) + await process_frame assert(bool(player.get("_camera_dragging"))) player.notification(NOTIFICATION_APPLICATION_FOCUS_OUT) assert(not bool(player.get("_camera_dragging"))) diff --git a/tests/controller_focus_presentation_validation.gd b/tests/controller_focus_presentation_validation.gd index 28ce0b4..7f59f70 100644 --- a/tests/controller_focus_presentation_validation.gd +++ b/tests/controller_focus_presentation_validation.gd @@ -52,6 +52,19 @@ func _run() -> void: presentation.get("_neutral_focus_seed") == standard_button, "the neutral menu focus seed did not remember the first action", ) + var player_menu_tab := InputEventKey.new() + player_menu_tab.physical_keycode = KEY_TAB + player_menu_tab.pressed = true + presentation._input(player_menu_tab) + await process_frame + _expect( + root.gui_get_focus_owner() == null, + "the default player-menu Tab was consumed as focus navigation", + ) + _expect( + presentation.get("_neutral_focus_seed") == standard_button, + "the default player-menu Tab discarded the neutral focus seed", + ) var first_navigation := InputEventJoypadButton.new() first_navigation.button_index = JOY_BUTTON_DPAD_DOWN first_navigation.pressed = true diff --git a/ui/controller_focus_presentation.gd b/ui/controller_focus_presentation.gd index aed03ef..405b834 100644 --- a/ui/controller_focus_presentation.gd +++ b/ui/controller_focus_presentation.gd @@ -245,6 +245,12 @@ func _clear_directional_input_in_flight(generation: int) -> void: func _is_directional_navigation(event: InputEvent) -> bool: if event is InputEventKey and (event as InputEventKey).echo: return false + # Tab is both Godot's default ui_focus_next key and NETfishing's default + # player-menu binding. The global focus presenter must leave that gameplay + # action alone; otherwise a remembered neutral focus seed consumes the key + # before PlayerMenu can open or close. + if event is InputEventKey and event.is_action_pressed(&"open_backpack"): + return false return ( event.is_action_pressed(&"ui_left") or event.is_action_pressed(&"ui_right") From 24d91b37e59c8e539439d4b47eb750e98ef79026 Mon Sep 17 00:00:00 2001 From: Voyager Date: Fri, 21 Aug 2026 21:33:06 -0400 Subject: [PATCH 17/90] Show fishcoin balance beside calendar --- tests/world_time_multiplayer_validation.gd | 17 +++++- ui/chat_ui.gd | 62 +++++++++++++++++++++- 2 files changed, 76 insertions(+), 3 deletions(-) diff --git a/tests/world_time_multiplayer_validation.gd b/tests/world_time_multiplayer_validation.gd index 114a15b..abdd1e8 100644 --- a/tests/world_time_multiplayer_validation.gd +++ b/tests/world_time_multiplayer_validation.gd @@ -132,8 +132,14 @@ func _run_client() -> void: var calendar_panel := ( chat_ui.get_node("WorldCalendarPanel") as PanelContainer ) + var calendar_row := ( + calendar_panel.get_node("WorldCalendarRow") as HBoxContainer + ) var calendar_label := ( - calendar_panel.get_node("WorldCalendarLabel") as Label + calendar_row.get_node("WorldCalendarLabel") as Label + ) + var calendar_balance := ( + calendar_row.get_node("WorldCalendarBalance") as CurrencyAmount ) var weather_icon := chat_ui.get_node("WorldWeatherIcon") as WeatherIcon var chat_panel := chat_ui.get_node("ChatPanel") as PanelContainer @@ -143,6 +149,15 @@ func _run_client() -> void: assert(calendar_panel.visible) assert(calendar_label.text == world_time.get_calendar_text()) assert(not calendar_label.text.is_empty()) + assert( + calendar_label.horizontal_alignment + == HORIZONTAL_ALIGNMENT_LEFT + ) + assert(calendar_label.size_flags_horizontal == Control.SIZE_EXPAND_FILL) + var player := chat_ui.get("_player") as Player + assert(calendar_balance.amount == player.wallet.get_balance()) + assert(player.wallet.credit(1)) + assert(calendar_balance.amount == player.wallet.get_balance()) assert(weather_icon.visible) assert(weather_icon.get_weather() == WorldWeatherService.Weather.RAINY) assert(is_equal_approx(clock_panel.position.y, 10.0)) diff --git a/ui/chat_ui.gd b/ui/chat_ui.gd index fc63203..e282950 100644 --- a/ui/chat_ui.gd +++ b/ui/chat_ui.gd @@ -43,6 +43,9 @@ const CALENDAR_SIZE := Vector2( 28.0, ) const CALENDAR_FONT_SIZE: int = 16 +const CALENDAR_BALANCE_FONT_SIZE: int = 14 +const CALENDAR_BALANCE_ICON_SIZE: float = 14.0 +const CALENDAR_CONTENT_GAP: int = 6 const CALENDAR_TOP_GAP: float = 4.0 const EXPANDED_CHAT_TOP_GAP: float = 12.0 const EXPANDED_TOP_MARGIN: float = ( @@ -77,6 +80,9 @@ const WorldWeatherServiceType = preload( const WeatherIconType = preload("res://ui/weather_icon.gd") const ItemCatalogType = preload("res://items/item_catalog.gd") const ItemDataType = preload("res://items/item_data.gd") +const CurrencyPresentationType = preload( + "res://ui/currency_presentation.gd" +) const TypewriterRevealType = preload("res://ui/typewriter_reveal.gd") const AnimaleseVoiceType = preload("res://ui/animalese_voice.gd") @@ -112,7 +118,9 @@ var _animalese_voice: AnimaleseVoiceType var _clock_panel: PanelContainer var _clock_label: Label var _calendar_panel: PanelContainer +var _calendar_row: HBoxContainer var _calendar_label: Label +var _calendar_balance: CurrencyAmount var _weather_icon: WeatherIconType var _status_effect_column: VBoxContainer var _status_effect_icons: Dictionary[StringName, TextureRect] = {} @@ -174,6 +182,15 @@ func setup( _world_weather = world_weather _item_effects = item_effects _item_catalog = item_catalog + if ( + _player != null + and _player.wallet != null + and not _player.wallet.balance_changed.is_connected( + _on_wallet_balance_changed + ) + ): + _player.wallet.balance_changed.connect(_on_wallet_balance_changed) + _refresh_wallet_balance() _rebuild_status_effect_icons() if ( _fishing_spot != null @@ -510,9 +527,17 @@ func _build_ui() -> void: "panel", _calendar_panel_style() ) add_child(_calendar_panel) + _calendar_row = HBoxContainer.new() + _calendar_row.name = "WorldCalendarRow" + _calendar_row.mouse_filter = Control.MOUSE_FILTER_IGNORE + _calendar_row.add_theme_constant_override( + "separation", CALENDAR_CONTENT_GAP + ) + _calendar_panel.add_child(_calendar_row) _calendar_label = Label.new() _calendar_label.name = "WorldCalendarLabel" - _calendar_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + _calendar_label.size_flags_horizontal = Control.SIZE_EXPAND_FILL + _calendar_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_LEFT _calendar_label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER _calendar_label.mouse_filter = Control.MOUSE_FILTER_IGNORE _calendar_label.add_theme_font_override( @@ -525,7 +550,25 @@ func _build_ui() -> void: "font_color", UtilityPageStyle.OCEAN_TEXT_PRIMARY ) _calendar_label.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS - _calendar_panel.add_child(_calendar_label) + _calendar_row.add_child(_calendar_label) + _calendar_balance = CurrencyPresentationType.instantiate_amount( + 0, CALENDAR_BALANCE_ICON_SIZE + ) + _calendar_balance.name = "WorldCalendarBalance" + _calendar_balance.size_flags_horizontal = Control.SIZE_SHRINK_END + _calendar_balance.alignment = BoxContainer.ALIGNMENT_END + _calendar_balance.add_theme_constant_override("separation", 2) + var balance_label: Label = _calendar_balance.get_amount_label() + balance_label.add_theme_font_override( + "font", UtilityPageStyle.TuffyFont + ) + balance_label.add_theme_font_size_override( + "font_size", CALENDAR_BALANCE_FONT_SIZE + ) + balance_label.add_theme_color_override( + "font_color", UtilityPageStyle.OCEAN_TEXT_PRIMARY + ) + _calendar_row.add_child(_calendar_balance) _status_effect_column = VBoxContainer.new() _status_effect_column.name = "StatusEffectColumn" _status_effect_column.mouse_filter = Control.MOUSE_FILTER_IGNORE @@ -1808,6 +1851,21 @@ func _on_world_calendar_date_changed(_date_id: String) -> void: ) +func _on_wallet_balance_changed(new_balance: int, _delta: int) -> void: + if _calendar_balance != null: + _calendar_balance.set_amount(new_balance) + + +func _refresh_wallet_balance() -> void: + if _calendar_balance == null: + return + _calendar_balance.set_amount( + _player.wallet.get_balance() + if _player != null and _player.wallet != null + else 0 + ) + + func _on_world_weather_changed( weather: WorldWeatherService.Weather, _seconds_remaining: float, From 6d0e99658332d546977cfafedb02413126df2fd4 Mon Sep 17 00:00:00 2001 From: Voyager Date: Fri, 21 Aug 2026 21:33:13 -0400 Subject: [PATCH 18/90] Hold net artwork and refresh contributor credits --- art/exported/items/equipment/net.glb | Bin 357136 -> 0 bytes art/exported/items/equipment/net.glb.import | 45 ---------- art/exported/items/equipment/net_Material.png | Bin 282926 -> 0 bytes .../items/equipment/net_Material.png.import | 45 ---------- .../items/equipment/net_Plane Base Color.png | Bin 43400 -> 0 bytes .../equipment/net_Plane Base Color.png.import | 45 ---------- art/source/items/equipment/net.blend | Bin 388516 -> 0 bytes docs/ATTRIBUTION.md | 22 ++--- player/net_attachment.gd | 85 +----------------- player/net_attachment.tscn | 56 ++++++++++-- tests/net_attachment_validation.gd | 72 +++------------ tests/title_credits_validation.gd | 15 +--- ui/title_credits_page.tscn | 15 +--- 13 files changed, 77 insertions(+), 323 deletions(-) delete mode 100644 art/exported/items/equipment/net.glb delete mode 100644 art/exported/items/equipment/net.glb.import delete mode 100644 art/exported/items/equipment/net_Material.png delete mode 100644 art/exported/items/equipment/net_Material.png.import delete mode 100644 art/exported/items/equipment/net_Plane Base Color.png delete mode 100644 art/exported/items/equipment/net_Plane Base Color.png.import delete mode 100644 art/source/items/equipment/net.blend diff --git a/art/exported/items/equipment/net.glb b/art/exported/items/equipment/net.glb deleted file mode 100644 index db4fa3476c5d4f9544be0dd75efa6054c9d43a82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 357136 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

VM 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

-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


47ImW-$xus{f#I`_Q8r*kcl1PFG_Fo&{Rv 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 diff --git a/art/exported/items/equipment/net.glb.import b/art/exported/items/equipment/net.glb.import deleted file mode 100644 index bd957ad..0000000 --- a/art/exported/items/equipment/net.glb.import +++ /dev/null @@ -1,45 +0,0 @@ -[remap] - -importer="scene" -importer_version=1 -type="PackedScene" -uid="uid://cvwxg6kh8ulqv" -path="res://.godot/imported/net.glb-cbbc53905aec6a50c4a3322ca7a93b1e.scn" - -[deps] - -source_file="res://art/exported/items/equipment/net.glb" -dest_files=["res://.godot/imported/net.glb-cbbc53905aec6a50c4a3322ca7a93b1e.scn"] - -[params] - -nodes/root_type="" -nodes/root_name="" -nodes/root_script=null -mesh_library/use_node_names_as_mesh_names=false -array_mesh/deduplicate_surfaces=true -nodes/apply_root_scale=true -nodes/root_scale=1.0 -nodes/import_as_skeleton_bones=false -nodes/use_name_suffixes=true -nodes/use_node_type_suffixes=true -meshes/ensure_tangents=true -meshes/generate_lods=true -meshes/create_shadow_meshes=true -meshes/light_baking=1 -meshes/lightmap_texel_size=0.2 -meshes/force_disable_compression=false -skins/use_named_skins=true -animation/import=true -animation/fps=30 -animation/trimming=false -animation/remove_immutable_tracks=true -animation/import_rest_as_RESET=false -import_script/path="" -materials/extract=0 -materials/extract_format=0 -materials/extract_path="" -_subresources={} -gltf/naming_version=2 -gltf/embedded_image_handling=1 -gltf/texture_map_mode=1 diff --git a/art/exported/items/equipment/net_Material.png b/art/exported/items/equipment/net_Material.png deleted file mode 100644 index bd5eff22d270c53600250bb2eed8ef0ca47811da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 282926 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
kSnh|GCSrQXU2hXwRXEFcjo@)kxUy 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%0AaDz@yC0ng|iYhig<A^YS8;CCn8Wi{+ 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 Lyft*YIezvRgthE| diff --git a/art/exported/items/equipment/net_Plane Base Color.png.import b/art/exported/items/equipment/net_Plane Base Color.png.import deleted file mode 100644 index 61077be..0000000 --- a/art/exported/items/equipment/net_Plane Base Color.png.import +++ /dev/null @@ -1,45 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cdsabucjy5rpk" -path.s3tc="res://.godot/imported/net_Plane Base Color.png-3875ae3dd186ddf319c55aabb13e663f.s3tc.ctex" -path.etc2="res://.godot/imported/net_Plane Base Color.png-3875ae3dd186ddf319c55aabb13e663f.etc2.ctex" -metadata={ -"imported_formats": ["s3tc_bptc", "etc2_astc"], -"vram_texture": true -} -generator_parameters={ -"md5": "a6001c381d4c8e16bd2d64ea74ccff82" -} - -[deps] - -source_file="res://art/exported/items/equipment/net_Plane Base Color.png" -dest_files=["res://.godot/imported/net_Plane Base Color.png-3875ae3dd186ddf319c55aabb13e663f.s3tc.ctex", "res://.godot/imported/net_Plane Base Color.png-3875ae3dd186ddf319c55aabb13e663f.etc2.ctex"] - -[params] - -compress/mode=2 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -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/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -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=0 diff --git a/art/source/items/equipment/net.blend b/art/source/items/equipment/net.blend deleted file mode 100644 index 0a7ba4c468a0dd609840eecfe0aabe38b463def3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 388516 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

82?l4t(T}--a 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

=K~hmOku>d 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

#rtWf#}!`Iyh5A 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�iXOER z`k@eUG2sdj(KLF>3?8lAwsxy2@{6PooDUKpsEh&{giM(r3KT%iA&@kKf*|#Zaj;rz zS1+Ey(u``56sYy+AuN&&fkev z+_$4idj-B{8wqlRg5&@(Y3CRiwgV#a+eB@?VpAv5!?18xZx*tAcSaFC`t`Kt;MOmP zP4(7@dz$bmq7zGsL)CT!djDr<&7sf}Z|>oA{CI(lW7h=u@-ct9YeHbwKyJ&BsTpLK z_(S)&NoE+M{f>jR&TSp2Jd7bfi?G8L_k28~h(Gmz`q%5e!u)r?2|L+>q;|ar*DV9# zMt9!sy0}Env-3|QF*c%ROr+Of%hXw9w%w5IWsE#yQxp09LxruuLST)P%Fk6Gv10_f ztTPGb?^a1ZeK$F7F-y1Pg8i1%oh>xRoNJ1U@+>3t3dG>Ai|Js6(K`jrk++Z~a)~o> z5aXI-s~`GKWjcNJ)DVa8fVfYGsSh+v4H>&wzeX7d2zj9l0aLyChkoD49`SuB9o^Df zaWyOXcwgEL9%=2NM;MUa(wL{4IBB;UwE2pPI0({>VbxVa&6K1&g0%j_uC?KCBDW;Z z0#T`>KaM089t@`zOTu9zuPxOWhc-(j^p@hR)4+%s@#cp|oba|nUg_I7;+wSUP5v!h z%&f;jxez@HTIusbh{Yj(y+ZUC-%9rM;+ zjLP1?Hr%eQ!2^bEQTXr{;PY9WxLeK?nJF~@Si5HC<5rI^@yjgiSyURu@xHi5-A1qz ztNBP{Y{R1PLkPn(HzF&acwP%HbKZoN!=zu4EQDNwMaG!HYj8A+NKPO1+*dsqD4{JS zgf+lV8)nb|*pK`0u-hSY?FaiT&8C_Vf*`8EL2zh*i!vgg82}1p@LS57H-Fj4EVhf9 z3%_(9GD85O)d1Q^l+i;2Gq}DR$-X7Sj}DWv7~_8M)k#7qCz1yj_395iVh(L(_8ar_ z029nBSitU!mvHCEiq-a1btG06b$%uX_+a|5iXwvBzb4WxLGq>`i*ujE<=Q$H#$bnP zZWXUNt11OE{Eq#?=9nwEg4dILUw~`r&G1%Zs@H3q_-sNbH6FvFK@xE2AW`(~6gh@h z!${QhOzyppQ>W$kSS>$W@P5Rf!VNm1#5UKlA*=kX9RiBd25&3~QLp~?iDsG($zY0x zDJ-lyP%FSz3NH@BcF0u#vQc)XO!anxVAcA?&*v&P_$K6om`%oNOFdMn_lXV)eB++M zr#Qe0;6epAZe%}Vmu~|@S0A2r9Nn3^q9lbb zw=MoQMDGg3(7Nk|6{P$7-8JPM0&>Z;#t`f;KrT-$4x3kU_0&jl*6aYBRk6ld%V4kh zuEp*&EQyr}j+ze%uT3uPUjT^hqT4D{uATodV?koQe)k6ExFUAWDILxCD0y<*`z)KH ziXC|KJvdvp>+!@@_k;CSD9%6OPE#^RA?TW|Ipp+2=WIZE;ZXcAAcc`#74b%3rJUtT zi~&3?-rh&E@k#3^al}SqH5@WXk_VAjfq-E$jzCUKJZzVDIXtASw2Fq|)6yVs)BWM- z9&8GL^8pJXRr?70qQM}M?BZ6SqaMHQQXy2x_8a#M7}qO9+=yJ?&&&O3TtA#QX*Dwq z3_VgLW~A6YegiR6_=#{lBAVDV8sk95+-d zVl6?N^_;$If*HLO00cyrP?4$g?x$A&Cf2m(7?<)yMp%Y!B6Mg2&=RevI?=cj?j{WJ zP)ZXnd5u|n$+nSD=+_znsw@Uc1agZ;K)}BRheCl<(N&+I>22$?^q|qUKC#-PBtzk>3r zqmMT9vM;J-GQ*Xz0<;&+8n;JA6Or5(1rG<@v5bVjNiMKrXxzi0RX{Lt^H3Pq_(T+f z?v6EbHo#`_xiZ_E+^V6$Bii7C@u1F78s`!ocEcs^Jq{(TS|m^Prk^Lwq#qy&Mg{pf zEUYNB`M$d;r7@MG(4W_OeVwpT0!o2&-WD>xixE&Q6aEUH9u)2&bhgq|Rs2~s@3|L~ z=z>2-U?#4E01Ah~`>KX27k`21&5oi9O+;n};AmI{JjRj6be3F;_s_mx>bRvl9qC;q zc);Ps((z>e{idjz1TN!4qd+3VxGZd(W2hW~JQ@bENUM;XCmFA&GQZRa$HrrJt|E{i zcP0u@89*U_NKg)ejjFJKAdOj^PKBafbVy+3D^ywnLDmmG5o)f0%V(}e7cXf+ua;^- zjNyjAkmbE6qT^bbs6411TWkUHA~PuMd;zJf_rGa)0|oPrxtxVjQW?2 zwm=SPP~BzqF#++kLo;ls7P@?>vX0OdQ=83^Ngl5Hxg(6(Z=JL~N8s1u|v);RXhaA1}vLVCcNqQqUFB zEhie$3A#LNm=X-I8D^)$9(dPzx}RO80B2e*nk2-e`0u~HL1btqok#AzSG7>RU!bd# zE9Ih{HmaiMl?bX+G{rM zePgY0uwZd*Mw~c6;<|&Pdl|T!k#ee2kX(b$;))OklVM2PF10bHdKC%?E~M~{Q4k#; z>$y@spxq7u;WiFk&)*pJS&2N-&o;^xQxLnbbh0O61~JG>kMM&o<^YNh-?R{xkEsUC zuPmXx0JnC6t4DV-P?uYZ5;^UZ3nT<$cNDE>X)>>9|L+4086;&={V>LWD?A?Fpm9~T zOcd_~E%76ZQ$w`6NR$E%GgXbM9bSc>MA04Ozu`MmDhIv!YYC2#JVOm4Z#*E9467VU z@XBeP0e=e#oeCr9%sSv6kYF;7`FZv@6HrMTBQjn2VANjnmM~OgB7a>JHS&e43qDLXN|K zXf%#p1IUZo`dq8t+-i6~@-_~+_z|=C>t9&53xP?2VFdGn3QN##(2_8`90qe-4DUou z2$YAT6rQmeKrH1$YuR>879QZtzEriMejK3acE9FdF%+5_sl6J1x%zqzY0~nUqA)%F z7P5;dJqH%RRxN;+{I)F5S2sWG6mVj#`4olLw)!Hhw7; z=NyO09|lsa(qoJBA_MEt!^5BwG8oy znet1j_?Sb%(3OPp6nkQQbDohQe3A(ar=ea#;&Db=9T1w=b|+Ny0W4H}x!bN5uj&Lx zi~v81ll^n>!m~=1&7{-;b?y$l7^^(jPXG=W+M0803_qVxV=0gaWUO&is_8m?;dl;>)@N_KP-+*A*+8sYipCEDp@^ zz-u(Ie#wFB)zrP3d$V8kDCmlfD1+4##ouTFd%{5Sg38U`@>?Gyc1>LM4NadZPi(Mx zrEMEH_D?q5mst|}qh0p5v$+(Y51~`JKCojFDATf&X>RV8vd{e!ydX1y#7l0m$Is(Y zpyOm;)VsBQ$qir=F}&Yh zg5^E5D6@9wVd6F7iz2N410)To{iL20Cmy3SF@qg$>{ofa0x6`^4k9Js>+rJt)*k!eU2xbGF^^Pe%GeDI!+j4V*{S3(Ca&E`<0j zOQ1CZyD(YkX>0Xe5sw&y$zdfe}ZXbOy&{}+dPFA$kx~c_u6P9*II=bQ)}A;BDRIiN3YT^4^Q7A zH%%&+LsFZLLpKShi;|Cu!%pY4)?5R3-)+yJo(~r}3L|vH;m>U9<(PQSWLB5MrYQs! zw9U;O1sxU_rs5_o77Zb=ms=cX?fWr zL}$ApF_wE;wTigrJQKxQ-^grBA;kobwQxptZ4A*ekkHXC~-He1o@hQ{!2-?YZHq|2g-WL zr7<{Ucz7cL0O@(y2S64#7yc*$FQQi2o^z!h5FY(A%s0RKd$IjiYiedg>Ij zX`p80Zp&BSOHCGHQj{!b_Sv_ryA+9c9m!R0VLS??J( z(>^Q~3ZXxOZ-e+)E^!cTV&xO;U^52FT6g}$;Y_GZ;Io3RXR!le3JR$(#t*28VNE2f zNkLz;pW;$Kc6g3q8QoM&Bxh9&XMU0Fj=5SmeK9QHzBy)I9qey4bGpIN*_}1Rd3UQu z=QWW?-(GFp*%8{)nD6!bMFEN)a677N-H*L5J=I84zQM#Fl0LDU^6NAy~~9K*eQ@mKZjNH zY-I2adO;sO9qgqxx?l^%kG??)P(SY zRKTOfyM*9%ulx%aRJsDSG8wxXeKkGvQL&;o2_5domby&L?eu?or9W)}mouHbVH?)i zGSug-6^qpB_5(~aB7s3|Yl2VuIB2>7zMRzr2WDZ)p6C{gDt7V%ZiqMH&U4^i9%EtY zP*DlUqt>)wIb>S)GnIsFBNi#7Gh7}+ z=vYP+4geg|MQgt1^$ab}N2m&wGHOpp7-mF%We1AEZi&sX^L3aKzb1<&VkhCP&|*VI zUWzG>IUoqdPR>2;TE|)7k|j1{u0}Zcg-o;x#Hrcl*t%|O>s7nt@uOIsrwWXyM}dJE zoX<6*FYy*+J>L&Nee2-|BH@zTW7Lrn?P*RkDk>_TMBX`XeR}&n&`YtnFxAAB>)G;) zFD9V)0}L_k!6OBX7HR z!Dbz$BhwmAU?+43CW6&X(3nR+>@S^bS(0sOER#WIsbE@n6vK8382Dx3seoEQks1~8 z9eiKaM3gdt_NRQpHlbn>+}JM^6L+MD^nkBErtf+szm;1>3FcKT#X(zI&3HcuqhM;y zqtAtD$I#(JBkB}%V1wc>r3M1oU&>QU=$Ran@wd31FCV!pjp#UZ4Y+jA(C-p={h!9T zPjL?Bv%~dpYj<)w@$Z7NunX33`q3fLOepPOm$mU&nbqK0GC)!w!*rU^gxRvAAZF7C zt0x_Mi>Hi0w*$3#@*GIH(pHI`AkdD%0FTGV!P>a4gBBHZ>?J@cVk|ZubMA;SsG$z+;>?5eg5)fL*gCrgp;ZHq4 zGwM905H_e)C^&=yr6{`O{UFD|VJie^7!HFho2y#(uT5bUt;14ECb;c9UKDM4!OV=! zo4i{}^bPy(;!9}TKbyrzq8m_V1;ml;)&8e1vx~fgLTh+I#S)ytGArOxA>WM*>&?!B zd6dCbYZzPWHQ84nLPk&z^)0ex)LTEY{dM8bJ zq5QTg{L_Apt%%6(I+?)@i3L$&u&6Zp)kFwaQa5Dgu*BASpVS0tmOVCrl<>9S1H*91 zG$Q^$82ncuR-90xLQu6-2yz#S++tax0Qfv`?j@aZ@eHI&JjZOc1wv$5v)mv}r1_!< zI9>w;F!o$y&y)w82}l%<5jGW~A`jCB9kN`U_;VPR(Zh(z{-_XxNw7+@m7twfD4|1( z9UVPMtldjpT-h0h`zF1$^|5M!=zBAA(JeC?a{x-1WiHqK&7heBR|24dFP5?kSoV47 zA!gPyB^g)^Eqp70LJsNpncYF*+`s02p2w7_qAkyo_ljT%Eha$psT)0RA4t`yEwhUl zkXr|2>}Y@Pv^L{Pl4dT)P}d~?>dRM((jrsi^V|5o|`F+~R9kmD_Q985K3VN7g1JaXh6%5!5KLYZ(*28~g=fzJF6K zaz1OAR&Vdx{8O_py%F{jBeu*CBD@cXPiDRI^xm#{ke$)ES|kGnW*M&&(4A8^&+6SP zWi_#7kv|2_kifOEBm5dH0ED{A;xmgEvrl;LD^Qnl!KzP>g;A9lU`G+YFR+tG{ntvO z>76E$IK(qcx~%VaR*TSDn)s-#Q%iW}UX2X-`7Fy{kZwK!5C$4X8PSyZ`)G z7Vw|oKj2$@TDN7is+n!Oi0b0NBMS`Uj(or|7&Uv&sPu=eM*!NK+!{9!kSR$z0L%ag z0{{a+W&$JtEXel2iV=5r-FDa0?kDfTJ2P`hnVH!I@O~`b9DMcP`~ClJ#HN-3jsc+o z#qw=^ugrSDtOm?lz^nw!%9?e6vH7)M+gAZ*4PaI)vqH@Zz^qTRI(?hIRZ3+no|ZCw zmu9_LuUXlwtMQasGv!+;-$AsUbRrZfii2KeDh>h>tt4|G^1 zj>ZPW*nSwB4`b`$wj2*5l|W6{+`23`U6%KXuNACSjJ+~; zijheH7AnQqD8@oD7EGV`I`M7d%f#3vW>sR=B*rV!7m4o?Un9Onl!)&T-v%)j(%461 z9gPKI>TuxaAg`p5q)7`ePLD?W^G|s7G_;x)LuOTBYzkvh7;9*3p$k$8U64BHf^;Q% z>I&njuPjwTM`me48fYw_v46NsU5~!Y(RWoK)z58kWKM%6MKV}Y$TB<}3AG^HuXr^F{MLGuF)5GAk;X zu^Wul;G4l0gIS}#7tCtGtYgNC`G$E_Fkion^)j~0ST0|;jMXwW%d8d5O2MoX%qqb* zf>|M$^?|Prd~M(>17jEXs=zmaF9NRuEVInAf>}~9%L!&sjAkdnX9Tl^;PQbfr2|)@ zY~bu916RrgJ{7pqqN_8Ot8?q>%)r$->gZ$w7bg+;#Bw3Z)|XelJYbdv%(8%467VWn zvu;ifaB_~i5oQY#G2!Eq#I48wcl#^g;10J@KWLFQL8! z;7wDSS+A~B@@Zu!oxW@WVb$l$Ds7U=m-s<4d2ptKT>7r#U^V8XX2&K^>eflUbW%$? zH33w)G~fq zMRuwpr>2RFMda%tV-5LQ$XG(g4l-7dv4M;QWb7Yf{TSQFSU$$?F;>Xq6 z7+c3!I>yfNRgSN5jD=(D8(-_v)QxW&U)dPD##lARrZE|_a_Bz#SDc6!kTx^;nOx)vc@guIi{ep&^zXvwH7VPC`N6F8;Q8D-K2te9)3E2(?fGs`cCb@&aC(x>=}Dtmjt;;h2mnY90Rhl`fu^gUThvz#yS?2ESW|m}fgIQ|uQ)ci}V(?Q& z{gfB{M5T_O(t=rz`4u3lTSs*s)lpYMiunw4BqW$Gzs%ChXO~YdpIbh)9Dv5C0g*z8 zAYzmmk&zLR(Xp6*#Pt1H!2QGfH zi5~p9y4r2_**^^F9s4?7JjqBOX?kYSRuFs!B+oeWk`Mgz!AjRLX%pUj@N0=EU$OB> z;D>8@3Zg`F+x)0fVrXi*y?y5I>IsdVm<7Tse-cj99Nw4nyF@GuTpRu}#sdiS!C}5o3$3N$knAanezDk5%e2AegD_)@KOI zb2KxG(OIFcbr^vBL*@HG7Mk)O3wUe$}MPGb!%~lZZMBawG$$-g4~)#_e~ss zG^vNI?`3zF9>Vow{CE$?W!9(P8HVw{ho)0@ISet+VT4~o3~1jm-5mcp4s3K?@BRz2 zbfwhOympbWH}n4R^>xpKrH&19n3;-uZv;sN;fw?&%r!w9Eehc>ayB(2GwdeW&(8v1 zv74TXtME=lgDly+zz-`EX{y5qN52kiamQ2rkFSk{wR841SKwCxta)*&?~e6hN?cNc zFfGs%c0&3l;EK-URn&_T?^oRWFZOf7If!q7$k~TmPj}@GDDYt~7`P2yDoq$60001n j6aWB0jsO5?>jVH~mJ0xl?EnB64gvrJ00000vFehKlmI9@ diff --git a/docs/ATTRIBUTION.md b/docs/ATTRIBUTION.md index a3a640e..2eac3e5 100644 --- a/docs/ATTRIBUTION.md +++ b/docs/ATTRIBUTION.md @@ -24,8 +24,10 @@ independent team Woofmeow. arms, ears and tails, and multiple world props and decorative assets, including trees and bridges. The contributor requested to be credited as `chillnfill`. -- adamantris: contributor of the original hand-net model and texture artwork; - the contributor is credited as `adamantris`. +- kat: supplied the original source voice recording for the kat animalese set. + Voyager created the sliced, normalized runtime derivatives. +- kim: supplied the original source voice recording for the kim animalese set. + Voyager created the sliced, normalized runtime derivatives. Voyager is also the original catalog porter credit in PortMaster metadata. Third-party creators are credited with their individual records below. Those @@ -156,6 +158,8 @@ against the repository when this record was revised. | Material | Runtime location | Credit or terms | | --- | --- | --- | +| Kat animalese alphabet and number sounds | `sound/dialogue/animalese/alphanumeric/` | Project-processed derivatives of the original source voice recording supplied by NETfishing community member kat. | +| Kim animalese alphabet and number sounds | `sound/dialogue/animalese/kim/` | Project-processed derivatives of the original source voice recording supplied by NETfishing community member kim. | | Tuffy font | `ui/fonts/Tuffy_Bold.otf` | Public-domain dedication in `ui/fonts/Tuffy-LICENSE.txt`. | | Seattle Avenue font | `ui/fonts/seattle_avenue.otf` | Public-domain font by JLH Fonts; notice in `ui/fonts/Seattle-Avenue-LICENSE.txt`. | | Fishing fight loop | `audio/sfx/fishing/fighting.wav` | Edited from “Spinning reel.wav” by Freesound user tosha73, sound 509902, CC0. | @@ -185,20 +189,6 @@ https://creativecommons.org/licenses/by/3.0/legalcode. later written confirmation covering Project use, modification, distribution, commercial release, and applicable sublicensing. -### adamantris hand-net contribution record - -- Requested credit: `adamantris`. -- Original contribution: hand-net model and texture artwork. -- The maintained repository source and runtime export contain later Project - adaptations. Git history, rather than a duplicated current-file hash here, - identifies their bytes at any given revision. -- Repository adaptation: reshaping and the generic `net_root`, `net_rim`, - `net_mid`, and `net_tip` deformation rig were prepared by Voyager for - reuse across gathering activities. -- Permission record: retain the original submission correspondence or a - written confirmation accepting `CONTRIBUTOR-TERMS.md` with the project - records. - ### Endeavour 2D contribution record Endeavour created the incorporated character customization patterns and diff --git a/player/net_attachment.gd b/player/net_attachment.gd index 3c7843a..8938a13 100644 --- a/player/net_attachment.gd +++ b/player/net_attachment.gd @@ -1,88 +1,7 @@ extends "res://player/tool_socket_attachment.gd" -const TextureSamplingPolicyScript := preload( - "res://main/texture_sampling_policy.gd" -) -const SPRING_ROOT_BONE: StringName = &"net_mid" -const SPRING_END_BONE: StringName = &"net_tip" -const IMPACT_BONE: StringName = &"net_rim" - -@export_range(0.0, 10.0, 0.05) var spring_stiffness: float = 1.8 -@export_range(0.0, 1.0, 0.01) var spring_drag: float = 0.68 -@export_range(0.0, 10.0, 0.05) var spring_gravity: float = 0.3 -@export_range(0.01, 0.5, 0.01) var spring_end_length: float = 0.1 - -@onready var _catching_net: Node3D = %CatchingNet -@onready var _net_model: Node3D = %NetModel - -var _spring: SpringBoneSimulator3D -var _spring_was_visible: bool = false -var _net_skeleton: Skeleton3D - - -func _ready() -> void: - super._ready() - TextureSamplingPolicyScript.enforce_subtree(_net_model) - _configure_spring() - _sync_spring_activity() - - -func _process(_delta: float) -> void: - _sync_spring_activity() - - -func _configure_spring() -> void: - _net_skeleton = _net_model.find_child( - "Skeleton3D", true, false - ) as Skeleton3D - if _net_skeleton == null: - push_error("Imported net model is missing its Skeleton3D.") - return - if _net_skeleton.find_bone(SPRING_ROOT_BONE) < 0: - push_error("Imported net model is missing bone %s." % SPRING_ROOT_BONE) - return - if _net_skeleton.find_bone(SPRING_END_BONE) < 0: - push_error("Imported net model is missing bone %s." % SPRING_END_BONE) - return - if _net_skeleton.find_bone(IMPACT_BONE) < 0: - push_error("Imported net model is missing bone %s." % IMPACT_BONE) - return - - _spring = SpringBoneSimulator3D.new() - _spring.name = "NetSpring" - _spring.set_setting_count(1) - _spring.set_root_bone_name(0, SPRING_ROOT_BONE) - _spring.set_end_bone_name(0, SPRING_END_BONE) - _spring.set_extend_end_bone(0, true) - _spring.set_end_bone_direction( - 0, SkeletonModifier3D.BONE_DIRECTION_FROM_PARENT - ) - _spring.set_end_bone_length(0, spring_end_length) - _spring.set_stiffness(0, spring_stiffness) - _spring.set_drag(0, spring_drag) - _spring.set_gravity(0, spring_gravity) - _spring.set_gravity_direction(0, Vector3.DOWN) - _net_skeleton.add_child(_spring) +@onready var _impact_marker: Marker3D = %ImpactMarker func get_impact_world_position() -> Vector3: - if _net_skeleton == null: - return _catching_net.global_position - var impact_bone_index := _net_skeleton.find_bone(IMPACT_BONE) - if impact_bone_index < 0: - return _catching_net.global_position - return _net_skeleton.global_transform * ( - _net_skeleton.get_bone_global_pose(impact_bone_index).origin - ) - - -func _sync_spring_activity() -> void: - if _spring == null: - return - var is_visible := _catching_net.is_visible_in_tree() - if is_visible and not _spring_was_visible: - _spring.active = true - _spring.reset() - elif not is_visible: - _spring.active = false - _spring_was_visible = is_visible + return _impact_marker.global_position diff --git a/player/net_attachment.tscn b/player/net_attachment.tscn index da49a88..246e71c 100644 --- a/player/net_attachment.tscn +++ b/player/net_attachment.tscn @@ -1,7 +1,42 @@ -[gd_scene load_steps=3 format=3] +[gd_scene load_steps=8 format=3] [ext_resource type="Script" path="res://player/net_attachment.gd" id="1_script"] -[ext_resource type="PackedScene" path="res://art/exported/items/equipment/net.glb" id="2_model"] + +[sub_resource type="StandardMaterial3D" id="HandleMaterial"] +albedo_color = Color(0.25, 0.13, 0.055, 1) +roughness = 0.9 + +[sub_resource type="CylinderMesh" id="HandleMesh"] +material = SubResource("HandleMaterial") +top_radius = 0.025 +bottom_radius = 0.035 +height = 1.25 + +[sub_resource type="StandardMaterial3D" id="HoopMaterial"] +albedo_color = Color(0.34, 0.39, 0.4, 1) +metallic = 0.25 +roughness = 0.65 + +[sub_resource type="TorusMesh" id="HoopMesh"] +material = SubResource("HoopMaterial") +inner_radius = 0.24 +outer_radius = 0.29 +rings = 12 +ring_segments = 18 + +[sub_resource type="StandardMaterial3D" id="NetMaterial"] +transparency = 1 +albedo_color = Color(0.65, 0.78, 0.75, 0.42) +shading_mode = 0 +cull_mode = 2 + +[sub_resource type="CylinderMesh" id="NetMesh"] +material = SubResource("NetMaterial") +top_radius = 0.24 +bottom_radius = 0.08 +height = 0.34 +radial_segments = 12 +rings = 1 [node name="NetAttachment" type="BoneAttachment3D"] bone_name = "rod_socket" @@ -12,9 +47,18 @@ aligned_mount_path = NodePath("CatchingNet") unique_name_in_owner = true visible = false -[node name="ModelMount" type="Node3D" parent="CatchingNet"] -position = Vector3(-0.000217, -0.098636, -0.020218) -rotation = Vector3(0, 3.1415927, 0) +[node name="Handle" type="MeshInstance3D" parent="CatchingNet"] +position = Vector3(0, 0.55, 0) +mesh = SubResource("HandleMesh") -[node name="NetModel" parent="CatchingNet/ModelMount" unique_id=1627767240 instance=ExtResource("2_model")] +[node name="Hoop" type="MeshInstance3D" parent="CatchingNet"] +position = Vector3(0, 1.17, 0) +mesh = SubResource("HoopMesh") + +[node name="Bag" type="MeshInstance3D" parent="CatchingNet"] +position = Vector3(0, 1, 0) +mesh = SubResource("NetMesh") + +[node name="ImpactMarker" type="Marker3D" parent="CatchingNet"] unique_name_in_owner = true +position = Vector3(0, 1.17, 0) diff --git a/tests/net_attachment_validation.gd b/tests/net_attachment_validation.gd index 2ace76f..15b8b7d 100644 --- a/tests/net_attachment_validation.gd +++ b/tests/net_attachment_validation.gd @@ -57,67 +57,23 @@ func _run() -> void: "Net rear face did not follow the socket direction guide.", ) - var model := catching_net.get_node_or_null("ModelMount/NetModel") as Node3D - _check(model != null, "Imported net model is missing.") - if model == null: - _finish(host_skeleton) - return - var skeleton := model.find_child("Skeleton3D", true, false) as Skeleton3D - _check(skeleton != null, "Imported net Skeleton3D is missing.") - if skeleton == null: - _finish(host_skeleton) - return - _check( - skeleton.find_bone("net_root") >= 0, - "Imported net_root bone is missing.", + var handle := catching_net.get_node_or_null("Handle") as MeshInstance3D + var hoop := catching_net.get_node_or_null("Hoop") as MeshInstance3D + var bag := catching_net.get_node_or_null("Bag") as MeshInstance3D + var impact_marker := ( + catching_net.get_node_or_null("ImpactMarker") as Marker3D ) - _check( - skeleton.find_bone("net_rim") >= 0, - "Imported net_rim bone is missing.", - ) - _check( - skeleton.find_bone("net_mid") >= 0, - "Imported net_mid bone is missing.", - ) - _check( - skeleton.find_bone("net_tip") >= 0, - "Imported net_tip bone is missing.", - ) - - var spring := skeleton.get_node_or_null("NetSpring") as SpringBoneSimulator3D - _check(spring != null, "Net spring simulator was not created.") - if spring != null: - _check(spring.get_setting_count() == 1, "Net spring settings changed.") + _check(handle != null and handle.mesh != null, "Placeholder handle is missing.") + _check(hoop != null and hoop.mesh != null, "Placeholder hoop is missing.") + _check(bag != null and bag.mesh != null, "Placeholder net bag is missing.") + _check(impact_marker != null, "Net impact marker is missing.") + if impact_marker != null: _check( - spring.get_root_bone_name(0) == &"net_mid", - "Net spring root must remain net_mid.", + attachment.get_impact_world_position().is_equal_approx( + impact_marker.global_position + ), + "Net impact position moved away from its marker.", ) - _check( - spring.get_end_bone_name(0) == &"net_tip", - "Net spring end must remain net_tip.", - ) - _check(not spring.active, "Hidden net spring must be suspended.") - catching_net.visible = true - await process_frame - await process_frame - _check(spring.active, "Visible net spring must be active.") - _check(spring.get_joint_count(0) == 2, "Net spring chain is incomplete.") - catching_net.visible = false - await process_frame - _check(not spring.active, "Hidden net spring did not suspend.") - - for child: Node in model.find_children("*", "MeshInstance3D", true, false): - var mesh_instance := child as MeshInstance3D - if mesh_instance.mesh == null: - continue - for surface_index: int in mesh_instance.mesh.get_surface_count(): - var material := mesh_instance.mesh.surface_get_material(surface_index) - if material is BaseMaterial3D: - _check( - (material as BaseMaterial3D).texture_filter - == BaseMaterial3D.TEXTURE_FILTER_NEAREST, - "Net material does not use nearest texture sampling.", - ) var rod_attachment := ( FishingRodAttachmentScene.instantiate() as BoneAttachment3D diff --git a/tests/title_credits_validation.gd b/tests/title_credits_validation.gd index 99ed3df..5bbf632 100644 --- a/tests/title_credits_validation.gd +++ b/tests/title_credits_validation.gd @@ -149,12 +149,6 @@ func _run() -> void: var chillnfill_credit := credits_page.get_node( "Paper/Margin/Layout/Columns/CreativeCredits/ChillnfillCredit" ) as Label - var adamantris_name := credits_page.get_node( - "Paper/Margin/Layout/Columns/CreativeCredits/AdamantrisName" - ) as Label - var adamantris_credit := credits_page.get_node( - "Paper/Margin/Layout/Columns/CreativeCredits/AdamantrisCredit" - ) as Label var credits_paper := credits_page.get_node("Paper") as PanelContainer var audio_credits := credits_page.get_node( "Paper/Margin/Layout/Columns/AdditionalCredits/AudioCredits" @@ -173,13 +167,12 @@ func _run() -> void: "in-game credits describe the supplied model families", ) _expect( - adamantris_name.text == "adamantris", - "in-game credits name adamantris", + "kat • animalese source recording" in audio_credits.text, + "in-game credits name kat's animalese source contribution", ) _expect( - "hand-net model" in adamantris_credit.text.to_lower() - and "texture artwork" in adamantris_credit.text.to_lower(), - "in-game credits describe adamantris's hand-net contribution", + "kim • animalese source recording" in audio_credits.text, + "in-game credits name kim's animalese source contribution", ) _expect( credits_paper.get_global_rect().encloses( diff --git a/ui/title_credits_page.tscn b/ui/title_credits_page.tscn index 7f222f9..1fe54e0 100644 --- a/ui/title_credits_page.tscn +++ b/ui/title_credits_page.tscn @@ -114,19 +114,6 @@ theme_override_font_sizes/font_size = 15 text = "original 3d models for character bodies and arms, ears and tails, and multiple world props and decorative assets including trees and bridges" autowrap_mode = 2 -[node name="AdamantrisName" type="Label" parent="Paper/Margin/Layout/Columns/CreativeCredits"] -layout_mode = 2 -theme_override_colors/font_color = Color(0.902, 0.969, 0.969, 1) -theme_override_font_sizes/font_size = 18 -text = "adamantris" - -[node name="AdamantrisCredit" type="Label" parent="Paper/Margin/Layout/Columns/CreativeCredits"] -layout_mode = 2 -theme_override_colors/font_color = Color(0.624, 0.812, 0.824, 1) -theme_override_font_sizes/font_size = 15 -text = "original hand-net model and texture artwork" -autowrap_mode = 2 - [node name="AdditionalCredits" type="VBoxContainer" parent="Paper/Margin/Layout/Columns"] custom_minimum_size = Vector2(404, 0) layout_mode = 2 @@ -143,7 +130,7 @@ text = "additional audio" layout_mode = 2 theme_override_colors/font_color = Color(0.624, 0.812, 0.824, 1) theme_override_font_sizes/font_size = 15 -text = "tosha73 • fishing reel sounds\nkkenny101 • ocean ambience\nqubodup • water impact\nAyton • rain ambience\nivolipa • dog bark\nChristyboy100 • cat meow" +text = "kat • animalese source recording\nkim • animalese source recording\ntosha73 • fishing reel sounds\nkkenny101 • ocean ambience\nqubodup • water impact\nAyton • rain ambience\nivolipa • dog bark\nChristyboy100 • cat meow" [node name="TechnologySpacer" type="Control" parent="Paper/Margin/Layout/Columns/AdditionalCredits"] custom_minimum_size = Vector2(0, 9) From 339812763d2991443936129283bface63099abeb Mon Sep 17 00:00:00 2001 From: Voyager Date: Fri, 21 Aug 2026 21:33:30 -0400 Subject: [PATCH 19/90] Expand generated terrain and coastal elevations --- tests/generated_world_runtime_validation.gd | 287 +++++++++++-- .../terrain_chunk_compatibility_report.gd | 7 +- .../terrain_chunk_generator_test.tscn | 4 +- tests/terrain_chunk_generator_validation.gd | 151 ++++++- .../biomes/definitions/biome_forest.tres | 10 +- .../biomes/definitions/biome_pine_forest.tres | 10 +- .../chunks/definitions/chunk_0001.tres | 2 +- .../chunks/definitions/chunk_0002.tres | 2 +- .../chunks/definitions/chunk_0004.tres | 1 + .../chunks/definitions/chunk_0005.tres | 2 +- .../chunks/definitions/chunk_0009.tres | 2 +- .../chunks/definitions/chunk_0014.tres | 5 +- .../chunks/definitions/chunk_0015.tres | 5 +- .../chunks/definitions/chunk_0017.tres | 29 ++ .../chunks/definitions/chunk_0018.tres | 28 ++ .../chunks/terrain_chunk_catalog.tres | 6 +- world/generation/generated_world_region.gd | 20 +- world/generation/generated_world_region.tscn | 2 +- .../props/definitions/prop_pine.tres | 2 +- .../props/definitions/prop_pine_large.tres | 2 +- .../props/definitions/prop_tree_large.tres | 2 +- world/generation/terrain_chunk_analyzer.gd | 13 +- world/generation/terrain_chunk_definition.gd | 8 + .../generation/terrain_chunk_edge_profile.gd | 44 ++ world/generation/terrain_chunk_generator.gd | 404 +++++++++++++++--- world/generation/terrain_chunk_variant.gd | 8 +- world/generation/terrain_prop_catalog.gd | 8 + world/generation/terrain_prop_definition.gd | 13 + 28 files changed, 906 insertions(+), 171 deletions(-) create mode 100644 world/generation/chunks/definitions/chunk_0017.tres create mode 100644 world/generation/chunks/definitions/chunk_0018.tres diff --git a/tests/generated_world_runtime_validation.gd b/tests/generated_world_runtime_validation.gd index e00178a..60ef84c 100644 --- a/tests/generated_world_runtime_validation.gd +++ b/tests/generated_world_runtime_validation.gd @@ -13,7 +13,7 @@ const GeneratedRiverPool: FishPool = preload( "res://fish/pools/generated_river_pool.tres" ) const FIRST_SEED := 13001 -const SECOND_SEED := 13004 +const SECOND_SEED := 13002 const EXPECTED_PROP_IDS: Array[StringName] = [ &"prop_bridge", &"prop_dock", @@ -110,23 +110,47 @@ func _validate_generated_region( assert(placements[center_index].begins_with("chunk_spawn@")) assert(_placement_count(placements, "chunk_spawn") == 1) assert(_placement_count(placements, "chunk_0001") >= 1) - assert(_placement_count(placements, "chunk_0002") >= 1) assert(_placement_count(placements, "chunk_0003") >= 1) - assert(_placement_count(placements, "chunk_0016") >= 1) assert(_placement_count(placements, "chunk_0004") >= 1) - assert(_placement_count(placements, "chunk_0005") >= 1) - assert(_placement_count(placements, "chunk_0006") >= 1) - assert(_placement_count(placements, "chunk_0007") >= 1) - assert(_placement_count(placements, "chunk_0008") >= 1) + var beach_count := _placement_count(placements, "chunk_0002") + var grass_coast_count := _placement_count(placements, "chunk_0005") + var grass_corner_count := _placement_count(placements, "chunk_0007") + var beach_corner_count := _placement_count(placements, "chunk_0008") + assert((beach_count > 0) != (grass_coast_count > 0)) + if beach_count > 0: + assert(beach_count == 48 and grass_coast_count == 0) + assert(beach_corner_count == 4 and grass_corner_count == 0) + assert(_placement_count(placements, "chunk_0009") == 9) + assert(_placement_count(placements, "chunk_0010") == 4) + assert( + _placement_count(placements, "chunk_0011") + + _placement_count(placements, "chunk_0012") + == 12 + ) + assert(_placement_count(placements, "chunk_0012") == 1) + for stable_id: String in [ + "chunk_0014", + "chunk_0015", + "chunk_0017", + "chunk_0018", + ]: + assert(_placement_count(placements, stable_id) == 0) + else: + assert(grass_coast_count == 44 and beach_count == 0) + assert(grass_corner_count == 3 and beach_corner_count == 0) + assert(_placement_count(placements, "chunk_0009") == 10) + assert(_placement_count(placements, "chunk_0010") == 5) + assert( + _placement_count(placements, "chunk_0011") + + _placement_count(placements, "chunk_0012") + == 14 + ) + assert(_placement_count(placements, "chunk_0012") == 2) + assert(_placement_count(placements, "chunk_0014") == 2) + assert(_placement_count(placements, "chunk_0015") == 1) + assert(_placement_count(placements, "chunk_0017") == 1) + assert(_placement_count(placements, "chunk_0018") == 1) assert(_placement_count(placements, "chunk_0013") >= 1) - assert(_placement_count(placements, "chunk_0009") == 1) - assert(_placement_count(placements, "chunk_0010") == 4) - assert( - _placement_count(placements, "chunk_0011") - + _placement_count(placements, "chunk_0012") - == 4 - ) - assert(_placement_count(placements, "chunk_0012") <= 1) assert( generator.get_generated_chunks_root().get_child_count() == expected_chunk_count @@ -164,6 +188,7 @@ func _validate_generated_region( _validate_ocean_facing_record(record, generator.grid_size) if "fresh_water" in tags: fresh_placement_count += 1 + _validate_complete_coastline(generator) assert(fresh_root.get_child_count() == fresh_placement_count) for child: Node in fresh_root.get_children(): var fresh := child as WaterBodyAuthoring @@ -191,6 +216,7 @@ func _validate_generated_region( assert(decorations != null and decorations.get_child_count() > 0) assert(anchors != null) assert(anchors.get_spawn_positions().size() > 0) + _validate_tree_gatherable_anchors(region, decorations, anchors) var palm_clusters: Dictionary[int, Array] = {} var tree_scales: Array[float] = [] var tree_yaws: Dictionary[float, bool] = {} @@ -295,7 +321,7 @@ func _validate_generated_region( ) assert(not palm_clusters.is_empty()) for members: Array in palm_clusters.values(): - assert(members.size() >= 2 and members.size() <= 3) + assert(members.size() >= 1 and members.size() <= 3) for first_index: int in members.size(): for second_index: int in range(first_index + 1, members.size()): var first := members[first_index] as Node3D @@ -314,14 +340,14 @@ func _validate_generated_region( region, &"biome_forest", &"grass_tree", - ) >= 2 + ) >= 4 ) assert( _decoration_biome_group_count( region, &"biome_pine_forest", &"grass_tree", - ) >= 2 + ) >= 4 ) @@ -329,7 +355,15 @@ func _validate_elevated_cliff_feature( generator: TerrainChunkGenerator, ) -> void: var elevated_coordinates: Dictionary[Vector2i, StringName] = {} - var top_coordinate := Vector2i(-1, -1) + var top_coordinates: Array[Vector2i] = [] + var ramp_records: Array[Dictionary] = [] + var coastal_ids: Array[StringName] = [ + &"chunk_0014", + &"chunk_0015", + &"chunk_0017", + &"chunk_0018", + ] + var has_coastal_feature := false for record: Dictionary in generator.placement_records(): var stable_id: StringName = record.get("stable_id", &"") if stable_id not in [ @@ -337,23 +371,100 @@ func _validate_elevated_cliff_feature( &"chunk_0010", &"chunk_0011", &"chunk_0012", + &"chunk_0014", + &"chunk_0015", + &"chunk_0017", + &"chunk_0018", ]: continue var coordinate: Vector2i = record.get("coordinate", Vector2i.ZERO) - assert(coordinate.x > 0 and coordinate.x < generator.grid_size.x - 1) - assert(coordinate.y > 0 and coordinate.y < generator.grid_size.y - 1) + if stable_id in coastal_ids: + has_coastal_feature = true + assert( + coordinate.x in [0, generator.grid_size.x - 1] + or coordinate.y in [0, generator.grid_size.y - 1] + ) + else: + assert(coordinate.x > 0 and coordinate.x < generator.grid_size.x - 1) + assert(coordinate.y > 0 and coordinate.y < generator.grid_size.y - 1) elevated_coordinates[coordinate] = stable_id if stable_id == &"chunk_0009": - top_coordinate = coordinate - assert(elevated_coordinates.size() == 9) - assert(top_coordinate != Vector2i(-1, -1)) - for row_offset: int in range(-1, 2): - for column_offset: int in range(-1, 2): + top_coordinates.append(coordinate) + elif stable_id == &"chunk_0012": + ramp_records.append(record) + assert(elevated_coordinates.size() == (34 if has_coastal_feature else 25)) + assert(top_coordinates.size() == (10 if has_coastal_feature else 9)) + assert(ramp_records.size() == (2 if has_coastal_feature else 1)) + var feature_center := Vector2i(-1, -1) + for candidate: Vector2i in top_coordinates: + var neighboring_top_count := 0 + for row_offset: int in range(-1, 2): + for column_offset: int in range(-1, 2): + neighboring_top_count += int( + elevated_coordinates.get( + candidate + Vector2i(column_offset, row_offset), + &"", + ) == &"chunk_0009" + ) + if neighboring_top_count == 9: + feature_center = candidate + break + assert(feature_center != Vector2i(-1, -1)) + for row_offset: int in range(-2, 3): + for column_offset: int in range(-2, 3): assert( elevated_coordinates.has( - top_coordinate + Vector2i(column_offset, row_offset) + feature_center + Vector2i(column_offset, row_offset) ) ) + if has_coastal_feature: + var secondary_top := Vector2i(-1, -1) + for coordinate: Vector2i in top_coordinates: + if ( + absi(coordinate.x - feature_center.x) > 1 + or absi(coordinate.y - feature_center.y) > 1 + ): + secondary_top = coordinate + break + assert(secondary_top != Vector2i(-1, -1)) + for row_offset: int in range(-1, 2): + for column_offset: int in range(-1, 2): + assert( + elevated_coordinates.has( + secondary_top + Vector2i(column_offset, row_offset) + ) + ) + var found_deep_top_landing := false + for ramp_record: Dictionary in ramp_records: + var ramp_coordinate: Vector2i = ramp_record.get( + "coordinate", Vector2i(-1, -1) + ) + var ramp_turns := int(ramp_record.get("rotation_quarters", 0)) + var high_edge := TerrainChunkTopology.rotated_edge( + TerrainChunkTopology.Edge.WEST, + ramp_turns, + ) + var high_offset := TerrainChunkTopology.grid_offset(high_edge) + assert( + elevated_coordinates.get(ramp_coordinate + high_offset, &"") + == &"chunk_0009" + ) + found_deep_top_landing = ( + found_deep_top_landing + or elevated_coordinates.get( + ramp_coordinate + high_offset * 2, + &"", + ) == &"chunk_0009" + ) + var low_coordinate := ramp_coordinate - high_offset + var low_index := ( + low_coordinate.y * generator.grid_size.x + low_coordinate.x + ) + assert( + generator.placement_keys()[low_index].begins_with("chunk_0000@") + or generator.placement_keys()[low_index].begins_with("chunk_spawn@") + ) + assert(found_deep_top_landing) var generated := generator.get_generated_chunks_root() assert(generated != null) @@ -367,25 +478,33 @@ func _validate_elevated_cliff_feature( &"chunk_0010", &"chunk_0011", &"chunk_0012", + &"chunk_0014", + &"chunk_0015", + &"chunk_0017", + &"chunk_0018", ]: continue + if stable_id in [&"chunk_0014", &"chunk_0015"]: + assert(chunk_root.get_node_or_null("TerrainBaseLayer") == null) + continue layered_count += 1 var base_layer := chunk_root.get_node_or_null("TerrainBaseLayer") var overlay := chunk_root.get_node_or_null("TerrainOverlay") assert(base_layer != null and overlay != null) + var is_transition := stable_id in [&"chunk_0017", &"chunk_0018"] var base_mesh := TerrainChunkAnalyzer.find_primary_mesh( base_layer, - &"chunk_0000", + &"chunk_0005" if is_transition else &"chunk_0000", ) var overlay_mesh := TerrainChunkAnalyzer.find_primary_mesh( overlay, - stable_id, + &"chunk_0015" if is_transition else stable_id, ) assert(base_mesh != null and base_mesh.mesh != null) assert(overlay_mesh != null and overlay_mesh.mesh != null) assert(base_mesh.has_node("TerrainBaseLayerCollision")) assert(overlay_mesh.has_node("TerrainCollision")) - assert(layered_count == 9) + assert(layered_count == (31 if has_coastal_feature else 25)) var stacked_keys := generator.stacked_elevated_placement_keys() assert(stacked_keys.size() in [0, 4]) if stacked_keys.is_empty(): @@ -441,6 +560,28 @@ func _validate_ocean_facing_record( ) +func _validate_complete_coastline(generator: TerrainChunkGenerator) -> void: + for record: Dictionary in generator.placement_records(): + var coordinate: Vector2i = record.get("coordinate", Vector2i.ZERO) + var ocean_edges := int(record.get("ocean_facing_edges", 0)) + for edge_value: int in TerrainChunkTopology.Edge.values(): + var neighbor := ( + coordinate + + TerrainChunkTopology.grid_offset( + edge_value as TerrainChunkTopology.Edge + ) + ) + var outside := ( + neighbor.x < 0 + or neighbor.y < 0 + or neighbor.x >= generator.grid_size.x + or neighbor.y >= generator.grid_size.y + ) + assert( + ((ocean_edges & (1 << edge_value)) != 0) == outside + ) + + func _ocean_direction(ocean_edges: int) -> Vector3: var result := Vector3.ZERO for edge_value: int in TerrainChunkTopology.Edge.values(): @@ -522,13 +663,19 @@ func _validate_prop_catalog(region: GeneratedWorldRegion) -> void: + catalog.definition_for_id(&"prop_tree_3").selection_weight ) assert(forest_rule.allows_prop(large_tree)) - assert(large_tree.selection_weight > small_tree_weight) + assert(large_tree.selection_weight <= small_tree_weight) var pine_forest := region.get_biome_catalog().definition_for_id( &"biome_pine_forest" ) var pine_rule := pine_forest.prop_rule_for_group(&"grass_tree") assert(pine_rule.allows_prop(large_pine)) - assert(large_pine.selection_weight > pine.selection_weight) + assert( + is_equal_approx(large_pine.selection_weight, pine.selection_weight) + ) + assert(forest_rule.minimum_placements == 4) + assert(forest_rule.placement_attempts_per_chunk == 4) + assert(pine_rule.minimum_placements == 4) + assert(pine_rule.placement_attempts_per_chunk == 4) func _validate_biome_catalog( @@ -623,6 +770,57 @@ func _validate_decoration_transform( assert(absf(ground_position.y - prop.global_position.y) <= 0.01) +func _validate_tree_gatherable_anchors( + region: GeneratedWorldRegion, + decorations: Node3D, + anchors: GatherableAnchorSet3D, +) -> void: + var eligible_props: Array[Node3D] = [] + for child: Node in decorations.get_children(): + var prop := child as Node3D + if prop == null: + continue + var prop_id := StringName(prop.get_meta(&"terrain_prop_id", &"")) + var definition := region.get_prop_catalog().definition_for_id(prop_id) + if definition != null and definition.gatherable_anchor_height > 0.0: + eligible_props.append(prop) + var positions := anchors.get_spawn_positions() + assert(positions.size() == eligible_props.size()) + for prop: Node3D in eligible_props: + var prop_id := StringName(prop.get_meta(&"terrain_prop_id", &"")) + var definition := region.get_prop_catalog().definition_for_id(prop_id) + var visual_scale := float( + prop.get_meta(&"terrain_prop_visual_scale", 1.0) + ) + var nearest_anchor := Vector3(INF, INF, INF) + var nearest_distance_squared := INF + for position: Vector3 in positions: + var distance_squared := position.distance_squared_to( + prop.global_position + ) + if distance_squared < nearest_distance_squared: + nearest_distance_squared = distance_squared + nearest_anchor = position + assert(nearest_anchor.is_finite()) + var horizontal_distance := Vector2( + nearest_anchor.x - prop.global_position.x, + nearest_anchor.z - prop.global_position.z, + ).length() + assert( + horizontal_distance + >= definition.gatherable_anchor_surface_radius() * visual_scale + ) + assert( + absf( + nearest_anchor.y + - ( + prop.global_position.y + + definition.gatherable_anchor_height * visual_scale + ) + ) <= 0.001 + ) + + func _find_mesh_instance(root_node: Node) -> MeshInstance3D: if root_node is MeshInstance3D: return root_node as MeshInstance3D @@ -662,13 +860,15 @@ func _validate_authored_chunk_surfaces( var generated := generator.get_generated_chunks_root() var found_beach := false var found_stream := false - var found_alternate_stream := false var found_pond := false var found_grass_ocean_edge := false var found_grass_beach_transition := false var found_grass_ocean_corner := false var found_beach_ocean_corner := false var found_grass_sand_diagonal := false + var beach_family := ( + _placement_count(generator.placement_keys(), "chunk_0002") > 0 + ) for chunk_root: Node in generated.get_children(): if chunk_root.name.begins_with("chunk_0002r"): var beach := chunk_root.find_child( @@ -695,9 +895,7 @@ func _validate_authored_chunk_surfaces( assert("dirt" in stream_materials) assert("grass_lite" in stream_materials) assert("dirt_wall" in stream_materials) - if stream_id == &"chunk_0016": - found_alternate_stream = true - else: + if stream_id == &"chunk_0003": found_stream = true elif chunk_root.name.begins_with("chunk_0004r"): var pond := chunk_root.find_child( @@ -761,15 +959,20 @@ func _validate_authored_chunk_surfaces( assert("grass_lite" in diagonal_materials) assert("sand" in diagonal_materials) found_grass_sand_diagonal = true - assert(found_beach) assert(found_stream) - assert(found_alternate_stream) assert(found_pond) - assert(found_grass_ocean_edge) - assert(found_grass_beach_transition) - assert(found_grass_ocean_corner) - assert(found_beach_ocean_corner) assert(found_grass_sand_diagonal) + if beach_family: + assert(found_beach) + assert(found_beach_ocean_corner) + assert(not found_grass_ocean_edge) + assert(not found_grass_ocean_corner) + else: + assert(not found_beach) + assert(not found_beach_ocean_corner) + assert(found_grass_ocean_edge) + assert(found_grass_ocean_corner) + assert(not found_grass_beach_transition) func _material_names(mesh_instance: MeshInstance3D) -> PackedStringArray: diff --git a/tests/manual/terrain_chunk_generator/terrain_chunk_compatibility_report.gd b/tests/manual/terrain_chunk_generator/terrain_chunk_compatibility_report.gd index 94b557e..fbd78c1 100644 --- a/tests/manual/terrain_chunk_generator/terrain_chunk_compatibility_report.gd +++ b/tests/manual/terrain_chunk_generator/terrain_chunk_compatibility_report.gd @@ -104,7 +104,7 @@ func _run() -> void: func _make_generator() -> TerrainChunkGenerator: var generator := TerrainChunkGenerator.new() generator.catalog = CATALOG - generator.grid_size = Vector2i(7, 7) + generator.grid_size = Vector2i(9, 9) generator.generation_seed = 13001 generator.generate_on_ready = false generator.build_collision = false @@ -113,13 +113,8 @@ func _make_generator() -> TerrainChunkGenerator: [ "chunk_spawn", "chunk_0001", - "chunk_0002", "chunk_0003", "chunk_0004", - "chunk_0005", - "chunk_0006", - "chunk_0007", - "chunk_0008", ] ) generator.grass_sand_smoothing_enabled = true diff --git a/tests/manual/terrain_chunk_generator/terrain_chunk_generator_test.tscn b/tests/manual/terrain_chunk_generator/terrain_chunk_generator_test.tscn index 34a74e2..b29d4f8 100644 --- a/tests/manual/terrain_chunk_generator/terrain_chunk_generator_test.tscn +++ b/tests/manual/terrain_chunk_generator/terrain_chunk_generator_test.tscn @@ -21,12 +21,12 @@ shadow_enabled = true [node name="TerrainChunkGenerator" type="Node3D" parent="."] script = ExtResource("2_generator") catalog = ExtResource("3_catalog") -grid_size = Vector2i(11, 9) +grid_size = Vector2i(15, 13) generation_seed = 13001 build_collision = true show_chunk_labels = false force_center_chunk_id = &"chunk_spawn" -required_chunk_ids = PackedStringArray("chunk_spawn", "chunk_0001", "chunk_0002", "chunk_0003", "chunk_0004", "chunk_0005", "chunk_0006", "chunk_0007", "chunk_0008") +required_chunk_ids = PackedStringArray("chunk_spawn", "chunk_0001", "chunk_0003", "chunk_0004") grass_sand_smoothing_enabled = true elevated_cliff_feature_enabled = true diff --git a/tests/terrain_chunk_generator_validation.gd b/tests/terrain_chunk_generator_validation.gd index deb097b..5aa7219 100644 --- a/tests/terrain_chunk_generator_validation.gd +++ b/tests/terrain_chunk_generator_validation.gd @@ -21,18 +21,15 @@ const EXPECTED_IDS: Array[String] = [ "chunk_0014", "chunk_0015", "chunk_0016", + "chunk_0017", + "chunk_0018", "chunk_spawn", ] const REQUIRED_IDS: Array[String] = [ "chunk_spawn", "chunk_0001", - "chunk_0002", "chunk_0003", "chunk_0004", - "chunk_0005", - "chunk_0006", - "chunk_0007", - "chunk_0008", ] const TEST_SEED := 13001 const CONNECTOR_STRESS_SEED := 287 @@ -55,6 +52,8 @@ const EXPECTED_VARIANT_COUNTS: Dictionary[StringName, int] = { &"chunk_0014": 4, &"chunk_0015": 4, &"chunk_0016": 4, + &"chunk_0017": 4, + &"chunk_0018": 4, &"chunk_spawn": 1, } @@ -97,8 +96,11 @@ func _validate_catalog() -> void: var grass_ocean_corner := CATALOG.definition_for_id(&"chunk_0007") var beach_ocean_corner := CATALOG.definition_for_id(&"chunk_0008") var grass_sand_diagonal := CATALOG.definition_for_id(&"chunk_0013") + var pond := CATALOG.definition_for_id(&"chunk_0004") var cliff_sea_edge := CATALOG.definition_for_id(&"chunk_0014") var cliff_sea_corner := CATALOG.definition_for_id(&"chunk_0015") + var cliff_sea_transition_right := CATALOG.definition_for_id(&"chunk_0017") + var cliff_sea_transition_left := CATALOG.definition_for_id(&"chunk_0018") var stream_variant := CATALOG.definition_for_id(&"chunk_0016") var cliff_top := CATALOG.definition_for_id(&"chunk_0009") var cliff_corner := CATALOG.definition_for_id(&"chunk_0010") @@ -115,8 +117,11 @@ func _validate_catalog() -> void: and grass_ocean_corner != null and beach_ocean_corner != null and grass_sand_diagonal != null + and pond != null and cliff_sea_edge != null and cliff_sea_corner != null + and cliff_sea_transition_right != null + and cliff_sea_transition_left != null and stream_variant != null and cliff_top != null and cliff_corner != null @@ -135,8 +140,11 @@ func _validate_catalog() -> void: and grass_ocean_corner != null and beach_ocean_corner != null and grass_sand_diagonal != null + and pond != null and cliff_sea_edge != null and cliff_sea_corner != null + and cliff_sea_transition_right != null + and cliff_sea_transition_left != null and stream_variant != null and cliff_top != null and cliff_corner != null @@ -157,8 +165,11 @@ func _validate_catalog() -> void: "Grass must permit the inland side of a flat-sand transition.", ) _check( - "coast" in sand.required_neighbor_tags, - "Every flat-sand chunk must remain attached to an authored beach.", + ( + "sand" in sand.required_neighbor_tags + and "coast" in sand.required_neighbor_tags + ), + "Every flat-sand chunk must remain attached to sand or authored coast.", ) _check( spawn.minimum_required_neighbors == 3, @@ -281,6 +292,12 @@ func _validate_catalog() -> void: "The diagonal's authored edges must retain two sand and two grass sides.", ) var stream := CATALOG.definition_for_id(&"chunk_0003") + _check( + pond.water_inlet_edges == pond.water_outlet_edges + and pond.water_inlet_edges + == (1 << int(TerrainChunkTopology.Edge.NORTH)), + "A pond must terminate either end of an inland freshwater chain.", + ) _check( stream != null and is_equal_approx(stream.selection_weight, 0.3) @@ -331,6 +348,34 @@ func _validate_catalog() -> void: + "overlay without an inland grass base." ), ) + for transition: TerrainChunkDefinition in [ + cliff_sea_transition_right, + cliff_sea_transition_left, + ]: + _check( + transition.overlay_only + and transition.base_layer_scene != null + and transition.base_layer_mesh_name == &"chunk_0005" + and not transition.must_be_interior + and transition.prefers_map_boundary + and "transition" in transition.tags, + ( + "Each raised-coast endpoint must layer the deep corner " + + "over an authored level-one coastline." + ), + ) + _check( + cliff_sea_transition_right.base_layer_quarter_turns == 3 + and cliff_sea_transition_right.ocean_facing_edges + == (1 << int(TerrainChunkTopology.Edge.SOUTH)), + "The right coastal transition must align its south-facing base coast.", + ) + _check( + cliff_sea_transition_left.base_layer_quarter_turns == 0 + and cliff_sea_transition_left.ocean_facing_edges + == (1 << int(TerrainChunkTopology.Edge.EAST)), + "The left coastal transition must align its east-facing base coast.", + ) _check( cliff_sea_edge.ocean_facing_edges == (1 << int(TerrainChunkTopology.Edge.EAST)), @@ -486,21 +531,17 @@ func _validate_generation() -> void: var first := _make_generator() root.add_child(first) var first_solved := first.generate() - _check(first_solved, "Generator must solve the prototype 7x7 grid.") + _check(first_solved, "Generator must solve the prototype 9x9 grid.") if not first_solved: first.free() return var first_keys := first.placement_keys() - _check(first_keys.size() == 49, "Generator must place exactly 49 chunks.") + _check(first_keys.size() == 81, "Generator must place exactly 81 chunks.") for stable_id: String in REQUIRED_IDS: _check( _placements_contain(first_keys, stable_id), "Generated diagnostic must contain %s." % stable_id, ) - _check( - _placements_contain(first_keys, "chunk_0013"), - "Generated terrain must replace sharp grass-sand corners with diagonals.", - ) _check( _all_neighbor_edges_match(first), "Every generated neighboring edge must match.", @@ -510,7 +551,7 @@ func _validate_generation() -> void: "Generated layouts must contain exactly one spawn chunk.", ) _check( - first_keys[24].begins_with("chunk_spawn@"), + first_keys[40].begins_with("chunk_spawn@"), "The spawn chunk must occupy the center cell.", ) _validate_layout_rules(first) @@ -837,18 +878,24 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: "The beach corner's west side must join a rotated straight beach.", ) var cliff_top_zero := _find_variant(generator, &"chunk_0009", 0) + var cliff_edge_zero := _find_variant(generator, &"chunk_0011", 0) + var cliff_edge_south := _find_variant(generator, &"chunk_0011", 3) var cliff_sea_edge_zero := _find_variant(generator, &"chunk_0014", 0) var cliff_sea_edge_south := _find_variant(generator, &"chunk_0014", 3) var cliff_sea_corner_zero := _find_variant(generator, &"chunk_0015", 0) _check( cliff_top_zero != null + and cliff_edge_zero != null + and cliff_edge_south != null and cliff_sea_edge_zero != null and cliff_sea_edge_south != null and cliff_sea_corner_zero != null, - "The second-tier sea edge variants must be available.", + "The inland and coastal second-tier cliff variants must be available.", ) if ( cliff_top_zero != null + and cliff_edge_zero != null + and cliff_edge_south != null and cliff_sea_edge_zero != null and cliff_sea_edge_south != null and cliff_sea_corner_zero != null @@ -892,6 +939,42 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: ), "The second-tier sea corner must join two straight sea edges.", ) + _check( + generator._edges_are_compatible( + cliff_sea_edge_zero, + TerrainChunkTopology.Edge.NORTH, + cliff_edge_zero, + TerrainChunkTopology.Edge.SOUTH, + ) + and generator._edges_are_compatible( + cliff_sea_edge_zero, + TerrainChunkTopology.Edge.SOUTH, + cliff_edge_zero, + TerrainChunkTopology.Edge.NORTH, + ), + ( + "A coastal cliff edge must transition directly into its " + + "inland edge counterpart." + ), + ) + _check( + generator._edges_are_compatible( + cliff_sea_corner_zero, + TerrainChunkTopology.Edge.NORTH, + cliff_edge_zero, + TerrainChunkTopology.Edge.SOUTH, + ) + and generator._edges_are_compatible( + cliff_sea_corner_zero, + TerrainChunkTopology.Edge.WEST, + cliff_edge_south, + TerrainChunkTopology.Edge.EAST, + ), + ( + "A coastal cliff corner must transition directly into " + + "ordinary inland cliff edges." + ), + ) var flat_grass := _find_variant(generator, &"chunk_0000", 0) var flat_sand := _find_variant(generator, &"chunk_0001", 0) _check( @@ -981,6 +1064,8 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: &"chunk_0008", &"chunk_0014", &"chunk_0015", + &"chunk_0017", + &"chunk_0018", ]: for quarter_turns: int in 4: var coast_variant := _find_variant( @@ -1032,8 +1117,8 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: func _validate_generation_summary(generator: TerrainChunkGenerator) -> void: var summary := generator._build_summary() _check( - int(summary.get("variant_count", 0)) == 69, - "The current catalog must expose all 69 authored rotations.", + int(summary.get("variant_count", 0)) == 77, + "The current catalog must expose all 77 authored rotations.", ) _check( int(summary.get("solver_variant_count", 0)) @@ -1080,7 +1165,7 @@ func _find_variant( func _make_generator() -> TerrainChunkGenerator: var generator := TerrainChunkGenerator.new() generator.catalog = CATALOG - generator.grid_size = Vector2i(7, 7) + generator.grid_size = Vector2i(9, 9) generator.generation_seed = TEST_SEED generator.generate_on_ready = false generator.build_collision = false @@ -1185,6 +1270,23 @@ func _validate_layout_rules(generator: TerrainChunkGenerator) -> void: ), "Every coastline chunk must direct its ocean edge outside the grid.", ) + var ocean_edges := placement.rotated_edge_mask( + placement.definition.ocean_facing_edges + ) + for edge_value: int in TerrainChunkTopology.Edge.values(): + var neighbor_coordinate := ( + coordinate + + TerrainChunkTopology.grid_offset( + edge_value as TerrainChunkTopology.Edge + ) + ) + var outside := not generator._coordinate_is_inside_grid( + neighbor_coordinate + ) + _check( + ((ocean_edges & (1 << edge_value)) != 0) == outside, + "Every map-boundary edge must use authored coastline geometry.", + ) if placement.definition.stable_id == &"chunk_0006": var touches_beach := false var touches_grass_edge := false @@ -1257,7 +1359,7 @@ func _validate_layout_rules(generator: TerrainChunkGenerator) -> void: ) if placement.definition.stable_id != &"chunk_0001": continue - var touches_coast := false + var touches_sand_or_coast := false for edge_value: int in TerrainChunkTopology.Edge.values(): var neighbor_coordinate := ( coordinate @@ -1271,11 +1373,14 @@ func _validate_layout_rules(generator: TerrainChunkGenerator) -> void: neighbor_coordinate.y * generator.grid_size.x + neighbor_coordinate.x ] - if "coast" in neighbor.definition.tags: - touches_coast = true + if ( + "sand" in neighbor.definition.tags + or "coast" in neighbor.definition.tags + ): + touches_sand_or_coast = true _check( - touches_coast, - "Every flat-sand chunk must remain directly attached to a beach.", + touches_sand_or_coast, + "Every flat-sand chunk must remain attached to sand or coast.", ) diff --git a/world/generation/biomes/definitions/biome_forest.tres b/world/generation/biomes/definitions/biome_forest.tres index c0764e2..ba8a54e 100644 --- a/world/generation/biomes/definitions/biome_forest.tres +++ b/world/generation/biomes/definitions/biome_forest.tres @@ -6,11 +6,11 @@ [sub_resource type="Resource" id="Rule_grass_tree"] script = ExtResource("2_rule") procedural_group = &"grass_tree" -placement_chance = 8200 -adjacency_bonus = 1200 -maximum_density = 8500 -minimum_placements = 2 -placement_attempts_per_chunk = 3 +placement_chance = 9400 +adjacency_bonus = 600 +maximum_density = 9500 +minimum_placements = 4 +placement_attempts_per_chunk = 4 allowed_prop_ids = PackedStringArray("prop_tree_large", "prop_tree_1", "prop_tree_2", "prop_tree_3") [sub_resource type="Resource" id="Rule_grass_detail"] diff --git a/world/generation/biomes/definitions/biome_pine_forest.tres b/world/generation/biomes/definitions/biome_pine_forest.tres index 6582a40..0a1f7e8 100644 --- a/world/generation/biomes/definitions/biome_pine_forest.tres +++ b/world/generation/biomes/definitions/biome_pine_forest.tres @@ -6,11 +6,11 @@ [sub_resource type="Resource" id="Rule_grass_tree"] script = ExtResource("2_rule") procedural_group = &"grass_tree" -placement_chance = 8200 -adjacency_bonus = 1200 -maximum_density = 8500 -minimum_placements = 2 -placement_attempts_per_chunk = 3 +placement_chance = 9400 +adjacency_bonus = 600 +maximum_density = 9500 +minimum_placements = 4 +placement_attempts_per_chunk = 4 allowed_prop_ids = PackedStringArray("prop_pine_large", "prop_pine") [sub_resource type="Resource" id="Rule_grass_detail"] diff --git a/world/generation/chunks/definitions/chunk_0001.tres b/world/generation/chunks/definitions/chunk_0001.tres index 23469f4..516ea38 100644 --- a/world/generation/chunks/definitions/chunk_0001.tres +++ b/world/generation/chunks/definitions/chunk_0001.tres @@ -13,6 +13,6 @@ allowed_rotation_mask = 15 selection_weight = 1.5 tags = PackedStringArray("land", "walkable", "sand", "flat") allowed_neighbor_tags = PackedStringArray("sand", "grass") -required_neighbor_tags = PackedStringArray("coast") +required_neighbor_tags = PackedStringArray("sand", "coast") minimum_required_neighbors = 1 preferred_neighbor_tags = PackedStringArray("coast", "sand") diff --git a/world/generation/chunks/definitions/chunk_0002.tres b/world/generation/chunks/definitions/chunk_0002.tres index 77545a7..8cf381a 100644 --- a/world/generation/chunks/definitions/chunk_0002.tres +++ b/world/generation/chunks/definitions/chunk_0002.tres @@ -10,7 +10,7 @@ label = "beach" packed_scene = ExtResource("2_scene") primary_mesh_name = &"chunk_0002" selection_weight = 0.75 -maximum_placements = 20 +maximum_placements = 64 tags = PackedStringArray("land", "walkable", "sand", "coast", "slope", "beach_ocean_edge") allowed_neighbor_tags = PackedStringArray("sand", "grass") required_neighbor_tags = PackedStringArray("sand") diff --git a/world/generation/chunks/definitions/chunk_0004.tres b/world/generation/chunks/definitions/chunk_0004.tres index e56842e..7cf54b4 100644 --- a/world/generation/chunks/definitions/chunk_0004.tres +++ b/world/generation/chunks/definitions/chunk_0004.tres @@ -14,5 +14,6 @@ tags = PackedStringArray("land", "walkable", "fresh_water", "pond") allowed_neighbor_tags = PackedStringArray("grass") preferred_neighbor_tags = PackedStringArray("grass") water_inlet_edges = 1 +water_outlet_edges = 1 water_surface_size = Vector2(7, 8) water_surface_offset = Vector2(-0.32, -1.03) diff --git a/world/generation/chunks/definitions/chunk_0005.tres b/world/generation/chunks/definitions/chunk_0005.tres index faa266d..e34add5 100644 --- a/world/generation/chunks/definitions/chunk_0005.tres +++ b/world/generation/chunks/definitions/chunk_0005.tres @@ -10,7 +10,7 @@ label = "grass ocean edge" packed_scene = ExtResource("2_scene") primary_mesh_name = &"chunk_0005" selection_weight = 1.0 -maximum_placements = 20 +maximum_placements = 64 tags = PackedStringArray("land", "walkable", "grass", "coast", "cliff", "grass_ocean_edge") allowed_neighbor_tags = PackedStringArray("grass", "sand", "coast") north_allowed_neighbor_tags = PackedStringArray("coast") diff --git a/world/generation/chunks/definitions/chunk_0009.tres b/world/generation/chunks/definitions/chunk_0009.tres index 4be6d07..8f1f19c 100644 --- a/world/generation/chunks/definitions/chunk_0009.tres +++ b/world/generation/chunks/definitions/chunk_0009.tres @@ -14,7 +14,7 @@ base_layer_scene = ExtResource("3_base_grass") base_layer_mesh_name = &"chunk_0000" overlay_only = true selection_weight = 0.22 -maximum_placements = 8 +maximum_placements = 32 tags = PackedStringArray("land", "walkable", "grass", "elevation_2", "elevation_2_top") allowed_neighbor_tags = PackedStringArray("elevation_2") required_neighbor_tags = PackedStringArray("elevation_2") diff --git a/world/generation/chunks/definitions/chunk_0014.tres b/world/generation/chunks/definitions/chunk_0014.tres index c3a0d87..e0a1aa1 100644 --- a/world/generation/chunks/definitions/chunk_0014.tres +++ b/world/generation/chunks/definitions/chunk_0014.tres @@ -14,11 +14,12 @@ selection_weight = 0.28 maximum_placements = 32 tags = PackedStringArray("land", "walkable", "grass", "coast", "cliff", "edge", "elevation_2", "elevation_2_border", "elevation_2_sea_edge") allowed_neighbor_tags = PackedStringArray("elevation_2") -north_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge") -south_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge") +north_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge", "elevation_2_border") +south_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge", "elevation_2_border") west_allowed_neighbor_tags = PackedStringArray("elevation_2_top") required_neighbor_tags = PackedStringArray("elevation_2_top") minimum_required_neighbors = 1 preferred_neighbor_tags = PackedStringArray("elevation_2", "coast") prefers_map_boundary = true ocean_facing_edges = 2 +buried_cliff_seam_edges = 5 diff --git a/world/generation/chunks/definitions/chunk_0015.tres b/world/generation/chunks/definitions/chunk_0015.tres index d7f0a5a..7a03e49 100644 --- a/world/generation/chunks/definitions/chunk_0015.tres +++ b/world/generation/chunks/definitions/chunk_0015.tres @@ -14,10 +14,11 @@ selection_weight = 0.12 maximum_placements = 16 tags = PackedStringArray("land", "walkable", "grass", "coast", "cliff", "corner", "elevation_2", "elevation_2_border", "elevation_2_sea_edge") allowed_neighbor_tags = PackedStringArray("elevation_2") -north_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge") -west_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge") +north_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge", "elevation_2_border") +west_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge", "elevation_2_border") required_neighbor_tags = PackedStringArray("elevation_2_sea_edge") minimum_required_neighbors = 2 preferred_neighbor_tags = PackedStringArray("elevation_2", "coast") prefers_map_boundary = true ocean_facing_edges = 6 +buried_cliff_seam_edges = 9 diff --git a/world/generation/chunks/definitions/chunk_0017.tres b/world/generation/chunks/definitions/chunk_0017.tres new file mode 100644 index 0000000..f7552ea --- /dev/null +++ b/world/generation/chunks/definitions/chunk_0017.tres @@ -0,0 +1,29 @@ +[gd_resource type="Resource" script_class="TerrainChunkDefinition" load_steps=4 format=3] + +[ext_resource type="Script" path="res://world/generation/terrain_chunk_definition.gd" id="1_definition"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0015.glb" id="2_scene"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0005.glb" id="3_base_coast"] + +[resource] +script = ExtResource("1_definition") +stable_id = &"chunk_0017" +label = "second-tier grass sea transition right" +packed_scene = ExtResource("2_scene") +primary_mesh_name = &"chunk_0015" +base_layer_scene = ExtResource("3_base_coast") +base_layer_mesh_name = &"chunk_0005" +base_layer_quarter_turns = 3 +overlay_only = true +selection_weight = 0.12 +maximum_placements = 8 +tags = PackedStringArray("land", "walkable", "grass", "coast", "cliff", "corner", "transition", "elevation_2", "elevation_2_border", "elevation_2_sea_edge") +allowed_neighbor_tags = PackedStringArray("elevation_2") +north_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge", "elevation_2_border") +east_allowed_neighbor_tags = PackedStringArray("grass") +west_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge", "elevation_2_border") +required_neighbor_tags = PackedStringArray("elevation_2_border") +minimum_required_neighbors = 2 +preferred_neighbor_tags = PackedStringArray("elevation_2", "coast") +prefers_map_boundary = true +ocean_facing_edges = 4 +buried_cliff_seam_edges = 9 diff --git a/world/generation/chunks/definitions/chunk_0018.tres b/world/generation/chunks/definitions/chunk_0018.tres new file mode 100644 index 0000000..f15421b --- /dev/null +++ b/world/generation/chunks/definitions/chunk_0018.tres @@ -0,0 +1,28 @@ +[gd_resource type="Resource" script_class="TerrainChunkDefinition" load_steps=4 format=3] + +[ext_resource type="Script" path="res://world/generation/terrain_chunk_definition.gd" id="1_definition"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0015.glb" id="2_scene"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0005.glb" id="3_base_coast"] + +[resource] +script = ExtResource("1_definition") +stable_id = &"chunk_0018" +label = "second-tier grass sea transition left" +packed_scene = ExtResource("2_scene") +primary_mesh_name = &"chunk_0015" +base_layer_scene = ExtResource("3_base_coast") +base_layer_mesh_name = &"chunk_0005" +overlay_only = true +selection_weight = 0.12 +maximum_placements = 8 +tags = PackedStringArray("land", "walkable", "grass", "coast", "cliff", "corner", "transition", "elevation_2", "elevation_2_border", "elevation_2_sea_edge") +allowed_neighbor_tags = PackedStringArray("elevation_2") +north_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge", "elevation_2_border") +south_allowed_neighbor_tags = PackedStringArray("grass") +west_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge", "elevation_2_border") +required_neighbor_tags = PackedStringArray("elevation_2_border") +minimum_required_neighbors = 2 +preferred_neighbor_tags = PackedStringArray("elevation_2", "coast") +prefers_map_boundary = true +ocean_facing_edges = 2 +buried_cliff_seam_edges = 9 diff --git a/world/generation/chunks/terrain_chunk_catalog.tres b/world/generation/chunks/terrain_chunk_catalog.tres index 7d577a3..1b3cdf9 100644 --- a/world/generation/chunks/terrain_chunk_catalog.tres +++ b/world/generation/chunks/terrain_chunk_catalog.tres @@ -1,4 +1,4 @@ -[gd_resource type="Resource" script_class="TerrainChunkCatalog" load_steps=21 format=3] +[gd_resource type="Resource" script_class="TerrainChunkCatalog" load_steps=23 format=3] [ext_resource type="Script" path="res://world/generation/terrain_chunk_catalog.gd" id="1_catalog"] [ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0000.tres" id="2_grass"] @@ -20,8 +20,10 @@ [ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0014.tres" id="18_cliff_sea_edge"] [ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0015.tres" id="19_cliff_sea_corner"] [ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0016.tres" id="20_stream_variant"] +[ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0017.tres" id="21_cliff_sea_transition_right"] +[ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0018.tres" id="22_cliff_sea_transition_left"] [resource] script = ExtResource("1_catalog") chunk_size = 10.0 -definitions = Array[ExtResource("7_definition_script")]([ExtResource("2_grass"), ExtResource("3_sand"), ExtResource("4_beach"), ExtResource("5_stream"), ExtResource("20_stream_variant"), ExtResource("6_pond"), ExtResource("9_grass_ocean_edge"), ExtResource("10_grass_beach_transition"), ExtResource("11_grass_ocean_corner"), ExtResource("12_beach_ocean_corner"), ExtResource("17_grass_sand_diagonal"), ExtResource("13_cliff_top"), ExtResource("14_cliff_corner"), ExtResource("15_cliff_edge"), ExtResource("16_cliff_ramp"), ExtResource("18_cliff_sea_edge"), ExtResource("19_cliff_sea_corner"), ExtResource("8_spawn")]) +definitions = Array[ExtResource("7_definition_script")]([ExtResource("2_grass"), ExtResource("3_sand"), ExtResource("4_beach"), ExtResource("5_stream"), ExtResource("20_stream_variant"), ExtResource("6_pond"), ExtResource("9_grass_ocean_edge"), ExtResource("10_grass_beach_transition"), ExtResource("11_grass_ocean_corner"), ExtResource("12_beach_ocean_corner"), ExtResource("17_grass_sand_diagonal"), ExtResource("13_cliff_top"), ExtResource("14_cliff_corner"), ExtResource("15_cliff_edge"), ExtResource("16_cliff_ramp"), ExtResource("18_cliff_sea_edge"), ExtResource("19_cliff_sea_corner"), ExtResource("21_cliff_sea_transition_right"), ExtResource("22_cliff_sea_transition_left"), ExtResource("8_spawn")]) diff --git a/world/generation/generated_world_region.gd b/world/generation/generated_world_region.gd index 94a04dd..6a4dcd4 100644 --- a/world/generation/generated_world_region.gd +++ b/world/generation/generated_world_region.gd @@ -35,6 +35,7 @@ const PROP_CLUSTER_PLACEMENT_ATTEMPTS := 10 const PROP_MINIMUM_GROUND_CLEARANCE := 0.05 const PROP_CHANCE_SCALE := 10000 const PROP_SELECTION_WEIGHT_SCALE := 1000 +const GATHERABLE_ANCHOR_SURFACE_CLEARANCE := 0.02 const PROCEDURAL_PROP_GROUPS: Array[StringName] = [ &"grass_tree", &"grass_detail", @@ -665,10 +666,21 @@ func _instantiate_prop( if definition.gatherable_anchor_height > 0.0: var anchor := Marker3D.new() anchor.name = "TreeAnchor_%d" % _tree_anchors.get_child_count() - anchor.position = prop.position + Vector3( - 0.0, - definition.gatherable_anchor_height * visual_scale, - 0.0, + var local_anchor_position := ( + definition.collision_offset * visual_scale + + Vector3( + 0.0, + definition.gatherable_anchor_height * visual_scale, + -( + definition.gatherable_anchor_surface_radius() + * visual_scale + + GATHERABLE_ANCHOR_SURFACE_CLEARANCE + ), + ) + ) + anchor.position = prop.position + local_anchor_position.rotated( + Vector3.UP, + yaw, ) _tree_anchors.add_child(anchor) return true diff --git a/world/generation/generated_world_region.tscn b/world/generation/generated_world_region.tscn index 7987172..dec37ae 100644 --- a/world/generation/generated_world_region.tscn +++ b/world/generation/generated_world_region.tscn @@ -36,7 +36,7 @@ generation_seed = 13001 generate_on_ready = false build_collision = true force_center_chunk_id = &"chunk_spawn" -required_chunk_ids = PackedStringArray("chunk_spawn", "chunk_0001", "chunk_0002", "chunk_0003", "chunk_0004", "chunk_0005", "chunk_0006", "chunk_0007", "chunk_0008") +required_chunk_ids = PackedStringArray("chunk_spawn", "chunk_0001", "chunk_0003", "chunk_0004") grass_sand_smoothing_enabled = true elevated_cliff_feature_enabled = true required_chunk_weight_multiplier = 64.0 diff --git a/world/generation/props/definitions/prop_pine.tres b/world/generation/props/definitions/prop_pine.tres index aa5a638..26e9cb0 100644 --- a/world/generation/props/definitions/prop_pine.tres +++ b/world/generation/props/definitions/prop_pine.tres @@ -10,7 +10,7 @@ label = "small pine" packed_scene = ExtResource("2_scene") procedural_group = &"grass_tree" required_chunk_tags = PackedStringArray("grass") -selection_weight = 0.7 +selection_weight = 1.0 minimum_spawn_chunk_distance = 2 clearance_radius = 1.55 minimum_visual_scale = 0.65 diff --git a/world/generation/props/definitions/prop_pine_large.tres b/world/generation/props/definitions/prop_pine_large.tres index 05e4d2d..47c8577 100644 --- a/world/generation/props/definitions/prop_pine_large.tres +++ b/world/generation/props/definitions/prop_pine_large.tres @@ -10,7 +10,7 @@ label = "large pine" packed_scene = ExtResource("2_scene") procedural_group = &"grass_tree" required_chunk_tags = PackedStringArray("grass") -selection_weight = 3.0 +selection_weight = 1.0 minimum_spawn_chunk_distance = 2 clearance_radius = 1.65 minimum_visual_scale = 0.75 diff --git a/world/generation/props/definitions/prop_tree_large.tres b/world/generation/props/definitions/prop_tree_large.tres index b902944..ebf6f2f 100644 --- a/world/generation/props/definitions/prop_tree_large.tres +++ b/world/generation/props/definitions/prop_tree_large.tres @@ -16,7 +16,7 @@ label = "large deciduous tree" packed_scene = ExtResource("2_scene") procedural_group = &"grass_tree" required_chunk_tags = PackedStringArray("grass") -selection_weight = 12.0 +selection_weight = 3.0 minimum_spawn_chunk_distance = 2 clearance_radius = 2.5 minimum_visual_scale = 0.75 diff --git a/world/generation/terrain_chunk_analyzer.gd b/world/generation/terrain_chunk_analyzer.gd index 84895b1..8be5a3d 100644 --- a/world/generation/terrain_chunk_analyzer.gd +++ b/world/generation/terrain_chunk_analyzer.gd @@ -51,7 +51,18 @@ static func create_variants( boundary_points.append_array( _collect_boundary_points( base_layer_mesh.mesh, - _transform_relative_to(base_layer_mesh, base_layer_root), + Transform3D( + Basis( + Vector3.UP, + float(definition.base_layer_quarter_turns) + * PI + * 0.5, + ), + Vector3.ZERO, + ) * _transform_relative_to( + base_layer_mesh, + base_layer_root, + ), chunk_size, edge_epsilon, ) diff --git a/world/generation/terrain_chunk_definition.gd b/world/generation/terrain_chunk_definition.gd index ca38dc3..01e7255 100644 --- a/world/generation/terrain_chunk_definition.gd +++ b/world/generation/terrain_chunk_definition.gd @@ -11,6 +11,10 @@ extends Resource @export_group("Layered Terrain") @export var base_layer_scene: PackedScene @export var base_layer_mesh_name: StringName +## Optional canonical rotation applied to a layered base before the authored +## chunk variant rotation. Coastal transition overlays use this to align one +## shared coastline scene with either downhill side of a corner. +@export_range(0, 3, 1) var base_layer_quarter_turns := 0 ## Overlay-only chunks replace a reserved base-terrain placement after the ## ordinary terrain solve. Inland overlays normally provide base_layer_scene; ## complete coastal overlays can instead carry their own descent to sea level. @@ -72,6 +76,10 @@ var allowed_rotation_mask := 15 ## in this mask must face outside the generated grid; it may never meet another ## terrain chunk. @export_flags("North", "East", "South", "West") var ocean_facing_edges := 0 +## Lateral seams where a deep coastal cliff may join its ordinary inland +## counterpart. Geometry below level-one ground is intentionally ignored on +## these authored edges because the neighboring base terrain buries it. +@export_flags("North", "East", "South", "West") var buried_cliff_seam_edges := 0 @export_flags("North", "East", "South", "West") var water_inlet_edges := 0 @export_flags("North", "East", "South", "West") var water_outlet_edges := 0 ## Optional generated water footprint in the chunk's unrotated local X/Z plane. diff --git a/world/generation/terrain_chunk_edge_profile.gd b/world/generation/terrain_chunk_edge_profile.gd index 20f23bb..fc10266 100644 --- a/world/generation/terrain_chunk_edge_profile.gd +++ b/world/generation/terrain_chunk_edge_profile.gd @@ -18,6 +18,38 @@ func matches(other: TerrainChunkEdgeProfile, tolerance: float) -> bool: return false var first_surface := _upper_surface_points() var second_surface := other._upper_surface_points() + return _surfaces_match(first_surface, second_surface, tolerance) + + +## Compares only the visible raised portion of two edge profiles. Authored +## deep-water cliff pieces continue below ordinary ground level; when their +## lateral end meets an inland cliff, that lower extension is buried by the +## neighboring base terrain and must not create a false seam mismatch. +func matches_above_height( + other: TerrainChunkEdgeProfile, + minimum_height: float, + tolerance: float, +) -> bool: + if other == null: + return false + var first_surface := _points_above_height( + _upper_surface_points(), + minimum_height, + tolerance, + ) + var second_surface := _points_above_height( + other._upper_surface_points(), + minimum_height, + tolerance, + ) + return _surfaces_match(first_surface, second_surface, tolerance) + + +func _surfaces_match( + first_surface: PackedVector2Array, + second_surface: PackedVector2Array, + tolerance: float, +) -> bool: if first_surface.size() < 2 or second_surface.size() < 2: return false if ( @@ -43,6 +75,18 @@ func matches(other: TerrainChunkEdgeProfile, tolerance: float) -> bool: return true +func _points_above_height( + surface: PackedVector2Array, + minimum_height: float, + tolerance: float, +) -> PackedVector2Array: + var result := PackedVector2Array() + for point: Vector2 in surface: + if point.y > minimum_height + tolerance: + result.append(point) + return result + + func _upper_surface_points() -> PackedVector2Array: var result := PackedVector2Array() for point: Vector2 in points: diff --git a/world/generation/terrain_chunk_generator.gd b/world/generation/terrain_chunk_generator.gd index 6555568..c8ab4e2 100644 --- a/world/generation/terrain_chunk_generator.gd +++ b/world/generation/terrain_chunk_generator.gd @@ -7,6 +7,13 @@ const CONSTRAINT_PROFILE_QUANTIZATION := 0.001 const CANDIDATE_WEIGHT_SCALE := 10000.0 const LARGE_GRID_LIGHTWEIGHT_THRESHOLD := 128 const LARGE_GRID_PROPAGATION_INTERVAL := 8 +const ELEVATED_FEATURE_RADIUS := 2 +const ELEVATED_FEATURE_CLEARANCE_RADIUS := ELEVATED_FEATURE_RADIUS + 1 +const ELEVATED_FEATURE_BOUNDARY_MARGIN := ELEVATED_FEATURE_CLEARANCE_RADIUS + 1 +const SECONDARY_ELEVATED_FEATURE_RADIUS := 1 +const SECONDARY_ELEVATED_FEATURE_CLEARANCE_RADIUS := ( + SECONDARY_ELEVATED_FEATURE_RADIUS + 1 +) # Keep packed domain bits below the signed 64-bit sign bit. Catalogs larger # than this remain correct through the unpacked solver path. const MAX_PACKED_SOLVER_VARIANTS := 62 @@ -33,7 +40,12 @@ const MAX_PACKED_SOLVER_VARIANTS := 62 @export var elevated_cliff_corner_chunk_id: StringName = &"chunk_0010" @export var elevated_cliff_edge_chunk_id: StringName = &"chunk_0011" @export var elevated_cliff_ramp_chunk_id: StringName = &"chunk_0012" -@export_range(0.0, 1.0, 0.05) var elevated_cliff_ramp_chance := 0.75 +@export var elevated_cliff_sea_edge_chunk_id: StringName = &"chunk_0014" +@export var elevated_cliff_sea_corner_chunk_id: StringName = &"chunk_0015" +@export var elevated_cliff_sea_transition_right_chunk_id: StringName = &"chunk_0017" +@export var elevated_cliff_sea_transition_left_chunk_id: StringName = &"chunk_0018" +@export var elevated_cliff_coast_base_chunk_id: StringName = &"chunk_0005" +@export_range(0.0, 1.0, 0.05) var elevated_cliff_ramp_chance := 1.0 ## A smaller third tier reuses the existing corner geometry at the authored ## two-meter level interval. It is nested into the lower cliff assembly rather ## than occupying or replacing additional terrain-grid cells. @@ -72,6 +84,7 @@ var _random := RandomNumberGenerator.new() var _generated_chunks: Node3D var _backtrack_count := 0 var _elevated_feature_center := Vector2i(-1, -1) +var _secondary_elevated_feature_center := Vector2i(-1, -1) var _elevated_feature_reserved_grass_indices: Dictionary[int, bool] = {} var _stacked_elevated_placements: Array[Dictionary] = [] @@ -186,7 +199,7 @@ func _resolved_layout_validation_error( var current := layout[index] if not _variant_respects_ocean_boundary(current, coordinate): return ( - "cell %d has an ocean-facing edge directed into the terrain grid." + "cell %d does not exactly match the authored ocean boundary." % index ) if coordinate.x + 1 < grid_size.x: @@ -1177,6 +1190,13 @@ func _candidate_can_occupy_cell( if ( _elevated_feature_reserved_grass_indices.has(index) and candidate.definition.stable_id != elevated_cliff_base_chunk_id + and not ( + coordinate == Vector2i(grid_size.x / 2, grid_size.y / 2) + and force_center_chunk_id != &"" + and candidate.definition.stable_id == force_center_chunk_id + and "grass" in candidate.definition.tags + and "flat" in candidate.definition.tags + ) ): return false var center := Vector2i(grid_size.x / 2, grid_size.y / 2) @@ -1195,6 +1215,7 @@ func _candidate_can_occupy_cell( func _prepare_elevated_feature_region() -> bool: _elevated_feature_center = Vector2i(-1, -1) + _secondary_elevated_feature_center = Vector2i(-1, -1) _elevated_feature_reserved_grass_indices.clear() _stacked_elevated_placements.clear() if not elevated_cliff_feature_enabled: @@ -1206,49 +1227,106 @@ func _prepare_elevated_feature_region() -> bool: elevated_cliff_corner_chunk_id, elevated_cliff_edge_chunk_id, elevated_cliff_ramp_chunk_id, + elevated_cliff_sea_edge_chunk_id, + elevated_cliff_sea_corner_chunk_id, + elevated_cliff_sea_transition_right_chunk_id, + elevated_cliff_sea_transition_left_chunk_id, + elevated_cliff_coast_base_chunk_id, ]: if catalog.definition_for_id(stable_id) == null: push_error("Elevated cliff feature references missing chunk %s." % stable_id) return false - if grid_size.x < 11 or grid_size.y < 9: + if grid_size.x < 11 or grid_size.y < 11: push_error( - "Elevated cliff feature requires at least an 11x9 terrain grid." + "Elevated cliff feature requires at least an 11x11 terrain grid." ) return false var forced_center := Vector2i(grid_size.x / 2, grid_size.y / 2) var candidates: Array[Vector2i] = [] - for row: int in range(2, grid_size.y - 2): - for column: int in range(2, grid_size.x - 2): + for row: int in range( + ELEVATED_FEATURE_BOUNDARY_MARGIN, + grid_size.y - ELEVATED_FEATURE_BOUNDARY_MARGIN, + ): + for column: int in range( + ELEVATED_FEATURE_BOUNDARY_MARGIN, + grid_size.x - ELEVATED_FEATURE_BOUNDARY_MARGIN, + ): var candidate := Vector2i(column, row) if ( - absi(candidate.x - forced_center.x) <= 2 - and absi(candidate.y - forced_center.y) <= 2 + absi(candidate.x - forced_center.x) + <= ELEVATED_FEATURE_RADIUS + and absi(candidate.y - forced_center.y) + <= ELEVATED_FEATURE_RADIUS ): continue candidates.append(candidate) if candidates.is_empty(): - push_error("Terrain grid has no inland 3x3 cliff feature location.") + push_error("Terrain grid has no inland 5x5 cliff feature location.") return false var feature_random := RandomNumberGenerator.new() feature_random.seed = generation_seed ^ 0x2E1E7A7ED _elevated_feature_center = candidates[ feature_random.randi_range(0, candidates.size() - 1) ] - # Solve the authored 3x3 cliff assembly into a one-cell ring of ordinary - # level-one flat grass. Every raised piece still occupies one of the inner - # nine grass cells; the outer ring prevents a stream, pond, or coast profile - # from being exposed directly against its downhill edge. - for row_offset: int in range(-2, 3): - for column_offset: int in range(-2, 3): - var coordinate := ( - _elevated_feature_center - + Vector2i(column_offset, row_offset) + # Solve the authored 5x5 plateau into a one-cell ring of ordinary level-one + # flat grass. The larger top provides a real landing beyond the ramp and + # leaves usable second-tier terrain around the optional third tier. + _reserve_elevated_feature_base( + _elevated_feature_center, + ELEVATED_FEATURE_CLEARANCE_RADIUS, + ) + var secondary_candidates := _coastal_elevated_feature_centers() + var combined_clearance := ( + ELEVATED_FEATURE_CLEARANCE_RADIUS + + SECONDARY_ELEVATED_FEATURE_CLEARANCE_RADIUS + ) + secondary_candidates = secondary_candidates.filter( + func(candidate: Vector2i) -> bool: + var separation := candidate - _elevated_feature_center + return ( + absi(separation.x) > combined_clearance + or absi(separation.y) > combined_clearance ) + ) + if not secondary_candidates.is_empty(): + _secondary_elevated_feature_center = secondary_candidates[ + feature_random.randi_range(0, secondary_candidates.size() - 1) + ] + _reserve_elevated_feature_base( + _secondary_elevated_feature_center, + SECONDARY_ELEVATED_FEATURE_CLEARANCE_RADIUS, + ) + _build_grid_solver_caches() + return true + + +func _coastal_elevated_feature_centers() -> Array[Vector2i]: + return [ + Vector2i(1, 1), + Vector2i(grid_size.x - 2, 1), + Vector2i(1, grid_size.y - 2), + Vector2i(grid_size.x - 2, grid_size.y - 2), + ] + + +func _reserve_elevated_feature_base( + center: Vector2i, + clearance_radius: int, +) -> void: + for row_offset: int in range(-clearance_radius, clearance_radius + 1): + for column_offset: int in range( + -clearance_radius, + clearance_radius + 1, + ): + var coordinate := center + Vector2i(column_offset, row_offset) + if ( + not _coordinate_is_inside_grid(coordinate) + or _coordinate_is_on_boundary(coordinate) + ): + continue _elevated_feature_reserved_grass_indices[ coordinate.y * grid_size.x + coordinate.x ] = true - _build_grid_solver_caches() - return true func _build_grid_solver_caches() -> void: @@ -1283,6 +1361,14 @@ func _build_grid_solver_caches() -> void: _elevated_feature_reserved_grass_indices.has(index) and candidate.definition.stable_id != elevated_cliff_base_chunk_id + and not ( + coordinate == center + and force_center_chunk_id != &"" + and candidate.definition.stable_id + == force_center_chunk_id + and "grass" in candidate.definition.tags + and "flat" in candidate.definition.tags + ) ): continue if ( @@ -1402,35 +1488,25 @@ func _apply_elevated_feature() -> bool: if _elevated_feature_center.x < 0 or _elevated_feature_center.y < 0: push_error("Elevated cliff feature has no reserved base region.") return false - var edge_specs: Array[Dictionary] = [ - {"offset": Vector2i(0, -1), "turns": 1}, - {"offset": Vector2i(1, 0), "turns": 0}, - {"offset": Vector2i(0, 1), "turns": 3}, - {"offset": Vector2i(-1, 0), "turns": 2}, - ] var feature_random := RandomNumberGenerator.new() feature_random.seed = generation_seed ^ 0x51A7C11FF - var ramp_edge := -1 - if feature_random.randf() < elevated_cliff_ramp_chance: - ramp_edge = feature_random.randi_range(0, edge_specs.size() - 1) - var placements: Array[Dictionary] = [ - {"offset": Vector2i(-1, -1), "id": elevated_cliff_corner_chunk_id, "turns": 2}, - {"offset": Vector2i(1, -1), "id": elevated_cliff_corner_chunk_id, "turns": 1}, - {"offset": Vector2i(0, 0), "id": elevated_cliff_top_chunk_id, "turns": 0}, - {"offset": Vector2i(-1, 1), "id": elevated_cliff_corner_chunk_id, "turns": 3}, - {"offset": Vector2i(1, 1), "id": elevated_cliff_corner_chunk_id, "turns": 0}, - ] - for edge_index: int in edge_specs.size(): - var edge_spec := edge_specs[edge_index] - placements.append({ - "offset": edge_spec["offset"], - "id": ( - elevated_cliff_ramp_chunk_id - if edge_index == ramp_edge - else elevated_cliff_edge_chunk_id - ), - "turns": edge_spec["turns"], - }) + var placements := _elevated_feature_placement_specs( + _elevated_feature_center, + ELEVATED_FEATURE_RADIUS, + feature_random, + ) + if ( + _secondary_elevated_feature_center.x >= 0 + and int( + _placement_counts.get(elevated_cliff_coast_base_chunk_id, 0) + ) > 0 + ): + placements.append_array( + _coastal_elevated_feature_placement_specs( + _secondary_elevated_feature_center, + feature_random, + ) + ) for spec: Dictionary in placements: var definition := catalog.definition_for_id(spec["id"] as StringName) var variant := _authored_variant(definition, int(spec["turns"])) @@ -1440,7 +1516,7 @@ func _apply_elevated_feature() -> bool: % [spec["id"], spec["turns"]] ) return false - var coordinate := _elevated_feature_center + (spec["offset"] as Vector2i) + var coordinate := spec["coordinate"] as Vector2i _set_placement( coordinate.y * grid_size.x + coordinate.x, variant, @@ -1452,6 +1528,174 @@ func _apply_elevated_feature() -> bool: return true +func _elevated_feature_placement_specs( + center: Vector2i, + radius: int, + feature_random: RandomNumberGenerator, +) -> Array[Dictionary]: + var edge_specs: Array[Dictionary] = [ + { + "edge": TerrainChunkTopology.Edge.NORTH, + "offset": Vector2i(0, -radius), + "turns": 1, + }, + { + "edge": TerrainChunkTopology.Edge.EAST, + "offset": Vector2i(radius, 0), + "turns": 0, + }, + { + "edge": TerrainChunkTopology.Edge.SOUTH, + "offset": Vector2i(0, radius), + "turns": 3, + }, + { + "edge": TerrainChunkTopology.Edge.WEST, + "offset": Vector2i(-radius, 0), + "turns": 2, + }, + ] + var ramp_edge: int = -1 + if feature_random.randf() < elevated_cliff_ramp_chance: + var usable_edges: Array[int] = [] + for edge_index: int in edge_specs.size(): + var edge_spec := edge_specs[edge_index] + var landing_coordinate := ( + center + + (edge_spec["offset"] as Vector2i) + + TerrainChunkTopology.grid_offset( + edge_spec["edge"] as TerrainChunkTopology.Edge + ) + ) + if ( + _coordinate_is_inside_grid(landing_coordinate) + and not _coordinate_is_on_boundary(landing_coordinate) + ): + usable_edges.append(edge_index) + if not usable_edges.is_empty(): + ramp_edge = usable_edges[ + feature_random.randi_range(0, usable_edges.size() - 1) + ] + var placements: Array[Dictionary] = [] + for row_offset: int in range(-radius, radius + 1): + for column_offset: int in range(-radius, radius + 1): + var offset := Vector2i(column_offset, row_offset) + var on_horizontal_edge := absi(column_offset) == radius + var on_vertical_edge := absi(row_offset) == radius + if on_horizontal_edge and on_vertical_edge: + placements.append({ + "coordinate": center + offset, + "id": elevated_cliff_corner_chunk_id, + "turns": _elevated_corner_turns(offset), + }) + continue + if on_horizontal_edge or on_vertical_edge: + var edge_index := _elevated_edge_index(offset, radius) + placements.append({ + "coordinate": center + offset, + "id": ( + elevated_cliff_ramp_chunk_id + if ramp_edge >= 0 + and offset == edge_specs[ramp_edge]["offset"] + else elevated_cliff_edge_chunk_id + ), + "turns": edge_specs[edge_index]["turns"], + }) + continue + placements.append({ + "coordinate": center + offset, + "id": elevated_cliff_top_chunk_id, + "turns": 0, + }) + return placements + + +func _coastal_elevated_feature_placement_specs( + center: Vector2i, + feature_random: RandomNumberGenerator, +) -> Array[Dictionary]: + var placements := _elevated_feature_placement_specs( + center, + SECONDARY_ELEVATED_FEATURE_RADIUS, + feature_random, + ) + for spec: Dictionary in placements: + var coordinate := spec["coordinate"] as Vector2i + var outside_edge_count := _outside_edge_count(coordinate) + if outside_edge_count == 2: + spec["id"] = elevated_cliff_sea_corner_chunk_id + elif ( + outside_edge_count == 1 + and spec["id"] == elevated_cliff_corner_chunk_id + ): + spec["id"] = _coastal_transition_id( + coordinate, + int(spec["turns"]), + ) + elif outside_edge_count == 1 and ( + spec["id"] == elevated_cliff_edge_chunk_id + or spec["id"] == elevated_cliff_ramp_chunk_id + ): + spec["id"] = elevated_cliff_sea_edge_chunk_id + return placements + + +func _coastal_transition_id( + coordinate: Vector2i, + quarter_turns: int, +) -> StringName: + for stable_id: StringName in [ + elevated_cliff_sea_transition_right_chunk_id, + elevated_cliff_sea_transition_left_chunk_id, + ]: + var definition := catalog.definition_for_id(stable_id) + var variant := _authored_variant(definition, quarter_turns) + if ( + variant != null + and _variant_respects_ocean_boundary(variant, coordinate) + ): + return stable_id + push_error( + "Coastal cliff feature has no transition for %s rotation %d." + % [coordinate, quarter_turns] + ) + return &"" + + +func _outside_edge_count(coordinate: Vector2i) -> int: + var result := 0 + for edge_value: int in TerrainChunkTopology.Edge.values(): + var neighbor := ( + coordinate + + TerrainChunkTopology.grid_offset( + edge_value as TerrainChunkTopology.Edge + ) + ) + if not _coordinate_is_inside_grid(neighbor): + result += 1 + return result + + +func _elevated_edge_index(offset: Vector2i, radius: int) -> int: + if offset.y == -radius: + return 0 + if offset.x == radius: + return 1 + if offset.y == radius: + return 2 + return 3 + + +func _elevated_corner_turns(offset: Vector2i) -> int: + if offset.x < 0 and offset.y < 0: + return 2 + if offset.x > 0 and offset.y < 0: + return 1 + if offset.x < 0 and offset.y > 0: + return 3 + return 0 + + func _configure_stacked_elevated_feature() -> bool: _stacked_elevated_placements.clear() if ( @@ -1459,17 +1703,19 @@ func _configure_stacked_elevated_feature() -> bool: or elevated_cliff_third_level_chance <= 0.0 ): return true - var top_coordinate := Vector2i(-1, -1) - for index: int in _placements.size(): - var placement := _placements[index] - if ( - placement != null - and placement.definition.stable_id == elevated_cliff_top_chunk_id - ): - top_coordinate = Vector2i(index % grid_size.x, index / grid_size.x) - break + var top_coordinate := _elevated_feature_center if top_coordinate.x < 0: return true + var top_index := top_coordinate.y * grid_size.x + top_coordinate.x + if ( + top_index < 0 + or top_index >= _placements.size() + or _placements[top_index] == null + or _placements[top_index].definition.stable_id + != elevated_cliff_top_chunk_id + ): + push_error("Stacked cliff feature lost its central supporting top.") + return false var stack_random := RandomNumberGenerator.new() stack_random.seed = generation_seed ^ 0x7312DC11F if stack_random.randf() >= elevated_cliff_third_level_chance: @@ -1515,25 +1761,28 @@ func _variant_respects_ocean_boundary( variant: TerrainChunkVariant, coordinate: Vector2i, ) -> bool: + var ocean_edges := variant.rotated_edge_mask( + variant.definition.ocean_facing_edges + ) if ( variant.definition.must_be_interior and _coordinate_is_on_boundary(coordinate) ): return false - var ocean_edges := variant.rotated_edge_mask( - variant.definition.ocean_facing_edges - ) for edge_value: int in TerrainChunkTopology.Edge.values(): - if (ocean_edges & (1 << edge_value)) == 0: - continue + var edge := edge_value as TerrainChunkTopology.Edge var ocean_coordinate := ( coordinate - + TerrainChunkTopology.grid_offset( - edge_value as TerrainChunkTopology.Edge - ) + + TerrainChunkTopology.grid_offset(edge) ) + var edge_faces_ocean := (ocean_edges & (1 << edge_value)) != 0 if _coordinate_is_inside_grid(ocean_coordinate): - return false + if edge_faces_ocean: + return false + continue + if edge_faces_ocean: + continue + return false return true @@ -1616,10 +1865,28 @@ func _calculate_edge_compatibility( second: TerrainChunkVariant, second_edge: TerrainChunkTopology.Edge, ) -> bool: - if not first.profile(first_edge).matches( + var profiles_match := first.profile(first_edge).matches( second.profile(second_edge), edge_match_tolerance, + ) + if not profiles_match and ( + _variant_edge_has_connector( + first, + first.definition.buried_cliff_seam_edges, + first_edge, + ) + or _variant_edge_has_connector( + second, + second.definition.buried_cliff_seam_edges, + second_edge, + ) ): + profiles_match = first.profile(first_edge).matches_above_height( + second.profile(second_edge), + 0.0, + edge_match_tolerance, + ) + if not profiles_match: return false var first_inlet := _variant_edge_has_connector( first, @@ -2195,6 +2462,9 @@ func _instantiate_chunk_root( var layered_root := Node3D.new() layered_root.name = "LayeredTerrainChunk" base_layer_visual.name = "TerrainBaseLayer" + base_layer_visual.rotation.y = ( + float(definition.base_layer_quarter_turns) * PI * 0.5 + ) terrain_visual.name = "TerrainOverlay" layered_root.add_child(base_layer_visual) layered_root.add_child(terrain_visual) diff --git a/world/generation/terrain_chunk_variant.gd b/world/generation/terrain_chunk_variant.gd index ca45812..f2f9e65 100644 --- a/world/generation/terrain_chunk_variant.gd +++ b/world/generation/terrain_chunk_variant.gd @@ -48,14 +48,18 @@ func topology_signature(quantization: float) -> String: func constraint_signature(quantization: float) -> String: - return "%s|neighbors:%s|surfaces:%s|ocean:%d|in:%d|out:%d" % [ + return ( + "%s|neighbors:%s|surfaces:%s|ocean:%d|buried:%d|in:%d|out:%d" + % [ topology_signature(quantization), _neighbor_rule_signature(), _surface_rule_signature(), rotated_edge_mask(definition.ocean_facing_edges), + rotated_edge_mask(definition.buried_cliff_seam_edges), rotated_edge_mask(definition.water_inlet_edges), rotated_edge_mask(definition.water_outlet_edges), - ] + ] + ) func _neighbor_rule_signature() -> String: diff --git a/world/generation/terrain_prop_catalog.gd b/world/generation/terrain_prop_catalog.gd index 0bc1ca7..f475563 100644 --- a/world/generation/terrain_prop_catalog.gd +++ b/world/generation/terrain_prop_catalog.gd @@ -73,6 +73,14 @@ func validation_errors() -> PackedStringArray: "%s defines more than one collision shape." % definition.stable_id ) + if ( + definition.gatherable_anchor_height > 0.0 + and definition.gatherable_anchor_surface_radius() <= 0.0 + ): + errors.append( + "%s is gatherable but has no trunk-surface radius." + % definition.stable_id + ) if ( definition.collision_box_size.x < 0.0 or definition.collision_box_size.y < 0.0 diff --git a/world/generation/terrain_prop_definition.gd b/world/generation/terrain_prop_definition.gd index bfe3677..1479371 100644 --- a/world/generation/terrain_prop_definition.gd +++ b/world/generation/terrain_prop_definition.gd @@ -49,6 +49,9 @@ extends Resource @export var collision_offset := Vector3.ZERO ## Values above zero add this prop to the tree-gathering anchor set. @export_range(0.0, 20.0, 0.05) var gatherable_anchor_height := 0.0 +## Optional distance from the prop origin to the visible trunk surface. A +## zero value derives the distance from the authored collision shape. +@export_range(0.0, 5.0, 0.05) var gatherable_anchor_radius := 0.0 func supports_chunk_tags(chunk_tags: PackedStringArray) -> bool: @@ -74,5 +77,15 @@ func has_box_collision() -> bool: ) +func gatherable_anchor_surface_radius() -> float: + if gatherable_anchor_radius > 0.0: + return gatherable_anchor_radius + if has_cylinder_collision(): + return collision_radius + if has_box_collision(): + return maxf(collision_box_size.x, collision_box_size.z) * 0.5 + return 0.0 + + func is_procedural() -> bool: return procedural_group != &"" From 2c17b7b37749cee429c908fc713ff7c30c563d0b Mon Sep 17 00:00:00 2001 From: Voyager Date: Fri, 21 Aug 2026 21:33:34 -0400 Subject: [PATCH 20/90] Fix freshwater time availability validation --- tests/world_time_validation.gd | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/world_time_validation.gd b/tests/world_time_validation.gd index b0b36a1..17ddb49 100644 --- a/tests/world_time_validation.gd +++ b/tests/world_time_validation.gd @@ -200,13 +200,15 @@ func _validate_system_clock_authority() -> void: func _validate_fishing_availability() -> void: var day_context := FishingContextType.new() - day_context.location_tags = [&"starter_pond"] + # Cover both freshwater habitat families so this test isolates time-of-day + # gating from the separate pond-versus-river availability rules. + day_context.location_tags = [&"starter_pond", &"river"] day_context.is_night = false var night_context := FishingContextType.new() - night_context.location_tags = [&"starter_pond"] + night_context.location_tags = [&"starter_pond", &"river"] night_context.is_night = true var transition_context := FishingContextType.new() - transition_context.location_tags = [&"starter_pond"] + transition_context.location_tags = [&"starter_pond", &"river"] transition_context.is_night = true transition_context.is_day_night_transition = true From f85e9bceebe99349e8f9b2218417f725ca463529 Mon Sep 17 00:00:00 2001 From: Voyager Date: Fri, 21 Aug 2026 22:12:14 -0400 Subject: [PATCH 21/90] fix: close generated coastlines and extend cast bounds --- tests/generated_world_runtime_validation.gd | 82 +++++++++++-------- .../terrain_chunk_compatibility_report.gd | 1 + .../terrain_chunk_generator_test.tscn | 2 +- tests/terrain_chunk_generator_validation.gd | 54 ++++++++++-- tests/world_layout_validation.gd | 21 +++++ .../chunks/definitions/chunk_0001.tres | 1 + .../chunks/definitions/chunk_0013.tres | 1 + .../chunks/definitions/chunk_0017.tres | 4 +- .../chunks/definitions/chunk_0018.tres | 5 +- .../chunks/definitions/chunk_0019.tres | 29 +++++++ .../chunks/definitions/chunk_0020.tres | 29 +++++++ .../chunks/terrain_chunk_catalog.tres | 6 +- world/generation/generated_world_region.tscn | 2 +- world/generation/terrain_chunk_definition.gd | 5 ++ world/generation/terrain_chunk_generator.gd | 59 +++++++++++-- world/test_world.gd | 6 +- 16 files changed, 250 insertions(+), 57 deletions(-) create mode 100644 world/generation/chunks/definitions/chunk_0019.tres create mode 100644 world/generation/chunks/definitions/chunk_0020.tres diff --git a/tests/generated_world_runtime_validation.gd b/tests/generated_world_runtime_validation.gd index 60ef84c..0f7a4dc 100644 --- a/tests/generated_world_runtime_validation.gd +++ b/tests/generated_world_runtime_validation.gd @@ -116,40 +116,31 @@ func _validate_generated_region( var grass_coast_count := _placement_count(placements, "chunk_0005") var grass_corner_count := _placement_count(placements, "chunk_0007") var beach_corner_count := _placement_count(placements, "chunk_0008") - assert((beach_count > 0) != (grass_coast_count > 0)) - if beach_count > 0: - assert(beach_count == 48 and grass_coast_count == 0) - assert(beach_corner_count == 4 and grass_corner_count == 0) - assert(_placement_count(placements, "chunk_0009") == 9) - assert(_placement_count(placements, "chunk_0010") == 4) - assert( - _placement_count(placements, "chunk_0011") - + _placement_count(placements, "chunk_0012") - == 12 + assert(beach_count == 44 and grass_coast_count == 0) + assert(beach_corner_count == 3 and grass_corner_count == 0) + assert(_placement_count(placements, "chunk_0009") == 10) + assert(_placement_count(placements, "chunk_0010") == 5) + assert( + _placement_count(placements, "chunk_0011") + + _placement_count(placements, "chunk_0012") + == 14 + ) + assert(_placement_count(placements, "chunk_0012") == 2) + assert(_placement_count(placements, "chunk_0014") == 2) + assert(_placement_count(placements, "chunk_0015") == 1) + assert(_placement_count(placements, "chunk_0017") == 0) + assert(_placement_count(placements, "chunk_0018") == 0) + assert(_placement_count(placements, "chunk_0019") == 1) + assert(_placement_count(placements, "chunk_0020") == 1) + for index: int in placements.size(): + var coordinate := Vector2i( + index % generator.grid_size.x, + index / generator.grid_size.x, ) - assert(_placement_count(placements, "chunk_0012") == 1) - for stable_id: String in [ - "chunk_0014", - "chunk_0015", - "chunk_0017", - "chunk_0018", - ]: - assert(_placement_count(placements, stable_id) == 0) - else: - assert(grass_coast_count == 44 and beach_count == 0) - assert(grass_corner_count == 3 and beach_corner_count == 0) - assert(_placement_count(placements, "chunk_0009") == 10) - assert(_placement_count(placements, "chunk_0010") == 5) - assert( - _placement_count(placements, "chunk_0011") - + _placement_count(placements, "chunk_0012") - == 14 - ) - assert(_placement_count(placements, "chunk_0012") == 2) - assert(_placement_count(placements, "chunk_0014") == 2) - assert(_placement_count(placements, "chunk_0015") == 1) - assert(_placement_count(placements, "chunk_0017") == 1) - assert(_placement_count(placements, "chunk_0018") == 1) + if placements[index].begins_with("chunk_0001@"): + assert(generator._distance_from_map_boundary(coordinate) <= 1) + elif placements[index].begins_with("chunk_0013@"): + assert(generator._distance_from_map_boundary(coordinate) <= 2) assert(_placement_count(placements, "chunk_0013") >= 1) assert( generator.get_generated_chunks_root().get_child_count() @@ -362,6 +353,8 @@ func _validate_elevated_cliff_feature( &"chunk_0015", &"chunk_0017", &"chunk_0018", + &"chunk_0019", + &"chunk_0020", ] var has_coastal_feature := false for record: Dictionary in generator.placement_records(): @@ -375,6 +368,8 @@ func _validate_elevated_cliff_feature( &"chunk_0015", &"chunk_0017", &"chunk_0018", + &"chunk_0019", + &"chunk_0020", ]: continue var coordinate: Vector2i = record.get("coordinate", Vector2i.ZERO) @@ -482,6 +477,8 @@ func _validate_elevated_cliff_feature( &"chunk_0015", &"chunk_0017", &"chunk_0018", + &"chunk_0019", + &"chunk_0020", ]: continue if stable_id in [&"chunk_0014", &"chunk_0015"]: @@ -491,14 +488,27 @@ func _validate_elevated_cliff_feature( var base_layer := chunk_root.get_node_or_null("TerrainBaseLayer") var overlay := chunk_root.get_node_or_null("TerrainOverlay") assert(base_layer != null and overlay != null) - var is_transition := stable_id in [&"chunk_0017", &"chunk_0018"] + var transition_base_mesh := &"chunk_0000" + if stable_id in [&"chunk_0017", &"chunk_0018"]: + transition_base_mesh = &"chunk_0007" + elif stable_id in [&"chunk_0019", &"chunk_0020"]: + transition_base_mesh = &"chunk_0008" var base_mesh := TerrainChunkAnalyzer.find_primary_mesh( base_layer, - &"chunk_0005" if is_transition else &"chunk_0000", + transition_base_mesh, ) var overlay_mesh := TerrainChunkAnalyzer.find_primary_mesh( overlay, - &"chunk_0015" if is_transition else stable_id, + ( + &"chunk_0015" + if stable_id in [ + &"chunk_0017", + &"chunk_0018", + &"chunk_0019", + &"chunk_0020", + ] + else stable_id + ), ) assert(base_mesh != null and base_mesh.mesh != null) assert(overlay_mesh != null and overlay_mesh.mesh != null) diff --git a/tests/manual/terrain_chunk_generator/terrain_chunk_compatibility_report.gd b/tests/manual/terrain_chunk_generator/terrain_chunk_compatibility_report.gd index fbd78c1..0d35543 100644 --- a/tests/manual/terrain_chunk_generator/terrain_chunk_compatibility_report.gd +++ b/tests/manual/terrain_chunk_generator/terrain_chunk_compatibility_report.gd @@ -113,6 +113,7 @@ func _make_generator() -> TerrainChunkGenerator: [ "chunk_spawn", "chunk_0001", + "chunk_0002", "chunk_0003", "chunk_0004", ] diff --git a/tests/manual/terrain_chunk_generator/terrain_chunk_generator_test.tscn b/tests/manual/terrain_chunk_generator/terrain_chunk_generator_test.tscn index b29d4f8..df3a835 100644 --- a/tests/manual/terrain_chunk_generator/terrain_chunk_generator_test.tscn +++ b/tests/manual/terrain_chunk_generator/terrain_chunk_generator_test.tscn @@ -26,7 +26,7 @@ generation_seed = 13001 build_collision = true show_chunk_labels = false force_center_chunk_id = &"chunk_spawn" -required_chunk_ids = PackedStringArray("chunk_spawn", "chunk_0001", "chunk_0003", "chunk_0004") +required_chunk_ids = PackedStringArray("chunk_spawn", "chunk_0001", "chunk_0002", "chunk_0003", "chunk_0004") grass_sand_smoothing_enabled = true elevated_cliff_feature_enabled = true diff --git a/tests/terrain_chunk_generator_validation.gd b/tests/terrain_chunk_generator_validation.gd index 5aa7219..591467b 100644 --- a/tests/terrain_chunk_generator_validation.gd +++ b/tests/terrain_chunk_generator_validation.gd @@ -23,11 +23,14 @@ const EXPECTED_IDS: Array[String] = [ "chunk_0016", "chunk_0017", "chunk_0018", + "chunk_0019", + "chunk_0020", "chunk_spawn", ] const REQUIRED_IDS: Array[String] = [ "chunk_spawn", "chunk_0001", + "chunk_0002", "chunk_0003", "chunk_0004", ] @@ -54,6 +57,8 @@ const EXPECTED_VARIANT_COUNTS: Dictionary[StringName, int] = { &"chunk_0016": 4, &"chunk_0017": 4, &"chunk_0018": 4, + &"chunk_0019": 4, + &"chunk_0020": 4, &"chunk_spawn": 1, } @@ -101,6 +106,8 @@ func _validate_catalog() -> void: var cliff_sea_corner := CATALOG.definition_for_id(&"chunk_0015") var cliff_sea_transition_right := CATALOG.definition_for_id(&"chunk_0017") var cliff_sea_transition_left := CATALOG.definition_for_id(&"chunk_0018") + var cliff_beach_transition_right := CATALOG.definition_for_id(&"chunk_0019") + var cliff_beach_transition_left := CATALOG.definition_for_id(&"chunk_0020") var stream_variant := CATALOG.definition_for_id(&"chunk_0016") var cliff_top := CATALOG.definition_for_id(&"chunk_0009") var cliff_corner := CATALOG.definition_for_id(&"chunk_0010") @@ -122,6 +129,8 @@ func _validate_catalog() -> void: and cliff_sea_corner != null and cliff_sea_transition_right != null and cliff_sea_transition_left != null + and cliff_beach_transition_right != null + and cliff_beach_transition_left != null and stream_variant != null and cliff_top != null and cliff_corner != null @@ -145,6 +154,8 @@ func _validate_catalog() -> void: and cliff_sea_corner != null and cliff_sea_transition_right != null and cliff_sea_transition_left != null + and cliff_beach_transition_right != null + and cliff_beach_transition_left != null and stream_variant != null and cliff_top != null and cliff_corner != null @@ -168,8 +179,12 @@ func _validate_catalog() -> void: ( "sand" in sand.required_neighbor_tags and "coast" in sand.required_neighbor_tags + and sand.maximum_boundary_distance == 1 + ), + ( + "Every flat-sand chunk must remain attached to sand or authored " + + "coast within the first inland terrain ring." ), - "Every flat-sand chunk must remain attached to sand or authored coast.", ) _check( spawn.minimum_required_neighbors == 3, @@ -270,6 +285,7 @@ func _validate_catalog() -> void: _check( grass_sand_diagonal.must_be_interior and not grass_sand_diagonal.participates_in_base_solver + and grass_sand_diagonal.maximum_boundary_distance == 2 and "mixed_surface" in grass_sand_diagonal.tags, ( "The grass-sand diagonal must remain an inland post-process " @@ -355,7 +371,7 @@ func _validate_catalog() -> void: _check( transition.overlay_only and transition.base_layer_scene != null - and transition.base_layer_mesh_name == &"chunk_0005" + and transition.base_layer_mesh_name == &"chunk_0007" and not transition.must_be_interior and transition.prefers_map_boundary and "transition" in transition.tags, @@ -371,11 +387,37 @@ func _validate_catalog() -> void: "The right coastal transition must align its south-facing base coast.", ) _check( - cliff_sea_transition_left.base_layer_quarter_turns == 0 + cliff_sea_transition_left.base_layer_quarter_turns == 1 and cliff_sea_transition_left.ocean_facing_edges == (1 << int(TerrainChunkTopology.Edge.EAST)), "The left coastal transition must align its east-facing base coast.", ) + for transition: TerrainChunkDefinition in [ + cliff_beach_transition_right, + cliff_beach_transition_left, + ]: + _check( + transition.overlay_only + and transition.base_layer_scene != null + and transition.base_layer_mesh_name == &"chunk_0008" + and not transition.must_be_interior + and transition.prefers_map_boundary + and "sand" in transition.tags + and "transition" in transition.tags, + ( + "Each raised beach endpoint must close over an authored " + + "level-one beach corner." + ), + ) + _check( + cliff_beach_transition_right.base_layer_quarter_turns == 3 + and cliff_beach_transition_right.ocean_facing_edges + == (1 << int(TerrainChunkTopology.Edge.SOUTH)) + and cliff_beach_transition_left.base_layer_quarter_turns == 1 + and cliff_beach_transition_left.ocean_facing_edges + == (1 << int(TerrainChunkTopology.Edge.EAST)), + "The raised beach endpoint corners must face their open coastline.", + ) _check( cliff_sea_edge.ocean_facing_edges == (1 << int(TerrainChunkTopology.Edge.EAST)), @@ -1066,6 +1108,8 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: &"chunk_0015", &"chunk_0017", &"chunk_0018", + &"chunk_0019", + &"chunk_0020", ]: for quarter_turns: int in 4: var coast_variant := _find_variant( @@ -1117,8 +1161,8 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: func _validate_generation_summary(generator: TerrainChunkGenerator) -> void: var summary := generator._build_summary() _check( - int(summary.get("variant_count", 0)) == 77, - "The current catalog must expose all 77 authored rotations.", + int(summary.get("variant_count", 0)) == 85, + "The current catalog must expose all 85 authored rotations.", ) _check( int(summary.get("solver_variant_count", 0)) diff --git a/tests/world_layout_validation.gd b/tests/world_layout_validation.gd index 63f03ae..86bb00a 100644 --- a/tests/world_layout_validation.gd +++ b/tests/world_layout_validation.gd @@ -86,6 +86,7 @@ func _validate_world_switching() -> void: assert(world.get_world_layout() == WorldLayout.GENERATED) assert(world.get_fishing_shop() != null) assert(world.get_player_storage() != null) + _validate_world_boundary_clearance(world) assert(world.activate_world(WorldLayout.STARTER_ISLAND, 13579)) assert(world.get_world_layout() == WorldLayout.STARTER_ISLAND) assert(world.get_generation_seed() == 13579) @@ -103,6 +104,26 @@ func _validate_world_switching() -> void: await process_frame +func _validate_world_boundary_clearance(world: TestWorld) -> void: + var active_region := world.get("_active_region") as WorldRegion + assert(active_region != null) + var half := active_region.get_playable_half_extents() + var north := world.get_node("WorldBounds/North") as StaticBody3D + var south := world.get_node("WorldBounds/South") as StaticBody3D + var west := world.get_node("WorldBounds/West") as StaticBody3D + var east := world.get_node("WorldBounds/East") as StaticBody3D + var fishing_defaults := FishingSpot.new() + assert( + TestWorld.WORLD_BOUNDARY_SHORELINE_CLEARANCE + > fishing_defaults.maximum_cast_distance + 1.0 + ) + fishing_defaults.free() + assert(north.position.z - half.y >= 18.0) + assert(-south.position.z - half.y >= 18.0) + assert(-west.position.x - half.x >= 18.0) + assert(east.position.x - half.x >= 18.0) + + func _validate_network_metadata() -> void: var hello: Dictionary = NetworkProtocol.make_server_hello( true, diff --git a/world/generation/chunks/definitions/chunk_0001.tres b/world/generation/chunks/definitions/chunk_0001.tres index 516ea38..7ee7c2e 100644 --- a/world/generation/chunks/definitions/chunk_0001.tres +++ b/world/generation/chunks/definitions/chunk_0001.tres @@ -16,3 +16,4 @@ allowed_neighbor_tags = PackedStringArray("sand", "grass") required_neighbor_tags = PackedStringArray("sand", "coast") minimum_required_neighbors = 1 preferred_neighbor_tags = PackedStringArray("coast", "sand") +maximum_boundary_distance = 1 diff --git a/world/generation/chunks/definitions/chunk_0013.tres b/world/generation/chunks/definitions/chunk_0013.tres index 22b6061..22dfcd8 100644 --- a/world/generation/chunks/definitions/chunk_0013.tres +++ b/world/generation/chunks/definitions/chunk_0013.tres @@ -26,3 +26,4 @@ south_surface_tags = PackedStringArray("grass") west_surface_tags = PackedStringArray("sand") preferred_neighbor_tags = PackedStringArray("grass", "sand", "transition") must_be_interior = true +maximum_boundary_distance = 2 diff --git a/world/generation/chunks/definitions/chunk_0017.tres b/world/generation/chunks/definitions/chunk_0017.tres index f7552ea..f1300dc 100644 --- a/world/generation/chunks/definitions/chunk_0017.tres +++ b/world/generation/chunks/definitions/chunk_0017.tres @@ -2,7 +2,7 @@ [ext_resource type="Script" path="res://world/generation/terrain_chunk_definition.gd" id="1_definition"] [ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0015.glb" id="2_scene"] -[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0005.glb" id="3_base_coast"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0007.glb" id="3_base_coast"] [resource] script = ExtResource("1_definition") @@ -11,7 +11,7 @@ label = "second-tier grass sea transition right" packed_scene = ExtResource("2_scene") primary_mesh_name = &"chunk_0015" base_layer_scene = ExtResource("3_base_coast") -base_layer_mesh_name = &"chunk_0005" +base_layer_mesh_name = &"chunk_0007" base_layer_quarter_turns = 3 overlay_only = true selection_weight = 0.12 diff --git a/world/generation/chunks/definitions/chunk_0018.tres b/world/generation/chunks/definitions/chunk_0018.tres index f15421b..c41424f 100644 --- a/world/generation/chunks/definitions/chunk_0018.tres +++ b/world/generation/chunks/definitions/chunk_0018.tres @@ -2,7 +2,7 @@ [ext_resource type="Script" path="res://world/generation/terrain_chunk_definition.gd" id="1_definition"] [ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0015.glb" id="2_scene"] -[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0005.glb" id="3_base_coast"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0007.glb" id="3_base_coast"] [resource] script = ExtResource("1_definition") @@ -11,7 +11,8 @@ label = "second-tier grass sea transition left" packed_scene = ExtResource("2_scene") primary_mesh_name = &"chunk_0015" base_layer_scene = ExtResource("3_base_coast") -base_layer_mesh_name = &"chunk_0005" +base_layer_mesh_name = &"chunk_0007" +base_layer_quarter_turns = 1 overlay_only = true selection_weight = 0.12 maximum_placements = 8 diff --git a/world/generation/chunks/definitions/chunk_0019.tres b/world/generation/chunks/definitions/chunk_0019.tres new file mode 100644 index 0000000..dd7db5b --- /dev/null +++ b/world/generation/chunks/definitions/chunk_0019.tres @@ -0,0 +1,29 @@ +[gd_resource type="Resource" script_class="TerrainChunkDefinition" load_steps=4 format=3] + +[ext_resource type="Script" path="res://world/generation/terrain_chunk_definition.gd" id="1_definition"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0015.glb" id="2_scene"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0008.glb" id="3_base_coast"] + +[resource] +script = ExtResource("1_definition") +stable_id = &"chunk_0019" +label = "second-tier beach sea transition right" +packed_scene = ExtResource("2_scene") +primary_mesh_name = &"chunk_0015" +base_layer_scene = ExtResource("3_base_coast") +base_layer_mesh_name = &"chunk_0008" +base_layer_quarter_turns = 3 +overlay_only = true +selection_weight = 0.12 +maximum_placements = 8 +tags = PackedStringArray("land", "walkable", "sand", "coast", "cliff", "corner", "transition", "elevation_2", "elevation_2_border", "elevation_2_sea_edge") +allowed_neighbor_tags = PackedStringArray("elevation_2") +north_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge", "elevation_2_border") +east_allowed_neighbor_tags = PackedStringArray("sand") +west_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge", "elevation_2_border") +required_neighbor_tags = PackedStringArray("elevation_2_border") +minimum_required_neighbors = 2 +preferred_neighbor_tags = PackedStringArray("elevation_2", "coast") +prefers_map_boundary = true +ocean_facing_edges = 4 +buried_cliff_seam_edges = 9 diff --git a/world/generation/chunks/definitions/chunk_0020.tres b/world/generation/chunks/definitions/chunk_0020.tres new file mode 100644 index 0000000..4014c5b --- /dev/null +++ b/world/generation/chunks/definitions/chunk_0020.tres @@ -0,0 +1,29 @@ +[gd_resource type="Resource" script_class="TerrainChunkDefinition" load_steps=4 format=3] + +[ext_resource type="Script" path="res://world/generation/terrain_chunk_definition.gd" id="1_definition"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0015.glb" id="2_scene"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0008.glb" id="3_base_coast"] + +[resource] +script = ExtResource("1_definition") +stable_id = &"chunk_0020" +label = "second-tier beach sea transition left" +packed_scene = ExtResource("2_scene") +primary_mesh_name = &"chunk_0015" +base_layer_scene = ExtResource("3_base_coast") +base_layer_mesh_name = &"chunk_0008" +base_layer_quarter_turns = 1 +overlay_only = true +selection_weight = 0.12 +maximum_placements = 8 +tags = PackedStringArray("land", "walkable", "sand", "coast", "cliff", "corner", "transition", "elevation_2", "elevation_2_border", "elevation_2_sea_edge") +allowed_neighbor_tags = PackedStringArray("elevation_2") +north_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge", "elevation_2_border") +south_allowed_neighbor_tags = PackedStringArray("sand") +west_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge", "elevation_2_border") +required_neighbor_tags = PackedStringArray("elevation_2_border") +minimum_required_neighbors = 2 +preferred_neighbor_tags = PackedStringArray("elevation_2", "coast") +prefers_map_boundary = true +ocean_facing_edges = 2 +buried_cliff_seam_edges = 9 diff --git a/world/generation/chunks/terrain_chunk_catalog.tres b/world/generation/chunks/terrain_chunk_catalog.tres index 1b3cdf9..b27601a 100644 --- a/world/generation/chunks/terrain_chunk_catalog.tres +++ b/world/generation/chunks/terrain_chunk_catalog.tres @@ -1,4 +1,4 @@ -[gd_resource type="Resource" script_class="TerrainChunkCatalog" load_steps=23 format=3] +[gd_resource type="Resource" script_class="TerrainChunkCatalog" load_steps=25 format=3] [ext_resource type="Script" path="res://world/generation/terrain_chunk_catalog.gd" id="1_catalog"] [ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0000.tres" id="2_grass"] @@ -22,8 +22,10 @@ [ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0016.tres" id="20_stream_variant"] [ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0017.tres" id="21_cliff_sea_transition_right"] [ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0018.tres" id="22_cliff_sea_transition_left"] +[ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0019.tres" id="23_cliff_beach_transition_right"] +[ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0020.tres" id="24_cliff_beach_transition_left"] [resource] script = ExtResource("1_catalog") chunk_size = 10.0 -definitions = Array[ExtResource("7_definition_script")]([ExtResource("2_grass"), ExtResource("3_sand"), ExtResource("4_beach"), ExtResource("5_stream"), ExtResource("20_stream_variant"), ExtResource("6_pond"), ExtResource("9_grass_ocean_edge"), ExtResource("10_grass_beach_transition"), ExtResource("11_grass_ocean_corner"), ExtResource("12_beach_ocean_corner"), ExtResource("17_grass_sand_diagonal"), ExtResource("13_cliff_top"), ExtResource("14_cliff_corner"), ExtResource("15_cliff_edge"), ExtResource("16_cliff_ramp"), ExtResource("18_cliff_sea_edge"), ExtResource("19_cliff_sea_corner"), ExtResource("21_cliff_sea_transition_right"), ExtResource("22_cliff_sea_transition_left"), ExtResource("8_spawn")]) +definitions = Array[ExtResource("7_definition_script")]([ExtResource("2_grass"), ExtResource("3_sand"), ExtResource("4_beach"), ExtResource("5_stream"), ExtResource("20_stream_variant"), ExtResource("6_pond"), ExtResource("9_grass_ocean_edge"), ExtResource("10_grass_beach_transition"), ExtResource("11_grass_ocean_corner"), ExtResource("12_beach_ocean_corner"), ExtResource("17_grass_sand_diagonal"), ExtResource("13_cliff_top"), ExtResource("14_cliff_corner"), ExtResource("15_cliff_edge"), ExtResource("16_cliff_ramp"), ExtResource("18_cliff_sea_edge"), ExtResource("19_cliff_sea_corner"), ExtResource("21_cliff_sea_transition_right"), ExtResource("22_cliff_sea_transition_left"), ExtResource("23_cliff_beach_transition_right"), ExtResource("24_cliff_beach_transition_left"), ExtResource("8_spawn")]) diff --git a/world/generation/generated_world_region.tscn b/world/generation/generated_world_region.tscn index dec37ae..3b81a39 100644 --- a/world/generation/generated_world_region.tscn +++ b/world/generation/generated_world_region.tscn @@ -36,7 +36,7 @@ generation_seed = 13001 generate_on_ready = false build_collision = true force_center_chunk_id = &"chunk_spawn" -required_chunk_ids = PackedStringArray("chunk_spawn", "chunk_0001", "chunk_0003", "chunk_0004") +required_chunk_ids = PackedStringArray("chunk_spawn", "chunk_0001", "chunk_0002", "chunk_0003", "chunk_0004") grass_sand_smoothing_enabled = true elevated_cliff_feature_enabled = true required_chunk_weight_multiplier = 64.0 diff --git a/world/generation/terrain_chunk_definition.gd b/world/generation/terrain_chunk_definition.gd index 01e7255..ae8feaf 100644 --- a/world/generation/terrain_chunk_definition.gd +++ b/world/generation/terrain_chunk_definition.gd @@ -69,6 +69,11 @@ var allowed_rotation_mask := 15 ## Interior-only pieces may not occupy any outer grid cell. Coastal elevated ## pieces use separate authored definitions rather than weakening this rule. @export var must_be_interior := false +## Optional maximum cardinal distance from the closest map edge. Negative +## values allow the definition anywhere. This keeps shoreline materials such +## as flat sand in a deliberate coastal band without baking a particular +## stable ID into the generator. +@export_range(-1, 1024, 1) var maximum_boundary_distance := -1 ## Coastal transition pieces should normally migrate toward the generated ## region's perimeter while remaining legal in the interior. @export var prefers_map_boundary := false diff --git a/world/generation/terrain_chunk_generator.gd b/world/generation/terrain_chunk_generator.gd index c8ab4e2..2e6b61c 100644 --- a/world/generation/terrain_chunk_generator.gd +++ b/world/generation/terrain_chunk_generator.gd @@ -45,6 +45,9 @@ const MAX_PACKED_SOLVER_VARIANTS := 62 @export var elevated_cliff_sea_transition_right_chunk_id: StringName = &"chunk_0017" @export var elevated_cliff_sea_transition_left_chunk_id: StringName = &"chunk_0018" @export var elevated_cliff_coast_base_chunk_id: StringName = &"chunk_0005" +@export var elevated_cliff_beach_base_chunk_id: StringName = &"chunk_0002" +@export var elevated_cliff_beach_transition_right_chunk_id: StringName = &"chunk_0019" +@export var elevated_cliff_beach_transition_left_chunk_id: StringName = &"chunk_0020" @export_range(0.0, 1.0, 0.05) var elevated_cliff_ramp_chance := 1.0 ## A smaller third tier reuses the existing corner geometry at the authored ## two-meter level interval. It is nested into the lower cliff assembly rather @@ -1232,6 +1235,9 @@ func _prepare_elevated_feature_region() -> bool: elevated_cliff_sea_transition_right_chunk_id, elevated_cliff_sea_transition_left_chunk_id, elevated_cliff_coast_base_chunk_id, + elevated_cliff_beach_base_chunk_id, + elevated_cliff_beach_transition_right_chunk_id, + elevated_cliff_beach_transition_left_chunk_id, ]: if catalog.definition_for_id(stable_id) == null: push_error("Elevated cliff feature references missing chunk %s." % stable_id) @@ -1429,6 +1435,10 @@ func _apply_grass_sand_smoothing() -> bool: ) if ( diagonal != null + and _variant_respects_ocean_boundary( + diagonal, + coordinate, + ) and _candidate_matches_placed_neighbors(diagonal, coordinate) ): candidates.append({"index": index, "variant": diagonal}) @@ -1495,16 +1505,21 @@ func _apply_elevated_feature() -> bool: ELEVATED_FEATURE_RADIUS, feature_random, ) + var grass_coast_count := int( + _placement_counts.get(elevated_cliff_coast_base_chunk_id, 0) + ) + var beach_coast_count := int( + _placement_counts.get(elevated_cliff_beach_base_chunk_id, 0) + ) if ( _secondary_elevated_feature_center.x >= 0 - and int( - _placement_counts.get(elevated_cliff_coast_base_chunk_id, 0) - ) > 0 + and (grass_coast_count > 0 or beach_coast_count > 0) ): placements.append_array( _coastal_elevated_feature_placement_specs( _secondary_elevated_feature_center, feature_random, + beach_coast_count > grass_coast_count, ) ) for spec: Dictionary in placements: @@ -1613,6 +1628,7 @@ func _elevated_feature_placement_specs( func _coastal_elevated_feature_placement_specs( center: Vector2i, feature_random: RandomNumberGenerator, + use_beach_base: bool, ) -> Array[Dictionary]: var placements := _elevated_feature_placement_specs( center, @@ -1631,6 +1647,7 @@ func _coastal_elevated_feature_placement_specs( spec["id"] = _coastal_transition_id( coordinate, int(spec["turns"]), + use_beach_base, ) elif outside_edge_count == 1 and ( spec["id"] == elevated_cliff_edge_chunk_id @@ -1643,11 +1660,20 @@ func _coastal_elevated_feature_placement_specs( func _coastal_transition_id( coordinate: Vector2i, quarter_turns: int, + use_beach_base: bool = false, ) -> StringName: - for stable_id: StringName in [ - elevated_cliff_sea_transition_right_chunk_id, - elevated_cliff_sea_transition_left_chunk_id, - ]: + var transition_ids: Array[StringName] = [] + if use_beach_base: + transition_ids.assign([ + elevated_cliff_beach_transition_right_chunk_id, + elevated_cliff_beach_transition_left_chunk_id, + ]) + else: + transition_ids.assign([ + elevated_cliff_sea_transition_right_chunk_id, + elevated_cliff_sea_transition_left_chunk_id, + ]) + for stable_id: StringName in transition_ids: var definition := catalog.definition_for_id(stable_id) var variant := _authored_variant(definition, quarter_turns) if ( @@ -1761,6 +1787,15 @@ func _variant_respects_ocean_boundary( variant: TerrainChunkVariant, coordinate: Vector2i, ) -> bool: + var maximum_boundary_distance := ( + variant.definition.maximum_boundary_distance + ) + if ( + maximum_boundary_distance >= 0 + and _distance_from_map_boundary(coordinate) + > maximum_boundary_distance + ): + return false var ocean_edges := variant.rotated_edge_mask( variant.definition.ocean_facing_edges ) @@ -2163,6 +2198,16 @@ func _coordinate_is_on_boundary(coordinate: Vector2i) -> bool: ) +func _distance_from_map_boundary(coordinate: Vector2i) -> int: + return mini( + mini(coordinate.x, coordinate.y), + mini( + grid_size.x - 1 - coordinate.x, + grid_size.y - 1 - coordinate.y, + ), + ) + + func _neighbor_requirement_validation_error( layout: Array[TerrainChunkVariant], ) -> String: diff --git a/world/test_world.gd b/world/test_world.gd index 0d99e45..af75018 100644 --- a/world/test_world.gd +++ b/world/test_world.gd @@ -14,6 +14,10 @@ const GENERATED_REGION_SCENE: PackedScene = preload( const STARTER_ISLAND_REGION_SCENE: PackedScene = preload( "res://world/regions/starter_island_region.tscn" ) +## Keep the player boundary beyond the longest fishing cast. The boundary is +## solid terrain to character movement and therefore also blocks cast-arc +## probes when it sits directly against the authored shoreline. +const WORLD_BOUNDARY_SHORELINE_CLEARANCE := 18.0 @onready var _regions_root: Node3D = $Regions @onready var _active_region: WorldRegion = _find_active_region() @@ -185,7 +189,7 @@ func _configure_world_coverage() -> void: if _active_region == null: return var half: Vector2 = _active_region.get_playable_half_extents() - var wall_margin := 2.0 + var wall_margin := WORLD_BOUNDARY_SHORELINE_CLEARANCE var wall_height := 14.0 var bounds_root := $WorldBounds as Node3D var north_south_size := Vector3( From ae8ecc24bbfcaddb639a2109119893c825bd0ef4 Mon Sep 17 00:00:00 2001 From: Voyager Date: Fri, 21 Aug 2026 22:12:57 -0400 Subject: [PATCH 22/90] chore: prepare v0.15.0-alpha release --- docs/README-PLAYTEST.txt | 8 ++++++-- export_presets.cfg | 26 +++++++++++++------------- project.godot | 2 +- scripts/build_playtest.sh | 6 +++--- ui/title_screen.tscn | 2 +- 5 files changed, 24 insertions(+), 20 deletions(-) diff --git a/docs/README-PLAYTEST.txt b/docs/README-PLAYTEST.txt index a0e9b20..cc99ec6 100644 --- a/docs/README-PLAYTEST.txt +++ b/docs/README-PLAYTEST.txt @@ -1,5 +1,6 @@ NETfishing -Alpha playtest +v0.15.0-alpha +Alpha 0.15.0 Thank you for trying this early private playtest. @@ -68,8 +69,9 @@ FEATURES TO TRY - Hosting a private or public room and joining compatible online sessions - Direct-IP, saved-server, recent-server, and public-room connection flows - Text chat, player calls, player lists, relationships, and moderation tools +- Kat, Kim, and robot speech sample sets - Movement, jumping, camera rotation, and zoom -- Short, medium, and maximum-distance casts +- Short, medium, and maximum-distance casts, including far ocean casts - Valid water and invalid land casts - Manual withdrawal before a bite - Barrier-and-chase catching @@ -81,6 +83,8 @@ FEATURES TO TRY - Equipment and consumable use from the hotbar - Fishing Shop sell tray, wallet updates, and persistent upgrades - Seeded generated worlds and the authored starter-island layout +- Generated beaches, coastal sand, denser forests, inland elevation, and closed coastal cliffs +- Collaborative Art Kit drawing, finalized artwork, PNG export, and stamps - Save, Continue, New Game, and Delete Save - Game Menu and persistent camera settings - Water-entry recovery from several shores diff --git a/export_presets.cfg b/export_presets.cfg index a2c2817..2150ebe 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -9,7 +9,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.14.0-alpha/windows-x86_64/NETfishing.exe" +export_path="builds/v0.15.0-alpha/windows-x86_64/NETfishing.exe" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -35,11 +35,11 @@ application/modify_resources=true application/icon="res://art/exported/system_icons/netfishing.ico" application/console_wrapper_icon="" application/icon_interpolation=4 -application/file_version="0.14.0.0" -application/product_version="0.14.0.0" +application/file_version="0.15.0.0" +application/product_version="0.15.0.0" application/company_name="Woofmeow" application/product_name="NETfishing" -application/file_description="NETfishing v0.14.0-alpha" +application/file_description="NETfishing v0.15.0-alpha" application/copyright="Copyright © 2026 Woofmeow" application/trademarks="NETfishing and Woofmeow branding is reserved; see TRADEMARKS.md" application/export_angle=0 @@ -62,7 +62,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.14.0-alpha/linux-arm64/NETfishing.arm64" +export_path="builds/v0.15.0-alpha/linux-arm64/NETfishing.arm64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -92,7 +92,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.14.0-alpha/macos/NETfishing.zip" +export_path="builds/v0.15.0-alpha/macos/NETfishing.zip" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -108,8 +108,8 @@ custom_template/release="" application/bundle_identifier="io.woofmeow.netfishing" application/icon="res://art/exported/system_icons/netfishing_1024.png" application/icon_interpolation=0 -application/short_version="0.14.0" -application/version="0.14.0" +application/short_version="0.15.0" +application/version="0.15.0" application/architecture="universal" codesign/enable=false notarization/enable=false @@ -125,7 +125,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*,tests/*" -export_path="builds/v0.14.0-alpha/server-linux-x86_64/NETfishingServer.x86_64" +export_path="builds/v0.15.0-alpha/server-linux-x86_64/NETfishingServer.x86_64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -155,7 +155,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.14.0-alpha/android/NETfishing.apk" +export_path="builds/v0.15.0-alpha/android/NETfishing.apk" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -176,8 +176,8 @@ architectures/armeabi-v7a=false architectures/arm64-v8a=true architectures/x86=false architectures/x86_64=false -version/code=140000 -version/name="v0.14.0-alpha" +version/code=150000 +version/name="v0.15.0-alpha" package/unique_name="io.woofmeow.netfishing" package/name="NETfishing" package/signed=true @@ -214,7 +214,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.14.0-alpha/linux-x86_64/NETfishing.x86_64" +export_path="builds/v0.15.0-alpha/linux-x86_64/NETfishing.x86_64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" diff --git a/project.godot b/project.godot index f12f6fd..be0f21e 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="NETFISHING" -config/version="0.14.0-alpha" +config/version="0.15.0-alpha" run/main_scene="res://main/main.tscn" config/features=PackedStringArray("4.7", "GL Compatibility") config/icon="res://art/exported/system_icons/netfishing_256.png" diff --git a/scripts/build_playtest.sh b/scripts/build_playtest.sh index d409d7a..b340b78 100755 --- a/scripts/build_playtest.sh +++ b/scripts/build_playtest.sh @@ -4,14 +4,14 @@ 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.14.0-alpha" +readonly BUILD_ROOT="${PROJECT_ROOT}/builds/v0.15.0-alpha" readonly WINDOWS_DIR="${BUILD_ROOT}/windows-x86_64" readonly LINUX_DIR="${BUILD_ROOT}/linux-x86_64" readonly README_SOURCE="${PROJECT_ROOT}/docs/README-PLAYTEST.txt" readonly SOURCE_COMMIT="$(git -C "${PROJECT_ROOT}" rev-parse HEAD)" readonly SOURCE_URL="https://forge.makearmy.io/woofmeow/netfishing" -readonly WINDOWS_ZIP="${BUILD_ROOT}/NETfishing-v0.14.0-alpha-windows-x86_64.zip" -readonly LINUX_ZIP="${BUILD_ROOT}/NETfishing-v0.14.0-alpha-linux-x86_64.zip" +readonly WINDOWS_ZIP="${BUILD_ROOT}/NETfishing-v0.15.0-alpha-windows-x86_64.zip" +readonly LINUX_ZIP="${BUILD_ROOT}/NETfishing-v0.15.0-alpha-linux-x86_64.zip" readonly GODOT_BIN="${GODOT_BIN:-godot}" if [[ ! -f "${PROJECT_ROOT}/project.godot" ]]; then diff --git a/ui/title_screen.tscn b/ui/title_screen.tscn index 90074a6..042c47b 100644 --- a/ui/title_screen.tscn +++ b/ui/title_screen.tscn @@ -226,7 +226,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.14.0-alpha" +text = "v0.15.0-alpha" horizontal_alignment = 1 [node name="Spacer" type="Control" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent"] From 219c4621814d206852e738f10c86708af9b942e3 Mon Sep 17 00:00:00 2001 From: Voyager Date: Sat, 22 Aug 2026 18:37:59 -0400 Subject: [PATCH 23/90] Add authored lake river and cliff terrain chunks --- tools/blender/export_terrain_chunks.py | 2 +- world/generation/chunks/assets/chunk_0017.glb | Bin 0 -> 24624 bytes .../chunks/assets/chunk_0017.glb.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0017_cliff_wall.png | Bin 0 -> 9025 bytes .../assets/chunk_0017_cliff_wall.png.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0017_dirt.png | Bin 0 -> 5589 bytes .../chunks/assets/chunk_0017_dirt.png.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0017_grass_lite.png | Bin 0 -> 6317 bytes .../assets/chunk_0017_grass_lite.png.import | 45 ++++++++++++++++++ world/generation/chunks/assets/chunk_0018.glb | Bin 0 -> 26616 bytes .../chunks/assets/chunk_0018.glb.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0018_cliff_wall.png | Bin 0 -> 9025 bytes .../assets/chunk_0018_cliff_wall.png.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0018_dirt.png | Bin 0 -> 5589 bytes .../chunks/assets/chunk_0018_dirt.png.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0018_grass_lite.png | Bin 0 -> 6317 bytes .../assets/chunk_0018_grass_lite.png.import | 45 ++++++++++++++++++ world/generation/chunks/assets/chunk_0019.glb | Bin 0 -> 6996 bytes .../chunks/assets/chunk_0019.glb.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0019_dirt.png | Bin 0 -> 5589 bytes .../chunks/assets/chunk_0019_dirt.png.import | 45 ++++++++++++++++++ world/generation/chunks/assets/chunk_0020.glb | Bin 0 -> 25916 bytes .../chunks/assets/chunk_0020.glb.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0020_cliff_wall.png | Bin 0 -> 9025 bytes .../assets/chunk_0020_cliff_wall.png.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0020_dirt.png | Bin 0 -> 5589 bytes .../chunks/assets/chunk_0020_dirt.png.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0020_grass_lite.png | Bin 0 -> 6317 bytes .../assets/chunk_0020_grass_lite.png.import | 45 ++++++++++++++++++ world/generation/chunks/assets/chunk_0021.glb | Bin 0 -> 25860 bytes .../chunks/assets/chunk_0021.glb.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0021_cliff_wall.png | Bin 0 -> 9025 bytes .../assets/chunk_0021_cliff_wall.png.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0021_dirt.png | Bin 0 -> 5589 bytes .../chunks/assets/chunk_0021_dirt.png.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0021_grass_lite.png | Bin 0 -> 6317 bytes .../assets/chunk_0021_grass_lite.png.import | 45 ++++++++++++++++++ world/generation/chunks/assets/chunk_0022.glb | Bin 0 -> 25988 bytes .../chunks/assets/chunk_0022.glb.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0022_cliff_wall.png | Bin 0 -> 9025 bytes .../assets/chunk_0022_cliff_wall.png.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0022_dirt.png | Bin 0 -> 5589 bytes .../chunks/assets/chunk_0022_dirt.png.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0022_grass_lite.png | Bin 0 -> 6317 bytes .../assets/chunk_0022_grass_lite.png.import | 45 ++++++++++++++++++ world/generation/chunks/assets/chunk_0023.glb | Bin 0 -> 25988 bytes .../chunks/assets/chunk_0023.glb.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0023_cliff_wall.png | Bin 0 -> 9025 bytes .../assets/chunk_0023_cliff_wall.png.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0023_dirt.png | Bin 0 -> 5589 bytes .../chunks/assets/chunk_0023_dirt.png.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0023_grass_lite.png | Bin 0 -> 6317 bytes .../assets/chunk_0023_grass_lite.png.import | 45 ++++++++++++++++++ world/generation/chunks/assets/chunk_0024.glb | Bin 0 -> 28540 bytes .../chunks/assets/chunk_0024.glb.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0024_cliff_wall.png | Bin 0 -> 9025 bytes .../assets/chunk_0024_cliff_wall.png.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0024_dirt.png | Bin 0 -> 5589 bytes .../chunks/assets/chunk_0024_dirt.png.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0024_grass_lite.png | Bin 0 -> 6317 bytes .../assets/chunk_0024_grass_lite.png.import | 45 ++++++++++++++++++ world/generation/chunks/assets/chunk_0025.glb | Bin 0 -> 30292 bytes .../chunks/assets/chunk_0025.glb.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0025_cliff_wall.png | Bin 0 -> 9025 bytes .../assets/chunk_0025_cliff_wall.png.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0025_dirt.png | Bin 0 -> 5589 bytes .../chunks/assets/chunk_0025_dirt.png.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0025_grass_lite.png | Bin 0 -> 6317 bytes .../assets/chunk_0025_grass_lite.png.import | 45 ++++++++++++++++++ world/generation/chunks/assets/chunk_0026.glb | Bin 0 -> 19988 bytes .../chunks/assets/chunk_0026.glb.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0026_cliff_wall.png | Bin 0 -> 9025 bytes .../assets/chunk_0026_cliff_wall.png.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0026_grass_lite.png | Bin 0 -> 6317 bytes .../assets/chunk_0026_grass_lite.png.import | 45 ++++++++++++++++++ world/generation/chunks/assets/chunk_0027.glb | Bin 0 -> 21096 bytes .../chunks/assets/chunk_0027.glb.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0027_cliff_wall.png | Bin 0 -> 9025 bytes .../assets/chunk_0027_cliff_wall.png.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0027_grass_lite.png | Bin 0 -> 6317 bytes .../assets/chunk_0027_grass_lite.png.import | 45 ++++++++++++++++++ world/generation/chunks/assets/chunk_0028.glb | Bin 0 -> 7700 bytes .../chunks/assets/chunk_0028.glb.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0028_grass_lite.png | Bin 0 -> 6317 bytes .../assets/chunk_0028_grass_lite.png.import | 45 ++++++++++++++++++ world/generation/chunks/assets/chunk_0029.glb | Bin 0 -> 36656 bytes .../chunks/assets/chunk_0029.glb.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0029_cliff_wall.png | Bin 0 -> 9025 bytes .../assets/chunk_0029_cliff_wall.png.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0029_dirt.png | Bin 0 -> 5589 bytes .../chunks/assets/chunk_0029_dirt.png.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0029_grass_lite.png | Bin 0 -> 6317 bytes .../assets/chunk_0029_grass_lite.png.import | 45 ++++++++++++++++++ world/generation/chunks/assets/chunk_0030.glb | Bin 0 -> 36656 bytes .../chunks/assets/chunk_0030.glb.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0030_cliff_wall.png | Bin 0 -> 9025 bytes .../assets/chunk_0030_cliff_wall.png.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0030_dirt.png | Bin 0 -> 5589 bytes .../chunks/assets/chunk_0030_dirt.png.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0030_grass_lite.png | Bin 0 -> 6317 bytes .../assets/chunk_0030_grass_lite.png.import | 45 ++++++++++++++++++ world/generation/chunks/assets/chunk_0031.glb | Bin 0 -> 37872 bytes .../chunks/assets/chunk_0031.glb.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0031_cliff_wall.png | Bin 0 -> 9025 bytes .../assets/chunk_0031_cliff_wall.png.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0031_dirt.png | Bin 0 -> 5589 bytes .../chunks/assets/chunk_0031_dirt.png.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0031_sand.png | Bin 0 -> 6289 bytes .../chunks/assets/chunk_0031_sand.png.import | 45 ++++++++++++++++++ world/generation/chunks/assets/chunk_0032.glb | Bin 0 -> 37868 bytes .../chunks/assets/chunk_0032.glb.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0032_cliff_wall.png | Bin 0 -> 9025 bytes .../assets/chunk_0032_cliff_wall.png.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0032_dirt.png | Bin 0 -> 5589 bytes .../chunks/assets/chunk_0032_dirt.png.import | 45 ++++++++++++++++++ .../chunks/assets/chunk_0032_sand.png | Bin 0 -> 6289 bytes .../chunks/assets/chunk_0032_sand.png.import | 45 ++++++++++++++++++ .../chunks/definitions/chunk_0002.tres | 2 +- .../chunks/definitions/chunk_0003.tres | 3 +- .../chunks/definitions/chunk_0004.tres | 1 + .../chunks/definitions/chunk_0016.tres | 3 +- .../chunks/definitions/chunk_0017.tres | 37 ++++++-------- .../chunks/definitions/chunk_0018.tres | 38 +++++++-------- .../chunks/definitions/chunk_0019.tres | 36 ++++++-------- .../chunks/definitions/chunk_0020.tres | 40 +++++++--------- .../chunks/definitions/chunk_0021.tres | 23 +++++++++ .../chunks/definitions/chunk_0022.tres | 23 +++++++++ .../chunks/definitions/chunk_0023.tres | 23 +++++++++ .../chunks/definitions/chunk_0024.tres | 23 +++++++++ .../chunks/definitions/chunk_0025.tres | 23 +++++++++ .../chunks/definitions/chunk_0026.tres | 27 +++++++++++ .../chunks/definitions/chunk_0027.tres | 27 +++++++++++ .../chunks/definitions/chunk_0028.tres | 23 +++++++++ .../chunks/definitions/chunk_0029.tres | 26 ++++++++++ .../chunks/definitions/chunk_0030.tres | 26 ++++++++++ .../chunks/definitions/chunk_0031.tres | 26 ++++++++++ .../chunks/definitions/chunk_0032.tres | 26 ++++++++++ .../chunks/definitions/chunk_9995.tres | 25 ++++++++++ .../chunks/definitions/chunk_9996.tres | 29 +++++++++++ .../chunks/definitions/chunk_9997.tres | 29 +++++++++++ .../chunks/definitions/chunk_9998.tres | 29 +++++++++++ .../chunks/definitions/chunk_9999.tres | 29 +++++++++++ .../chunks/terrain_chunk_catalog.tres | 29 ++++++++--- world/generation/terrain_chunk_catalog.gd | 45 +++++++++++++++++- world/generation/terrain_chunk_definition.gd | 9 ++++ .../generation/terrain_chunk_edge_profile.gd | 16 +++++++ 146 files changed, 3209 insertions(+), 99 deletions(-) create mode 100644 world/generation/chunks/assets/chunk_0017.glb create mode 100644 world/generation/chunks/assets/chunk_0017.glb.import create mode 100644 world/generation/chunks/assets/chunk_0017_cliff_wall.png create mode 100644 world/generation/chunks/assets/chunk_0017_cliff_wall.png.import create mode 100644 world/generation/chunks/assets/chunk_0017_dirt.png create mode 100644 world/generation/chunks/assets/chunk_0017_dirt.png.import create mode 100644 world/generation/chunks/assets/chunk_0017_grass_lite.png create mode 100644 world/generation/chunks/assets/chunk_0017_grass_lite.png.import create mode 100644 world/generation/chunks/assets/chunk_0018.glb create mode 100644 world/generation/chunks/assets/chunk_0018.glb.import create mode 100644 world/generation/chunks/assets/chunk_0018_cliff_wall.png create mode 100644 world/generation/chunks/assets/chunk_0018_cliff_wall.png.import create mode 100644 world/generation/chunks/assets/chunk_0018_dirt.png create mode 100644 world/generation/chunks/assets/chunk_0018_dirt.png.import create mode 100644 world/generation/chunks/assets/chunk_0018_grass_lite.png create mode 100644 world/generation/chunks/assets/chunk_0018_grass_lite.png.import create mode 100644 world/generation/chunks/assets/chunk_0019.glb create mode 100644 world/generation/chunks/assets/chunk_0019.glb.import create mode 100644 world/generation/chunks/assets/chunk_0019_dirt.png create mode 100644 world/generation/chunks/assets/chunk_0019_dirt.png.import create mode 100644 world/generation/chunks/assets/chunk_0020.glb create mode 100644 world/generation/chunks/assets/chunk_0020.glb.import create mode 100644 world/generation/chunks/assets/chunk_0020_cliff_wall.png create mode 100644 world/generation/chunks/assets/chunk_0020_cliff_wall.png.import create mode 100644 world/generation/chunks/assets/chunk_0020_dirt.png create mode 100644 world/generation/chunks/assets/chunk_0020_dirt.png.import create mode 100644 world/generation/chunks/assets/chunk_0020_grass_lite.png create mode 100644 world/generation/chunks/assets/chunk_0020_grass_lite.png.import create mode 100644 world/generation/chunks/assets/chunk_0021.glb create mode 100644 world/generation/chunks/assets/chunk_0021.glb.import create mode 100644 world/generation/chunks/assets/chunk_0021_cliff_wall.png create mode 100644 world/generation/chunks/assets/chunk_0021_cliff_wall.png.import create mode 100644 world/generation/chunks/assets/chunk_0021_dirt.png create mode 100644 world/generation/chunks/assets/chunk_0021_dirt.png.import create mode 100644 world/generation/chunks/assets/chunk_0021_grass_lite.png create mode 100644 world/generation/chunks/assets/chunk_0021_grass_lite.png.import create mode 100644 world/generation/chunks/assets/chunk_0022.glb create mode 100644 world/generation/chunks/assets/chunk_0022.glb.import create mode 100644 world/generation/chunks/assets/chunk_0022_cliff_wall.png create mode 100644 world/generation/chunks/assets/chunk_0022_cliff_wall.png.import create mode 100644 world/generation/chunks/assets/chunk_0022_dirt.png create mode 100644 world/generation/chunks/assets/chunk_0022_dirt.png.import create mode 100644 world/generation/chunks/assets/chunk_0022_grass_lite.png create mode 100644 world/generation/chunks/assets/chunk_0022_grass_lite.png.import create mode 100644 world/generation/chunks/assets/chunk_0023.glb create mode 100644 world/generation/chunks/assets/chunk_0023.glb.import create mode 100644 world/generation/chunks/assets/chunk_0023_cliff_wall.png create mode 100644 world/generation/chunks/assets/chunk_0023_cliff_wall.png.import create mode 100644 world/generation/chunks/assets/chunk_0023_dirt.png create mode 100644 world/generation/chunks/assets/chunk_0023_dirt.png.import create mode 100644 world/generation/chunks/assets/chunk_0023_grass_lite.png create mode 100644 world/generation/chunks/assets/chunk_0023_grass_lite.png.import create mode 100644 world/generation/chunks/assets/chunk_0024.glb create mode 100644 world/generation/chunks/assets/chunk_0024.glb.import create mode 100644 world/generation/chunks/assets/chunk_0024_cliff_wall.png create mode 100644 world/generation/chunks/assets/chunk_0024_cliff_wall.png.import create mode 100644 world/generation/chunks/assets/chunk_0024_dirt.png create mode 100644 world/generation/chunks/assets/chunk_0024_dirt.png.import create mode 100644 world/generation/chunks/assets/chunk_0024_grass_lite.png create mode 100644 world/generation/chunks/assets/chunk_0024_grass_lite.png.import create mode 100644 world/generation/chunks/assets/chunk_0025.glb create mode 100644 world/generation/chunks/assets/chunk_0025.glb.import create mode 100644 world/generation/chunks/assets/chunk_0025_cliff_wall.png create mode 100644 world/generation/chunks/assets/chunk_0025_cliff_wall.png.import create mode 100644 world/generation/chunks/assets/chunk_0025_dirt.png create mode 100644 world/generation/chunks/assets/chunk_0025_dirt.png.import create mode 100644 world/generation/chunks/assets/chunk_0025_grass_lite.png create mode 100644 world/generation/chunks/assets/chunk_0025_grass_lite.png.import create mode 100644 world/generation/chunks/assets/chunk_0026.glb create mode 100644 world/generation/chunks/assets/chunk_0026.glb.import create mode 100644 world/generation/chunks/assets/chunk_0026_cliff_wall.png create mode 100644 world/generation/chunks/assets/chunk_0026_cliff_wall.png.import create mode 100644 world/generation/chunks/assets/chunk_0026_grass_lite.png create mode 100644 world/generation/chunks/assets/chunk_0026_grass_lite.png.import create mode 100644 world/generation/chunks/assets/chunk_0027.glb create mode 100644 world/generation/chunks/assets/chunk_0027.glb.import create mode 100644 world/generation/chunks/assets/chunk_0027_cliff_wall.png create mode 100644 world/generation/chunks/assets/chunk_0027_cliff_wall.png.import create mode 100644 world/generation/chunks/assets/chunk_0027_grass_lite.png create mode 100644 world/generation/chunks/assets/chunk_0027_grass_lite.png.import create mode 100644 world/generation/chunks/assets/chunk_0028.glb create mode 100644 world/generation/chunks/assets/chunk_0028.glb.import create mode 100644 world/generation/chunks/assets/chunk_0028_grass_lite.png create mode 100644 world/generation/chunks/assets/chunk_0028_grass_lite.png.import create mode 100644 world/generation/chunks/assets/chunk_0029.glb create mode 100644 world/generation/chunks/assets/chunk_0029.glb.import create mode 100644 world/generation/chunks/assets/chunk_0029_cliff_wall.png create mode 100644 world/generation/chunks/assets/chunk_0029_cliff_wall.png.import create mode 100644 world/generation/chunks/assets/chunk_0029_dirt.png create mode 100644 world/generation/chunks/assets/chunk_0029_dirt.png.import create mode 100644 world/generation/chunks/assets/chunk_0029_grass_lite.png create mode 100644 world/generation/chunks/assets/chunk_0029_grass_lite.png.import create mode 100644 world/generation/chunks/assets/chunk_0030.glb create mode 100644 world/generation/chunks/assets/chunk_0030.glb.import create mode 100644 world/generation/chunks/assets/chunk_0030_cliff_wall.png create mode 100644 world/generation/chunks/assets/chunk_0030_cliff_wall.png.import create mode 100644 world/generation/chunks/assets/chunk_0030_dirt.png create mode 100644 world/generation/chunks/assets/chunk_0030_dirt.png.import create mode 100644 world/generation/chunks/assets/chunk_0030_grass_lite.png create mode 100644 world/generation/chunks/assets/chunk_0030_grass_lite.png.import create mode 100644 world/generation/chunks/assets/chunk_0031.glb create mode 100644 world/generation/chunks/assets/chunk_0031.glb.import create mode 100644 world/generation/chunks/assets/chunk_0031_cliff_wall.png create mode 100644 world/generation/chunks/assets/chunk_0031_cliff_wall.png.import create mode 100644 world/generation/chunks/assets/chunk_0031_dirt.png create mode 100644 world/generation/chunks/assets/chunk_0031_dirt.png.import create mode 100644 world/generation/chunks/assets/chunk_0031_sand.png create mode 100644 world/generation/chunks/assets/chunk_0031_sand.png.import create mode 100644 world/generation/chunks/assets/chunk_0032.glb create mode 100644 world/generation/chunks/assets/chunk_0032.glb.import create mode 100644 world/generation/chunks/assets/chunk_0032_cliff_wall.png create mode 100644 world/generation/chunks/assets/chunk_0032_cliff_wall.png.import create mode 100644 world/generation/chunks/assets/chunk_0032_dirt.png create mode 100644 world/generation/chunks/assets/chunk_0032_dirt.png.import create mode 100644 world/generation/chunks/assets/chunk_0032_sand.png create mode 100644 world/generation/chunks/assets/chunk_0032_sand.png.import create mode 100644 world/generation/chunks/definitions/chunk_0021.tres create mode 100644 world/generation/chunks/definitions/chunk_0022.tres create mode 100644 world/generation/chunks/definitions/chunk_0023.tres create mode 100644 world/generation/chunks/definitions/chunk_0024.tres create mode 100644 world/generation/chunks/definitions/chunk_0025.tres create mode 100644 world/generation/chunks/definitions/chunk_0026.tres create mode 100644 world/generation/chunks/definitions/chunk_0027.tres create mode 100644 world/generation/chunks/definitions/chunk_0028.tres create mode 100644 world/generation/chunks/definitions/chunk_0029.tres create mode 100644 world/generation/chunks/definitions/chunk_0030.tres create mode 100644 world/generation/chunks/definitions/chunk_0031.tres create mode 100644 world/generation/chunks/definitions/chunk_0032.tres create mode 100644 world/generation/chunks/definitions/chunk_9995.tres create mode 100644 world/generation/chunks/definitions/chunk_9996.tres create mode 100644 world/generation/chunks/definitions/chunk_9997.tres create mode 100644 world/generation/chunks/definitions/chunk_9998.tres create mode 100644 world/generation/chunks/definitions/chunk_9999.tres diff --git a/tools/blender/export_terrain_chunks.py b/tools/blender/export_terrain_chunks.py index 02c7b95..2c35982 100644 --- a/tools/blender/export_terrain_chunks.py +++ b/tools/blender/export_terrain_chunks.py @@ -284,7 +284,7 @@ def _discover_chunks(tolerance: float) -> list[ChunkSource]: # authored ocean direction; Godot supplies the quarter-turn variants. # Elevated inland cliff overlays also stop at their downhill edge, # while second-tier sea pieces carry that edge down to ocean depth. - layered_cliff = "cliff_2" in label + layered_cliff = re.search(r"(?:^|_)cliff_\d+(?:_|$)", label) is not None allow_open_east_edge = ( "ocean_edge" in label or "sea_edge" in label diff --git a/world/generation/chunks/assets/chunk_0017.glb b/world/generation/chunks/assets/chunk_0017.glb new file mode 100644 index 0000000000000000000000000000000000000000..89e449a7a4fc79962148454f777e67d2e590280d GIT binary patch literal 24624 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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0017.glb.import b/world/generation/chunks/assets/chunk_0017.glb.import new file mode 100644 index 0000000..0606846 --- /dev/null +++ b/world/generation/chunks/assets/chunk_0017.glb.import @@ -0,0 +1,45 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bneeuu84cevug" +path="res://.godot/imported/chunk_0017.glb-228d1e425de5c2fd00e282e16dc0f8e3.scn" + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0017.glb" +dest_files=["res://.godot/imported/chunk_0017.glb-228d1e425de5c2fd00e282e16dc0f8e3.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 +gltf/texture_map_mode=1 diff --git a/world/generation/chunks/assets/chunk_0017_cliff_wall.png b/world/generation/chunks/assets/chunk_0017_cliff_wall.png new file mode 100644 index 0000000000000000000000000000000000000000..3fe157f58237f17fdca91532dd58dd47fb9d8335 GIT binary patch literal 9025 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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0017_dirt.png.import b/world/generation/chunks/assets/chunk_0017_dirt.png.import new file mode 100644 index 0000000..98db559 --- /dev/null +++ b/world/generation/chunks/assets/chunk_0017_dirt.png.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cffd03larjbvt" +path.s3tc="res://.godot/imported/chunk_0017_dirt.png-71828f723dd265597fef29979cf6fbd6.s3tc.ctex" +path.etc2="res://.godot/imported/chunk_0017_dirt.png-71828f723dd265597fef29979cf6fbd6.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "07d90b3c46a4c3d0c172bed143dc9436" +} + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0017_dirt.png" +dest_files=["res://.godot/imported/chunk_0017_dirt.png-71828f723dd265597fef29979cf6fbd6.s3tc.ctex", "res://.godot/imported/chunk_0017_dirt.png-71828f723dd265597fef29979cf6fbd6.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/world/generation/chunks/assets/chunk_0017_grass_lite.png b/world/generation/chunks/assets/chunk_0017_grass_lite.png new file mode 100644 index 0000000000000000000000000000000000000000..52c7ccb8088ddfae88f9b861a807f1de2d38f855 GIT binary patch literal 6317 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 LpG@z+eAxd5xa7i+ literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0018.glb.import b/world/generation/chunks/assets/chunk_0018.glb.import new file mode 100644 index 0000000..d5a2f3e --- /dev/null +++ b/world/generation/chunks/assets/chunk_0018.glb.import @@ -0,0 +1,45 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bbqogponobnqp" +path="res://.godot/imported/chunk_0018.glb-7a0613c27510f5b2c828c996fdbefada.scn" + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0018.glb" +dest_files=["res://.godot/imported/chunk_0018.glb-7a0613c27510f5b2c828c996fdbefada.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 +gltf/texture_map_mode=1 diff --git a/world/generation/chunks/assets/chunk_0018_cliff_wall.png b/world/generation/chunks/assets/chunk_0018_cliff_wall.png new file mode 100644 index 0000000000000000000000000000000000000000..3fe157f58237f17fdca91532dd58dd47fb9d8335 GIT binary patch literal 9025 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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0018_dirt.png.import b/world/generation/chunks/assets/chunk_0018_dirt.png.import new file mode 100644 index 0000000..a82aa97 --- /dev/null +++ b/world/generation/chunks/assets/chunk_0018_dirt.png.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dtcryu6rooaoa" +path.s3tc="res://.godot/imported/chunk_0018_dirt.png-8556ec714a9a3b49f66b007b30a5956d.s3tc.ctex" +path.etc2="res://.godot/imported/chunk_0018_dirt.png-8556ec714a9a3b49f66b007b30a5956d.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "07d90b3c46a4c3d0c172bed143dc9436" +} + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0018_dirt.png" +dest_files=["res://.godot/imported/chunk_0018_dirt.png-8556ec714a9a3b49f66b007b30a5956d.s3tc.ctex", "res://.godot/imported/chunk_0018_dirt.png-8556ec714a9a3b49f66b007b30a5956d.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/world/generation/chunks/assets/chunk_0018_grass_lite.png b/world/generation/chunks/assets/chunk_0018_grass_lite.png new file mode 100644 index 0000000000000000000000000000000000000000..52c7ccb8088ddfae88f9b861a807f1de2d38f855 GIT binary patch literal 6317 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 B9VY+) literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0019.glb.import b/world/generation/chunks/assets/chunk_0019.glb.import new file mode 100644 index 0000000..2fc744f --- /dev/null +++ b/world/generation/chunks/assets/chunk_0019.glb.import @@ -0,0 +1,45 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://dpewtvbpnde0p" +path="res://.godot/imported/chunk_0019.glb-3628a4adc20a32f989a8f6833f3882f4.scn" + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0019.glb" +dest_files=["res://.godot/imported/chunk_0019.glb-3628a4adc20a32f989a8f6833f3882f4.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 +gltf/texture_map_mode=1 diff --git a/world/generation/chunks/assets/chunk_0019_dirt.png b/world/generation/chunks/assets/chunk_0019_dirt.png new file mode 100644 index 0000000000000000000000000000000000000000..588c8c67a12f39d21aa01336b84d34a3e15a0961 GIT binary patch literal 5589 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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0019_dirt.png.import b/world/generation/chunks/assets/chunk_0019_dirt.png.import new file mode 100644 index 0000000..d904ec2 --- /dev/null +++ b/world/generation/chunks/assets/chunk_0019_dirt.png.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b2bt0twilq8v7" +path.s3tc="res://.godot/imported/chunk_0019_dirt.png-ff3062a338904b50a3704e1563041b56.s3tc.ctex" +path.etc2="res://.godot/imported/chunk_0019_dirt.png-ff3062a338904b50a3704e1563041b56.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "07d90b3c46a4c3d0c172bed143dc9436" +} + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0019_dirt.png" +dest_files=["res://.godot/imported/chunk_0019_dirt.png-ff3062a338904b50a3704e1563041b56.s3tc.ctex", "res://.godot/imported/chunk_0019_dirt.png-ff3062a338904b50a3704e1563041b56.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/world/generation/chunks/assets/chunk_0020.glb b/world/generation/chunks/assets/chunk_0020.glb new file mode 100644 index 0000000000000000000000000000000000000000..df00c6db1bfb9d3890ee4ec4ab2e9091e1ba0c51 GIT binary patch literal 25916 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 axJh@A`XvFJwRLvA2ZZxaD*0de>i+=E^c9Q% literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0020.glb.import b/world/generation/chunks/assets/chunk_0020.glb.import new file mode 100644 index 0000000..89dbc6e --- /dev/null +++ b/world/generation/chunks/assets/chunk_0020.glb.import @@ -0,0 +1,45 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://4a0r17pwvm8t" +path="res://.godot/imported/chunk_0020.glb-1ee08c73ceacb5090f2cd5a90d282ebf.scn" + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0020.glb" +dest_files=["res://.godot/imported/chunk_0020.glb-1ee08c73ceacb5090f2cd5a90d282ebf.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 +gltf/texture_map_mode=1 diff --git a/world/generation/chunks/assets/chunk_0020_cliff_wall.png b/world/generation/chunks/assets/chunk_0020_cliff_wall.png new file mode 100644 index 0000000000000000000000000000000000000000..3fe157f58237f17fdca91532dd58dd47fb9d8335 GIT binary patch literal 9025 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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0020_dirt.png.import b/world/generation/chunks/assets/chunk_0020_dirt.png.import new file mode 100644 index 0000000..d5a4e13 --- /dev/null +++ b/world/generation/chunks/assets/chunk_0020_dirt.png.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bg5vc5sf1polv" +path.s3tc="res://.godot/imported/chunk_0020_dirt.png-228409a9c49c9d21514e4ea3ac43ff8f.s3tc.ctex" +path.etc2="res://.godot/imported/chunk_0020_dirt.png-228409a9c49c9d21514e4ea3ac43ff8f.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "07d90b3c46a4c3d0c172bed143dc9436" +} + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0020_dirt.png" +dest_files=["res://.godot/imported/chunk_0020_dirt.png-228409a9c49c9d21514e4ea3ac43ff8f.s3tc.ctex", "res://.godot/imported/chunk_0020_dirt.png-228409a9c49c9d21514e4ea3ac43ff8f.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/world/generation/chunks/assets/chunk_0020_grass_lite.png b/world/generation/chunks/assets/chunk_0020_grass_lite.png new file mode 100644 index 0000000000000000000000000000000000000000..52c7ccb8088ddfae88f9b861a807f1de2d38f855 GIT binary patch literal 6317 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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0021.glb.import b/world/generation/chunks/assets/chunk_0021.glb.import new file mode 100644 index 0000000..bad895b --- /dev/null +++ b/world/generation/chunks/assets/chunk_0021.glb.import @@ -0,0 +1,45 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://dcqyadgt3k1vw" +path="res://.godot/imported/chunk_0021.glb-16d59e274791d8fd5ed6504eeb414331.scn" + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0021.glb" +dest_files=["res://.godot/imported/chunk_0021.glb-16d59e274791d8fd5ed6504eeb414331.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 +gltf/texture_map_mode=1 diff --git a/world/generation/chunks/assets/chunk_0021_cliff_wall.png b/world/generation/chunks/assets/chunk_0021_cliff_wall.png new file mode 100644 index 0000000000000000000000000000000000000000..3fe157f58237f17fdca91532dd58dd47fb9d8335 GIT binary patch literal 9025 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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0021_dirt.png.import b/world/generation/chunks/assets/chunk_0021_dirt.png.import new file mode 100644 index 0000000..4361661 --- /dev/null +++ b/world/generation/chunks/assets/chunk_0021_dirt.png.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://csu47ggb0w61x" +path.s3tc="res://.godot/imported/chunk_0021_dirt.png-f41d458d2152aba11662cff95487655a.s3tc.ctex" +path.etc2="res://.godot/imported/chunk_0021_dirt.png-f41d458d2152aba11662cff95487655a.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "07d90b3c46a4c3d0c172bed143dc9436" +} + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0021_dirt.png" +dest_files=["res://.godot/imported/chunk_0021_dirt.png-f41d458d2152aba11662cff95487655a.s3tc.ctex", "res://.godot/imported/chunk_0021_dirt.png-f41d458d2152aba11662cff95487655a.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/world/generation/chunks/assets/chunk_0021_grass_lite.png b/world/generation/chunks/assets/chunk_0021_grass_lite.png new file mode 100644 index 0000000000000000000000000000000000000000..52c7ccb8088ddfae88f9b861a807f1de2d38f855 GIT binary patch literal 6317 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ℜ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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0022_dirt.png.import b/world/generation/chunks/assets/chunk_0022_dirt.png.import new file mode 100644 index 0000000..d4ab2b7 --- /dev/null +++ b/world/generation/chunks/assets/chunk_0022_dirt.png.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bthcfxhrcji73" +path.s3tc="res://.godot/imported/chunk_0022_dirt.png-5d9fd9df0af3ac2367b13d5f6ca93691.s3tc.ctex" +path.etc2="res://.godot/imported/chunk_0022_dirt.png-5d9fd9df0af3ac2367b13d5f6ca93691.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "07d90b3c46a4c3d0c172bed143dc9436" +} + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0022_dirt.png" +dest_files=["res://.godot/imported/chunk_0022_dirt.png-5d9fd9df0af3ac2367b13d5f6ca93691.s3tc.ctex", "res://.godot/imported/chunk_0022_dirt.png-5d9fd9df0af3ac2367b13d5f6ca93691.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/world/generation/chunks/assets/chunk_0022_grass_lite.png b/world/generation/chunks/assets/chunk_0022_grass_lite.png new file mode 100644 index 0000000000000000000000000000000000000000..52c7ccb8088ddfae88f9b861a807f1de2d38f855 GIT binary patch literal 6317 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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0023_dirt.png.import b/world/generation/chunks/assets/chunk_0023_dirt.png.import new file mode 100644 index 0000000..e5e1e7d --- /dev/null +++ b/world/generation/chunks/assets/chunk_0023_dirt.png.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d2ykndcni7cmj" +path.s3tc="res://.godot/imported/chunk_0023_dirt.png-24cc2bc31b7ec1b2ddda53fbd24bd1c0.s3tc.ctex" +path.etc2="res://.godot/imported/chunk_0023_dirt.png-24cc2bc31b7ec1b2ddda53fbd24bd1c0.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "07d90b3c46a4c3d0c172bed143dc9436" +} + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0023_dirt.png" +dest_files=["res://.godot/imported/chunk_0023_dirt.png-24cc2bc31b7ec1b2ddda53fbd24bd1c0.s3tc.ctex", "res://.godot/imported/chunk_0023_dirt.png-24cc2bc31b7ec1b2ddda53fbd24bd1c0.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/world/generation/chunks/assets/chunk_0023_grass_lite.png b/world/generation/chunks/assets/chunk_0023_grass_lite.png new file mode 100644 index 0000000000000000000000000000000000000000..52c7ccb8088ddfae88f9b861a807f1de2d38f855 GIT binary patch literal 6317 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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0024.glb.import b/world/generation/chunks/assets/chunk_0024.glb.import new file mode 100644 index 0000000..092dd23 --- /dev/null +++ b/world/generation/chunks/assets/chunk_0024.glb.import @@ -0,0 +1,45 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://2e1ofu66v63i" +path="res://.godot/imported/chunk_0024.glb-60c806335de18870f67a6c1ea4e0e176.scn" + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0024.glb" +dest_files=["res://.godot/imported/chunk_0024.glb-60c806335de18870f67a6c1ea4e0e176.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 +gltf/texture_map_mode=1 diff --git a/world/generation/chunks/assets/chunk_0024_cliff_wall.png b/world/generation/chunks/assets/chunk_0024_cliff_wall.png new file mode 100644 index 0000000000000000000000000000000000000000..3fe157f58237f17fdca91532dd58dd47fb9d8335 GIT binary patch literal 9025 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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0024_dirt.png.import b/world/generation/chunks/assets/chunk_0024_dirt.png.import new file mode 100644 index 0000000..c2767a5 --- /dev/null +++ b/world/generation/chunks/assets/chunk_0024_dirt.png.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://beyky3gta3nqh" +path.s3tc="res://.godot/imported/chunk_0024_dirt.png-09cfb1153164f6392c3a5524233c4914.s3tc.ctex" +path.etc2="res://.godot/imported/chunk_0024_dirt.png-09cfb1153164f6392c3a5524233c4914.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "07d90b3c46a4c3d0c172bed143dc9436" +} + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0024_dirt.png" +dest_files=["res://.godot/imported/chunk_0024_dirt.png-09cfb1153164f6392c3a5524233c4914.s3tc.ctex", "res://.godot/imported/chunk_0024_dirt.png-09cfb1153164f6392c3a5524233c4914.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/world/generation/chunks/assets/chunk_0024_grass_lite.png b/world/generation/chunks/assets/chunk_0024_grass_lite.png new file mode 100644 index 0000000000000000000000000000000000000000..52c7ccb8088ddfae88f9b861a807f1de2d38f855 GIT binary patch literal 6317 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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0025_dirt.png.import b/world/generation/chunks/assets/chunk_0025_dirt.png.import new file mode 100644 index 0000000..6e2567a --- /dev/null +++ b/world/generation/chunks/assets/chunk_0025_dirt.png.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://rhralv406n8h" +path.s3tc="res://.godot/imported/chunk_0025_dirt.png-dfc704db44fb4bf311408ce970dd036e.s3tc.ctex" +path.etc2="res://.godot/imported/chunk_0025_dirt.png-dfc704db44fb4bf311408ce970dd036e.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "07d90b3c46a4c3d0c172bed143dc9436" +} + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0025_dirt.png" +dest_files=["res://.godot/imported/chunk_0025_dirt.png-dfc704db44fb4bf311408ce970dd036e.s3tc.ctex", "res://.godot/imported/chunk_0025_dirt.png-dfc704db44fb4bf311408ce970dd036e.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/world/generation/chunks/assets/chunk_0025_grass_lite.png b/world/generation/chunks/assets/chunk_0025_grass_lite.png new file mode 100644 index 0000000000000000000000000000000000000000..52c7ccb8088ddfae88f9b861a807f1de2d38f855 GIT binary patch literal 6317 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 BbtM1* literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0026.glb.import b/world/generation/chunks/assets/chunk_0026.glb.import new file mode 100644 index 0000000..ff08d66 --- /dev/null +++ b/world/generation/chunks/assets/chunk_0026.glb.import @@ -0,0 +1,45 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://cuhckqmxopd77" +path="res://.godot/imported/chunk_0026.glb-8812ef230c0e010daa0ceec424ffc32b.scn" + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0026.glb" +dest_files=["res://.godot/imported/chunk_0026.glb-8812ef230c0e010daa0ceec424ffc32b.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 +gltf/texture_map_mode=1 diff --git a/world/generation/chunks/assets/chunk_0026_cliff_wall.png b/world/generation/chunks/assets/chunk_0026_cliff_wall.png new file mode 100644 index 0000000000000000000000000000000000000000..3fe157f58237f17fdca91532dd58dd47fb9d8335 GIT binary patch literal 9025 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�TlqULe1?C;Hd0p9Ry6!wl>fs1cb7 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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0028.glb.import b/world/generation/chunks/assets/chunk_0028.glb.import new file mode 100644 index 0000000..9142094 --- /dev/null +++ b/world/generation/chunks/assets/chunk_0028.glb.import @@ -0,0 +1,45 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://cyqewjbfia0ty" +path="res://.godot/imported/chunk_0028.glb-610d89095c1e8423e10d7c0fb30e0032.scn" + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0028.glb" +dest_files=["res://.godot/imported/chunk_0028.glb-610d89095c1e8423e10d7c0fb30e0032.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 +gltf/texture_map_mode=1 diff --git a/world/generation/chunks/assets/chunk_0028_grass_lite.png b/world/generation/chunks/assets/chunk_0028_grass_lite.png new file mode 100644 index 0000000000000000000000000000000000000000..52c7ccb8088ddfae88f9b861a807f1de2d38f855 GIT binary patch literal 6317 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 z%0D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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0029.glb.import b/world/generation/chunks/assets/chunk_0029.glb.import new file mode 100644 index 0000000..f78c6f3 --- /dev/null +++ b/world/generation/chunks/assets/chunk_0029.glb.import @@ -0,0 +1,45 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://glu7hwcr5or2" +path="res://.godot/imported/chunk_0029.glb-405a3070486a2450437e59fe21ca0e58.scn" + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0029.glb" +dest_files=["res://.godot/imported/chunk_0029.glb-405a3070486a2450437e59fe21ca0e58.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 +gltf/texture_map_mode=1 diff --git a/world/generation/chunks/assets/chunk_0029_cliff_wall.png b/world/generation/chunks/assets/chunk_0029_cliff_wall.png new file mode 100644 index 0000000000000000000000000000000000000000..3fe157f58237f17fdca91532dd58dd47fb9d8335 GIT binary patch literal 9025 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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0029_dirt.png.import b/world/generation/chunks/assets/chunk_0029_dirt.png.import new file mode 100644 index 0000000..f36d155 --- /dev/null +++ b/world/generation/chunks/assets/chunk_0029_dirt.png.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://crjuh1v2yw8hg" +path.s3tc="res://.godot/imported/chunk_0029_dirt.png-83beafb3e8bd6ad7993415774d44a170.s3tc.ctex" +path.etc2="res://.godot/imported/chunk_0029_dirt.png-83beafb3e8bd6ad7993415774d44a170.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "07d90b3c46a4c3d0c172bed143dc9436" +} + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0029_dirt.png" +dest_files=["res://.godot/imported/chunk_0029_dirt.png-83beafb3e8bd6ad7993415774d44a170.s3tc.ctex", "res://.godot/imported/chunk_0029_dirt.png-83beafb3e8bd6ad7993415774d44a170.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/world/generation/chunks/assets/chunk_0029_grass_lite.png b/world/generation/chunks/assets/chunk_0029_grass_lite.png new file mode 100644 index 0000000000000000000000000000000000000000..52c7ccb8088ddfae88f9b861a807f1de2d38f855 GIT binary patch literal 6317 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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0030_dirt.png.import b/world/generation/chunks/assets/chunk_0030_dirt.png.import new file mode 100644 index 0000000..7c06611 --- /dev/null +++ b/world/generation/chunks/assets/chunk_0030_dirt.png.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b8ew50w8pcdo1" +path.s3tc="res://.godot/imported/chunk_0030_dirt.png-56d0c2cc024e40f55431052959e62137.s3tc.ctex" +path.etc2="res://.godot/imported/chunk_0030_dirt.png-56d0c2cc024e40f55431052959e62137.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "07d90b3c46a4c3d0c172bed143dc9436" +} + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0030_dirt.png" +dest_files=["res://.godot/imported/chunk_0030_dirt.png-56d0c2cc024e40f55431052959e62137.s3tc.ctex", "res://.godot/imported/chunk_0030_dirt.png-56d0c2cc024e40f55431052959e62137.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/world/generation/chunks/assets/chunk_0030_grass_lite.png b/world/generation/chunks/assets/chunk_0030_grass_lite.png new file mode 100644 index 0000000000000000000000000000000000000000..52c7ccb8088ddfae88f9b861a807f1de2d38f855 GIT binary patch literal 6317 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

B@zt3f2y7z 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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0031.glb.import b/world/generation/chunks/assets/chunk_0031.glb.import new file mode 100644 index 0000000..fdd5a30 --- /dev/null +++ b/world/generation/chunks/assets/chunk_0031.glb.import @@ -0,0 +1,45 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://m0fbynbtops6" +path="res://.godot/imported/chunk_0031.glb-5e7dfb1ced51379d2d8ce85667dc7b38.scn" + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0031.glb" +dest_files=["res://.godot/imported/chunk_0031.glb-5e7dfb1ced51379d2d8ce85667dc7b38.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 +gltf/texture_map_mode=1 diff --git a/world/generation/chunks/assets/chunk_0031_cliff_wall.png b/world/generation/chunks/assets/chunk_0031_cliff_wall.png new file mode 100644 index 0000000000000000000000000000000000000000..3fe157f58237f17fdca91532dd58dd47fb9d8335 GIT binary patch literal 9025 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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0031_dirt.png.import b/world/generation/chunks/assets/chunk_0031_dirt.png.import new file mode 100644 index 0000000..8e60684 --- /dev/null +++ b/world/generation/chunks/assets/chunk_0031_dirt.png.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://rmlno7rb2e8p" +path.s3tc="res://.godot/imported/chunk_0031_dirt.png-b5952080b856d9c4370bfed5c22a3881.s3tc.ctex" +path.etc2="res://.godot/imported/chunk_0031_dirt.png-b5952080b856d9c4370bfed5c22a3881.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "07d90b3c46a4c3d0c172bed143dc9436" +} + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0031_dirt.png" +dest_files=["res://.godot/imported/chunk_0031_dirt.png-b5952080b856d9c4370bfed5c22a3881.s3tc.ctex", "res://.godot/imported/chunk_0031_dirt.png-b5952080b856d9c4370bfed5c22a3881.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/world/generation/chunks/assets/chunk_0031_sand.png b/world/generation/chunks/assets/chunk_0031_sand.png new file mode 100644 index 0000000000000000000000000000000000000000..06f807ac1af29baf7fd7adad1fd94b6a54cae740 GIT binary patch literal 6289 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 Hu0mjfqaXRk literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0031_sand.png.import b/world/generation/chunks/assets/chunk_0031_sand.png.import new file mode 100644 index 0000000..52c65ef --- /dev/null +++ b/world/generation/chunks/assets/chunk_0031_sand.png.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bu05cah02gb0b" +path.s3tc="res://.godot/imported/chunk_0031_sand.png-360571b78f4fe3152aebfdbaf94f9299.s3tc.ctex" +path.etc2="res://.godot/imported/chunk_0031_sand.png-360571b78f4fe3152aebfdbaf94f9299.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "adfa66b8fe9da7f3450d3ddfd432b86a" +} + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0031_sand.png" +dest_files=["res://.godot/imported/chunk_0031_sand.png-360571b78f4fe3152aebfdbaf94f9299.s3tc.ctex", "res://.godot/imported/chunk_0031_sand.png-360571b78f4fe3152aebfdbaf94f9299.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/world/generation/chunks/assets/chunk_0032.glb b/world/generation/chunks/assets/chunk_0032.glb new file mode 100644 index 0000000000000000000000000000000000000000..b00e668f3d53def56265bdd18c3403cccee31bc3 GIT binary patch literal 37868 zcmd3NbzIa-_y5w}-LN7h;4ZLqEC@(9NO!k1(%qm4(xH?z5(ZsTA|TQYf}ltV((&6> zxpMFG+iS>T2Nz z6!ZaFSvXp_n7BE)00n{a)-FztPOkJ;Fco?UdkaT%3m1CXo67Va5Kb;mZUG=W(8I#T z)yByY)|rbF1oUGEx|+cZ00lumkt)fw}5{DGVn9__09+A zVBu>0UG-;wGi!H8J0lQ?n+pi<=wRYz;bLQA|HG!ale?+Cg}RNog*i~r&BfgUX6eT; zX7)CgmPVc?_V%105D&~rXHyqN3pdz%8#6U0cPnd03s;y8AE2p;tHmuRdnXqS3okc! z7nqAaKpR+)UN9$Mp*Z~1kv1{=&IicPkKG6O_v4z|xVZh_Mg#vJMsqcBG>63p{=bdL z_1{N?vkaSr@3ZsAw5iyeI9hOmxFPVNTx=X{+-y94_AqgCbFndXcZ0w60jemg%WB9f zD}A3sC1o{5aRs0tm>sAgrF~0TSxwRi1Qdi14CC0w46efcYf`^c4$H&8G04LXyfg^; zvq9dg2KlZUgt7Yf2Kj#(6!^12FnsR+a1jji|1$Bud;j+)!Cb#=f?=Uu4I9k!C!??! zei;S(eP0J|Ka%iAcDtH5INMvm79o5gIk~%-!PgW#p8xj2_dx&K2VC%FW8+|A^>eyR z-7PIGT(oQ~Jb{8RMjdP%EHu2G;Y;&-r<=}>R2W~VIl!De5HOfefQuI*zy}e4aDmymIYIoq{9ODzd>}4v5E#S-foZt? zpixWe7WaR!1aa@rm$`x^;(w}t7k(#<8%EgA(baE>D~PN8hXGiw z{-=RojKj132jd(dP5}syfB+8{2+Ye10z-JY-~@sNU{#nOHWgrj?;pSj^(Z@W6QG z;e_Qo1SG)C4KFoZAb~&e{9lU4zw`VrsS0=TA8G!VT>Z2De_{Dwl9eA;#D9)|NirEGWB+|P_S^ca)WK{U}YB87bZ})wEVu`gclzZ7c2PI6JDobn}f>-&A;n@ zH}<>QVBWus%)|dbjQv+-UU(c=hvxnV#|2abeyr@_InEhbF#yXstj@f}v5zn8ZwqyH0E5C}hPZ*etvc!7s) z@%}a~xFLVdDcED>f8p!D7=S(P{|Cakxc{0STwMI1|G@wl46pB3gXV&O|LVa%vBnE~ zQvSsNO!QAV2CG(oR)ANu{~=5MQ=c33KamdlOP;_A==aKUB~SjT7<{MaDr4N-eEff* zoEyIR{kbdtQI%jDVQCwC*e{VlLD-u5zKM1GLm1`yc3`Vy^1MR!dpdKU$x+Ic|osYe#P)ssOtTu z+6RHqtC(#ap%uA=y6G#W1@tPe*hgsf$*pTiXVr&Z#b$LzVm;hK zp{dE?u2?M3TvO0INAs(edt!elziR)goxhV`wR6?azms3};VPEMfHchpn2KGteE^;& z6}AnL%Qj~{qGf3NrYO8sRMHVEa7q=UIg=hq?3W!osx{ZTL2^ZtY z%1Elg+CcaZIx6h7L)7FAtU+*9yDfn**~=aPdxLBxt|$%wJWIejH9>*Br#F*PQv?9+ zF~O8z>){wC3S0vK+(7`qXJY_BFcknGbIz<+6^4C)YASzQ5^w?kpW9Rf`_>77;Vh%$ z3IK3kga06S6^MDjglKNEic)Bw(P;3P`4D{{z(%77$V!T9cuj5i^(I`?@t-?*t}Vlq zW@n*k>0mHAI^DyqrL5es4KSlS2H}H(@yuF-kpn^X z&-?e~j-DJkdRj~mA>PJcGSi z(nhmD&vhE4M!hZah1q-EfGw@v(H$pWG4kBkKKx&N19PZ-gJ3`J)_};%wsgVU$rm2) z#afFZjCjr)PNs7fKV)1~fAln(IWKeBI!c~BlgU{^o6RY6BZ!Fk#&~fQ(bDNedjT=T zyLh~PF!m{#S4jn706G7`;iogPP9xu4qen!32M2eBz2Z-VS|VEQ5CEc>V%_f_&Mz9T zGc2I{pX^lv0L(k@(`W<->s!t!01Fu(E>Hk)^?v`N*v^w_v98j^npaz8tc_x4D@X^{ ztK9Yx4OJc<*II;*C~xOga?AFLO`HyvmIdte(lKa(&%0ADiubsUPPdgG$01rF0=BI# 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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0032.glb.import b/world/generation/chunks/assets/chunk_0032.glb.import new file mode 100644 index 0000000..5a7d429 --- /dev/null +++ b/world/generation/chunks/assets/chunk_0032.glb.import @@ -0,0 +1,45 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://d5sm4fw75rl0" +path="res://.godot/imported/chunk_0032.glb-f634c9b68e518b5a1dc14f0687098529.scn" + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0032.glb" +dest_files=["res://.godot/imported/chunk_0032.glb-f634c9b68e518b5a1dc14f0687098529.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 +gltf/texture_map_mode=1 diff --git a/world/generation/chunks/assets/chunk_0032_cliff_wall.png b/world/generation/chunks/assets/chunk_0032_cliff_wall.png new file mode 100644 index 0000000000000000000000000000000000000000..3fe157f58237f17fdca91532dd58dd47fb9d8335 GIT binary patch literal 9025 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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0032_dirt.png.import b/world/generation/chunks/assets/chunk_0032_dirt.png.import new file mode 100644 index 0000000..89c35c2 --- /dev/null +++ b/world/generation/chunks/assets/chunk_0032_dirt.png.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c3trxcu4nje7" +path.s3tc="res://.godot/imported/chunk_0032_dirt.png-a05e8b38c9711fbcb6a0efbc2a14e77a.s3tc.ctex" +path.etc2="res://.godot/imported/chunk_0032_dirt.png-a05e8b38c9711fbcb6a0efbc2a14e77a.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "07d90b3c46a4c3d0c172bed143dc9436" +} + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0032_dirt.png" +dest_files=["res://.godot/imported/chunk_0032_dirt.png-a05e8b38c9711fbcb6a0efbc2a14e77a.s3tc.ctex", "res://.godot/imported/chunk_0032_dirt.png-a05e8b38c9711fbcb6a0efbc2a14e77a.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/world/generation/chunks/assets/chunk_0032_sand.png b/world/generation/chunks/assets/chunk_0032_sand.png new file mode 100644 index 0000000000000000000000000000000000000000..06f807ac1af29baf7fd7adad1fd94b6a54cae740 GIT binary patch literal 6289 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 Hu0mjfqaXRk literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0032_sand.png.import b/world/generation/chunks/assets/chunk_0032_sand.png.import new file mode 100644 index 0000000..0d28555 --- /dev/null +++ b/world/generation/chunks/assets/chunk_0032_sand.png.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://sy5eg486qd7h" +path.s3tc="res://.godot/imported/chunk_0032_sand.png-9770039ac8c280acb6aa80fde10f3acd.s3tc.ctex" +path.etc2="res://.godot/imported/chunk_0032_sand.png-9770039ac8c280acb6aa80fde10f3acd.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "adfa66b8fe9da7f3450d3ddfd432b86a" +} + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0032_sand.png" +dest_files=["res://.godot/imported/chunk_0032_sand.png-9770039ac8c280acb6aa80fde10f3acd.s3tc.ctex", "res://.godot/imported/chunk_0032_sand.png-9770039ac8c280acb6aa80fde10f3acd.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/world/generation/chunks/definitions/chunk_0002.tres b/world/generation/chunks/definitions/chunk_0002.tres index 8cf381a..7372e02 100644 --- a/world/generation/chunks/definitions/chunk_0002.tres +++ b/world/generation/chunks/definitions/chunk_0002.tres @@ -10,7 +10,7 @@ label = "beach" packed_scene = ExtResource("2_scene") primary_mesh_name = &"chunk_0002" selection_weight = 0.75 -maximum_placements = 64 +maximum_placements = 128 tags = PackedStringArray("land", "walkable", "sand", "coast", "slope", "beach_ocean_edge") allowed_neighbor_tags = PackedStringArray("sand", "grass") required_neighbor_tags = PackedStringArray("sand") diff --git a/world/generation/chunks/definitions/chunk_0003.tres b/world/generation/chunks/definitions/chunk_0003.tres index 125acf0..f681406 100644 --- a/world/generation/chunks/definitions/chunk_0003.tres +++ b/world/generation/chunks/definitions/chunk_0003.tres @@ -10,7 +10,8 @@ label = "stream" packed_scene = ExtResource("2_scene") primary_mesh_name = &"chunk_0003" selection_weight = 0.3 -tags = PackedStringArray("land", "walkable", "fresh_water", "river", "flowing") +maximum_placements = 2 +tags = PackedStringArray("land", "walkable", "fresh_water", "pond", "flowing") allowed_neighbor_tags = PackedStringArray("grass") preferred_neighbor_tags = PackedStringArray("grass") water_inlet_edges = 1 diff --git a/world/generation/chunks/definitions/chunk_0004.tres b/world/generation/chunks/definitions/chunk_0004.tres index 7cf54b4..daaa129 100644 --- a/world/generation/chunks/definitions/chunk_0004.tres +++ b/world/generation/chunks/definitions/chunk_0004.tres @@ -10,6 +10,7 @@ label = "pond" packed_scene = ExtResource("2_scene") primary_mesh_name = &"chunk_0004" selection_weight = 0.35 +maximum_placements = 2 tags = PackedStringArray("land", "walkable", "fresh_water", "pond") allowed_neighbor_tags = PackedStringArray("grass") preferred_neighbor_tags = PackedStringArray("grass") diff --git a/world/generation/chunks/definitions/chunk_0016.tres b/world/generation/chunks/definitions/chunk_0016.tres index a49d124..14474e9 100644 --- a/world/generation/chunks/definitions/chunk_0016.tres +++ b/world/generation/chunks/definitions/chunk_0016.tres @@ -10,7 +10,8 @@ label = "stream variant" packed_scene = ExtResource("2_scene") primary_mesh_name = &"chunk_0016" selection_weight = 0.3 -tags = PackedStringArray("land", "walkable", "fresh_water", "river", "flowing") +maximum_placements = 1 +tags = PackedStringArray("land", "walkable", "fresh_water", "pond", "flowing") allowed_neighbor_tags = PackedStringArray("grass") preferred_neighbor_tags = PackedStringArray("grass") water_inlet_edges = 1 diff --git a/world/generation/chunks/definitions/chunk_0017.tres b/world/generation/chunks/definitions/chunk_0017.tres index f1300dc..40360df 100644 --- a/world/generation/chunks/definitions/chunk_0017.tres +++ b/world/generation/chunks/definitions/chunk_0017.tres @@ -1,29 +1,22 @@ -[gd_resource type="Resource" script_class="TerrainChunkDefinition" load_steps=4 format=3] +[gd_resource type="Resource" script_class="TerrainChunkDefinition" load_steps=3 format=3] [ext_resource type="Script" path="res://world/generation/terrain_chunk_definition.gd" id="1_definition"] -[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0015.glb" id="2_scene"] -[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0007.glb" id="3_base_coast"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0017.glb" id="2_scene"] [resource] script = ExtResource("1_definition") stable_id = &"chunk_0017" -label = "second-tier grass sea transition right" +label = "lake edge" packed_scene = ExtResource("2_scene") -primary_mesh_name = &"chunk_0015" -base_layer_scene = ExtResource("3_base_coast") -base_layer_mesh_name = &"chunk_0007" -base_layer_quarter_turns = 3 -overlay_only = true -selection_weight = 0.12 -maximum_placements = 8 -tags = PackedStringArray("land", "walkable", "grass", "coast", "cliff", "corner", "transition", "elevation_2", "elevation_2_border", "elevation_2_sea_edge") -allowed_neighbor_tags = PackedStringArray("elevation_2") -north_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge", "elevation_2_border") -east_allowed_neighbor_tags = PackedStringArray("grass") -west_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge", "elevation_2_border") -required_neighbor_tags = PackedStringArray("elevation_2_border") -minimum_required_neighbors = 2 -preferred_neighbor_tags = PackedStringArray("elevation_2", "coast") -prefers_map_boundary = true -ocean_facing_edges = 4 -buried_cliff_seam_edges = 9 +primary_mesh_name = &"chunk_0017" +participates_in_base_solver = false +selection_weight = 0.2 +maximum_placements = 16 +tags = PackedStringArray("land", "walkable", "grass", "flat", "spawn_safe", "fresh_water", "lake", "lake_border") +allowed_neighbor_tags = PackedStringArray("grass") +preferred_neighbor_tags = PackedStringArray("grass", "fresh_water", "lake") +must_be_interior = true +water_inlet_edges = 7 +water_outlet_edges = 7 +water_surface_size = Vector2(6.3, 10) +water_surface_offset = Vector2(1.85, 0) diff --git a/world/generation/chunks/definitions/chunk_0018.tres b/world/generation/chunks/definitions/chunk_0018.tres index c41424f..134ebe7 100644 --- a/world/generation/chunks/definitions/chunk_0018.tres +++ b/world/generation/chunks/definitions/chunk_0018.tres @@ -1,29 +1,23 @@ -[gd_resource type="Resource" script_class="TerrainChunkDefinition" load_steps=4 format=3] +[gd_resource type="Resource" script_class="TerrainChunkDefinition" load_steps=3 format=3] [ext_resource type="Script" path="res://world/generation/terrain_chunk_definition.gd" id="1_definition"] -[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0015.glb" id="2_scene"] -[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0007.glb" id="3_base_coast"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0018.glb" id="2_scene"] [resource] script = ExtResource("1_definition") stable_id = &"chunk_0018" -label = "second-tier grass sea transition left" +label = "lake corner" packed_scene = ExtResource("2_scene") -primary_mesh_name = &"chunk_0015" -base_layer_scene = ExtResource("3_base_coast") -base_layer_mesh_name = &"chunk_0007" -base_layer_quarter_turns = 1 -overlay_only = true -selection_weight = 0.12 -maximum_placements = 8 -tags = PackedStringArray("land", "walkable", "grass", "coast", "cliff", "corner", "transition", "elevation_2", "elevation_2_border", "elevation_2_sea_edge") -allowed_neighbor_tags = PackedStringArray("elevation_2") -north_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge", "elevation_2_border") -south_allowed_neighbor_tags = PackedStringArray("grass") -west_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge", "elevation_2_border") -required_neighbor_tags = PackedStringArray("elevation_2_border") -minimum_required_neighbors = 2 -preferred_neighbor_tags = PackedStringArray("elevation_2", "coast") -prefers_map_boundary = true -ocean_facing_edges = 2 -buried_cliff_seam_edges = 9 +primary_mesh_name = &"chunk_0018" +participates_in_base_solver = false +selection_weight = 0.2 +edge_profile_tolerance_override = 0.07 +maximum_placements = 4 +tags = PackedStringArray("land", "walkable", "grass", "flat", "spawn_safe", "fresh_water", "lake", "lake_border", "corner") +allowed_neighbor_tags = PackedStringArray("grass") +preferred_neighbor_tags = PackedStringArray("grass", "fresh_water", "lake") +must_be_interior = true +water_inlet_edges = 6 +water_outlet_edges = 6 +water_surface_size = Vector2(6.3, 6.3) +water_surface_offset = Vector2(1.85, 1.85) diff --git a/world/generation/chunks/definitions/chunk_0019.tres b/world/generation/chunks/definitions/chunk_0019.tres index dd7db5b..494c8cf 100644 --- a/world/generation/chunks/definitions/chunk_0019.tres +++ b/world/generation/chunks/definitions/chunk_0019.tres @@ -1,29 +1,21 @@ -[gd_resource type="Resource" script_class="TerrainChunkDefinition" load_steps=4 format=3] +[gd_resource type="Resource" script_class="TerrainChunkDefinition" load_steps=3 format=3] [ext_resource type="Script" path="res://world/generation/terrain_chunk_definition.gd" id="1_definition"] -[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0015.glb" id="2_scene"] -[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0008.glb" id="3_base_coast"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0019.glb" id="2_scene"] [resource] script = ExtResource("1_definition") stable_id = &"chunk_0019" -label = "second-tier beach sea transition right" +label = "lake bottom" packed_scene = ExtResource("2_scene") -primary_mesh_name = &"chunk_0015" -base_layer_scene = ExtResource("3_base_coast") -base_layer_mesh_name = &"chunk_0008" -base_layer_quarter_turns = 3 -overlay_only = true -selection_weight = 0.12 -maximum_placements = 8 -tags = PackedStringArray("land", "walkable", "sand", "coast", "cliff", "corner", "transition", "elevation_2", "elevation_2_border", "elevation_2_sea_edge") -allowed_neighbor_tags = PackedStringArray("elevation_2") -north_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge", "elevation_2_border") -east_allowed_neighbor_tags = PackedStringArray("sand") -west_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge", "elevation_2_border") -required_neighbor_tags = PackedStringArray("elevation_2_border") -minimum_required_neighbors = 2 -preferred_neighbor_tags = PackedStringArray("elevation_2", "coast") -prefers_map_boundary = true -ocean_facing_edges = 4 -buried_cliff_seam_edges = 9 +primary_mesh_name = &"chunk_0019" +participates_in_base_solver = false +allowed_rotation_mask = 1 +selection_weight = 0.2 +maximum_placements = 36 +tags = PackedStringArray("fresh_water", "lake", "lake_interior") +preferred_neighbor_tags = PackedStringArray("fresh_water", "lake") +must_be_interior = true +water_inlet_edges = 15 +water_outlet_edges = 15 +water_surface_size = Vector2(10, 10) diff --git a/world/generation/chunks/definitions/chunk_0020.tres b/world/generation/chunks/definitions/chunk_0020.tres index 4014c5b..b98084f 100644 --- a/world/generation/chunks/definitions/chunk_0020.tres +++ b/world/generation/chunks/definitions/chunk_0020.tres @@ -1,29 +1,25 @@ -[gd_resource type="Resource" script_class="TerrainChunkDefinition" load_steps=4 format=3] +[gd_resource type="Resource" script_class="TerrainChunkDefinition" load_steps=3 format=3] [ext_resource type="Script" path="res://world/generation/terrain_chunk_definition.gd" id="1_definition"] -[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0015.glb" id="2_scene"] -[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0008.glb" id="3_base_coast"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0020.glb" id="2_scene"] [resource] script = ExtResource("1_definition") stable_id = &"chunk_0020" -label = "second-tier beach sea transition left" +label = "lake diagonal" packed_scene = ExtResource("2_scene") -primary_mesh_name = &"chunk_0015" -base_layer_scene = ExtResource("3_base_coast") -base_layer_mesh_name = &"chunk_0008" -base_layer_quarter_turns = 1 -overlay_only = true -selection_weight = 0.12 -maximum_placements = 8 -tags = PackedStringArray("land", "walkable", "sand", "coast", "cliff", "corner", "transition", "elevation_2", "elevation_2_border", "elevation_2_sea_edge") -allowed_neighbor_tags = PackedStringArray("elevation_2") -north_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge", "elevation_2_border") -south_allowed_neighbor_tags = PackedStringArray("sand") -west_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge", "elevation_2_border") -required_neighbor_tags = PackedStringArray("elevation_2_border") -minimum_required_neighbors = 2 -preferred_neighbor_tags = PackedStringArray("elevation_2", "coast") -prefers_map_boundary = true -ocean_facing_edges = 2 -buried_cliff_seam_edges = 9 +primary_mesh_name = &"chunk_0020" +participates_in_base_solver = false +selection_weight = 0.2 +maximum_placements = 4 +tags = PackedStringArray("land", "walkable", "grass", "flat", "spawn_safe", "fresh_water", "lake", "lake_border", "diagonal") +allowed_neighbor_tags = PackedStringArray("grass") +north_allowed_neighbor_tags = PackedStringArray("grass") +west_allowed_neighbor_tags = PackedStringArray("grass") +north_surface_tags = PackedStringArray("grass") +west_surface_tags = PackedStringArray("grass") +preferred_neighbor_tags = PackedStringArray("grass", "fresh_water", "lake") +must_be_interior = true +water_inlet_edges = 6 +water_outlet_edges = 6 +water_surface_polygon = PackedVector2Array(5, -4.619923, 5, 5, -4.619923, 5, -2.637323, 0.347029, 0.144384, 0.019586, 2.27822, -2.585355) diff --git a/world/generation/chunks/definitions/chunk_0021.tres b/world/generation/chunks/definitions/chunk_0021.tres new file mode 100644 index 0000000..036cca8 --- /dev/null +++ b/world/generation/chunks/definitions/chunk_0021.tres @@ -0,0 +1,23 @@ +[gd_resource type="Resource" script_class="TerrainChunkDefinition" load_steps=3 format=3] + +[ext_resource type="Script" path="res://world/generation/terrain_chunk_definition.gd" id="1_definition"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0021.glb" id="2_scene"] + +[resource] +script = ExtResource("1_definition") +stable_id = &"chunk_0021" +label = "lake narrow edge" +packed_scene = ExtResource("2_scene") +primary_mesh_name = &"chunk_0021" +participates_in_base_solver = false +selection_weight = 0.2 +maximum_placements = 8 +tags = PackedStringArray("land", "walkable", "grass", "flat", "spawn_safe", "fresh_water", "lake", "lake_border", "narrow") +allowed_neighbor_tags = PackedStringArray("grass") +north_allowed_neighbor_tags = PackedStringArray("grass") +north_surface_tags = PackedStringArray("grass") +preferred_neighbor_tags = PackedStringArray("grass", "fresh_water", "lake") +must_be_interior = true +water_inlet_edges = 14 +water_outlet_edges = 14 +water_surface_polygon = PackedVector2Array(5, -4.619923, 5, 5, -5, 5, -5, -4.619923) diff --git a/world/generation/chunks/definitions/chunk_0022.tres b/world/generation/chunks/definitions/chunk_0022.tres new file mode 100644 index 0000000..50c5669 --- /dev/null +++ b/world/generation/chunks/definitions/chunk_0022.tres @@ -0,0 +1,23 @@ +[gd_resource type="Resource" script_class="TerrainChunkDefinition" load_steps=3 format=3] + +[ext_resource type="Script" path="res://world/generation/terrain_chunk_definition.gd" id="1_definition"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0022.glb" id="2_scene"] + +[resource] +script = ExtResource("1_definition") +stable_id = &"chunk_0022" +label = "lake regular-to-narrow transition" +packed_scene = ExtResource("2_scene") +primary_mesh_name = &"chunk_0022" +participates_in_base_solver = false +selection_weight = 0.2 +maximum_placements = 4 +tags = PackedStringArray("land", "walkable", "grass", "flat", "spawn_safe", "fresh_water", "lake", "lake_border", "narrow", "transition") +allowed_neighbor_tags = PackedStringArray("grass") +north_allowed_neighbor_tags = PackedStringArray("grass") +north_surface_tags = PackedStringArray("grass") +preferred_neighbor_tags = PackedStringArray("grass", "fresh_water", "lake") +must_be_interior = true +water_inlet_edges = 14 +water_outlet_edges = 14 +water_surface_polygon = PackedVector2Array(5, -4.619923, 5, 5, -5, 5, -5, -1.497323, -2.500097, -4.619923) diff --git a/world/generation/chunks/definitions/chunk_0023.tres b/world/generation/chunks/definitions/chunk_0023.tres new file mode 100644 index 0000000..6506699 --- /dev/null +++ b/world/generation/chunks/definitions/chunk_0023.tres @@ -0,0 +1,23 @@ +[gd_resource type="Resource" script_class="TerrainChunkDefinition" load_steps=3 format=3] + +[ext_resource type="Script" path="res://world/generation/terrain_chunk_definition.gd" id="1_definition"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0023.glb" id="2_scene"] + +[resource] +script = ExtResource("1_definition") +stable_id = &"chunk_0023" +label = "lake narrow-to-regular transition" +packed_scene = ExtResource("2_scene") +primary_mesh_name = &"chunk_0023" +participates_in_base_solver = false +selection_weight = 0.2 +maximum_placements = 4 +tags = PackedStringArray("land", "walkable", "grass", "flat", "spawn_safe", "fresh_water", "lake", "lake_border", "narrow", "transition") +allowed_neighbor_tags = PackedStringArray("grass") +north_allowed_neighbor_tags = PackedStringArray("grass") +north_surface_tags = PackedStringArray("grass") +preferred_neighbor_tags = PackedStringArray("grass", "fresh_water", "lake") +must_be_interior = true +water_inlet_edges = 14 +water_outlet_edges = 14 +water_surface_polygon = PackedVector2Array(5, -1.497323, 5, 5, -5, 5, -5, -4.619923, 2.499903, -4.619923) diff --git a/world/generation/chunks/definitions/chunk_0024.tres b/world/generation/chunks/definitions/chunk_0024.tres new file mode 100644 index 0000000..cb6494e --- /dev/null +++ b/world/generation/chunks/definitions/chunk_0024.tres @@ -0,0 +1,23 @@ +[gd_resource type="Resource" script_class="TerrainChunkDefinition" load_steps=3 format=3] + +[ext_resource type="Script" path="res://world/generation/terrain_chunk_definition.gd" id="1_definition"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0024.glb" id="2_scene"] + +[resource] +script = ExtResource("1_definition") +stable_id = &"chunk_0024" +label = "river edge" +packed_scene = ExtResource("2_scene") +primary_mesh_name = &"chunk_0024" +participates_in_base_solver = false +selection_weight = 0.2 +maximum_placements = 16 +tags = PackedStringArray("land", "walkable", "grass", "flat", "spawn_safe", "fresh_water", "river", "river_border", "flowing") +allowed_neighbor_tags = PackedStringArray("grass") +north_allowed_neighbor_tags = PackedStringArray("grass") +north_surface_tags = PackedStringArray("grass") +preferred_neighbor_tags = PackedStringArray("grass", "fresh_water", "river") +must_be_interior = true +water_inlet_edges = 14 +water_outlet_edges = 14 +water_surface_polygon = PackedVector2Array(-5, -4.619923, -3.897078, -4.512341, -2.980631, -4.203938, -2.250611, -4.038979, -0.609729, -4.132217, 0.90103, -4.286418, 1.924084, -4.17525, 2.678182, -4.067667, 3.604412, -4.189594, 4.269883, -4.408344, 5, -4.619923, 5, 5, -5, 5) diff --git a/world/generation/chunks/definitions/chunk_0025.tres b/world/generation/chunks/definitions/chunk_0025.tres new file mode 100644 index 0000000..db2830a --- /dev/null +++ b/world/generation/chunks/definitions/chunk_0025.tres @@ -0,0 +1,23 @@ +[gd_resource type="Resource" script_class="TerrainChunkDefinition" load_steps=3 format=3] + +[ext_resource type="Script" path="res://world/generation/terrain_chunk_definition.gd" id="1_definition"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0025.glb" id="2_scene"] + +[resource] +script = ExtResource("1_definition") +stable_id = &"chunk_0025" +label = "river edge variant" +packed_scene = ExtResource("2_scene") +primary_mesh_name = &"chunk_0025" +participates_in_base_solver = false +selection_weight = 0.2 +maximum_placements = 16 +tags = PackedStringArray("land", "walkable", "grass", "flat", "spawn_safe", "fresh_water", "river", "river_border", "flowing") +allowed_neighbor_tags = PackedStringArray("grass") +north_allowed_neighbor_tags = PackedStringArray("grass") +north_surface_tags = PackedStringArray("grass") +preferred_neighbor_tags = PackedStringArray("grass", "fresh_water", "river") +must_be_interior = true +water_inlet_edges = 14 +water_outlet_edges = 14 +water_surface_polygon = PackedVector2Array(-5, -4.619923, -4.19697, -4.000163, -3.172378, -3.982254, -2.030086, -3.55834, -0.95432, -3.220759, 0.874552, -3.454032, 2.118941, -3.669504, 2.931416, -3.612123, 3.664019, -3.974483, 4.456637, -4.104719, 5, -4.619923, 5, 5, -5, 5) diff --git a/world/generation/chunks/definitions/chunk_0026.tres b/world/generation/chunks/definitions/chunk_0026.tres new file mode 100644 index 0000000..000c17e --- /dev/null +++ b/world/generation/chunks/definitions/chunk_0026.tres @@ -0,0 +1,27 @@ +[gd_resource type="Resource" script_class="TerrainChunkDefinition" load_steps=4 format=3] + +[ext_resource type="Script" path="res://world/generation/terrain_chunk_definition.gd" id="1_definition"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0026.glb" id="2_scene"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0000.glb" id="3_base_grass"] + +[resource] +script = ExtResource("1_definition") +stable_id = &"chunk_0026" +label = "third-tier grass edge" +packed_scene = ExtResource("2_scene") +primary_mesh_name = &"chunk_0026" +base_layer_scene = ExtResource("3_base_grass") +base_layer_mesh_name = &"chunk_0000" +overlay_only = true +selection_weight = 0.18 +maximum_placements = 32 +tags = PackedStringArray("land", "walkable", "grass", "cliff", "edge", "elevation_3", "elevation_3_border") +allowed_neighbor_tags = PackedStringArray("grass", "elevation_3") +north_allowed_neighbor_tags = PackedStringArray("elevation_3_border") +east_allowed_neighbor_tags = PackedStringArray("grass") +south_allowed_neighbor_tags = PackedStringArray("elevation_3_border") +west_allowed_neighbor_tags = PackedStringArray("elevation_3_top") +required_neighbor_tags = PackedStringArray("elevation_3_top") +minimum_required_neighbors = 1 +preferred_neighbor_tags = PackedStringArray("elevation_3") +must_be_interior = true diff --git a/world/generation/chunks/definitions/chunk_0027.tres b/world/generation/chunks/definitions/chunk_0027.tres new file mode 100644 index 0000000..088cc17 --- /dev/null +++ b/world/generation/chunks/definitions/chunk_0027.tres @@ -0,0 +1,27 @@ +[gd_resource type="Resource" script_class="TerrainChunkDefinition" load_steps=4 format=3] + +[ext_resource type="Script" path="res://world/generation/terrain_chunk_definition.gd" id="1_definition"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0027.glb" id="2_scene"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0000.glb" id="3_base_grass"] + +[resource] +script = ExtResource("1_definition") +stable_id = &"chunk_0027" +label = "third-tier grass corner" +packed_scene = ExtResource("2_scene") +primary_mesh_name = &"chunk_0027" +base_layer_scene = ExtResource("3_base_grass") +base_layer_mesh_name = &"chunk_0000" +overlay_only = true +selection_weight = 0.08 +maximum_placements = 16 +tags = PackedStringArray("land", "walkable", "grass", "cliff", "corner", "elevation_3", "elevation_3_border") +allowed_neighbor_tags = PackedStringArray("grass", "elevation_3") +north_allowed_neighbor_tags = PackedStringArray("elevation_3_border") +east_allowed_neighbor_tags = PackedStringArray("grass") +south_allowed_neighbor_tags = PackedStringArray("grass") +west_allowed_neighbor_tags = PackedStringArray("elevation_3_border") +required_neighbor_tags = PackedStringArray("elevation_3_border") +minimum_required_neighbors = 2 +preferred_neighbor_tags = PackedStringArray("elevation_3") +must_be_interior = true diff --git a/world/generation/chunks/definitions/chunk_0028.tres b/world/generation/chunks/definitions/chunk_0028.tres new file mode 100644 index 0000000..654beb7 --- /dev/null +++ b/world/generation/chunks/definitions/chunk_0028.tres @@ -0,0 +1,23 @@ +[gd_resource type="Resource" script_class="TerrainChunkDefinition" load_steps=4 format=3] + +[ext_resource type="Script" path="res://world/generation/terrain_chunk_definition.gd" id="1_definition"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0028.glb" id="2_scene"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0000.glb" id="3_base_grass"] + +[resource] +script = ExtResource("1_definition") +stable_id = &"chunk_0028" +label = "third-tier grass top" +packed_scene = ExtResource("2_scene") +primary_mesh_name = &"chunk_0028" +base_layer_scene = ExtResource("3_base_grass") +base_layer_mesh_name = &"chunk_0000" +overlay_only = true +selection_weight = 0.14 +maximum_placements = 32 +tags = PackedStringArray("land", "walkable", "grass", "elevation_3", "elevation_3_top") +allowed_neighbor_tags = PackedStringArray("elevation_3") +required_neighbor_tags = PackedStringArray("elevation_3") +minimum_required_neighbors = 4 +preferred_neighbor_tags = PackedStringArray("elevation_3_top") +must_be_interior = true diff --git a/world/generation/chunks/definitions/chunk_0029.tres b/world/generation/chunks/definitions/chunk_0029.tres new file mode 100644 index 0000000..2731bf2 --- /dev/null +++ b/world/generation/chunks/definitions/chunk_0029.tres @@ -0,0 +1,26 @@ +[gd_resource type="Resource" script_class="TerrainChunkDefinition" load_steps=3 format=3] + +[ext_resource type="Script" path="res://world/generation/terrain_chunk_definition.gd" id="1_definition"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0029.glb" id="2_scene"] + +[resource] +script = ExtResource("1_definition") +stable_id = &"chunk_0029" +label = "third-tier river source right" +packed_scene = ExtResource("2_scene") +primary_mesh_name = &"chunk_0029" +participates_in_base_solver = false +selection_weight = 0.1 +maximum_placements = 1 +tags = PackedStringArray("land", "walkable", "grass", "cliff", "edge", "elevation_3", "elevation_3_border", "fresh_water", "river", "river_border", "river_source", "river_source_right", "flowing") +allowed_neighbor_tags = PackedStringArray("grass", "elevation_3") +north_allowed_neighbor_tags = PackedStringArray("elevation_3_border") +west_allowed_neighbor_tags = PackedStringArray("elevation_3_top") +north_surface_tags = PackedStringArray("elevation_3_border") +west_surface_tags = PackedStringArray("elevation_3_top") +preferred_neighbor_tags = PackedStringArray("elevation_3", "fresh_water", "river") +must_be_interior = true +buried_cliff_seam_edges = 9 +water_inlet_edges = 6 +water_outlet_edges = 6 +water_surface_polygon = PackedVector2Array(-5, -4.619923, -4.19697, -4.000163, -3.172378, -3.982254, -2.030086, -3.55834, -0.95432, -3.220759, 0.874552, -3.454032, 2.118941, -3.669504, 2.931416, -3.612123, 3.664019, -3.974483, 4.456637, -4.104719, 5, -4.619923, 5, 5, -5, 5) diff --git a/world/generation/chunks/definitions/chunk_0030.tres b/world/generation/chunks/definitions/chunk_0030.tres new file mode 100644 index 0000000..60dfee6 --- /dev/null +++ b/world/generation/chunks/definitions/chunk_0030.tres @@ -0,0 +1,26 @@ +[gd_resource type="Resource" script_class="TerrainChunkDefinition" load_steps=3 format=3] + +[ext_resource type="Script" path="res://world/generation/terrain_chunk_definition.gd" id="1_definition"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0030.glb" id="2_scene"] + +[resource] +script = ExtResource("1_definition") +stable_id = &"chunk_0030" +label = "third-tier river source left" +packed_scene = ExtResource("2_scene") +primary_mesh_name = &"chunk_0030" +participates_in_base_solver = false +selection_weight = 0.1 +maximum_placements = 1 +tags = PackedStringArray("land", "walkable", "grass", "cliff", "edge", "elevation_3", "elevation_3_border", "fresh_water", "river", "river_border", "river_source", "river_source_left", "flowing") +allowed_neighbor_tags = PackedStringArray("grass", "elevation_3") +south_allowed_neighbor_tags = PackedStringArray("elevation_3_border") +west_allowed_neighbor_tags = PackedStringArray("elevation_3_top") +south_surface_tags = PackedStringArray("elevation_3_border") +west_surface_tags = PackedStringArray("elevation_3_top") +preferred_neighbor_tags = PackedStringArray("elevation_3", "fresh_water", "river") +must_be_interior = true +buried_cliff_seam_edges = 12 +water_inlet_edges = 3 +water_outlet_edges = 3 +water_surface_polygon = PackedVector2Array(-5, 4.619923, -4.19697, 4.000163, -3.172378, 3.982254, -2.030086, 3.55834, -0.95432, 3.220759, 0.874552, 3.454032, 2.118941, 3.669504, 2.931416, 3.612123, 3.664019, 3.974483, 4.456637, 4.104719, 5, 4.619923, 5, -5, -5, -5) diff --git a/world/generation/chunks/definitions/chunk_0031.tres b/world/generation/chunks/definitions/chunk_0031.tres new file mode 100644 index 0000000..80e1aaa --- /dev/null +++ b/world/generation/chunks/definitions/chunk_0031.tres @@ -0,0 +1,26 @@ +[gd_resource type="Resource" script_class="TerrainChunkDefinition" load_steps=3 format=3] + +[ext_resource type="Script" path="res://world/generation/terrain_chunk_definition.gd" id="1_definition"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0031.glb" id="2_scene"] + +[resource] +script = ExtResource("1_definition") +stable_id = &"chunk_0031" +label = "beach river outlet right" +packed_scene = ExtResource("2_scene") +primary_mesh_name = &"chunk_0031" +participates_in_base_solver = false +selection_weight = 0.1 +maximum_placements = 1 +tags = PackedStringArray("land", "walkable", "sand", "coast", "slope", "beach_ocean_edge", "fresh_water", "river", "river_border", "river_outlet", "river_outlet_right", "flowing") +allowed_neighbor_tags = PackedStringArray("sand", "coast", "river") +north_allowed_neighbor_tags = PackedStringArray("sand", "coast") +west_allowed_neighbor_tags = PackedStringArray("river") +north_surface_tags = PackedStringArray("sand") +west_surface_tags = PackedStringArray("river") +preferred_neighbor_tags = PackedStringArray("sand", "coast", "fresh_water", "river") +prefers_map_boundary = true +ocean_facing_edges = 2 +water_inlet_edges = 14 +water_outlet_edges = 14 +water_surface_polygon = PackedVector2Array(-5, -4.619923, -4.314419, -4.088264, -4.196972, -3.999617, -3.35959, -3.984982, -3.172381, -3.981709, -2.212801, -3.62606, -2.030086, -3.55834, -1.004599, -3.236537, -0.954332, -3.218529, 0.829871, -3.447385, 0.874537, -3.451058, 0.891683, -3.456123, 0.891683, -3.4698, 0.940199, -3.591053, 1.25, -4.781331, 1.611151, -5, 5, -5, 5, 5, -5, 5) diff --git a/world/generation/chunks/definitions/chunk_0032.tres b/world/generation/chunks/definitions/chunk_0032.tres new file mode 100644 index 0000000..fb8bf16 --- /dev/null +++ b/world/generation/chunks/definitions/chunk_0032.tres @@ -0,0 +1,26 @@ +[gd_resource type="Resource" script_class="TerrainChunkDefinition" load_steps=3 format=3] + +[ext_resource type="Script" path="res://world/generation/terrain_chunk_definition.gd" id="1_definition"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0032.glb" id="2_scene"] + +[resource] +script = ExtResource("1_definition") +stable_id = &"chunk_0032" +label = "beach river outlet left" +packed_scene = ExtResource("2_scene") +primary_mesh_name = &"chunk_0032" +participates_in_base_solver = false +selection_weight = 0.1 +maximum_placements = 1 +tags = PackedStringArray("land", "walkable", "sand", "coast", "slope", "beach_ocean_edge", "fresh_water", "river", "river_border", "river_outlet", "river_outlet_left", "flowing") +allowed_neighbor_tags = PackedStringArray("sand", "coast", "river") +south_allowed_neighbor_tags = PackedStringArray("sand", "coast") +west_allowed_neighbor_tags = PackedStringArray("river") +south_surface_tags = PackedStringArray("sand") +west_surface_tags = PackedStringArray("river") +preferred_neighbor_tags = PackedStringArray("sand", "coast", "fresh_water", "river") +prefers_map_boundary = true +ocean_facing_edges = 2 +water_inlet_edges = 11 +water_outlet_edges = 11 +water_surface_polygon = PackedVector2Array(-5, 4.619923, -4.314419, 4.088264, -4.196972, 3.999617, -3.35959, 3.984982, -3.172381, 3.981709, -2.212801, 3.62606, -2.030086, 3.55834, -1.004599, 3.236537, -0.954332, 3.218529, 0.829871, 3.447385, 0.874537, 3.451058, 0.891683, 3.456123, 0.891683, 3.4698, 0.940199, 3.591053, 1.25, 4.781331, 1.611151, 5, 5, 5, 5, -5, -5, -5) diff --git a/world/generation/chunks/definitions/chunk_9995.tres b/world/generation/chunks/definitions/chunk_9995.tres new file mode 100644 index 0000000..9dd25b5 --- /dev/null +++ b/world/generation/chunks/definitions/chunk_9995.tres @@ -0,0 +1,25 @@ +[gd_resource type="Resource" script_class="TerrainChunkDefinition" load_steps=3 format=3] + +[ext_resource type="Script" path="res://world/generation/terrain_chunk_definition.gd" id="1_definition"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0020.glb" id="2_scene"] + +[resource] +script = ExtResource("1_definition") +stable_id = &"chunk_9995" +label = "river cap composite" +packed_scene = ExtResource("2_scene") +primary_mesh_name = &"chunk_0020" +participates_in_base_solver = false +selection_weight = 0.2 +maximum_placements = 4 +tags = PackedStringArray("land", "walkable", "grass", "flat", "spawn_safe", "fresh_water", "river", "river_border", "flowing", "diagonal", "composite") +allowed_neighbor_tags = PackedStringArray("grass") +north_allowed_neighbor_tags = PackedStringArray("grass") +west_allowed_neighbor_tags = PackedStringArray("grass") +north_surface_tags = PackedStringArray("grass") +west_surface_tags = PackedStringArray("grass") +preferred_neighbor_tags = PackedStringArray("grass", "fresh_water", "river") +must_be_interior = true +water_inlet_edges = 6 +water_outlet_edges = 6 +water_surface_polygon = PackedVector2Array(5, -4.619923, 5, 5, -4.619923, 5, -2.637323, 0.347029, 0.144384, 0.019586, 2.27822, -2.585355) diff --git a/world/generation/chunks/definitions/chunk_9996.tres b/world/generation/chunks/definitions/chunk_9996.tres new file mode 100644 index 0000000..5613d89 --- /dev/null +++ b/world/generation/chunks/definitions/chunk_9996.tres @@ -0,0 +1,29 @@ +[gd_resource type="Resource" script_class="TerrainChunkDefinition" load_steps=4 format=3] + +[ext_resource type="Script" path="res://world/generation/terrain_chunk_definition.gd" id="1_definition"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0015.glb" id="2_scene"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0008.glb" id="3_base_coast"] + +[resource] +script = ExtResource("1_definition") +stable_id = &"chunk_9996" +label = "second-tier beach sea transition left" +packed_scene = ExtResource("2_scene") +primary_mesh_name = &"chunk_0015" +base_layer_scene = ExtResource("3_base_coast") +base_layer_mesh_name = &"chunk_0008" +base_layer_quarter_turns = 1 +overlay_only = true +selection_weight = 0.12 +maximum_placements = 8 +tags = PackedStringArray("land", "walkable", "sand", "coast", "cliff", "corner", "transition", "elevation_2", "elevation_2_border", "elevation_2_sea_edge") +allowed_neighbor_tags = PackedStringArray("elevation_2") +north_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge", "elevation_2_border") +south_allowed_neighbor_tags = PackedStringArray("sand") +west_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge", "elevation_2_border") +required_neighbor_tags = PackedStringArray("elevation_2_border") +minimum_required_neighbors = 2 +preferred_neighbor_tags = PackedStringArray("elevation_2", "coast") +prefers_map_boundary = true +ocean_facing_edges = 2 +buried_cliff_seam_edges = 9 diff --git a/world/generation/chunks/definitions/chunk_9997.tres b/world/generation/chunks/definitions/chunk_9997.tres new file mode 100644 index 0000000..429db52 --- /dev/null +++ b/world/generation/chunks/definitions/chunk_9997.tres @@ -0,0 +1,29 @@ +[gd_resource type="Resource" script_class="TerrainChunkDefinition" load_steps=4 format=3] + +[ext_resource type="Script" path="res://world/generation/terrain_chunk_definition.gd" id="1_definition"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0015.glb" id="2_scene"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0008.glb" id="3_base_coast"] + +[resource] +script = ExtResource("1_definition") +stable_id = &"chunk_9997" +label = "second-tier beach sea transition right" +packed_scene = ExtResource("2_scene") +primary_mesh_name = &"chunk_0015" +base_layer_scene = ExtResource("3_base_coast") +base_layer_mesh_name = &"chunk_0008" +base_layer_quarter_turns = 3 +overlay_only = true +selection_weight = 0.12 +maximum_placements = 8 +tags = PackedStringArray("land", "walkable", "sand", "coast", "cliff", "corner", "transition", "elevation_2", "elevation_2_border", "elevation_2_sea_edge") +allowed_neighbor_tags = PackedStringArray("elevation_2") +north_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge", "elevation_2_border") +east_allowed_neighbor_tags = PackedStringArray("sand") +west_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge", "elevation_2_border") +required_neighbor_tags = PackedStringArray("elevation_2_border") +minimum_required_neighbors = 2 +preferred_neighbor_tags = PackedStringArray("elevation_2", "coast") +prefers_map_boundary = true +ocean_facing_edges = 4 +buried_cliff_seam_edges = 9 diff --git a/world/generation/chunks/definitions/chunk_9998.tres b/world/generation/chunks/definitions/chunk_9998.tres new file mode 100644 index 0000000..a2e1dbf --- /dev/null +++ b/world/generation/chunks/definitions/chunk_9998.tres @@ -0,0 +1,29 @@ +[gd_resource type="Resource" script_class="TerrainChunkDefinition" load_steps=4 format=3] + +[ext_resource type="Script" path="res://world/generation/terrain_chunk_definition.gd" id="1_definition"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0015.glb" id="2_scene"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0007.glb" id="3_base_coast"] + +[resource] +script = ExtResource("1_definition") +stable_id = &"chunk_9998" +label = "second-tier grass sea transition left" +packed_scene = ExtResource("2_scene") +primary_mesh_name = &"chunk_0015" +base_layer_scene = ExtResource("3_base_coast") +base_layer_mesh_name = &"chunk_0007" +base_layer_quarter_turns = 1 +overlay_only = true +selection_weight = 0.12 +maximum_placements = 8 +tags = PackedStringArray("land", "walkable", "grass", "coast", "cliff", "corner", "transition", "elevation_2", "elevation_2_border", "elevation_2_sea_edge") +allowed_neighbor_tags = PackedStringArray("elevation_2") +north_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge", "elevation_2_border") +south_allowed_neighbor_tags = PackedStringArray("grass") +west_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge", "elevation_2_border") +required_neighbor_tags = PackedStringArray("elevation_2_border") +minimum_required_neighbors = 2 +preferred_neighbor_tags = PackedStringArray("elevation_2", "coast") +prefers_map_boundary = true +ocean_facing_edges = 2 +buried_cliff_seam_edges = 9 diff --git a/world/generation/chunks/definitions/chunk_9999.tres b/world/generation/chunks/definitions/chunk_9999.tres new file mode 100644 index 0000000..8b4f99e --- /dev/null +++ b/world/generation/chunks/definitions/chunk_9999.tres @@ -0,0 +1,29 @@ +[gd_resource type="Resource" script_class="TerrainChunkDefinition" load_steps=4 format=3] + +[ext_resource type="Script" path="res://world/generation/terrain_chunk_definition.gd" id="1_definition"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0015.glb" id="2_scene"] +[ext_resource type="PackedScene" path="res://world/generation/chunks/assets/chunk_0007.glb" id="3_base_coast"] + +[resource] +script = ExtResource("1_definition") +stable_id = &"chunk_9999" +label = "second-tier grass sea transition right" +packed_scene = ExtResource("2_scene") +primary_mesh_name = &"chunk_0015" +base_layer_scene = ExtResource("3_base_coast") +base_layer_mesh_name = &"chunk_0007" +base_layer_quarter_turns = 3 +overlay_only = true +selection_weight = 0.12 +maximum_placements = 8 +tags = PackedStringArray("land", "walkable", "grass", "coast", "cliff", "corner", "transition", "elevation_2", "elevation_2_border", "elevation_2_sea_edge") +allowed_neighbor_tags = PackedStringArray("elevation_2") +north_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge", "elevation_2_border") +east_allowed_neighbor_tags = PackedStringArray("grass") +west_allowed_neighbor_tags = PackedStringArray("elevation_2_sea_edge", "elevation_2_border") +required_neighbor_tags = PackedStringArray("elevation_2_border") +minimum_required_neighbors = 2 +preferred_neighbor_tags = PackedStringArray("elevation_2", "coast") +prefers_map_boundary = true +ocean_facing_edges = 4 +buried_cliff_seam_edges = 9 diff --git a/world/generation/chunks/terrain_chunk_catalog.tres b/world/generation/chunks/terrain_chunk_catalog.tres index b27601a..51b17d3 100644 --- a/world/generation/chunks/terrain_chunk_catalog.tres +++ b/world/generation/chunks/terrain_chunk_catalog.tres @@ -1,4 +1,4 @@ -[gd_resource type="Resource" script_class="TerrainChunkCatalog" load_steps=25 format=3] +[gd_resource type="Resource" script_class="TerrainChunkCatalog" load_steps=42 format=3] [ext_resource type="Script" path="res://world/generation/terrain_chunk_catalog.gd" id="1_catalog"] [ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0000.tres" id="2_grass"] @@ -20,12 +20,29 @@ [ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0014.tres" id="18_cliff_sea_edge"] [ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0015.tres" id="19_cliff_sea_corner"] [ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0016.tres" id="20_stream_variant"] -[ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0017.tres" id="21_cliff_sea_transition_right"] -[ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0018.tres" id="22_cliff_sea_transition_left"] -[ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0019.tres" id="23_cliff_beach_transition_right"] -[ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0020.tres" id="24_cliff_beach_transition_left"] +[ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0017.tres" id="25_lake_edge"] +[ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0018.tres" id="26_lake_corner"] +[ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0019.tres" id="27_lake_fill"] +[ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0020.tres" id="28_lake_diagonal"] +[ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0021.tres" id="29_lake_narrow"] +[ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0022.tres" id="30_lake_regular_to_narrow"] +[ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0023.tres" id="31_lake_narrow_to_regular"] +[ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0024.tres" id="32_river_edge"] +[ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0025.tres" id="33_river_edge_variant"] +[ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_9995.tres" id="34_river_cap"] +[ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0026.tres" id="35_cliff_third_tier_edge"] +[ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0027.tres" id="36_cliff_third_tier_corner"] +[ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0028.tres" id="37_cliff_third_tier_top"] +[ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0029.tres" id="38_river_source_right"] +[ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0030.tres" id="39_river_source_left"] +[ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0031.tres" id="40_river_outlet_right"] +[ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_0032.tres" id="41_river_outlet_left"] +[ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_9999.tres" id="21_cliff_sea_transition_right"] +[ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_9998.tres" id="22_cliff_sea_transition_left"] +[ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_9997.tres" id="23_cliff_beach_transition_right"] +[ext_resource type="Resource" path="res://world/generation/chunks/definitions/chunk_9996.tres" id="24_cliff_beach_transition_left"] [resource] script = ExtResource("1_catalog") chunk_size = 10.0 -definitions = Array[ExtResource("7_definition_script")]([ExtResource("2_grass"), ExtResource("3_sand"), ExtResource("4_beach"), ExtResource("5_stream"), ExtResource("20_stream_variant"), ExtResource("6_pond"), ExtResource("9_grass_ocean_edge"), ExtResource("10_grass_beach_transition"), ExtResource("11_grass_ocean_corner"), ExtResource("12_beach_ocean_corner"), ExtResource("17_grass_sand_diagonal"), ExtResource("13_cliff_top"), ExtResource("14_cliff_corner"), ExtResource("15_cliff_edge"), ExtResource("16_cliff_ramp"), ExtResource("18_cliff_sea_edge"), ExtResource("19_cliff_sea_corner"), ExtResource("21_cliff_sea_transition_right"), ExtResource("22_cliff_sea_transition_left"), ExtResource("23_cliff_beach_transition_right"), ExtResource("24_cliff_beach_transition_left"), ExtResource("8_spawn")]) +definitions = Array[ExtResource("7_definition_script")]([ExtResource("2_grass"), ExtResource("3_sand"), ExtResource("4_beach"), ExtResource("5_stream"), ExtResource("20_stream_variant"), ExtResource("6_pond"), ExtResource("25_lake_edge"), ExtResource("26_lake_corner"), ExtResource("27_lake_fill"), ExtResource("28_lake_diagonal"), ExtResource("29_lake_narrow"), ExtResource("30_lake_regular_to_narrow"), ExtResource("31_lake_narrow_to_regular"), ExtResource("32_river_edge"), ExtResource("33_river_edge_variant"), ExtResource("38_river_source_right"), ExtResource("39_river_source_left"), ExtResource("40_river_outlet_right"), ExtResource("41_river_outlet_left"), ExtResource("34_river_cap"), ExtResource("9_grass_ocean_edge"), ExtResource("10_grass_beach_transition"), ExtResource("11_grass_ocean_corner"), ExtResource("12_beach_ocean_corner"), ExtResource("17_grass_sand_diagonal"), ExtResource("13_cliff_top"), ExtResource("14_cliff_corner"), ExtResource("15_cliff_edge"), ExtResource("16_cliff_ramp"), ExtResource("35_cliff_third_tier_edge"), ExtResource("36_cliff_third_tier_corner"), ExtResource("37_cliff_third_tier_top"), ExtResource("18_cliff_sea_edge"), ExtResource("19_cliff_sea_corner"), ExtResource("21_cliff_sea_transition_right"), ExtResource("22_cliff_sea_transition_left"), ExtResource("23_cliff_beach_transition_right"), ExtResource("24_cliff_beach_transition_left"), ExtResource("8_spawn")]) diff --git a/world/generation/terrain_chunk_catalog.gd b/world/generation/terrain_chunk_catalog.gd index 6271e04..40004db 100644 --- a/world/generation/terrain_chunk_catalog.gd +++ b/world/generation/terrain_chunk_catalog.gd @@ -69,10 +69,53 @@ func validation_errors() -> PackedStringArray: % definition.stable_id ) var has_fresh_water := "fresh_water" in definition.tags - var has_water_footprint := ( + var has_rectangular_water_footprint := ( definition.water_surface_size.x > 0.0 and definition.water_surface_size.y > 0.0 ) + var water_polygon_size := definition.water_surface_polygon.size() + var has_polygon_water_footprint := water_polygon_size >= 3 + var has_water_footprint := ( + has_rectangular_water_footprint + or has_polygon_water_footprint + ) + if ( + (definition.water_surface_size.x > 0.0) + != (definition.water_surface_size.y > 0.0) + ): + errors.append( + "%s has an incomplete rectangular water footprint." + % definition.stable_id + ) + if water_polygon_size in [1, 2]: + errors.append( + "%s water polygon must contain at least three points." + % definition.stable_id + ) + elif has_polygon_water_footprint: + if has_rectangular_water_footprint: + errors.append( + "%s defines both rectangular and polygonal water footprints." + % definition.stable_id + ) + if Geometry2D.triangulate_polygon( + definition.water_surface_polygon + ).is_empty(): + errors.append( + "%s water polygon cannot be triangulated." + % definition.stable_id + ) + var half_chunk := chunk_size * 0.5 + for point: Vector2 in definition.water_surface_polygon: + if ( + absf(point.x) > half_chunk + 0.001 + or absf(point.y) > half_chunk + 0.001 + ): + errors.append( + "%s water polygon exceeds its chunk bounds." + % definition.stable_id + ) + break if has_fresh_water and not has_water_footprint: errors.append( "%s is freshwater but has no water footprint." diff --git a/world/generation/terrain_chunk_definition.gd b/world/generation/terrain_chunk_definition.gd index ae8feaf..9f33e34 100644 --- a/world/generation/terrain_chunk_definition.gd +++ b/world/generation/terrain_chunk_definition.gd @@ -28,6 +28,11 @@ extends Resource @export_flags("0 degrees", "90 degrees", "180 degrees", "270 degrees") var allowed_rotation_mask := 15 @export_range(0.01, 100.0, 0.01) var selection_weight := 1.0 +## Optional extra authoring tolerance for softly shaped seams. Zero inherits +## the generator-wide profile tolerance; this must remain narrowly scoped so +## unrelated terrain profiles do not become interchangeable. +@export_range(0.0, 0.25, 0.001, "suffix:m") +var edge_profile_tolerance_override := 0.0 ## Negative values allow unlimited placements; zero disables random placement. @export_range(-1, 1024, 1) var maximum_placements := -1 @export var tags := PackedStringArray() @@ -91,6 +96,10 @@ var allowed_rotation_mask := 15 ## Zero means this chunk contributes no standalone water surface. @export var water_surface_size := Vector2.ZERO @export var water_surface_offset := Vector2.ZERO +## Optional exact water footprint for non-rectangular chunks. Three or more +## points override water_surface_size and are triangulated into collision +## volumes at runtime. Coordinates use the chunk's unrotated local X/Z plane. +@export var water_surface_polygon := PackedVector2Array() func allows_quarter_turn(quarter_turns: int) -> bool: diff --git a/world/generation/terrain_chunk_edge_profile.gd b/world/generation/terrain_chunk_edge_profile.gd index fc10266..4c2b56f 100644 --- a/world/generation/terrain_chunk_edge_profile.gd +++ b/world/generation/terrain_chunk_edge_profile.gd @@ -52,6 +52,22 @@ func _surfaces_match( ) -> bool: if first_surface.size() < 2 or second_surface.size() < 2: return false + # Matching authoring control points can shift slightly along a steep rounded + # bank while describing the same seam. Accept the pair directly when every + # corresponding point remains inside the requested two-axis tolerance. + if first_surface.size() == second_surface.size(): + var control_points_match := true + for index: int in first_surface.size(): + if ( + absf(first_surface[index].x - second_surface[index].x) + > tolerance + or absf(first_surface[index].y - second_surface[index].y) + > tolerance + ): + control_points_match = false + break + if control_points_match: + return true if ( absf(first_surface[0].x - second_surface[0].x) > tolerance or absf( From f2b96f2c1fe290c2e18280d83d619dcc53f6d659 Mon Sep 17 00:00:00 2001 From: Voyager Date: Sat, 22 Aug 2026 18:38:17 -0400 Subject: [PATCH 24/90] Generate complete freshwater and elevated terrain features --- tests/fishing_surface_validation.gd | 53 + tests/generated_world_runtime_validation.gd | 380 +++++- tests/terrain_chunk_generator_validation.gd | 461 ++++++- world/generation/generated_world_region.gd | 16 +- world/generation/generated_world_region.tscn | 11 +- world/generation/terrain_chunk_generator.gd | 1203 +++++++++++++++++- world/water_body_authoring.gd | 122 +- 7 files changed, 2105 insertions(+), 141 deletions(-) diff --git a/tests/fishing_surface_validation.gd b/tests/fishing_surface_validation.gd index 6e456fd..842b3e8 100644 --- a/tests/fishing_surface_validation.gd +++ b/tests/fishing_surface_validation.gd @@ -199,6 +199,59 @@ func _validate_portable_water_body() -> void: mesh_derived_body.queue_free() await process_frame + var polygon_body := WaterBodyScene.instantiate() as WaterBodyAuthoring + polygon_body.position = Vector3(30.0, 5.0, 20.0) + polygon_body.surface_polygon = PackedVector2Array([ + Vector2(-4.0, -4.0), + Vector2(4.0, -4.0), + Vector2(4.0, 4.0), + Vector2(0.0, 1.0), + Vector2(-4.0, 4.0), + ]) + polygon_body.visual_surface_enabled = false + polygon_body.fish_pool = PondPool + root.add_child(polygon_body) + await physics_frame + await physics_frame + + var polygon_fishing_region := polygon_body.get_node( + "FishingRegion" + ) as FishableWaterRegionType + var polygon_recovery_region := polygon_body.get_node( + "RecoveryRegion" + ) as Area3D + assert(polygon_fishing_region.get_child_count() == 3) + assert(polygon_recovery_region.get_child_count() == 3) + for child: Node in polygon_fishing_region.get_children(): + var polygon_shape_node := child as CollisionShape3D + assert(polygon_shape_node != null) + assert(polygon_shape_node.shape is ConvexPolygonShape3D) + + var polygon_resolver := FishingSurfaceResolverType.new() + var polygon_space_state := ( + polygon_body.get_world_3d().direct_space_state + ) + var polygon_inside: FishingSurfaceSampleType = ( + polygon_resolver.resolve_surface( + polygon_space_state, + Vector3(30.0, 0.0, 20.0), + 8.0, + ) + ) + assert(polygon_inside.is_fishable()) + assert(is_equal_approx(polygon_inside.position.y, 5.0)) + var polygon_notch: FishingSurfaceSampleType = ( + polygon_resolver.resolve_surface( + polygon_space_state, + Vector3(30.0, 0.0, 23.0), + 8.0, + ) + ) + assert(not polygon_notch.has_surface) + + polygon_body.queue_free() + await process_frame + func _validate_starter_region_surfaces() -> void: var region := StarterRegionScene.instantiate() as Node3D diff --git a/tests/generated_world_runtime_validation.gd b/tests/generated_world_runtime_validation.gd index 0f7a4dc..0d7d26f 100644 --- a/tests/generated_world_runtime_validation.gd +++ b/tests/generated_world_runtime_validation.gd @@ -14,6 +14,7 @@ const GeneratedRiverPool: FishPool = preload( ) const FIRST_SEED := 13001 const SECOND_SEED := 13002 +const RIVER_FALLBACK_SEED := 13012 const EXPECTED_PROP_IDS: Array[StringName] = [ &"prop_bridge", &"prop_dock", @@ -62,6 +63,9 @@ func _run() -> void: ) as TerrainChunkGenerator assert(configured_generator != null) configured_generator.elevated_cliff_third_level_chance = 1.0 + configured_generator.elevated_cliff_third_tier_base_chance = 0.0 + configured_generator.elevated_cliff_third_tier_stack_chance = 1.0 + configured_generator.elevated_cliff_double_third_tier_chance = 0.0 root.add_child(region) await process_frame await physics_frame @@ -74,13 +78,19 @@ func _run() -> void: _validate_generated_region(region, generator) var first_layout := generator.placement_keys() + var first_stacked_layout := generator.stacked_elevated_placement_keys() var first_biomes := _biome_signature(region, generator) var first_decorations := _decoration_signature(region) assert(region.generate_world(FIRST_SEED)) assert(generator.placement_keys() == first_layout) assert(_biome_signature(region, generator) == first_biomes) assert(_decoration_signature(region) == first_decorations) + generator._elevated_feature_center = Vector2i(-1, -1) + assert(generator.generate_from_placement_keys(first_layout)) + assert(generator.stacked_elevated_placement_keys() == first_stacked_layout) + configured_generator.elevated_cliff_third_tier_base_chance = 1.0 + configured_generator.elevated_cliff_third_tier_stack_chance = 0.0 assert(region.generate_world(SECOND_SEED)) await process_frame await physics_frame @@ -88,6 +98,17 @@ func _run() -> void: _validate_generated_region(region, generator) assert(generator.placement_keys() != first_layout) assert(_biome_signature(region, generator) != first_biomes) + var second_layout := generator.placement_keys() + + configured_generator.elevated_cliff_double_third_tier_chance = 1.0 + assert(region.generate_world(RIVER_FALLBACK_SEED)) + await process_frame + await physics_frame + await physics_frame + _validate_generated_region(region, generator) + assert(generator.placement_keys() != first_layout) + assert(generator.placement_keys() != second_layout) + assert(generator._river_feature_candidate_index >= 0) region.queue_free() await process_frame @@ -106,32 +127,192 @@ func _validate_generated_region( generator.grid_size.y / 2, ) var center_index := center.y * generator.grid_size.x + center.x + assert(generator.grid_size == Vector2i(20, 20)) + assert(generator._lake_feature_footprint_size.x >= 7) + assert( + generator._lake_feature_footprint_size.x + == generator._lake_feature_footprint_size.y + ) + assert(maxi( + generator._river_feature_footprint_size.x, + generator._river_feature_footprint_size.y, + ) >= 7) + assert(mini( + generator._river_feature_footprint_size.x, + generator._river_feature_footprint_size.y, + ) == 2) + assert(generator._river_feature_flow_direction in [ + Vector2i.RIGHT, + Vector2i.DOWN, + Vector2i.LEFT, + Vector2i.UP, + ]) + assert(generator.elevated_cliff_coastal_feature_required) assert(placements.size() == expected_chunk_count) assert(placements[center_index].begins_with("chunk_spawn@")) assert(_placement_count(placements, "chunk_spawn") == 1) assert(_placement_count(placements, "chunk_0001") >= 1) - assert(_placement_count(placements, "chunk_0003") >= 1) - assert(_placement_count(placements, "chunk_0004") >= 1) + var stream_count := ( + _placement_count(placements, "chunk_0003") + + _placement_count(placements, "chunk_0016") + ) + assert(stream_count >= 1 and stream_count <= 3) + assert(_placement_count(placements, "chunk_0004") == 2) var beach_count := _placement_count(placements, "chunk_0002") var grass_coast_count := _placement_count(placements, "chunk_0005") var grass_corner_count := _placement_count(placements, "chunk_0007") var beach_corner_count := _placement_count(placements, "chunk_0008") - assert(beach_count == 44 and grass_coast_count == 0) - assert(beach_corner_count == 3 and grass_corner_count == 0) - assert(_placement_count(placements, "chunk_0009") == 10) - assert(_placement_count(placements, "chunk_0010") == 5) + var has_secondary_elevation := ( + generator._secondary_elevated_feature_center.x >= 0 + ) + var has_third_tier_base := ( + _placement_count(placements, "chunk_0028") > 0 + ) + var coastline_edge_count := ( + 2 * (generator.grid_size.x - 2) + + 2 * (generator.grid_size.y - 2) + ) + assert( + beach_count + == coastline_edge_count - (4 if has_secondary_elevation else 0) - 2 + and grass_coast_count == 0 + ) + assert( + beach_corner_count == (3 if has_secondary_elevation else 4) + and grass_corner_count == 0 + ) + assert( + _placement_count(placements, "chunk_0009") + == ( + (1 if has_secondary_elevation else 0) + + (0 if has_third_tier_base else 9) + ) + ) + assert( + _placement_count(placements, "chunk_0010") + == ( + (1 if has_secondary_elevation else 0) + + (0 if has_third_tier_base else 4) + ) + ) assert( _placement_count(placements, "chunk_0011") + _placement_count(placements, "chunk_0012") - == 14 + == ( + (2 if has_secondary_elevation else 0) + + (0 if has_third_tier_base else 12) + ) + ) + assert( + _placement_count(placements, "chunk_0012") + == ( + (1 if has_secondary_elevation else 0) + + (0 if has_third_tier_base else 1) + ) + ) + assert( + _placement_count(placements, "chunk_0028") + == (9 if has_third_tier_base else 0) + ) + assert( + _placement_count(placements, "chunk_0027") + == (4 if has_third_tier_base else 0) + ) + assert( + _placement_count(placements, "chunk_0026") + == (10 if has_third_tier_base else 0) + ) + assert(_placement_count(placements, "chunk_0029") == 1) + assert(_placement_count(placements, "chunk_0030") == 1) + assert(_placement_count(placements, "chunk_0031") == 1) + assert(_placement_count(placements, "chunk_0032") == 1) + assert( + _placement_count(placements, "chunk_0014") + == (2 if has_secondary_elevation else 0) + ) + assert( + _placement_count(placements, "chunk_0015") + == (1 if has_secondary_elevation else 0) ) - assert(_placement_count(placements, "chunk_0012") == 2) - assert(_placement_count(placements, "chunk_0014") == 2) - assert(_placement_count(placements, "chunk_0015") == 1) - assert(_placement_count(placements, "chunk_0017") == 0) assert(_placement_count(placements, "chunk_0018") == 0) - assert(_placement_count(placements, "chunk_0019") == 1) - assert(_placement_count(placements, "chunk_0020") == 1) + assert(_placement_count(placements, "chunk_0020") == 4) + assert(_placement_count(placements, "chunk_0022") == 4) + assert(_placement_count(placements, "chunk_0023") == 4) + var lake_edge_count := _placement_count(placements, "chunk_0017") + var lake_fill_count := _placement_count(placements, "chunk_0019") + var lake_narrow_count := _placement_count(placements, "chunk_0021") + var lake_size := generator._lake_feature_footprint_size.x + assert(lake_size in [7, 8]) + assert(lake_fill_count == (lake_size - 2) * (lake_size - 2)) + assert(lake_edge_count == (lake_size - 6) * 4) + assert(lake_narrow_count == 8) + assert(_placement_count(placements, "chunk_9999") == 0) + assert(_placement_count(placements, "chunk_9998") == 0) + assert( + _placement_count(placements, "chunk_9997") + == (1 if has_secondary_elevation else 0) + ) + assert( + _placement_count(placements, "chunk_9996") + == (1 if has_secondary_elevation else 0) + ) + assert(_placement_count(placements, "chunk_9995") == 0) + var river_length := maxi( + generator._river_feature_footprint_size.x, + generator._river_feature_footprint_size.y, + ) + assert(river_length in [7, 8]) + assert(_placement_count(placements, "chunk_0024") == river_length - 2) + assert(_placement_count(placements, "chunk_0025") == river_length - 2) + var river_source_coordinates := generator._river_source_coordinates( + generator._river_feature_origin, + generator._river_feature_footprint_size, + generator._river_feature_flow_direction, + ) + assert(river_source_coordinates.size() == 2) + for source_coordinate: Vector2i in river_source_coordinates: + var source_index := ( + source_coordinate.y * generator.grid_size.x + source_coordinate.x + ) + assert( + placements[source_index].begins_with("chunk_0029@") + or placements[source_index].begins_with("chunk_0030@") + ) + var source_offset := source_coordinate - generator._elevated_feature_center + assert( + maxi(absi(source_offset.x), absi(source_offset.y)) + == TerrainChunkGenerator.ELEVATED_FEATURE_RADIUS + ) + var outlet_coordinates: Array[Vector2i] = [] + for index: int in placements.size(): + if ( + placements[index].begins_with("chunk_0031@") + or placements[index].begins_with("chunk_0032@") + ): + var outlet_coordinate := Vector2i( + index % generator.grid_size.x, + index / generator.grid_size.x, + ) + outlet_coordinates.append(outlet_coordinate) + assert( + not generator._coordinate_is_inside_grid( + outlet_coordinate + + generator._river_feature_flow_direction + ) + ) + assert(outlet_coordinates.size() == 2) + var outlet_delta := outlet_coordinates[1] - outlet_coordinates[0] + assert(absi(outlet_delta.x) + absi(outlet_delta.y) == 1) + for beach_coordinate: Vector2i in [ + outlet_coordinates[0] - outlet_delta, + outlet_coordinates[1] + outlet_delta, + ]: + assert(generator._coordinate_is_inside_grid(beach_coordinate)) + assert(generator._coordinate_is_on_boundary(beach_coordinate)) + var beach_index := ( + beach_coordinate.y * generator.grid_size.x + beach_coordinate.x + ) + assert(placements[beach_index].begins_with("chunk_0002@")) for index: int in placements.size(): var coordinate := Vector2i( index % generator.grid_size.x, @@ -159,8 +340,11 @@ func _validate_generated_region( var storage := region.get_node("Interactables/PlayerStorageBox") as Node3D assert(shop != null and shop.has_node("Shopkeeper")) assert(storage != null and storage.has_node("InteractionArea")) - assert(absf(shop.position.x) < 5.0 and absf(shop.position.z) < 5.0) - assert(absf(storage.position.x) < 5.0 and absf(storage.position.z) < 5.0) + var spawn_chunk_center := generator.chunk_position(center) + var shop_offset := shop.position - spawn_chunk_center + var storage_offset := storage.position - spawn_chunk_center + assert(absf(shop_offset.x) < 5.0 and absf(shop_offset.z) < 5.0) + assert(absf(storage_offset.x) < 5.0 and absf(storage_offset.z) < 5.0) assert(region.get_fishing_shop() != null) assert(region.get_player_storage() != null) assert(region.get_player_spawn_transform().origin.y > 0.0) @@ -173,30 +357,68 @@ func _validate_generated_region( assert(ocean.water_type == WaterType.Type.SALT_WATER) assert(is_equal_approx(ocean.position.y, GeneratedWorldRegion.WATER_HEIGHT)) var fresh_placement_count := 0 + var river_placement_count := 0 + var polygon_sizes_by_coordinate: Dictionary[Vector2i, int] = {} for record: Dictionary in generator.placement_records(): var tags: PackedStringArray = record.get("tags", PackedStringArray()) if "coast" in tags: _validate_ocean_facing_record(record, generator.grid_size) if "fresh_water" in tags: fresh_placement_count += 1 + if "river" in tags: + river_placement_count += 1 + assert(not "pond" in tags) + assert(not "lake" in tags) + var surface_polygon: PackedVector2Array = record.get( + "water_surface_polygon", + PackedVector2Array(), + ) + if surface_polygon.size() >= 3: + polygon_sizes_by_coordinate[ + record.get("coordinate", Vector2i.ZERO) + ] = surface_polygon.size() _validate_complete_coastline(generator) assert(fresh_root.get_child_count() == fresh_placement_count) + assert(river_placement_count == river_length * 2) + assert( + polygon_sizes_by_coordinate.size() + == 20 + river_placement_count + ) + var river_body_count := 0 for child: Node in fresh_root.get_children(): var fresh := child as WaterBodyAuthoring assert(fresh != null) assert(fresh.water_type == WaterType.Type.FRESH_WATER) assert(is_equal_approx(fresh.position.y, GeneratedWorldRegion.WATER_HEIGHT)) assert(fresh.visible) - assert(fresh.surface_size.x < 10.0 or fresh.surface_size.y < 10.0) + assert(fresh.surface_size.x <= 10.0 and fresh.surface_size.y <= 10.0) assert(not fresh.visual_surface_enabled) assert(not (fresh.get_node("VisualWater") as MeshInstance3D).visible) + var coordinate_tokens := child.name.trim_prefix("FreshWater_").split("_") + assert(coordinate_tokens.size() == 2) + var coordinate := Vector2i( + int(coordinate_tokens[0]), + int(coordinate_tokens[1]), + ) + if polygon_sizes_by_coordinate.has(coordinate): + assert( + fresh.surface_polygon.size() + == polygon_sizes_by_coordinate[coordinate] + ) + assert( + fresh.get_node("FishingRegion").get_child_count() > 1 + ) + else: + assert(fresh.surface_polygon.is_empty()) if &"river" in fresh.location_tags: + river_body_count += 1 assert(fresh.fish_pool == GeneratedRiverPool) elif &"lake" in fresh.location_tags: assert(fresh.fish_pool == GeneratedLakePool) else: assert(&"pond" in fresh.location_tags) assert(fresh.fish_pool == GeneratedPondPool) + assert(river_body_count == river_placement_count) _validate_authored_chunk_surfaces(region, generator) @@ -351,10 +573,10 @@ func _validate_elevated_cliff_feature( var coastal_ids: Array[StringName] = [ &"chunk_0014", &"chunk_0015", - &"chunk_0017", - &"chunk_0018", - &"chunk_0019", - &"chunk_0020", + &"chunk_9999", + &"chunk_9998", + &"chunk_9997", + &"chunk_9996", ] var has_coastal_feature := false for record: Dictionary in generator.placement_records(): @@ -364,12 +586,17 @@ func _validate_elevated_cliff_feature( &"chunk_0010", &"chunk_0011", &"chunk_0012", + &"chunk_0026", + &"chunk_0027", + &"chunk_0028", + &"chunk_0029", + &"chunk_0030", &"chunk_0014", &"chunk_0015", - &"chunk_0017", - &"chunk_0018", - &"chunk_0019", - &"chunk_0020", + &"chunk_9999", + &"chunk_9998", + &"chunk_9997", + &"chunk_9996", ]: continue var coordinate: Vector2i = record.get("coordinate", Vector2i.ZERO) @@ -383,14 +610,32 @@ func _validate_elevated_cliff_feature( assert(coordinate.x > 0 and coordinate.x < generator.grid_size.x - 1) assert(coordinate.y > 0 and coordinate.y < generator.grid_size.y - 1) elevated_coordinates[coordinate] = stable_id - if stable_id == &"chunk_0009": + if stable_id in [&"chunk_0009", &"chunk_0028"]: top_coordinates.append(coordinate) elif stable_id == &"chunk_0012": ramp_records.append(record) assert(elevated_coordinates.size() == (34 if has_coastal_feature else 25)) - assert(top_coordinates.size() == (10 if has_coastal_feature else 9)) - assert(ramp_records.size() == (2 if has_coastal_feature else 1)) - var feature_center := Vector2i(-1, -1) + var feature_center := generator._elevated_feature_center + assert(feature_center != Vector2i(-1, -1)) + var center_index := feature_center.y * generator.grid_size.x + feature_center.x + assert(center_index >= 0 and center_index < generator.placement_keys().size()) + var primary_top_id := StringName( + generator.placement_keys()[center_index].get_slice("@", 0) + ) + assert(primary_top_id in [&"chunk_0009", &"chunk_0028"]) + var primary_is_third_tier := primary_top_id == &"chunk_0028" + assert( + top_coordinates.size() + == (9 + (1 if has_coastal_feature else 0)) + ) + assert( + ramp_records.size() + == ( + (0 if primary_is_third_tier else 1) + + (1 if has_coastal_feature else 0) + ) + ) + var detected_feature_center := Vector2i(-1, -1) for candidate: Vector2i in top_coordinates: var neighboring_top_count := 0 for row_offset: int in range(-1, 2): @@ -399,12 +644,12 @@ func _validate_elevated_cliff_feature( elevated_coordinates.get( candidate + Vector2i(column_offset, row_offset), &"", - ) == &"chunk_0009" + ) == primary_top_id ) if neighboring_top_count == 9: - feature_center = candidate + detected_feature_center = candidate break - assert(feature_center != Vector2i(-1, -1)) + assert(detected_feature_center == feature_center) for row_offset: int in range(-2, 3): for column_offset: int in range(-2, 3): assert( @@ -413,14 +658,7 @@ func _validate_elevated_cliff_feature( ) ) if has_coastal_feature: - var secondary_top := Vector2i(-1, -1) - for coordinate: Vector2i in top_coordinates: - if ( - absi(coordinate.x - feature_center.x) > 1 - or absi(coordinate.y - feature_center.y) > 1 - ): - secondary_top = coordinate - break + var secondary_top := generator._secondary_elevated_feature_center assert(secondary_top != Vector2i(-1, -1)) for row_offset: int in range(-1, 2): for column_offset: int in range(-1, 2): @@ -429,7 +667,7 @@ func _validate_elevated_cliff_feature( secondary_top + Vector2i(column_offset, row_offset) ) ) - var found_deep_top_landing := false + var found_primary_ramp := false for ramp_record: Dictionary in ramp_records: var ramp_coordinate: Vector2i = ramp_record.get( "coordinate", Vector2i(-1, -1) @@ -444,8 +682,8 @@ func _validate_elevated_cliff_feature( elevated_coordinates.get(ramp_coordinate + high_offset, &"") == &"chunk_0009" ) - found_deep_top_landing = ( - found_deep_top_landing + found_primary_ramp = ( + found_primary_ramp or elevated_coordinates.get( ramp_coordinate + high_offset * 2, &"", @@ -459,7 +697,7 @@ func _validate_elevated_cliff_feature( generator.placement_keys()[low_index].begins_with("chunk_0000@") or generator.placement_keys()[low_index].begins_with("chunk_spawn@") ) - assert(found_deep_top_landing) + assert(found_primary_ramp == not primary_is_third_tier) var generated := generator.get_generated_chunks_root() assert(generated != null) @@ -473,25 +711,39 @@ func _validate_elevated_cliff_feature( &"chunk_0010", &"chunk_0011", &"chunk_0012", + &"chunk_0026", + &"chunk_0027", + &"chunk_0028", + &"chunk_0029", + &"chunk_0030", &"chunk_0014", &"chunk_0015", - &"chunk_0017", - &"chunk_0018", - &"chunk_0019", - &"chunk_0020", + &"chunk_9999", + &"chunk_9998", + &"chunk_9997", + &"chunk_9996", ]: continue if stable_id in [&"chunk_0014", &"chunk_0015"]: assert(chunk_root.get_node_or_null("TerrainBaseLayer") == null) continue + if stable_id in [&"chunk_0029", &"chunk_0030"]: + assert(chunk_root.get_node_or_null("TerrainBaseLayer") == null) + var source_mesh := TerrainChunkAnalyzer.find_primary_mesh( + chunk_root, + stable_id, + ) + assert(source_mesh != null and source_mesh.mesh != null) + assert(source_mesh.has_node("TerrainCollision")) + continue layered_count += 1 var base_layer := chunk_root.get_node_or_null("TerrainBaseLayer") var overlay := chunk_root.get_node_or_null("TerrainOverlay") assert(base_layer != null and overlay != null) var transition_base_mesh := &"chunk_0000" - if stable_id in [&"chunk_0017", &"chunk_0018"]: + if stable_id in [&"chunk_9999", &"chunk_9998"]: transition_base_mesh = &"chunk_0007" - elif stable_id in [&"chunk_0019", &"chunk_0020"]: + elif stable_id in [&"chunk_9997", &"chunk_9996"]: transition_base_mesh = &"chunk_0008" var base_mesh := TerrainChunkAnalyzer.find_primary_mesh( base_layer, @@ -502,10 +754,10 @@ func _validate_elevated_cliff_feature( ( &"chunk_0015" if stable_id in [ - &"chunk_0017", - &"chunk_0018", - &"chunk_0019", - &"chunk_0020", + &"chunk_9999", + &"chunk_9998", + &"chunk_9997", + &"chunk_9996", ] else stable_id ), @@ -514,32 +766,40 @@ func _validate_elevated_cliff_feature( assert(overlay_mesh != null and overlay_mesh.mesh != null) assert(base_mesh.has_node("TerrainBaseLayerCollision")) assert(overlay_mesh.has_node("TerrainCollision")) - assert(layered_count == (31 if has_coastal_feature else 25)) + assert(layered_count == (29 if has_coastal_feature else 23)) var stacked_keys := generator.stacked_elevated_placement_keys() assert(stacked_keys.size() in [0, 4]) if stacked_keys.is_empty(): return for key: String in stacked_keys: - assert(key.begins_with("chunk_0010@")) + assert( + key.begins_with("chunk_0010@") + or key.begins_with("chunk_0027@") + ) var stacked_count := 0 for chunk_root: Node in generated.get_children(): for child: Node in chunk_root.get_children(): if not bool(child.get_meta(&"terrain_stacked_elevation", false)): continue stacked_count += 1 - assert( - StringName(child.get_meta(&"terrain_chunk_id", &"")) - == &"chunk_0010" + var stacked_id := StringName( + child.get_meta(&"terrain_chunk_id", &"") + ) + assert(stacked_id in [&"chunk_0010", &"chunk_0027"]) + var expected_height := ( + generator.elevated_cliff_level_height * 2.0 + if primary_is_third_tier + else generator.elevated_cliff_level_height ) assert( is_equal_approx( (child as Node3D).position.y, - generator.elevated_cliff_level_height, + expected_height, ) ) var stacked_mesh := TerrainChunkAnalyzer.find_primary_mesh( child, - &"chunk_0010", + stacked_id, ) assert(stacked_mesh != null and stacked_mesh.mesh != null) assert(stacked_mesh.has_node("TerrainCollision")) diff --git a/tests/terrain_chunk_generator_validation.gd b/tests/terrain_chunk_generator_validation.gd index 591467b..e8bf158 100644 --- a/tests/terrain_chunk_generator_validation.gd +++ b/tests/terrain_chunk_generator_validation.gd @@ -25,6 +25,23 @@ const EXPECTED_IDS: Array[String] = [ "chunk_0018", "chunk_0019", "chunk_0020", + "chunk_0021", + "chunk_0022", + "chunk_0023", + "chunk_0024", + "chunk_0025", + "chunk_0026", + "chunk_0027", + "chunk_0028", + "chunk_0029", + "chunk_0030", + "chunk_0031", + "chunk_0032", + "chunk_9999", + "chunk_9998", + "chunk_9997", + "chunk_9996", + "chunk_9995", "chunk_spawn", ] const REQUIRED_IDS: Array[String] = [ @@ -57,8 +74,25 @@ const EXPECTED_VARIANT_COUNTS: Dictionary[StringName, int] = { &"chunk_0016": 4, &"chunk_0017": 4, &"chunk_0018": 4, - &"chunk_0019": 4, + &"chunk_0019": 1, &"chunk_0020": 4, + &"chunk_0021": 4, + &"chunk_0022": 4, + &"chunk_0023": 4, + &"chunk_0024": 4, + &"chunk_0025": 4, + &"chunk_0026": 4, + &"chunk_0027": 4, + &"chunk_0028": 4, + &"chunk_0029": 4, + &"chunk_0030": 4, + &"chunk_0031": 4, + &"chunk_0032": 4, + &"chunk_9999": 4, + &"chunk_9998": 4, + &"chunk_9997": 4, + &"chunk_9996": 4, + &"chunk_9995": 4, &"chunk_spawn": 1, } @@ -104,15 +138,32 @@ func _validate_catalog() -> void: var pond := CATALOG.definition_for_id(&"chunk_0004") var cliff_sea_edge := CATALOG.definition_for_id(&"chunk_0014") var cliff_sea_corner := CATALOG.definition_for_id(&"chunk_0015") - var cliff_sea_transition_right := CATALOG.definition_for_id(&"chunk_0017") - var cliff_sea_transition_left := CATALOG.definition_for_id(&"chunk_0018") - var cliff_beach_transition_right := CATALOG.definition_for_id(&"chunk_0019") - var cliff_beach_transition_left := CATALOG.definition_for_id(&"chunk_0020") + var cliff_sea_transition_right := CATALOG.definition_for_id(&"chunk_9999") + var cliff_sea_transition_left := CATALOG.definition_for_id(&"chunk_9998") + var cliff_beach_transition_right := CATALOG.definition_for_id(&"chunk_9997") + var cliff_beach_transition_left := CATALOG.definition_for_id(&"chunk_9996") var stream_variant := CATALOG.definition_for_id(&"chunk_0016") + var lake_edge := CATALOG.definition_for_id(&"chunk_0017") + var lake_corner := CATALOG.definition_for_id(&"chunk_0018") + var lake_fill := CATALOG.definition_for_id(&"chunk_0019") + var lake_diagonal := CATALOG.definition_for_id(&"chunk_0020") + var lake_narrow := CATALOG.definition_for_id(&"chunk_0021") + var lake_regular_to_narrow := CATALOG.definition_for_id(&"chunk_0022") + var lake_narrow_to_regular := CATALOG.definition_for_id(&"chunk_0023") + var river_edge := CATALOG.definition_for_id(&"chunk_0024") + var river_edge_variant := CATALOG.definition_for_id(&"chunk_0025") + var river_source_right := CATALOG.definition_for_id(&"chunk_0029") + var river_source_left := CATALOG.definition_for_id(&"chunk_0030") + var river_outlet_right := CATALOG.definition_for_id(&"chunk_0031") + var river_outlet_left := CATALOG.definition_for_id(&"chunk_0032") + var river_cap := CATALOG.definition_for_id(&"chunk_9995") var cliff_top := CATALOG.definition_for_id(&"chunk_0009") var cliff_corner := CATALOG.definition_for_id(&"chunk_0010") var cliff_edge := CATALOG.definition_for_id(&"chunk_0011") var cliff_ramp := CATALOG.definition_for_id(&"chunk_0012") + var cliff_third_tier_edge := CATALOG.definition_for_id(&"chunk_0026") + var cliff_third_tier_corner := CATALOG.definition_for_id(&"chunk_0027") + var cliff_third_tier_top := CATALOG.definition_for_id(&"chunk_0028") var spawn := CATALOG.definition_for_id(&"chunk_spawn") _check( ( @@ -132,10 +183,27 @@ func _validate_catalog() -> void: and cliff_beach_transition_right != null and cliff_beach_transition_left != null and stream_variant != null + and lake_edge != null + and lake_corner != null + and lake_fill != null + and lake_diagonal != null + and lake_narrow != null + and lake_regular_to_narrow != null + and lake_narrow_to_regular != null + and river_edge != null + and river_edge_variant != null + and river_source_right != null + and river_source_left != null + and river_outlet_right != null + and river_outlet_left != null + and river_cap != null and cliff_top != null and cliff_corner != null and cliff_edge != null and cliff_ramp != null + and cliff_third_tier_edge != null + and cliff_third_tier_corner != null + and cliff_third_tier_top != null and spawn != null ), "The authored biome-rule definitions must be available.", @@ -157,10 +225,27 @@ func _validate_catalog() -> void: and cliff_beach_transition_right != null and cliff_beach_transition_left != null and stream_variant != null + and lake_edge != null + and lake_corner != null + and lake_fill != null + and lake_diagonal != null + and lake_narrow != null + and lake_regular_to_narrow != null + and lake_narrow_to_regular != null + and river_edge != null + and river_edge_variant != null + and river_source_right != null + and river_source_left != null + and river_outlet_right != null + and river_outlet_left != null + and river_cap != null and cliff_top != null and cliff_corner != null and cliff_edge != null and cliff_ramp != null + and cliff_third_tier_edge != null + and cliff_third_tier_corner != null + and cliff_third_tier_top != null and spawn != null ): _check( @@ -314,10 +399,18 @@ func _validate_catalog() -> void: == (1 << int(TerrainChunkTopology.Edge.NORTH)), "A pond must terminate either end of an inland freshwater chain.", ) + _check( + pond.maximum_placements == 2, + "Generated worlds must contain only one pond/stream chain.", + ) _check( stream != null and is_equal_approx(stream.selection_weight, 0.3) and is_equal_approx(stream_variant.selection_weight, 0.3) + and stream.maximum_placements == 2 + and stream_variant.maximum_placements == 1 + and "pond" in stream.tags + and "river" not in stream.tags and stream_variant.tags == stream.tags and stream_variant.allowed_neighbor_tags == stream.allowed_neighbor_tags @@ -331,10 +424,98 @@ func _validate_catalog() -> void: stream.water_surface_offset.y, ), ( - "Both stream visuals must share one combined selection weight " + "Both pond-stream visuals must share one combined selection weight " + "and mirrored water footprints." ), ) + _check( + ( + not lake_edge.participates_in_base_solver + and not lake_corner.participates_in_base_solver + and not lake_fill.participates_in_base_solver + and not lake_diagonal.participates_in_base_solver + and not lake_narrow.participates_in_base_solver + and not lake_regular_to_narrow.participates_in_base_solver + and not lake_narrow_to_regular.participates_in_base_solver + and lake_edge.water_inlet_edges == lake_edge.water_outlet_edges + and lake_edge.water_inlet_edges == 7 + and lake_corner.water_inlet_edges + == lake_corner.water_outlet_edges + and lake_corner.water_inlet_edges == 6 + and lake_fill.water_inlet_edges + == lake_fill.water_outlet_edges + and lake_fill.water_inlet_edges == 15 + and lake_fill.water_surface_size == Vector2(10.0, 10.0) + and lake_diagonal.water_inlet_edges + == lake_diagonal.water_outlet_edges + and lake_diagonal.water_inlet_edges == 6 + and lake_diagonal.maximum_placements == 4 + and lake_diagonal.water_surface_polygon.size() == 6 + and lake_narrow.water_inlet_edges == 14 + and lake_narrow.water_outlet_edges == 14 + and lake_narrow.water_surface_polygon.size() == 4 + and lake_regular_to_narrow.water_inlet_edges == 14 + and lake_regular_to_narrow.water_outlet_edges == 14 + and lake_regular_to_narrow.water_surface_polygon.size() == 5 + and lake_narrow_to_regular.water_inlet_edges == 14 + and lake_narrow_to_regular.water_outlet_edges == 14 + and lake_narrow_to_regular.water_surface_polygon.size() == 5 + and "lake" in lake_edge.tags + and "lake" in lake_corner.tags + and "lake" in lake_fill.tags + and "lake" in lake_diagonal.tags + and "lake" in lake_narrow.tags + and "lake" in lake_regular_to_narrow.tags + and "lake" in lake_narrow_to_regular.tags + ), + "The deterministic lake ring and bottom must remain connected freshwater chunks.", + ) + _check( + ( + not river_edge.participates_in_base_solver + and not river_edge_variant.participates_in_base_solver + and not river_source_right.participates_in_base_solver + and not river_source_left.participates_in_base_solver + and not river_outlet_right.participates_in_base_solver + and not river_outlet_left.participates_in_base_solver + and not river_cap.participates_in_base_solver + and river_edge.water_inlet_edges == 14 + and river_edge.water_outlet_edges == 14 + and river_edge_variant.water_inlet_edges == 14 + and river_edge_variant.water_outlet_edges == 14 + and river_source_right.water_inlet_edges == 6 + and river_source_right.water_outlet_edges == 6 + and river_source_left.water_inlet_edges == 3 + and river_source_left.water_outlet_edges == 3 + and river_outlet_right.water_inlet_edges == 14 + and river_outlet_right.water_outlet_edges == 14 + and river_outlet_left.water_inlet_edges == 11 + and river_outlet_left.water_outlet_edges == 11 + and river_cap.water_inlet_edges == 6 + and river_cap.water_outlet_edges == 6 + and river_edge.water_surface_polygon.size() == 13 + and river_edge_variant.water_surface_polygon.size() == 13 + and river_source_right.water_surface_polygon.size() == 13 + and river_source_left.water_surface_polygon.size() == 13 + and river_outlet_right.water_surface_polygon.size() == 19 + and river_outlet_left.water_surface_polygon.size() == 19 + and river_outlet_right.ocean_facing_edges == 2 + and river_outlet_left.ocean_facing_edges == 2 + and river_cap.water_surface_polygon.size() == 6 + and river_cap.primary_mesh_name == &"chunk_0020" + and "river" in river_edge.tags + and "river" in river_edge_variant.tags + and "river_source_right" in river_source_right.tags + and "river_source_left" in river_source_left.tags + and "river_outlet_right" in river_outlet_right.tags + and "river_outlet_left" in river_outlet_left.tags + and "river" in river_cap.tags + ), + ( + "The river banks, cliff source, ocean outlet, and legacy caps " + + "must remain connected freshwater chunks." + ), + ) for cliff_definition: TerrainChunkDefinition in [ cliff_top, cliff_corner, @@ -348,6 +529,19 @@ func _validate_catalog() -> void: and cliff_definition.base_layer_mesh_name == &"chunk_0000", "Every second-tier piece must overlay level-one grass inland.", ) + for cliff_definition: TerrainChunkDefinition in [ + cliff_third_tier_top, + cliff_third_tier_corner, + cliff_third_tier_edge, + ]: + _check( + cliff_definition.overlay_only + and cliff_definition.must_be_interior + and cliff_definition.base_layer_scene != null + and cliff_definition.base_layer_mesh_name == &"chunk_0000" + and "elevation_3" in cliff_definition.tags, + "Every third-tier piece must overlay level-one grass inland.", + ) for coastal_cliff: TerrainChunkDefinition in [ cliff_sea_edge, cliff_sea_corner, @@ -449,6 +643,13 @@ func _validate_catalog() -> void: and cliff_ramp.maximum_placements > 0, "The second-tier ramp must remain available without being required.", ) + _check( + cliff_third_tier_top.minimum_required_neighbors == 4 + and "elevation_3" in cliff_third_tier_top.required_neighbor_tags + and "ramp" not in cliff_third_tier_edge.tags + and "ramp" not in cliff_third_tier_corner.tags, + "The third-tier set must form a closed, intentionally unramped plateau.", + ) func _validate_profiles() -> void: @@ -1099,6 +1300,242 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: ), "No rotated diagonal edge may accept the opposite surface.", ) + var lake_diagonal_northwest := _find_variant(generator, &"chunk_0020", 0) + var lake_diagonal_northeast := _find_variant(generator, &"chunk_0020", 3) + var lake_narrow_top := _find_variant(generator, &"chunk_0021", 0) + var lake_narrow_left := _find_variant(generator, &"chunk_0021", 1) + var lake_regular_to_narrow := _find_variant(generator, &"chunk_0022", 0) + var lake_narrow_to_regular := _find_variant(generator, &"chunk_0023", 0) + var lake_regular_top := _find_variant(generator, &"chunk_0017", 3) + _check( + ( + lake_diagonal_northwest != null + and lake_diagonal_northeast != null + and lake_narrow_top != null + and lake_narrow_left != null + and lake_regular_to_narrow != null + and lake_narrow_to_regular != null + and lake_regular_top != null + ), + "Every authored diagonal lake perimeter variant must be available.", + ) + if ( + lake_diagonal_northwest != null + and lake_diagonal_northeast != null + and lake_narrow_top != null + and lake_narrow_left != null + and lake_regular_to_narrow != null + and lake_narrow_to_regular != null + and lake_regular_top != null + ): + _check( + generator._edges_are_compatible( + lake_diagonal_northwest, + TerrainChunkTopology.Edge.EAST, + lake_narrow_top, + TerrainChunkTopology.Edge.WEST, + ) + and generator._edges_are_compatible( + lake_diagonal_northwest, + TerrainChunkTopology.Edge.SOUTH, + lake_narrow_left, + TerrainChunkTopology.Edge.NORTH, + ), + "Both diagonal banks must join the exact narrow lake profile.", + ) + _check( + generator._edges_are_compatible( + lake_narrow_top, + TerrainChunkTopology.Edge.EAST, + lake_narrow_to_regular, + TerrainChunkTopology.Edge.WEST, + ) + and generator._edges_are_compatible( + lake_narrow_to_regular, + TerrainChunkTopology.Edge.EAST, + lake_regular_top, + TerrainChunkTopology.Edge.WEST, + ) + and generator._edges_are_compatible( + lake_regular_top, + TerrainChunkTopology.Edge.EAST, + lake_regular_to_narrow, + TerrainChunkTopology.Edge.WEST, + ) + and generator._edges_are_compatible( + lake_regular_to_narrow, + TerrainChunkTopology.Edge.EAST, + lake_narrow_top, + TerrainChunkTopology.Edge.WEST, + ), + "The narrow lake run must transition exactly into the regular edge.", + ) + _check( + generator._edges_are_compatible( + lake_diagonal_northwest, + TerrainChunkTopology.Edge.EAST, + lake_narrow_to_regular, + TerrainChunkTopology.Edge.WEST, + ) + and generator._edges_are_compatible( + lake_narrow_to_regular, + TerrainChunkTopology.Edge.EAST, + lake_regular_to_narrow, + TerrainChunkTopology.Edge.WEST, + ) + and generator._edges_are_compatible( + lake_regular_to_narrow, + TerrainChunkTopology.Edge.EAST, + lake_diagonal_northeast, + TerrainChunkTopology.Edge.WEST, + ), + "The five-chunk lake side must remain valid without a narrow run.", + ) + var river_cap_northwest := _find_variant(generator, &"chunk_9995", 0) + var river_cap_northeast := _find_variant(generator, &"chunk_9995", 3) + var river_cap_southwest := _find_variant(generator, &"chunk_9995", 1) + var river_cap_southeast := _find_variant(generator, &"chunk_9995", 2) + var river_edge_top := _find_variant(generator, &"chunk_0024", 0) + var river_edge_variant_top := _find_variant(generator, &"chunk_0025", 0) + var river_edge_variant_bottom := _find_variant(generator, &"chunk_0025", 2) + var river_source_right := _find_variant(generator, &"chunk_0029", 0) + var river_source_left := _find_variant(generator, &"chunk_0030", 0) + var river_outlet_right := _find_variant(generator, &"chunk_0031", 0) + var river_outlet_left := _find_variant(generator, &"chunk_0032", 0) + var beach_east := _find_variant(generator, &"chunk_0002", 0) + _check( + ( + river_cap_northwest != null + and river_cap_northeast != null + and river_cap_southwest != null + and river_cap_southeast != null + and river_edge_top != null + and river_edge_variant_top != null + and river_edge_variant_bottom != null + and river_source_right != null + and river_source_left != null + and river_outlet_right != null + and river_outlet_left != null + and beach_east != null + ), + ( + "Every authored river-bank, source, outlet, and legacy-cap variant " + + "must be available." + ), + ) + if ( + river_cap_northwest != null + and river_cap_northeast != null + and river_cap_southwest != null + and river_cap_southeast != null + and river_edge_top != null + and river_edge_variant_top != null + and river_edge_variant_bottom != null + and river_source_right != null + and river_source_left != null + and river_outlet_right != null + and river_outlet_left != null + and beach_east != null + ): + _check( + generator._edges_are_compatible( + river_source_right, + TerrainChunkTopology.Edge.SOUTH, + river_source_left, + TerrainChunkTopology.Edge.NORTH, + ) + and generator._edges_are_compatible( + river_source_right, + TerrainChunkTopology.Edge.EAST, + river_edge_top, + TerrainChunkTopology.Edge.WEST, + ) + and generator._edges_are_compatible( + river_source_left, + TerrainChunkTopology.Edge.EAST, + river_edge_variant_bottom, + TerrainChunkTopology.Edge.WEST, + ), + "The paired cliff source must open directly into both river banks.", + ) + _check( + generator._edges_are_compatible( + river_edge_top, + TerrainChunkTopology.Edge.EAST, + river_outlet_right, + TerrainChunkTopology.Edge.WEST, + ) + and generator._edges_are_compatible( + river_edge_variant_bottom, + TerrainChunkTopology.Edge.EAST, + river_outlet_left, + TerrainChunkTopology.Edge.WEST, + ) + and generator._edges_are_compatible( + river_outlet_right, + TerrainChunkTopology.Edge.SOUTH, + river_outlet_left, + TerrainChunkTopology.Edge.NORTH, + ), + "Both river banks must terminate in the paired beach outlet.", + ) + _check( + generator._edges_are_compatible( + beach_east, + TerrainChunkTopology.Edge.SOUTH, + river_outlet_right, + TerrainChunkTopology.Edge.NORTH, + ) + and generator._edges_are_compatible( + river_outlet_left, + TerrainChunkTopology.Edge.SOUTH, + beach_east, + TerrainChunkTopology.Edge.NORTH, + ), + "The ocean outlet must remain straddled by ordinary beach tiles.", + ) + _check( + generator._edges_are_compatible( + river_cap_northwest, + TerrainChunkTopology.Edge.EAST, + river_edge_top, + TerrainChunkTopology.Edge.WEST, + ) + and generator._edges_are_compatible( + river_edge_top, + TerrainChunkTopology.Edge.EAST, + river_edge_variant_top, + TerrainChunkTopology.Edge.WEST, + ) + and generator._edges_are_compatible( + river_edge_variant_top, + TerrainChunkTopology.Edge.EAST, + river_cap_northeast, + TerrainChunkTopology.Edge.WEST, + ), + "Both river-bank visuals must chain exactly between composite caps.", + ) + _check( + generator._edges_are_compatible( + river_cap_northwest, + TerrainChunkTopology.Edge.SOUTH, + river_cap_southwest, + TerrainChunkTopology.Edge.NORTH, + ) + and generator._edges_are_compatible( + river_edge_top, + TerrainChunkTopology.Edge.SOUTH, + river_edge_variant_bottom, + TerrainChunkTopology.Edge.NORTH, + ) + and generator._edges_are_compatible( + river_cap_northeast, + TerrainChunkTopology.Edge.SOUTH, + river_cap_southeast, + TerrainChunkTopology.Edge.NORTH, + ), + "Opposing river banks and end caps must close the water channel.", + ) for stable_id: StringName in [ &"chunk_0005", &"chunk_0006", @@ -1106,10 +1543,10 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: &"chunk_0008", &"chunk_0014", &"chunk_0015", - &"chunk_0017", - &"chunk_0018", - &"chunk_0019", - &"chunk_0020", + &"chunk_9999", + &"chunk_9998", + &"chunk_9997", + &"chunk_9996", ]: for quarter_turns: int in 4: var coast_variant := _find_variant( @@ -1161,8 +1598,8 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: func _validate_generation_summary(generator: TerrainChunkGenerator) -> void: var summary := generator._build_summary() _check( - int(summary.get("variant_count", 0)) == 85, - "The current catalog must expose all 85 authored rotations.", + int(summary.get("variant_count", 0)) == 150, + "The current catalog must expose all 150 authored rotations.", ) _check( int(summary.get("solver_variant_count", 0)) diff --git a/world/generation/generated_world_region.gd b/world/generation/generated_world_region.gd index 6a4dcd4..c226610 100644 --- a/world/generation/generated_world_region.gd +++ b/world/generation/generated_world_region.gd @@ -356,7 +356,14 @@ func _configure_fresh_water(records: Array[Dictionary]) -> void: var surface_size: Vector2 = record.get( "water_surface_size", Vector2.ZERO ) - if surface_size.x <= 0.0 or surface_size.y <= 0.0: + var surface_polygon: PackedVector2Array = record.get( + "water_surface_polygon", + PackedVector2Array(), + ) + if ( + (surface_size.x <= 0.0 or surface_size.y <= 0.0) + and surface_polygon.size() < 3 + ): continue var body := WATER_BODY_SCENE.instantiate() as WaterBodyAuthoring if body == null: @@ -379,7 +386,10 @@ func _configure_fresh_water(records: Array[Dictionary]) -> void: + Vector3.UP * WATER_HEIGHT ) body.rotation.y = angle - body.surface_size = surface_size + if surface_polygon.size() >= 3: + body.surface_polygon = surface_polygon + else: + body.surface_size = surface_size body.visual_surface_enabled = false body.water_material = _fresh_water_material() body.water_type = WaterType.Type.FRESH_WATER @@ -394,6 +404,8 @@ func _fresh_water_location_tags(tags: PackedStringArray) -> Array[StringName]: result.append(&"pond") if "river" in tags: result.append(&"river") + if "lake" in tags: + result.append(&"lake") return result diff --git a/world/generation/generated_world_region.tscn b/world/generation/generated_world_region.tscn index 3b81a39..47ee6bc 100644 --- a/world/generation/generated_world_region.tscn +++ b/world/generation/generated_world_region.tscn @@ -31,16 +31,23 @@ gatherable_anchor_root = NodePath("GatherableAnchors") unique_name_in_owner = true script = ExtResource("2_generator") catalog = ExtResource("3_catalog") -grid_size = Vector2i(15, 13) +grid_size = Vector2i(20, 20) generation_seed = 13001 generate_on_ready = false build_collision = true force_center_chunk_id = &"chunk_spawn" required_chunk_ids = PackedStringArray("chunk_spawn", "chunk_0001", "chunk_0002", "chunk_0003", "chunk_0004") grass_sand_smoothing_enabled = true +lake_feature_enabled = true +lake_minimum_size = 7 +lake_maximum_size = 8 +river_feature_enabled = true +river_minimum_length = 7 +river_maximum_length = 8 elevated_cliff_feature_enabled = true +elevated_cliff_coastal_feature_required = true required_chunk_weight_multiplier = 64.0 -maximum_backtracks = 100000 +maximum_backtracks = 1000 [node name="WaterBodies" type="Node3D" parent="."] diff --git a/world/generation/terrain_chunk_generator.gd b/world/generation/terrain_chunk_generator.gd index 2e6b61c..cc49494 100644 --- a/world/generation/terrain_chunk_generator.gd +++ b/world/generation/terrain_chunk_generator.gd @@ -14,6 +14,8 @@ const SECONDARY_ELEVATED_FEATURE_RADIUS := 1 const SECONDARY_ELEVATED_FEATURE_CLEARANCE_RADIUS := ( SECONDARY_ELEVATED_FEATURE_RADIUS + 1 ) +const LAKE_FEATURE_CLEARANCE := 1 +const RIVER_FEATURE_CLEARANCE := 1 # Keep packed domain bits below the signed 64-bit sign bit. Catalogs larger # than this remain correct through the unpacked solver path. const MAX_PACKED_SOLVER_VARIANTS := 62 @@ -33,6 +35,31 @@ const MAX_PACKED_SOLVER_VARIANTS := 62 @export var smoothing_diagonal_chunk_id: StringName = &"chunk_0013" @export_range(1, 64, 1) var maximum_smoothing_placements := 16 @export_group("") +@export_group("Freshwater Lake Feature") +@export var lake_feature_enabled := false +@export var lake_edge_chunk_id: StringName = &"chunk_0017" +@export var lake_corner_chunk_id: StringName = &"chunk_0018" +@export var lake_fill_chunk_id: StringName = &"chunk_0019" +@export var lake_diagonal_chunk_id: StringName = &"chunk_0020" +@export var lake_narrow_edge_chunk_id: StringName = &"chunk_0021" +@export var lake_regular_to_narrow_chunk_id: StringName = &"chunk_0022" +@export var lake_narrow_to_regular_chunk_id: StringName = &"chunk_0023" +@export_range(3, 8, 1) var lake_minimum_length := 3 +@export_range(3, 8, 1) var lake_maximum_length := 5 +@export_range(5, 8, 1) var lake_minimum_size := 5 +@export_range(5, 8, 1) var lake_maximum_size := 6 +@export_group("") +@export_group("Freshwater River Feature") +@export var river_feature_enabled := false +@export var river_edge_chunk_id: StringName = &"chunk_0024" +@export var river_edge_variant_chunk_id: StringName = &"chunk_0025" +@export var river_source_right_chunk_id: StringName = &"chunk_0029" +@export var river_source_left_chunk_id: StringName = &"chunk_0030" +@export var river_outlet_right_chunk_id: StringName = &"chunk_0031" +@export var river_outlet_left_chunk_id: StringName = &"chunk_0032" +@export_range(5, 8, 1) var river_minimum_length := 5 +@export_range(5, 8, 1) var river_maximum_length := 5 +@export_group("") @export_group("Elevated Inland Feature") @export var elevated_cliff_feature_enabled := false @export var elevated_cliff_base_chunk_id: StringName = &"chunk_0000" @@ -40,19 +67,31 @@ const MAX_PACKED_SOLVER_VARIANTS := 62 @export var elevated_cliff_corner_chunk_id: StringName = &"chunk_0010" @export var elevated_cliff_edge_chunk_id: StringName = &"chunk_0011" @export var elevated_cliff_ramp_chunk_id: StringName = &"chunk_0012" +@export var elevated_cliff_third_tier_edge_chunk_id: StringName = &"chunk_0026" +@export var elevated_cliff_third_tier_corner_chunk_id: StringName = &"chunk_0027" +@export var elevated_cliff_third_tier_top_chunk_id: StringName = &"chunk_0028" @export var elevated_cliff_sea_edge_chunk_id: StringName = &"chunk_0014" @export var elevated_cliff_sea_corner_chunk_id: StringName = &"chunk_0015" -@export var elevated_cliff_sea_transition_right_chunk_id: StringName = &"chunk_0017" -@export var elevated_cliff_sea_transition_left_chunk_id: StringName = &"chunk_0018" +@export var elevated_cliff_sea_transition_right_chunk_id: StringName = &"chunk_9999" +@export var elevated_cliff_sea_transition_left_chunk_id: StringName = &"chunk_9998" @export var elevated_cliff_coast_base_chunk_id: StringName = &"chunk_0005" @export var elevated_cliff_beach_base_chunk_id: StringName = &"chunk_0002" -@export var elevated_cliff_beach_transition_right_chunk_id: StringName = &"chunk_0019" -@export var elevated_cliff_beach_transition_left_chunk_id: StringName = &"chunk_0020" +@export var elevated_cliff_beach_transition_right_chunk_id: StringName = &"chunk_9997" +@export var elevated_cliff_beach_transition_left_chunk_id: StringName = &"chunk_9996" +## Generated worlds can require the secondary coastal assembly so every +## island exposes at least one authored cliff face directly to the ocean. +@export var elevated_cliff_coastal_feature_required := false @export_range(0.0, 1.0, 0.05) var elevated_cliff_ramp_chance := 1.0 -## A smaller third tier reuses the existing corner geometry at the authored -## two-meter level interval. It is nested into the lower cliff assembly rather -## than occupying or replacing additional terrain-grid cells. +## Third-tier cliffs rise four meters in a single authored piece and have no +## ramp. They remain less common than the accessible second-tier feature. +@export_range(0.0, 1.0, 0.05) var elevated_cliff_third_tier_base_chance := 0.3 +## A smaller upper tier is nested into the main cliff assembly rather than +## occupying or replacing additional terrain-grid cells. @export_range(0.0, 1.0, 0.05) var elevated_cliff_third_level_chance := 0.7 +## A second-tier base may carry the taller authored cliff set above it. +@export_range(0.0, 1.0, 0.05) var elevated_cliff_third_tier_stack_chance := 0.2 +## Stacking the taller set on another taller base is intentionally rare. +@export_range(0.0, 1.0, 0.01) var elevated_cliff_double_third_tier_chance := 0.05 @export_range(0.1, 10.0, 0.1) var elevated_cliff_level_height := 2.0 @export_group("") @export_range(1.0, 100.0, 1.0) var required_chunk_weight_multiplier := 64.0 @@ -89,6 +128,17 @@ var _backtrack_count := 0 var _elevated_feature_center := Vector2i(-1, -1) var _secondary_elevated_feature_center := Vector2i(-1, -1) var _elevated_feature_reserved_grass_indices: Dictionary[int, bool] = {} +var _lake_feature_origin := Vector2i(-1, -1) +var _lake_feature_footprint_size := Vector2i.ZERO +var _lake_feature_uses_fill := false +var _lake_feature_uses_diagonal_perimeter := false +var _lake_feature_reserved_grass_indices: Dictionary[int, bool] = {} +var _river_feature_origin := Vector2i(-1, -1) +var _river_feature_footprint_size := Vector2i.ZERO +var _river_feature_flow_direction := Vector2i.ZERO +var _river_feature_reserved_grass_indices: Dictionary[int, bool] = {} +var _river_feature_candidate_order: Array[Dictionary] = [] +var _river_feature_candidate_index := -1 var _stacked_elevated_placements: Array[Dictionary] = [] @@ -108,7 +158,7 @@ func generate() -> bool: if not _prepare_elevated_feature_region(): _assign_placements(previous_placements) return false - if not _solve_cell(0): + if not _solve_prepared_base_layout(): _assign_placements(previous_placements) push_error( "Terrain generation could not solve a %dx%d grid with seed %d." @@ -119,9 +169,15 @@ func generate() -> bool: if not _apply_grass_sand_smoothing(): _assign_placements(previous_placements) return false + if not _apply_lake_feature(): + _assign_placements(previous_placements) + return false if not _apply_elevated_feature(): _assign_placements(previous_placements) return false + if not _apply_river_feature(): + _assign_placements(previous_placements) + return false if not _configure_stacked_elevated_feature(): _assign_placements(previous_placements) return false @@ -135,6 +191,19 @@ func generate() -> bool: return true +func _solve_prepared_base_layout() -> bool: + if _solve_cell(0): + return true + while _select_next_river_feature_region(): + _random.seed = generation_seed + _backtrack_count = 0 + _reset_placements(grid_size.x * grid_size.y) + _build_grid_solver_caches() + if _solve_cell(0): + return true + return false + + func generate_from_placement_keys(keys: PackedStringArray) -> bool: if not _prepare_catalog(): return false @@ -1191,7 +1260,7 @@ func _candidate_can_occupy_cell( ) -> bool: var coordinate := Vector2i(index % grid_size.x, index / grid_size.x) if ( - _elevated_feature_reserved_grass_indices.has(index) + _cell_requires_reserved_grass(index) and candidate.definition.stable_id != elevated_cliff_base_chunk_id and not ( coordinate == Vector2i(grid_size.x / 2, grid_size.y / 2) @@ -1222,6 +1291,10 @@ func _prepare_elevated_feature_region() -> bool: _elevated_feature_reserved_grass_indices.clear() _stacked_elevated_placements.clear() if not elevated_cliff_feature_enabled: + if not _prepare_lake_feature_region(): + return false + if not _prepare_river_feature_region(): + return false _build_grid_solver_caches() return true for stable_id: StringName in [ @@ -1230,6 +1303,9 @@ func _prepare_elevated_feature_region() -> bool: elevated_cliff_corner_chunk_id, elevated_cliff_edge_chunk_id, elevated_cliff_ramp_chunk_id, + elevated_cliff_third_tier_edge_chunk_id, + elevated_cliff_third_tier_corner_chunk_id, + elevated_cliff_third_tier_top_chunk_id, elevated_cliff_sea_edge_chunk_id, elevated_cliff_sea_corner_chunk_id, elevated_cliff_sea_transition_right_chunk_id, @@ -1271,16 +1347,55 @@ func _prepare_elevated_feature_region() -> bool: return false var feature_random := RandomNumberGenerator.new() feature_random.seed = generation_seed ^ 0x2E1E7A7ED - _elevated_feature_center = candidates[ - feature_random.randi_range(0, candidates.size() - 1) - ] - # Solve the authored 5x5 plateau into a one-cell ring of ordinary level-one - # flat grass. The larger top provides a real landing beyond the ramp and - # leaves usable second-tier terrain around the optional third tier. - _reserve_elevated_feature_base( - _elevated_feature_center, - ELEVATED_FEATURE_CLEARANCE_RADIUS, - ) + var candidate_start := feature_random.randi_range(0, candidates.size() - 1) + var compatible_features_found := false + for candidate_offset: int in candidates.size(): + _elevated_feature_center = candidates[ + (candidate_start + candidate_offset) % candidates.size() + ] + _elevated_feature_reserved_grass_indices.clear() + # Solve the authored 5x5 plateau into a one-cell ring of ordinary + # level-one flat grass. The lake's own clearance may share that grass, + # but its actual basin may never replace the plateau or landing ring. + _reserve_elevated_feature_base( + _elevated_feature_center, + ELEVATED_FEATURE_CLEARANCE_RADIUS, + ) + if not ( + _prepare_lake_feature_region(false) + and _prepare_river_feature_region(false) + ): + continue + var secondary_candidates := _compatible_coastal_elevated_feature_centers() + if ( + elevated_cliff_coastal_feature_required + and secondary_candidates.is_empty() + ): + continue + if not secondary_candidates.is_empty(): + _secondary_elevated_feature_center = secondary_candidates[ + feature_random.randi_range(0, secondary_candidates.size() - 1) + ] + compatible_features_found = true + break + if not compatible_features_found: + push_error( + ( + "Terrain grid has no compatible inland cliff, lake, river, " + + "and required coastal cliff locations." + ) + ) + return false + if _secondary_elevated_feature_center.x >= 0: + _reserve_elevated_feature_base( + _secondary_elevated_feature_center, + SECONDARY_ELEVATED_FEATURE_CLEARANCE_RADIUS, + ) + _build_grid_solver_caches() + return true + + +func _compatible_coastal_elevated_feature_centers() -> Array[Vector2i]: var secondary_candidates := _coastal_elevated_feature_centers() var combined_clearance := ( ELEVATED_FEATURE_CLEARANCE_RADIUS @@ -1290,20 +1405,21 @@ func _prepare_elevated_feature_region() -> bool: func(candidate: Vector2i) -> bool: var separation := candidate - _elevated_feature_center return ( - absi(separation.x) > combined_clearance - or absi(separation.y) > combined_clearance + ( + absi(separation.x) > combined_clearance + or absi(separation.y) > combined_clearance + ) + and not _elevated_feature_overlaps_lake( + candidate, + SECONDARY_ELEVATED_FEATURE_CLEARANCE_RADIUS, + ) + and not _elevated_feature_overlaps_river( + candidate, + SECONDARY_ELEVATED_FEATURE_CLEARANCE_RADIUS, + ) ) ) - if not secondary_candidates.is_empty(): - _secondary_elevated_feature_center = secondary_candidates[ - feature_random.randi_range(0, secondary_candidates.size() - 1) - ] - _reserve_elevated_feature_base( - _secondary_elevated_feature_center, - SECONDARY_ELEVATED_FEATURE_CLEARANCE_RADIUS, - ) - _build_grid_solver_caches() - return true + return secondary_candidates func _coastal_elevated_feature_centers() -> Array[Vector2i]: @@ -1315,6 +1431,56 @@ func _coastal_elevated_feature_centers() -> Array[Vector2i]: ] +func _elevated_feature_overlaps_lake( + center: Vector2i, + clearance_radius: int, +) -> bool: + if _lake_feature_origin.x < 0: + return false + var lake_end := _lake_feature_origin + _lake_feature_footprint_size + for row: int in range( + center.y - clearance_radius, + center.y + clearance_radius + 1, + ): + for column: int in range( + center.x - clearance_radius, + center.x + clearance_radius + 1, + ): + if ( + column >= _lake_feature_origin.x + and column < lake_end.x + and row >= _lake_feature_origin.y + and row < lake_end.y + ): + return true + return false + + +func _elevated_feature_overlaps_river( + center: Vector2i, + clearance_radius: int, +) -> bool: + if _river_feature_origin.x < 0: + return false + var river_end := _river_feature_origin + _river_feature_footprint_size + for row: int in range( + center.y - clearance_radius, + center.y + clearance_radius + 1, + ): + for column: int in range( + center.x - clearance_radius, + center.x + clearance_radius + 1, + ): + if ( + column >= _river_feature_origin.x + and column < river_end.x + and row >= _river_feature_origin.y + and row < river_end.y + ): + return true + return false + + func _reserve_elevated_feature_base( center: Vector2i, clearance_radius: int, @@ -1335,6 +1501,481 @@ func _reserve_elevated_feature_base( ] = true +func _prepare_lake_feature_region(report_no_room_error := true) -> bool: + _lake_feature_origin = Vector2i(-1, -1) + _lake_feature_footprint_size = Vector2i.ZERO + _lake_feature_uses_fill = false + _lake_feature_uses_diagonal_perimeter = false + _lake_feature_reserved_grass_indices.clear() + if not lake_feature_enabled: + return true + var edge_definition := catalog.definition_for_id(lake_edge_chunk_id) + var corner_definition := catalog.definition_for_id(lake_corner_chunk_id) + var fill_definition := catalog.definition_for_id(lake_fill_chunk_id) + var diagonal_definition := catalog.definition_for_id(lake_diagonal_chunk_id) + var narrow_definition := catalog.definition_for_id(lake_narrow_edge_chunk_id) + var regular_to_narrow_definition := catalog.definition_for_id( + lake_regular_to_narrow_chunk_id + ) + var narrow_to_regular_definition := catalog.definition_for_id( + lake_narrow_to_regular_chunk_id + ) + if edge_definition == null or corner_definition == null: + push_error("Lake feature references missing edge or corner chunks.") + return false + if ( + edge_definition.participates_in_base_solver + or corner_definition.participates_in_base_solver + or ( + fill_definition != null + and fill_definition.participates_in_base_solver + ) + ): + push_error("Lake feature chunks must be excluded from the base solver.") + return false + if fill_definition != null: + var diagonal_perimeter_definitions: Array[TerrainChunkDefinition] = [ + diagonal_definition, + narrow_definition, + regular_to_narrow_definition, + narrow_to_regular_definition, + ] + for definition: TerrainChunkDefinition in diagonal_perimeter_definitions: + if definition == null: + push_error( + "Lake feature references a missing diagonal perimeter chunk." + ) + return false + if definition.participates_in_base_solver: + push_error( + "Lake diagonal perimeter chunks must be excluded from the base solver." + ) + return false + _lake_feature_uses_diagonal_perimeter = true + var lake_random := RandomNumberGenerator.new() + lake_random.seed = generation_seed ^ 0x1A4E5EED + var candidates: Array[Dictionary] = [] + if fill_definition != null: + var minimum_size := maxi(5, lake_minimum_size) + var maximum_size := maxi(minimum_size, lake_maximum_size) + var desired_size := lake_random.randi_range( + minimum_size, + maximum_size, + ) + for size: int in range(desired_size, minimum_size - 1, -1): + candidates = _lake_feature_candidates(Vector2i(size, size)) + if not candidates.is_empty(): + break + _lake_feature_uses_fill = true + else: + # The two-bank fallback keeps worlds valid while the authored interior + # lake-bed piece is unavailable. Cataloging lake_fill_chunk_id upgrades + # this automatically to the large square footprint above. + var minimum_length := maxi(3, lake_minimum_length) + var maximum_length := maxi(minimum_length, lake_maximum_length) + var desired_length := lake_random.randi_range( + minimum_length, + maximum_length, + ) + for length: int in range( + desired_length, + minimum_length - 1, + -1, + ): + candidates = _lake_feature_candidates( + Vector2i(2, length), + ) + candidates.append_array( + _lake_feature_candidates(Vector2i(length, 2)), + ) + if not candidates.is_empty(): + break + if candidates.is_empty(): + if report_no_room_error: + push_error( + "Terrain grid has no room for the configured lake feature." + ) + return false + var selected: Dictionary = candidates[ + lake_random.randi_range(0, candidates.size() - 1) + ] + _lake_feature_origin = selected.get("origin", Vector2i(-1, -1)) + _lake_feature_footprint_size = selected.get( + "size", + Vector2i.ZERO, + ) + for row: int in range( + _lake_feature_origin.y - LAKE_FEATURE_CLEARANCE, + _lake_feature_origin.y + + _lake_feature_footprint_size.y + + LAKE_FEATURE_CLEARANCE, + ): + for column: int in range( + _lake_feature_origin.x - LAKE_FEATURE_CLEARANCE, + _lake_feature_origin.x + + _lake_feature_footprint_size.x + + LAKE_FEATURE_CLEARANCE, + ): + _lake_feature_reserved_grass_indices[ + row * grid_size.x + column + ] = true + return true + + +func _lake_feature_candidates( + footprint_size: Vector2i, +) -> Array[Dictionary]: + var result: Array[Dictionary] = [] + if footprint_size.x < 2 or footprint_size.y < 2: + return result + var center := Vector2i(grid_size.x / 2, grid_size.y / 2) + for row: int in range( + LAKE_FEATURE_CLEARANCE + 1, + grid_size.y - footprint_size.y - LAKE_FEATURE_CLEARANCE, + ): + for column: int in range( + LAKE_FEATURE_CLEARANCE + 1, + grid_size.x - footprint_size.x - LAKE_FEATURE_CLEARANCE, + ): + var origin := Vector2i(column, row) + var blocked := false + var spawn_neighbor_overlap_count := 0 + for check_row: int in range( + origin.y, + origin.y + footprint_size.y, + ): + for check_column: int in range( + origin.x, + origin.x + footprint_size.x, + ): + var coordinate := Vector2i(check_column, check_row) + var index := check_row * grid_size.x + check_column + var center_distance := ( + absi(coordinate.x - center.x) + + absi(coordinate.y - center.y) + ) + if center_distance == 1: + spawn_neighbor_overlap_count += 1 + if ( + center_distance == 0 + or spawn_neighbor_overlap_count > 1 + or _elevated_feature_reserved_grass_indices.has(index) + ): + blocked = true + break + if blocked: + break + if not blocked: + result.append({ + "origin": origin, + "size": footprint_size, + }) + return result + + +func _prepare_river_feature_region(report_no_room_error := true) -> bool: + _river_feature_origin = Vector2i(-1, -1) + _river_feature_footprint_size = Vector2i.ZERO + _river_feature_flow_direction = Vector2i.ZERO + _river_feature_reserved_grass_indices.clear() + _river_feature_candidate_order.clear() + _river_feature_candidate_index = -1 + if not river_feature_enabled: + return true + for stable_id: StringName in [ + river_edge_chunk_id, + river_edge_variant_chunk_id, + river_source_right_chunk_id, + river_source_left_chunk_id, + river_outlet_right_chunk_id, + river_outlet_left_chunk_id, + ]: + var definition := catalog.definition_for_id(stable_id) + if definition == null: + push_error("River feature references missing chunk %s." % stable_id) + return false + if definition.participates_in_base_solver: + push_error("River feature chunks must be excluded from the base solver.") + return false + if not elevated_cliff_feature_enabled or _elevated_feature_center.x < 0: + if report_no_room_error: + push_error( + "Terrain river feature requires an elevated cliff source." + ) + return false + var river_random := RandomNumberGenerator.new() + river_random.seed = generation_seed ^ 0x71A3E22D + var minimum_length := maxi(5, river_minimum_length) + var maximum_length := maxi(minimum_length, river_maximum_length) + var desired_length := river_random.randi_range( + minimum_length, + maximum_length, + ) + var candidates: Array[Dictionary] = [] + for length: int in range(desired_length, minimum_length - 1, -1): + candidates = _river_feature_candidates(length) + if not candidates.is_empty(): + break + if candidates.is_empty(): + if report_no_room_error: + push_error("Terrain grid has no room for the configured river feature.") + return false + var candidate_start := river_random.randi_range(0, candidates.size() - 1) + for candidate_offset: int in candidates.size(): + _river_feature_candidate_order.append( + candidates[(candidate_start + candidate_offset) % candidates.size()] + ) + if not _select_river_feature_region(0): + push_error("Terrain river feature has no compatible reserved region.") + return false + return true + + +func _select_next_river_feature_region() -> bool: + if not river_feature_enabled: + return false + for candidate_index: int in range( + _river_feature_candidate_index + 1, + _river_feature_candidate_order.size(), + ): + if _select_river_feature_region(candidate_index): + return true + return false + + +func _select_river_feature_region(candidate_index: int) -> bool: + if ( + candidate_index < 0 + or candidate_index >= _river_feature_candidate_order.size() + ): + return false + var selected: Dictionary = _river_feature_candidate_order[candidate_index] + var origin: Vector2i = selected.get("origin", Vector2i(-1, -1)) + var footprint_size: Vector2i = selected.get("size", Vector2i.ZERO) + var flow_direction: Vector2i = selected.get( + "flow_direction", + Vector2i.ZERO, + ) + var source_coordinates := _river_source_coordinates( + origin, + footprint_size, + flow_direction, + ) + var source_lookup: Dictionary[Vector2i, bool] = {} + var source_exit_lookup: Dictionary[Vector2i, bool] = {} + for coordinate: Vector2i in source_coordinates: + source_lookup[coordinate] = true + source_exit_lookup[coordinate + flow_direction] = true + for row: int in range(origin.y, origin.y + footprint_size.y): + for column: int in range(origin.x, origin.x + footprint_size.x): + var coordinate := Vector2i(column, row) + var index := row * grid_size.x + column + if ( + ( + _elevated_feature_reserved_grass_indices.has(index) + and not source_lookup.has(coordinate) + and not source_exit_lookup.has(coordinate) + ) + or _lake_feature_reserved_grass_indices.has(index) + ): + return false + for coordinate: Vector2i in source_coordinates: + var index := coordinate.y * grid_size.x + coordinate.x + if not _elevated_feature_reserved_grass_indices.has(index): + return false + _river_feature_candidate_index = candidate_index + _river_feature_origin = origin + _river_feature_footprint_size = footprint_size + _river_feature_flow_direction = flow_direction + _river_feature_reserved_grass_indices.clear() + var river_end := _river_feature_origin + _river_feature_footprint_size + for row: int in range( + _river_feature_origin.y - RIVER_FEATURE_CLEARANCE, + river_end.y + RIVER_FEATURE_CLEARANCE, + ): + for column: int in range( + _river_feature_origin.x - RIVER_FEATURE_CLEARANCE, + river_end.x + RIVER_FEATURE_CLEARANCE, + ): + var coordinate := Vector2i(column, row) + if ( + not _coordinate_is_inside_grid(coordinate) + or _coordinate_is_on_boundary(coordinate) + ): + continue + _river_feature_reserved_grass_indices[ + row * grid_size.x + column + ] = true + return true + + +func _river_feature_candidates( + length: int, +) -> Array[Dictionary]: + var result: Array[Dictionary] = [] + if length < 5 or _elevated_feature_center.x < 0: + return result + var directions: Array[Vector2i] = [ + Vector2i.RIGHT, + Vector2i.DOWN, + Vector2i.LEFT, + Vector2i.UP, + ] + for flow_direction: Vector2i in directions: + for cross_offset: int in [-1, 0]: + var footprint_size := ( + Vector2i(length, 2) + if flow_direction.x != 0 + else Vector2i(2, length) + ) + var origin := Vector2i.ZERO + match flow_direction: + Vector2i.RIGHT: + origin = Vector2i( + _elevated_feature_center.x + ELEVATED_FEATURE_RADIUS, + _elevated_feature_center.y + cross_offset, + ) + Vector2i.LEFT: + origin = Vector2i( + _elevated_feature_center.x + - ELEVATED_FEATURE_RADIUS + - length + + 1, + _elevated_feature_center.y + cross_offset, + ) + Vector2i.DOWN: + origin = Vector2i( + _elevated_feature_center.x + cross_offset, + _elevated_feature_center.y + ELEVATED_FEATURE_RADIUS, + ) + Vector2i.UP: + origin = Vector2i( + _elevated_feature_center.x + cross_offset, + _elevated_feature_center.y + - ELEVATED_FEATURE_RADIUS + - length + + 1, + ) + if _river_feature_candidate_is_valid( + origin, + footprint_size, + flow_direction, + ): + result.append({ + "origin": origin, + "size": footprint_size, + "flow_direction": flow_direction, + }) + return result + + +func _river_feature_candidate_is_valid( + origin: Vector2i, + footprint_size: Vector2i, + flow_direction: Vector2i, +) -> bool: + var river_end := origin + footprint_size + var boundary_clearance := RIVER_FEATURE_CLEARANCE + 1 + if flow_direction.x != 0: + if ( + origin.y < boundary_clearance + or river_end.y > grid_size.y - boundary_clearance + ): + return false + if ( + flow_direction == Vector2i.RIGHT + and river_end.x != grid_size.x + ) or ( + flow_direction == Vector2i.LEFT + and origin.x != 0 + ): + return false + else: + if ( + origin.x < boundary_clearance + or river_end.x > grid_size.x - boundary_clearance + ): + return false + if ( + flow_direction == Vector2i.DOWN + and river_end.y != grid_size.y + ) or ( + flow_direction == Vector2i.UP + and origin.y != 0 + ): + return false + var center := Vector2i(grid_size.x / 2, grid_size.y / 2) + var source_lookup: Dictionary[Vector2i, bool] = {} + var source_exit_lookup: Dictionary[Vector2i, bool] = {} + for coordinate: Vector2i in _river_source_coordinates( + origin, + footprint_size, + flow_direction, + ): + source_lookup[coordinate] = true + source_exit_lookup[coordinate + flow_direction] = true + if source_lookup.size() != 2: + return false + for row: int in range(origin.y, river_end.y): + for column: int in range(origin.x, river_end.x): + var coordinate := Vector2i(column, row) + var index := row * grid_size.x + column + var center_distance := ( + absi(coordinate.x - center.x) + + absi(coordinate.y - center.y) + ) + if ( + center_distance <= 1 + or _lake_feature_reserved_grass_indices.has(index) + or ( + _elevated_feature_reserved_grass_indices.has(index) + and not source_lookup.has(coordinate) + and not source_exit_lookup.has(coordinate) + ) + ): + return false + for coordinate: Vector2i in source_lookup: + var index := coordinate.y * grid_size.x + coordinate.x + if not _elevated_feature_reserved_grass_indices.has(index): + return false + return true + + +func _river_source_coordinates( + origin: Vector2i, + footprint_size: Vector2i, + flow_direction: Vector2i, +) -> Array[Vector2i]: + var northwest := origin + var northeast := Vector2i( + origin.x + footprint_size.x - 1, + origin.y, + ) + var southwest := Vector2i( + origin.x, + origin.y + footprint_size.y - 1, + ) + var southeast := origin + footprint_size - Vector2i.ONE + match flow_direction: + Vector2i.RIGHT: + return [northwest, southwest] + Vector2i.LEFT: + return [northeast, southeast] + Vector2i.DOWN: + return [northwest, northeast] + Vector2i.UP: + return [southwest, southeast] + return [] + + +func _cell_requires_reserved_grass(index: int) -> bool: + return ( + _elevated_feature_reserved_grass_indices.has(index) + or _lake_feature_reserved_grass_indices.has(index) + or _river_feature_reserved_grass_indices.has(index) + ) + + func _build_grid_solver_caches() -> void: _neighbor_indices.clear() _neighbor_indices.resize(_placements.size()) @@ -1364,7 +2005,7 @@ func _build_grid_solver_caches() -> void: for candidate_index: int in _solver_variants.size(): var candidate := _solver_variants[candidate_index] if ( - _elevated_feature_reserved_grass_indices.has(index) + _cell_requires_reserved_grass(index) and candidate.definition.stable_id != elevated_cliff_base_chunk_id and not ( @@ -1420,7 +2061,7 @@ func _apply_grass_sand_smoothing() -> bool: var coordinate := Vector2i(index % grid_size.x, index / grid_size.x) if ( _coordinate_is_on_boundary(coordinate) - or _elevated_feature_reserved_grass_indices.has(index) + or _cell_requires_reserved_grass(index) or ( absi(coordinate.x - center.x) + absi(coordinate.y - center.y) @@ -1492,18 +2133,372 @@ func _replacement_preserves_required_chunk( return _definition_placement_count(original.definition) > 1 +func _apply_lake_feature() -> bool: + if not lake_feature_enabled: + return true + if ( + _lake_feature_origin.x < 0 + or _lake_feature_footprint_size.x < 2 + or _lake_feature_footprint_size.y < 2 + ): + push_error("Lake feature has no reserved terrain region.") + return false + for spec: Dictionary in _lake_feature_placement_specs(): + var definition := catalog.definition_for_id(spec["id"] as StringName) + var variant := _authored_variant(definition, int(spec["turns"])) + if variant == null: + push_error( + "Lake feature cannot resolve %s rotation %d." + % [spec["id"], spec["turns"]] + ) + return false + var coordinate := spec["coordinate"] as Vector2i + _set_placement( + coordinate.y * grid_size.x + coordinate.x, + variant, + ) + var validation_error := _resolved_layout_validation_error(_placements) + if not validation_error.is_empty(): + push_error("Lake feature is invalid: " + validation_error) + return false + return true + + +func _lake_feature_placement_specs() -> Array[Dictionary]: + var result: Array[Dictionary] = [] + var northwest := _lake_feature_origin + var northeast := Vector2i( + _lake_feature_origin.x + _lake_feature_footprint_size.x - 1, + _lake_feature_origin.y, + ) + var southwest := Vector2i( + _lake_feature_origin.x, + _lake_feature_origin.y + _lake_feature_footprint_size.y - 1, + ) + var southeast := ( + _lake_feature_origin + + _lake_feature_footprint_size + - Vector2i.ONE + ) + if _lake_feature_uses_diagonal_perimeter: + return _diagonal_lake_feature_placement_specs( + northwest, + northeast, + southwest, + southeast, + ) + result.append({"coordinate": northwest, "id": lake_corner_chunk_id, "turns": 0}) + result.append({"coordinate": northeast, "id": lake_corner_chunk_id, "turns": 3}) + result.append({"coordinate": southwest, "id": lake_corner_chunk_id, "turns": 1}) + result.append({"coordinate": southeast, "id": lake_corner_chunk_id, "turns": 2}) + for row: int in range(northwest.y + 1, southwest.y): + result.append({ + "coordinate": Vector2i(northwest.x, row), + "id": lake_edge_chunk_id, + "turns": 0, + }) + result.append({ + "coordinate": Vector2i(northeast.x, row), + "id": lake_edge_chunk_id, + "turns": 2, + }) + for column: int in range(northwest.x + 1, northeast.x): + result.append({ + "coordinate": Vector2i(column, northwest.y), + "id": lake_edge_chunk_id, + "turns": 3, + }) + result.append({ + "coordinate": Vector2i(column, southwest.y), + "id": lake_edge_chunk_id, + "turns": 1, + }) + if _lake_feature_uses_fill: + for row: int in range(northwest.y + 1, southwest.y): + for column: int in range(northwest.x + 1, northeast.x): + result.append({ + "coordinate": Vector2i(column, row), + "id": lake_fill_chunk_id, + "turns": 0, + }) + return result + + +func _diagonal_lake_feature_placement_specs( + northwest: Vector2i, + northeast: Vector2i, + southwest: Vector2i, + southeast: Vector2i, +) -> Array[Dictionary]: + var result: Array[Dictionary] = [ + {"coordinate": northwest, "id": lake_diagonal_chunk_id, "turns": 0}, + {"coordinate": northeast, "id": lake_diagonal_chunk_id, "turns": 3}, + {"coordinate": southwest, "id": lake_diagonal_chunk_id, "turns": 1}, + {"coordinate": southeast, "id": lake_diagonal_chunk_id, "turns": 2}, + ] + var top_side := _lake_top_side_specs( + _lake_feature_footprint_size.x - 2 + ) + for offset: int in top_side.size(): + var top_spec: Dictionary = top_side[offset] + var reverse_spec: Dictionary = top_side[top_side.size() - 1 - offset] + result.append({ + "coordinate": Vector2i(northwest.x + 1 + offset, northwest.y), + "id": top_spec["id"], + "turns": top_spec["turns"], + }) + result.append({ + "coordinate": Vector2i(southwest.x + 1 + offset, southwest.y), + "id": reverse_spec["id"], + "turns": posmod(int(reverse_spec["turns"]) + 2, 4), + }) + result.append({ + "coordinate": Vector2i(northwest.x, northwest.y + 1 + offset), + "id": reverse_spec["id"], + "turns": posmod(int(reverse_spec["turns"]) + 1, 4), + }) + result.append({ + "coordinate": Vector2i(northeast.x, northeast.y + 1 + offset), + "id": top_spec["id"], + "turns": posmod(int(top_spec["turns"]) + 3, 4), + }) + if _lake_feature_uses_fill: + for row: int in range(northwest.y + 1, southwest.y): + for column: int in range(northwest.x + 1, northeast.x): + result.append({ + "coordinate": Vector2i(column, row), + "id": lake_fill_chunk_id, + "turns": 0, + }) + return result + + +func _lake_top_side_specs(interior_count: int) -> Array[Dictionary]: + var result: Array[Dictionary] = [] + if interior_count < 3: + return result + var uses_narrow_run := interior_count >= 4 + if uses_narrow_run: + result.append({"id": lake_narrow_edge_chunk_id, "turns": 0}) + result.append({"id": lake_narrow_to_regular_chunk_id, "turns": 0}) + var regular_count := interior_count - (4 if uses_narrow_run else 2) + for _index: int in regular_count: + result.append({"id": lake_edge_chunk_id, "turns": 3}) + result.append({"id": lake_regular_to_narrow_chunk_id, "turns": 0}) + if uses_narrow_run: + result.append({"id": lake_narrow_edge_chunk_id, "turns": 0}) + return result + + +func _apply_river_feature() -> bool: + if not river_feature_enabled: + return true + if ( + _river_feature_origin.x < 0 + or mini( + _river_feature_footprint_size.x, + _river_feature_footprint_size.y, + ) != 2 + ): + push_error("River feature has no reserved terrain region.") + return false + for spec: Dictionary in _river_feature_placement_specs(): + var definition := catalog.definition_for_id(spec["id"] as StringName) + var variant := _authored_variant(definition, int(spec["turns"])) + if variant == null: + push_error( + "River feature cannot resolve %s rotation %d." + % [spec["id"], spec["turns"]] + ) + return false + var coordinate := spec["coordinate"] as Vector2i + _set_placement( + coordinate.y * grid_size.x + coordinate.x, + variant, + ) + var validation_error := _resolved_layout_validation_error(_placements) + if not validation_error.is_empty(): + push_error("River feature is invalid: " + validation_error) + return false + return true + + +func _river_feature_placement_specs() -> Array[Dictionary]: + var result: Array[Dictionary] = [] + var northwest := _river_feature_origin + var northeast := Vector2i( + _river_feature_origin.x + _river_feature_footprint_size.x - 1, + _river_feature_origin.y, + ) + var southwest := Vector2i( + _river_feature_origin.x, + _river_feature_origin.y + _river_feature_footprint_size.y - 1, + ) + var southeast := ( + _river_feature_origin + + _river_feature_footprint_size + - Vector2i.ONE + ) + match _river_feature_flow_direction: + Vector2i.RIGHT: + result.assign([ + { + "coordinate": northwest, + "id": river_source_right_chunk_id, + "turns": 0, + }, + { + "coordinate": southwest, + "id": river_source_left_chunk_id, + "turns": 0, + }, + { + "coordinate": northeast, + "id": river_outlet_right_chunk_id, + "turns": 0, + }, + { + "coordinate": southeast, + "id": river_outlet_left_chunk_id, + "turns": 0, + }, + ]) + Vector2i.LEFT: + result.assign([ + { + "coordinate": northwest, + "id": river_outlet_left_chunk_id, + "turns": 2, + }, + { + "coordinate": southwest, + "id": river_outlet_right_chunk_id, + "turns": 2, + }, + { + "coordinate": northeast, + "id": river_source_left_chunk_id, + "turns": 2, + }, + { + "coordinate": southeast, + "id": river_source_right_chunk_id, + "turns": 2, + }, + ]) + Vector2i.DOWN: + result.assign([ + { + "coordinate": northwest, + "id": river_source_left_chunk_id, + "turns": 3, + }, + { + "coordinate": northeast, + "id": river_source_right_chunk_id, + "turns": 3, + }, + { + "coordinate": southwest, + "id": river_outlet_left_chunk_id, + "turns": 3, + }, + { + "coordinate": southeast, + "id": river_outlet_right_chunk_id, + "turns": 3, + }, + ]) + Vector2i.UP: + result.assign([ + { + "coordinate": northwest, + "id": river_outlet_right_chunk_id, + "turns": 1, + }, + { + "coordinate": northeast, + "id": river_outlet_left_chunk_id, + "turns": 1, + }, + { + "coordinate": southwest, + "id": river_source_right_chunk_id, + "turns": 1, + }, + { + "coordinate": southeast, + "id": river_source_left_chunk_id, + "turns": 1, + }, + ]) + _: + push_error("River feature has no cardinal flow direction.") + return [] + var river_random := RandomNumberGenerator.new() + river_random.seed = generation_seed ^ 0x4B1D63A7 + var phase := river_random.randi_range(0, 1) + var edge_ids: Array[StringName] = [ + river_edge_chunk_id, + river_edge_variant_chunk_id, + ] + if _river_feature_footprint_size.y == 2: + for offset: int in range(1, _river_feature_footprint_size.x - 1): + var edge_index := posmod(offset - 1 + phase, edge_ids.size()) + result.append({ + "coordinate": Vector2i(northwest.x + offset, northwest.y), + "id": edge_ids[edge_index], + "turns": 0, + }) + result.append({ + "coordinate": Vector2i(southwest.x + offset, southwest.y), + "id": edge_ids[posmod(edge_index + 1, edge_ids.size())], + "turns": 2, + }) + else: + for offset: int in range(1, _river_feature_footprint_size.y - 1): + var edge_index := posmod(offset - 1 + phase, edge_ids.size()) + result.append({ + "coordinate": Vector2i(northwest.x, northwest.y + offset), + "id": edge_ids[edge_index], + "turns": 1, + }) + result.append({ + "coordinate": Vector2i(northeast.x, northeast.y + offset), + "id": edge_ids[posmod(edge_index + 1, edge_ids.size())], + "turns": 3, + }) + return result + + func _apply_elevated_feature() -> bool: if not elevated_cliff_feature_enabled: return true if _elevated_feature_center.x < 0 or _elevated_feature_center.y < 0: push_error("Elevated cliff feature has no reserved base region.") return false + if ( + elevated_cliff_coastal_feature_required + and _secondary_elevated_feature_center.x < 0 + ): + push_error("Elevated cliff feature is missing its required coastal assembly.") + return false var feature_random := RandomNumberGenerator.new() feature_random.seed = generation_seed ^ 0x51A7C11FF + var tier_random := RandomNumberGenerator.new() + tier_random.seed = generation_seed ^ 0x4C1FF713D + # The authored river source is a third-tier cliff pair. A generated river + # therefore promotes its inland source feature to that matching elevation; + # rivers may never begin from an unrelated flat cap. + var use_third_tier := ( + river_feature_enabled + or tier_random.randf() < elevated_cliff_third_tier_base_chance + ) var placements := _elevated_feature_placement_specs( _elevated_feature_center, ELEVATED_FEATURE_RADIUS, feature_random, + use_third_tier, ) var grass_coast_count := int( _placement_counts.get(elevated_cliff_coast_base_chunk_id, 0) @@ -1511,10 +2506,10 @@ func _apply_elevated_feature() -> bool: var beach_coast_count := int( _placement_counts.get(elevated_cliff_beach_base_chunk_id, 0) ) - if ( - _secondary_elevated_feature_center.x >= 0 - and (grass_coast_count > 0 or beach_coast_count > 0) - ): + if _secondary_elevated_feature_center.x >= 0: + if grass_coast_count <= 0 and beach_coast_count <= 0: + push_error("Coastal cliff feature has no compatible coastline base.") + return false placements.append_array( _coastal_elevated_feature_placement_specs( _secondary_elevated_feature_center, @@ -1547,7 +2542,23 @@ func _elevated_feature_placement_specs( center: Vector2i, radius: int, feature_random: RandomNumberGenerator, + use_third_tier: bool = false, ) -> Array[Dictionary]: + var top_chunk_id := ( + elevated_cliff_third_tier_top_chunk_id + if use_third_tier + else elevated_cliff_top_chunk_id + ) + var corner_chunk_id := ( + elevated_cliff_third_tier_corner_chunk_id + if use_third_tier + else elevated_cliff_corner_chunk_id + ) + var edge_chunk_id := ( + elevated_cliff_third_tier_edge_chunk_id + if use_third_tier + else elevated_cliff_edge_chunk_id + ) var edge_specs: Array[Dictionary] = [ { "edge": TerrainChunkTopology.Edge.NORTH, @@ -1571,7 +2582,10 @@ func _elevated_feature_placement_specs( }, ] var ramp_edge: int = -1 - if feature_random.randf() < elevated_cliff_ramp_chance: + if ( + not use_third_tier + and feature_random.randf() < elevated_cliff_ramp_chance + ): var usable_edges: Array[int] = [] for edge_index: int in edge_specs.size(): var edge_spec := edge_specs[edge_index] @@ -1600,7 +2614,7 @@ func _elevated_feature_placement_specs( if on_horizontal_edge and on_vertical_edge: placements.append({ "coordinate": center + offset, - "id": elevated_cliff_corner_chunk_id, + "id": corner_chunk_id, "turns": _elevated_corner_turns(offset), }) continue @@ -1612,14 +2626,14 @@ func _elevated_feature_placement_specs( elevated_cliff_ramp_chunk_id if ramp_edge >= 0 and offset == edge_specs[ramp_edge]["offset"] - else elevated_cliff_edge_chunk_id + else edge_chunk_id ), "turns": edge_specs[edge_index]["turns"], }) continue placements.append({ "coordinate": center + offset, - "id": elevated_cliff_top_chunk_id, + "id": top_chunk_id, "turns": 0, }) return placements @@ -1634,6 +2648,7 @@ func _coastal_elevated_feature_placement_specs( center, SECONDARY_ELEVATED_FEATURE_RADIUS, feature_random, + false, ) for spec: Dictionary in placements: var coordinate := spec["coordinate"] as Vector2i @@ -1729,7 +2744,7 @@ func _configure_stacked_elevated_feature() -> bool: or elevated_cliff_third_level_chance <= 0.0 ): return true - var top_coordinate := _elevated_feature_center + var top_coordinate := _primary_elevated_top_coordinate() if top_coordinate.x < 0: return true var top_index := top_coordinate.y * grid_size.x + top_coordinate.x @@ -1737,22 +2752,47 @@ func _configure_stacked_elevated_feature() -> bool: top_index < 0 or top_index >= _placements.size() or _placements[top_index] == null - or _placements[top_index].definition.stable_id - != elevated_cliff_top_chunk_id ): push_error("Stacked cliff feature lost its central supporting top.") return false + var supporting_top_id := _placements[top_index].definition.stable_id + if supporting_top_id not in [ + elevated_cliff_top_chunk_id, + elevated_cliff_third_tier_top_chunk_id, + ]: + push_error("Stacked cliff feature lost its central supporting top.") + return false var stack_random := RandomNumberGenerator.new() stack_random.seed = generation_seed ^ 0x7312DC11F if stack_random.randf() >= elevated_cliff_third_level_chance: return true + var supporting_third_tier := ( + supporting_top_id == elevated_cliff_third_tier_top_chunk_id + ) + var use_third_tier_stack := ( + stack_random.randf() < ( + elevated_cliff_double_third_tier_chance + if supporting_third_tier + else elevated_cliff_third_tier_stack_chance + ) + ) + var stacked_corner_chunk_id := ( + elevated_cliff_third_tier_corner_chunk_id + if use_third_tier_stack + else elevated_cliff_corner_chunk_id + ) + var vertical_offset := ( + elevated_cliff_level_height * 2.0 + if supporting_third_tier + else elevated_cliff_level_height + ) var corner_definition := catalog.definition_for_id( - elevated_cliff_corner_chunk_id + stacked_corner_chunk_id ) if corner_definition == null: push_error( "Stacked cliff feature references missing corner chunk %s." - % elevated_cliff_corner_chunk_id + % stacked_corner_chunk_id ) return false # Four nearly half-cell-offset corners form a closed 2x2 ring. A slight @@ -1772,17 +2812,61 @@ func _configure_stacked_elevated_feature() -> bool: if variant == null: push_error( "Stacked cliff feature cannot resolve %s rotation %d." - % [elevated_cliff_corner_chunk_id, spec["turns"]] + % [stacked_corner_chunk_id, spec["turns"]] ) return false _stacked_elevated_placements.append({ "support_coordinate": top_coordinate, "offset": spec["offset"], + "vertical_offset": vertical_offset, "variant": variant, }) return true +func _primary_elevated_top_coordinate() -> Vector2i: + if _coordinate_has_primary_elevated_top(_elevated_feature_center): + return _elevated_feature_center + for index: int in _placements.size(): + var coordinate := Vector2i(index % grid_size.x, index / grid_size.x) + if not _coordinate_has_primary_elevated_top(coordinate): + continue + var top_id := _placements[index].definition.stable_id + var surrounded_by_matching_tops := true + for row_offset: int in range(-1, 2): + for column_offset: int in range(-1, 2): + var neighbor := coordinate + Vector2i(column_offset, row_offset) + if not _coordinate_is_inside_grid(neighbor): + surrounded_by_matching_tops = false + break + var neighbor_index := neighbor.y * grid_size.x + neighbor.x + var neighbor_variant := _placements[neighbor_index] + if ( + neighbor_variant == null + or neighbor_variant.definition.stable_id != top_id + ): + surrounded_by_matching_tops = false + break + if not surrounded_by_matching_tops: + break + if surrounded_by_matching_tops: + _elevated_feature_center = coordinate + return coordinate + return Vector2i(-1, -1) + + +func _coordinate_has_primary_elevated_top(coordinate: Vector2i) -> bool: + if not _coordinate_is_inside_grid(coordinate): + return false + var index := coordinate.y * grid_size.x + coordinate.x + if index < 0 or index >= _placements.size() or _placements[index] == null: + return false + return _placements[index].definition.stable_id in [ + elevated_cliff_top_chunk_id, + elevated_cliff_third_tier_top_chunk_id, + ] + + func _variant_respects_ocean_boundary( variant: TerrainChunkVariant, coordinate: Vector2i, @@ -1900,9 +2984,16 @@ func _calculate_edge_compatibility( second: TerrainChunkVariant, second_edge: TerrainChunkTopology.Edge, ) -> bool: + var profile_tolerance := maxf( + edge_match_tolerance, + maxf( + first.definition.edge_profile_tolerance_override, + second.definition.edge_profile_tolerance_override, + ), + ) var profiles_match := first.profile(first_edge).matches( second.profile(second_edge), - edge_match_tolerance, + profile_tolerance, ) if not profiles_match and ( _variant_edge_has_connector( @@ -1919,7 +3010,7 @@ func _calculate_edge_compatibility( profiles_match = first.profile(first_edge).matches_above_height( second.profile(second_edge), 0.0, - edge_match_tolerance, + profile_tolerance, ) if not profiles_match: return false @@ -2457,13 +3548,18 @@ func _add_stacked_elevated_chunks(solution_root: Node3D) -> bool: index, ] var offset: Vector2 = record.get("offset", Vector2.ZERO) + var vertical_offset := float(record.get( + "vertical_offset", + elevated_cliff_level_height, + )) stacked_root.position = Vector3( offset.x * catalog.chunk_size, - elevated_cliff_level_height, + vertical_offset, offset.y * catalog.chunk_size, ) stacked_root.rotation.y = variant.rotation_radians() stacked_root.set_meta(&"terrain_stacked_elevation", true) + stacked_root.set_meta(&"terrain_stacked_elevation_height", vertical_offset) stacked_root.set_meta( &"terrain_chunk_id", variant.definition.stable_id, @@ -2676,6 +3772,10 @@ func stacked_elevated_placement_keys() -> PackedStringArray: for record: Dictionary in _stacked_elevated_placements: var variant := record.get("variant") as TerrainChunkVariant var offset: Vector2 = record.get("offset", Vector2.ZERO) + var vertical_offset := float(record.get( + "vertical_offset", + elevated_cliff_level_height, + )) if variant == null: continue result.append( @@ -2684,7 +3784,7 @@ func stacked_elevated_placement_keys() -> PackedStringArray: variant.stable_key(), offset.x, offset.y, - elevated_cliff_level_height, + vertical_offset, ] ) return result @@ -2708,6 +3808,7 @@ func placement_records() -> Array[Dictionary]: ), "water_surface_size": variant.definition.water_surface_size, "water_surface_offset": variant.definition.water_surface_offset, + "water_surface_polygon": variant.definition.water_surface_polygon, }) return result diff --git a/world/water_body_authoring.gd b/world/water_body_authoring.gd index f21805f..2430be0 100644 --- a/world/water_body_authoring.gd +++ b/world/water_body_authoring.gd @@ -3,6 +3,7 @@ class_name WaterBodyAuthoring extends Node3D const FishPoolType = preload("res://fish/fish_pool.gd") +const GENERATED_POLYGON_SHAPE_META := &"water_body_generated_polygon_shape" @export_group("Surface") ## Visible water footprint in meters. @@ -14,6 +15,13 @@ var surface_size: Vector2 = Vector2(10.0, 10.0): set(value): surface_size = Vector2(maxf(value.x, 0.1), maxf(value.y, 0.1)) _sync_owned_nodes() +## Optional exact local X/Z coverage. Three or more points replace the box +## collision footprint with triangulated, vertically extruded volumes. The +## visible PlaneMesh remains controlled by surface_size. +@export var surface_polygon := PackedVector2Array(): + set(value): + surface_polygon = value + _sync_owned_nodes() ## Derive fishing coverage from VisualWater's mesh bounds instead of resizing ## the mesh from Surface Size. Use this for imported or shared water surfaces. @export var derive_coverage_from_visual_mesh: bool = false: @@ -97,6 +105,7 @@ func _sync_owned_nodes() -> void: plane_mesh.size = surface_size visual_water.material_override = water_material var surface_footprint: Rect2 = _resolve_surface_footprint(visual_water) + var uses_polygon := surface_polygon.size() >= 3 var fishing_shape_node := ( get_node_or_null(fishing_shape_path) as CollisionShape3D @@ -112,9 +121,19 @@ func _sync_owned_nodes() -> void: fishing_region.surface_height_mode = ( FishableWaterRegion.SurfaceHeightMode.PARENT_GLOBAL_Y ) - if fishing_shape_node != null: - var fishing_shape := fishing_shape_node.shape as BoxShape3D - if fishing_shape != null: + if fishing_shape_node != null and fishing_region != null: + if uses_polygon and _sync_polygon_collision_shapes( + fishing_region, + fishing_shape_node, + fishing_depth, + ): + pass + else: + _clear_generated_polygon_shapes(fishing_region) + var fishing_shape := fishing_shape_node.shape as BoxShape3D + if fishing_shape == null: + fishing_shape = BoxShape3D.new() + fishing_shape_node.shape = fishing_shape # The authored root is the one water-surface height. Keep the fishable # volume entirely below that plane so visible water and interaction # can be moved together without a second height to tune. @@ -133,18 +152,28 @@ func _sync_owned_nodes() -> void: var recovery_region := ( get_node_or_null(recovery_region_path) as Area3D ) - if recovery_region != null: - recovery_region.position = Vector3( - surface_footprint.get_center().x, - -recovery_depth * 0.5, - surface_footprint.get_center().y, - ) var recovery_shape_node := ( get_node_or_null(recovery_shape_path) as CollisionShape3D ) - if recovery_shape_node != null: - var recovery_shape := recovery_shape_node.shape as BoxShape3D - if recovery_shape != null: + if recovery_region != null and recovery_shape_node != null: + if uses_polygon and _sync_polygon_collision_shapes( + recovery_region, + recovery_shape_node, + recovery_depth, + ): + recovery_region.position = Vector3.ZERO + else: + _clear_generated_polygon_shapes(recovery_region) + recovery_region.position = Vector3( + surface_footprint.get_center().x, + -recovery_depth * 0.5, + surface_footprint.get_center().y, + ) + recovery_shape_node.position = Vector3.ZERO + var recovery_shape := recovery_shape_node.shape as BoxShape3D + if recovery_shape == null: + recovery_shape = BoxShape3D.new() + recovery_shape_node.shape = recovery_shape recovery_shape.size = Vector3( surface_footprint.size.x, recovery_depth, @@ -155,6 +184,57 @@ func _sync_owned_nodes() -> void: update_configuration_warnings() +func _sync_polygon_collision_shapes( + region: CollisionObject3D, + primary_shape_node: CollisionShape3D, + depth: float, +) -> bool: + var triangle_indices := Geometry2D.triangulate_polygon(surface_polygon) + if triangle_indices.size() < 3: + return false + _clear_generated_polygon_shapes(region) + for offset: int in range(0, triangle_indices.size(), 3): + var shape_node := primary_shape_node + if offset > 0: + shape_node = CollisionShape3D.new() + shape_node.name = "GeneratedPolygonShape%d" % floori( + float(offset) / 3.0 + ) + shape_node.set_meta(GENERATED_POLYGON_SHAPE_META, true) + region.add_child(shape_node) + shape_node.position = Vector3.ZERO + shape_node.disabled = false + shape_node.shape = _extruded_triangle_shape( + triangle_indices, + offset, + depth, + ) + return true + + +func _extruded_triangle_shape( + triangle_indices: PackedInt32Array, + offset: int, + depth: float, +) -> ConvexPolygonShape3D: + var points := PackedVector3Array() + for point_offset: int in 3: + var point := surface_polygon[triangle_indices[offset + point_offset]] + points.append(Vector3(point.x, 0.0, point.y)) + points.append(Vector3(point.x, -depth, point.y)) + var shape := ConvexPolygonShape3D.new() + shape.points = points + return shape + + +func _clear_generated_polygon_shapes(region: CollisionObject3D) -> void: + for child: Node in region.get_children(): + if not child.has_meta(GENERATED_POLYGON_SHAPE_META): + continue + region.remove_child(child) + child.free() + + func _resolve_surface_footprint(visual_water: MeshInstance3D) -> Rect2: var authored_footprint := Rect2(-surface_size * 0.5, surface_size) if ( @@ -202,7 +282,14 @@ func _get_configuration_warnings() -> PackedStringArray: "VisualWater must provide a PlaneMesh when coverage is authored by size." ) var fishing_shape := get_node_or_null(fishing_shape_path) as CollisionShape3D - if fishing_shape == null or not fishing_shape.shape is BoxShape3D: + if fishing_shape == null: + warnings.append("FishingRegion must provide a collision shape.") + elif surface_polygon.size() >= 3: + if not fishing_shape.shape is ConvexPolygonShape3D: + warnings.append( + "FishingRegion must provide polygon coverage for Surface Polygon." + ) + elif not fishing_shape.shape is BoxShape3D: warnings.append("FishingRegion must provide a BoxShape3D.") if manage_recovery_coverage: var recovery_region := ( @@ -220,7 +307,14 @@ func _get_configuration_warnings() -> PackedStringArray: var recovery_shape := ( get_node_or_null(recovery_shape_path) as CollisionShape3D ) - if recovery_shape == null or not recovery_shape.shape is BoxShape3D: + if recovery_shape == null: + warnings.append("RecoveryRegion must provide a collision shape.") + elif surface_polygon.size() >= 3: + if not recovery_shape.shape is ConvexPolygonShape3D: + warnings.append( + "RecoveryRegion must provide polygon coverage for Surface Polygon." + ) + elif not recovery_shape.shape is BoxShape3D: warnings.append("RecoveryRegion must provide a BoxShape3D.") var fishing_region := get_node_or_null( fishing_region_path From 6fd1aa03887082e9e4b29542c7d251a7a62502ac Mon Sep 17 00:00:00 2001 From: Voyager Date: Sat, 22 Aug 2026 22:56:21 -0400 Subject: [PATCH 25/90] Add turning rivers and lake edge variation --- tests/generated_world_runtime_validation.gd | 84 +- tests/terrain_chunk_generator_validation.gd | 164 ++- world/generation/chunks/assets/chunk_0017.glb | Bin 24624 -> 27692 bytes world/generation/chunks/assets/chunk_0033.glb | Bin 0 -> 25700 bytes .../chunks/assets/chunk_0033.glb.import | 45 + .../chunks/assets/chunk_0033_cliff_wall.png | Bin 0 -> 9025 bytes .../assets/chunk_0033_cliff_wall.png.import | 45 + .../chunks/assets/chunk_0033_dirt.png | Bin 0 -> 5589 bytes .../chunks/assets/chunk_0033_dirt.png.import | 45 + .../chunks/assets/chunk_0033_grass_lite.png | Bin 0 -> 6317 bytes .../assets/chunk_0033_grass_lite.png.import | 45 + world/generation/chunks/assets/chunk_0034.glb | Bin 0 -> 30684 bytes .../chunks/assets/chunk_0034.glb.import | 45 + .../chunks/assets/chunk_0034_cliff_wall.png | Bin 0 -> 9025 bytes .../assets/chunk_0034_cliff_wall.png.import | 45 + .../chunks/assets/chunk_0034_dirt.png | Bin 0 -> 5589 bytes .../chunks/assets/chunk_0034_dirt.png.import | 45 + .../chunks/assets/chunk_0034_grass_lite.png | Bin 0 -> 6317 bytes .../assets/chunk_0034_grass_lite.png.import | 45 + world/generation/chunks/assets/chunk_0035.glb | Bin 0 -> 30304 bytes .../chunks/assets/chunk_0035.glb.import | 45 + .../chunks/assets/chunk_0035_cliff_wall.png | Bin 0 -> 9025 bytes .../assets/chunk_0035_cliff_wall.png.import | 45 + .../chunks/assets/chunk_0035_dirt.png | Bin 0 -> 5589 bytes .../chunks/assets/chunk_0035_dirt.png.import | 45 + .../chunks/assets/chunk_0035_grass_lite.png | Bin 0 -> 6317 bytes .../assets/chunk_0035_grass_lite.png.import | 45 + world/generation/chunks/assets/chunk_0036.glb | Bin 0 -> 29524 bytes .../chunks/assets/chunk_0036.glb.import | 45 + .../chunks/assets/chunk_0036_cliff_wall.png | Bin 0 -> 9025 bytes .../assets/chunk_0036_cliff_wall.png.import | 45 + .../chunks/assets/chunk_0036_dirt.png | Bin 0 -> 5589 bytes .../chunks/assets/chunk_0036_dirt.png.import | 45 + .../chunks/assets/chunk_0036_grass_lite.png | Bin 0 -> 6317 bytes .../assets/chunk_0036_grass_lite.png.import | 45 + world/generation/chunks/assets/chunk_0037.glb | Bin 0 -> 27692 bytes .../chunks/assets/chunk_0037.glb.import | 45 + .../chunks/assets/chunk_0037_cliff_wall.png | Bin 0 -> 9025 bytes .../assets/chunk_0037_cliff_wall.png.import | 45 + .../chunks/assets/chunk_0037_dirt.png | Bin 0 -> 5589 bytes .../chunks/assets/chunk_0037_dirt.png.import | 45 + .../chunks/assets/chunk_0037_grass_lite.png | Bin 0 -> 6317 bytes .../assets/chunk_0037_grass_lite.png.import | 45 + .../chunks/definitions/chunk_0033.tres | 22 + .../chunks/definitions/chunk_0034.tres | 25 + .../chunks/definitions/chunk_0035.tres | 23 + .../chunks/definitions/chunk_0036.tres | 24 + .../chunks/definitions/chunk_0037.tres | 22 + .../chunks/terrain_chunk_catalog.tres | 9 +- world/generation/terrain_chunk_catalog.gd | 13 + world/generation/terrain_chunk_definition.gd | 6 + world/generation/terrain_chunk_generator.gd | 1130 +++++++++++------ world/generation/terrain_chunk_variant.gd | 3 +- 53 files changed, 2039 insertions(+), 386 deletions(-) create mode 100644 world/generation/chunks/assets/chunk_0033.glb create mode 100644 world/generation/chunks/assets/chunk_0033.glb.import create mode 100644 world/generation/chunks/assets/chunk_0033_cliff_wall.png create mode 100644 world/generation/chunks/assets/chunk_0033_cliff_wall.png.import create mode 100644 world/generation/chunks/assets/chunk_0033_dirt.png create mode 100644 world/generation/chunks/assets/chunk_0033_dirt.png.import create mode 100644 world/generation/chunks/assets/chunk_0033_grass_lite.png create mode 100644 world/generation/chunks/assets/chunk_0033_grass_lite.png.import create mode 100644 world/generation/chunks/assets/chunk_0034.glb create mode 100644 world/generation/chunks/assets/chunk_0034.glb.import create mode 100644 world/generation/chunks/assets/chunk_0034_cliff_wall.png create mode 100644 world/generation/chunks/assets/chunk_0034_cliff_wall.png.import create mode 100644 world/generation/chunks/assets/chunk_0034_dirt.png create mode 100644 world/generation/chunks/assets/chunk_0034_dirt.png.import create mode 100644 world/generation/chunks/assets/chunk_0034_grass_lite.png create mode 100644 world/generation/chunks/assets/chunk_0034_grass_lite.png.import create mode 100644 world/generation/chunks/assets/chunk_0035.glb create mode 100644 world/generation/chunks/assets/chunk_0035.glb.import create mode 100644 world/generation/chunks/assets/chunk_0035_cliff_wall.png create mode 100644 world/generation/chunks/assets/chunk_0035_cliff_wall.png.import create mode 100644 world/generation/chunks/assets/chunk_0035_dirt.png create mode 100644 world/generation/chunks/assets/chunk_0035_dirt.png.import create mode 100644 world/generation/chunks/assets/chunk_0035_grass_lite.png create mode 100644 world/generation/chunks/assets/chunk_0035_grass_lite.png.import create mode 100644 world/generation/chunks/assets/chunk_0036.glb create mode 100644 world/generation/chunks/assets/chunk_0036.glb.import create mode 100644 world/generation/chunks/assets/chunk_0036_cliff_wall.png create mode 100644 world/generation/chunks/assets/chunk_0036_cliff_wall.png.import create mode 100644 world/generation/chunks/assets/chunk_0036_dirt.png create mode 100644 world/generation/chunks/assets/chunk_0036_dirt.png.import create mode 100644 world/generation/chunks/assets/chunk_0036_grass_lite.png create mode 100644 world/generation/chunks/assets/chunk_0036_grass_lite.png.import create mode 100644 world/generation/chunks/assets/chunk_0037.glb create mode 100644 world/generation/chunks/assets/chunk_0037.glb.import create mode 100644 world/generation/chunks/assets/chunk_0037_cliff_wall.png create mode 100644 world/generation/chunks/assets/chunk_0037_cliff_wall.png.import create mode 100644 world/generation/chunks/assets/chunk_0037_dirt.png create mode 100644 world/generation/chunks/assets/chunk_0037_dirt.png.import create mode 100644 world/generation/chunks/assets/chunk_0037_grass_lite.png create mode 100644 world/generation/chunks/assets/chunk_0037_grass_lite.png.import create mode 100644 world/generation/chunks/definitions/chunk_0033.tres create mode 100644 world/generation/chunks/definitions/chunk_0034.tres create mode 100644 world/generation/chunks/definitions/chunk_0035.tres create mode 100644 world/generation/chunks/definitions/chunk_0036.tres create mode 100644 world/generation/chunks/definitions/chunk_0037.tres diff --git a/tests/generated_world_runtime_validation.gd b/tests/generated_world_runtime_validation.gd index 0d7d26f..82627a5 100644 --- a/tests/generated_world_runtime_validation.gd +++ b/tests/generated_world_runtime_validation.gd @@ -136,17 +136,30 @@ func _validate_generated_region( assert(maxi( generator._river_feature_footprint_size.x, generator._river_feature_footprint_size.y, - ) >= 7) + ) >= 4) assert(mini( generator._river_feature_footprint_size.x, generator._river_feature_footprint_size.y, - ) == 2) + ) >= 4) assert(generator._river_feature_flow_direction in [ Vector2i.RIGHT, Vector2i.DOWN, Vector2i.LEFT, Vector2i.UP, ]) + assert(generator._river_feature_outlet_direction in [ + Vector2i.RIGHT, + Vector2i.DOWN, + Vector2i.LEFT, + Vector2i.UP, + ]) + assert( + generator._river_feature_flow_direction.x + * generator._river_feature_outlet_direction.x + + generator._river_feature_flow_direction.y + * generator._river_feature_outlet_direction.y + == 0 + ) assert(generator.elevated_cliff_coastal_feature_required) assert(placements.size() == expected_chunk_count) assert(placements[center_index].begins_with("chunk_spawn@")) @@ -226,6 +239,10 @@ func _validate_generated_region( assert(_placement_count(placements, "chunk_0030") == 1) assert(_placement_count(placements, "chunk_0031") == 1) assert(_placement_count(placements, "chunk_0032") == 1) + assert(_placement_count(placements, "chunk_0033") == 1) + assert(_placement_count(placements, "chunk_0034") == 1) + assert(_placement_count(placements, "chunk_0035") == 1) + assert(_placement_count(placements, "chunk_0036") == 1) assert( _placement_count(placements, "chunk_0014") == (2 if has_secondary_elevation else 0) @@ -239,12 +256,15 @@ func _validate_generated_region( assert(_placement_count(placements, "chunk_0022") == 4) assert(_placement_count(placements, "chunk_0023") == 4) var lake_edge_count := _placement_count(placements, "chunk_0017") + var lake_edge_variant_count := _placement_count(placements, "chunk_0037") var lake_fill_count := _placement_count(placements, "chunk_0019") var lake_narrow_count := _placement_count(placements, "chunk_0021") var lake_size := generator._lake_feature_footprint_size.x assert(lake_size in [7, 8]) assert(lake_fill_count == (lake_size - 2) * (lake_size - 2)) - assert(lake_edge_count == (lake_size - 6) * 4) + assert(lake_edge_count + lake_edge_variant_count == (lake_size - 6) * 4) + assert(lake_edge_count > 0) + assert(lake_edge_variant_count > 0) assert(lake_narrow_count == 8) assert(_placement_count(placements, "chunk_9999") == 0) assert(_placement_count(placements, "chunk_9998") == 0) @@ -257,13 +277,14 @@ func _validate_generated_region( == (1 if has_secondary_elevation else 0) ) assert(_placement_count(placements, "chunk_9995") == 0) - var river_length := maxi( - generator._river_feature_footprint_size.x, - generator._river_feature_footprint_size.y, + var river_coordinate_count := generator._river_feature_coordinates.size() + var river_edge_count := ( + _placement_count(placements, "chunk_0024") + + _placement_count(placements, "chunk_0025") ) - assert(river_length in [7, 8]) - assert(_placement_count(placements, "chunk_0024") == river_length - 2) - assert(_placement_count(placements, "chunk_0025") == river_length - 2) + assert(river_coordinate_count >= 12) + assert(generator._river_feature_placements.size() == river_coordinate_count) + assert(river_edge_count == river_coordinate_count - 8) var river_source_coordinates := generator._river_source_coordinates( generator._river_feature_origin, generator._river_feature_footprint_size, @@ -297,7 +318,7 @@ func _validate_generated_region( assert( not generator._coordinate_is_inside_grid( outlet_coordinate - + generator._river_feature_flow_direction + + generator._river_feature_outlet_direction ) ) assert(outlet_coordinates.size() == 2) @@ -379,7 +400,7 @@ func _validate_generated_region( ] = surface_polygon.size() _validate_complete_coastline(generator) assert(fresh_root.get_child_count() == fresh_placement_count) - assert(river_placement_count == river_length * 2) + assert(river_placement_count == river_coordinate_count) assert( polygon_sizes_by_coordinate.size() == 20 + river_placement_count @@ -1025,19 +1046,48 @@ func _validate_decoration_transform( prop.global_position + Vector3.DOWN * 8.0, 1, ) - var prop_body := prop.get_node_or_null( - "TrunkCollision", - ) as CollisionObject3D - if prop_body != null: - query.exclude = [prop_body.get_rid()] + var excluded_colliders: Array[RID] = [] + var decorations := region.get_node("Decorations") as Node3D + for decoration: Node in decorations.get_children(): + var prop_body := decoration.get_node_or_null( + "TrunkCollision", + ) as CollisionObject3D + if prop_body != null: + excluded_colliders.append(prop_body.get_rid()) + query.exclude = excluded_colliders var hit := region.get_world_3d().direct_space_state.intersect_ray(query) + # Stacked cliff walls can overhang a neighboring cell. Match the placement + # sampler by ignoring steep faces until the ray reaches walkable terrain. + while ( + not hit.is_empty() + and absf((hit.get("normal", Vector3.ZERO) as Vector3).dot(Vector3.UP)) + < 0.35 + ): + var steep_collider := hit.get("collider") as CollisionObject3D + assert(steep_collider != null) + excluded_colliders.append(steep_collider.get_rid()) + query.exclude = excluded_colliders + hit = region.get_world_3d().direct_space_state.intersect_ray(query) assert( not hit.is_empty(), "No terrain collision below %s (%s) at %s." % [prop.name, definition.stable_id, prop.global_position], ) var ground_position: Vector3 = hit["position"] - assert(absf(ground_position.y - prop.global_position.y) <= 0.01) + assert( + absf(ground_position.y - prop.global_position.y) <= 0.01, + "Terrain height %s does not match %s (%s) at %s." + % [ + ground_position.y, + prop.name, + definition.stable_id, + "%s in chunk %s; hit %s" % [ + prop.global_position, + prop.get_meta(&"terrain_chunk_coordinate", Vector2i(-1, -1)), + (hit.get("collider") as Node).get_path(), + ], + ], + ) func _validate_tree_gatherable_anchors( diff --git a/tests/terrain_chunk_generator_validation.gd b/tests/terrain_chunk_generator_validation.gd index e8bf158..b8d24cf 100644 --- a/tests/terrain_chunk_generator_validation.gd +++ b/tests/terrain_chunk_generator_validation.gd @@ -37,6 +37,11 @@ const EXPECTED_IDS: Array[String] = [ "chunk_0030", "chunk_0031", "chunk_0032", + "chunk_0033", + "chunk_0034", + "chunk_0035", + "chunk_0036", + "chunk_0037", "chunk_9999", "chunk_9998", "chunk_9997", @@ -88,6 +93,11 @@ const EXPECTED_VARIANT_COUNTS: Dictionary[StringName, int] = { &"chunk_0030": 4, &"chunk_0031": 4, &"chunk_0032": 4, + &"chunk_0033": 4, + &"chunk_0034": 4, + &"chunk_0035": 4, + &"chunk_0036": 4, + &"chunk_0037": 4, &"chunk_9999": 4, &"chunk_9998": 4, &"chunk_9997": 4, @@ -144,6 +154,7 @@ func _validate_catalog() -> void: var cliff_beach_transition_left := CATALOG.definition_for_id(&"chunk_9996") var stream_variant := CATALOG.definition_for_id(&"chunk_0016") var lake_edge := CATALOG.definition_for_id(&"chunk_0017") + var lake_edge_variant := CATALOG.definition_for_id(&"chunk_0037") var lake_corner := CATALOG.definition_for_id(&"chunk_0018") var lake_fill := CATALOG.definition_for_id(&"chunk_0019") var lake_diagonal := CATALOG.definition_for_id(&"chunk_0020") @@ -156,6 +167,10 @@ func _validate_catalog() -> void: var river_source_left := CATALOG.definition_for_id(&"chunk_0030") var river_outlet_right := CATALOG.definition_for_id(&"chunk_0031") var river_outlet_left := CATALOG.definition_for_id(&"chunk_0032") + var river_bend_c := CATALOG.definition_for_id(&"chunk_0033") + var river_bend_b := CATALOG.definition_for_id(&"chunk_0034") + var river_bend_a := CATALOG.definition_for_id(&"chunk_0035") + var river_bend_d := CATALOG.definition_for_id(&"chunk_0036") var river_cap := CATALOG.definition_for_id(&"chunk_9995") var cliff_top := CATALOG.definition_for_id(&"chunk_0009") var cliff_corner := CATALOG.definition_for_id(&"chunk_0010") @@ -184,6 +199,7 @@ func _validate_catalog() -> void: and cliff_beach_transition_left != null and stream_variant != null and lake_edge != null + and lake_edge_variant != null and lake_corner != null and lake_fill != null and lake_diagonal != null @@ -196,6 +212,10 @@ func _validate_catalog() -> void: and river_source_left != null and river_outlet_right != null and river_outlet_left != null + and river_bend_a != null + and river_bend_b != null + and river_bend_c != null + and river_bend_d != null and river_cap != null and cliff_top != null and cliff_corner != null @@ -226,6 +246,7 @@ func _validate_catalog() -> void: and cliff_beach_transition_left != null and stream_variant != null and lake_edge != null + and lake_edge_variant != null and lake_corner != null and lake_fill != null and lake_diagonal != null @@ -238,6 +259,10 @@ func _validate_catalog() -> void: and river_source_left != null and river_outlet_right != null and river_outlet_left != null + and river_bend_a != null + and river_bend_b != null + and river_bend_c != null + and river_bend_d != null and river_cap != null and cliff_top != null and cliff_corner != null @@ -431,6 +456,7 @@ func _validate_catalog() -> void: _check( ( not lake_edge.participates_in_base_solver + and not lake_edge_variant.participates_in_base_solver and not lake_corner.participates_in_base_solver and not lake_fill.participates_in_base_solver and not lake_diagonal.participates_in_base_solver @@ -439,6 +465,14 @@ func _validate_catalog() -> void: and not lake_narrow_to_regular.participates_in_base_solver and lake_edge.water_inlet_edges == lake_edge.water_outlet_edges and lake_edge.water_inlet_edges == 7 + and lake_edge_variant.water_inlet_edges + == lake_edge.water_inlet_edges + and lake_edge_variant.water_outlet_edges + == lake_edge.water_outlet_edges + and lake_edge_variant.water_surface_size + == lake_edge.water_surface_size + and lake_edge_variant.water_surface_offset + == lake_edge.water_surface_offset and lake_corner.water_inlet_edges == lake_corner.water_outlet_edges and lake_corner.water_inlet_edges == 6 @@ -461,6 +495,7 @@ func _validate_catalog() -> void: and lake_narrow_to_regular.water_outlet_edges == 14 and lake_narrow_to_regular.water_surface_polygon.size() == 5 and "lake" in lake_edge.tags + and "lake" in lake_edge_variant.tags and "lake" in lake_corner.tags and "lake" in lake_fill.tags and "lake" in lake_diagonal.tags @@ -478,6 +513,10 @@ func _validate_catalog() -> void: and not river_source_left.participates_in_base_solver and not river_outlet_right.participates_in_base_solver and not river_outlet_left.participates_in_base_solver + and not river_bend_a.participates_in_base_solver + and not river_bend_b.participates_in_base_solver + and not river_bend_c.participates_in_base_solver + and not river_bend_d.participates_in_base_solver and not river_cap.participates_in_base_solver and river_edge.water_inlet_edges == 14 and river_edge.water_outlet_edges == 14 @@ -491,6 +530,16 @@ func _validate_catalog() -> void: and river_outlet_right.water_outlet_edges == 14 and river_outlet_left.water_inlet_edges == 11 and river_outlet_left.water_outlet_edges == 11 + and river_bend_a.water_inlet_edges == 14 + and river_bend_a.water_outlet_edges == 14 + and river_bend_b.water_inlet_edges == 12 + and river_bend_b.water_outlet_edges == 12 + and river_bend_c.water_inlet_edges == 15 + and river_bend_c.water_outlet_edges == 15 + and river_bend_c.continuous_water_seam_edges == 15 + and river_bend_d.water_inlet_edges == 13 + and river_bend_d.water_outlet_edges == 13 + and river_bend_d.continuous_water_seam_edges == 1 and river_cap.water_inlet_edges == 6 and river_cap.water_outlet_edges == 6 and river_edge.water_surface_polygon.size() == 13 @@ -509,11 +558,15 @@ func _validate_catalog() -> void: and "river_source_left" in river_source_left.tags and "river_outlet_right" in river_outlet_right.tags and "river_outlet_left" in river_outlet_left.tags + and "river_bend_a" in river_bend_a.tags + and "river_bend_b" in river_bend_b.tags + and "river_bend_c" in river_bend_c.tags + and "river_bend_d" in river_bend_d.tags and "river" in river_cap.tags ), ( - "The river banks, cliff source, ocean outlet, and legacy caps " - + "must remain connected freshwater chunks." + "The river banks, bend, cliff source, ocean outlet, and legacy " + + "caps must remain connected freshwater chunks." ), ) for cliff_definition: TerrainChunkDefinition in [ @@ -1307,6 +1360,7 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: var lake_regular_to_narrow := _find_variant(generator, &"chunk_0022", 0) var lake_narrow_to_regular := _find_variant(generator, &"chunk_0023", 0) var lake_regular_top := _find_variant(generator, &"chunk_0017", 3) + var lake_regular_variant_top := _find_variant(generator, &"chunk_0037", 3) _check( ( lake_diagonal_northwest != null @@ -1316,6 +1370,7 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: and lake_regular_to_narrow != null and lake_narrow_to_regular != null and lake_regular_top != null + and lake_regular_variant_top != null ), "Every authored diagonal lake perimeter variant must be available.", ) @@ -1327,7 +1382,13 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: and lake_regular_to_narrow != null and lake_narrow_to_regular != null and lake_regular_top != null + and lake_regular_variant_top != null ): + _check( + lake_regular_variant_top.topology_signature(0.001) + == lake_regular_top.topology_signature(0.001), + "Both regular lake edge visuals must expose identical seams.", + ) _check( generator._edges_are_compatible( lake_diagonal_northwest, @@ -1398,11 +1459,36 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: var river_edge_top := _find_variant(generator, &"chunk_0024", 0) var river_edge_variant_top := _find_variant(generator, &"chunk_0025", 0) var river_edge_variant_bottom := _find_variant(generator, &"chunk_0025", 2) + var river_edge_vertical_left := _find_variant(generator, &"chunk_0024", 1) + var river_edge_vertical_right := _find_variant(generator, &"chunk_0025", 3) var river_source_right := _find_variant(generator, &"chunk_0029", 0) var river_source_left := _find_variant(generator, &"chunk_0030", 0) var river_outlet_right := _find_variant(generator, &"chunk_0031", 0) var river_outlet_left := _find_variant(generator, &"chunk_0032", 0) + var river_bend_a := _find_variant(generator, &"chunk_0035", 0) + var river_bend_b := _find_variant(generator, &"chunk_0034", 0) + var river_bend_c := _find_variant(generator, &"chunk_0033", 2) + var river_bend_d := _find_variant(generator, &"chunk_0036", 0) var beach_east := _find_variant(generator, &"chunk_0002", 0) + var canonical_bend_specs := generator._river_bend_placement_specs( + Vector2i(5, 5), + 0, + ) + var rotated_bend_specs := generator._river_bend_placement_specs( + Vector2i(5, 5), + 1, + ) + _check( + ( + canonical_bend_specs.size() == 4 + and canonical_bend_specs[2]["id"] == &"chunk_0033" + and int(canonical_bend_specs[2]["turns"]) == 2 + and rotated_bend_specs.size() == 4 + and rotated_bend_specs[2]["id"] == &"chunk_0033" + and int(rotated_bend_specs[2]["turns"]) == 3 + ), + "River bend C must retain its authored half-turn at every bend rotation.", + ) _check( ( river_cap_northwest != null @@ -1412,15 +1498,21 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: and river_edge_top != null and river_edge_variant_top != null and river_edge_variant_bottom != null + and river_edge_vertical_left != null + and river_edge_vertical_right != null and river_source_right != null and river_source_left != null and river_outlet_right != null and river_outlet_left != null + and river_bend_a != null + and river_bend_b != null + and river_bend_c != null + and river_bend_d != null and beach_east != null ), ( - "Every authored river-bank, source, outlet, and legacy-cap variant " - + "must be available." + "Every authored river-bank, bend, source, outlet, and legacy-cap " + + "variant must be available." ), ) if ( @@ -1431,10 +1523,16 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: and river_edge_top != null and river_edge_variant_top != null and river_edge_variant_bottom != null + and river_edge_vertical_left != null + and river_edge_vertical_right != null and river_source_right != null and river_source_left != null and river_outlet_right != null and river_outlet_left != null + and river_bend_a != null + and river_bend_b != null + and river_bend_c != null + and river_bend_d != null and beach_east != null ): _check( @@ -1458,6 +1556,60 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: ), "The paired cliff source must open directly into both river banks.", ) + _check( + generator._edges_are_compatible( + river_bend_a, + TerrainChunkTopology.Edge.EAST, + river_bend_b, + TerrainChunkTopology.Edge.WEST, + ) + and generator._edges_are_compatible( + river_bend_a, + TerrainChunkTopology.Edge.SOUTH, + river_bend_c, + TerrainChunkTopology.Edge.NORTH, + ) + and generator._edges_are_compatible( + river_bend_b, + TerrainChunkTopology.Edge.SOUTH, + river_bend_d, + TerrainChunkTopology.Edge.NORTH, + ) + and generator._edges_are_compatible( + river_bend_c, + TerrainChunkTopology.Edge.EAST, + river_bend_d, + TerrainChunkTopology.Edge.WEST, + ), + "The four authored river-bend quadrants must form one continuous turn.", + ) + _check( + generator._edges_are_compatible( + river_edge_top, + TerrainChunkTopology.Edge.EAST, + river_bend_a, + TerrainChunkTopology.Edge.WEST, + ) + and generator._edges_are_compatible( + river_edge_variant_bottom, + TerrainChunkTopology.Edge.EAST, + river_bend_c, + TerrainChunkTopology.Edge.WEST, + ) + and generator._edges_are_compatible( + river_bend_c, + TerrainChunkTopology.Edge.SOUTH, + river_edge_vertical_left, + TerrainChunkTopology.Edge.NORTH, + ) + and generator._edges_are_compatible( + river_bend_d, + TerrainChunkTopology.Edge.SOUTH, + river_edge_vertical_right, + TerrainChunkTopology.Edge.NORTH, + ), + "The bend must connect both incoming and outgoing authored river banks.", + ) _check( generator._edges_are_compatible( river_edge_top, @@ -1598,8 +1750,8 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: func _validate_generation_summary(generator: TerrainChunkGenerator) -> void: var summary := generator._build_summary() _check( - int(summary.get("variant_count", 0)) == 150, - "The current catalog must expose all 150 authored rotations.", + int(summary.get("variant_count", 0)) == 170, + "The current catalog must expose all 170 authored rotations.", ) _check( int(summary.get("solver_variant_count", 0)) diff --git a/world/generation/chunks/assets/chunk_0017.glb b/world/generation/chunks/assets/chunk_0017.glb index 89e449a7a4fc79962148454f777e67d2e590280d..474fa97c1ef2da2dedeb07a19eb8f2e5cebe1b7b 100644 GIT binary patch delta 3635 zcmbVNdu&rx82{R}Tidl;H|SazTSpliuu^(&AG;mcb0_bifDw@(h%kx}CLk;zAh|%u zA}R*BO2F{az%UU3ov%dJTcR;R<*i}FgoqlW28Ea?COq`}?znh1*8Slh=llJ>_c{0U zd_9&i9qur>o^F~p&I|y-CV(;9T;H4G+pe!75m)z`qJ37)ZB8wpvplsRwLGG%Towxl1JBHTE>QQx@Ng&|t(BspC`wU5jEj<}9UFp0`jJxIv&f>7dOcS*3z9124Ra?1Nr*{8Z6p>K!il(uc`v{r9ZB1F4wO_1WaYuo`fvIvsY*(sCX$08-L)5ZMB zj%ZAbuA9BC;;T7o$hlD2pTXY`O#gUi;&#ViO+Is|y*u9$Vww??jRSPnX*5^JJ1-aN zHGAXH&GyWL*sD>&gnJ6|<_%l5Bs%uo_Gfr*G$8w^;2wQLz41HkpXzl^-&vaBxlxDg zpD#SCDReSJ>4{TvJ#J{|iZ>b0jY4FnLX_JZH{wOpGI{e!Ylh;HE4FOJPCJXhf?~f0q)msyNmD!wK0&y$UIm{a!qX)5y5o7hk@cZU>K^=U(Im7&C z;LnoHP8Ah?&-^yB*-g7;ZTPg=GU2Ujo{aa=fZVa@aoOyCoss?Q(Ng)+U7h?Fblt1R zU0USLP~MUY1(iQA-QhtQbtH$sCetpPE?Rk!6FVR;n>)kG<^|5Dzvp__C2Kd zov0gF3VDzVrMUbs0Ls9M(h4RBz#zy+nGZIo06REQI-wG3pbr$GEP|n+R6#WqLKUt8 z2*PmiqVz%ugrP6^Q2HQ*nitEK;2HoP=nv&6%b_0>!$25}axl0tyAazI;0oZ2%)zRF zs|w6842GZ_0v2$903%S202gj4AG_HsD1vR1TvvR`unpg&o4u_X&2^qxy2VCTGbk z4 zyBVL5&HnO|xhxQ`NnW=6ko<1fYUY0Ff#kTho9)@`rED>K|6MWpS-%g`2Y*@0c8rcE zZywl{CcDy;gAd|2l+Dg>l;1=)JNG3fruh?ajxKio1pJ10yE?ThsNA{XVCVX+X9oU* zI-GB*GjQeGCp7Z&2w%6&3X- zI1^~>Ll0Rw!zgG16>9Kz<${n68xh# z>@*Dc$8Ff@(Hn1)-m_un-!{El!%qC}`y8s#12r7P`L}1-=}qDvYMB1p|IboB{C%UQ zuAC(k&MWq03MW*{q!W^!cr8bJ3jZHTCp>=qnAYY2-B0++dkvcJlX)8X38_xyiBq~x zNcxN6gL*z;(05P^j0@@ch>A=NmYu0iQvt#PyjnBfg&FVAjrU|lX~o-f;=Sde%)?uy ztG1)GB5X$tWk)v5HoC8qX=aYW^A51dA!Tf-+^sh6DO!MU0d7! IYN+%43jm7$r~m)} delta 798 zcmZ`%&ubGw6rSB|ez&A;k|q#oBzkJLb!K*UG8-k0mtOn{O)aRUTAFIWAD|H}66mF8 zjqm0`@n%4Qty^s!7fi?Gtbf*Qm<45*u3x@as$Q63vo80z<4Vc| zcUgtOYpZD}I2oCO`EU^mu_A1Rized`j~;}#;o>Q=N6bCtctQv!sgO)K_6(h+ig}LW z$Wkt-lD4~yiq?&P+qsd3A%=FnND-q0u_^e9kwm{b<|m@lV?h_#iY{X5Q?xb|)Uf$t z>?m{+WAHpyMjVIZ$?~|wO;H+G*wdoz_zQ zH|G4@La9E${Qb)Ua)0sTFwgmaQ1@w#Nune|Ogt9;jUf`oJ4}rJO8RsD@L==)+`H^t z4LS0^7_1|9GK3SfnxOI~y>ke*8?^l9+p|}Xe=OEDuJtDUjee%CbB#JTu-zmEo)E00 LpZ0gpRkObUhdSkj diff --git a/world/generation/chunks/assets/chunk_0033.glb b/world/generation/chunks/assets/chunk_0033.glb new file mode 100644 index 0000000000000000000000000000000000000000..909f7f9346ba34107d235dc6e4bbcdd01905a230 GIT binary patch literal 25700 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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0033_dirt.png.import b/world/generation/chunks/assets/chunk_0033_dirt.png.import new file mode 100644 index 0000000..5d3f72d --- /dev/null +++ b/world/generation/chunks/assets/chunk_0033_dirt.png.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bdo5u7ulyf420" +path.s3tc="res://.godot/imported/chunk_0033_dirt.png-922aa321752269bafb91e9d4b7af875e.s3tc.ctex" +path.etc2="res://.godot/imported/chunk_0033_dirt.png-922aa321752269bafb91e9d4b7af875e.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "07d90b3c46a4c3d0c172bed143dc9436" +} + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0033_dirt.png" +dest_files=["res://.godot/imported/chunk_0033_dirt.png-922aa321752269bafb91e9d4b7af875e.s3tc.ctex", "res://.godot/imported/chunk_0033_dirt.png-922aa321752269bafb91e9d4b7af875e.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/world/generation/chunks/assets/chunk_0033_grass_lite.png b/world/generation/chunks/assets/chunk_0033_grass_lite.png new file mode 100644 index 0000000000000000000000000000000000000000..52c7ccb8088ddfae88f9b861a807f1de2d38f855 GIT binary patch literal 6317 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

}Y(i5lbd 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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0034_dirt.png.import b/world/generation/chunks/assets/chunk_0034_dirt.png.import new file mode 100644 index 0000000..8a37ca8 --- /dev/null +++ b/world/generation/chunks/assets/chunk_0034_dirt.png.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://brbxnlixypkxp" +path.s3tc="res://.godot/imported/chunk_0034_dirt.png-1bf0eb5903180997b50f578932bd52c6.s3tc.ctex" +path.etc2="res://.godot/imported/chunk_0034_dirt.png-1bf0eb5903180997b50f578932bd52c6.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "07d90b3c46a4c3d0c172bed143dc9436" +} + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0034_dirt.png" +dest_files=["res://.godot/imported/chunk_0034_dirt.png-1bf0eb5903180997b50f578932bd52c6.s3tc.ctex", "res://.godot/imported/chunk_0034_dirt.png-1bf0eb5903180997b50f578932bd52c6.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/world/generation/chunks/assets/chunk_0034_grass_lite.png b/world/generation/chunks/assets/chunk_0034_grass_lite.png new file mode 100644 index 0000000000000000000000000000000000000000..52c7ccb8088ddfae88f9b861a807f1de2d38f855 GIT binary patch literal 6317 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

-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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0035_dirt.png.import b/world/generation/chunks/assets/chunk_0035_dirt.png.import new file mode 100644 index 0000000..196b777 --- /dev/null +++ b/world/generation/chunks/assets/chunk_0035_dirt.png.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dc1nrektrgqkp" +path.s3tc="res://.godot/imported/chunk_0035_dirt.png-58b1612acd4423920b9fa50fc3926b47.s3tc.ctex" +path.etc2="res://.godot/imported/chunk_0035_dirt.png-58b1612acd4423920b9fa50fc3926b47.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "07d90b3c46a4c3d0c172bed143dc9436" +} + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0035_dirt.png" +dest_files=["res://.godot/imported/chunk_0035_dirt.png-58b1612acd4423920b9fa50fc3926b47.s3tc.ctex", "res://.godot/imported/chunk_0035_dirt.png-58b1612acd4423920b9fa50fc3926b47.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/world/generation/chunks/assets/chunk_0035_grass_lite.png b/world/generation/chunks/assets/chunk_0035_grass_lite.png new file mode 100644 index 0000000000000000000000000000000000000000..52c7ccb8088ddfae88f9b861a807f1de2d38f855 GIT binary patch literal 6317 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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0036_dirt.png.import b/world/generation/chunks/assets/chunk_0036_dirt.png.import new file mode 100644 index 0000000..56830df --- /dev/null +++ b/world/generation/chunks/assets/chunk_0036_dirt.png.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://tb7yncykrheo" +path.s3tc="res://.godot/imported/chunk_0036_dirt.png-38c14a27c0e4c7f325f880966042443b.s3tc.ctex" +path.etc2="res://.godot/imported/chunk_0036_dirt.png-38c14a27c0e4c7f325f880966042443b.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "07d90b3c46a4c3d0c172bed143dc9436" +} + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0036_dirt.png" +dest_files=["res://.godot/imported/chunk_0036_dirt.png-38c14a27c0e4c7f325f880966042443b.s3tc.ctex", "res://.godot/imported/chunk_0036_dirt.png-38c14a27c0e4c7f325f880966042443b.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/world/generation/chunks/assets/chunk_0036_grass_lite.png b/world/generation/chunks/assets/chunk_0036_grass_lite.png new file mode 100644 index 0000000000000000000000000000000000000000..52c7ccb8088ddfae88f9b861a807f1de2d38f855 GIT binary patch literal 6317 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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0037_dirt.png.import b/world/generation/chunks/assets/chunk_0037_dirt.png.import new file mode 100644 index 0000000..63ee56e --- /dev/null +++ b/world/generation/chunks/assets/chunk_0037_dirt.png.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cie8oie0c845v" +path.s3tc="res://.godot/imported/chunk_0037_dirt.png-19715c4c1848faa763210a57f6770bc8.s3tc.ctex" +path.etc2="res://.godot/imported/chunk_0037_dirt.png-19715c4c1848faa763210a57f6770bc8.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "07d90b3c46a4c3d0c172bed143dc9436" +} + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0037_dirt.png" +dest_files=["res://.godot/imported/chunk_0037_dirt.png-19715c4c1848faa763210a57f6770bc8.s3tc.ctex", "res://.godot/imported/chunk_0037_dirt.png-19715c4c1848faa763210a57f6770bc8.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/world/generation/chunks/assets/chunk_0037_grass_lite.png b/world/generation/chunks/assets/chunk_0037_grass_lite.png new file mode 100644 index 0000000000000000000000000000000000000000..52c7ccb8088ddfae88f9b861a807f1de2d38f855 GIT binary patch literal 6317 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 PackedStringArray: % definition.stable_id ) var has_fresh_water := "fresh_water" in definition.tags + var water_connector_edges := ( + definition.water_inlet_edges | definition.water_outlet_edges + ) + if ( + definition.continuous_water_seam_edges + & ~water_connector_edges + ) != 0: + errors.append( + ( + "%s relaxes a continuous-water seam on an edge without " + + "a water connector." + ) % definition.stable_id + ) var has_rectangular_water_footprint := ( definition.water_surface_size.x > 0.0 and definition.water_surface_size.y > 0.0 diff --git a/world/generation/terrain_chunk_definition.gd b/world/generation/terrain_chunk_definition.gd index 9f33e34..dcbceca 100644 --- a/world/generation/terrain_chunk_definition.gd +++ b/world/generation/terrain_chunk_definition.gd @@ -92,6 +92,12 @@ var edge_profile_tolerance_override := 0.0 @export_flags("North", "East", "South", "West") var buried_cliff_seam_edges := 0 @export_flags("North", "East", "South", "West") var water_inlet_edges := 0 @export_flags("North", "East", "South", "West") var water_outlet_edges := 0 +## Authored multi-cell water assemblies may deliberately carry a broad, +## continuous channel across a seam whose bank control points do not match +## one-for-one. These edges relax only the height-profile comparison; both +## neighboring edges must still expose compatible water connectors. +@export_flags("North", "East", "South", "West") +var continuous_water_seam_edges := 0 ## Optional generated water footprint in the chunk's unrotated local X/Z plane. ## Zero means this chunk contributes no standalone water surface. @export var water_surface_size := Vector2.ZERO diff --git a/world/generation/terrain_chunk_generator.gd b/world/generation/terrain_chunk_generator.gd index cc49494..1098caf 100644 --- a/world/generation/terrain_chunk_generator.gd +++ b/world/generation/terrain_chunk_generator.gd @@ -38,6 +38,7 @@ const MAX_PACKED_SOLVER_VARIANTS := 62 @export_group("Freshwater Lake Feature") @export var lake_feature_enabled := false @export var lake_edge_chunk_id: StringName = &"chunk_0017" +@export var lake_edge_variant_chunk_id: StringName = &"chunk_0037" @export var lake_corner_chunk_id: StringName = &"chunk_0018" @export var lake_fill_chunk_id: StringName = &"chunk_0019" @export var lake_diagonal_chunk_id: StringName = &"chunk_0020" @@ -57,6 +58,10 @@ const MAX_PACKED_SOLVER_VARIANTS := 62 @export var river_source_left_chunk_id: StringName = &"chunk_0030" @export var river_outlet_right_chunk_id: StringName = &"chunk_0031" @export var river_outlet_left_chunk_id: StringName = &"chunk_0032" +@export var river_bend_c_chunk_id: StringName = &"chunk_0033" +@export var river_bend_b_chunk_id: StringName = &"chunk_0034" +@export var river_bend_a_chunk_id: StringName = &"chunk_0035" +@export var river_bend_d_chunk_id: StringName = &"chunk_0036" @export_range(5, 8, 1) var river_minimum_length := 5 @export_range(5, 8, 1) var river_maximum_length := 5 @export_group("") @@ -136,9 +141,13 @@ var _lake_feature_reserved_grass_indices: Dictionary[int, bool] = {} var _river_feature_origin := Vector2i(-1, -1) var _river_feature_footprint_size := Vector2i.ZERO var _river_feature_flow_direction := Vector2i.ZERO +var _river_feature_outlet_direction := Vector2i.ZERO var _river_feature_reserved_grass_indices: Dictionary[int, bool] = {} var _river_feature_candidate_order: Array[Dictionary] = [] var _river_feature_candidate_index := -1 +var _river_feature_placements: Array[Dictionary] = [] +var _river_feature_coordinates: Dictionary[Vector2i, bool] = {} +var _river_feature_source_coordinates: Array[Vector2i] = [] var _stacked_elevated_placements: Array[Dictionary] = [] @@ -1460,9 +1469,8 @@ func _elevated_feature_overlaps_river( center: Vector2i, clearance_radius: int, ) -> bool: - if _river_feature_origin.x < 0: + if _river_feature_coordinates.is_empty(): return false - var river_end := _river_feature_origin + _river_feature_footprint_size for row: int in range( center.y - clearance_radius, center.y + clearance_radius + 1, @@ -1471,12 +1479,13 @@ func _elevated_feature_overlaps_river( center.x - clearance_radius, center.x + clearance_radius + 1, ): - if ( - column >= _river_feature_origin.x - and column < river_end.x - and row >= _river_feature_origin.y - and row < river_end.y - ): + var coordinate := Vector2i(column, row) + if _river_feature_coordinates.has(coordinate): + return true + if not _coordinate_is_inside_grid(coordinate): + continue + var index := coordinate.y * grid_size.x + coordinate.x + if _river_feature_reserved_grass_indices.has(index): return true return false @@ -1510,6 +1519,9 @@ func _prepare_lake_feature_region(report_no_room_error := true) -> bool: if not lake_feature_enabled: return true var edge_definition := catalog.definition_for_id(lake_edge_chunk_id) + var edge_variant_definition := catalog.definition_for_id( + lake_edge_variant_chunk_id + ) var corner_definition := catalog.definition_for_id(lake_corner_chunk_id) var fill_definition := catalog.definition_for_id(lake_fill_chunk_id) var diagonal_definition := catalog.definition_for_id(lake_diagonal_chunk_id) @@ -1520,11 +1532,18 @@ func _prepare_lake_feature_region(report_no_room_error := true) -> bool: var narrow_to_regular_definition := catalog.definition_for_id( lake_narrow_to_regular_chunk_id ) - if edge_definition == null or corner_definition == null: - push_error("Lake feature references missing edge or corner chunks.") + if ( + edge_definition == null + or edge_variant_definition == null + or corner_definition == null + ): + push_error( + "Lake feature references missing edge, edge variant, or corner chunks." + ) return false if ( edge_definition.participates_in_base_solver + or edge_variant_definition.participates_in_base_solver or corner_definition.participates_in_base_solver or ( fill_definition != null @@ -1677,9 +1696,13 @@ func _prepare_river_feature_region(report_no_room_error := true) -> bool: _river_feature_origin = Vector2i(-1, -1) _river_feature_footprint_size = Vector2i.ZERO _river_feature_flow_direction = Vector2i.ZERO + _river_feature_outlet_direction = Vector2i.ZERO _river_feature_reserved_grass_indices.clear() _river_feature_candidate_order.clear() _river_feature_candidate_index = -1 + _river_feature_placements.clear() + _river_feature_coordinates.clear() + _river_feature_source_coordinates.clear() if not river_feature_enabled: return true for stable_id: StringName in [ @@ -1689,6 +1712,10 @@ func _prepare_river_feature_region(report_no_room_error := true) -> bool: river_source_left_chunk_id, river_outlet_right_chunk_id, river_outlet_left_chunk_id, + river_bend_a_chunk_id, + river_bend_b_chunk_id, + river_bend_c_chunk_id, + river_bend_d_chunk_id, ]: var definition := catalog.definition_for_id(stable_id) if definition == null: @@ -1750,62 +1777,56 @@ func _select_river_feature_region(candidate_index: int) -> bool: ): return false var selected: Dictionary = _river_feature_candidate_order[candidate_index] + if not _river_feature_candidate_is_valid(selected): + return false var origin: Vector2i = selected.get("origin", Vector2i(-1, -1)) var footprint_size: Vector2i = selected.get("size", Vector2i.ZERO) var flow_direction: Vector2i = selected.get( "flow_direction", Vector2i.ZERO, ) - var source_coordinates := _river_source_coordinates( - origin, - footprint_size, - flow_direction, + var outlet_direction: Vector2i = selected.get( + "outlet_direction", + Vector2i.ZERO, ) - var source_lookup: Dictionary[Vector2i, bool] = {} - var source_exit_lookup: Dictionary[Vector2i, bool] = {} - for coordinate: Vector2i in source_coordinates: - source_lookup[coordinate] = true - source_exit_lookup[coordinate + flow_direction] = true - for row: int in range(origin.y, origin.y + footprint_size.y): - for column: int in range(origin.x, origin.x + footprint_size.x): - var coordinate := Vector2i(column, row) - var index := row * grid_size.x + column - if ( - ( - _elevated_feature_reserved_grass_indices.has(index) - and not source_lookup.has(coordinate) - and not source_exit_lookup.has(coordinate) - ) - or _lake_feature_reserved_grass_indices.has(index) - ): - return false - for coordinate: Vector2i in source_coordinates: - var index := coordinate.y * grid_size.x + coordinate.x - if not _elevated_feature_reserved_grass_indices.has(index): - return false + var source_coordinates: Array[Vector2i] = [] + source_coordinates.assign(selected.get("source_coordinates", [])) + var placements: Array[Dictionary] = [] + placements.assign(selected.get("placements", [])) + var coordinates: Array[Vector2i] = [] + coordinates.assign(selected.get("coordinates", [])) _river_feature_candidate_index = candidate_index _river_feature_origin = origin _river_feature_footprint_size = footprint_size _river_feature_flow_direction = flow_direction + _river_feature_outlet_direction = outlet_direction + _river_feature_source_coordinates.assign(source_coordinates) + _river_feature_placements.assign(placements) + _river_feature_coordinates.clear() + for coordinate: Vector2i in coordinates: + _river_feature_coordinates[coordinate] = true _river_feature_reserved_grass_indices.clear() - var river_end := _river_feature_origin + _river_feature_footprint_size - for row: int in range( - _river_feature_origin.y - RIVER_FEATURE_CLEARANCE, - river_end.y + RIVER_FEATURE_CLEARANCE, - ): - for column: int in range( - _river_feature_origin.x - RIVER_FEATURE_CLEARANCE, - river_end.x + RIVER_FEATURE_CLEARANCE, + for river_coordinate: Vector2i in coordinates: + for row_offset: int in range( + -RIVER_FEATURE_CLEARANCE, + RIVER_FEATURE_CLEARANCE + 1, ): - var coordinate := Vector2i(column, row) - if ( - not _coordinate_is_inside_grid(coordinate) - or _coordinate_is_on_boundary(coordinate) + for column_offset: int in range( + -RIVER_FEATURE_CLEARANCE, + RIVER_FEATURE_CLEARANCE + 1, ): - continue - _river_feature_reserved_grass_indices[ - row * grid_size.x + column - ] = true + var coordinate := ( + river_coordinate + + Vector2i(column_offset, row_offset) + ) + if ( + not _coordinate_is_inside_grid(coordinate) + or _coordinate_is_on_boundary(coordinate) + ): + continue + _river_feature_reserved_grass_indices[ + coordinate.y * grid_size.x + coordinate.x + ] = true return true @@ -1823,129 +1844,614 @@ func _river_feature_candidates( ] for flow_direction: Vector2i in directions: for cross_offset: int in [-1, 0]: - var footprint_size := ( - Vector2i(length, 2) - if flow_direction.x != 0 - else Vector2i(2, length) - ) - var origin := Vector2i.ZERO - match flow_direction: - Vector2i.RIGHT: - origin = Vector2i( - _elevated_feature_center.x + ELEVATED_FEATURE_RADIUS, - _elevated_feature_center.y + cross_offset, - ) - Vector2i.LEFT: - origin = Vector2i( - _elevated_feature_center.x - - ELEVATED_FEATURE_RADIUS - - length - + 1, - _elevated_feature_center.y + cross_offset, - ) - Vector2i.DOWN: - origin = Vector2i( - _elevated_feature_center.x + cross_offset, - _elevated_feature_center.y + ELEVATED_FEATURE_RADIUS, - ) - Vector2i.UP: - origin = Vector2i( - _elevated_feature_center.x + cross_offset, - _elevated_feature_center.y - - ELEVATED_FEATURE_RADIUS - - length - + 1, - ) - if _river_feature_candidate_is_valid( - origin, - footprint_size, + var source_coordinates := _river_source_pair_for_direction( flow_direction, - ): - result.append({ - "origin": origin, - "size": footprint_size, - "flow_direction": flow_direction, - }) + cross_offset, + ) + for bend_distance: int in range(2, maxi(3, length - 1)): + var target_entry: Array[Vector2i] = [] + for coordinate: Vector2i in source_coordinates: + target_entry.append( + coordinate + flow_direction * bend_distance + ) + for bend_turns: int in 4: + var sides := _river_bend_sides(bend_turns) + for entry_index: int in 2: + var entry_side: Dictionary = sides[entry_index] + if ( + entry_side.get("normal", Vector2i.ZERO) + != -flow_direction + ): + continue + var exit_side: Dictionary = sides[1 - entry_index] + var entry_offsets: Array[Vector2i] = [] + entry_offsets.assign(entry_side.get("offsets", [])) + var bend_origin := _river_pair_translation( + target_entry, + entry_offsets, + ) + if bend_origin.x == -1000000: + continue + var exit_offsets: Array[Vector2i] = [] + exit_offsets.assign(exit_side.get("offsets", [])) + var exit_coordinates: Array[Vector2i] = [] + for offset: Vector2i in exit_offsets: + exit_coordinates.append(bend_origin + offset) + var outlet_direction: Vector2i = exit_side.get( + "normal", + Vector2i.ZERO, + ) + var outlet_distance := _river_distance_to_boundary( + exit_coordinates, + outlet_direction, + ) + if ( + outlet_distance < 2 + or bend_distance + outlet_distance + 2 < length + ): + continue + var candidate := _build_river_feature_candidate( + source_coordinates, + flow_direction, + bend_origin, + bend_turns, + bend_distance, + exit_coordinates, + outlet_direction, + outlet_distance, + ) + if _river_feature_candidate_is_valid(candidate): + result.append(candidate) return result func _river_feature_candidate_is_valid( - origin: Vector2i, - footprint_size: Vector2i, - flow_direction: Vector2i, + candidate: Dictionary, ) -> bool: - var river_end := origin + footprint_size - var boundary_clearance := RIVER_FEATURE_CLEARANCE + 1 - if flow_direction.x != 0: - if ( - origin.y < boundary_clearance - or river_end.y > grid_size.y - boundary_clearance - ): - return false - if ( - flow_direction == Vector2i.RIGHT - and river_end.x != grid_size.x - ) or ( - flow_direction == Vector2i.LEFT - and origin.x != 0 - ): - return false - else: - if ( - origin.x < boundary_clearance - or river_end.x > grid_size.x - boundary_clearance - ): - return false - if ( - flow_direction == Vector2i.DOWN - and river_end.y != grid_size.y - ) or ( - flow_direction == Vector2i.UP - and origin.y != 0 - ): - return false + if candidate.is_empty(): + return false + var flow_direction: Vector2i = candidate.get( + "flow_direction", + Vector2i.ZERO, + ) + var outlet_direction: Vector2i = candidate.get( + "outlet_direction", + Vector2i.ZERO, + ) + if ( + flow_direction == Vector2i.ZERO + or outlet_direction == Vector2i.ZERO + or ( + flow_direction.x * outlet_direction.x + + flow_direction.y * outlet_direction.y + ) != 0 + ): + return false + var coordinates: Array[Vector2i] = [] + coordinates.assign(candidate.get("coordinates", [])) + var source_coordinates: Array[Vector2i] = [] + source_coordinates.assign(candidate.get("source_coordinates", [])) + var outlet_coordinates: Array[Vector2i] = [] + outlet_coordinates.assign(candidate.get("outlet_coordinates", [])) + if ( + coordinates.is_empty() + or source_coordinates.size() != 2 + or outlet_coordinates.size() != 2 + ): + return false var center := Vector2i(grid_size.x / 2, grid_size.y / 2) var source_lookup: Dictionary[Vector2i, bool] = {} var source_exit_lookup: Dictionary[Vector2i, bool] = {} - for coordinate: Vector2i in _river_source_coordinates( - origin, - footprint_size, - flow_direction, - ): + var outlet_lookup: Dictionary[Vector2i, bool] = {} + var outlet_approach_lookup: Dictionary[Vector2i, bool] = {} + for coordinate: Vector2i in source_coordinates: source_lookup[coordinate] = true source_exit_lookup[coordinate + flow_direction] = true - if source_lookup.size() != 2: - return false - for row: int in range(origin.y, river_end.y): - for column: int in range(origin.x, river_end.x): - var coordinate := Vector2i(column, row) - var index := row * grid_size.x + column - var center_distance := ( - absi(coordinate.x - center.x) - + absi(coordinate.y - center.y) + for coordinate: Vector2i in outlet_coordinates: + outlet_lookup[coordinate] = true + outlet_approach_lookup[coordinate - outlet_direction] = true + var coordinate_lookup: Dictionary[Vector2i, bool] = {} + for coordinate: Vector2i in coordinates: + if not _coordinate_is_inside_grid(coordinate): + return false + if coordinate_lookup.has(coordinate): + return false + var boundary_distance := _distance_from_map_boundary(coordinate) + if ( + boundary_distance == 0 + and not outlet_lookup.has(coordinate) + ): + return false + if ( + boundary_distance == 1 + and not outlet_approach_lookup.has(coordinate) + ): + return false + coordinate_lookup[coordinate] = true + var index := coordinate.y * grid_size.x + coordinate.x + var center_distance := ( + absi(coordinate.x - center.x) + + absi(coordinate.y - center.y) + ) + if ( + center_distance <= 1 + or _lake_feature_reserved_grass_indices.has(index) + or ( + _elevated_feature_reserved_grass_indices.has(index) + and not source_lookup.has(coordinate) + and not source_exit_lookup.has(coordinate) ) - if ( - center_distance <= 1 - or _lake_feature_reserved_grass_indices.has(index) - or ( - _elevated_feature_reserved_grass_indices.has(index) - and not source_lookup.has(coordinate) - and not source_exit_lookup.has(coordinate) - ) - ): - return false + ): + return false for coordinate: Vector2i in source_lookup: var index := coordinate.y * grid_size.x + coordinate.x if not _elevated_feature_reserved_grass_indices.has(index): return false + for coordinate: Vector2i in outlet_coordinates: + if ( + not _coordinate_is_on_boundary(coordinate) + or _coordinate_is_inside_grid(coordinate + outlet_direction) + ): + return false + var ordered_outlet := _river_sorted_pair( + outlet_coordinates, + outlet_direction, + ) + var tangent := ( + Vector2i.DOWN + if outlet_direction.x != 0 + else Vector2i.RIGHT + ) + for beach_coordinate: Vector2i in [ + ordered_outlet[0] - tangent, + ordered_outlet[1] + tangent, + ]: + if ( + not _coordinate_is_inside_grid(beach_coordinate) + or not _coordinate_is_on_boundary(beach_coordinate) + or coordinate_lookup.has(beach_coordinate) + ): + return false return true +func _river_source_pair_for_direction( + flow_direction: Vector2i, + cross_offset: int, +) -> Array[Vector2i]: + match flow_direction: + Vector2i.RIGHT: + return [ + Vector2i( + _elevated_feature_center.x + ELEVATED_FEATURE_RADIUS, + _elevated_feature_center.y + cross_offset, + ), + Vector2i( + _elevated_feature_center.x + ELEVATED_FEATURE_RADIUS, + _elevated_feature_center.y + cross_offset + 1, + ), + ] + Vector2i.LEFT: + return [ + Vector2i( + _elevated_feature_center.x - ELEVATED_FEATURE_RADIUS, + _elevated_feature_center.y + cross_offset, + ), + Vector2i( + _elevated_feature_center.x - ELEVATED_FEATURE_RADIUS, + _elevated_feature_center.y + cross_offset + 1, + ), + ] + Vector2i.DOWN: + return [ + Vector2i( + _elevated_feature_center.x + cross_offset, + _elevated_feature_center.y + ELEVATED_FEATURE_RADIUS, + ), + Vector2i( + _elevated_feature_center.x + cross_offset + 1, + _elevated_feature_center.y + ELEVATED_FEATURE_RADIUS, + ), + ] + Vector2i.UP: + return [ + Vector2i( + _elevated_feature_center.x + cross_offset, + _elevated_feature_center.y - ELEVATED_FEATURE_RADIUS, + ), + Vector2i( + _elevated_feature_center.x + cross_offset + 1, + _elevated_feature_center.y - ELEVATED_FEATURE_RADIUS, + ), + ] + return [] + + +func _river_bend_sides(quarter_turns: int) -> Array[Dictionary]: + var west_offsets: Array[Vector2i] = [Vector2i(0, 0), Vector2i(0, 1)] + var south_offsets: Array[Vector2i] = [Vector2i(0, 1), Vector2i(1, 1)] + return [ + { + "normal": _rotate_grid_direction(Vector2i.LEFT, quarter_turns), + "offsets": _rotate_river_bend_offsets( + west_offsets, + quarter_turns, + ), + }, + { + "normal": _rotate_grid_direction(Vector2i.DOWN, quarter_turns), + "offsets": _rotate_river_bend_offsets( + south_offsets, + quarter_turns, + ), + }, + ] + + +func _rotate_river_bend_offsets( + offsets: Array[Vector2i], + quarter_turns: int, +) -> Array[Vector2i]: + var result: Array[Vector2i] = [] + for offset: Vector2i in offsets: + var rotated := offset + for _turn: int in posmod(quarter_turns, 4): + rotated = Vector2i(rotated.y, 1 - rotated.x) + result.append(rotated) + return result + + +func _rotate_grid_direction( + direction: Vector2i, + quarter_turns: int, +) -> Vector2i: + var result := direction + for _turn: int in posmod(quarter_turns, 4): + result = Vector2i(result.y, -result.x) + return result + + +func _river_pair_translation( + target_coordinates: Array[Vector2i], + local_offsets: Array[Vector2i], +) -> Vector2i: + if target_coordinates.size() != 2 or local_offsets.size() != 2: + return Vector2i(-1000000, -1000000) + for reversed_offsets: bool in [false, true]: + var first_offset := local_offsets[1 if reversed_offsets else 0] + var second_offset := local_offsets[0 if reversed_offsets else 1] + var origin := target_coordinates[0] - first_offset + if origin + second_offset == target_coordinates[1]: + return origin + return Vector2i(-1000000, -1000000) + + +func _river_distance_to_boundary( + pair: Array[Vector2i], + direction: Vector2i, +) -> int: + if pair.size() != 2: + return -1 + match direction: + Vector2i.RIGHT: + return grid_size.x - 1 - pair[0].x + Vector2i.LEFT: + return pair[0].x + Vector2i.DOWN: + return grid_size.y - 1 - pair[0].y + Vector2i.UP: + return pair[0].y + return -1 + + +func _build_river_feature_candidate( + source_coordinates: Array[Vector2i], + flow_direction: Vector2i, + bend_origin: Vector2i, + bend_turns: int, + bend_distance: int, + exit_coordinates: Array[Vector2i], + outlet_direction: Vector2i, + outlet_distance: int, +) -> Dictionary: + var placements: Array[Dictionary] = [] + placements.append_array( + _river_endpoint_pair_specs( + source_coordinates, + flow_direction, + true, + ) + ) + var phase := posmod( + generation_seed + + source_coordinates[0].x + + source_coordinates[0].y + + bend_origin.x + + bend_origin.y, + 2, + ) + var station_index := 0 + for step: int in range(1, bend_distance): + var pair: Array[Vector2i] = [] + for coordinate: Vector2i in source_coordinates: + pair.append(coordinate + flow_direction * step) + placements.append_array( + _river_edge_pair_specs( + pair, + flow_direction, + phase + station_index, + ) + ) + station_index += 1 + placements.append_array( + _river_bend_placement_specs(bend_origin, bend_turns) + ) + for step: int in range(1, outlet_distance): + var pair: Array[Vector2i] = [] + for coordinate: Vector2i in exit_coordinates: + pair.append(coordinate + outlet_direction * step) + placements.append_array( + _river_edge_pair_specs( + pair, + outlet_direction, + phase + station_index, + ) + ) + station_index += 1 + var outlet_coordinates: Array[Vector2i] = [] + for coordinate: Vector2i in exit_coordinates: + outlet_coordinates.append( + coordinate + outlet_direction * outlet_distance + ) + placements.append_array( + _river_endpoint_pair_specs( + outlet_coordinates, + outlet_direction, + false, + ) + ) + var coordinates: Array[Vector2i] = [] + var minimum := Vector2i(1000000, 1000000) + var maximum := Vector2i(-1000000, -1000000) + for spec: Dictionary in placements: + var coordinate := spec.get("coordinate", Vector2i(-1, -1)) as Vector2i + coordinates.append(coordinate) + minimum.x = mini(minimum.x, coordinate.x) + minimum.y = mini(minimum.y, coordinate.y) + maximum.x = maxi(maximum.x, coordinate.x) + maximum.y = maxi(maximum.y, coordinate.y) + return { + "origin": minimum, + "size": maximum - minimum + Vector2i.ONE, + "flow_direction": flow_direction, + "outlet_direction": outlet_direction, + "source_coordinates": source_coordinates.duplicate(), + "outlet_coordinates": outlet_coordinates, + "coordinates": coordinates, + "placements": placements, + "bend_origin": bend_origin, + "bend_turns": bend_turns, + } + + +func _river_endpoint_pair_specs( + pair: Array[Vector2i], + flow_direction: Vector2i, + is_source: bool, +) -> Array[Dictionary]: + var ordered := _river_sorted_pair(pair, flow_direction) + if ordered.size() != 2: + return [] + var result: Array[Dictionary] = [] + match flow_direction: + Vector2i.RIGHT: + result.assign([ + { + "coordinate": ordered[0], + "id": ( + river_source_right_chunk_id + if is_source + else river_outlet_right_chunk_id + ), + "turns": 0, + }, + { + "coordinate": ordered[1], + "id": ( + river_source_left_chunk_id + if is_source + else river_outlet_left_chunk_id + ), + "turns": 0, + }, + ]) + Vector2i.LEFT: + result.assign([ + { + "coordinate": ordered[0], + "id": ( + river_source_left_chunk_id + if is_source + else river_outlet_left_chunk_id + ), + "turns": 2, + }, + { + "coordinate": ordered[1], + "id": ( + river_source_right_chunk_id + if is_source + else river_outlet_right_chunk_id + ), + "turns": 2, + }, + ]) + Vector2i.DOWN: + result.assign([ + { + "coordinate": ordered[0], + "id": ( + river_source_left_chunk_id + if is_source + else river_outlet_left_chunk_id + ), + "turns": 3, + }, + { + "coordinate": ordered[1], + "id": ( + river_source_right_chunk_id + if is_source + else river_outlet_right_chunk_id + ), + "turns": 3, + }, + ]) + Vector2i.UP: + result.assign([ + { + "coordinate": ordered[0], + "id": ( + river_source_right_chunk_id + if is_source + else river_outlet_right_chunk_id + ), + "turns": 1, + }, + { + "coordinate": ordered[1], + "id": ( + river_source_left_chunk_id + if is_source + else river_outlet_left_chunk_id + ), + "turns": 1, + }, + ]) + return result + + +func _river_edge_pair_specs( + pair: Array[Vector2i], + flow_direction: Vector2i, + phase: int, +) -> Array[Dictionary]: + var ordered := _river_sorted_pair(pair, flow_direction) + if ordered.size() != 2: + return [] + var edge_ids: Array[StringName] = [ + river_edge_chunk_id, + river_edge_variant_chunk_id, + ] + var first_index := posmod(phase, edge_ids.size()) + var first_turns := 0 if flow_direction.x != 0 else 1 + var second_turns := 2 if flow_direction.x != 0 else 3 + return [ + { + "coordinate": ordered[0], + "id": edge_ids[first_index], + "turns": first_turns, + }, + { + "coordinate": ordered[1], + "id": edge_ids[posmod(first_index + 1, edge_ids.size())], + "turns": second_turns, + }, + ] + + +func _river_bend_placement_specs( + bend_origin: Vector2i, + quarter_turns: int, +) -> Array[Dictionary]: + var canonical: Array[Dictionary] = [ + { + "offset": Vector2i(0, 0), + "id": river_bend_a_chunk_id, + "base_turns": 0, + }, + { + "offset": Vector2i(1, 0), + "id": river_bend_b_chunk_id, + "base_turns": 0, + }, + { + "offset": Vector2i(0, 1), + "id": river_bend_c_chunk_id, + "base_turns": 2, + }, + { + "offset": Vector2i(1, 1), + "id": river_bend_d_chunk_id, + "base_turns": 0, + }, + ] + var result: Array[Dictionary] = [] + for canonical_spec: Dictionary in canonical: + var offsets: Array[Vector2i] = [ + canonical_spec["offset"] as Vector2i, + ] + var rotated_offsets := _rotate_river_bend_offsets( + offsets, + quarter_turns, + ) + result.append({ + "coordinate": bend_origin + rotated_offsets[0], + "id": canonical_spec["id"], + "turns": posmod( + int(canonical_spec["base_turns"]) + quarter_turns, + 4, + ), + }) + return result + + +func _river_sorted_pair( + pair: Array[Vector2i], + flow_direction: Vector2i, +) -> Array[Vector2i]: + var result: Array[Vector2i] = [] + result.assign(pair) + if result.size() != 2: + return result + var swap := false + if flow_direction.x != 0: + swap = ( + result[0].y > result[1].y + or ( + result[0].y == result[1].y + and result[0].x > result[1].x + ) + ) + else: + swap = ( + result[0].x > result[1].x + or ( + result[0].x == result[1].x + and result[0].y > result[1].y + ) + ) + if swap: + var first := result[0] + result[0] = result[1] + result[1] = first + return result + + func _river_source_coordinates( origin: Vector2i, footprint_size: Vector2i, flow_direction: Vector2i, ) -> Array[Vector2i]: + if ( + origin == _river_feature_origin + and footprint_size == _river_feature_footprint_size + and flow_direction == _river_feature_flow_direction + and not _river_feature_source_coordinates.is_empty() + ): + var authored_result: Array[Vector2i] = [] + authored_result.assign(_river_feature_source_coordinates) + return authored_result var northwest := origin var northeast := Vector2i( origin.x + footprint_size.x - 1, @@ -2192,27 +2698,31 @@ func _lake_feature_placement_specs() -> Array[Dictionary]: result.append({"coordinate": southwest, "id": lake_corner_chunk_id, "turns": 1}) result.append({"coordinate": southeast, "id": lake_corner_chunk_id, "turns": 2}) for row: int in range(northwest.y + 1, southwest.y): - result.append({ - "coordinate": Vector2i(northwest.x, row), - "id": lake_edge_chunk_id, - "turns": 0, - }) - result.append({ - "coordinate": Vector2i(northeast.x, row), - "id": lake_edge_chunk_id, - "turns": 2, - }) + _append_lake_perimeter_spec( + result, + Vector2i(northwest.x, row), + lake_edge_chunk_id, + 0, + ) + _append_lake_perimeter_spec( + result, + Vector2i(northeast.x, row), + lake_edge_chunk_id, + 2, + ) for column: int in range(northwest.x + 1, northeast.x): - result.append({ - "coordinate": Vector2i(column, northwest.y), - "id": lake_edge_chunk_id, - "turns": 3, - }) - result.append({ - "coordinate": Vector2i(column, southwest.y), - "id": lake_edge_chunk_id, - "turns": 1, - }) + _append_lake_perimeter_spec( + result, + Vector2i(column, northwest.y), + lake_edge_chunk_id, + 3, + ) + _append_lake_perimeter_spec( + result, + Vector2i(column, southwest.y), + lake_edge_chunk_id, + 1, + ) if _lake_feature_uses_fill: for row: int in range(northwest.y + 1, southwest.y): for column: int in range(northwest.x + 1, northeast.x): @@ -2242,26 +2752,30 @@ func _diagonal_lake_feature_placement_specs( for offset: int in top_side.size(): var top_spec: Dictionary = top_side[offset] var reverse_spec: Dictionary = top_side[top_side.size() - 1 - offset] - result.append({ - "coordinate": Vector2i(northwest.x + 1 + offset, northwest.y), - "id": top_spec["id"], - "turns": top_spec["turns"], - }) - result.append({ - "coordinate": Vector2i(southwest.x + 1 + offset, southwest.y), - "id": reverse_spec["id"], - "turns": posmod(int(reverse_spec["turns"]) + 2, 4), - }) - result.append({ - "coordinate": Vector2i(northwest.x, northwest.y + 1 + offset), - "id": reverse_spec["id"], - "turns": posmod(int(reverse_spec["turns"]) + 1, 4), - }) - result.append({ - "coordinate": Vector2i(northeast.x, northeast.y + 1 + offset), - "id": top_spec["id"], - "turns": posmod(int(top_spec["turns"]) + 3, 4), - }) + _append_lake_perimeter_spec( + result, + Vector2i(northwest.x + 1 + offset, northwest.y), + top_spec["id"] as StringName, + int(top_spec["turns"]), + ) + _append_lake_perimeter_spec( + result, + Vector2i(southwest.x + 1 + offset, southwest.y), + reverse_spec["id"] as StringName, + posmod(int(reverse_spec["turns"]) + 2, 4), + ) + _append_lake_perimeter_spec( + result, + Vector2i(northwest.x, northwest.y + 1 + offset), + reverse_spec["id"] as StringName, + posmod(int(reverse_spec["turns"]) + 1, 4), + ) + _append_lake_perimeter_spec( + result, + Vector2i(northeast.x, northeast.y + 1 + offset), + top_spec["id"] as StringName, + posmod(int(top_spec["turns"]) + 3, 4), + ) if _lake_feature_uses_fill: for row: int in range(northwest.y + 1, southwest.y): for column: int in range(northwest.x + 1, northeast.x): @@ -2273,6 +2787,23 @@ func _diagonal_lake_feature_placement_specs( return result +func _append_lake_perimeter_spec( + result: Array[Dictionary], + coordinate: Vector2i, + stable_id: StringName, + quarter_turns: int, +) -> void: + var selected_id := stable_id + if stable_id == lake_edge_chunk_id and lake_edge_variant_chunk_id != &"": + if posmod(int(generation_seed) + result.size(), 2) == 1: + selected_id = lake_edge_variant_chunk_id + result.append({ + "coordinate": coordinate, + "id": selected_id, + "turns": quarter_turns, + }) + + func _lake_top_side_specs(interior_count: int) -> Array[Dictionary]: var result: Array[Dictionary] = [] if interior_count < 3: @@ -2295,10 +2826,13 @@ func _apply_river_feature() -> bool: return true if ( _river_feature_origin.x < 0 - or mini( - _river_feature_footprint_size.x, - _river_feature_footprint_size.y, - ) != 2 + or _river_feature_placements.is_empty() + or _river_feature_flow_direction == Vector2i.ZERO + or _river_feature_outlet_direction == Vector2i.ZERO + or ( + _river_feature_flow_direction.x * _river_feature_outlet_direction.x + + _river_feature_flow_direction.y * _river_feature_outlet_direction.y + ) != 0 ): push_error("River feature has no reserved terrain region.") return false @@ -2325,149 +2859,7 @@ func _apply_river_feature() -> bool: func _river_feature_placement_specs() -> Array[Dictionary]: var result: Array[Dictionary] = [] - var northwest := _river_feature_origin - var northeast := Vector2i( - _river_feature_origin.x + _river_feature_footprint_size.x - 1, - _river_feature_origin.y, - ) - var southwest := Vector2i( - _river_feature_origin.x, - _river_feature_origin.y + _river_feature_footprint_size.y - 1, - ) - var southeast := ( - _river_feature_origin - + _river_feature_footprint_size - - Vector2i.ONE - ) - match _river_feature_flow_direction: - Vector2i.RIGHT: - result.assign([ - { - "coordinate": northwest, - "id": river_source_right_chunk_id, - "turns": 0, - }, - { - "coordinate": southwest, - "id": river_source_left_chunk_id, - "turns": 0, - }, - { - "coordinate": northeast, - "id": river_outlet_right_chunk_id, - "turns": 0, - }, - { - "coordinate": southeast, - "id": river_outlet_left_chunk_id, - "turns": 0, - }, - ]) - Vector2i.LEFT: - result.assign([ - { - "coordinate": northwest, - "id": river_outlet_left_chunk_id, - "turns": 2, - }, - { - "coordinate": southwest, - "id": river_outlet_right_chunk_id, - "turns": 2, - }, - { - "coordinate": northeast, - "id": river_source_left_chunk_id, - "turns": 2, - }, - { - "coordinate": southeast, - "id": river_source_right_chunk_id, - "turns": 2, - }, - ]) - Vector2i.DOWN: - result.assign([ - { - "coordinate": northwest, - "id": river_source_left_chunk_id, - "turns": 3, - }, - { - "coordinate": northeast, - "id": river_source_right_chunk_id, - "turns": 3, - }, - { - "coordinate": southwest, - "id": river_outlet_left_chunk_id, - "turns": 3, - }, - { - "coordinate": southeast, - "id": river_outlet_right_chunk_id, - "turns": 3, - }, - ]) - Vector2i.UP: - result.assign([ - { - "coordinate": northwest, - "id": river_outlet_right_chunk_id, - "turns": 1, - }, - { - "coordinate": northeast, - "id": river_outlet_left_chunk_id, - "turns": 1, - }, - { - "coordinate": southwest, - "id": river_source_right_chunk_id, - "turns": 1, - }, - { - "coordinate": southeast, - "id": river_source_left_chunk_id, - "turns": 1, - }, - ]) - _: - push_error("River feature has no cardinal flow direction.") - return [] - var river_random := RandomNumberGenerator.new() - river_random.seed = generation_seed ^ 0x4B1D63A7 - var phase := river_random.randi_range(0, 1) - var edge_ids: Array[StringName] = [ - river_edge_chunk_id, - river_edge_variant_chunk_id, - ] - if _river_feature_footprint_size.y == 2: - for offset: int in range(1, _river_feature_footprint_size.x - 1): - var edge_index := posmod(offset - 1 + phase, edge_ids.size()) - result.append({ - "coordinate": Vector2i(northwest.x + offset, northwest.y), - "id": edge_ids[edge_index], - "turns": 0, - }) - result.append({ - "coordinate": Vector2i(southwest.x + offset, southwest.y), - "id": edge_ids[posmod(edge_index + 1, edge_ids.size())], - "turns": 2, - }) - else: - for offset: int in range(1, _river_feature_footprint_size.y - 1): - var edge_index := posmod(offset - 1 + phase, edge_ids.size()) - result.append({ - "coordinate": Vector2i(northwest.x, northwest.y + offset), - "id": edge_ids[edge_index], - "turns": 1, - }) - result.append({ - "coordinate": Vector2i(northeast.x, northeast.y + offset), - "id": edge_ids[posmod(edge_index + 1, edge_ids.size())], - "turns": 3, - }) + result.assign(_river_feature_placements) return result @@ -2984,6 +3376,28 @@ func _calculate_edge_compatibility( second: TerrainChunkVariant, second_edge: TerrainChunkTopology.Edge, ) -> bool: + var first_inlet := _variant_edge_has_connector( + first, + first.definition.water_inlet_edges, + first_edge, + ) + var first_outlet := _variant_edge_has_connector( + first, + first.definition.water_outlet_edges, + first_edge, + ) + var second_inlet := _variant_edge_has_connector( + second, + second.definition.water_inlet_edges, + second_edge, + ) + var second_outlet := _variant_edge_has_connector( + second, + second.definition.water_outlet_edges, + second_edge, + ) + var first_has_water := first_inlet or first_outlet + var second_has_water := second_inlet or second_outlet var profile_tolerance := maxf( edge_match_tolerance, maxf( @@ -3012,30 +3426,26 @@ func _calculate_edge_compatibility( 0.0, profile_tolerance, ) + if ( + not profiles_match + and first_has_water + and second_has_water + and ( + _variant_edge_has_connector( + first, + first.definition.continuous_water_seam_edges, + first_edge, + ) + or _variant_edge_has_connector( + second, + second.definition.continuous_water_seam_edges, + second_edge, + ) + ) + ): + profiles_match = true if not profiles_match: return false - var first_inlet := _variant_edge_has_connector( - first, - first.definition.water_inlet_edges, - first_edge, - ) - var first_outlet := _variant_edge_has_connector( - first, - first.definition.water_outlet_edges, - first_edge, - ) - var second_inlet := _variant_edge_has_connector( - second, - second.definition.water_inlet_edges, - second_edge, - ) - var second_outlet := _variant_edge_has_connector( - second, - second.definition.water_outlet_edges, - second_edge, - ) - var first_has_water := first_inlet or first_outlet - var second_has_water := second_inlet or second_outlet if first_has_water or second_has_water: return ( (first_outlet and second_inlet) diff --git a/world/generation/terrain_chunk_variant.gd b/world/generation/terrain_chunk_variant.gd index f2f9e65..9c2770b 100644 --- a/world/generation/terrain_chunk_variant.gd +++ b/world/generation/terrain_chunk_variant.gd @@ -49,7 +49,7 @@ func topology_signature(quantization: float) -> String: func constraint_signature(quantization: float) -> String: return ( - "%s|neighbors:%s|surfaces:%s|ocean:%d|buried:%d|in:%d|out:%d" + "%s|neighbors:%s|surfaces:%s|ocean:%d|buried:%d|in:%d|out:%d|water_seam:%d" % [ topology_signature(quantization), _neighbor_rule_signature(), @@ -58,6 +58,7 @@ func constraint_signature(quantization: float) -> String: rotated_edge_mask(definition.buried_cliff_seam_edges), rotated_edge_mask(definition.water_inlet_edges), rotated_edge_mask(definition.water_outlet_edges), + rotated_edge_mask(definition.continuous_water_seam_edges), ] ) From 8f8398cbcd3a5027cfed04e41130ab3f4dbf1dc9 Mon Sep 17 00:00:00 2001 From: Voyager Date: Sat, 22 Aug 2026 22:56:30 -0400 Subject: [PATCH 26/90] Stabilize camera input across fishing and radial menus --- player/player.gd | 31 ++++++-- tests/art_tools_validation.gd | 17 +++- tests/gathering_showcase_validation.gd | 37 ++++++++- ui/game_ui.gd | 105 +++++++++++++++++-------- 4 files changed, 147 insertions(+), 43 deletions(-) diff --git a/player/player.gd b/player/player.gd index 680350c..6d237bf 100644 --- a/player/player.gd +++ b/player/player.gd @@ -375,7 +375,6 @@ class ShowcaseCameraSnapshot: var pitch_rotation: Vector3 var spring_length: float var target_zoom: float - var camera_input_enabled: bool var camera_dragging: bool @@ -477,6 +476,7 @@ var _free_camera_yaw: float = 0.0 var _free_camera_pitch: float = 0.0 var _movement_enabled: bool = true var _local_input_suppressors: Dictionary[StringName, bool] = {} +var _camera_input_suppressors: Dictionary[StringName, bool] = {} var _water_recovery_active: bool = false var _remote_recovery_presentation_active: bool = false var _remote_recovery_visual_origin: Vector3 @@ -1789,7 +1789,10 @@ func _update_free_camera_physics() -> void: if _free_camera == null or _free_camera_body == null: _set_free_camera_active(false) return - if not _is_movement_input_enabled(): + # Freecam translation is camera input, not avatar movement. Fishing locks + # the avatar after a cast, but the detached camera must remain movable. + # Camera/menu input ownership still stops freecam while an overlay is active. + if not _is_camera_input_enabled(): _free_camera_body.velocity = Vector3.ZERO _free_camera_body.move_and_slide() return @@ -2483,7 +2486,11 @@ func _is_movement_input_enabled() -> bool: func _is_camera_input_enabled() -> bool: - return _camera_input_enabled and _local_input_suppressors.is_empty() + return ( + _camera_input_enabled + and _local_input_suppressors.is_empty() + and _camera_input_suppressors.is_empty() + ) func set_camera_input_enabled(enabled: bool) -> void: @@ -2492,6 +2499,19 @@ func set_camera_input_enabled(enabled: bool) -> void: _set_camera_dragging(false) +func set_camera_input_suppressed( + owner: StringName, + suppressed: bool, +) -> void: + if owner.is_empty(): + return + if suppressed: + _camera_input_suppressors[owner] = true + _set_camera_dragging(false) + else: + _camera_input_suppressors.erase(owner) + + func set_camera_active(active: bool) -> void: if _free_camera_active and _free_camera != null: _free_camera.current = active @@ -3344,9 +3364,6 @@ func _complete_showcase_restore( _camera_pitch.rotation = _showcase_camera_snapshot.pitch_rotation _spring_arm.spring_length = _showcase_camera_snapshot.spring_length _target_zoom = _showcase_camera_snapshot.target_zoom - _camera_input_enabled = ( - _showcase_camera_snapshot.camera_input_enabled - ) _set_camera_dragging( _showcase_camera_snapshot.camera_dragging and Input.is_action_pressed("camera_drag") @@ -3367,9 +3384,7 @@ func _capture_showcase_camera_snapshot() -> void: _showcase_camera_snapshot.pitch_rotation = _camera_pitch.rotation _showcase_camera_snapshot.spring_length = _spring_arm.spring_length _showcase_camera_snapshot.target_zoom = _target_zoom - _showcase_camera_snapshot.camera_input_enabled = _camera_input_enabled _showcase_camera_snapshot.camera_dragging = _camera_dragging - _camera_input_enabled = false _set_camera_dragging(false) diff --git a/tests/art_tools_validation.gd b/tests/art_tools_validation.gd index 44ec053..f370605 100644 --- a/tests/art_tools_validation.gd +++ b/tests/art_tools_validation.gd @@ -312,10 +312,23 @@ func _run() -> void: Input.parse_input_event(right_stick_motion) await process_frame - # Chat owns all movement while text entry is active, including developer - # freecam movement which reads the same WASD actions as the player. var free_camera_body := player.get("_free_camera_body") as CharacterBody3D assert(free_camera_body != null) + # A released fishing cast locks only the avatar. The detached camera must + # continue to accept translation while that movement lock is active. + player.set_movement_enabled(false) + var cast_locked_camera_position: Vector3 = free_camera_body.global_position + Input.action_press("move_forward") + for _frame: int in 3: + await physics_frame + Input.action_release("move_forward") + assert(not free_camera_body.global_position.is_equal_approx( + cast_locked_camera_position + )) + player.set_movement_enabled(true) + + # Chat owns all movement while text entry is active, including developer + # freecam movement which reads the same WASD actions as the player. chat_ui.open_chat() assert(chat_ui.is_open()) var free_camera_position_before: Vector3 = free_camera_body.global_position diff --git a/tests/gathering_showcase_validation.gd b/tests/gathering_showcase_validation.gd index 26a9e34..7099f7c 100644 --- a/tests/gathering_showcase_validation.gd +++ b/tests/gathering_showcase_validation.gd @@ -30,8 +30,14 @@ func _run() -> void: var player := main.get("_player") as Player var fishing_spot := main.get_node("%FishingSpot") as FishingSpot + var game_ui := main.get_node("%GameUI") as GameUI var catalog := main.get("fish_catalog") as FishPool - assert(player != null and fishing_spot != null and catalog != null) + assert( + player != null + and fishing_spot != null + and game_ui != null + and catalog != null + ) fishing_spot.minimum_showcase_duration = 0.15 assert(player.bag.add_item(&"crab_net")) assert(player.hotbar.assign_item(0, &"crab_net")) @@ -82,6 +88,18 @@ func _run() -> void: await process_frame assert(fishing_spot.get("_pending_catch") == null) + # A radial menu can open after the showcase panel disappears but before the + # pocket animation restores gameplay. Its camera lock must not overwrite the + # showcase's underlying camera state when the two finish in either order. + Input.action_press("open_emotes") + var emote_press := InputEventAction.new() + emote_press.action = &"open_emotes" + emote_press.pressed = true + game_ui.call("_input", emote_press) + var emote_menu := game_ui.get_node("%EmoteRadialMenu") as EmoteRadialMenu + assert(emote_menu.is_open()) + assert(not bool(player.call("_is_camera_input_enabled"))) + var pocket_deadline: int = Time.get_ticks_msec() + 6000 while ( Time.get_ticks_msec() < pocket_deadline @@ -91,6 +109,23 @@ func _run() -> void: assert(fishing_spot.state == FishingSpot.FishingState.READY) assert(player.is_movement_enabled()) assert(bool(player.call("_is_movement_input_enabled"))) + assert(not bool(player.call("_is_camera_input_enabled"))) + Input.action_release("open_emotes") + var emote_release := InputEventAction.new() + emote_release.action = &"open_emotes" + emote_release.pressed = false + game_ui.call("_input", emote_release) + assert(not emote_menu.is_open()) + assert(bool(player.call("_is_camera_input_enabled"))) + + # A focused chat field or popup can consume the wheel's release event. The + # polled action state must still close the radial and release its camera lock. + Input.action_press("open_emotes") + game_ui.call("_input", emote_press) + assert(emote_menu.is_open()) + Input.action_release("open_emotes") + await process_frame + assert(not emote_menu.is_open()) assert(bool(player.call("_is_camera_input_enabled"))) assert(player.inventory.contains_catch_id(crab_catch.catch_id)) assert(bool(player.get("_active_item_is_net"))) diff --git a/ui/game_ui.gd b/ui/game_ui.gd index c8d6f34..e0b87c6 100644 --- a/ui/game_ui.gd +++ b/ui/game_ui.gd @@ -81,6 +81,8 @@ signal shop_backdrop_visibility_changed(is_visible: bool) signal virtual_pointer_mode_changed(is_active: bool) const VIRTUAL_MOUSE_INPUT_OWNER: StringName = &"controller_virtual_mouse" +const EMOTE_RADIAL_CAMERA_OWNER: StringName = &"emote_radial_menu" +const QUICK_RADIAL_CAMERA_OWNER: StringName = &"quick_radial_menu" const VIRTUAL_MOUSE_TRIGGER_THRESHOLD: float = 0.55 const VIRTUAL_MOUSE_TRIGGER_RELEASE_THRESHOLD: float = 0.35 const VIRTUAL_MOUSE_STICK_DEADZONE: float = 0.18 @@ -194,8 +196,6 @@ var _experience_award_queue: Array[Dictionary] = [] var _experience_animation_active: bool = false var _experience_animation_generation: int = 0 var _experience_panel_rest_y: float = 18.0 -var _emote_prior_camera_input_enabled: bool = true -var _quick_prior_camera_input_enabled: bool = true var _virtual_mouse_active: bool = false var _virtual_mouse_prior_camera_input_enabled: bool = true var _virtual_mouse_prior_mouse_mode: Input.MouseMode = Input.MOUSE_MODE_VISIBLE @@ -581,15 +581,10 @@ func _input(event: InputEvent) -> void: ): var emote_is_open: bool = _emote_radial_menu.is_open() if emote_is_open != emote_was_open and _player != null: - if emote_is_open: - _emote_prior_camera_input_enabled = ( - _player.is_camera_input_enabled() - ) - _player.set_camera_input_enabled(false) - else: - _player.set_camera_input_enabled( - _emote_prior_camera_input_enabled - ) + _player.set_camera_input_suppressed( + EMOTE_RADIAL_CAMERA_OWNER, + emote_is_open, + ) get_viewport().set_input_as_handled() return var quick_was_open: bool = _quick_radial_menu.is_open() @@ -599,18 +594,63 @@ func _input(event: InputEvent) -> void: ): var quick_is_open: bool = _quick_radial_menu.is_open() if quick_is_open != quick_was_open and _player != null: - if quick_is_open: - _quick_prior_camera_input_enabled = ( - _player.is_camera_input_enabled() - ) - _player.set_camera_input_enabled(false) - else: - _player.set_camera_input_enabled( - _quick_prior_camera_input_enabled - ) + _player.set_camera_input_suppressed( + QUICK_RADIAL_CAMERA_OWNER, + quick_is_open, + ) get_viewport().set_input_as_handled() +func _reconcile_radial_menu_input() -> void: + var blocked: bool = ( + not _gameplay_ui_enabled + or _system_menu_open + or _player_menu_open + or _shop_open + or _storage_open + or _chat_input_open + or _showcase_active + or _virtual_mouse_active + ) + if ( + _emote_radial_menu != null + and _emote_radial_menu.is_open() + and (blocked or not Input.is_action_pressed("open_emotes")) + ): + _close_emote_radial_menu() + if ( + _quick_radial_menu != null + and _quick_radial_menu.is_open() + and (blocked or not Input.is_action_pressed("open_quick_actions")) + ): + _close_quick_radial_menu() + + +func _close_radial_menus() -> void: + _close_emote_radial_menu() + _close_quick_radial_menu() + + +func _close_emote_radial_menu() -> void: + if _emote_radial_menu != null and _emote_radial_menu.is_open(): + _emote_radial_menu.close_menu() + if _player != null and is_instance_valid(_player): + _player.set_camera_input_suppressed( + EMOTE_RADIAL_CAMERA_OWNER, + false, + ) + + +func _close_quick_radial_menu() -> void: + if _quick_radial_menu != null and _quick_radial_menu.is_open(): + _quick_radial_menu.close_menu() + if _player != null and is_instance_valid(_player): + _player.set_camera_input_suppressed( + QUICK_RADIAL_CAMERA_OWNER, + false, + ) + + func _can_use_character_call() -> bool: return ( _gameplay_ui_enabled @@ -1356,6 +1396,7 @@ func is_input_mapping_capturing() -> bool: func _process(delta: float) -> void: + _reconcile_radial_menu_input() _poll_virtual_mouse_controller_state() _update_virtual_mouse(delta) _update_controller_menu_scroll(delta) @@ -1578,18 +1619,7 @@ func set_gameplay_ui_enabled(enabled: bool) -> void: _refresh_chat_availability() if not enabled: _end_virtual_mouse() - if _emote_radial_menu != null and _emote_radial_menu.is_open(): - _emote_radial_menu.close_menu() - if _player != null: - _player.set_camera_input_enabled( - _emote_prior_camera_input_enabled - ) - if _quick_radial_menu != null and _quick_radial_menu.is_open(): - _quick_radial_menu.close_menu() - if _player != null: - _player.set_camera_input_enabled( - _quick_prior_camera_input_enabled - ) + _close_radial_menus() if _surface_drawing != null: _surface_drawing.deactivate() close_player_menu_for_session_end() @@ -1658,6 +1688,8 @@ func _refresh_gameplay_hud_visibility() -> void: func set_system_menu_open(is_open: bool) -> void: _system_menu_open = is_open + if is_open: + _close_radial_menus() _refresh_surface_drawing_activation() _refresh_gameplay_hud_visibility() _refresh_chat_availability() @@ -2071,6 +2103,8 @@ func _on_showcase_changed( showcase_visible: bool, ) -> void: _showcase_active = showcase_visible + if showcase_visible: + _close_radial_menus() _refresh_surface_drawing_activation() if not showcase_visible: _set_fishing_panel_showcase_position(false) @@ -2314,6 +2348,7 @@ func _on_player_menu_visibility_changed(is_open: bool) -> void: _chat_ui.set_world_speech_visible(not is_open) if is_open: _end_virtual_mouse() + _close_radial_menus() _refresh_surface_drawing_activation() _refresh_gameplay_hud_visibility() if is_open: @@ -2366,6 +2401,8 @@ func _on_shop_exit_started() -> void: func _on_shop_visibility_changed(is_open: bool) -> void: _shop_open = is_open + if is_open: + _close_radial_menus() _refresh_surface_drawing_activation() if is_open: shop_backdrop_visibility_changed.emit(true) @@ -2389,6 +2426,8 @@ func _on_shop_visibility_changed(is_open: bool) -> void: func _on_storage_visibility_changed(is_open: bool) -> void: _storage_open = is_open + if is_open: + _close_radial_menus() _refresh_surface_drawing_activation() _refresh_gameplay_hud_visibility() _refresh_chat_availability() @@ -2544,6 +2583,8 @@ func _emit_interactive_pointer_ui_changed() -> void: func _on_chat_text_entry_ownership_changed(active: bool) -> void: _chat_input_open = active + if active: + _close_radial_menus() _refresh_surface_drawing_activation() _refresh_chat_availability() _emit_interactive_pointer_ui_changed() From 3dbfd74b6c4c836da83075dc7dd79cbd8adef224 Mon Sep 17 00:00:00 2001 From: Voyager Date: Sat, 22 Aug 2026 22:56:44 -0400 Subject: [PATCH 27/90] Make bubble menu feedback immediate --- project.godot | 1 + .../bubble_menu/bubble_confirmation_page.gd | 44 ++- ui/pause_menu.gd | 8 +- ui/settings/settings_bubble_page.gd | 67 +++-- ui/title_confirmation_bubble_page.gd | 56 ++-- ui/title_screen.gd | 276 +++++++----------- 6 files changed, 214 insertions(+), 238 deletions(-) diff --git a/project.godot b/project.godot index be0f21e..807e880 100644 --- a/project.godot +++ b/project.godot @@ -31,6 +31,7 @@ enabled=PackedStringArray("res://addons/netfishing_shoreline_baker/plugin.cfg") [gui] theme/custom="res://ui/game_theme.tres" +timers/tooltip_delay_sec=0.0 [input] diff --git a/ui/components/bubble_menu/bubble_confirmation_page.gd b/ui/components/bubble_menu/bubble_confirmation_page.gd index 0565406..d23b848 100644 --- a/ui/components/bubble_menu/bubble_confirmation_page.gd +++ b/ui/components/bubble_menu/bubble_confirmation_page.gd @@ -1,6 +1,8 @@ class_name BubbleConfirmationPage extends Control +const QUICK_ENTER_SCALE: float = 0.97 + signal confirmed signal cancelled @@ -23,8 +25,6 @@ enum InitialFocus { ^"BubbleCluster/CancelButton/CancelLabel" ) @export var maximum_layout_size: Vector2 = Vector2(720.0, 520.0) -@export_range(0.0, 128.0, 1.0) var transition_safe_margin: float = 24.0 - var _cluster: BubbleCluster var _message: BubbleButton var _message_label: Label @@ -50,6 +50,7 @@ func _ready() -> void: _cancel_label = get_node(cancel_label_path) as Label _bubbles = [_message, _confirm_button, _cancel_button] _cluster.configure(_bubbles) + _cluster.motion_scale = 0.0 _message.focus_mode = Control.FOCUS_NONE _message.mouse_filter = Control.MOUSE_FILTER_IGNORE _confirm_button.pressed.connect(confirmed.emit) @@ -79,18 +80,19 @@ func transition_in(duration: float, completed: Callable) -> void: _is_transitioning = true _set_interactive(false) set_process(true) - _cluster.position = Vector2( - _resting_cluster_position.x, - size.y + transition_safe_margin - ) + _cluster.position = _resting_cluster_position + _cluster.pivot_offset = _cluster.size * 0.5 + _cluster.scale = Vector2.ONE * QUICK_ENTER_SCALE + _cluster.modulate.a = 0.0 var generation: int = _transition_generation - _transition = create_tween() + _transition = create_tween().set_parallel(true) _transition.tween_property( _cluster, - "position", - _resting_cluster_position, + "scale", + Vector2.ONE, duration - ).set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_IN_OUT) + ).set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_OUT) + _transition.tween_property(_cluster, "modulate:a", 1.0, duration) _transition.finished.connect( _finish_transition_in.bind(generation, completed), CONNECT_ONE_SHOT @@ -104,14 +106,17 @@ func transition_out(duration: float, completed: Callable) -> void: _cancel_transition() _is_transitioning = true _set_interactive(false) + _cluster.position = _resting_cluster_position + _cluster.pivot_offset = _cluster.size * 0.5 var generation: int = _transition_generation - _transition = create_tween() + _transition = create_tween().set_parallel(true) _transition.tween_property( _cluster, - "position:y", - -_cluster.size.y - transition_safe_margin, + "scale", + Vector2.ONE * QUICK_ENTER_SCALE, duration - ).set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_IN_OUT) + ).set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_IN) + _transition.tween_property(_cluster, "modulate:a", 0.0, duration) _transition.finished.connect( _finish_transition_out.bind(generation, completed), CONNECT_ONE_SHOT @@ -127,6 +132,7 @@ func hide_page() -> void: hide() if _cluster != null: _cluster.position = _resting_cluster_position + _reset_cluster_presentation() func lock_interaction() -> void: @@ -165,6 +171,7 @@ func _update_layout() -> void: if not _is_transitioning: _cluster.position = _resting_cluster_position _cluster.size = field_size + _cluster.pivot_offset = _cluster.size * 0.5 _cluster.apply_layout(field_size, false) @@ -219,6 +226,7 @@ func _finish_transition_in( _transition = null _is_transitioning = false _cluster.position = _resting_cluster_position + _reset_cluster_presentation() _set_interactive(true) focus_initial() completed.call() @@ -234,6 +242,7 @@ func _finish_transition_out( _is_transitioning = false hide() _cluster.position = _resting_cluster_position + _reset_cluster_presentation() set_process(false) completed.call() @@ -242,3 +251,10 @@ func _cancel_transition() -> void: if _transition != null: _transition.kill() _transition = null + + +func _reset_cluster_presentation() -> void: + if _cluster == null: + return + _cluster.scale = Vector2.ONE + _cluster.modulate.a = 1.0 diff --git a/ui/pause_menu.gd b/ui/pause_menu.gd index 842382f..f07655b 100644 --- a/ui/pause_menu.gd +++ b/ui/pause_menu.gd @@ -3,7 +3,7 @@ extends Control const INPUT_OWNER: StringName = &"game_menu" const PAUSE_DESKTOP_REFERENCE_SIZE: Vector2 = Vector2(1280.0, 720.0) -const VISIBILITY_FADE_DURATION: float = 0.55 +const VISIBILITY_FADE_DURATION: float = 0.10 const PlayerType = preload("res://player/player.gd") const SaveManagerType = preload("res://save/player_save_manager.gd") const SettingsManagerType = preload( @@ -371,7 +371,7 @@ func _open_confirmation( func _show_confirmation() -> void: _confirmation_page.transition_in( - 0.0, + VISIBILITY_FADE_DURATION, _finish_confirmation_open ) @@ -386,7 +386,7 @@ func _close_confirmation() -> void: _confirmation_action = ConfirmationAction.NONE _emit_transition_flurry() _confirmation_page.transition_out( - 0.0, + VISIBILITY_FADE_DURATION, _finish_confirmation_cancel ) @@ -548,7 +548,7 @@ func _finish_close(reason: CloseReason, restore_controls: bool) -> void: func _emit_transition_flurry() -> void: - _transition_flurry.emit_flurry() + _transition_flurry.clear_flurries() func _update_responsive_pause_stage() -> void: diff --git a/ui/settings/settings_bubble_page.gd b/ui/settings/settings_bubble_page.gd index 2a8dc6d..3f533c9 100644 --- a/ui/settings/settings_bubble_page.gd +++ b/ui/settings/settings_bubble_page.gd @@ -4,6 +4,9 @@ extends Control const ControllerFocusNavigationType = preload( "res://ui/controller_focus_navigation.gd" ) +const QUICK_ENTER_DURATION: float = 0.14 +const QUICK_EXIT_DURATION: float = 0.10 +const QUICK_ENTER_SCALE: float = 0.97 @export var page_id: StringName @export var cluster_path: NodePath = ^"BubbleCluster" @@ -13,8 +16,6 @@ const ControllerFocusNavigationType = preload( @export var back_focus_path: NodePath @export var back_entry_path: NodePath @export var maximum_layout_size: Vector2 = Vector2(720.0, 520.0) -@export_range(0.0, 128.0, 1.0) var transition_safe_margin: float = 24.0 - var _cluster: BubbleCluster var _bubbles: Array[BubbleButton] = [] var _focus_controls: Array[Control] = [] @@ -35,6 +36,7 @@ func _ready() -> void: if focus_control != null: _focus_controls.append(focus_control) _cluster.configure(_bubbles) + _cluster.motion_scale = 0.0 _configure_focus_order() resized.connect(_update_layout) call_deferred("_update_layout") @@ -47,6 +49,7 @@ func show_page(should_focus: bool = true) -> void: show() _is_transitioning = false _cluster.position = _resting_cluster_position + _reset_cluster_presentation() set_process(true) _set_interactive(true) var paper := get_node_or_null("Paper") as Control @@ -68,18 +71,22 @@ func transition_out( if paper != null: UtilityPageStyle.animate_out(paper, Callable()) set_process(true) - var target_y: float = -_cluster.size.y - transition_safe_margin - var duration := UIMotion.bubble_duration( - target_y - _cluster.position.y - ) var generation: int = _transition_generation - _transition = create_tween() + _cluster.position = _resting_cluster_position + _cluster.pivot_offset = _cluster.size * 0.5 + _transition = create_tween().set_parallel(true) _transition.tween_property( _cluster, - "position:y", - target_y, - duration - ).set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_IN_OUT) + "scale", + Vector2.ONE * QUICK_ENTER_SCALE, + QUICK_EXIT_DURATION + ).set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_IN) + _transition.tween_property( + _cluster, + "modulate:a", + 0.0, + QUICK_EXIT_DURATION + ) _transition.finished.connect( _finish_transition_out.bind(generation, completed), CONNECT_ONE_SHOT @@ -97,24 +104,27 @@ func transition_in( _is_transitioning = true _set_interactive(false) set_process(true) - _cluster.position = Vector2( - _resting_cluster_position.x, - size.y + transition_safe_margin - ) + _cluster.position = _resting_cluster_position + _cluster.pivot_offset = _cluster.size * 0.5 + _cluster.scale = Vector2.ONE * QUICK_ENTER_SCALE + _cluster.modulate.a = 0.0 var paper := get_node_or_null("Paper") as Control if paper != null: UtilityPageStyle.animate_in(paper) - var duration := UIMotion.bubble_duration( - _cluster.position.y - _resting_cluster_position.y - ) var generation: int = _transition_generation - _transition = create_tween() + _transition = create_tween().set_parallel(true) _transition.tween_property( _cluster, - "position", - _resting_cluster_position, - duration - ).set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_IN_OUT) + "scale", + Vector2.ONE, + QUICK_ENTER_DURATION + ).set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_OUT) + _transition.tween_property( + _cluster, + "modulate:a", + 1.0, + QUICK_ENTER_DURATION + ) _transition.finished.connect( _finish_transition_in.bind(generation, should_focus, completed), CONNECT_ONE_SHOT @@ -130,6 +140,7 @@ func hide_page() -> void: hide() if _cluster != null: _cluster.position = _resting_cluster_position + _reset_cluster_presentation() func focus_initial() -> void: @@ -183,6 +194,7 @@ func _update_layout() -> void: if not _is_transitioning: _cluster.position = _resting_cluster_position _cluster.size = field_size + _cluster.pivot_offset = _cluster.size * 0.5 _cluster.apply_layout(field_size, false) _configure_focus_navigation() @@ -243,6 +255,7 @@ func _finish_transition_out(generation: int, completed: Callable) -> void: _is_transitioning = false hide() _cluster.position = _resting_cluster_position + _reset_cluster_presentation() if completed.is_valid(): completed.call() @@ -257,6 +270,7 @@ func _finish_transition_in( _transition = null _is_transitioning = false _cluster.position = _resting_cluster_position + _reset_cluster_presentation() set_process(true) _set_interactive(true) if should_focus: @@ -268,3 +282,10 @@ func _cancel_transition() -> void: if _transition != null: _transition.kill() _transition = null + + +func _reset_cluster_presentation() -> void: + if _cluster == null: + return + _cluster.scale = Vector2.ONE + _cluster.modulate.a = 1.0 diff --git a/ui/title_confirmation_bubble_page.gd b/ui/title_confirmation_bubble_page.gd index b4c3643..ac1d235 100644 --- a/ui/title_confirmation_bubble_page.gd +++ b/ui/title_confirmation_bubble_page.gd @@ -1,6 +1,8 @@ class_name TitleConfirmationBubblePage extends Control +const QUICK_ENTER_SCALE: float = 0.97 + signal confirmed signal cancelled @@ -17,8 +19,6 @@ signal cancelled Vector2(90.0, 90.0) ) @export var compact_height_threshold: float = 250.0 -@export_range(0.0, 128.0, 1.0) var transition_safe_margin: float = 24.0 - var _cluster: BubbleCluster var _prompt: BubbleButton var _prompt_label: Label @@ -47,6 +47,7 @@ func _ready() -> void: ) _bubbles = [_prompt, _confirm_button, _cancel_button] _cluster.configure(_bubbles) + _cluster.motion_scale = 0.0 _prompt.focus_mode = Control.FOCUS_NONE _prompt.mouse_filter = Control.MOUSE_FILTER_IGNORE _confirm_button.pressed.connect(confirmed.emit) @@ -97,12 +98,13 @@ func set_stage_rect(stage_rect: Rect2) -> void: field_size, false ) + _cluster.pivot_offset = _cluster.size * 0.5 if not _is_transitioning: _cluster.position = _resting_cluster_position func transition_in( - _duration: float, + duration: float, completed: Callable, ) -> void: _transition_generation += 1 @@ -111,21 +113,19 @@ func transition_in( _is_transitioning = true _set_interactive(false) set_process(true) - _cluster.position = Vector2( - _resting_cluster_position.x, - size.y + transition_safe_margin - ) - var duration := UIMotion.bubble_duration( - _cluster.position.y - _resting_cluster_position.y - ) + _cluster.position = _resting_cluster_position + _cluster.pivot_offset = _cluster.size * 0.5 + _cluster.scale = Vector2.ONE * QUICK_ENTER_SCALE + _cluster.modulate.a = 0.0 var generation: int = _transition_generation - _transition = create_tween() + _transition = create_tween().set_parallel(true) _transition.tween_property( _cluster, - "position", - _resting_cluster_position, + "scale", + Vector2.ONE, duration - ).set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_IN_OUT) + ).set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_OUT) + _transition.tween_property(_cluster, "modulate:a", 1.0, duration) _transition.finished.connect( _finish_transition_in.bind(generation, completed), CONNECT_ONE_SHOT @@ -133,7 +133,7 @@ func transition_in( func transition_out( - _duration: float, + duration: float, completed: Callable, ) -> void: if not visible or _is_transitioning: @@ -142,18 +142,17 @@ func transition_out( _cancel_transition() _is_transitioning = true _set_interactive(false) - var target_y: float = -_cluster.size.y - transition_safe_margin - var duration := UIMotion.bubble_duration( - target_y - _cluster.position.y - ) + _cluster.position = _resting_cluster_position + _cluster.pivot_offset = _cluster.size * 0.5 var generation: int = _transition_generation - _transition = create_tween() + _transition = create_tween().set_parallel(true) _transition.tween_property( _cluster, - "position:y", - target_y, + "scale", + Vector2.ONE * QUICK_ENTER_SCALE, duration - ).set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_IN_OUT) + ).set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_IN) + _transition.tween_property(_cluster, "modulate:a", 0.0, duration) _transition.finished.connect( _finish_transition_out.bind(generation, completed), CONNECT_ONE_SHOT @@ -169,6 +168,7 @@ func hide_page() -> void: hide() if _cluster != null: _cluster.position = _resting_cluster_position + _reset_cluster_presentation() func lock_interaction() -> void: @@ -240,6 +240,8 @@ func _finish_transition_in( return _transition = null _is_transitioning = false + _cluster.position = _resting_cluster_position + _reset_cluster_presentation() _set_interactive(true) focus_confirm() completed.call() @@ -255,6 +257,7 @@ func _finish_transition_out( _is_transitioning = false hide() _cluster.position = _resting_cluster_position + _reset_cluster_presentation() set_process(false) completed.call() @@ -263,3 +266,10 @@ func _cancel_transition() -> void: if _transition != null: _transition.kill() _transition = null + + +func _reset_cluster_presentation() -> void: + if _cluster == null: + return + _cluster.scale = Vector2.ONE + _cluster.modulate.a = 1.0 diff --git a/ui/title_screen.gd b/ui/title_screen.gd index bff04d8..242b335 100644 --- a/ui/title_screen.gd +++ b/ui/title_screen.gd @@ -67,13 +67,7 @@ const BUBBLE_WOBBLE_MIN: float = 3.0 const BUBBLE_WOBBLE_MAX: float = 9.0 const BUBBLE_EDGE_MARGIN: float = 16.0 const MAX_DECORATIVE_BUBBLES: int = 6 -const TRANSITION_BUBBLE_COUNT_MIN: int = 4 -const TRANSITION_BUBBLE_COUNT_MAX: int = 5 const MAX_TRANSITION_BUBBLES: int = 30 -const TRANSITION_BUBBLE_X_MIN: float = 0.36 -const TRANSITION_BUBBLE_X_MAX: float = 0.64 -const TRANSITION_BUBBLE_Y_MIN: float = 0.60 -const TRANSITION_BUBBLE_Y_MAX: float = 0.78 const LOGO_ASPECT_RATIO: float = 2560.0 / 760.0 const LOGO_WIDTH_FACTOR: float = 0.4784 const LOGO_MIN_WIDTH: float = 294.0 @@ -89,11 +83,9 @@ const BUBBLE_COMPACT_HEIGHT_THRESHOLD: float = 560.0 const START_PROMPT_MIN_SCALE: float = 0.985 const START_PROMPT_MAX_SCALE: float = 1.015 const START_PROMPT_CYCLE_SECONDS: float = 3.0 -const INTRO_PROMPT_FADE_DURATION: float = 0.55 -const INTRO_BUBBLE_TRAVEL_DURATION: float = 2.40 -const INTRO_BRANDING_TRAVEL_DURATION: float = 2.0 -const INTRO_BRANDING_START_DELAY: float = 0.35 -const HOST_CLUSTER_SAFE_MARGIN: float = 24.0 +const QUICK_MENU_ENTER_DURATION: float = 0.14 +const QUICK_MENU_EXIT_DURATION: float = 0.10 +const QUICK_MENU_ENTER_SCALE: float = 0.97 signal new_game_requested(world_layout: StringName, world_seed: int) signal continue_game_requested @@ -128,13 +120,11 @@ enum ConfirmationAction { @onready var _decorative_bubble_cluster_timer: Timer = %DecorativeBubbleClusterTimer @onready var _title_logo: TextureRect = %TitleLogo @onready var _playtest_label: Label = %PlaytestLabel -@onready var _intro_branding_anchor: Control = %IntroBrandingAnchor @onready var _presentation_center: CenterContainer = %Center @onready var _main_content: VBoxContainer = %MainContent @onready var _branding_slot: Control = %BrandingSlot @onready var _branding_motion_root: Control = %BrandingMotionRoot @onready var _version_row: Control = %VersionRow -@onready var _title_spacer: Control = %Spacer @onready var _button_center: CenterContainer = %ButtonCenter @onready var _bubble_layout_slot: Control = %BubbleLayoutSlot @onready var _bubble_motion_root: Control = %BubbleMotionRoot @@ -176,8 +166,6 @@ var _title_entry_generation: int = 0 var _title_entry_transition_active: bool = false var _intro_geometry_ready: bool = false var _intro_layout_generation: int = 0 -var _branding_intro_position: Vector2 = Vector2.ZERO -var _bubble_intro_position: Vector2 = Vector2.ZERO var _feedback_visible_before_settings: bool = false var _feedback_text_before_settings: String = "" var _continue_stats_hovered: bool = false @@ -227,6 +215,7 @@ func _ready() -> void: ) _credits_page.back_requested.connect(_close_credits) _bubble_field.configure(_get_title_buttons()) + _bubble_field.motion_scale = 0.0 _decorative_fish_timer.timeout.connect(_on_decorative_fish_timer_timeout) _decorative_bubble_event_timer.timeout.connect( _on_decorative_bubble_event_timer_timeout @@ -757,28 +746,30 @@ func _reveal_primary_menu() -> void: set_process(true) _navigation_focus_active = false _release_title_focus() - _title_entry_transition = create_tween() - _title_entry_transition.set_parallel(true) + _bubble_motion_root.position = Vector2.ZERO + _branding_motion_root.position = Vector2.ZERO + _bubble_field.pivot_offset = _bubble_field.size * 0.5 + _bubble_field.scale = Vector2.ONE * QUICK_MENU_ENTER_SCALE + _bubble_field.modulate.a = 0.0 + _title_entry_transition = create_tween().set_parallel(true) _title_entry_transition.tween_property( _start_prompt_center, "modulate:a", 0.0, - INTRO_PROMPT_FADE_DURATION - ).set_trans(Tween.TRANS_CUBIC).set_ease(Tween.EASE_IN_OUT) + QUICK_MENU_EXIT_DURATION + ).set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_IN) _title_entry_transition.tween_property( - _bubble_motion_root, - "position", - Vector2.ZERO, - INTRO_BUBBLE_TRAVEL_DURATION - ).set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_IN_OUT) + _bubble_field, + "scale", + Vector2.ONE, + QUICK_MENU_ENTER_DURATION + ).set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_OUT) _title_entry_transition.tween_property( - _branding_motion_root, - "position", - Vector2.ZERO, - INTRO_BRANDING_TRAVEL_DURATION - ).set_delay(INTRO_BRANDING_START_DELAY).set_trans( - Tween.TRANS_QUAD - ).set_ease(Tween.EASE_IN_OUT) + _bubble_field, + "modulate:a", + 1.0, + QUICK_MENU_ENTER_DURATION + ) _title_entry_transition.finished.connect( _finish_primary_menu_reveal.bind(generation), CONNECT_ONE_SHOT @@ -795,6 +786,8 @@ func _finish_primary_menu_reveal(generation: int) -> void: _title_entry_transition_active = false _start_prompt_center.hide() _start_prompt_center.modulate.a = 1.0 + _bubble_field.scale = Vector2.ONE + _bubble_field.modulate.a = 1.0 _feedback_label.modulate.a = 0.0 _set_title_bubbles_interactive(true) @@ -807,6 +800,10 @@ func _cancel_title_entry_transition() -> void: _title_entry_transition_active = false if is_node_ready(): _start_prompt_center.modulate.a = 1.0 + _bubble_motion_root.position = Vector2.ZERO + _branding_motion_root.position = Vector2.ZERO + _bubble_field.scale = Vector2.ONE + _bubble_field.modulate.a = 1.0 func _schedule_intro_presentation() -> void: @@ -830,59 +827,13 @@ func _prepare_intro_presentation(generation: int) -> void: return _branding_motion_root.size = _branding_slot.size _bubble_motion_root.size = _bubble_layout_slot.size - var intro_tail_height: float = ( - _title_spacer.get_combined_minimum_size().y - + float(_main_content.get_theme_constant("separation")) - ) - var inverse_stage_transform: Transform2D = ( - _title_presentation_scale_root.get_global_transform().affine_inverse() - ) - var branding_anchor_position: Vector2 = ( - inverse_stage_transform - * _intro_branding_anchor.get_global_transform().origin - ) - var branding_slot_position: Vector2 = ( - inverse_stage_transform - * _branding_slot.get_global_transform().origin - ) - var branding_target_position := Vector2( - floorf( - branding_anchor_position.x - - _branding_motion_root.size.x * 0.5 - ), - floorf( - branding_anchor_position.y - - (_branding_motion_root.size.y + intro_tail_height) * 0.5 - ) - ) - _branding_intro_position = ( - branding_target_position - - branding_slot_position - ) - var bubble_bounds: Rect2 = _get_title_bubble_stage_bounds() - bubble_bounds.position -= _bubble_motion_root.position - var presentation_allowance: float = _get_bubble_offscreen_allowance() - _bubble_intro_position = Vector2( - 0.0, - _title_presentation_scale_root.size.y - + presentation_allowance - - bubble_bounds.position.y - ) - _branding_motion_root.position = _branding_intro_position - _bubble_motion_root.position = _bubble_intro_position + _branding_motion_root.position = Vector2.ZERO + _bubble_motion_root.position = Vector2.ZERO _title_content_rest_position = _presentation_center.position _title_bubble_rest_position = _bubble_field.position _intro_geometry_ready = true -func _get_title_bubble_stage_bounds() -> Rect2: - var bubbles: Array[BubbleButton] = _get_title_buttons() - var bounds: Rect2 = _get_title_stage_rect(bubbles[0]) - for index: int in range(1, bubbles.size()): - bounds = bounds.merge(_get_title_stage_rect(bubbles[index])) - return bounds - - func _get_title_stage_rect(control: Control) -> Rect2: var inverse_stage_transform: Transform2D = ( _title_presentation_scale_root.get_global_transform().affine_inverse() @@ -895,30 +846,6 @@ func _get_title_stage_rect(control: Control) -> Rect2: return Rect2(local_position, local_end - local_position) -func _get_bubble_offscreen_allowance() -> float: - var maximum_vertical_amplitude: float = 0.0 - var maximum_deformation_growth: float = 0.0 - for bubble: BubbleButton in _get_title_buttons(): - maximum_vertical_amplitude = maxf( - maximum_vertical_amplitude, - bubble.vertical_amplitude - ) - var maximum_scale: float = ( - 1.0 + bubble.deformation_amplitude - ) * _bubble_field.profile.hover_focus_scale - maximum_deformation_growth = maxf( - maximum_deformation_growth, - bubble.presented_size.y * (maximum_scale - 1.0) * 0.5 - ) - return ( - HOST_CLUSTER_SAFE_MARGIN - + maximum_vertical_amplitude - + maximum_deformation_growth - + _bubble_field.profile.hover_focus_lift - + _bubble_field.profile.maximum_separation - ) - - func _on_continue_stats_hover_changed(hovered: bool) -> void: _continue_stats_hovered = hovered _update_continue_stats_visibility() @@ -975,7 +902,7 @@ func _fade_continue_stats_to(target_opacity: float) -> void: _feedback_label, "modulate:a", target_opacity, - INTRO_PROMPT_FADE_DURATION + QUICK_MENU_ENTER_DURATION ).set_trans(Tween.TRANS_CUBIC).set_ease(Tween.EASE_IN_OUT) @@ -1176,17 +1103,20 @@ func _begin_confirmation_open() -> void: _set_title_bubbles_interactive(false) _release_primary_menu_focus() var generation: int = _confirmation_transition_generation - var content_bounds: Rect2 = _get_title_stage_rect(_main_content) - var exit_distance: float = ( - content_bounds.end.y + HOST_CLUSTER_SAFE_MARGIN - ) - _confirmation_transition = create_tween() + _presentation_center.pivot_offset = _presentation_center.size * 0.5 + _confirmation_transition = create_tween().set_parallel(true) _confirmation_transition.tween_property( _presentation_center, - "position:y", - _confirmation_title_content_rest_position.y - exit_distance, - UIMotion.bubble_duration(exit_distance) - ).set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_IN_OUT) + "scale", + Vector2.ONE * QUICK_MENU_ENTER_SCALE, + QUICK_MENU_EXIT_DURATION + ).set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_IN) + _confirmation_transition.tween_property( + _presentation_center, + "modulate:a", + 0.0, + QUICK_MENU_EXIT_DURATION + ) _confirmation_transition.finished.connect( _finish_confirmation_title_exit.bind(generation), CONNECT_ONE_SHOT @@ -1202,8 +1132,9 @@ func _finish_confirmation_title_exit(generation: int) -> void: _confirmation_transition = null _presentation_center.hide() _presentation_center.position = _confirmation_title_content_rest_position + _reset_quick_menu_presentation(_presentation_center) _confirmation_page.transition_in( - 0.0, + QUICK_MENU_ENTER_DURATION, _finish_confirmation_open.bind(generation) ) @@ -1227,7 +1158,7 @@ func _begin_confirmation_return() -> void: _confirmation_page.lock_interaction() var generation: int = _confirmation_transition_generation _confirmation_page.transition_out( - 0.0, + QUICK_MENU_EXIT_DURATION, _finish_confirmation_page_exit.bind(generation) ) @@ -1239,23 +1170,22 @@ func _finish_confirmation_page_exit(generation: int) -> void: ): return _confirmation_action = ConfirmationAction.NONE - _presentation_center.position = Vector2( - _confirmation_title_content_rest_position.x, - _title_presentation_scale_root.size.y - + HOST_CLUSTER_SAFE_MARGIN - ) + _presentation_center.position = _confirmation_title_content_rest_position _presentation_center.show() - var entry_distance: float = absf( - _presentation_center.position.y - - _confirmation_title_content_rest_position.y - ) - _confirmation_transition = create_tween() + _prepare_quick_menu_enter(_presentation_center) + _confirmation_transition = create_tween().set_parallel(true) _confirmation_transition.tween_property( _presentation_center, - "position", - _confirmation_title_content_rest_position, - UIMotion.bubble_duration(entry_distance) - ).set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_IN_OUT) + "scale", + Vector2.ONE, + QUICK_MENU_ENTER_DURATION + ).set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_OUT) + _confirmation_transition.tween_property( + _presentation_center, + "modulate:a", + 1.0, + QUICK_MENU_ENTER_DURATION + ) _confirmation_transition.finished.connect( _finish_confirmation_return.bind(generation), CONNECT_ONE_SHOT @@ -1271,6 +1201,7 @@ func _finish_confirmation_return(generation: int) -> void: _confirmation_transition = null _confirmation_transition_active = false _presentation_center.position = _confirmation_title_content_rest_position + _reset_quick_menu_presentation(_presentation_center) _set_title_bubbles_interactive(true) var restore_navigation_focus: bool = _modal_restore_navigation_focus _modal_restore_navigation_focus = false @@ -1297,6 +1228,7 @@ func _reset_confirmation() -> void: _confirmation_page.hide_page() if is_node_ready(): _presentation_center.position = _confirmation_title_content_rest_position + _reset_quick_menu_presentation(_presentation_center) _presentation_center.show() @@ -1364,17 +1296,20 @@ func _begin_title_cluster_exit() -> void: _set_title_bubbles_interactive(false) _release_primary_menu_focus() var generation: int = _title_settings_transition_generation - var content_bounds: Rect2 = _get_title_stage_rect(_main_content) - var exit_distance: float = ( - content_bounds.end.y + HOST_CLUSTER_SAFE_MARGIN - ) - _title_settings_transition = create_tween() + _presentation_center.pivot_offset = _presentation_center.size * 0.5 + _title_settings_transition = create_tween().set_parallel(true) _title_settings_transition.tween_property( _presentation_center, - "position:y", - _title_content_rest_position.y - exit_distance, - UIMotion.bubble_duration(exit_distance) - ).set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_IN_OUT) + "scale", + Vector2.ONE * QUICK_MENU_ENTER_SCALE, + QUICK_MENU_EXIT_DURATION + ).set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_IN) + _title_settings_transition.tween_property( + _presentation_center, + "modulate:a", + 0.0, + QUICK_MENU_EXIT_DURATION + ) _title_settings_transition.finished.connect( _finish_title_cluster_exit.bind(generation), CONNECT_ONE_SHOT @@ -1402,6 +1337,7 @@ func _finish_title_cluster_exit(generation: int) -> void: _title_settings_transition_active = false _presentation_center.hide() _presentation_center.position = _title_content_rest_position + _reset_quick_menu_presentation(_presentation_center) func _begin_title_cluster_return(feedback_text: String) -> void: @@ -1415,21 +1351,22 @@ func _begin_title_cluster_return(feedback_text: String) -> void: _hide_continue_stats_context() _set_title_bubbles_interactive(false) var generation: int = _title_settings_transition_generation - _presentation_center.position = Vector2( - _title_content_rest_position.x, - _title_presentation_scale_root.size.y + HOST_CLUSTER_SAFE_MARGIN - ) + _presentation_center.position = _title_content_rest_position _presentation_center.show() - var entry_distance: float = absf( - _presentation_center.position.y - _title_content_rest_position.y - ) - _title_settings_transition = create_tween() + _prepare_quick_menu_enter(_presentation_center) + _title_settings_transition = create_tween().set_parallel(true) _title_settings_transition.tween_property( _presentation_center, - "position", - _title_content_rest_position, - UIMotion.bubble_duration(entry_distance) - ).set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_IN_OUT) + "scale", + Vector2.ONE, + QUICK_MENU_ENTER_DURATION + ).set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_OUT) + _title_settings_transition.tween_property( + _presentation_center, + "modulate:a", + 1.0, + QUICK_MENU_ENTER_DURATION + ) _title_settings_transition.finished.connect( _finish_title_cluster_return.bind(generation), CONNECT_ONE_SHOT @@ -1445,6 +1382,7 @@ func _finish_title_cluster_return(generation: int) -> void: _title_settings_transition = null _title_settings_transition_active = false _presentation_center.position = _title_content_rest_position + _reset_quick_menu_presentation(_presentation_center) _bubble_field.position = _title_bubble_rest_position _set_title_bubbles_interactive(true) _restore_settings_focus() @@ -1493,6 +1431,7 @@ func _cancel_title_settings_transition() -> void: _title_settings_transition_active = false if is_node_ready(): _presentation_center.position = _title_content_rest_position + _reset_quick_menu_presentation(_presentation_center) _presentation_center.show() _bubble_field.position = _title_bubble_rest_position _set_title_bubbles_interactive(true) @@ -1504,6 +1443,17 @@ func _cancel_title_settings_tween() -> void: _title_settings_transition = null +func _prepare_quick_menu_enter(control: Control) -> void: + control.pivot_offset = control.size * 0.5 + control.scale = Vector2.ONE * QUICK_MENU_ENTER_SCALE + control.modulate.a = 0.0 + + +func _reset_quick_menu_presentation(control: Control) -> void: + control.scale = Vector2.ONE + control.modulate.a = 1.0 + + func _restore_settings_focus() -> void: var restore_navigation_focus: bool = _modal_restore_navigation_focus _modal_restore_navigation_focus = false @@ -2042,30 +1992,8 @@ func _get_idle_decorative_bubble_count() -> int: func _emit_navigation_bubble_flurry() -> void: - if ( - _minimal_presentation - or not _decorative_presentation_active - or not visible - ): - return - var bubble_count: int = _decorative_rng.randi_range( - TRANSITION_BUBBLE_COUNT_MIN, - TRANSITION_BUBBLE_COUNT_MAX - ) - for _bubble_index: int in bubble_count: - if not _spawn_decorative_bubble( - _decorative_generation, - _decorative_rng.randf_range( - TRANSITION_BUBBLE_Y_MIN, - TRANSITION_BUBBLE_Y_MAX - ), - _decorative_rng.randf_range( - TRANSITION_BUBBLE_X_MIN, - TRANSITION_BUBBLE_X_MAX - ), - true - ): - break + # Page changes now use a quick fade and scale without travel bubbles. + pass func _exit_tree() -> void: From 1f3308d83b3d70234ccc0174f2fcd3decabbfee0 Mon Sep 17 00:00:00 2001 From: Voyager Date: Sat, 22 Aug 2026 22:56:55 -0400 Subject: [PATCH 28/90] Keep utility pages within menu bounds --- ui/player_menu.gd | 7 +- ui/players_page.gd | 182 +++++++++++++++++++++++++++------------------ ui/the_net_page.gd | 96 +++++++++++++++++++++--- 3 files changed, 200 insertions(+), 85 deletions(-) diff --git a/ui/player_menu.gd b/ui/player_menu.gd index 95ebc2e..3c5dc77 100644 --- a/ui/player_menu.gd +++ b/ui/player_menu.gd @@ -3253,8 +3253,13 @@ func _finish_menu_entry(generation: int) -> void: _presentation_tween = null _transitioning = false _set_shell_interactive(true) + # A queued TAB press closes the menu immediately after its entry animation. + # Do that before scheduling deferred focus so the closing menu cannot leave a + # stale grab_focus call targeting controls that have just been disabled. + if _backpack_toggle_queued: + _consume_queued_backpack_toggle() + return _reset_controller_zone_for_section() - _consume_queued_backpack_toggle() func _begin_menu_exit(reason: CloseReason, restore_controls: bool) -> void: diff --git a/ui/players_page.gd b/ui/players_page.gd index 04e078b..7b77ef1 100644 --- a/ui/players_page.gd +++ b/ui/players_page.gd @@ -470,77 +470,94 @@ func _build_active_rows() -> void: _add_empty("No authenticated players.") return for entry: PlayerListEntry in entries: - var row := _make_row() - var identity := Label.new() - identity.custom_minimum_size.x = 250 - identity.size_flags_horizontal = Control.SIZE_EXPAND_FILL - var markers: Array[String] = [] - if entry.is_host: - markers.append("host") - if entry.is_operator: - markers.append("operator") - if entry.is_local_player: - markers.append("You") - identity.text = "%s%s · %s\n%s" % [ - entry.display_name, - " [%s]" % ", ".join(markers) if not markers.is_empty() else "", - entry.compact_fingerprint, - entry.continuity_state, - ] - identity.tooltip_text = "Full identity fingerprint:\n%s" % ( - entry.full_fingerprint - ) - identity.add_theme_color_override( - "font_color", UtilityPageStyle.OCEAN_TEXT_PRIMARY - ) - row.add_child(identity) - var ping := Label.new() - ping.custom_minimum_size.x = 60 - ping.text = ( - "Local" if entry.is_host - else "%d ms" % entry.ping_to_host_ms - if entry.ping_to_host_ms >= 0 else "—" - ) - ping.add_theme_color_override( - "font_color", UtilityPageStyle.OCEAN_TEXT_SECONDARY - ) - row.add_child(ping) - var mute := Button.new() - var mute_action: String = "unmute" if entry.muted else "mute" - mute.disabled = entry.is_local_player - mute.pressed.connect(_toggle_mute.bind(entry)) - _configure_moderation_button(mute, MODERATION_MUTE_ICON, mute_action) - row.add_child(mute) - var block := Button.new() - block.disabled = entry.is_local_player - block.pressed.connect(_confirm_block.bind(entry)) - _configure_moderation_button(block, MODERATION_BLOCK_ICON, "block") - row.add_child(block) - if entry.can_manage_operator: - var operator := Button.new() - operator.text = "deop" if entry.is_operator else "op" - operator.pressed.connect(_confirm_operator.bind(entry)) - UtilityPageStyle.apply_compact_ocean_button(operator) - row.add_child(operator) - var clear_art := Button.new() - clear_art.text = "clear art" - clear_art.disabled = not entry.can_clear_art - clear_art.tooltip_text = ( - "Remove every shared artwork this player participated in." - ) - clear_art.pressed.connect(_confirm_clear_art.bind(entry)) - UtilityPageStyle.apply_compact_ocean_button(clear_art) - row.add_child(clear_art) - var kick := Button.new() - kick.disabled = not entry.can_kick - kick.pressed.connect(_confirm_kick.bind(entry)) - _configure_moderation_button(kick, MODERATION_KICK_ICON, "kick") - row.add_child(kick) - var ban := Button.new() - ban.disabled = not entry.can_ban - ban.pressed.connect(_confirm_ban.bind(entry)) - _configure_moderation_button(ban, MODERATION_BAN_ICON, "ban") - row.add_child(ban) + _build_active_player_row(entry) + + +func _build_active_player_row(entry: PlayerListEntry) -> void: + var row := _make_active_player_row() + var identity_row := HBoxContainer.new() + identity_row.add_theme_constant_override("separation", 8) + row.add_child(identity_row) + + var identity := Label.new() + identity.clip_text = true + identity.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS + identity.size_flags_horizontal = Control.SIZE_EXPAND_FILL + var markers: Array[String] = [] + if entry.is_host: + markers.append("host") + if entry.is_operator: + markers.append("operator") + if entry.is_local_player: + markers.append("You") + identity.text = "%s%s · %s\n%s" % [ + entry.display_name, + " [%s]" % ", ".join(markers) if not markers.is_empty() else "", + entry.compact_fingerprint, + entry.continuity_state, + ] + identity.tooltip_text = "Full identity fingerprint:\n%s" % ( + entry.full_fingerprint + ) + identity.add_theme_color_override( + "font_color", UtilityPageStyle.OCEAN_TEXT_PRIMARY + ) + identity_row.add_child(identity) + var ping := Label.new() + ping.custom_minimum_size.x = 72 + ping.text = ( + "Local" if entry.is_host + else "%d ms" % entry.ping_to_host_ms + if entry.ping_to_host_ms >= 0 else "—" + ) + ping.add_theme_color_override( + "font_color", UtilityPageStyle.OCEAN_TEXT_SECONDARY + ) + ping.horizontal_alignment = HORIZONTAL_ALIGNMENT_RIGHT + identity_row.add_child(ping) + + var actions := HBoxContainer.new() + actions.alignment = BoxContainer.ALIGNMENT_END + actions.add_theme_constant_override("separation", 6) + row.add_child(actions) + var mute := Button.new() + var mute_action: String = "unmute" if entry.muted else "mute" + mute.disabled = entry.is_local_player + mute.pressed.connect(_toggle_mute.bind(entry)) + _configure_moderation_button(mute, MODERATION_MUTE_ICON, mute_action) + actions.add_child(mute) + var block := Button.new() + block.disabled = entry.is_local_player + block.pressed.connect(_confirm_block.bind(entry)) + _configure_moderation_button(block, MODERATION_BLOCK_ICON, "block") + actions.add_child(block) + if entry.can_manage_operator: + var operator := Button.new() + operator.text = "deop" if entry.is_operator else "op" + operator.pressed.connect(_confirm_operator.bind(entry)) + UtilityPageStyle.apply_compact_ocean_button(operator) + operator.custom_minimum_size = MODERATION_BUTTON_SIZE + actions.add_child(operator) + var clear_art := Button.new() + clear_art.text = "clear art" + clear_art.disabled = not entry.can_clear_art + clear_art.tooltip_text = ( + "Remove every shared artwork this player participated in." + ) + clear_art.pressed.connect(_confirm_clear_art.bind(entry)) + UtilityPageStyle.apply_compact_ocean_button(clear_art) + clear_art.custom_minimum_size = Vector2(84.0, 40.0) + actions.add_child(clear_art) + var kick := Button.new() + kick.disabled = not entry.can_kick + kick.pressed.connect(_confirm_kick.bind(entry)) + _configure_moderation_button(kick, MODERATION_KICK_ICON, "kick") + actions.add_child(kick) + var ban := Button.new() + ban.disabled = not entry.can_ban + ban.pressed.connect(_confirm_ban.bind(entry)) + _configure_moderation_button(ban, MODERATION_BAN_ICON, "ban") + actions.add_child(ban) func _configure_moderation_button( @@ -580,8 +597,9 @@ func _build_session_artwork_controls() -> void: var counts: Vector2i = _service.get_session_artwork_counts() var row := _make_row() var label := Label.new() - label.custom_minimum_size.x = 600 label.size_flags_horizontal = Control.SIZE_EXPAND_FILL + label.clip_text = true + label.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS label.text = "session artwork · %d layers · %d painted pixels" % [ counts.x, counts.y, ] @@ -611,8 +629,9 @@ func _build_relationship_rows() -> void: for record: Dictionary in records: var row := _make_row() var label := Label.new() - label.custom_minimum_size.x = 560 label.size_flags_horizontal = Control.SIZE_EXPAND_FILL + label.clip_text = true + label.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS var fingerprint := str(record["fingerprint"]) label.text = "%s · %s %s" % [ str(record.get("last_known_display_name", "Player")), @@ -651,8 +670,9 @@ func _build_ban_rows() -> void: var row := _make_row() var fingerprint := str(record["target_fingerprint"]) var label := Label.new() - label.custom_minimum_size.x = 600 label.size_flags_horizontal = Control.SIZE_EXPAND_FILL + label.clip_text = true + label.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS label.text = "%s · %s banned %s" % [ str(record.get("last_known_display_name", "Player")), NetworkIdentityCrypto.compact_suffix(fingerprint), @@ -683,6 +703,20 @@ func _make_row() -> HBoxContainer: return row +func _make_active_player_row() -> VBoxContainer: + var panel := PanelContainer.new() + panel.clip_contents = true + panel.add_theme_stylebox_override( + "panel", UtilityPageStyle.row_style(false) + ) + _list.add_child(panel) + var row := VBoxContainer.new() + row.custom_minimum_size.y = 88 + row.add_theme_constant_override("separation", 4) + panel.add_child(row) + return row + + func _add_empty(text: String) -> void: var label := Label.new() label.text = text diff --git a/ui/the_net_page.gd b/ui/the_net_page.gd index 5f699ad..504128d 100644 --- a/ui/the_net_page.gd +++ b/ui/the_net_page.gd @@ -311,15 +311,17 @@ func _build_job_rows(jobs: Array[Dictionary], empty_text: String) -> void: return for job: Dictionary in jobs: var row := PanelContainer.new() + row.clip_contents = true row.add_theme_stylebox_override( "panel", UtilityPageStyle.row_style(false) ) var content := HBoxContainer.new() - content.add_theme_constant_override("separation", 14) + content.clip_contents = true + content.add_theme_constant_override("separation", 10) row.add_child(content) var text_column := VBoxContainer.new() - text_column.custom_minimum_size.x = 245.0 + text_column.custom_minimum_size.x = 220.0 text_column.size_flags_horizontal = Control.SIZE_EXPAND_FILL content.add_child(text_column) var title := Label.new() @@ -334,6 +336,8 @@ func _build_job_rows(jobs: Array[Dictionary], empty_text: String) -> void: var description := Label.new() description.text = str(job.get("description", "")) description.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART + description.max_lines_visible = 2 + description.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS description.add_theme_font_size_override("font_size", 16) description.add_theme_color_override( "font_color", UtilityPageStyle.OCEAN_TEXT_SECONDARY @@ -343,7 +347,8 @@ func _build_job_rows(jobs: Array[Dictionary], empty_text: String) -> void: var target: int = int(job.get("target", 1)) var progress: int = int(job.get("progress", 0)) var progress_bar := ProgressBar.new() - progress_bar.custom_minimum_size = Vector2(100.0, 24.0) + progress_bar.custom_minimum_size = Vector2(104.0, 24.0) + progress_bar.size_flags_vertical = Control.SIZE_SHRINK_CENTER progress_bar.max_value = float(target) progress_bar.value = float(progress) progress_bar.show_percentage = false @@ -360,24 +365,30 @@ func _build_job_rows(jobs: Array[Dictionary], empty_text: String) -> void: content.add_child(progress_bar) var count := Label.new() - count.custom_minimum_size.x = 54.0 - count.text = "%d / %d" % [progress, target] + count.custom_minimum_size.x = 82.0 + count.clip_text = true + count.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS + count.text = "%s / %s" % [ + _compact_integer(progress), + _compact_integer(target), + ] + count.tooltip_text = "%d / %d" % [progress, target] count.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER count.vertical_alignment = VERTICAL_ALIGNMENT_CENTER + count.add_theme_font_size_override("font_size", 14) count.add_theme_color_override( "font_color", UtilityPageStyle.OCEAN_TEXT_PRIMARY ) content.add_child(count) - var reward := _make_reward_display( + var reward := _make_job_reward_display( int(job.get("fish_coin", 0)), int(job.get("experience", 0)), ) - reward.custom_minimum_size.x = 128.0 content.add_child(reward) var claim := Button.new() - claim.custom_minimum_size = Vector2(76.0, 36.0) + claim.custom_minimum_size = Vector2(72.0, 36.0) var claimable: bool = bool(job.get("claimable", false)) claim.text = "claim" if claimable else ( "done" if int(job.get("completed_count", 0)) > 0 else "working" @@ -457,17 +468,21 @@ func _claim(claim_id: String) -> void: func _make_reward_display(fish_coin: int, experience: int) -> HBoxContainer: var reward := HBoxContainer.new() - reward.mouse_filter = Control.MOUSE_FILTER_IGNORE + reward.tooltip_text = "%d fish coins · %d xp" % [fish_coin, experience] reward.add_theme_constant_override("separation", 7) var currency: CurrencyAmount = ( CurrencyPresentationType.instantiate_amount(fish_coin, 18.0) ) + currency.set_amount_text(_compact_integer(fish_coin)) + currency.tooltip_text = "%d fish coins" % fish_coin currency.get_amount_label().add_theme_color_override( "font_color", UtilityPageStyle.OCEAN_TEXT_SECONDARY ) reward.add_child(currency) var experience_label := Label.new() - experience_label.text = "• %d xp" % experience + experience_label.mouse_filter = Control.MOUSE_FILTER_IGNORE + experience_label.text = "• %s xp" % _compact_integer(experience) + experience_label.tooltip_text = "%d xp" % experience experience_label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER experience_label.add_theme_color_override( "font_color", UtilityPageStyle.OCEAN_TEXT_SECONDARY @@ -476,6 +491,67 @@ func _make_reward_display(fish_coin: int, experience: int) -> HBoxContainer: return reward +func _make_job_reward_display( + fish_coin: int, + experience: int, +) -> VBoxContainer: + var reward := VBoxContainer.new() + reward.custom_minimum_size.x = 104.0 + reward.tooltip_text = "%d fish coins · %d xp" % [fish_coin, experience] + reward.add_theme_constant_override("separation", 1) + var currency: CurrencyAmount = ( + CurrencyPresentationType.instantiate_amount(fish_coin, 16.0) + ) + currency.set_amount_text(_compact_integer(fish_coin)) + currency.tooltip_text = "%d fish coins" % fish_coin + currency.size_flags_horizontal = Control.SIZE_EXPAND_FILL + currency.alignment = BoxContainer.ALIGNMENT_CENTER + currency.get_amount_label().add_theme_font_size_override("font_size", 14) + currency.get_amount_label().add_theme_color_override( + "font_color", UtilityPageStyle.OCEAN_TEXT_SECONDARY + ) + reward.add_child(currency) + var experience_label := Label.new() + experience_label.mouse_filter = Control.MOUSE_FILTER_IGNORE + experience_label.text = "%s xp" % _compact_integer(experience) + experience_label.tooltip_text = "%d xp" % experience + experience_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + experience_label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER + experience_label.add_theme_font_size_override("font_size", 14) + experience_label.add_theme_color_override( + "font_color", UtilityPageStyle.OCEAN_TEXT_SECONDARY + ) + reward.add_child(experience_label) + return reward + + +func _compact_integer(value: int) -> String: + var magnitude: int = absi(value) + var divisor: float = 1.0 + var suffix: String = "" + if magnitude >= 1_000_000_000_000: + divisor = 1_000_000_000_000.0 + suffix = "t" + elif magnitude >= 1_000_000_000: + divisor = 1_000_000_000.0 + suffix = "b" + elif magnitude >= 1_000_000: + divisor = 1_000_000.0 + suffix = "m" + elif magnitude >= 1_000: + divisor = 1_000.0 + suffix = "k" + else: + return str(value) + var scaled: float = float(value) / divisor + var number: String = ( + str(roundi(scaled)) + if absf(scaled) >= 100.0 + else ("%.1f" % scaled).trim_suffix(".0") + ) + return number + suffix + + func _add_empty(message: String) -> void: var empty := Label.new() empty.text = message From 2cb49cf680123c8cae36016cf11cfc0903b59e76 Mon Sep 17 00:00:00 2001 From: Voyager Date: Sat, 22 Aug 2026 23:10:41 -0400 Subject: [PATCH 29/90] Preserve profile name input focus --- ...ontroller_menu_accessibility_validation.gd | 7 ++ ui/profile_page.gd | 90 ++++++++++--------- 2 files changed, 55 insertions(+), 42 deletions(-) diff --git a/tests/controller_menu_accessibility_validation.gd b/tests/controller_menu_accessibility_validation.gd index 4176ddc..c2a58ee 100644 --- a/tests/controller_menu_accessibility_validation.gd +++ b/tests/controller_menu_accessibility_validation.gd @@ -735,6 +735,13 @@ func _validate_profile_confirmation_focus() -> void: page.call("activate") page.call("set_interactive", true) page.call("reset_controller_zone") + var name_edit := page.get("_name_edit") as LineEdit + name_edit.grab_focus() + page.call("_on_name_changed", "V") + _expect( + root.gui_get_focus_owner() == name_edit, + "Typing a profile name released the active name field.", + ) var suggestions := page.get("_suggestions") as HBoxContainer var suggestion := Button.new() suggestion.text = "alternate name" diff --git a/ui/profile_page.gd b/ui/profile_page.gd index be15a0f..ece0673 100644 --- a/ui/profile_page.gd +++ b/ui/profile_page.gd @@ -365,54 +365,60 @@ func _apply_controller_zone_focus() -> void: var control := item as Control if control != null and control not in all_option_controls: all_option_controls.append(control) - for control: Control in account_controls + category_controls + all_option_controls: - control.focus_mode = Control.FOCUS_NONE + var active_controls: Array[Control] = [] + if _profile_interactive: + if _discard_confirmation != null and _discard_confirmation.visible: + active_controls = [ + _confirmation_confirm, + _keep_editing_button, + ] + else: + match _controller_zone: + ControllerZone.ACCOUNT: + active_controls = account_controls + ControllerZone.CATEGORIES: + active_controls = category_controls + ControllerZone.OPTIONS: + if not option_groups.is_empty(): + _controller_option_depth = clampi( + _controller_option_depth, + 0, + option_groups.size() - 1, + ) + for item: Variant in option_groups[ + _controller_option_depth + ]: + var control := item as Control + if control != null: + active_controls.append(control) + ControllerZone.COLOR_PICKER: + active_controls = _color_picker_controller_controls() + var controlled_controls: Array[Control] = ( + account_controls + category_controls + all_option_controls + ) for control: Control in [_confirmation_confirm, _keep_editing_button]: - if control != null: - control.focus_mode = Control.FOCUS_NONE + if control != null and control not in controlled_controls: + controlled_controls.append(control) + for control: Control in controlled_controls: + var button := control as BaseButton + var requested_focus_mode := ( + Control.FOCUS_ALL + if ( + control in active_controls + and (button == null or not button.disabled) + ) + else Control.FOCUS_NONE + ) + # Reassigning FOCUS_NONE to every control before restoring the active zone + # drops an active LineEdit after its first text_changed signal. + if control.focus_mode != requested_focus_mode: + control.focus_mode = requested_focus_mode if _preview != null: _preview.focus_mode = Control.FOCUS_NONE if _reset_view_button != null: _reset_view_button.focus_mode = Control.FOCUS_NONE - if not _profile_interactive: + if not _profile_interactive or active_controls.is_empty(): return - if _discard_confirmation != null and _discard_confirmation.visible: - var confirmation_controls: Array[Control] = [ - _confirmation_confirm, - _keep_editing_button, - ] - for control: Control in confirmation_controls: - control.focus_mode = Control.FOCUS_ALL - ControllerFocusNavigation.configure_spatial_neighbors( - confirmation_controls - ) - return - var active_controls: Array[Control] = [] - match _controller_zone: - ControllerZone.ACCOUNT: - active_controls = account_controls - ControllerZone.CATEGORIES: - active_controls = category_controls - ControllerZone.OPTIONS: - if not option_groups.is_empty(): - _controller_option_depth = clampi( - _controller_option_depth, - 0, - option_groups.size() - 1, - ) - for item: Variant in option_groups[_controller_option_depth]: - var control := item as Control - if control != null: - active_controls.append(control) - ControllerZone.COLOR_PICKER: - active_controls = _color_picker_controller_controls() - for control: Control in active_controls: - var button := control as BaseButton - control.focus_mode = ( - Control.FOCUS_ALL - if button == null or not button.disabled - else Control.FOCUS_NONE - ) ControllerFocusNavigation.configure_spatial_neighbors(active_controls) From 810a62d9e9d9203359c2669a34fdf28d1cee0ea7 Mon Sep 17 00:00:00 2001 From: Voyager Date: Sat, 22 Aug 2026 23:29:51 -0400 Subject: [PATCH 30/90] Fix terrain texture sampling --- world/generation/chunks/assets/chunk_0017_cliff_wall.png.import | 2 +- world/generation/chunks/assets/chunk_0017_dirt.png.import | 2 +- world/generation/chunks/assets/chunk_0017_grass_lite.png.import | 2 +- world/generation/chunks/assets/chunk_0018_cliff_wall.png.import | 2 +- world/generation/chunks/assets/chunk_0018_dirt.png.import | 2 +- world/generation/chunks/assets/chunk_0018_grass_lite.png.import | 2 +- world/generation/chunks/assets/chunk_0019_dirt.png.import | 2 +- world/generation/chunks/assets/chunk_0020_cliff_wall.png.import | 2 +- world/generation/chunks/assets/chunk_0020_dirt.png.import | 2 +- world/generation/chunks/assets/chunk_0020_grass_lite.png.import | 2 +- world/generation/chunks/assets/chunk_0021_cliff_wall.png.import | 2 +- world/generation/chunks/assets/chunk_0021_dirt.png.import | 2 +- world/generation/chunks/assets/chunk_0021_grass_lite.png.import | 2 +- world/generation/chunks/assets/chunk_0022_cliff_wall.png.import | 2 +- world/generation/chunks/assets/chunk_0022_dirt.png.import | 2 +- world/generation/chunks/assets/chunk_0022_grass_lite.png.import | 2 +- world/generation/chunks/assets/chunk_0023_cliff_wall.png.import | 2 +- world/generation/chunks/assets/chunk_0023_dirt.png.import | 2 +- world/generation/chunks/assets/chunk_0023_grass_lite.png.import | 2 +- world/generation/chunks/assets/chunk_0024_cliff_wall.png.import | 2 +- world/generation/chunks/assets/chunk_0024_dirt.png.import | 2 +- world/generation/chunks/assets/chunk_0024_grass_lite.png.import | 2 +- world/generation/chunks/assets/chunk_0025_cliff_wall.png.import | 2 +- world/generation/chunks/assets/chunk_0025_dirt.png.import | 2 +- world/generation/chunks/assets/chunk_0025_grass_lite.png.import | 2 +- world/generation/chunks/assets/chunk_0026_cliff_wall.png.import | 2 +- world/generation/chunks/assets/chunk_0026_grass_lite.png.import | 2 +- world/generation/chunks/assets/chunk_0027_cliff_wall.png.import | 2 +- world/generation/chunks/assets/chunk_0027_grass_lite.png.import | 2 +- world/generation/chunks/assets/chunk_0028_grass_lite.png.import | 2 +- world/generation/chunks/assets/chunk_0029_cliff_wall.png.import | 2 +- world/generation/chunks/assets/chunk_0029_dirt.png.import | 2 +- world/generation/chunks/assets/chunk_0029_grass_lite.png.import | 2 +- world/generation/chunks/assets/chunk_0030_cliff_wall.png.import | 2 +- world/generation/chunks/assets/chunk_0030_dirt.png.import | 2 +- world/generation/chunks/assets/chunk_0030_grass_lite.png.import | 2 +- world/generation/chunks/assets/chunk_0031_cliff_wall.png.import | 2 +- world/generation/chunks/assets/chunk_0031_dirt.png.import | 2 +- world/generation/chunks/assets/chunk_0031_sand.png.import | 2 +- world/generation/chunks/assets/chunk_0032_cliff_wall.png.import | 2 +- world/generation/chunks/assets/chunk_0032_dirt.png.import | 2 +- world/generation/chunks/assets/chunk_0032_sand.png.import | 2 +- world/generation/chunks/assets/chunk_0033_cliff_wall.png.import | 2 +- world/generation/chunks/assets/chunk_0033_dirt.png.import | 2 +- world/generation/chunks/assets/chunk_0033_grass_lite.png.import | 2 +- world/generation/chunks/assets/chunk_0034_cliff_wall.png.import | 2 +- world/generation/chunks/assets/chunk_0034_dirt.png.import | 2 +- world/generation/chunks/assets/chunk_0034_grass_lite.png.import | 2 +- world/generation/chunks/assets/chunk_0035_cliff_wall.png.import | 2 +- world/generation/chunks/assets/chunk_0035_dirt.png.import | 2 +- world/generation/chunks/assets/chunk_0035_grass_lite.png.import | 2 +- world/generation/chunks/assets/chunk_0036_cliff_wall.png.import | 2 +- world/generation/chunks/assets/chunk_0036_dirt.png.import | 2 +- world/generation/chunks/assets/chunk_0036_grass_lite.png.import | 2 +- world/generation/chunks/assets/chunk_0037_cliff_wall.png.import | 2 +- world/generation/chunks/assets/chunk_0037_dirt.png.import | 2 +- world/generation/chunks/assets/chunk_0037_grass_lite.png.import | 2 +- 57 files changed, 57 insertions(+), 57 deletions(-) diff --git a/world/generation/chunks/assets/chunk_0017_cliff_wall.png.import b/world/generation/chunks/assets/chunk_0017_cliff_wall.png.import index 7f3dea6..9aabd9e 100644 --- a/world/generation/chunks/assets/chunk_0017_cliff_wall.png.import +++ b/world/generation/chunks/assets/chunk_0017_cliff_wall.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0017_dirt.png.import b/world/generation/chunks/assets/chunk_0017_dirt.png.import index 98db559..5f0c573 100644 --- a/world/generation/chunks/assets/chunk_0017_dirt.png.import +++ b/world/generation/chunks/assets/chunk_0017_dirt.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0017_grass_lite.png.import b/world/generation/chunks/assets/chunk_0017_grass_lite.png.import index 7900160..6cdf991 100644 --- a/world/generation/chunks/assets/chunk_0017_grass_lite.png.import +++ b/world/generation/chunks/assets/chunk_0017_grass_lite.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0018_cliff_wall.png.import b/world/generation/chunks/assets/chunk_0018_cliff_wall.png.import index 8ff1e9e..4744819 100644 --- a/world/generation/chunks/assets/chunk_0018_cliff_wall.png.import +++ b/world/generation/chunks/assets/chunk_0018_cliff_wall.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0018_dirt.png.import b/world/generation/chunks/assets/chunk_0018_dirt.png.import index a82aa97..daa9a97 100644 --- a/world/generation/chunks/assets/chunk_0018_dirt.png.import +++ b/world/generation/chunks/assets/chunk_0018_dirt.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0018_grass_lite.png.import b/world/generation/chunks/assets/chunk_0018_grass_lite.png.import index e3a3f42..01e8f13 100644 --- a/world/generation/chunks/assets/chunk_0018_grass_lite.png.import +++ b/world/generation/chunks/assets/chunk_0018_grass_lite.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0019_dirt.png.import b/world/generation/chunks/assets/chunk_0019_dirt.png.import index d904ec2..5e6d34d 100644 --- a/world/generation/chunks/assets/chunk_0019_dirt.png.import +++ b/world/generation/chunks/assets/chunk_0019_dirt.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0020_cliff_wall.png.import b/world/generation/chunks/assets/chunk_0020_cliff_wall.png.import index ebce923..61678db 100644 --- a/world/generation/chunks/assets/chunk_0020_cliff_wall.png.import +++ b/world/generation/chunks/assets/chunk_0020_cliff_wall.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0020_dirt.png.import b/world/generation/chunks/assets/chunk_0020_dirt.png.import index d5a4e13..7294695 100644 --- a/world/generation/chunks/assets/chunk_0020_dirt.png.import +++ b/world/generation/chunks/assets/chunk_0020_dirt.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0020_grass_lite.png.import b/world/generation/chunks/assets/chunk_0020_grass_lite.png.import index 1f1bf83..4d687c1 100644 --- a/world/generation/chunks/assets/chunk_0020_grass_lite.png.import +++ b/world/generation/chunks/assets/chunk_0020_grass_lite.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0021_cliff_wall.png.import b/world/generation/chunks/assets/chunk_0021_cliff_wall.png.import index 6b8e49d..67bfa84 100644 --- a/world/generation/chunks/assets/chunk_0021_cliff_wall.png.import +++ b/world/generation/chunks/assets/chunk_0021_cliff_wall.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0021_dirt.png.import b/world/generation/chunks/assets/chunk_0021_dirt.png.import index 4361661..1c013b3 100644 --- a/world/generation/chunks/assets/chunk_0021_dirt.png.import +++ b/world/generation/chunks/assets/chunk_0021_dirt.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0021_grass_lite.png.import b/world/generation/chunks/assets/chunk_0021_grass_lite.png.import index 9abd806..a3c934b 100644 --- a/world/generation/chunks/assets/chunk_0021_grass_lite.png.import +++ b/world/generation/chunks/assets/chunk_0021_grass_lite.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0022_cliff_wall.png.import b/world/generation/chunks/assets/chunk_0022_cliff_wall.png.import index 00a0a6c..03e5207 100644 --- a/world/generation/chunks/assets/chunk_0022_cliff_wall.png.import +++ b/world/generation/chunks/assets/chunk_0022_cliff_wall.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0022_dirt.png.import b/world/generation/chunks/assets/chunk_0022_dirt.png.import index d4ab2b7..e22d51f 100644 --- a/world/generation/chunks/assets/chunk_0022_dirt.png.import +++ b/world/generation/chunks/assets/chunk_0022_dirt.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0022_grass_lite.png.import b/world/generation/chunks/assets/chunk_0022_grass_lite.png.import index 5da46d7..bf1ea66 100644 --- a/world/generation/chunks/assets/chunk_0022_grass_lite.png.import +++ b/world/generation/chunks/assets/chunk_0022_grass_lite.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0023_cliff_wall.png.import b/world/generation/chunks/assets/chunk_0023_cliff_wall.png.import index 6b04e10..65c27ba 100644 --- a/world/generation/chunks/assets/chunk_0023_cliff_wall.png.import +++ b/world/generation/chunks/assets/chunk_0023_cliff_wall.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0023_dirt.png.import b/world/generation/chunks/assets/chunk_0023_dirt.png.import index e5e1e7d..3975b24 100644 --- a/world/generation/chunks/assets/chunk_0023_dirt.png.import +++ b/world/generation/chunks/assets/chunk_0023_dirt.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0023_grass_lite.png.import b/world/generation/chunks/assets/chunk_0023_grass_lite.png.import index fac5caa..588fbed 100644 --- a/world/generation/chunks/assets/chunk_0023_grass_lite.png.import +++ b/world/generation/chunks/assets/chunk_0023_grass_lite.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0024_cliff_wall.png.import b/world/generation/chunks/assets/chunk_0024_cliff_wall.png.import index b1ac6d4..b0e6939 100644 --- a/world/generation/chunks/assets/chunk_0024_cliff_wall.png.import +++ b/world/generation/chunks/assets/chunk_0024_cliff_wall.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0024_dirt.png.import b/world/generation/chunks/assets/chunk_0024_dirt.png.import index c2767a5..93d87c4 100644 --- a/world/generation/chunks/assets/chunk_0024_dirt.png.import +++ b/world/generation/chunks/assets/chunk_0024_dirt.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0024_grass_lite.png.import b/world/generation/chunks/assets/chunk_0024_grass_lite.png.import index 18ba75b..8613b78 100644 --- a/world/generation/chunks/assets/chunk_0024_grass_lite.png.import +++ b/world/generation/chunks/assets/chunk_0024_grass_lite.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0025_cliff_wall.png.import b/world/generation/chunks/assets/chunk_0025_cliff_wall.png.import index d50c099..d09eccc 100644 --- a/world/generation/chunks/assets/chunk_0025_cliff_wall.png.import +++ b/world/generation/chunks/assets/chunk_0025_cliff_wall.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0025_dirt.png.import b/world/generation/chunks/assets/chunk_0025_dirt.png.import index 6e2567a..6395133 100644 --- a/world/generation/chunks/assets/chunk_0025_dirt.png.import +++ b/world/generation/chunks/assets/chunk_0025_dirt.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0025_grass_lite.png.import b/world/generation/chunks/assets/chunk_0025_grass_lite.png.import index f31dc6b..fa98730 100644 --- a/world/generation/chunks/assets/chunk_0025_grass_lite.png.import +++ b/world/generation/chunks/assets/chunk_0025_grass_lite.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0026_cliff_wall.png.import b/world/generation/chunks/assets/chunk_0026_cliff_wall.png.import index 5c23b71..b8038e7 100644 --- a/world/generation/chunks/assets/chunk_0026_cliff_wall.png.import +++ b/world/generation/chunks/assets/chunk_0026_cliff_wall.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0026_grass_lite.png.import b/world/generation/chunks/assets/chunk_0026_grass_lite.png.import index 70f09b8..93e22cf 100644 --- a/world/generation/chunks/assets/chunk_0026_grass_lite.png.import +++ b/world/generation/chunks/assets/chunk_0026_grass_lite.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0027_cliff_wall.png.import b/world/generation/chunks/assets/chunk_0027_cliff_wall.png.import index 879d5e3..8c1b56c 100644 --- a/world/generation/chunks/assets/chunk_0027_cliff_wall.png.import +++ b/world/generation/chunks/assets/chunk_0027_cliff_wall.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0027_grass_lite.png.import b/world/generation/chunks/assets/chunk_0027_grass_lite.png.import index f28a644..da0daec 100644 --- a/world/generation/chunks/assets/chunk_0027_grass_lite.png.import +++ b/world/generation/chunks/assets/chunk_0027_grass_lite.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0028_grass_lite.png.import b/world/generation/chunks/assets/chunk_0028_grass_lite.png.import index be8f36f..a6ef773 100644 --- a/world/generation/chunks/assets/chunk_0028_grass_lite.png.import +++ b/world/generation/chunks/assets/chunk_0028_grass_lite.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0029_cliff_wall.png.import b/world/generation/chunks/assets/chunk_0029_cliff_wall.png.import index 5278840..838ab21 100644 --- a/world/generation/chunks/assets/chunk_0029_cliff_wall.png.import +++ b/world/generation/chunks/assets/chunk_0029_cliff_wall.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0029_dirt.png.import b/world/generation/chunks/assets/chunk_0029_dirt.png.import index f36d155..0dbc179 100644 --- a/world/generation/chunks/assets/chunk_0029_dirt.png.import +++ b/world/generation/chunks/assets/chunk_0029_dirt.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0029_grass_lite.png.import b/world/generation/chunks/assets/chunk_0029_grass_lite.png.import index d9f7112..0e09f18 100644 --- a/world/generation/chunks/assets/chunk_0029_grass_lite.png.import +++ b/world/generation/chunks/assets/chunk_0029_grass_lite.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0030_cliff_wall.png.import b/world/generation/chunks/assets/chunk_0030_cliff_wall.png.import index d117bfe..67f100f 100644 --- a/world/generation/chunks/assets/chunk_0030_cliff_wall.png.import +++ b/world/generation/chunks/assets/chunk_0030_cliff_wall.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0030_dirt.png.import b/world/generation/chunks/assets/chunk_0030_dirt.png.import index 7c06611..2179074 100644 --- a/world/generation/chunks/assets/chunk_0030_dirt.png.import +++ b/world/generation/chunks/assets/chunk_0030_dirt.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0030_grass_lite.png.import b/world/generation/chunks/assets/chunk_0030_grass_lite.png.import index 5103423..4ad043d 100644 --- a/world/generation/chunks/assets/chunk_0030_grass_lite.png.import +++ b/world/generation/chunks/assets/chunk_0030_grass_lite.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0031_cliff_wall.png.import b/world/generation/chunks/assets/chunk_0031_cliff_wall.png.import index f08bbcf..8294d13 100644 --- a/world/generation/chunks/assets/chunk_0031_cliff_wall.png.import +++ b/world/generation/chunks/assets/chunk_0031_cliff_wall.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0031_dirt.png.import b/world/generation/chunks/assets/chunk_0031_dirt.png.import index 8e60684..3d13618 100644 --- a/world/generation/chunks/assets/chunk_0031_dirt.png.import +++ b/world/generation/chunks/assets/chunk_0031_dirt.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0031_sand.png.import b/world/generation/chunks/assets/chunk_0031_sand.png.import index 52c65ef..1a2109a 100644 --- a/world/generation/chunks/assets/chunk_0031_sand.png.import +++ b/world/generation/chunks/assets/chunk_0031_sand.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0032_cliff_wall.png.import b/world/generation/chunks/assets/chunk_0032_cliff_wall.png.import index 649fc08..e816e2a 100644 --- a/world/generation/chunks/assets/chunk_0032_cliff_wall.png.import +++ b/world/generation/chunks/assets/chunk_0032_cliff_wall.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0032_dirt.png.import b/world/generation/chunks/assets/chunk_0032_dirt.png.import index 89c35c2..6e15f8e 100644 --- a/world/generation/chunks/assets/chunk_0032_dirt.png.import +++ b/world/generation/chunks/assets/chunk_0032_dirt.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0032_sand.png.import b/world/generation/chunks/assets/chunk_0032_sand.png.import index 0d28555..ecd522c 100644 --- a/world/generation/chunks/assets/chunk_0032_sand.png.import +++ b/world/generation/chunks/assets/chunk_0032_sand.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0033_cliff_wall.png.import b/world/generation/chunks/assets/chunk_0033_cliff_wall.png.import index 1fea1a8..bb70b95 100644 --- a/world/generation/chunks/assets/chunk_0033_cliff_wall.png.import +++ b/world/generation/chunks/assets/chunk_0033_cliff_wall.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0033_dirt.png.import b/world/generation/chunks/assets/chunk_0033_dirt.png.import index 5d3f72d..59d6091 100644 --- a/world/generation/chunks/assets/chunk_0033_dirt.png.import +++ b/world/generation/chunks/assets/chunk_0033_dirt.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0033_grass_lite.png.import b/world/generation/chunks/assets/chunk_0033_grass_lite.png.import index 04f4308..9ba9ad5 100644 --- a/world/generation/chunks/assets/chunk_0033_grass_lite.png.import +++ b/world/generation/chunks/assets/chunk_0033_grass_lite.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0034_cliff_wall.png.import b/world/generation/chunks/assets/chunk_0034_cliff_wall.png.import index 0bfd461..ef3837b 100644 --- a/world/generation/chunks/assets/chunk_0034_cliff_wall.png.import +++ b/world/generation/chunks/assets/chunk_0034_cliff_wall.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0034_dirt.png.import b/world/generation/chunks/assets/chunk_0034_dirt.png.import index 8a37ca8..c5396d0 100644 --- a/world/generation/chunks/assets/chunk_0034_dirt.png.import +++ b/world/generation/chunks/assets/chunk_0034_dirt.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0034_grass_lite.png.import b/world/generation/chunks/assets/chunk_0034_grass_lite.png.import index 8739610..da7f74e 100644 --- a/world/generation/chunks/assets/chunk_0034_grass_lite.png.import +++ b/world/generation/chunks/assets/chunk_0034_grass_lite.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0035_cliff_wall.png.import b/world/generation/chunks/assets/chunk_0035_cliff_wall.png.import index 356ffcb..ab6141b 100644 --- a/world/generation/chunks/assets/chunk_0035_cliff_wall.png.import +++ b/world/generation/chunks/assets/chunk_0035_cliff_wall.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0035_dirt.png.import b/world/generation/chunks/assets/chunk_0035_dirt.png.import index 196b777..52d770f 100644 --- a/world/generation/chunks/assets/chunk_0035_dirt.png.import +++ b/world/generation/chunks/assets/chunk_0035_dirt.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0035_grass_lite.png.import b/world/generation/chunks/assets/chunk_0035_grass_lite.png.import index 7b09849..6355dae 100644 --- a/world/generation/chunks/assets/chunk_0035_grass_lite.png.import +++ b/world/generation/chunks/assets/chunk_0035_grass_lite.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0036_cliff_wall.png.import b/world/generation/chunks/assets/chunk_0036_cliff_wall.png.import index 8913259..12d564e 100644 --- a/world/generation/chunks/assets/chunk_0036_cliff_wall.png.import +++ b/world/generation/chunks/assets/chunk_0036_cliff_wall.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0036_dirt.png.import b/world/generation/chunks/assets/chunk_0036_dirt.png.import index 56830df..88dcd52 100644 --- a/world/generation/chunks/assets/chunk_0036_dirt.png.import +++ b/world/generation/chunks/assets/chunk_0036_dirt.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0036_grass_lite.png.import b/world/generation/chunks/assets/chunk_0036_grass_lite.png.import index 28be931..169a0c9 100644 --- a/world/generation/chunks/assets/chunk_0036_grass_lite.png.import +++ b/world/generation/chunks/assets/chunk_0036_grass_lite.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0037_cliff_wall.png.import b/world/generation/chunks/assets/chunk_0037_cliff_wall.png.import index 57a5e84..becbde7 100644 --- a/world/generation/chunks/assets/chunk_0037_cliff_wall.png.import +++ b/world/generation/chunks/assets/chunk_0037_cliff_wall.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0037_dirt.png.import b/world/generation/chunks/assets/chunk_0037_dirt.png.import index 63ee56e..0fbdf22 100644 --- a/world/generation/chunks/assets/chunk_0037_dirt.png.import +++ b/world/generation/chunks/assets/chunk_0037_dirt.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0037_grass_lite.png.import b/world/generation/chunks/assets/chunk_0037_grass_lite.png.import index d884d1f..2721167 100644 --- a/world/generation/chunks/assets/chunk_0037_grass_lite.png.import +++ b/world/generation/chunks/assets/chunk_0037_grass_lite.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" From d2ee4a515eda328beb65b743136f4449f45ab318 Mon Sep 17 00:00:00 2001 From: Voyager Date: Sat, 22 Aug 2026 23:30:07 -0400 Subject: [PATCH 31/90] chore: prepare v0.16.0-alpha release --- docs/README-PLAYTEST.txt | 7 ++++--- export_presets.cfg | 26 +++++++++++++------------- project.godot | 2 +- scripts/build_playtest.sh | 6 +++--- ui/title_screen.tscn | 2 +- 5 files changed, 22 insertions(+), 21 deletions(-) diff --git a/docs/README-PLAYTEST.txt b/docs/README-PLAYTEST.txt index cc99ec6..3000024 100644 --- a/docs/README-PLAYTEST.txt +++ b/docs/README-PLAYTEST.txt @@ -1,6 +1,6 @@ NETfishing -v0.15.0-alpha -Alpha 0.15.0 +v0.16.0-alpha +Alpha 0.16.0 Thank you for trying this early private playtest. @@ -83,7 +83,8 @@ FEATURES TO TRY - Equipment and consumable use from the hotbar - Fishing Shop sell tray, wallet updates, and persistent upgrades - Seeded generated worlds and the authored starter-island layout -- Generated beaches, coastal sand, denser forests, inland elevation, and closed coastal cliffs +- Generated beaches, ponds, lakes, complete rivers, denser forests, varied + elevation, and closed coastal cliffs - Collaborative Art Kit drawing, finalized artwork, PNG export, and stamps - Save, Continue, New Game, and Delete Save - Game Menu and persistent camera settings diff --git a/export_presets.cfg b/export_presets.cfg index 2150ebe..e3f474c 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -9,7 +9,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.15.0-alpha/windows-x86_64/NETfishing.exe" +export_path="builds/v0.16.0-alpha/windows-x86_64/NETfishing.exe" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -35,11 +35,11 @@ application/modify_resources=true application/icon="res://art/exported/system_icons/netfishing.ico" application/console_wrapper_icon="" application/icon_interpolation=4 -application/file_version="0.15.0.0" -application/product_version="0.15.0.0" +application/file_version="0.16.0.0" +application/product_version="0.16.0.0" application/company_name="Woofmeow" application/product_name="NETfishing" -application/file_description="NETfishing v0.15.0-alpha" +application/file_description="NETfishing v0.16.0-alpha" application/copyright="Copyright © 2026 Woofmeow" application/trademarks="NETfishing and Woofmeow branding is reserved; see TRADEMARKS.md" application/export_angle=0 @@ -62,7 +62,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.15.0-alpha/linux-arm64/NETfishing.arm64" +export_path="builds/v0.16.0-alpha/linux-arm64/NETfishing.arm64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -92,7 +92,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.15.0-alpha/macos/NETfishing.zip" +export_path="builds/v0.16.0-alpha/macos/NETfishing.zip" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -108,8 +108,8 @@ custom_template/release="" application/bundle_identifier="io.woofmeow.netfishing" application/icon="res://art/exported/system_icons/netfishing_1024.png" application/icon_interpolation=0 -application/short_version="0.15.0" -application/version="0.15.0" +application/short_version="0.16.0" +application/version="0.16.0" application/architecture="universal" codesign/enable=false notarization/enable=false @@ -125,7 +125,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*,tests/*" -export_path="builds/v0.15.0-alpha/server-linux-x86_64/NETfishingServer.x86_64" +export_path="builds/v0.16.0-alpha/server-linux-x86_64/NETfishingServer.x86_64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -155,7 +155,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.15.0-alpha/android/NETfishing.apk" +export_path="builds/v0.16.0-alpha/android/NETfishing.apk" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -176,8 +176,8 @@ architectures/armeabi-v7a=false architectures/arm64-v8a=true architectures/x86=false architectures/x86_64=false -version/code=150000 -version/name="v0.15.0-alpha" +version/code=160000 +version/name="v0.16.0-alpha" package/unique_name="io.woofmeow.netfishing" package/name="NETfishing" package/signed=true @@ -214,7 +214,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.15.0-alpha/linux-x86_64/NETfishing.x86_64" +export_path="builds/v0.16.0-alpha/linux-x86_64/NETfishing.x86_64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" diff --git a/project.godot b/project.godot index 807e880..718e077 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="NETFISHING" -config/version="0.15.0-alpha" +config/version="0.16.0-alpha" run/main_scene="res://main/main.tscn" config/features=PackedStringArray("4.7", "GL Compatibility") config/icon="res://art/exported/system_icons/netfishing_256.png" diff --git a/scripts/build_playtest.sh b/scripts/build_playtest.sh index b340b78..c9d5e5d 100755 --- a/scripts/build_playtest.sh +++ b/scripts/build_playtest.sh @@ -4,14 +4,14 @@ 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.15.0-alpha" +readonly BUILD_ROOT="${PROJECT_ROOT}/builds/v0.16.0-alpha" readonly WINDOWS_DIR="${BUILD_ROOT}/windows-x86_64" readonly LINUX_DIR="${BUILD_ROOT}/linux-x86_64" readonly README_SOURCE="${PROJECT_ROOT}/docs/README-PLAYTEST.txt" readonly SOURCE_COMMIT="$(git -C "${PROJECT_ROOT}" rev-parse HEAD)" readonly SOURCE_URL="https://forge.makearmy.io/woofmeow/netfishing" -readonly WINDOWS_ZIP="${BUILD_ROOT}/NETfishing-v0.15.0-alpha-windows-x86_64.zip" -readonly LINUX_ZIP="${BUILD_ROOT}/NETfishing-v0.15.0-alpha-linux-x86_64.zip" +readonly WINDOWS_ZIP="${BUILD_ROOT}/NETfishing-v0.16.0-alpha-windows-x86_64.zip" +readonly LINUX_ZIP="${BUILD_ROOT}/NETfishing-v0.16.0-alpha-linux-x86_64.zip" readonly GODOT_BIN="${GODOT_BIN:-godot}" if [[ ! -f "${PROJECT_ROOT}/project.godot" ]]; then diff --git a/ui/title_screen.tscn b/ui/title_screen.tscn index 042c47b..43e8b73 100644 --- a/ui/title_screen.tscn +++ b/ui/title_screen.tscn @@ -226,7 +226,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.15.0-alpha" +text = "v0.16.0-alpha" horizontal_alignment = 1 [node name="Spacer" type="Control" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent"] From 8dbeb06e73d93a0eef0d774a2cefbc75358b6827 Mon Sep 17 00:00:00 2001 From: Voyager Date: Sun, 23 Aug 2026 00:50:45 -0400 Subject: [PATCH 32/90] fix: recover players from shallow freshwater --- tests/fishing_surface_validation.gd | 14 +++++++++++++- tests/generated_world_runtime_validation.gd | 14 ++++++++++++++ world/generation/generated_world_region.gd | 4 ++++ world/player_water_trigger.gd | 19 ++++++++++++++----- world/regions/starter_island_region.tscn | 2 ++ world/water_body_authoring.gd | 19 ++++++++++++++++++- 6 files changed, 65 insertions(+), 7 deletions(-) diff --git a/tests/fishing_surface_validation.gd b/tests/fishing_surface_validation.gd index 842b3e8..a6724a8 100644 --- a/tests/fishing_surface_validation.gd +++ b/tests/fishing_surface_validation.gd @@ -151,6 +151,11 @@ func _validate_portable_water_body() -> void: water_body.set("surface_size", Vector2(12.0, 8.0)) water_body.set("fishing_depth", 6.0) water_body.set("recovery_depth", 7.0) + water_body.set( + "recovery_entry_height_reference", + PlayerWaterTrigger.EntryHeightReference.PLAYER_ORIGIN, + ) + water_body.set("recovery_entry_depth_threshold", 0.1) water_body.set("fish_pool", PondPool) root.add_child(water_body) await process_frame @@ -169,8 +174,15 @@ func _validate_portable_water_body() -> void: assert(is_equal_approx(fishing_region.get_surface_height(), 7.0)) assert(is_equal_approx(fishing_shape_node.position.y, -3.0)) assert(fishing_shape.size.is_equal_approx(Vector3(12.0, 6.0, 8.0))) - var recovery_region := water_body.get_node("RecoveryRegion") as Area3D + var recovery_region := ( + water_body.get_node("RecoveryRegion") as PlayerWaterTrigger + ) assert(is_equal_approx(recovery_region.position.y, -3.5)) + assert( + recovery_region.entry_height_reference + == PlayerWaterTrigger.EntryHeightReference.PLAYER_ORIGIN + ) + assert(is_equal_approx(recovery_region.entry_depth_threshold, 0.1)) water_body.queue_free() await process_frame diff --git a/tests/generated_world_runtime_validation.gd b/tests/generated_world_runtime_validation.gd index 82627a5..d97be79 100644 --- a/tests/generated_world_runtime_validation.gd +++ b/tests/generated_world_runtime_validation.gd @@ -377,6 +377,12 @@ func _validate_generated_region( assert(ocean != null and fresh_root != null) assert(ocean.water_type == WaterType.Type.SALT_WATER) assert(is_equal_approx(ocean.position.y, GeneratedWorldRegion.WATER_HEIGHT)) + var ocean_recovery := ocean.get_node("RecoveryRegion") as PlayerWaterTrigger + assert( + ocean_recovery.entry_height_reference + == PlayerWaterTrigger.EntryHeightReference.BODY_CENTER + ) + assert(is_equal_approx(ocean_recovery.entry_depth_threshold, 0.35)) var fresh_placement_count := 0 var river_placement_count := 0 var polygon_sizes_by_coordinate: Dictionary[Vector2i, int] = {} @@ -415,6 +421,14 @@ func _validate_generated_region( assert(fresh.surface_size.x <= 10.0 and fresh.surface_size.y <= 10.0) assert(not fresh.visual_surface_enabled) assert(not (fresh.get_node("VisualWater") as MeshInstance3D).visible) + var fresh_recovery := ( + fresh.get_node("RecoveryRegion") as PlayerWaterTrigger + ) + assert( + fresh_recovery.entry_height_reference + == PlayerWaterTrigger.EntryHeightReference.PLAYER_ORIGIN + ) + assert(is_equal_approx(fresh_recovery.entry_depth_threshold, 0.1)) var coordinate_tokens := child.name.trim_prefix("FreshWater_").split("_") assert(coordinate_tokens.size() == 2) var coordinate := Vector2i( diff --git a/world/generation/generated_world_region.gd b/world/generation/generated_world_region.gd index c226610..95cf6d3 100644 --- a/world/generation/generated_world_region.gd +++ b/world/generation/generated_world_region.gd @@ -393,6 +393,10 @@ func _configure_fresh_water(records: Array[Dictionary]) -> void: body.visual_surface_enabled = false body.water_material = _fresh_water_material() body.water_type = WaterType.Type.FRESH_WATER + body.recovery_entry_height_reference = ( + PlayerWaterTrigger.EntryHeightReference.PLAYER_ORIGIN + ) + body.recovery_entry_depth_threshold = 0.1 body.fish_pool = _fresh_water_pool(tags) body.location_tags = _fresh_water_location_tags(tags) body.selection_priority = 10 diff --git a/world/player_water_trigger.gd b/world/player_water_trigger.gd index fbd84ba..93096dd 100644 --- a/world/player_water_trigger.gd +++ b/world/player_water_trigger.gd @@ -9,6 +9,11 @@ enum SurfaceHeightMode { PARENT_GLOBAL_Y, } +enum EntryHeightReference { + BODY_CENTER, + PLAYER_ORIGIN, +} + @export_group("Surface") @export var surface_height_mode: SurfaceHeightMode = SurfaceHeightMode.EXPLICIT: set(value): @@ -18,7 +23,11 @@ enum SurfaceHeightMode { ## Legacy explicit height used when Surface Height Mode is Explicit. @export var surface_height: float = 0.2 @export_group("Recovery Trigger") -## Recovery begins when the player's body center reaches this depth. +## Point on the player used to measure entry depth below the water surface. +@export var entry_height_reference: EntryHeightReference = ( + EntryHeightReference.BODY_CENTER +) +## Recovery begins when the selected reference reaches this depth. @export_range(0.0, 2.0, 0.05) var entry_depth_threshold: float = 0.35 var _tracked_players: Array[Player] = [] @@ -42,10 +51,10 @@ func _physics_process(_delta: float) -> void: var player_key: StringName = StringName(str(player.get_instance_id())) if _triggered_players.has(player_key): continue - if ( - player.get_body_center_position().y - <= active_surface_height - entry_depth_threshold - ): + var entry_height := player.get_body_center_position().y + if entry_height_reference == EntryHeightReference.PLAYER_ORIGIN: + entry_height = player.global_position.y + if entry_height <= active_surface_height - entry_depth_threshold: _triggered_players[player_key] = true recovery_requested.emit(player, active_surface_height) diff --git a/world/regions/starter_island_region.tscn b/world/regions/starter_island_region.tscn index e8bb51e..b52b0ea 100644 --- a/world/regions/starter_island_region.tscn +++ b/world/regions/starter_island_region.tscn @@ -161,6 +161,8 @@ water_material = ExtResource("19_fresh_water") fish_pool = ExtResource("12_pond_pool") location_tags = Array[StringName]([&"starter_pond", &"pond"]) selection_priority = 1 +recovery_entry_height_reference = 1 +recovery_entry_depth_threshold = 0.1 [node name="VisualWater" type="MeshInstance3D" parent="WaterBodies/Pond" unique_id=1034265960] material_override = ExtResource("19_fresh_water") diff --git a/world/water_body_authoring.gd b/world/water_body_authoring.gd index 2430be0..a272d90 100644 --- a/world/water_body_authoring.gd +++ b/world/water_body_authoring.gd @@ -69,6 +69,17 @@ var fishing_depth: float = 4.0: set(value): manage_recovery_coverage = value _sync_owned_nodes() +@export var recovery_entry_height_reference: PlayerWaterTrigger.EntryHeightReference = ( + PlayerWaterTrigger.EntryHeightReference.BODY_CENTER +): + set(value): + recovery_entry_height_reference = value + _sync_owned_nodes() +@export_range(0.0, 2.0, 0.05) +var recovery_entry_depth_threshold: float = 0.35: + set(value): + recovery_entry_depth_threshold = clampf(value, 0.0, 2.0) + _sync_owned_nodes() @export_range(0.1, 20.0, 0.1, "or_greater", "suffix:m") var recovery_depth: float = 4.8: set(value): @@ -150,12 +161,18 @@ func _sync_owned_nodes() -> void: if manage_recovery_coverage: var recovery_region := ( - get_node_or_null(recovery_region_path) as Area3D + get_node_or_null(recovery_region_path) as PlayerWaterTrigger ) var recovery_shape_node := ( get_node_or_null(recovery_shape_path) as CollisionShape3D ) if recovery_region != null and recovery_shape_node != null: + recovery_region.entry_height_reference = ( + recovery_entry_height_reference + ) + recovery_region.entry_depth_threshold = ( + recovery_entry_depth_threshold + ) if uses_polygon and _sync_polygon_collision_shapes( recovery_region, recovery_shape_node, From 1cbcb31c96b711f8c3b0963c08670ff55a92ed5e Mon Sep 17 00:00:00 2001 From: Voyager Date: Sun, 23 Aug 2026 00:52:57 -0400 Subject: [PATCH 33/90] chore: prepare v0.16.1-alpha release --- docs/README-PLAYTEST.txt | 4 ++-- export_presets.cfg | 26 +++++++++++++------------- project.godot | 2 +- scripts/build_playtest.sh | 6 +++--- ui/title_screen.tscn | 2 +- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/README-PLAYTEST.txt b/docs/README-PLAYTEST.txt index 3000024..f42ce3c 100644 --- a/docs/README-PLAYTEST.txt +++ b/docs/README-PLAYTEST.txt @@ -1,6 +1,6 @@ NETfishing -v0.16.0-alpha -Alpha 0.16.0 +v0.16.1-alpha +Alpha 0.16.1 Thank you for trying this early private playtest. diff --git a/export_presets.cfg b/export_presets.cfg index e3f474c..b7e8c1a 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -9,7 +9,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.16.0-alpha/windows-x86_64/NETfishing.exe" +export_path="builds/v0.16.1-alpha/windows-x86_64/NETfishing.exe" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -35,11 +35,11 @@ application/modify_resources=true application/icon="res://art/exported/system_icons/netfishing.ico" application/console_wrapper_icon="" application/icon_interpolation=4 -application/file_version="0.16.0.0" -application/product_version="0.16.0.0" +application/file_version="0.16.1.0" +application/product_version="0.16.1.0" application/company_name="Woofmeow" application/product_name="NETfishing" -application/file_description="NETfishing v0.16.0-alpha" +application/file_description="NETfishing v0.16.1-alpha" application/copyright="Copyright © 2026 Woofmeow" application/trademarks="NETfishing and Woofmeow branding is reserved; see TRADEMARKS.md" application/export_angle=0 @@ -62,7 +62,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.16.0-alpha/linux-arm64/NETfishing.arm64" +export_path="builds/v0.16.1-alpha/linux-arm64/NETfishing.arm64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -92,7 +92,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.16.0-alpha/macos/NETfishing.zip" +export_path="builds/v0.16.1-alpha/macos/NETfishing.zip" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -108,8 +108,8 @@ custom_template/release="" application/bundle_identifier="io.woofmeow.netfishing" application/icon="res://art/exported/system_icons/netfishing_1024.png" application/icon_interpolation=0 -application/short_version="0.16.0" -application/version="0.16.0" +application/short_version="0.16.1" +application/version="0.16.1" application/architecture="universal" codesign/enable=false notarization/enable=false @@ -125,7 +125,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*,tests/*" -export_path="builds/v0.16.0-alpha/server-linux-x86_64/NETfishingServer.x86_64" +export_path="builds/v0.16.1-alpha/server-linux-x86_64/NETfishingServer.x86_64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -155,7 +155,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.16.0-alpha/android/NETfishing.apk" +export_path="builds/v0.16.1-alpha/android/NETfishing.apk" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -176,8 +176,8 @@ architectures/armeabi-v7a=false architectures/arm64-v8a=true architectures/x86=false architectures/x86_64=false -version/code=160000 -version/name="v0.16.0-alpha" +version/code=160100 +version/name="v0.16.1-alpha" package/unique_name="io.woofmeow.netfishing" package/name="NETfishing" package/signed=true @@ -214,7 +214,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.16.0-alpha/linux-x86_64/NETfishing.x86_64" +export_path="builds/v0.16.1-alpha/linux-x86_64/NETfishing.x86_64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" diff --git a/project.godot b/project.godot index 718e077..9794217 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="NETFISHING" -config/version="0.16.0-alpha" +config/version="0.16.1-alpha" run/main_scene="res://main/main.tscn" config/features=PackedStringArray("4.7", "GL Compatibility") config/icon="res://art/exported/system_icons/netfishing_256.png" diff --git a/scripts/build_playtest.sh b/scripts/build_playtest.sh index c9d5e5d..dae3d29 100755 --- a/scripts/build_playtest.sh +++ b/scripts/build_playtest.sh @@ -4,14 +4,14 @@ 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.16.0-alpha" +readonly BUILD_ROOT="${PROJECT_ROOT}/builds/v0.16.1-alpha" readonly WINDOWS_DIR="${BUILD_ROOT}/windows-x86_64" readonly LINUX_DIR="${BUILD_ROOT}/linux-x86_64" readonly README_SOURCE="${PROJECT_ROOT}/docs/README-PLAYTEST.txt" readonly SOURCE_COMMIT="$(git -C "${PROJECT_ROOT}" rev-parse HEAD)" readonly SOURCE_URL="https://forge.makearmy.io/woofmeow/netfishing" -readonly WINDOWS_ZIP="${BUILD_ROOT}/NETfishing-v0.16.0-alpha-windows-x86_64.zip" -readonly LINUX_ZIP="${BUILD_ROOT}/NETfishing-v0.16.0-alpha-linux-x86_64.zip" +readonly WINDOWS_ZIP="${BUILD_ROOT}/NETfishing-v0.16.1-alpha-windows-x86_64.zip" +readonly LINUX_ZIP="${BUILD_ROOT}/NETfishing-v0.16.1-alpha-linux-x86_64.zip" readonly GODOT_BIN="${GODOT_BIN:-godot}" if [[ ! -f "${PROJECT_ROOT}/project.godot" ]]; then diff --git a/ui/title_screen.tscn b/ui/title_screen.tscn index 43e8b73..33731c4 100644 --- a/ui/title_screen.tscn +++ b/ui/title_screen.tscn @@ -226,7 +226,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.16.0-alpha" +text = "v0.16.1-alpha" horizontal_alignment = 1 [node name="Spacer" type="Control" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent"] From 5c3eba1ad22e0fdbb9bc15f131608fb74099dcb9 Mon Sep 17 00:00:00 2001 From: woofmeow Date: Sun, 23 Aug 2026 05:22:29 +0000 Subject: [PATCH 34/90] Update README.md added links --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index ac3635b..50ac991 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,15 @@ save migrations may continue to change before a stable release. NETfishing is developed and published by **Woofmeow**, the independent team of co-owners publicly credited as Voyager and Endeavour. +## Links +Patreon: https://www.patreon.com/cw/woofmeowgames +Steam: https://store.steampowered.com/app/5068950/NETfishing/ +Itch.io: https://sol6-vi.itch.io/netfishing +Discord: https://discord.gg/5gP22447kc +Matrix: https://matrix.to/#/#netfishing:matrix.makearmy.io +Repo: https://forge.makearmy.io/woofmeow/netfishing +Releases: https://forge.makearmy.io/woofmeow/netfishing/releases + ## Installing release builds Download and extract the archive for your platform from the official release From 2aeaf1d44d6ea1afbccb28f1749b5f86836b1310 Mon Sep 17 00:00:00 2001 From: Voyager Date: Sun, 23 Aug 2026 01:23:00 -0400 Subject: [PATCH 35/90] fix: synchronize late-joining players --- network/network_chat_service.gd | 50 ++++++- network/network_profile_service.gd | 63 ++++---- network/network_session.gd | 95 +++++++++--- scripts/run_validations.sh | 74 +++++++++- tests/late_join_multiplayer_validation.gd | 137 ++++++++++++++++++ tests/late_join_multiplayer_validation.gd.uid | 1 + 6 files changed, 371 insertions(+), 49 deletions(-) create mode 100644 tests/late_join_multiplayer_validation.gd create mode 100644 tests/late_join_multiplayer_validation.gd.uid diff --git a/network/network_chat_service.gd b/network/network_chat_service.gd index b24d558..55ba768 100644 --- a/network/network_chat_service.gd +++ b/network/network_chat_service.gd @@ -5,6 +5,7 @@ const BURST_COUNT: int = 3 const WINDOW_COUNT: int = 5 const WINDOW_SECONDS: float = 10.0 const CALL_COOLDOWN_MILLISECONDS: int = 90 +const MAX_PENDING_MESSAGES_PER_PEER: int = 8 const DEDICATED_CHAT_WARNING: String = ( "Privacy notice: This dedicated server records and retains chat messages." ) @@ -40,6 +41,7 @@ var _last_call_msec: Dictionary[int, int] = {} var _call_variant_indices: Dictionary[int, int] = {} var _sequence: int = 0 var _peer_names: Dictionary[int, String] = {} +var _pending_peer_messages: Dictionary[int, Array] = {} var _relationships: PlayerRelationshipStore var _dedicated_history_enabled: bool = false var _chat_log_path: String = "" @@ -418,9 +420,11 @@ func _apply_message( else: var sender_id := int(data["sender_peer_id"]) var record := _session.get_peer_record(sender_id) + if record == null: + _queue_pending_peer_message(sender_id, data, emit_live_signals) + return valid_signature = ( - record != null - and record.identity_fingerprint == str(data["sender_fingerprint"]) + record.identity_fingerprint == str(data["sender_fingerprint"]) and _session.verify_peer_action( sender_id, "chat_send", @@ -466,7 +470,47 @@ func receive_chat_rejection(message: String) -> void: send_rejected.emit(message.left(80)) +func _queue_pending_peer_message( + peer_id: int, + message: Dictionary, + emit_live_signals: bool, +) -> void: + if peer_id <= 0: + return + var pending: Array = _pending_peer_messages.get(peer_id, []) + var message_id := str(message.get("message_id", "")) + for value: Variant in pending: + if ( + typeof(value) == TYPE_DICTIONARY + and str(value.get("message", {}).get("message_id", "")) == message_id + ): + return + pending.append({ + "message": message.duplicate(true), + "emit_live_signals": emit_live_signals, + }) + while pending.size() > MAX_PENDING_MESSAGES_PER_PEER: + pending.pop_front() + _pending_peer_messages[peer_id] = pending + + +func _flush_pending_peer_messages(peer_id: int) -> void: + var pending: Array = _pending_peer_messages.get(peer_id, []) + _pending_peer_messages.erase(peer_id) + for value: Variant in pending: + if typeof(value) != TYPE_DICTIONARY: + continue + var queued: Dictionary = value + if typeof(queued.get("message")) != TYPE_DICTIONARY: + continue + _apply_message( + queued["message"], + bool(queued.get("emit_live_signals", true)), + ) + + func _on_peer_authenticated(peer_id: int, display_name: String) -> void: + _flush_pending_peer_messages(peer_id) if not _session.is_host(): return _peer_names[peer_id] = display_name @@ -500,6 +544,7 @@ func _on_peer_removed(peer_id: int) -> void: _rate_times.erase(peer_id) _last_call_msec.erase(peer_id) _call_variant_indices.erase(peer_id) + _pending_peer_messages.erase(peer_id) if not _session.is_host(): return var display_name: String = _peer_names.get(peer_id, "Player") @@ -601,6 +646,7 @@ func _on_session_state_changed(state: NetworkSession.State) -> void: _last_call_msec.clear() _call_variant_indices.clear() _peer_names.clear() + _pending_peer_messages.clear() _sequence = 0 history_replaced.emit([]) diff --git a/network/network_profile_service.gd b/network/network_profile_service.gd index da26d86..e4732a9 100644 --- a/network/network_profile_service.gd +++ b/network/network_profile_service.gd @@ -97,6 +97,10 @@ func preview_appearance(appearance: Dictionary) -> bool: _preferences.display_name, snapshot, ) + var authorization := _make_appearance_preview_authorization(snapshot) + var local_record := _session.get_peer_record(local_peer_id) + if local_record != null: + local_record.profile_authorization = authorization.duplicate(true) if _session.is_host(): _broadcast_appearance_preview_to_supported_peers( local_peer_id, @@ -105,20 +109,27 @@ func preview_appearance(appearance: Dictionary) -> bool: elif _session.supports_server_capability( NetworkProtocol.APPEARANCE_PREVIEW_CAPABILITY ): - var request: Dictionary = { - "request_id": _new_id(), - "session_id": _session.get_session_id(), - "appearance": snapshot.duplicate(true), - "sender_fingerprint": _session.get_local_identity_fingerprint(), - } - request["sender_signature"] = _session.sign_local_action( - "appearance_preview", - NetworkProfileProtocol.appearance_preview_signature_fields(request), - ) - submit_appearance_preview.rpc_id(1, request) + submit_appearance_preview.rpc_id(1, authorization) return true +func _make_appearance_preview_authorization( + appearance: Dictionary, +) -> Dictionary: + var request: Dictionary = { + "domain": "appearance_preview", + "request_id": _new_id(), + "session_id": _session.get_session_id(), + "appearance": appearance.duplicate(true), + "sender_fingerprint": _session.get_local_identity_fingerprint(), + } + request["sender_signature"] = _session.sign_local_action( + "appearance_preview", + NetworkProfileProtocol.appearance_preview_signature_fields(request), + ) + return request + + func restore_persisted_appearance() -> void: preview_appearance(_appearance_store.get_snapshot()) @@ -274,6 +285,9 @@ func submit_appearance_preview(data: Dictionary) -> void: var appearance := CharacterCustomizationCatalog.sanitized_snapshot( data["appearance"] ) + var authorization := data.duplicate(true) + authorization["domain"] = "appearance_preview" + record.profile_authorization = authorization _session.apply_canonical_profile( sender_id, record.display_name, @@ -482,23 +496,16 @@ func broadcast_profile_snapshot( or not CharacterCustomizationCatalog.validate_snapshot(appearance) ): return - if not authorization.is_empty(): - var signed := authorization.duplicate(true) - signed["display_name"] = display_name - signed["appearance"] = appearance - var record := _session.get_peer_record(peer_id) - if ( - record == null - or record.identity_fingerprint - != str(signed.get("sender_fingerprint", "")) - or not _session.verify_peer_action( - peer_id, - "profile_update", - NetworkProfileProtocol.signature_fields(signed), - signed.get("sender_signature", PackedByteArray()), - ) - ): - return + if ( + not authorization.is_empty() + and not _session.verify_profile_authorization( + peer_id, + display_name, + appearance, + authorization, + ) + ): + return _session.apply_canonical_profile(peer_id, display_name, appearance) _apply_to_avatar(peer_id, appearance) profile_snapshot_changed.emit(peer_id, display_name, appearance.duplicate(true)) diff --git a/network/network_session.gd b/network/network_session.gd index 21d400c..4d38629 100644 --- a/network/network_session.gd +++ b/network/network_session.gd @@ -1559,8 +1559,9 @@ func _apply_spawn_entry(entry: Dictionary) -> void: own_snapshot["visual_yaw"] = float(entry["yaw"]) own_avatar.apply_network_teleport(own_snapshot) return + var peer_was_added: bool = false if not _registry.has_peer(peer_id): - _registry.add_peer( + if not _registry.add_peer( peer_id, entry["profile_id"], entry["display_name"], @@ -1568,8 +1569,14 @@ func _apply_spawn_entry(entry: Dictionary) -> void: str(entry.get("identity_fingerprint", "")), str(entry.get("identity_public_key", "")), _sanitized_capabilities(entry.get("capability_flags", [])), - ) + ): + return + peer_was_added = true var added_record := _registry.get_peer(peer_id) + if added_record != null: + added_record.profile_authorization = Dictionary( + entry.get("profile_authorization", {}) + ).duplicate(true) if added_record != null and added_record.identity_authenticated: _archive_authenticated_identity(added_record) var status := _known_players.observe( @@ -1596,6 +1603,8 @@ func _apply_spawn_entry(entry: Dictionary) -> void: var record := _registry.get_peer(peer_id) if avatar != null and record != null: avatar.apply_appearance_snapshot(record.appearance_snapshot) + if peer_was_added and record != null: + peer_authenticated.emit(peer_id, record.display_name) func _build_spawn_list() -> Array[Dictionary]: @@ -1695,25 +1704,62 @@ func _update_local_operator() -> void: _local_operator = bool(_operator_peer_ids.get(local_peer_id, false)) -func _verify_spawn_identity(entry: Dictionary) -> bool: - var fingerprint := str(entry.get("identity_fingerprint", "")) - var public_pem := NetworkIdentityCrypto.normalize_public_pem( - str(entry.get("identity_public_key", "")) - ) - if ( - NetworkIdentityCrypto.fingerprint_public_pem(public_pem) != fingerprint - or typeof(entry.get("profile_authorization")) != TYPE_DICTIONARY - ): +func verify_profile_authorization( + peer_id: int, + display_name: String, + appearance: Dictionary, + authorization: Dictionary, +) -> bool: + var record := _registry.get_peer(peer_id) + if record == null: + return false + return _verify_profile_authorization_fields( + peer_id, + record.profile_id, + display_name, + appearance, + record.identity_fingerprint, + record.identity_public_key, + authorization, + ) + + +func _verify_spawn_identity(entry: Dictionary) -> bool: + if typeof(entry.get("profile_authorization")) != TYPE_DICTIONARY: + return false + return _verify_profile_authorization_fields( + int(entry.get("peer_id", 0)), + str(entry.get("profile_id", "")), + str(entry.get("display_name", "")), + Dictionary(entry.get("appearance", {})), + str(entry.get("identity_fingerprint", "")), + str(entry.get("identity_public_key", "")), + Dictionary(entry.get("profile_authorization", {})), + ) + + +func _verify_profile_authorization_fields( + peer_id: int, + profile_id: String, + display_name: String, + appearance: Dictionary, + fingerprint: String, + identity_public_key: String, + authorization: Dictionary, +) -> bool: + var public_pem := NetworkIdentityCrypto.normalize_public_pem( + identity_public_key + ) + if NetworkIdentityCrypto.fingerprint_public_pem(public_pem) != fingerprint: return false - var authorization: Dictionary = entry["profile_authorization"] if authorization.is_empty(): - return int(entry.get("peer_id", 0)) == 1 + return peer_id == 1 if authorization.get("domain") == "handshake_client_profile": var hello := NetworkProtocol.make_client_hello( - str(entry.get("profile_id", "")), - str(entry.get("display_name", "")), + profile_id, + display_name, str(authorization.get("client_nonce", "")), - Dictionary(entry.get("appearance", {})), + appearance, fingerprint, authorization.get("signature", PackedByteArray()), ) @@ -1723,10 +1769,23 @@ func _verify_spawn_identity(entry: Dictionary) -> bool: NetworkProtocol.client_profile_fields(hello), hello["identity_signature"], ) + if authorization.get("domain") == "appearance_preview": + if str(authorization.get("sender_fingerprint", "")) != fingerprint: + return false + var preview := authorization.duplicate(true) + preview["appearance"] = appearance + return NetworkIdentityCrypto.verify_fields( + NetworkIdentityCrypto.load_public_key(public_pem), + "appearance_preview", + NetworkProfileProtocol.appearance_preview_signature_fields(preview), + preview.get("sender_signature", PackedByteArray()), + ) if authorization.has("sender_signature"): + if str(authorization.get("sender_fingerprint", "")) != fingerprint: + return false var signed := authorization.duplicate(true) - signed["display_name"] = entry.get("display_name", "") - signed["appearance"] = entry.get("appearance", {}) + signed["display_name"] = display_name + signed["appearance"] = appearance return NetworkIdentityCrypto.verify_fields( NetworkIdentityCrypto.load_public_key(public_pem), "profile_update", diff --git a/scripts/run_validations.sh b/scripts/run_validations.sh index 64fbfc3..1368afc 100755 --- a/scripts/run_validations.sh +++ b/scripts/run_validations.sh @@ -96,6 +96,7 @@ readonly -a NETWORK_TESTS=( ) readonly SESSION_SWITCH_NETWORK_TEST="tests/session_switch_multiplayer_validation.gd" +readonly LATE_JOIN_NETWORK_TEST="tests/late_join_multiplayer_validation.gd" cleanup() { rm -rf -- "${RUN_ROOT}" @@ -104,7 +105,7 @@ trap cleanup EXIT INT TERM usage() { printf \ - 'Usage: %s {quick|full|host|network|session-switch|all|--list}\n' \ + 'Usage: %s {quick|full|host|network|session-switch|late-join|all|--list}\n' \ "$0" } @@ -290,6 +291,71 @@ run_session_switch_network_test() { fi } + +run_late_join_network_test() { + local script="${LATE_JOIN_NETWORK_TEST}" + local name="${script#tests/}" + name="${name%.gd}" + local host_root first_root late_root + local host_pid first_pid late_pid host_status first_status late_status + host_root="$(prepare_root "${name}-host")" + first_root="$(prepare_root "${name}-first")" + late_root="$(prepare_root "${name}-late")" + printf '\n==> %s (host + first client + late client)\n' "${script}" + XDG_DATA_HOME="${host_root}/data" \ + XDG_CONFIG_HOME="${host_root}/config" \ + XDG_CACHE_HOME="${host_root}/cache" \ + timeout "${TEST_TIMEOUT_SECONDS}s" "${GODOT_BIN}" \ + --headless --path "${PROJECT_ROOT}" --script "${script}" -- host \ + >"${host_root}/output.log" 2>&1 & + host_pid=$! + if ! wait_for_network_host "${script}" "${host_pid}"; then + set +e + wait "${host_pid}" + host_status=$? + set -e + printf '%s\n' '-- host output --' + sed -n '1,240p' "${host_root}/output.log" + printf 'error: host did not become ready (exit %d)\n' \ + "${host_status}" >&2 + return 1 + fi + XDG_DATA_HOME="${first_root}/data" \ + XDG_CONFIG_HOME="${first_root}/config" \ + XDG_CACHE_HOME="${first_root}/cache" \ + timeout "${TEST_TIMEOUT_SECONDS}s" "${GODOT_BIN}" \ + --headless --path "${PROJECT_ROOT}" --script "${script}" -- first \ + >"${first_root}/output.log" 2>&1 & + first_pid=$! + sleep 4 + XDG_DATA_HOME="${late_root}/data" \ + XDG_CONFIG_HOME="${late_root}/config" \ + XDG_CACHE_HOME="${late_root}/cache" \ + timeout "${TEST_TIMEOUT_SECONDS}s" "${GODOT_BIN}" \ + --headless --path "${PROJECT_ROOT}" --script "${script}" -- late \ + >"${late_root}/output.log" 2>&1 & + late_pid=$! + set +e + wait "${late_pid}" + late_status=$? + wait "${first_pid}" + first_status=$? + wait "${host_pid}" + host_status=$? + set -e + printf '%s\n' '-- host output --' + sed -n '1,240p' "${host_root}/output.log" + printf '%s\n' '-- first client output --' + sed -n '1,240p' "${first_root}/output.log" + printf '%s\n' '-- late client output --' + sed -n '1,240p' "${late_root}/output.log" + if ((host_status != 0 || first_status != 0 || late_status != 0)); then + printf 'error: host exited %d; clients exited %d/%d\n' \ + "${host_status}" "${first_status}" "${late_status}" >&2 + return 1 + fi +} + run_quick() { local test_script for test_script in "${QUICK_TESTS[@]}"; do @@ -317,6 +383,7 @@ run_network() { for test_script in "${NETWORK_TESTS[@]}"; do run_network_test "${test_script}" done + run_late_join_network_test run_session_switch_network_test } @@ -331,6 +398,8 @@ list_tests() { printf ' %s\n' "${NETWORK_TESTS[@]}" printf '%s\n' 'Two-host session-switch network test:' printf ' %s\n' "${SESSION_SWITCH_NETWORK_TEST}" + printf '%s\n' 'Three-peer late-join network test:' + printf ' %s\n' "${LATE_JOIN_NETWORK_TEST}" } case "${1:-}" in @@ -349,6 +418,9 @@ case "${1:-}" in session-switch) run_session_switch_network_test ;; + late-join) + run_late_join_network_test + ;; all) run_full run_host diff --git a/tests/late_join_multiplayer_validation.gd b/tests/late_join_multiplayer_validation.gd new file mode 100644 index 0000000..f726dbc --- /dev/null +++ b/tests/late_join_multiplayer_validation.gd @@ -0,0 +1,137 @@ +extends SceneTree + +const MainScene: PackedScene = preload("res://main/main.tscn") +const TEST_PORT: int = 18194 +const LATE_MESSAGE: String = "late join visibility check" + + +func _initialize() -> void: + call_deferred("_run") + + +func _run() -> void: + var arguments: PackedStringArray = OS.get_cmdline_user_args() + if arguments.has("host"): + await _run_host() + elif arguments.has("first"): + await _run_first_client() + elif arguments.has("late"): + await _run_late_client() + else: + push_error("Late-join validation needs host, first, or late mode.") + quit(1) + + +func _run_host() -> void: + var main: Node = await _create_initialized_main() + var session := main.get_node("%NetworkSession") as NetworkSession + var save_manager := main.get("_save_manager") as PlayerSaveManager + assert(session.start_private_host(TEST_PORT)) + assert(save_manager.initialize_new_game()) + main.call("_enter_gameplay") + for _frame: int in 4: + await physics_frame + assert(session.set_host_open(true)) + assert(await _wait_for_registry_size(session, 3)) + var spawn := main.get_node("%PlayerSpawnService") as PlayerSpawnService + assert(spawn.get_peer_ids().size() == 3) + await create_timer(5.0).timeout + print("Late-join multiplayer host validation: PASS") + await _cleanup(main, session) + + +func _run_first_client() -> void: + var main: Node = await _create_initialized_main() + var session := await _join(main) + var profile := main.get_node("%NetworkProfileService") as NetworkProfileService + var preview: Dictionary = profile.get_persisted_appearance().duplicate(true) + preview["scale"] = 0.9 + assert(profile.preview_appearance(preview)) + await create_timer(2.0).timeout + var chat := main.get_node("%NetworkChatService") as NetworkChatService + var deadline: int = Time.get_ticks_msec() + 15000 + while Time.get_ticks_msec() < deadline: + await process_frame + if ( + session.get_authenticated_peer_ids().size() == 3 + and _history_contains(chat, LATE_MESSAGE) + ): + break + assert(session.get_authenticated_peer_ids().size() == 3) + assert(_history_contains(chat, LATE_MESSAGE)) + var spawn := main.get_node("%PlayerSpawnService") as PlayerSpawnService + assert(spawn.get_peer_ids().size() == 3) + print("Late-join first-client validation: PASS") + await _cleanup(main, session) + + +func _run_late_client() -> void: + var main: Node = await _create_initialized_main() + var session := await _join(main) + var deadline: int = Time.get_ticks_msec() + 8000 + while ( + Time.get_ticks_msec() < deadline + and session.get_authenticated_peer_ids().size() < 3 + ): + await process_frame + assert(session.get_authenticated_peer_ids().size() == 3) + var spawn := main.get_node("%PlayerSpawnService") as PlayerSpawnService + assert(spawn.get_peer_ids().size() == 3) + var chat := main.get_node("%NetworkChatService") as NetworkChatService + assert(chat.send_local_message(LATE_MESSAGE)) + await create_timer(1.0).timeout + print("Late-join late-client validation: PASS") + await _cleanup(main, session) + + +func _join(main: Node) -> NetworkSession: + main.call("_on_title_join_game_requested", "127.0.0.1:%d" % TEST_PORT) + var session := main.get_node("%NetworkSession") as NetworkSession + var deadline: int = Time.get_ticks_msec() + 20000 + while Time.get_ticks_msec() < deadline: + await process_frame + if session.state == NetworkSession.State.VERIFYING_SERVER_IDENTITY: + main.call("_confirm_server_trust") + if session.is_joined_client() and bool(main.get("_gameplay_started")): + return session + assert(false, "Client did not join in time.") + return session + + +func _wait_for_registry_size(session: NetworkSession, expected: int) -> bool: + var deadline: int = Time.get_ticks_msec() + 25000 + while Time.get_ticks_msec() < deadline: + await process_frame + if session.get_authenticated_peer_ids().size() == expected: + return true + return false + + +func _history_contains(service: NetworkChatService, body: String) -> bool: + return service.get_history().any( + func(message: Dictionary) -> bool: + return str(message.get("body", "")) == body + ) + + +func _create_initialized_main() -> Node: + root.size = Vector2i(1280, 720) + var main: Node = MainScene.instantiate() + root.add_child(main) + for _frame: int in 4: + await process_frame + if not bool(main.get("_application_initialized")): + main.call("_activate_selected_data_path", "", true) + for _frame: int in 8: + await process_frame + assert(bool(main.get("_application_initialized"))) + return main + + +func _cleanup(main: Node, session: NetworkSession) -> void: + session.disconnect_session("") + main.queue_free() + for _frame: int in 4: + await process_frame + await create_timer(0.1).timeout + quit() diff --git a/tests/late_join_multiplayer_validation.gd.uid b/tests/late_join_multiplayer_validation.gd.uid new file mode 100644 index 0000000..5d33548 --- /dev/null +++ b/tests/late_join_multiplayer_validation.gd.uid @@ -0,0 +1 @@ +uid://dnuwxkoeeykt3 From 6f083f3fdf8404012e96b785d0f0c2635ca0db8e Mon Sep 17 00:00:00 2001 From: Voyager Date: Sun, 23 Aug 2026 01:27:53 -0400 Subject: [PATCH 36/90] chore: prepare v0.16.2-alpha release --- docs/README-PLAYTEST.txt | 4 ++-- export_presets.cfg | 26 +++++++++++++------------- project.godot | 2 +- scripts/build_playtest.sh | 6 +++--- ui/title_screen.tscn | 2 +- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/README-PLAYTEST.txt b/docs/README-PLAYTEST.txt index f42ce3c..ca32217 100644 --- a/docs/README-PLAYTEST.txt +++ b/docs/README-PLAYTEST.txt @@ -1,6 +1,6 @@ NETfishing -v0.16.1-alpha -Alpha 0.16.1 +v0.16.2-alpha +Alpha 0.16.2 Thank you for trying this early private playtest. diff --git a/export_presets.cfg b/export_presets.cfg index b7e8c1a..d41ca53 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -9,7 +9,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.16.1-alpha/windows-x86_64/NETfishing.exe" +export_path="builds/v0.16.2-alpha/windows-x86_64/NETfishing.exe" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -35,11 +35,11 @@ application/modify_resources=true application/icon="res://art/exported/system_icons/netfishing.ico" application/console_wrapper_icon="" application/icon_interpolation=4 -application/file_version="0.16.1.0" -application/product_version="0.16.1.0" +application/file_version="0.16.2.0" +application/product_version="0.16.2.0" application/company_name="Woofmeow" application/product_name="NETfishing" -application/file_description="NETfishing v0.16.1-alpha" +application/file_description="NETfishing v0.16.2-alpha" application/copyright="Copyright © 2026 Woofmeow" application/trademarks="NETfishing and Woofmeow branding is reserved; see TRADEMARKS.md" application/export_angle=0 @@ -62,7 +62,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.16.1-alpha/linux-arm64/NETfishing.arm64" +export_path="builds/v0.16.2-alpha/linux-arm64/NETfishing.arm64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -92,7 +92,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.16.1-alpha/macos/NETfishing.zip" +export_path="builds/v0.16.2-alpha/macos/NETfishing.zip" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -108,8 +108,8 @@ custom_template/release="" application/bundle_identifier="io.woofmeow.netfishing" application/icon="res://art/exported/system_icons/netfishing_1024.png" application/icon_interpolation=0 -application/short_version="0.16.1" -application/version="0.16.1" +application/short_version="0.16.2" +application/version="0.16.2" application/architecture="universal" codesign/enable=false notarization/enable=false @@ -125,7 +125,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*,tests/*" -export_path="builds/v0.16.1-alpha/server-linux-x86_64/NETfishingServer.x86_64" +export_path="builds/v0.16.2-alpha/server-linux-x86_64/NETfishingServer.x86_64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -155,7 +155,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.16.1-alpha/android/NETfishing.apk" +export_path="builds/v0.16.2-alpha/android/NETfishing.apk" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -176,8 +176,8 @@ architectures/armeabi-v7a=false architectures/arm64-v8a=true architectures/x86=false architectures/x86_64=false -version/code=160100 -version/name="v0.16.1-alpha" +version/code=160200 +version/name="v0.16.2-alpha" package/unique_name="io.woofmeow.netfishing" package/name="NETfishing" package/signed=true @@ -214,7 +214,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.16.1-alpha/linux-x86_64/NETfishing.x86_64" +export_path="builds/v0.16.2-alpha/linux-x86_64/NETfishing.x86_64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" diff --git a/project.godot b/project.godot index 9794217..2530796 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="NETFISHING" -config/version="0.16.1-alpha" +config/version="0.16.2-alpha" run/main_scene="res://main/main.tscn" config/features=PackedStringArray("4.7", "GL Compatibility") config/icon="res://art/exported/system_icons/netfishing_256.png" diff --git a/scripts/build_playtest.sh b/scripts/build_playtest.sh index dae3d29..9fa21c1 100755 --- a/scripts/build_playtest.sh +++ b/scripts/build_playtest.sh @@ -4,14 +4,14 @@ 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.16.1-alpha" +readonly BUILD_ROOT="${PROJECT_ROOT}/builds/v0.16.2-alpha" readonly WINDOWS_DIR="${BUILD_ROOT}/windows-x86_64" readonly LINUX_DIR="${BUILD_ROOT}/linux-x86_64" readonly README_SOURCE="${PROJECT_ROOT}/docs/README-PLAYTEST.txt" readonly SOURCE_COMMIT="$(git -C "${PROJECT_ROOT}" rev-parse HEAD)" readonly SOURCE_URL="https://forge.makearmy.io/woofmeow/netfishing" -readonly WINDOWS_ZIP="${BUILD_ROOT}/NETfishing-v0.16.1-alpha-windows-x86_64.zip" -readonly LINUX_ZIP="${BUILD_ROOT}/NETfishing-v0.16.1-alpha-linux-x86_64.zip" +readonly WINDOWS_ZIP="${BUILD_ROOT}/NETfishing-v0.16.2-alpha-windows-x86_64.zip" +readonly LINUX_ZIP="${BUILD_ROOT}/NETfishing-v0.16.2-alpha-linux-x86_64.zip" readonly GODOT_BIN="${GODOT_BIN:-godot}" if [[ ! -f "${PROJECT_ROOT}/project.godot" ]]; then diff --git a/ui/title_screen.tscn b/ui/title_screen.tscn index 33731c4..e0838ed 100644 --- a/ui/title_screen.tscn +++ b/ui/title_screen.tscn @@ -226,7 +226,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.16.1-alpha" +text = "v0.16.2-alpha" horizontal_alignment = 1 [node name="Spacer" type="Control" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent"] From 1db1a5b754d3d777b050e871baa6fec11e25d57b Mon Sep 17 00:00:00 2001 From: woofmeow Date: Sun, 23 Aug 2026 17:52:48 +0000 Subject: [PATCH 37/90] Update README.md --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 50ac991..132b3f8 100644 --- a/README.md +++ b/README.md @@ -13,13 +13,20 @@ co-owners publicly credited as Voyager and Endeavour. ## Links Patreon: https://www.patreon.com/cw/woofmeowgames + Steam: https://store.steampowered.com/app/5068950/NETfishing/ + Itch.io: https://sol6-vi.itch.io/netfishing + Discord: https://discord.gg/5gP22447kc + Matrix: https://matrix.to/#/#netfishing:matrix.makearmy.io + Repo: https://forge.makearmy.io/woofmeow/netfishing + Releases: https://forge.makearmy.io/woofmeow/netfishing/releases + ## Installing release builds Download and extract the archive for your platform from the official release From 3b84bfe3a04682e05055d89a15131f8e1f82a7a3 Mon Sep 17 00:00:00 2001 From: Voyager Date: Sun, 23 Aug 2026 20:48:38 -0400 Subject: [PATCH 38/90] feat: expand progression and multiplayer systems Add named save slots, progression import/export, and a unified play flow. Add live friend requests, presence, invitations, and relationship controls without durable discovery-server social storage. Advance the network protocol with isolated channels, movement reconciliation, late-join recovery, fishing replication, and animation synchronization. Preserve per-species catch totals, refine generated-world startup and water recovery, and complete the related input and interface improvements. --- collection/collection_log.gd | 58 ++ docs/DEVELOPMENT.md | 18 +- docs/README-PLAYTEST.txt | 1 + drawing/surface_drawing_protocol.gd | 2 +- fishing/catch_controller.gd | 2 +- fishing/fishing_spot.gd | 23 +- fishing/remote_fishing_presentation.gd | 50 +- main/main.gd | 388 +++++++++- network/discovery_client.gd | 505 +++++++++++- network/network_fish_showcase_protocol.gd | 2 +- network/network_fish_showcase_service.gd | 35 + network/network_fishing_protocol.gd | 14 +- network/network_fishing_service.gd | 238 +++++- network/network_item_use_service.gd | 7 + network/network_player_list_service.gd | 450 +++++++++++ network/network_protocol.gd | 27 +- network/network_sale_service.gd | 28 + network/network_session.gd | 638 +++++++++++++-- network/network_surface_drawing_service.gd | 24 +- network/network_transport.gd | 19 + network/network_world_spawn_protocol.gd | 4 +- network/network_world_spawn_service.gd | 219 +++++- network/player_data_root.gd | 3 +- network/player_list_entry.gd | 2 + network/player_relationship_store.gd | 185 ++++- network/player_spawn_service.gd | 8 +- network/portable_data_migration.gd | 43 +- player/player.gd | 431 +++++++++-- save/player_save_inspection.gd | 4 + save/player_save_manager.gd | 210 ++++- save/player_save_slot_catalog.gd | 591 ++++++++++++++ save/player_save_slot_catalog.gd.uid | 1 + scripts/run_validations.sh | 2 + settings/keyboard_mouse_mapping_manager.gd | 11 + settings/player_settings.gd | 2 + settings/player_settings_manager.gd | 10 + tests/art_tools_validation.gd | 65 +- tests/camera_drag_validation.gd | 20 + tests/chat_privacy_multiplayer_validation.gd | 4 + ...ontroller_menu_accessibility_validation.gd | 177 +++-- tests/economy_regression_validation.gd | 11 +- tests/fish_hotbar_showcase_validation.gd | 20 +- tests/fish_quality_validation.gd | 58 +- tests/fish_showcase_multiplayer_validation.gd | 4 + tests/fishing_authority_validation.gd | 16 + tests/fishing_surface_validation.gd | 18 +- tests/friend_multiplayer_validation.gd | 161 ++++ tests/friend_multiplayer_validation.gd.uid | 1 + tests/friend_relationship_validation.gd | 76 ++ tests/friend_relationship_validation.gd.uid | 1 + tests/generated_world_runtime_validation.gd | 37 +- tests/job_multiplayer_validation.gd | 4 + tests/job_system_validation.gd | 48 ++ tests/keyboard_mouse_mapping_validation.gd | 15 + tests/late_join_multiplayer_validation.gd | 216 +++++- tests/light_performance_profile_validation.gd | 12 + tests/logbook_validation.gd | 5 +- tests/movement_multiplayer_validation.gd | 186 ++++- tests/on_screen_keyboard_validation.gd | 3 + tests/operator_multiplayer_validation.gd | 22 +- tests/profile_multiplayer_validation.gd | 4 + tests/progression_archive_validation.gd | 81 +- .../session_switch_multiplayer_validation.gd | 4 + .../surface_drawing_multiplayer_validation.gd | 4 + tests/surface_drawing_runtime_validation.gd | 14 +- tests/world_layout_validation.gd | 5 + tests/world_spawn_multiplayer_validation.gd | 4 + tests/world_spawn_protocol_validation.gd | 2 +- tests/world_time_multiplayer_validation.gd | 4 + ui/chat_ui.gd | 169 +++- ui/game_ui.gd | 191 ++++- ui/game_ui.tscn | 14 +- ui/hotbar.gd | 109 +-- ui/hotbar.tscn | 30 - ui/icons/player_options/clean.png | Bin 0 -> 39617 bytes ui/icons/player_options/clean.png.import | 40 + ui/icons/player_options/friends.png | Bin 0 -> 39562 bytes ui/icons/player_options/friends.png.import | 40 + ui/logbook_page.gd | 7 +- ui/network/join_game_page.gd | 378 ++++++++- ui/network/join_game_page.tscn | 445 +++++------ ui/on_screen_keyboard.gd | 34 +- ui/players_page.gd | 162 +++- ui/save_slots_page.gd | 731 ++++++++++++++++++ ui/save_slots_page.gd.uid | 1 + ui/save_slots_page.tscn | 350 +++++++++ ui/settings_panel.gd | 143 +--- ui/settings_panel.tscn | 53 +- ui/surface_drawing_toolbar.tscn | 4 +- ui/the_net_page.gd | 8 +- ui/title_screen.gd | 122 ++- ui/title_screen.tscn | 83 +- ui/ui_pixelation_presenter.gd | 1 + world/generation/generated_world_region.gd | 6 +- world/generation/terrain_chunk_generator.gd | 94 +++ world/player_water_trigger.gd | 9 + world/test_world.gd | 70 ++ 97 files changed, 7869 insertions(+), 982 deletions(-) create mode 100644 save/player_save_slot_catalog.gd create mode 100644 save/player_save_slot_catalog.gd.uid create mode 100644 tests/friend_multiplayer_validation.gd create mode 100644 tests/friend_multiplayer_validation.gd.uid create mode 100644 tests/friend_relationship_validation.gd create mode 100644 tests/friend_relationship_validation.gd.uid create mode 100644 ui/icons/player_options/clean.png create mode 100644 ui/icons/player_options/clean.png.import create mode 100644 ui/icons/player_options/friends.png create mode 100644 ui/icons/player_options/friends.png.import create mode 100644 ui/save_slots_page.gd create mode 100644 ui/save_slots_page.gd.uid create mode 100644 ui/save_slots_page.tscn diff --git a/collection/collection_log.gd b/collection/collection_log.gd index da36eb8..59d33d1 100644 --- a/collection/collection_log.gd +++ b/collection/collection_log.gd @@ -6,9 +6,11 @@ signal fish_quality_discovered(fish_id: StringName, quality: int) signal collection_changed const FishQualityType = preload("res://fish/fish_quality.gd") +const MAX_CATCH_COUNT: int = 1000000000 var _discovered: Dictionary[StringName, bool] = {} var _quality_masks: Dictionary[StringName, int] = {} +var _catch_counts: Dictionary[StringName, int] = {} func has_discovered(fish_id: StringName) -> bool: @@ -41,6 +43,26 @@ func mark_quality_discovered(fish_id: StringName, quality: int) -> void: collection_changed.emit() +func record_catch(fish_id: StringName, quality: int) -> void: + if fish_id.is_empty() or not FishQualityType.is_valid(quality): + return + var species_was_discovered: bool = has_discovered(fish_id) + if not species_was_discovered: + _discovered[fish_id] = true + var previous_mask: int = _quality_masks.get(fish_id, 0) + var next_mask: int = previous_mask | FishQualityType.bit_for(quality) + _quality_masks[fish_id] = next_mask + _catch_counts[fish_id] = mini( + int(_catch_counts.get(fish_id, 0)) + 1, + MAX_CATCH_COUNT, + ) + if not species_was_discovered: + fish_discovered.emit(fish_id) + if next_mask != previous_mask: + fish_quality_discovered.emit(fish_id, quality) + collection_changed.emit() + + func get_discovered_ids() -> Array[StringName]: var discovered_ids: Array[StringName] = [] for fish_id: StringName in _discovered: @@ -65,6 +87,14 @@ func get_discovered_quality_masks() -> Dictionary[StringName, int]: return _quality_masks.duplicate() +func get_catch_count(fish_id: StringName) -> int: + return _catch_counts.get(fish_id, 0) if has_discovered(fish_id) else 0 + + +func get_catch_counts() -> Dictionary[StringName, int]: + return _catch_counts.duplicate() + + func has_mastered(fish_id: StringName) -> bool: return get_quality_mask(fish_id) == FishQualityType.ALL_TIERS_MASK @@ -77,6 +107,22 @@ func replace_discovered_ids(fish_ids: Array[StringName]) -> bool: func replace_discovery_state( fish_ids: Array[StringName], quality_masks: Dictionary[StringName, int], +) -> bool: + var preserved_counts: Dictionary[StringName, int] = {} + for fish_id: StringName in fish_ids: + if _catch_counts.has(fish_id): + preserved_counts[fish_id] = _catch_counts[fish_id] + return replace_collection_state( + fish_ids, + quality_masks, + preserved_counts, + ) + + +func replace_collection_state( + fish_ids: Array[StringName], + quality_masks: Dictionary[StringName, int], + catch_counts: Dictionary[StringName, int], ) -> bool: var replacement: Dictionary[StringName, bool] = {} for fish_id: StringName in fish_ids: @@ -95,7 +141,19 @@ func replace_discovery_state( return false if mask != 0: replacement_masks[fish_id] = mask + var replacement_counts: Dictionary[StringName, int] = {} + for fish_id: StringName in catch_counts: + var count: int = catch_counts[fish_id] + if ( + fish_id.is_empty() + or not replacement.has(fish_id) + or count <= 0 + or count > MAX_CATCH_COUNT + ): + return false + replacement_counts[fish_id] = count _discovered = replacement _quality_masks = replacement_masks + _catch_counts = replacement_counts collection_changed.emit() return true diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index 6e19e1c..9fbd5b9 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -46,6 +46,16 @@ traffic or become a gameplay authority. Its base URL comes from `network/discovery/base_url`, with `NETFISHING_DISCOVERY_URL` available as a development/deployment override. +Friendships are local identity relationships shared across save slots. A live, +authenticated gameplay session is required to exchange the directional +capabilities that establish a friendship. Blocking an identity removes that +friendship; unblocking does not recreate it. Discovery may publish opt-in, +short-lived friend presence and deliver invitations only while both games are +online. It stores hashed capability identifiers rather than identity +fingerprints or a complete friend graph, keeps no durable social records, and +provides no offline delivery. Direct joins still use the existing verified +public-room and ENet connection path. + The host is authoritative. Clients submit requests or evidence; the host derives trusted context from registered peers, authoritative regions, and server-owned state before mutating inventory, wallet, progression, or shared @@ -68,8 +78,12 @@ release version is not a reason to change the protocol number. `PlayerDataRoot` selects and validates a portable data root. Stores receive paths from that owner rather than inventing unrelated locations. Progression is -written by `PlayerSaveManager`; device settings and social/identity stores have -separate formats and lifecycles. +written by `PlayerSaveManager` and indexed as named slots by +`PlayerSaveSlotCatalog`. Existing single-save installations are adopted as the +first slot in place. Device settings, appearance, and social/identity stores +remain shared across slots and have separate formats and lifecycles. +Progression archive import and export belong to the title-screen Play page: +imports create a new slot, while exports copy only the selected progression. Save migrations are sequential and explicit. Existing catches and ownership are keyed by stable IDs so authored metadata can evolve without rewriting diff --git a/docs/README-PLAYTEST.txt b/docs/README-PLAYTEST.txt index ca32217..6b8fb4d 100644 --- a/docs/README-PLAYTEST.txt +++ b/docs/README-PLAYTEST.txt @@ -33,6 +33,7 @@ Rotate camera Hold right mouse, or use right stick Cycle active hotbar slot Mouse wheel or D-pad left/right Select hotbar slot 1 through 9 Zoom camera Shift + mouse wheel + (swap wheel controls in Settings > Controls) Primary tool / fishing Left mouse or right trigger Inventory and player pages Tab Game Menu / back Escape diff --git a/drawing/surface_drawing_protocol.gd b/drawing/surface_drawing_protocol.gd index 8fdb054..ff132f8 100644 --- a/drawing/surface_drawing_protocol.gd +++ b/drawing/surface_drawing_protocol.gd @@ -2,7 +2,7 @@ class_name SurfaceDrawingProtocol extends RefCounted const CAPABILITY: StringName = &"surface_drawing_v2" -const RELIABLE_CHANNEL: int = NetworkProtocol.ITEM_RELIABLE_CHANNEL +const RELIABLE_CHANNEL: int = NetworkProtocol.DRAWING_RELIABLE_CHANNEL const GRID_SIZES: Array[int] = [16, 32, 64, 128] const DEFAULT_GRID_SIZE: int = 16 const MAX_GRID_SIZE: int = 128 diff --git a/fishing/catch_controller.gd b/fishing/catch_controller.gd index 7e75370..12cc431 100644 --- a/fishing/catch_controller.gd +++ b/fishing/catch_controller.gd @@ -46,7 +46,7 @@ class Barrier: # Fight movement uses one shared baseline. Species and quality difficulty comes # from barrier placement and health, while reel upgrades affect only the # player's progress speed. -const CHASE_START_DELAY: float = 1.0 +const CHASE_START_DELAY: float = 1.5 const CHASE_START_OFFSET: float = 0.04 const CHASE_SPEED: float = 0.07 diff --git a/fishing/fishing_spot.gd b/fishing/fishing_spot.gd index a1c8ddf..0fdc5f7 100644 --- a/fishing/fishing_spot.gd +++ b/fishing/fishing_spot.gd @@ -68,6 +68,7 @@ signal showcase_changed( ) signal bite_activated signal bite_prompt_changed(is_visible: bool) +signal fishing_input_priority_changed(active: bool) signal ready_for_equipment_refresh enum FishingState { @@ -182,6 +183,7 @@ var _network_active_barrier_index: int = -1 var _bite_rng: RandomNumberGenerator = RandomNumberGenerator.new() var _pending_cleanup_message: String = "" var _bite_confirmation_pending: bool = false +var _fishing_input_priority_active: bool = false var _bite_confirmation_requested: bool = false @@ -458,6 +460,7 @@ func _secure_showcase_catch_for_recovery() -> void: func _exit_tree() -> void: _stop_fight_audio() _stop_reeling_audio() + _set_fishing_input_priority(false) _showcase_restore_generation += 1 if ( state == FishingState.SHOWING_CATCH @@ -777,6 +780,8 @@ func confirm_pending_bite() -> void: func _set_bite_confirmation_pending(is_pending: bool) -> void: + if is_pending: + _set_fishing_input_priority(true) if _bite_confirmation_pending == is_pending: if not is_pending: _bite_confirmation_requested = false @@ -786,6 +791,17 @@ func _set_bite_confirmation_pending(is_pending: bool) -> void: bite_prompt_changed.emit(is_pending) +func _set_fishing_input_priority(active: bool) -> void: + if _fishing_input_priority_active == active: + return + _fishing_input_priority_active = active + fishing_input_priority_changed.emit(active) + + +func is_fishing_input_priority_active() -> bool: + return _fishing_input_priority_active + + func is_returning() -> bool: return state == FishingState.RETURNING @@ -1126,6 +1142,7 @@ func _activate_bite(confirmation_override: bool = false) -> void: ): _cancel_attempt() return + _set_fishing_input_priority(true) if ( not confirmation_override and _active_lure_has_effect(&"deferred_fight") @@ -1346,7 +1363,7 @@ func _store_catch_progression(fish_catch: FishCatchType) -> void: ) ) _local_inventory.add_catch(fish_catch) - _local_collection_log.mark_quality_discovered( + _local_collection_log.record_catch( fish_catch.fish_id, fish_catch.quality, ) @@ -1414,6 +1431,7 @@ func _finalize_attempt_cleanup( cooldown_message: String, restore_movement: bool = true, ) -> void: + _set_bite_confirmation_pending(false) _showcase_restore_generation += 1 if _active_player != null: _active_player.set_fighting_visual(false) @@ -1458,6 +1476,7 @@ func _finalize_attempt_cleanup( _state_time_remaining = cooldown_duration _cooldown_status = cooldown_message status_changed.emit(_cooldown_status) + _set_fishing_input_priority(false) func _return_to_ready() -> void: @@ -1466,6 +1485,7 @@ func _return_to_ready() -> void: _cooldown_status = "" status_changed.emit("") ready_for_equipment_refresh.emit() + _set_fishing_input_priority(false) func _cancel_attempt() -> void: @@ -1775,6 +1795,7 @@ func _on_network_bite_started(_attempt_id: String) -> void: if state != FishingState.WAITING_FOR_BITE: return _stop_reeling_audio() + _set_fishing_input_priority(true) _set_bite_confirmation_pending(false) state = FishingState.FIGHTING if _active_player != null: diff --git a/fishing/remote_fishing_presentation.gd b/fishing/remote_fishing_presentation.gd index 06224de..380afdf 100644 --- a/fishing/remote_fishing_presentation.gd +++ b/fishing/remote_fishing_presentation.gd @@ -18,6 +18,8 @@ var _showcase_tween: Tween var _return_showcase_catch: FishCatch var _bobber_idle_elapsed: float = 0.0 var _bobber_base_scale: Vector3 = Vector3.ONE +var _attempt_id: String = "" +var _observer_fighting_active: bool = false func setup(owning_player: Player) -> void: @@ -43,7 +45,11 @@ func setup(owning_player: Player) -> void: cleanup() -func show_cast(origin: Vector3, target: Vector3) -> void: +func show_cast( + origin: Vector3, + target: Vector3, + attempt_id: String = "", +) -> void: if ( _owner == null or not origin.is_finite() @@ -52,6 +58,8 @@ func show_cast(origin: Vector3, target: Vector3) -> void: return _kill_cast_tween() _active = true + _attempt_id = attempt_id + _observer_fighting_active = false _bobber_base_scale = Vector3.ONE * _owner.get_character_visual_scale() _target = origin _pending_target = target @@ -86,10 +94,48 @@ func update_bobber(world_position: Vector3) -> void: _redraw_line() +func synchronize_active( + attempt_id: String, + world_position: Vector3, + fighting: bool, +) -> void: + if ( + _owner == null + or attempt_id.is_empty() + or not world_position.is_finite() + ): + return + if _active and not _attempt_id.is_empty() and _attempt_id != attempt_id: + cleanup() + if _attempt_id.is_empty(): + _attempt_id = attempt_id + if not _active: + _active = true + _bobber_base_scale = Vector3.ONE * _owner.get_character_visual_scale() + _target = world_position + _pending_target = world_position + _bobber_idle_elapsed = 0.0 + _bobber.global_position = world_position + _bobber.scale = _bobber_base_scale + _bobber.visible = true + _line.visible = true + _owner.set_active_item_is_rod(true) + _owner.set_fishing_visual(true) + _redraw_line() + else: + update_bobber(world_position) + if fighting != _observer_fighting_active: + _observer_fighting_active = fighting + _owner.set_fighting_visual(fighting) + if not fighting: + _owner.set_fishing_visual(true) + + func show_bite() -> void: if not _active: return if _owner != null and is_instance_valid(_owner): + _observer_fighting_active = true _owner.set_fighting_visual(true) var tween: Tween = create_tween() tween.tween_property(_bobber, "scale", _bobber_base_scale * 0.7, 0.08) @@ -131,6 +177,8 @@ func cleanup() -> void: _kill_return_tween() _kill_showcase_tween() _active = false + _attempt_id = "" + _observer_fighting_active = false _pending_target = Vector3.ZERO _return_showcase_catch = null _bobber_idle_elapsed = 0.0 diff --git a/main/main.gd b/main/main.gd index 5e3a097..1724bd9 100644 --- a/main/main.gd +++ b/main/main.gd @@ -13,6 +13,9 @@ const WaterRecoveryControllerType = preload( const PlayerSaveManagerType = preload( "res://save/player_save_manager.gd" ) +const PlayerSaveSlotCatalogType = preload( + "res://save/player_save_slot_catalog.gd" +) const PlayerSettingsManagerType = preload( "res://settings/player_settings_manager.gd" ) @@ -131,6 +134,8 @@ const TIME_CROSSING_EPSILON_HOURS: float = 0.000001 const PLAYER_MENU_PATTERN_SCALE: float = 0.85 const PLAYER_MENU_PATTERN_SCROLL_VELOCITY := Vector2(-7.0, -5.0) const SHOP_PATTERN_SCALE: float = 1.75 +const DEDICATED_IDLE_PHYSICS_TICKS_PER_SECOND: int = 10 +const DEDICATED_ACTIVE_PHYSICS_TICKS_PER_SECOND: int = 30 @export var fish_catalog: FishPoolType @export var pelican_buyer_profile: FishBuyerProfileType @@ -234,6 +239,7 @@ const SHOP_PATTERN_SCALE: float = 1.75 @onready var _shop_backdrop: ColorRect = %ShopBackdrop var _gameplay_started: bool = false +var _save_slots := PlayerSaveSlotCatalogType.new() var _shop_interaction: FishingShopInteractionType var _storage_interaction: PlayerStorageInteractionType var _title_music_tween: Tween @@ -246,6 +252,10 @@ var _join_requested_from_pause: bool = false var _player_menu_backdrop_tween: Tween var _shop_backdrop_tween: Tween var _pending_join_endpoint: String = "" +var _social_prompt_queue: Array[Dictionary] = [] +var _active_social_prompt: Dictionary = {} +var _pending_social_invite_join: bool = false +var _pending_social_invite_gameplay: bool = false var _server_trust_dialog: ConfirmationDialog var _pending_trust_changed: bool = false var _identity_notice_dialog: AcceptDialog @@ -260,6 +270,7 @@ var _performance_profile: RuntimePerformanceProfileType var _pending_existing_root_path := "" var _local_recovery_attempt_id: String = "" var _dedicated_runtime: bool = false +var _dedicated_metrics_accumulator: float = 0.0 @onready var _shoreline_ambience: ShorelineAmbience = %ShorelineAmbience var _rain_ambience: RainAmbienceType @@ -269,6 +280,9 @@ func _ready() -> void: _performance_profile = RuntimePerformanceProfileType.from_environment() _dedicated_runtime = _is_dedicated_server_runtime() if _dedicated_runtime: + Engine.max_fps = 30 + Engine.physics_ticks_per_second = 30 + _disable_dedicated_presentation_tree() call_deferred("_start_dedicated_server") return _world_pixelation.set_light_performance_profile( @@ -382,6 +396,74 @@ func _is_dedicated_server_runtime() -> bool: return "--dedicated-server" in OS.get_cmdline_user_args() +func _disable_dedicated_presentation_tree() -> void: + for path: NodePath in [ + NodePath("TitleBackgroundLayer"), + NodePath("PlayerMenuBackdrop"), + NodePath("ShopBackdrop"), + NodePath("WorldPixelationPostprocess"), + NodePath("UIPresentation"), + NodePath("PixelationResetOverlay"), + NodePath("WorldTimeVisualController"), + NodePath("GatheringController"), + NodePath("FishingSpot"), + NodePath("WaterRecovery"), + NodePath("ControllerMappingManager"), + NodePath("KeyboardMouseMappingManager"), + ]: + var presentation_node: Node = get_node_or_null(path) + if presentation_node == null: + continue + presentation_node.process_mode = Node.PROCESS_MODE_DISABLED + if presentation_node is CanvasItem: + (presentation_node as CanvasItem).visible = false + elif presentation_node is CanvasLayer: + (presentation_node as CanvasLayer).visible = false + for audio_path: NodePath in [ + NodePath("TitleMusic"), + NodePath("NewGameMusic"), + NodePath("DuskMusic"), + NodePath("ShorelineAmbience"), + ]: + var audio_node: Node = get_node_or_null(audio_path) + if audio_node == null: + continue + if audio_node.has_method("stop"): + audio_node.call("stop") + audio_node.process_mode = Node.PROCESS_MODE_DISABLED + + +func _print_dedicated_metrics() -> void: + var metrics: Dictionary = { + "players": _network_session.get_player_count(), + "fps": Engine.get_frames_per_second(), + "frame_process_ms": Performance.get_monitor( + Performance.TIME_PROCESS + ) * 1000.0, + "frame_physics_ms": Performance.get_monitor( + Performance.TIME_PHYSICS_PROCESS + ) * 1000.0, + "memory_mib": Performance.get_monitor( + Performance.MEMORY_STATIC + ) / (1024.0 * 1024.0), + "nodes": int(Performance.get_monitor(Performance.OBJECT_NODE_COUNT)), + "physics_active_objects": int(Performance.get_monitor( + Performance.PHYSICS_3D_ACTIVE_OBJECTS + )), + "physics_collision_pairs": int(Performance.get_monitor( + Performance.PHYSICS_3D_COLLISION_PAIRS + )), + "movement": _network_session.get_movement_metrics(), + } + if _network_fishing.has_method("get_network_metrics"): + metrics["fishing"] = _network_fishing.call("get_network_metrics") + if _network_world_spawns.has_method("get_network_metrics"): + metrics["gatherables"] = _network_world_spawns.call( + "get_network_metrics" + ) + print("NETfishing server metrics: %s" % JSON.stringify(metrics)) + + func _start_dedicated_server() -> void: var config: DedicatedServerConfigType = DedicatedServerConfigType.from_runtime() if not config.is_valid(): @@ -429,6 +511,7 @@ func _start_dedicated_server() -> void: ): _fail_dedicated_server("The configured world seed could not be generated.") return + _test_world.set_dedicated_simulation(true) if not _network_session.set_host_world( WorldLayoutType.GENERATED, config.world_seed, @@ -441,10 +524,17 @@ func _start_dedicated_server() -> void: return _initialize_application(true) _player.set_local_control(false) + _player.set_network_simulation_only(true) _player.visible = false _player.collision_layer = 0 _player.collision_mask = 0 _player.set_physics_process(false) + if not _network_session.peer_count_changed.is_connected( + _on_dedicated_peer_count_changed + ): + _network_session.peer_count_changed.connect( + _on_dedicated_peer_count_changed + ) if not _network_session.start_dedicated_host( config.port, config.max_players, @@ -456,6 +546,10 @@ func _start_dedicated_server() -> void: if not _network_session.set_host_open(true): _fail_dedicated_server("Could not open the dedicated server.") return + _on_dedicated_peer_count_changed( + _network_session.get_player_count(), + config.max_players, + ) _player_jobs.begin_progression_session() if config.public_listing and not _discovery.set_discoverable(true): _network_session.disconnect_session("Discovery setup failed.") @@ -478,15 +572,34 @@ func _start_dedicated_server() -> void: ) +func _on_dedicated_peer_count_changed( + player_count: int, + _max_players: int, +) -> void: + if not _dedicated_runtime: + return + Engine.physics_ticks_per_second = ( + DEDICATED_ACTIVE_PHYSICS_TICKS_PER_SECOND + if player_count > 0 + else DEDICATED_IDLE_PHYSICS_TICKS_PER_SECOND + ) + + func _fail_dedicated_server(message: String) -> void: push_error("Dedicated server startup failed: %s" % message) get_tree().quit(1) func _configure_portable_stores() -> void: - _save_manager.configure_storage( - _data_root.path_for(&"player_save"), _data_root - ) + if _dedicated_runtime: + _save_manager.configure_storage( + _data_root.path_for(&"player_save"), _data_root + ) + elif not _save_slots.configure(_data_root, _save_manager): + push_error( + "Save-slot catalog setup failed: %s" + % _save_slots.get_error_message() + ) _network_profile.configure_storage( _data_root.path_for(&"network_profile"), _data_root ) @@ -523,7 +636,8 @@ func _initialize_application(dedicated: bool) -> void: _player_spawn_service.setup( _players_root, _player, - _test_world.get_player_spawn_transform() + _test_world.get_player_spawn_transform(), + dedicated, ) _network_session.setup( _network_profile, @@ -536,7 +650,7 @@ func _initialize_application(dedicated: bool) -> void: _host_bans, dedicated, ) - _discovery.setup(_network_session) + _discovery.setup(_network_session, _relationships) if not dedicated: _world_time_visuals.setup( _world_time, @@ -699,6 +813,7 @@ func _initialize_application(dedicated: bool) -> void: _save_manager, _network_item_use, _world_time, + not dedicated, ) _gathering_controller.setup( _player, @@ -747,7 +862,8 @@ func _initialize_application(dedicated: bool) -> void: _save_manager, item_catalog, fish_catalog, - _network_item_use + _network_item_use, + not dedicated, ) var sale_buyers: Array[FishBuyerProfileType] = [ pelican_buyer_profile, @@ -850,7 +966,6 @@ func _initialize_application(dedicated: bool) -> void: ) _game_ui.setup_data_and_identity( _data_root, - _save_manager, _identity_backups, _player_identity, _host_identity, @@ -860,6 +975,18 @@ func _initialize_application(dedicated: bool) -> void: _game_ui.setup_controller_mapping(_controller_mapping_manager) _ui_pixelation.setup_controller_mapping(_controller_mapping_manager) _game_ui.setup_keyboard_mouse_mapping(_keyboard_mouse_mapping_manager) + _network_player_list.friend_request_received.connect( + _on_friend_request_received + ) + _discovery.friend_invite_received.connect(_on_friend_invite_received) + _discovery.public_join_prepared.connect( + _on_social_public_join_prepared + ) + _discovery.public_join_status_changed.connect( + _on_social_public_join_status_changed + ) + _game_ui.social_prompt_accepted.connect(_on_social_prompt_accepted) + _game_ui.social_prompt_declined.connect(_on_social_prompt_declined) _data_root.conflict_detected.connect(_on_portable_conflict) if ( PortableFileGuard.has_syncthing_conflict( @@ -909,16 +1036,19 @@ func _initialize_application(dedicated: bool) -> void: _apply_runtime_settings(_settings_manager.current_settings) _set_gameplay_active(false) var title_screen: TitleScreenType = _game_ui.get_title_screen() - title_screen.new_game_requested.connect(_on_new_game_requested) - title_screen.continue_game_requested.connect(_on_continue_game_requested) + title_screen.slot_play_requested.connect(_on_slot_play_requested) + title_screen.new_slot_requested.connect(_on_new_slot_requested) title_screen.quit_requested.connect(_on_quit_requested) title_screen.setup( _save_manager, + _save_slots, _settings_manager, _network_session, _saved_servers, _server_trust, _discovery, + _data_root, + _interface_fonts, ) var pause_menu: PauseMenuType = _game_ui.get_pause_menu() pause_menu.setup( @@ -1454,8 +1584,15 @@ func _unhandled_input(event: InputEvent) -> void: get_viewport().set_input_as_handled() -func _process(_delta: float) -> void: +func _process(delta: float) -> void: if _dedicated_runtime: + _dedicated_metrics_accumulator += delta + if _dedicated_metrics_accumulator >= 60.0: + _dedicated_metrics_accumulator = fmod( + _dedicated_metrics_accumulator, + 60.0, + ) + _print_dedicated_metrics() return var show_shop_prompt := _can_show_shop_prompt() var shop_prompt_anchor := ( @@ -1500,7 +1637,8 @@ func _apply_runtime_settings(settings: PlayerSettingsType) -> void: _player.apply_camera_settings( settings.mouse_camera_sensitivity, settings.controller_camera_sensitivity, - settings.invert_camera_y + settings.invert_camera_y, + settings.swap_hotbar_camera_scroll, ) _fishing_spot.configure_accessibility_auto_click( settings.auto_click_enabled, @@ -1760,6 +1898,97 @@ func _on_continue_game_requested() -> void: _enter_gameplay() +func _on_slot_play_requested(slot_id: String) -> void: + if _gameplay_started or _quit_in_progress: + return + if not _save_slots.activate_slot(slot_id): + _game_ui.get_title_screen().report_network_error( + "The selected save slot could not be opened." + ) + return + if not _save_manager.load_player_data(): + _game_ui.get_title_screen().report_network_error( + "Failed to load that save slot. The original was preserved." + ) + return + var world_layout: StringName = _save_manager.get_world_layout() + var world_seed: int = _save_manager.get_world_seed() + if ( + not _apply_world(world_layout, world_seed, true) + or not _prepare_host_world(world_layout, world_seed) + ): + _game_ui.get_title_screen().report_network_error( + "The saved world could not be loaded. The save was preserved." + ) + return + if not _prepare_private_host(): + return + _save_slots.mark_played(slot_id) + _enter_gameplay() + + +func _on_new_slot_requested( + display_name: String, + world_layout: StringName, + world_seed: int, + duplicate_source_slot_id: String, +) -> void: + if _gameplay_started or _quit_in_progress: + return + var created: Dictionary = ( + _save_slots.duplicate_slot( + duplicate_source_slot_id, + display_name, + world_layout, + world_seed, + ) + if not duplicate_source_slot_id.is_empty() + else _save_slots.create_empty_slot(display_name) + ) + if not bool(created.get("ok", false)): + _game_ui.get_title_screen().report_network_error( + str(created.get("message", "The save slot could not be created.")) + ) + return + var slot_id: String = str(created.get("slot_id", "")) + if not _save_slots.activate_slot(slot_id): + _game_ui.get_title_screen().report_network_error( + "The new save slot could not be selected." + ) + return + if not duplicate_source_slot_id.is_empty(): + _on_slot_play_requested(slot_id) + return + _start_new_game_music() + if not _apply_world(world_layout, world_seed, true): + _show_title_music(true) + _game_ui.get_title_screen().report_network_error( + "Could not prepare that world. Try another seed or the starter island." + ) + return + if not _prepare_host_world(world_layout, world_seed): + _show_title_music(true) + _game_ui.get_title_screen().report_network_error( + "Could not prepare that world for hosting." + ) + return + if not _prepare_private_host(): + _show_title_music(true) + return + if ( + not _save_manager.delete_progression_save() + or not _save_manager.initialize_new_game(world_seed, world_layout) + ): + _network_session.disconnect_session("New Game setup failed.") + _show_title_music(true) + _game_ui.get_title_screen().report_network_error( + "Could not initialize local progression." + ) + return + _save_slots.mark_played(slot_id) + _enter_gameplay() + + func _prepare_private_host() -> bool: _join_requested_from_title = false _join_requested_from_pause = false @@ -1816,6 +2045,12 @@ func _on_return_to_title_requested() -> void: func _on_title_join_game_requested(endpoint: String) -> void: if _quit_in_progress or _gameplay_started: return + var active_slot: Dictionary = _save_slots.ensure_active_slot() + if not bool(active_slot.get("ok", false)): + _game_ui.get_title_screen().report_network_error( + str(active_slot.get("message", "Local progression is unavailable.")) + ) + return if _network_session.state != NetworkSessionType.State.INACTIVE: _network_session.disconnect_session("Preparing direct connection.") _join_requested_from_title = true @@ -1849,6 +2084,135 @@ func _on_pause_join_game_requested(endpoint: String) -> void: ) +func _on_friend_request_received( + request_id: String, + fingerprint: String, + display_name: String, +) -> void: + _queue_social_prompt({ + "kind": "friend_request", + "request_id": request_id, + "fingerprint": fingerprint, + "display_name": display_name, + }) + + +func _on_friend_invite_received( + fingerprint: String, + display_name: String, + room: Dictionary, +) -> void: + if ( + not _relationships.is_friend(fingerprint) + or _relationships.is_blocked(fingerprint) + ): + return + _queue_social_prompt({ + "kind": "friend_invite", + "fingerprint": fingerprint, + "display_name": display_name, + "room": room.duplicate(true), + }) + + +func _queue_social_prompt(details: Dictionary) -> void: + _social_prompt_queue.append(details.duplicate(true)) + _show_next_social_prompt() + + +func _show_next_social_prompt() -> void: + if ( + not _active_social_prompt.is_empty() + or _game_ui.is_social_prompt_open() + or _social_prompt_queue.is_empty() + ): + return + _active_social_prompt = _social_prompt_queue.pop_front() + var kind := str(_active_social_prompt.get("kind", "")) + var display_name := str( + _active_social_prompt.get("display_name", "Player") + ) + var shown: bool = false + if kind == "friend_request": + shown = _game_ui.show_social_prompt( + "%s wants to add you as a friend.\n" % display_name + + "Friendships are saved on this device.", + "accept", + "decline", + ) + elif kind == "friend_invite": + var room: Dictionary = _active_social_prompt.get("room", {}) + var room_name := str(room.get("room_name", "their room")) + shown = _game_ui.show_social_prompt( + "%s invited you to join %s." % [display_name, room_name], + "join", + "not now", + ) + if not shown: + _active_social_prompt.clear() + call_deferred("_show_next_social_prompt") + + +func _on_social_prompt_accepted() -> void: + var details: Dictionary = _active_social_prompt.duplicate(true) + _active_social_prompt.clear() + match str(details.get("kind", "")): + "friend_request": + _network_player_list.respond_friend_request( + str(details.get("request_id", "")), true + ) + "friend_invite": + var room: Dictionary = details.get("room", {}) + _pending_social_invite_join = true + _pending_social_invite_gameplay = _gameplay_started + if room.is_empty() or not _discovery.prepare_public_join(room): + _pending_social_invite_join = false + _report_social_join_error( + "This person needs to be online to do this." + ) + call_deferred("_show_next_social_prompt") + + +func _on_social_prompt_declined() -> void: + var details: Dictionary = _active_social_prompt.duplicate(true) + _active_social_prompt.clear() + if str(details.get("kind", "")) == "friend_request": + _network_player_list.respond_friend_request( + str(details.get("request_id", "")), false + ) + call_deferred("_show_next_social_prompt") + + +func _on_social_public_join_prepared(endpoint: String) -> void: + if not _pending_social_invite_join: + return + var from_gameplay := _pending_social_invite_gameplay + _pending_social_invite_join = false + _pending_social_invite_gameplay = false + if from_gameplay: + _on_pause_join_game_requested(endpoint) + else: + _on_title_join_game_requested(endpoint) + + +func _on_social_public_join_status_changed( + message: String, + is_error: bool, +) -> void: + if not _pending_social_invite_join or not is_error: + return + _pending_social_invite_join = false + _pending_social_invite_gameplay = false + _report_social_join_error(message) + + +func _report_social_join_error(message: String) -> void: + if _gameplay_started: + _game_ui.get_pause_menu().report_network_error(message) + else: + _game_ui.get_title_screen().report_network_error(message) + + func _on_network_join_authenticated() -> void: var connected_endpoint: ConnectionEndpoint = ( _network_session.get_current_endpoint() @@ -1880,6 +2244,7 @@ func _on_network_join_authenticated() -> void: ) _join_requested_from_title = false return + _save_slots.mark_played(_save_slots.get_active_slot_id()) if not _apply_joined_world(server_metadata): return _fade_out_title_music() @@ -2049,6 +2414,7 @@ func _apply_world( _player.velocity = Vector3.ZERO if _application_initialized: _refresh_active_world_bindings() + _network_world_spawns.refresh_world_context() if _application_initialized and not _dedicated_runtime: _water_recovery.update_world_context( spawn_transform, diff --git a/network/discovery_client.gd b/network/discovery_client.gd index bf15bbf..31b8054 100644 --- a/network/discovery_client.gd +++ b/network/discovery_client.gd @@ -9,6 +9,15 @@ signal host_state_changed(state: int) signal public_join_prepared(endpoint: String) signal public_join_status_changed(message: String, is_error: bool) signal public_join_state_changed(state: int) +signal friend_presence_updated(friends: Array[Dictionary]) +signal presence_sharing_changed(enabled: bool) +signal social_status_changed(message: String, is_error: bool) +signal friend_invite_received( + fingerprint: String, + display_name: String, + room: Dictionary, +) +signal friend_invite_finished(success: bool, message: String) const BASE_URL_SETTING: String = "network/discovery/base_url" const BASE_URL_ENVIRONMENT: String = "NETFISHING_DISCOVERY_URL" @@ -28,6 +37,7 @@ const TRAVERSAL_PACKET_PREFIX: String = "NETFISHING_TRAVERSAL_V1 " const UPNP_MAPPING_DURATION_SECONDS: int = 3600 const UPNP_RENEW_INTERVAL_SECONDS: float = 2700.0 const UPNP_RETRY_INTERVAL_SECONDS: float = 300.0 +const SOCIAL_POLL_INTERVAL_SECONDS: float = 5.0 enum HostState { UNAVAILABLE, @@ -55,6 +65,7 @@ enum HostRequestKind { } var _session: NetworkSession +var _relationships: PlayerRelationshipStore var _base_url: String = "" var _room_name: String = DEFAULT_ROOM_NAME var _room_name_uses_default: bool = true @@ -92,6 +103,18 @@ var _upnp_operation_is_renewal: bool = false var _upnp_renew_timer: Timer var _upnp: UPNP var _upnp_mapped_port: int = 0 +var _presence_sharing: bool = false +var _social_timer: Timer +var _presence_request: HTTPRequest +var _presence_query_request: HTTPRequest +var _invitation_poll_request: HTTPRequest +var _invitation_send_request: HTTPRequest +var _friend_presence: Dictionary[String, Dictionary] = {} +var _published_presence_tokens: PackedStringArray = PackedStringArray() +var _pending_presence_online: bool = false +var _pending_presence_tokens: PackedStringArray = PackedStringArray() +var _pending_invite_fingerprint: String = "" +var _joined_public_room_id: String = "" func _ready() -> void: @@ -147,16 +170,48 @@ func _ready() -> void: _join_probe_timer.one_shot = false add_child(_join_probe_timer) _join_probe_timer.timeout.connect(_send_pending_join_probe) + + _presence_request = _make_social_request( + "FriendPresencePublish", _on_presence_request_completed + ) + _presence_query_request = _make_social_request( + "FriendPresenceQuery", _on_presence_query_completed + ) + _invitation_poll_request = _make_social_request( + "FriendInvitationPoll", _on_invitation_poll_completed + ) + _invitation_send_request = _make_social_request( + "FriendInvitationSend", _on_invitation_send_completed + ) + _social_timer = Timer.new() + _social_timer.name = "FriendPresencePoll" + _social_timer.wait_time = SOCIAL_POLL_INTERVAL_SECONDS + _social_timer.one_shot = false + add_child(_social_timer) + _social_timer.timeout.connect(_refresh_social_state) _load_settings() _base_url = _configured_base_url() -func setup(session: NetworkSession) -> void: +func setup( + session: NetworkSession, + relationships: PlayerRelationshipStore = null, +) -> void: _session = session + _relationships = relationships if _room_name_uses_default: _room_name = _default_room_name(_session.get_local_display_name()) _save_settings() _session.set_session_display_name(_room_name) + if ( + _relationships != null + and not _relationships.relationship_changed.is_connected( + _on_social_relationship_changed + ) + ): + _relationships.relationship_changed.connect( + _on_social_relationship_changed + ) if not _session.state_changed.is_connected(_on_session_state_changed): _session.state_changed.connect(_on_session_state_changed) if not _session.peer_count_changed.is_connected(_on_peer_count_changed): @@ -173,6 +228,9 @@ func setup(session: NetworkSession) -> void: else: _set_host_state(HostState.CLOSED) _set_host_status("Open the game before listing it publicly.", false) + if is_configured() and _relationships != null: + _social_timer.start() + call_deferred("_refresh_social_state") func is_configured() -> bool: @@ -183,6 +241,112 @@ func get_base_url() -> String: return _base_url +func is_presence_sharing() -> bool: + return _presence_sharing + + +func set_presence_sharing(enabled: bool) -> bool: + if enabled and (not is_configured() or _relationships == null): + social_status_changed.emit( + "Friend presence is not configured in this build.", true + ) + return false + if _presence_sharing == enabled: + return true + _presence_sharing = enabled + _save_settings() + presence_sharing_changed.emit(enabled) + _refresh_social_state() + return true + + +func get_friend_presence() -> Array[Dictionary]: + var result: Array[Dictionary] = [] + if _relationships == null: + return result + for friend: Dictionary in _relationships.get_friends(): + var fingerprint := str(friend.get("fingerprint", "")) + var live: Dictionary = _friend_presence.get(fingerprint, {}) + result.append({ + "fingerprint": fingerprint, + "display_name": str( + friend.get("last_known_display_name", "Player") + ), + "online": bool(live.get("online", false)), + "room": ( + live.get("room", {}).duplicate(true) + if typeof(live.get("room", {})) == TYPE_DICTIONARY + else {} + ), + }) + result.sort_custom(func(a: Dictionary, b: Dictionary) -> bool: + if bool(a["online"]) != bool(b["online"]): + return bool(a["online"]) + return str(a["display_name"]).naturalnocasecmp_to( + str(b["display_name"]) + ) < 0 + ) + return result + + +func request_friend_presence() -> bool: + if not is_configured() or _relationships == null: + friend_presence_updated.emit(get_friend_presence()) + return false + _refresh_social_state() + return true + + +func send_friend_invite(fingerprint: String) -> bool: + if ( + _relationships == null + or not _relationships.is_friend(fingerprint) + or _relationships.is_blocked(fingerprint) + or not is_configured() + ): + friend_invite_finished.emit( + false, "This person needs to be online to do this." + ) + return false + if ( + _session == null + or not _session.is_host() + or not _host_verified + or _lease_room_id.is_empty() + ): + friend_invite_finished.emit( + false, + "List your open room in discovery before inviting friends.", + ) + return false + if ( + not _pending_invite_fingerprint.is_empty() + or _invitation_send_request.get_http_client_status() + != HTTPClient.STATUS_DISCONNECTED + ): + return false + var friend: Dictionary = _relationships.get_friend_record(fingerprint) + var inbox_token := str(friend.get("remote_invite_token", "")) + if inbox_token.is_empty(): + friend_invite_finished.emit(false, "Friend invitation is unavailable.") + return false + var error := _post_social_json( + _invitation_send_request, + "/v1/invitations", + { + "inbox_token": inbox_token, + "room_id": _lease_room_id, + }, + ) + if error != OK: + friend_invite_finished.emit( + false, "Friend invitation could not be sent." + ) + return false + _pending_invite_fingerprint = fingerprint + return true + + func set_base_url_override(value: String) -> bool: var normalized: String = value.strip_edges() while normalized.ends_with("/"): @@ -345,7 +509,7 @@ func prepare_public_join(room: Dictionary) -> bool: func request_rooms() -> bool: if not is_configured(): - rooms_updated.emit([]) + rooms_updated.emit(_empty_rooms()) browse_status_changed.emit( "Public room discovery is not configured in this build.", true ) @@ -362,7 +526,7 @@ func request_rooms() -> bool: ] var error: Error = _browse_request.request(url) if error != OK: - rooms_updated.emit([]) + rooms_updated.emit(_empty_rooms()) browse_status_changed.emit("Could not request public rooms.", true) return false _browse_request_in_flight = true @@ -813,12 +977,12 @@ func _on_browse_request_completed( _browse_request_in_flight = false var response: Dictionary = _parse_response_dictionary(body) if result != HTTPRequest.RESULT_SUCCESS or response_code != HTTPClient.RESPONSE_OK: - rooms_updated.emit([]) + rooms_updated.emit(_empty_rooms()) browse_status_changed.emit(_request_failure(response), true) return var raw_rooms: Variant = response.get("rooms", []) if typeof(raw_rooms) != TYPE_ARRAY: - rooms_updated.emit([]) + rooms_updated.emit(_empty_rooms()) browse_status_changed.emit("Discovery returned an invalid room list.", true) return var rooms: Array[Dictionary] = [] @@ -873,6 +1037,309 @@ func _valid_json_integer(value: Variant, minimum: int, maximum: int) -> bool: ) +func _make_social_request(name: String, callback: Callable) -> HTTPRequest: + var request := HTTPRequest.new() + request.name = name + request.timeout = REQUEST_TIMEOUT_SECONDS + add_child(request) + request.request_completed.connect(callback) + return request + + +func _social_payload(fields: Dictionary = {}) -> Dictionary: + var payload: Dictionary = fields.duplicate(true) + payload["game_version"] = NetworkProtocol.game_version() + payload["protocol_version"] = NetworkProtocol.PROTOCOL_VERSION + return payload + + +func _post_social_json( + request: HTTPRequest, + path: String, + fields: Dictionary, +) -> Error: + return request.request( + _base_url + path, + PackedStringArray(["Content-Type: application/json"]), + HTTPClient.METHOD_POST, + JSON.stringify(_social_payload(fields)), + ) + + +func _refresh_social_state() -> void: + if not is_configured() or _relationships == null: + return + _publish_friend_presence() + _query_friend_presence() + _poll_friend_invitations() + + +func _publish_friend_presence() -> void: + if ( + _presence_request.get_http_client_status() + != HTTPClient.STATUS_DISCONNECTED + ): + return + var current_tokens := _friend_social_values( + "local_presence_write_token" + ) + var online := _presence_sharing and not current_tokens.is_empty() + var publish_online := online + var tokens := PackedStringArray() + if online: + # Revoke removed or blocked friendships before refreshing the remaining + # capabilities. This makes status disappear on the next request instead of + # waiting for the server's short presence TTL. + tokens = _presence_tokens_not_in( + _published_presence_tokens, current_tokens + ) + if not tokens.is_empty(): + publish_online = false + else: + tokens = current_tokens + else: + tokens = _published_presence_tokens + if tokens.is_empty(): + return + var error := _post_social_json( + _presence_request, + "/v1/presence", + { + "display_name": _session.get_local_display_name(), + "room_id": _current_presence_room_id(), + "online": publish_online, + "write_tokens": Array(tokens), + }, + ) + if error == OK: + _pending_presence_online = publish_online + _pending_presence_tokens = tokens.duplicate() + else: + social_status_changed.emit("Could not update friend presence.", true) + + +func _query_friend_presence() -> void: + if ( + _presence_query_request.get_http_client_status() + != HTTPClient.STATUS_DISCONNECTED + ): + return + var channels := _friend_social_values("remote_presence_channel") + if channels.is_empty(): + var had_presence := not _friend_presence.is_empty() + _friend_presence.clear() + if had_presence: + friend_presence_updated.emit(get_friend_presence()) + return + var error := _post_social_json( + _presence_query_request, + "/v1/presence/query", + {"channels": Array(channels)}, + ) + if error != OK: + social_status_changed.emit("Could not refresh friend status.", true) + + +func _poll_friend_invitations() -> void: + if ( + _invitation_poll_request.get_http_client_status() + != HTTPClient.STATUS_DISCONNECTED + ): + return + var tokens := _friend_social_values("local_invite_token") + if tokens.is_empty(): + return + var error := _post_social_json( + _invitation_poll_request, + "/v1/invitations/poll", + {"inbox_tokens": Array(tokens)}, + ) + if error != OK: + social_status_changed.emit("Could not check friend invitations.", true) + + +func _friend_social_values(key: String) -> PackedStringArray: + var result := PackedStringArray() + if _relationships == null: + return result + for friend: Dictionary in _relationships.get_friends(): + var value := str(friend.get(key, "")) + if not value.is_empty() and value not in result: + result.append(value) + return result + + +func _current_presence_room_id() -> String: + if _session == null: + return "" + if _session.is_host() and _host_verified: + return _lease_room_id + if _session.is_joined_client(): + return _joined_public_room_id + return "" + + +func _on_presence_request_completed( + result: int, + response_code: int, + _headers: PackedStringArray, + body: PackedByteArray, +) -> void: + var published_online := _pending_presence_online + var request_tokens := _pending_presence_tokens.duplicate() + _pending_presence_online = false + _pending_presence_tokens = PackedStringArray() + var response := _parse_response_dictionary(body) + if result != HTTPRequest.RESULT_SUCCESS or response_code != HTTPClient.RESPONSE_OK: + social_status_changed.emit(_request_failure(response), true) + return + if published_online: + for token: String in request_tokens: + if token not in _published_presence_tokens: + _published_presence_tokens.append(token) + else: + for token: String in request_tokens: + var index := _published_presence_tokens.find(token) + if index >= 0: + _published_presence_tokens.remove_at(index) + if _presence_publish_needs_follow_up(): + call_deferred("_publish_friend_presence") + + +func _presence_publish_needs_follow_up() -> bool: + var desired := ( + _friend_social_values("local_presence_write_token") + if _presence_sharing + else PackedStringArray() + ) + return ( + not _presence_tokens_not_in( + _published_presence_tokens, desired + ).is_empty() + or not _presence_tokens_not_in( + desired, _published_presence_tokens + ).is_empty() + ) + + +func _presence_tokens_not_in( + first: PackedStringArray, + second: PackedStringArray, +) -> PackedStringArray: + var result := PackedStringArray() + for token: String in first: + if token not in second: + result.append(token) + return result + + +func _on_presence_query_completed( + result: int, + response_code: int, + _headers: PackedStringArray, + body: PackedByteArray, +) -> void: + var response := _parse_response_dictionary(body) + if result != HTTPRequest.RESULT_SUCCESS or response_code != HTTPClient.RESPONSE_OK: + social_status_changed.emit(_request_failure(response), true) + return + var by_channel: Dictionary[String, String] = {} + for friend: Dictionary in _relationships.get_friends(): + by_channel[str(friend.get("remote_presence_channel", ""))] = str( + friend.get("fingerprint", "") + ) + var next_presence: Dictionary[String, Dictionary] = {} + var raw_presence: Variant = response.get("presence", []) + if typeof(raw_presence) == TYPE_ARRAY: + for value: Variant in raw_presence: + if typeof(value) != TYPE_DICTIONARY: + continue + var presence: Dictionary = value + var fingerprint := str( + by_channel.get(str(presence.get("channel", "")), "") + ) + if fingerprint.is_empty() or _relationships.is_blocked(fingerprint): + continue + var room: Dictionary = {} + var raw_room: Variant = presence.get("room", {}) + if typeof(raw_room) == TYPE_DICTIONARY and _valid_public_room(raw_room): + room = (raw_room as Dictionary).duplicate(true) + next_presence[fingerprint] = { + "online": true, + "room": room, + } + if next_presence == _friend_presence: + return + _friend_presence = next_presence + friend_presence_updated.emit(get_friend_presence()) + + +func _on_invitation_poll_completed( + result: int, + response_code: int, + _headers: PackedStringArray, + body: PackedByteArray, +) -> void: + var response := _parse_response_dictionary(body) + if result != HTTPRequest.RESULT_SUCCESS or response_code != HTTPClient.RESPONSE_OK: + return + var by_inbox: Dictionary[String, Dictionary] = {} + for friend: Dictionary in _relationships.get_friends(): + var token := str(friend.get("local_invite_token", "")) + if not token.is_empty(): + by_inbox[PlayerRelationshipStore.invite_inbox_id(token)] = friend + var invitations: Variant = response.get("invitations", []) + if typeof(invitations) != TYPE_ARRAY: + return + for value: Variant in invitations: + if typeof(value) != TYPE_DICTIONARY: + continue + var invitation: Dictionary = value + var friend: Dictionary = by_inbox.get( + str(invitation.get("inbox_id", "")), {} + ) + var raw_room: Variant = invitation.get("room", {}) + if friend.is_empty() or typeof(raw_room) != TYPE_DICTIONARY: + continue + var room := raw_room as Dictionary + if not _valid_public_room(room): + continue + var fingerprint := str(friend.get("fingerprint", "")) + if _relationships.is_blocked(fingerprint): + continue + friend_invite_received.emit( + fingerprint, + str(friend.get("last_known_display_name", "Player")), + room.duplicate(true), + ) + + +func _on_invitation_send_completed( + result: int, + response_code: int, + _headers: PackedStringArray, + body: PackedByteArray, +) -> void: + _pending_invite_fingerprint = "" + var response := _parse_response_dictionary(body) + var success := ( + result == HTTPRequest.RESULT_SUCCESS + and response_code == HTTPClient.RESPONSE_CREATED + ) + friend_invite_finished.emit( + success, + "Invitation sent." if success else _request_failure(response), + ) + + +func _on_social_relationship_changed(_fingerprint: String) -> void: + for fingerprint: String in _friend_presence.keys(): + if not _relationships.is_friend(fingerprint): + _friend_presence.erase(fingerprint) + friend_presence_updated.emit(get_friend_presence()) + call_deferred("_refresh_social_state") + + func _parse_response_dictionary(body: PackedByteArray) -> Dictionary: if body.is_empty(): return {} @@ -924,6 +1391,21 @@ func _discovery_version_mismatch_message(required_version: String) -> String: func _on_session_state_changed(state: NetworkSession.State) -> void: + if state == NetworkSession.State.JOINED_CLIENT: + if not _pending_join_room_id.is_empty(): + _joined_public_room_id = _pending_join_room_id + elif state in [ + NetworkSession.State.PRIVATE_HOST, + NetworkSession.State.OPEN_HOST, + NetworkSession.State.SERVER_LOST, + NetworkSession.State.CONNECTION_FAILED, + ]: + _joined_public_room_id = "" + elif ( + state == NetworkSession.State.INACTIVE + and not _preserve_pending_join_on_inactive + ): + _joined_public_room_id = "" if state == NetworkSession.State.CONNECTING and not _pending_join_token.is_empty(): _preserve_pending_join_on_inactive = false _set_public_join_state(PublicJoinState.CONNECTING) @@ -979,6 +1461,7 @@ func _on_session_state_changed(state: NetworkSession.State) -> void: _set_host_status("Open the game before listing it publicly.", false) else: _set_host_state(HostState.CLOSED) + call_deferred("_refresh_social_state") func _on_host_openness_changed(is_open: bool) -> void: @@ -1039,6 +1522,10 @@ func _set_public_join_state(state: PublicJoinState) -> void: public_join_state_changed.emit(int(state)) +func _empty_rooms() -> Array[Dictionary]: + return [] + + func _sanitize_room_name(value: String) -> String: var cleaned: String = value.strip_edges().replace("\n", " ").replace("\r", " ") cleaned = cleaned.replace("\t", " ") @@ -1065,7 +1552,7 @@ func _load_settings() -> void: ) if not saved_name.is_empty(): _room_name = saved_name - _room_name_uses_default = bool(config.get_value( + _room_name_uses_default = bool(config.get_value( "host", "room_name_uses_default", saved_name in [ @@ -1073,6 +1560,9 @@ func _load_settings() -> void: LEGACY_DEFAULT_ROOM_NAME, LEGACY_DEDICATED_DEFAULT_ROOM_NAME, ], + )) + _presence_sharing = bool(config.get_value( + "social", "share_presence", false )) @@ -1084,6 +1574,7 @@ func _save_settings() -> void: config.set_value( "host", "room_name_uses_default", _room_name_uses_default ) + config.set_value("social", "share_presence", _presence_sharing) var error: Error = config.save(SETTINGS_PATH) if error != OK: - push_warning("Could not save the local NETfishing room name.") + push_warning("Could not save local NETfishing discovery settings.") diff --git a/network/network_fish_showcase_protocol.gd b/network/network_fish_showcase_protocol.gd index d69e9dd..2ecd1ee 100644 --- a/network/network_fish_showcase_protocol.gd +++ b/network/network_fish_showcase_protocol.gd @@ -2,7 +2,7 @@ class_name NetworkFishShowcaseProtocol extends RefCounted const CAPABILITY: StringName = &"fish_showcase_v1" -const RELIABLE_CHANNEL: int = NetworkProtocol.ITEM_RELIABLE_CHANNEL +const RELIABLE_CHANNEL: int = NetworkProtocol.SHOWCASE_RELIABLE_CHANNEL const MAX_SESSION_ID_LENGTH: int = 96 const MAX_FISH_ID_LENGTH: int = 96 const MAX_WEIGHT_LB: float = 1000.0 diff --git a/network/network_fish_showcase_service.gd b/network/network_fish_showcase_service.gd index 068ee7d..d956240 100644 --- a/network/network_fish_showcase_service.gd +++ b/network/network_fish_showcase_service.gd @@ -7,6 +7,7 @@ const FishCatchType = preload("res://fish/fish_catch.gd") const FishQualityType = preload("res://fish/fish_quality.gd") const FishInventoryType = preload("res://inventory/fish_inventory.gd") const PlayerHotbarType = preload("res://inventory/player_hotbar.gd") +const LOCAL_STATE_RETRY_SECONDS: float = 0.75 var _session: NetworkSession var _spawn_service: PlayerSpawnService @@ -15,6 +16,8 @@ var _local_inventory: FishInventoryType var _local_hotbar: PlayerHotbarType var _states: Dictionary[int, Dictionary] = {} var _local_revision: int = 0 +var _local_acknowledged_revision: int = -1 +var _local_state_retry_elapsed: float = 0.0 var _local_visible: bool = false var _local_catch_id: StringName @@ -54,6 +57,30 @@ func setup( ) +func _process(delta: float) -> void: + if ( + _session == null + or not _session.is_joined_client() + or _local_revision <= 0 + or _local_revision <= _local_acknowledged_revision + ): + _local_state_retry_elapsed = 0.0 + return + _local_state_retry_elapsed += delta + if _local_state_retry_elapsed < LOCAL_STATE_RETRY_SECONDS: + return + var fish_catch: FishCatchType + if _local_visible: + fish_catch = _local_inventory.get_catch_by_id(_local_catch_id) + if fish_catch == null or not fish_catch.is_valid(): + _submit_local_state(null, false) + return + # A client can finish a generated-world transition on the same frame that + # its local showcase changes. Republish until the authoritative echo arrives + # so that one early application-level miss cannot leave held fish out of sync. + _submit_local_state(fish_catch, _local_visible) + + func toggle_selected_fish() -> bool: if _local_hotbar == null or _local_inventory == null: return false @@ -78,6 +105,7 @@ func get_local_showcase_catch_id() -> StringName: func _submit_local_state(fish_catch: FishCatchType, should_show: bool) -> void: _local_revision += 1 + _local_state_retry_elapsed = 0.0 var local_peer_id: int = ( _session.get_local_peer_id() if _session != null else 1 ) @@ -166,6 +194,11 @@ func receive_showcase_state(data: Dictionary) -> void: ): return var peer_id: int = int(data["owner_peer_id"]) + if peer_id == _session.get_local_peer_id(): + _local_acknowledged_revision = maxi( + _local_acknowledged_revision, + int(data["revision"]), + ) var previous: Dictionary = _states.get(peer_id, {}) if int(data["revision"]) <= int(previous.get("revision", -1)): return @@ -267,6 +300,8 @@ func _on_session_state_changed(state: NetworkSession.State) -> void: _states.clear() _local_visible = false _local_catch_id = StringName() + _local_acknowledged_revision = -1 + _local_state_retry_elapsed = 0.0 var local_avatar: Player = _spawn_service.get_avatar( _session.get_local_peer_id() ) diff --git a/network/network_fishing_protocol.gd b/network/network_fishing_protocol.gd index 8df59b7..7f15fdd 100644 --- a/network/network_fishing_protocol.gd +++ b/network/network_fishing_protocol.gd @@ -8,6 +8,8 @@ const MAX_REEL_SPEED: float = 10.0 const MAX_BARRIER_DAMAGE: int = 128 const INPUT_CHANNEL: int = 3 const SNAPSHOT_CHANNEL: int = 4 +const OBSERVER_SNAPSHOT_CHANNEL: int = 10 +const RELIABLE_CHANNEL: int = NetworkProtocol.FISHING_RELIABLE_CHANNEL const INPUT_RATE: float = 1.0 / 30.0 const SNAPSHOT_RATE: float = 1.0 / 20.0 @@ -35,6 +37,7 @@ static func validate_cast_request(data: Variant) -> String: "rarity_multipliers", "discovered_fish_ids", "capacity_available", + "movement_sequence", ]: if not payload.has(key): return "Malformed fishing request." @@ -51,11 +54,16 @@ static func validate_cast_request(data: Variant) -> String: or typeof(payload["rarity_multipliers"]) != TYPE_ARRAY or typeof(payload["discovered_fish_ids"]) != TYPE_ARRAY or typeof(payload["capacity_available"]) != TYPE_BOOL + or typeof(payload["movement_sequence"]) != TYPE_INT ): return "Malformed fishing request." - if payload.has("bait_id") and typeof(payload["bait_id"]) not in [TYPE_STRING, TYPE_STRING_NAME]: + if payload.has("bait_id") and typeof(payload["bait_id"]) not in [ + TYPE_STRING, TYPE_STRING_NAME + ]: return "Malformed fishing request." - if payload.has("lure_id") and typeof(payload["lure_id"]) not in [TYPE_STRING, TYPE_STRING_NAME]: + if payload.has("lure_id") and typeof(payload["lure_id"]) not in [ + TYPE_STRING, TYPE_STRING_NAME + ]: return "Malformed fishing request." var request_id: String = payload["request_id"] var session_id: String = payload["session_id"] @@ -92,6 +100,8 @@ static func validate_cast_request(data: Variant) -> String: or str(payload["rod_id"]).is_empty() or str(payload["rod_id"]).length() > 96 or str(payload.get("lure_id", "")).length() > 96 + or int(payload["movement_sequence"]) < 0 + or int(payload["movement_sequence"]) > 2147483647 ): return "Fishing request values are outside allowed limits." for value: Variant in rarity: diff --git a/network/network_fishing_service.gd b/network/network_fishing_service.gd index 95de131..8c9c798 100644 --- a/network/network_fishing_service.gd +++ b/network/network_fishing_service.gd @@ -21,6 +21,8 @@ const MAX_LEDGER_ENTRIES_PER_PEER: int = 64 const CAST_ORIGIN_TOLERANCE: float = 2.5 const CAPACITY_RESPONSE_TIMEOUT: float = 5.0 const MIN_CAST_INTERVAL: float = 0.25 +const OBSERVER_SNAPSHOT_INTERVAL: float = 0.1 +const OBSERVER_RELEVANCE_DISTANCE: float = 96.0 signal local_cast_accepted(attempt_id: String, target: Vector3) signal local_cast_rejected(message: String) @@ -51,7 +53,13 @@ var _last_input_time: Dictionary[int, float] = {} var _remote_presentations: Dictionary[int, RemoteFishingPresentation] = {} var _pending_local_bait_by_request: Dictionary[String, StringName] = {} var _snapshot_accumulator: float = 0.0 +var _observer_snapshot_accumulator: float = 0.0 var _local_input_sequence: int = 0 +var _presentation_enabled: bool = true +var _owner_snapshot_packets_sent: int = 0 +var _owner_snapshot_states_sent: int = 0 +var _observer_snapshot_packets_sent: int = 0 +var _observer_snapshot_states_sent: int = 0 func setup( @@ -67,6 +75,7 @@ func setup( item_catalog: ItemCatalog, fish_catalog: FishPoolType, item_use: NetworkItemUseService, + presentation_enabled: bool = true, ) -> void: _session = session _spawn_service = spawn_service @@ -80,6 +89,7 @@ func setup( _item_catalog = item_catalog _fish_catalog = fish_catalog _item_use = item_use + _presentation_enabled = presentation_enabled if not _session.peer_removed.is_connected(_on_peer_removed): _session.peer_removed.connect(_on_peer_removed) if not _session.state_changed.is_connected(_on_session_state_changed): @@ -130,6 +140,7 @@ func request_local_cast( "capacity_available": bool(evidence.get("capacity_available", false)), "bait_id": str(bait_id), "lure_id": str(lure_id), + "movement_sequence": _session.get_latest_movement_input_sequence(), } if _session.is_host(): _handle_cast_request(_session.get_local_peer_id(), data) @@ -213,15 +224,27 @@ func _process(delta: float) -> void: if now >= attempt.capacity_deadline: _cancel_attempt(peer_id, "Fishing attempt ended.") _snapshot_accumulator += delta + _observer_snapshot_accumulator += delta if _snapshot_accumulator >= NetworkFishingProtocol.SNAPSHOT_RATE: _snapshot_accumulator = fmod( _snapshot_accumulator, NetworkFishingProtocol.SNAPSHOT_RATE ) - _broadcast_snapshots() + _broadcast_owner_snapshots() + if _observer_snapshot_accumulator >= OBSERVER_SNAPSHOT_INTERVAL: + _observer_snapshot_accumulator = fmod( + _observer_snapshot_accumulator, + OBSERVER_SNAPSHOT_INTERVAL, + ) + _broadcast_observer_snapshots() -@rpc("any_peer", "call_remote", "reliable", 0) +@rpc( + "any_peer", + "call_remote", + "reliable", + NetworkFishingProtocol.RELIABLE_CHANNEL, +) func submit_cast_request(data: Dictionary) -> void: var sender_id: int = multiplayer.get_remote_sender_id() if not _session.is_host() or not _session.is_authenticated_peer(sender_id): @@ -268,7 +291,13 @@ func _handle_cast_request(peer_id: int, data: Dictionary) -> void: return var origin: Vector3 = NetworkFishingProtocol.array_to_vector3(data["origin"]) var target: Vector3 = NetworkFishingProtocol.array_to_vector3(data["target"]) - var authoritative_origin: Vector3 = avatar.get_cast_origin_position() + var movement_state: Dictionary = avatar.get_lag_compensated_movement_state( + int(data.get("movement_sequence", 0)) + ) + var authoritative_origin: Vector3 = movement_state.get( + "cast_origin", + avatar.get_cast_origin_position(), + ) if origin.distance_to(authoritative_origin) > CAST_ORIGIN_TOLERANCE: _record_and_reject(peer_id, request_id, "Cannot fish here.") return @@ -279,7 +308,10 @@ func _handle_cast_request(peer_id: int, data: Dictionary) -> void: _fishing_spot.maximum_cast_distance, float(data["charge"]) ) - var facing: Vector3 = avatar.get_facing_direction() + var facing: Vector3 = movement_state.get( + "facing", + avatar.get_facing_direction(), + ) facing.y = 0.0 if ( cast_offset.length() < _fishing_spot.minimum_cast_distance - 0.25 @@ -642,7 +674,12 @@ func _handle_fishing_input(peer_id: int, data: Dictionary) -> void: attempt.controller.handle_primary_pressed() -@rpc("any_peer", "call_remote", "reliable", 0) +@rpc( + "any_peer", + "call_remote", + "reliable", + NetworkFishingProtocol.RELIABLE_CHANNEL, +) func submit_cancel_request(attempt_id: String) -> void: var sender_id: int = multiplayer.get_remote_sender_id() var attempt: NetworkFishingAttempt = _attempts.get(sender_id) @@ -687,16 +724,59 @@ func _on_encounter_updated( }) -func _broadcast_snapshots() -> void: - var snapshots: Array[Dictionary] = [] +func _broadcast_owner_snapshots() -> void: for attempt: NetworkFishingAttempt in _attempts.values(): var snapshot: Dictionary = attempt.get_meta("snapshot", {}) - if not snapshot.is_empty(): - snapshots.append(snapshot) - if snapshots.is_empty(): + if snapshot.is_empty(): + continue + var owner_peer_id: int = attempt.owner_peer_id + if owner_peer_id == _session.get_local_peer_id(): + _apply_snapshots([snapshot]) + elif owner_peer_id > 1: + receive_fishing_snapshots.rpc_id(owner_peer_id, [snapshot]) + _owner_snapshot_packets_sent += 1 + _owner_snapshot_states_sent += 1 + + +func _broadcast_observer_snapshots() -> void: + if _attempts.is_empty(): return - _apply_snapshots(snapshots) - receive_fishing_snapshots.rpc(snapshots) + var observer_ids: Array[int] = _session.get_authenticated_peer_ids() + for observer_peer_id: int in observer_ids: + var observer_avatar: Player = _spawn_service.get_avatar(observer_peer_id) + if observer_avatar == null: + continue + var summaries: Array = [] + for attempt: NetworkFishingAttempt in _attempts.values(): + if attempt.owner_peer_id == observer_peer_id: + continue + var owner_avatar: Player = _spawn_service.get_avatar( + attempt.owner_peer_id + ) + if ( + owner_avatar == null + or observer_avatar.global_position.distance_squared_to( + owner_avatar.global_position + ) > OBSERVER_RELEVANCE_DISTANCE * OBSERVER_RELEVANCE_DISTANCE + ): + continue + summaries.append([ + attempt.attempt_id, + attempt.owner_peer_id, + attempt.bobber_position, + int(attempt.phase), + ]) + if summaries.is_empty(): + continue + if observer_peer_id == _session.get_local_peer_id(): + _apply_observer_snapshots(summaries) + elif observer_peer_id > 1: + receive_fishing_observer_snapshots.rpc_id( + observer_peer_id, + summaries, + ) + _observer_snapshot_packets_sent += 1 + _observer_snapshot_states_sent += summaries.size() @rpc("authority", "call_remote", "unreliable_ordered", 4) @@ -704,6 +784,55 @@ func receive_fishing_snapshots(snapshots: Array) -> void: _apply_snapshots(snapshots) +@rpc( + "authority", + "call_remote", + "unreliable_ordered", + NetworkFishingProtocol.OBSERVER_SNAPSHOT_CHANNEL, +) +func receive_fishing_observer_snapshots(summaries: Array) -> void: + _apply_observer_snapshots(summaries) + + +func _apply_observer_snapshots(summaries: Array) -> void: + if not _presentation_enabled or summaries.size() > 128: + return + for value: Variant in summaries: + if typeof(value) != TYPE_ARRAY: + continue + var fields: Array = value + if ( + fields.size() != 4 + or typeof(fields[0]) != TYPE_STRING + or str(fields[0]).is_empty() + or str(fields[0]).length() > NetworkFishingProtocol.MAX_ID_LENGTH + or typeof(fields[1]) != TYPE_INT + or int(fields[1]) <= 0 + or typeof(fields[2]) != TYPE_VECTOR3 + or typeof(fields[3]) != TYPE_INT + or not (fields[2] as Vector3).is_finite() + or int(fields[3]) not in [ + NetworkFishingAttempt.Phase.WAITING_FOR_BITE, + NetworkFishingAttempt.Phase.FIGHTING, + NetworkFishingAttempt.Phase.PENDING_CAPACITY, + ] + ): + continue + var owner_peer_id: int = int(fields[1]) + if owner_peer_id == _session.get_local_peer_id(): + continue + var presentation := _get_remote_presentation(owner_peer_id) + if presentation != null: + presentation.synchronize_active( + str(fields[0]), + fields[2], + int(fields[3]) in [ + NetworkFishingAttempt.Phase.FIGHTING, + NetworkFishingAttempt.Phase.PENDING_CAPACITY, + ], + ) + + func _apply_snapshots(snapshots: Array) -> void: var local_peer_id: int = _session.get_local_peer_id() for value: Variant in snapshots: @@ -810,7 +939,12 @@ func _on_attempt_caught(peer_id: int) -> void: receive_capacity_probe.rpc_id(peer_id, probe) -@rpc("authority", "call_remote", "reliable", 0) +@rpc( + "authority", + "call_remote", + "reliable", + NetworkFishingProtocol.RELIABLE_CHANNEL, +) func receive_capacity_probe(data: Dictionary) -> void: _handle_local_capacity_probe(data) @@ -844,7 +978,12 @@ func _handle_local_capacity_probe(data: Dictionary) -> void: ) -@rpc("any_peer", "call_remote", "reliable", 0) +@rpc( + "any_peer", + "call_remote", + "reliable", + NetworkFishingProtocol.RELIABLE_CHANNEL, +) func submit_capacity_response( attempt_id: String, capacity_nonce: String, @@ -902,7 +1041,12 @@ func _finalize_catch(attempt: NetworkFishingAttempt) -> void: _dispose_attempt(attempt.owner_peer_id) -@rpc("authority", "call_remote", "reliable", 0) +@rpc( + "authority", + "call_remote", + "reliable", + NetworkFishingProtocol.RELIABLE_CHANNEL, +) func receive_target_outcome(data: Dictionary) -> void: _apply_target_outcome(data) @@ -934,7 +1078,7 @@ func _apply_target_outcome(data: Dictionary) -> void: ) ) _local_inventory.add_catch(fish_catch) - _local_collection.mark_quality_discovered( + _local_collection.record_catch( fish_id, fish_catch.quality, ) @@ -970,7 +1114,12 @@ func _acknowledge_result(result_id: String, catch_id: StringName) -> void: acknowledge_fishing_result.rpc_id(1, result_id, str(catch_id)) -@rpc("any_peer", "call_remote", "reliable", 0) +@rpc( + "any_peer", + "call_remote", + "reliable", + NetworkFishingProtocol.RELIABLE_CHANNEL, +) func acknowledge_fishing_result(result_id: String, catch_id: String) -> void: var sender_id: int = multiplayer.get_remote_sender_id() if ( @@ -1027,7 +1176,12 @@ func _broadcast_public_outcome( receive_public_outcome.rpc(data) -@rpc("authority", "call_remote", "reliable", 0) +@rpc( + "authority", + "call_remote", + "reliable", + NetworkFishingProtocol.RELIABLE_CHANNEL, +) func receive_public_outcome(data: Dictionary) -> void: _apply_public_outcome(data) @@ -1079,7 +1233,12 @@ func _broadcast_cast_accepted(data: Dictionary) -> void: receive_cast_accepted.rpc(data) -@rpc("authority", "call_remote", "reliable", 0) +@rpc( + "authority", + "call_remote", + "reliable", + NetworkFishingProtocol.RELIABLE_CHANNEL, +) func receive_cast_accepted(data: Dictionary) -> void: _apply_cast_accepted(data) @@ -1114,10 +1273,19 @@ func _apply_cast_accepted(data: Dictionary) -> void: else: var presentation := _get_remote_presentation(peer_id) if presentation != null: - presentation.show_cast(origin, target) + presentation.show_cast( + origin, + target, + str(data["attempt_id"]), + ) -@rpc("authority", "call_remote", "reliable", 0) +@rpc( + "authority", + "call_remote", + "reliable", + NetworkFishingProtocol.RELIABLE_CHANNEL, +) func receive_bite_pending(data: Dictionary) -> void: _apply_bite_pending(data) @@ -1132,7 +1300,12 @@ func _apply_bite_pending(data: Dictionary) -> void: local_bite_pending.emit(str(data["attempt_id"])) -@rpc("authority", "call_remote", "reliable", 0) +@rpc( + "authority", + "call_remote", + "reliable", + NetworkFishingProtocol.RELIABLE_CHANNEL, +) func receive_bite_started(data: Dictionary) -> void: _apply_bite_started(data) @@ -1193,7 +1366,12 @@ func _send_cast_rejected( receive_cast_rejected.rpc_id(peer_id, request_id, message.left(128)) -@rpc("authority", "call_remote", "reliable", 0) +@rpc( + "authority", + "call_remote", + "reliable", + NetworkFishingProtocol.RELIABLE_CHANNEL, +) func receive_cast_rejected(request_id: String, message: String) -> void: _pending_local_bait_by_request.erase(request_id) local_cast_rejected.emit(message) @@ -1228,6 +1406,8 @@ func _resend_request_response(peer_id: int, response: Dictionary) -> void: func _get_remote_presentation( peer_id: int, ) -> RemoteFishingPresentation: + if not _presentation_enabled: + return null var existing: RemoteFishingPresentation = _remote_presentations.get(peer_id) if existing != null and is_instance_valid(existing): return existing @@ -1330,9 +1510,21 @@ func _clear_all() -> void: _last_input_time.clear() _pending_local_bait_by_request.clear() _snapshot_accumulator = 0.0 + _observer_snapshot_accumulator = 0.0 _local_input_sequence = 0 +func get_network_metrics() -> Dictionary: + return { + "active_attempts": _attempts.size(), + "remote_presentations": _remote_presentations.size(), + "owner_snapshot_packets_sent": _owner_snapshot_packets_sent, + "owner_snapshot_states_sent": _owner_snapshot_states_sent, + "observer_snapshot_packets_sent": _observer_snapshot_packets_sent, + "observer_snapshot_states_sent": _observer_snapshot_states_sent, + } + + func _bound_result_ledger() -> void: while _result_ledgers.size() > MAX_LEDGER_ENTRIES_PER_PEER: _result_ledgers.erase(_result_ledgers.keys().front()) diff --git a/network/network_item_use_service.gd b/network/network_item_use_service.gd index 7ae0f92..cf2d5f9 100644 --- a/network/network_item_use_service.gd +++ b/network/network_item_use_service.gd @@ -47,6 +47,7 @@ func setup( _session.peer_removed.connect(_on_peer_removed) _session.state_changed.connect(_on_session_state_changed) _session.peer_authenticated.connect(_on_peer_authenticated) + _spawn_service.avatar_spawned.connect(_on_avatar_spawned) func request_use(item_id: StringName) -> String: @@ -436,6 +437,12 @@ func _on_peer_authenticated(peer_id: int, _display_name: String) -> void: receive_equipped_state.rpc_id(peer_id, state) +func _on_avatar_spawned(peer_id: int, _avatar: Player) -> void: + var state: Dictionary = _equipped_states.get(peer_id, {}) + if not state.is_empty(): + _apply_equipped(state) + + func _on_peer_removed(peer_id: int) -> void: _requests.erase(peer_id) _pending_by_peer.erase(peer_id) diff --git a/network/network_player_list_service.gd b/network/network_player_list_service.gd index 2014665..677df05 100644 --- a/network/network_player_list_service.gd +++ b/network/network_player_list_service.gd @@ -3,6 +3,15 @@ extends Node signal entries_changed signal moderation_finished(success: bool, message: String) +signal friend_request_received( + request_id: String, + fingerprint: String, + display_name: String, +) +signal friend_action_finished(success: bool, message: String) + +const MAX_PENDING_FRIEND_REQUESTS := 16 +const FRIEND_REQUEST_ID_LENGTH := 32 var _session: NetworkSession var _relationships: PlayerRelationshipStore @@ -18,6 +27,9 @@ var _peer_fingerprints: Dictionary[int, String] = {} var _remote_bans: Array[Dictionary] = [] var _ban_snapshot_requested: bool = false var _ban_snapshot_loaded: bool = false +var _pending_outgoing_friends: Dictionary[String, Dictionary] = {} +var _pending_incoming_friends: Dictionary[String, Dictionary] = {} +var _host_friend_routes: Dictionary[String, Dictionary] = {} func setup( @@ -74,6 +86,18 @@ func get_entries() -> Array[PlayerListEntry]: entry.ping_to_host_ms = _session.get_peer_rtt_ms(peer_id) entry.muted = _relationships.is_muted(record.identity_fingerprint) entry.blocked = blocked + entry.is_friend = _relationships.is_friend(record.identity_fingerprint) + entry.can_request_friend = ( + not entry.is_local_player + and not entry.is_friend + and not entry.blocked + and _session.supports_server_capability( + NetworkProtocol.FRIENDS_CAPABILITY + ) + and _session.peer_supports_capability( + peer_id, NetworkProtocol.FRIENDS_CAPABILITY + ) + ) entry.can_kick = ( _session.can_local_moderate() and peer_id != local_id @@ -125,6 +149,10 @@ func get_relationships() -> Array[Dictionary]: return _relationships.get_records() +func get_friends() -> Array[Dictionary]: + return _relationships.get_friends() + + func get_bans() -> Array[Dictionary]: if _session.is_host(): return _bans.get_bans(_session.get_host_identity_fingerprint()) @@ -180,6 +208,160 @@ func set_blocked(fingerprint: String, display_name: String, value: bool) -> bool return _relationships.set_blocked(fingerprint, display_name, value) +func remove_friend(fingerprint: String, display_name: String) -> bool: + if fingerprint == _session.get_local_identity_fingerprint(): + return false + var ok := _relationships.remove_friend(fingerprint, display_name) + friend_action_finished.emit( + ok, + "Friend removed." if ok else "Friend could not be removed.", + ) + return ok + + +func send_friend_request( + peer_id: int, + fingerprint: String, + display_name: String, +) -> bool: + if ( + _pending_outgoing_friends.size() >= MAX_PENDING_FRIEND_REQUESTS + or fingerprint == _session.get_local_identity_fingerprint() + or _relationships.is_blocked(fingerprint) + or _relationships.is_friend(fingerprint) + or not _valid_friend_target(peer_id, fingerprint) + ): + friend_action_finished.emit( + false, "This person needs to be online to do this." + ) + return false + var local_capabilities: Dictionary = ( + _relationships.create_friend_capabilities() + ) + if local_capabilities.is_empty(): + friend_action_finished.emit(false, "Friend request could not be created.") + return false + var request_id := NetworkIdentityCrypto.secure_id(16) + _pending_outgoing_friends[request_id] = { + "target_peer_id": peer_id, + "target_fingerprint": fingerprint, + "target_display_name": display_name, + "local_capabilities": local_capabilities, + } + var public_capabilities := _public_friend_capabilities(local_capabilities) + if _session.is_host(): + _route_friend_request( + _session.get_local_peer_id(), peer_id, request_id, public_capabilities + ) + else: + request_friendship.rpc_id( + 1, peer_id, request_id, public_capabilities + ) + friend_action_finished.emit(true, "Friend request sent.") + return true + + +func respond_friend_request(request_id: String, accepted: bool) -> bool: + var pending: Dictionary = _pending_incoming_friends.get(request_id, {}) + if pending.is_empty(): + friend_action_finished.emit( + false, "This friend request is no longer available." + ) + return false + _pending_incoming_friends.erase(request_id) + var local_capabilities: Dictionary = {} + var public_capabilities: Dictionary = {} + var response_accepted := accepted + if accepted: + local_capabilities = _relationships.create_friend_capabilities() + response_accepted = ( + not local_capabilities.is_empty() + and _relationships.add_friend( + str(pending["requester_fingerprint"]), + str(pending["requester_display_name"]), + local_capabilities, + pending["remote_capabilities"], + ) + ) + if response_accepted: + public_capabilities = _public_friend_capabilities(local_capabilities) + if _session.is_host(): + _route_friend_response( + _session.get_local_peer_id(), + request_id, + response_accepted, + public_capabilities, + ) + else: + respond_friendship.rpc_id( + 1, request_id, response_accepted, public_capabilities + ) + friend_action_finished.emit( + response_accepted or not accepted, + "Friend added." + if response_accepted + else "Friend request declined." + if not accepted + else "Friend could not be saved.", + ) + return response_accepted or not accepted + + +@rpc("any_peer", "call_remote", "reliable", 0) +func request_friendship( + target_peer_id: int, + request_id: String, + public_capabilities: Dictionary, +) -> void: + _route_friend_request( + multiplayer.get_remote_sender_id(), + target_peer_id, + request_id, + public_capabilities, + ) + + +@rpc("authority", "call_remote", "reliable", 0) +func receive_friend_request( + request_id: String, + requester_fingerprint: String, + requester_display_name: String, + public_capabilities: Dictionary, +) -> void: + _receive_friend_request_local( + request_id, + requester_fingerprint, + requester_display_name, + public_capabilities, + ) + + +@rpc("any_peer", "call_remote", "reliable", 0) +func respond_friendship( + request_id: String, + accepted: bool, + public_capabilities: Dictionary, +) -> void: + _route_friend_response( + multiplayer.get_remote_sender_id(), + request_id, + accepted, + public_capabilities, + ) + + +@rpc("authority", "call_remote", "reliable", 0) +func receive_friend_result( + request_id: String, + accepted: bool, + public_capabilities: Dictionary, + message: String, +) -> void: + _receive_friend_result_local( + request_id, accepted, public_capabilities, message + ) + + func kick(peer_id: int, fingerprint: String, revision: int) -> bool: if _session.is_host(): return _kick_on_host(peer_id, fingerprint, revision, true) @@ -454,6 +636,32 @@ func _on_peer_removed(peer_id: int) -> void: for key: String in _host_block_pairs.keys(): if fingerprint in key.split(":"): _host_block_pairs.erase(key) + for request_id: String in _host_friend_routes.keys(): + var route: Dictionary = _host_friend_routes[request_id] + if int(route.get("target_peer_id", 0)) == peer_id: + _send_friend_result_to_peer( + int(route.get("requester_peer_id", 0)), + request_id, + false, + {}, + "This person needs to be online to do this.", + ) + if ( + int(route.get("target_peer_id", 0)) == peer_id + or int(route.get("requester_peer_id", 0)) == peer_id + ): + _host_friend_routes.erase(request_id) + for request_id: String in _pending_outgoing_friends.keys(): + var pending: Dictionary = _pending_outgoing_friends[request_id] + if str(pending.get("target_fingerprint", "")) == fingerprint: + _pending_outgoing_friends.erase(request_id) + friend_action_finished.emit( + false, "This person needs to be online to do this." + ) + for request_id: String in _pending_incoming_friends.keys(): + var pending: Dictionary = _pending_incoming_friends[request_id] + if str(pending.get("requester_fingerprint", "")) == fingerprint: + _pending_incoming_friends.erase(request_id) _changed() @@ -469,6 +677,9 @@ func _on_session_state_changed(state: NetworkSession.State) -> void: _remote_bans.clear() _ban_snapshot_requested = false _ban_snapshot_loaded = false + _pending_outgoing_friends.clear() + _pending_incoming_friends.clear() + _host_friend_routes.clear() elif state == NetworkSession.State.JOINED_CLIENT: _request_ban_snapshot() _changed() @@ -506,6 +717,245 @@ func _peer_for_fingerprint(fingerprint: String) -> int: return 0 +func _valid_friend_target(peer_id: int, fingerprint: String) -> bool: + if ( + not _session.is_gameplay_session_active() + or not _session.supports_server_capability( + NetworkProtocol.FRIENDS_CAPABILITY + ) + or not _session.peer_supports_capability( + peer_id, NetworkProtocol.FRIENDS_CAPABILITY + ) + ): + return false + var record: PeerRegistry.PeerRecord = _session.get_peer_record(peer_id) + return ( + record != null + and record.identity_authenticated + and record.identity_fingerprint == fingerprint + ) + + +func _route_friend_request( + requester_peer_id: int, + target_peer_id: int, + request_id: String, + public_capabilities: Dictionary, +) -> void: + if ( + not _session.is_host() + or not _valid_friend_request_id(request_id) + or not _valid_public_friend_capabilities(public_capabilities) + or not _session.is_authenticated_peer(requester_peer_id) + ): + return + var requester: PeerRegistry.PeerRecord = ( + _session.get_peer_record(requester_peer_id) + ) + var target: PeerRegistry.PeerRecord = _session.get_peer_record(target_peer_id) + var can_route := ( + requester != null + and target != null + and requester_peer_id != target_peer_id + and _valid_friend_target( + target_peer_id, target.identity_fingerprint + ) + and _session.peer_supports_capability( + requester_peer_id, NetworkProtocol.FRIENDS_CAPABILITY + ) + and not pair_is_blocked( + requester.identity_fingerprint, target.identity_fingerprint + ) + and _host_friend_routes.size() < ( + MAX_PENDING_FRIEND_REQUESTS * 8 + ) + ) + if not can_route: + _send_friend_result_to_peer( + requester_peer_id, + request_id, + false, + {}, + "This person needs to be online to do this.", + ) + return + var requester_pending_count := 0 + for route: Dictionary in _host_friend_routes.values(): + if int(route.get("requester_peer_id", 0)) == requester_peer_id: + requester_pending_count += 1 + if requester_pending_count >= MAX_PENDING_FRIEND_REQUESTS: + _send_friend_result_to_peer( + requester_peer_id, + request_id, + false, + {}, + "Too many friend requests are pending.", + ) + return + _host_friend_routes[request_id] = { + "requester_peer_id": requester_peer_id, + "target_peer_id": target_peer_id, + } + if target_peer_id == _session.get_local_peer_id(): + _receive_friend_request_local( + request_id, + requester.identity_fingerprint, + requester.display_name, + public_capabilities, + ) + else: + receive_friend_request.rpc_id( + target_peer_id, + request_id, + requester.identity_fingerprint, + requester.display_name, + public_capabilities, + ) + + +func _receive_friend_request_local( + request_id: String, + requester_fingerprint: String, + requester_display_name: String, + public_capabilities: Dictionary, +) -> void: + if ( + not _valid_friend_request_id(request_id) + or not _valid_public_friend_capabilities(public_capabilities) + or not NetworkIdentityCrypto.valid_fingerprint(requester_fingerprint) + or not NetworkProfilePreferences.is_valid_display_name( + requester_display_name + ) + or _pending_incoming_friends.size() + >= MAX_PENDING_FRIEND_REQUESTS + or _relationships.is_blocked(requester_fingerprint) + or _relationships.is_friend(requester_fingerprint) + ): + _decline_friend_request(request_id) + return + _pending_incoming_friends[request_id] = { + "requester_fingerprint": requester_fingerprint, + "requester_display_name": requester_display_name, + "remote_capabilities": public_capabilities.duplicate(true), + } + friend_request_received.emit( + request_id, requester_fingerprint, requester_display_name + ) + + +func _decline_friend_request(request_id: String) -> void: + if _session.is_host(): + _route_friend_response( + _session.get_local_peer_id(), request_id, false, {} + ) + elif _session.is_joined_client(): + respond_friendship.rpc_id(1, request_id, false, {}) + + +func _route_friend_response( + responder_peer_id: int, + request_id: String, + accepted: bool, + public_capabilities: Dictionary, +) -> void: + if not _session.is_host(): + return + var route: Dictionary = _host_friend_routes.get(request_id, {}) + if ( + route.is_empty() + or int(route.get("target_peer_id", 0)) != responder_peer_id + ): + return + _host_friend_routes.erase(request_id) + var response_accepted := ( + accepted and _valid_public_friend_capabilities(public_capabilities) + ) + _send_friend_result_to_peer( + int(route["requester_peer_id"]), + request_id, + response_accepted, + public_capabilities if response_accepted else {}, + "Friend request accepted." + if response_accepted + else "Friend request declined." + if not accepted + else "Friend request could not be completed.", + ) + + +func _send_friend_result_to_peer( + peer_id: int, + request_id: String, + accepted: bool, + public_capabilities: Dictionary, + message: String, +) -> void: + if peer_id == _session.get_local_peer_id(): + _receive_friend_result_local( + request_id, accepted, public_capabilities, message + ) + elif _session.is_authenticated_peer(peer_id): + receive_friend_result.rpc_id( + peer_id, + request_id, + accepted, + public_capabilities, + message.left(120), + ) + + +func _receive_friend_result_local( + request_id: String, + accepted: bool, + public_capabilities: Dictionary, + message: String, +) -> void: + var pending: Dictionary = _pending_outgoing_friends.get(request_id, {}) + if pending.is_empty(): + return + _pending_outgoing_friends.erase(request_id) + var success := false + if accepted and _valid_public_friend_capabilities(public_capabilities): + success = _relationships.add_friend( + str(pending["target_fingerprint"]), + str(pending["target_display_name"]), + pending["local_capabilities"], + public_capabilities, + ) + message = "Friend added." if success else "Friend could not be saved." + friend_action_finished.emit(success, message.left(120)) + + +func _public_friend_capabilities(capabilities: Dictionary) -> Dictionary: + return { + "presence_channel": str(capabilities.get("presence_channel", "")), + "invite_token": str(capabilities.get("invite_token", "")), + } + + +func _valid_public_friend_capabilities(capabilities: Dictionary) -> bool: + return ( + _valid_friend_hex(str(capabilities.get("presence_channel", ""))) + and _valid_friend_hex(str(capabilities.get("invite_token", ""))) + ) + + +func _valid_friend_request_id(request_id: String) -> bool: + return _valid_friend_hex(request_id, FRIEND_REQUEST_ID_LENGTH) + + +func _valid_friend_hex( + value: String, + expected_length: int = PlayerRelationshipStore.SOCIAL_TOKEN_LENGTH, +) -> bool: + if value.length() != expected_length: + return false + for character: String in value: + if character not in "0123456789abcdef": + return false + return true + + func _valid_moderation_target( peer_id: int, fingerprint: String, diff --git a/network/network_protocol.gd b/network/network_protocol.gd index 9a30a27..6bbbf9b 100644 --- a/network/network_protocol.gd +++ b/network/network_protocol.gd @@ -3,7 +3,7 @@ extends RefCounted const WorldLayoutType = preload("res://world/world_layout.gd") -const PROTOCOL_VERSION: int = 9 +const PROTOCOL_VERSION: int = 10 const GAME_BUILD: String = "prealpha" const MAX_GAME_VERSION_LENGTH: int = 64 const MAX_DISPLAY_NAME_LENGTH: int = 24 @@ -13,14 +13,24 @@ const MAX_PUBLIC_KEY_LENGTH: int = 8192 const MAX_SIGNATURE_LENGTH: int = 2048 # ENet channels: 0 reliable lifecycle, 1 movement input, 2 movement # snapshots, 3 fishing input, 4 fishing snapshots, 5 reliable sales, -# 6 reliable shop transactions, 7 reliable item/equipment/showcase/drawing, -# 8 reliable ordered session chat, 9 reliable private session mail. +# 6 reliable shop transactions, 7 reliable item/equipment, +# 8 reliable ordered session chat, 9 reliable private session mail, +# 10 observer-only fishing summaries, 11 reliable movement animation state, +# 12 reliable fish showcase state, 13 reliable world-spawn events, +# 14 reliable artwork state, 15 world-spawn snapshots, and 16 reliable +# fishing lifecycle. Bulk world/art payloads must not head-of-line block held +# items, fishing, or animation presentation. const SALE_RELIABLE_CHANNEL: int = 5 const SHOP_RELIABLE_CHANNEL: int = 6 const ITEM_RELIABLE_CHANNEL: int = 7 const CHAT_RELIABLE_CHANNEL: int = 8 const MAIL_RELIABLE_CHANNEL: int = 9 -const ENET_CHANNEL_COUNT: int = 10 +const MOVEMENT_ANIMATION_CHANNEL: int = 11 +const SHOWCASE_RELIABLE_CHANNEL: int = 12 +const WORLD_SPAWN_RELIABLE_CHANNEL: int = 13 +const DRAWING_RELIABLE_CHANNEL: int = 14 +const FISHING_RELIABLE_CHANNEL: int = 16 +const ENET_CHANNEL_COUNT: int = 17 const SURFACE_DRAWING_CAPABILITY: String = "surface_drawing_v2" const ART_SHOP_CAPABILITY: String = "art_shop_v1" const BACKPACK_SHOP_CAPABILITY: String = "backpack_shop_v1" @@ -32,6 +42,9 @@ const WORLD_SPAWN_CAPABILITY: String = "world_spawn_envelope_v1" const APPEARANCE_PREVIEW_CAPABILITY: String = "appearance_preview_v1" const WORLD_GENERATION_CAPABILITY: String = "world_generation_v1" const WORLD_LAYOUT_CAPABILITY: String = "world_layout_v1" +const FRIENDS_CAPABILITY: String = "friends_v1" +const MOVEMENT_RECONCILIATION_CAPABILITY: String = "movement_reconciliation_v2" +const FISHING_REPLICATION_CAPABILITY: String = "fishing_replication_v2" const DEFAULT_WORLD_SEED: int = 13001 const MAX_WORLD_SEED: int = 2147483646 @@ -186,6 +199,9 @@ static func make_client_hello( BACKPACK_SHOP_CAPABILITY, WORLD_GENERATION_CAPABILITY, WORLD_LAYOUT_CAPABILITY, + FRIENDS_CAPABILITY, + MOVEMENT_RECONCILIATION_CAPABILITY, + FISHING_REPLICATION_CAPABILITY, ]), "cosmetic_snapshot": cosmetic_snapshot, "identity_fingerprint": identity_fingerprint, @@ -323,6 +339,9 @@ static func make_server_hello( APPEARANCE_PREVIEW_CAPABILITY, WORLD_GENERATION_CAPABILITY, WORLD_LAYOUT_CAPABILITY, + FRIENDS_CAPABILITY, + MOVEMENT_RECONCILIATION_CAPABILITY, + FISHING_REPLICATION_CAPABILITY, "chat_v1", "mail_v1", "profile_v1", diff --git a/network/network_sale_service.gd b/network/network_sale_service.gd index 38af917..a80f221 100644 --- a/network/network_sale_service.gd +++ b/network/network_sale_service.gd @@ -14,6 +14,7 @@ const PlayerBagType = preload("res://inventory/player_bag.gd") const ItemResalePolicyType = preload("res://economy/item_resale_policy.gd") const MAX_LEDGER_ENTRIES_PER_PEER: int = 64 +const LOCAL_REQUEST_RETRY_SECONDS: float = 2.0 const PELICAN_BUYER_ID: StringName = &"pelicans" const MAIN_SHOP_BUYER_ID: StringName = &"main_fishing_shop" @@ -45,6 +46,8 @@ var _acknowledged_results: Dictionary[String, bool] = {} var _applied_results: Dictionary[String, bool] = {} var _received_results: Dictionary[String, bool] = {} var _pending_local_request_id: String = "" +var _pending_local_request: Dictionary = {} +var _local_request_retry_elapsed: float = 0.0 var _pending_local_catch_ids: Array[StringName] = [] var _pending_local_items: Array[Dictionary] = [] var _pending_local_buyer_id: StringName @@ -52,6 +55,25 @@ var _reservations: PlayerAssetReservationService var _inventory_layout: PlayerInventoryLayout +func _process(delta: float) -> void: + if ( + _pending_local_request.is_empty() + or _session == null + or not _session.is_joined_client() + ): + _local_request_retry_elapsed = 0.0 + return + _local_request_retry_elapsed += delta + if _local_request_retry_elapsed < LOCAL_REQUEST_RETRY_SECONDS: + return + _local_request_retry_elapsed = 0.0 + # The request ID is stable and the host ledger is idempotent, so an + # application-level retry cannot apply a sale twice. This covers the narrow + # transition where a generated client has authenticated but is only just + # resuming regular multiplayer polling. + submit_sale_request.rpc_id(1, _pending_local_request) + + func setup( session: NetworkSession, spawn_service: PlayerSpawnService, @@ -208,6 +230,8 @@ func request_local_mixed_sale( "items": item_evidence, } _pending_local_request_id = request_id + _pending_local_request = request.duplicate(true) + _local_request_retry_elapsed = 0.0 _pending_local_catch_ids = catch_ids.duplicate() _pending_local_items = item_evidence.duplicate(true) _pending_local_buyer_id = buyer.id @@ -595,6 +619,8 @@ func _finish_local_sale( payout: int, ) -> void: _pending_local_request_id = "" + _pending_local_request.clear() + _local_request_retry_elapsed = 0.0 _pending_local_catch_ids.clear() _pending_local_items.clear() _pending_local_buyer_id = StringName() @@ -730,6 +756,8 @@ func _clear_session_state() -> void: _applied_results.clear() _received_results.clear() _pending_local_request_id = "" + _pending_local_request.clear() + _local_request_retry_elapsed = 0.0 _pending_local_catch_ids.clear() _pending_local_items.clear() _pending_local_buyer_id = StringName() diff --git a/network/network_session.gd b/network/network_session.gd index 4d38629..11217d7 100644 --- a/network/network_session.gd +++ b/network/network_session.gd @@ -7,13 +7,50 @@ const DEFAULT_SESSION_MAX_PLAYERS: int = 8 const DEFAULT_TRANSPORT_MAX_CLIENTS: int = 31 const CONNECTION_TIMEOUT_SECONDS: float = 10.0 const AUTHENTICATION_TIMEOUT_SECONDS: float = 60.0 +const ENET_TIMEOUT_LIMIT: int = 32 +const ENET_TIMEOUT_MINIMUM_MS: int = 10000 +const ENET_TIMEOUT_MAXIMUM_MS: int = 120000 const INPUT_INTERVAL: float = 1.0 / 30.0 +const IDLE_INPUT_INTERVAL: float = 1.0 / 5.0 const SNAPSHOT_INTERVAL: float = 1.0 / 30.0 +const NEAR_REMOTE_SNAPSHOT_DIVISOR: int = 2 +const FAR_REMOTE_SNAPSHOT_DIVISOR: int = 6 +const DISTANT_REMOTE_SNAPSHOT_DIVISOR: int = 8 +const NEAR_REMOTE_DISTANCE: float = 48.0 +const FAR_REMOTE_DISTANCE: float = 96.0 const MOVEMENT_SNAPSHOT_BATCH_SIZE: int = 8 -const MOVEMENT_SNAPSHOT_FIELD_COUNT: int = 13 +const MOVEMENT_INPUT_FIELD_COUNT: int = 8 +const MOVEMENT_SNAPSHOT_FIELD_COUNT: int = 6 +const MOVEMENT_ANIMATION_FIELD_COUNT: int = 7 +const MOVEMENT_ANIMATION_ACTION_FIELD_COUNT: int = 5 +const MAX_PENDING_MOVEMENT_INPUTS: int = 96 +const ANIMATION_REFRESH_INTERVAL: float = 1.0 const MAX_MOVEMENT_INPUT_SEQUENCE: int = 2147483647 const MAX_MOVEMENT_ONE_WAY_TRANSIT_SECONDS: float = 0.25 +const MOVEMENT_FLAG_JUMP: int = 1 << 0 +const MOVEMENT_FLAG_SPRINT: int = 1 << 1 +const MOVEMENT_FLAG_SNEAK: int = 1 << 2 +const MOVEMENT_FLAG_SLOW_WALK: int = 1 << 3 +const MOVEMENT_FLAG_SITTING: int = 1 << 4 +const MOVEMENT_FLAG_CASTING: int = 1 << 5 +const MOVEMENT_ALLOWED_FLAGS: int = ( + MOVEMENT_FLAG_JUMP + | MOVEMENT_FLAG_SPRINT + | MOVEMENT_FLAG_SNEAK + | MOVEMENT_FLAG_SLOW_WALK + | MOVEMENT_FLAG_SITTING + | MOVEMENT_FLAG_CASTING +) +const SNAPSHOT_FLAG_GROUNDED: int = 1 << 0 +const SNAPSHOT_FLAG_SITTING: int = 1 << 1 +const SNAPSHOT_FLAG_CASTING: int = 1 << 2 +const SNAPSHOT_ALLOWED_FLAGS: int = ( + SNAPSHOT_FLAG_GROUNDED + | SNAPSHOT_FLAG_SITTING + | SNAPSHOT_FLAG_CASTING +) + signal state_changed(state: State) signal status_message_changed(message: String) signal connection_error(message: String) @@ -80,7 +117,21 @@ var _client_nonce: String = "" var _current_route: ConnectionRoute var _input_sequence: int = 0 var _input_accumulator: float = 0.0 +var _idle_input_accumulator: float = 0.0 +var _last_input_state_hash: int = 0 +var _pending_movement_inputs: Array[Dictionary] = [] var _snapshot_accumulator: float = 0.0 +var _movement_snapshot_tick: int = 0 +var _animation_refresh_accumulator: float = 0.0 +var _last_animation_state_by_peer: Dictionary[int, Dictionary] = {} +var _pending_animation_state_by_peer: Dictionary[int, Dictionary] = {} +var _last_local_animation_action_signature: Array = [] +var _movement_inputs_sent: int = 0 +var _movement_inputs_received: int = 0 +var _movement_snapshot_packets_sent: int = 0 +var _movement_snapshot_states_sent: int = 0 +var _movement_animation_packets_sent: int = 0 +var _movement_animation_states_sent: int = 0 var _last_server_max_players: int = DEFAULT_SESSION_MAX_PLAYERS var _last_server_player_count: int = 0 var _last_server_display_name: String = "" @@ -278,6 +329,9 @@ func _register_player_host() -> void: NetworkProtocol.BACKPACK_SHOP_CAPABILITY, NetworkProtocol.WORLD_GENERATION_CAPABILITY, NetworkProtocol.WORLD_LAYOUT_CAPABILITY, + NetworkProtocol.FRIENDS_CAPABILITY, + NetworkProtocol.MOVEMENT_RECONCILIATION_CAPABILITY, + NetworkProtocol.FISHING_REPLICATION_CAPABILITY, ]), ) _registry.update_appearance(1, _local_appearance_snapshot) @@ -602,6 +656,9 @@ func supports_server_capability(capability: StringName) -> bool: NetworkProtocol.APPEARANCE_PREVIEW_CAPABILITY, NetworkProtocol.WORLD_GENERATION_CAPABILITY, NetworkProtocol.WORLD_LAYOUT_CAPABILITY, + NetworkProtocol.FRIENDS_CAPABILITY, + NetworkProtocol.MOVEMENT_RECONCILIATION_CAPABILITY, + NetworkProtocol.FISHING_REPLICATION_CAPABILITY, "chat_v1", "mail_v1", "profile_v1", @@ -649,6 +706,18 @@ func get_peer_rtt_ms(peer_id: int) -> int: return int(packet_peer.get_statistic(ENetPacketPeer.PEER_ROUND_TRIP_TIME)) +func get_movement_metrics() -> Dictionary: + return { + "inputs_sent": _movement_inputs_sent, + "inputs_received": _movement_inputs_received, + "snapshot_packets_sent": _movement_snapshot_packets_sent, + "snapshot_states_sent": _movement_snapshot_states_sent, + "animation_packets_sent": _movement_animation_packets_sent, + "animation_states_sent": _movement_animation_states_sent, + "pending_local_inputs": _pending_movement_inputs.size(), + } + + func kick_authenticated_peer( peer_id: int, fingerprint: String, @@ -813,6 +882,10 @@ func get_local_peer_id() -> int: return multiplayer.get_unique_id() if is_gameplay_session_active() else 0 +func get_latest_movement_input_sequence() -> int: + return _input_sequence if state == State.JOINED_CLIENT else 0 + + func _process(delta: float) -> void: var now: float = Time.get_ticks_msec() / 1000.0 if ( @@ -833,9 +906,13 @@ func _process(delta: float) -> void: return _input_accumulator += delta _snapshot_accumulator += delta + _animation_refresh_accumulator += delta if state == State.JOINED_CLIENT and _input_accumulator >= INPUT_INTERVAL: + var elapsed_input_time: float = _input_accumulator _input_accumulator = fmod(_input_accumulator, INPUT_INTERVAL) - _send_local_input() + _idle_input_accumulator += elapsed_input_time + _maybe_send_local_animation_action() + _maybe_send_local_input() if is_host() and _snapshot_accumulator >= SNAPSHOT_INTERVAL: _snapshot_accumulator = fmod(_snapshot_accumulator, SNAPSHOT_INTERVAL) _broadcast_movement_snapshots() @@ -873,6 +950,7 @@ func _on_peer_connected(peer_id: int) -> void: if state != State.OPEN_HOST: multiplayer.multiplayer_peer.disconnect_peer(peer_id) return + _configure_enet_peer_timeout(peer_id) _pending_authentication[peer_id] = ( Time.get_ticks_msec() / 1000.0 + AUTHENTICATION_TIMEOUT_SECONDS ) @@ -881,6 +959,7 @@ func _on_peer_connected(peer_id: int) -> void: func _on_connected_to_server() -> void: if state != State.CONNECTING: return + _configure_enet_peer_timeout(1) _set_state(State.AUTHENTICATING, "Authenticating...") _client_nonce = NetworkIdentityCrypto.secure_id(32) _client_identity_attempt = NetworkProtocol.make_identity_hello( @@ -892,6 +971,24 @@ func _on_connected_to_server() -> void: submit_identity_hello.rpc_id(1, _client_identity_attempt) +func _configure_enet_peer_timeout(peer_id: int) -> void: + var enet := multiplayer.multiplayer_peer as ENetMultiplayerPeer + if enet == null: + return + var packet_peer: ENetPacketPeer = enet.get_peer(peer_id) + if packet_peer == null: + return + # A deterministic generated world can temporarily occupy the client's main + # thread during the authenticated join transition. Keep that bounded load + # from looking like a dead connection while retaining normal ENet liveness + # checks once the client resumes polling. + packet_peer.set_timeout( + ENET_TIMEOUT_LIMIT, + ENET_TIMEOUT_MINIMUM_MS, + ENET_TIMEOUT_MAXIMUM_MS, + ) + + func _on_connection_failed() -> void: if state not in [ State.CONNECTING, @@ -931,6 +1028,8 @@ func _on_peer_disconnected(peer_id: int) -> void: _pending_identity_challenges.erase(peer_id) _authenticated_identity_cache.erase(peer_id) _operator_peer_ids.erase(peer_id) + _last_animation_state_by_peer.erase(peer_id) + _pending_animation_state_by_peer.erase(peer_id) var recovery_attempt: String = _recovery_attempts.get(peer_id, "") if not recovery_attempt.is_empty(): _recovery_attempts.erase(peer_id) @@ -1209,6 +1308,16 @@ func submit_client_hello(data: Dictionary) -> void: NetworkProtocol.RejectionCode.UNSUPPORTED_CLIENT, ) return + for required_capability: String in [ + NetworkProtocol.MOVEMENT_RECONCILIATION_CAPABILITY, + NetworkProtocol.FISHING_REPLICATION_CAPABILITY, + ]: + if required_capability not in client_capabilities: + _reject_peer( + sender_id, + NetworkProtocol.RejectionCode.UNSUPPORTED_CLIENT, + ) + return if ( _host_world_layout == WorldLayout.STARTER_ISLAND and NetworkProtocol.WORLD_LAYOUT_CAPABILITY not in client_capabilities @@ -1432,6 +1541,14 @@ func receive_server_hello(data: Dictionary) -> void: _teardown_peer() _fail("This server does not support generated worlds.") return + for required_capability: String in [ + NetworkProtocol.MOVEMENT_RECONCILIATION_CAPABILITY, + NetworkProtocol.FISHING_REPLICATION_CAPABILITY, + ]: + if required_capability not in _server_capabilities: + _teardown_peer() + _fail("This server is missing required network capabilities.") + return if ( received_world_layout == WorldLayout.STARTER_ISLAND and NetworkProtocol.WORLD_LAYOUT_CAPABILITY not in _server_capabilities @@ -1456,6 +1573,9 @@ func receive_server_hello(data: Dictionary) -> void: NetworkProtocol.BACKPACK_SHOP_CAPABILITY, NetworkProtocol.WORLD_GENERATION_CAPABILITY, NetworkProtocol.WORLD_LAYOUT_CAPABILITY, + NetworkProtocol.FRIENDS_CAPABILITY, + NetworkProtocol.MOVEMENT_RECONCILIATION_CAPABILITY, + NetworkProtocol.FISHING_REPLICATION_CAPABILITY, ]), ) _registry.update_appearance(local_peer_id, _local_appearance_snapshot) @@ -1501,6 +1621,8 @@ func receive_peer_despawn(peer_id: int) -> void: if state != State.JOINED_CLIENT: return _operator_peer_ids.erase(peer_id) + _last_animation_state_by_peer.erase(peer_id) + _pending_animation_state_by_peer.erase(peer_id) _registry.remove_peer(peer_id) _spawn_service.remove_peer(peer_id) peer_removed.emit(peer_id) @@ -1542,6 +1664,10 @@ func _apply_spawn_entry(entry: Dictionary) -> void: or typeof(entry.get("display_name")) != TYPE_STRING or typeof(entry.get("position")) != TYPE_ARRAY or typeof(entry.get("yaw")) not in [TYPE_FLOAT, TYPE_INT] + or typeof(entry.get("sitting")) != TYPE_BOOL + or not NetworkPlayerAnimationProtocol.validate_state( + entry.get("animation_state") + ) ): return if not _verify_spawn_identity(entry): @@ -1557,6 +1683,7 @@ func _apply_spawn_entry(entry: Dictionary) -> void: ) own_snapshot["position"] = own_position own_snapshot["visual_yaw"] = float(entry["yaw"]) + own_snapshot["sitting"] = bool(entry["sitting"]) own_avatar.apply_network_teleport(own_snapshot) return var peer_was_added: bool = false @@ -1603,6 +1730,18 @@ func _apply_spawn_entry(entry: Dictionary) -> void: var record := _registry.get_peer(peer_id) if avatar != null and record != null: avatar.apply_appearance_snapshot(record.appearance_snapshot) + # Lifecycle and animation updates use separate reliable ENet channels. + # Include the current authoritative state in the spawn record so a peer + # joining during an action presents it immediately, regardless of which + # channel arrives first. + avatar.apply_network_animation_state(entry["animation_state"]) + avatar.apply_network_sitting_state(bool(entry["sitting"])) + var pending_animation: Dictionary = ( + _pending_animation_state_by_peer.get(peer_id, {}) + ) + if not pending_animation.is_empty(): + avatar.apply_network_animation_state(pending_animation) + _pending_animation_state_by_peer.erase(peer_id) if peer_was_added and record != null: peer_authenticated.emit(peer_id, record.display_name) @@ -1627,6 +1766,15 @@ func _make_spawn_entry( transform: Transform3D, ) -> Dictionary: var record: PeerRegistry.PeerRecord = _registry.get_peer(peer_id) + var avatar: Player = _spawn_service.get_avatar(peer_id) + var animation_state: Dictionary = ( + avatar.make_network_animation_state() + if avatar != null + else NetworkPlayerAnimationProtocol.make_state( + NetworkPlayerAnimationProtocol.LOCOMOTION_IDLE, + true, + ) + ) return { "peer_id": peer_id, "profile_id": record.profile_id if record != null else "", @@ -1637,6 +1785,12 @@ func _make_spawn_entry( transform.origin.z, ], "yaw": transform.basis.get_euler().y, + "sitting": ( + avatar.get_network_sitting_state() + if avatar != null + else false + ), + "animation_state": animation_state, "appearance": ( record.appearance_snapshot.duplicate(true) if record != null @@ -1862,14 +2016,69 @@ func _fail_identity(message: String) -> void: _fail(message) +func _maybe_send_local_input() -> void: + var peer_id: int = multiplayer.get_unique_id() + var avatar: Player = _spawn_service.get_avatar(peer_id) + if avatar == null: + return + var state_hash: int = avatar.get_network_input_state_hash() + var state_changed: bool = state_hash != _last_input_state_hash + if ( + avatar.has_active_network_input() + or state_changed + or _idle_input_accumulator >= IDLE_INPUT_INTERVAL + ): + _send_local_input() + _last_input_state_hash = state_hash + _idle_input_accumulator = 0.0 + + func _send_local_input() -> void: var peer_id: int = multiplayer.get_unique_id() var avatar: Player = _spawn_service.get_avatar(peer_id) if avatar == null: return - _input_sequence += 1 + _input_sequence = ( + 1 + if _input_sequence >= MAX_MOVEMENT_INPUT_SEQUENCE + else _input_sequence + 1 + ) var input: Dictionary = avatar.capture_network_input(_input_sequence) - submit_movement_input.rpc_id(1, input) + var encoded: Array = _encode_movement_input(input) + if encoded.is_empty(): + return + _pending_movement_inputs.append(input.duplicate(true)) + while _pending_movement_inputs.size() > MAX_PENDING_MOVEMENT_INPUTS: + _pending_movement_inputs.pop_front() + _movement_inputs_sent += 1 + submit_movement_input.rpc_id(1, encoded) + + +func _maybe_send_local_animation_action() -> void: + var peer_id: int = multiplayer.get_unique_id() + var avatar: Player = _spawn_service.get_avatar(peer_id) + if avatar == null: + return + var state: Dictionary = avatar.make_network_animation_state() + var action: Dictionary = state.get("action", {}) + if not NetworkPlayerAnimationProtocol.validate_action_state(action): + return + var signature: Array = [ + str(action["id"]), + int(action["sequence"]), + bool(action.get("paused", false)), + avatar.get_network_sitting_state(), + ] + if signature == _last_local_animation_action_signature: + return + var encoded: Array = _encode_movement_animation_action( + action, + avatar.get_network_sitting_state(), + ) + if encoded.is_empty(): + return + _last_local_animation_action_signature = signature + submit_movement_animation_action.rpc_id(1, encoded) func submit_neutral_local_movement() -> void: @@ -1879,17 +2088,112 @@ func submit_neutral_local_movement() -> void: @rpc("any_peer", "call_remote", "unreliable_ordered", 1) -func submit_movement_input(data: Dictionary) -> void: +func submit_movement_input(encoded: Array) -> void: var sender_id: int = multiplayer.get_remote_sender_id() if not is_host() or not _registry.has_peer(sender_id): return var avatar: Player = _spawn_service.get_avatar(sender_id) - if avatar == null or not _is_valid_movement_input(data): + var data: Dictionary = _decode_movement_input(encoded) + if avatar == null or data.is_empty(): return - avatar.apply_authoritative_network_input(data) + _movement_inputs_received += 1 + avatar.apply_authoritative_network_input( + data, + Player.resolve_network_input_stale_timeout_seconds( + get_peer_rtt_ms(sender_id) + ), + ) -func _is_valid_movement_input(data: Dictionary) -> bool: +@rpc( + "any_peer", + "call_remote", + "reliable", + NetworkProtocol.MOVEMENT_ANIMATION_CHANNEL, +) +func submit_movement_animation_action(encoded: Array) -> void: + var sender_id: int = multiplayer.get_remote_sender_id() + if not is_host() or not _registry.has_peer(sender_id): + return + var avatar: Player = _spawn_service.get_avatar(sender_id) + var state: Dictionary = _decode_movement_animation_action(encoded) + if avatar == null or state.is_empty(): + return + avatar.apply_authoritative_network_animation_action(state["action"]) + avatar.apply_authoritative_network_sitting_state(bool(state["sitting"])) + + +static func _encode_movement_input(data: Dictionary) -> Array: + if not _is_valid_movement_input(data): + return [] + var axis: Array = data["axis"] + var flags: int = 0 + if bool(data["jump"]): + flags |= MOVEMENT_FLAG_JUMP + if bool(data["sprint"]): + flags |= MOVEMENT_FLAG_SPRINT + if bool(data["sneak"]): + flags |= MOVEMENT_FLAG_SNEAK + if bool(data["slow_walk"]): + flags |= MOVEMENT_FLAG_SLOW_WALK + if bool(data["sitting"]): + flags |= MOVEMENT_FLAG_SITTING + if bool(data["casting"]): + flags |= MOVEMENT_FLAG_CASTING + var action: Dictionary = data["animation_action"] + return [ + int(data["sequence"]), + Vector2(float(axis[0]), float(axis[1])), + float(data["camera_yaw"]), + flags, + str(action["id"]), + int(action["sequence"]), + float(action["elapsed"]), + bool(action.get("paused", false)), + ] + + +static func _decode_movement_input(value: Variant) -> Dictionary: + if typeof(value) != TYPE_ARRAY: + return {} + var fields: Array = value + if ( + fields.size() != MOVEMENT_INPUT_FIELD_COUNT + or typeof(fields[0]) != TYPE_INT + or typeof(fields[1]) != TYPE_VECTOR2 + or typeof(fields[2]) not in [TYPE_FLOAT, TYPE_INT] + or typeof(fields[3]) != TYPE_INT + or typeof(fields[4]) not in [TYPE_STRING, TYPE_STRING_NAME] + or typeof(fields[5]) != TYPE_INT + or typeof(fields[6]) not in [TYPE_FLOAT, TYPE_INT] + or typeof(fields[7]) != TYPE_BOOL + ): + return {} + var axis: Vector2 = fields[1] + var flags: int = int(fields[3]) + if flags < 0 or flags & ~MOVEMENT_ALLOWED_FLAGS != 0: + return {} + var decoded: Dictionary = { + "sequence": int(fields[0]), + "axis": [axis.x, axis.y], + "camera_yaw": float(fields[2]), + "jump": bool(flags & MOVEMENT_FLAG_JUMP), + "sprint": bool(flags & MOVEMENT_FLAG_SPRINT), + "sneak": bool(flags & MOVEMENT_FLAG_SNEAK), + "slow_walk": bool(flags & MOVEMENT_FLAG_SLOW_WALK), + "sitting": bool(flags & MOVEMENT_FLAG_SITTING), + "casting": bool(flags & MOVEMENT_FLAG_CASTING), + "animation_action": NetworkPlayerAnimationProtocol.make_action_state( + StringName(str(fields[4])), + int(fields[5]), + float(fields[6]), + bool(fields[7]), + ), + } + return decoded if _is_valid_movement_input(decoded) else {} + + +static func _is_valid_movement_input(data: Dictionary) -> bool: if ( typeof(data.get("sequence")) != TYPE_INT or typeof(data.get("axis")) != TYPE_ARRAY @@ -1929,49 +2233,142 @@ func _is_valid_movement_input(data: Dictionary) -> bool: func _broadcast_movement_snapshots() -> void: - var snapshots: Array = [] - for peer_id: int in _registry.get_peer_ids(): - var avatar: Player = _spawn_service.get_avatar(peer_id) - if avatar == null: + _movement_snapshot_tick += 1 + var peer_ids: Array[int] = _registry.get_peer_ids() + for recipient_id: int in peer_ids: + # Peer 1 is the local listen-server player. Dedicated servers do not + # register a peer 1, so every remaining record is a remote recipient. + if recipient_id == 1: continue - var encoded: Array = _encode_movement_snapshot( - avatar.make_network_snapshot(peer_id) - ) - if not encoded.is_empty(): - snapshots.append(encoded) - # The compact v5 representation keeps a normal eight-player update near - # 1 KiB instead of the roughly 3.7 KiB dictionary representation. Rooms - # configured above the normal cap are divided into the same safe size. + var recipient_avatar: Player = _spawn_service.get_avatar(recipient_id) + if recipient_avatar == null: + continue + var snapshots: Array = [] + for subject_id: int in peer_ids: + var subject_avatar: Player = _spawn_service.get_avatar(subject_id) + if subject_avatar == null: + continue + if ( + subject_id != recipient_id + and not _should_send_remote_snapshot( + recipient_avatar.global_position, + subject_avatar.global_position, + ) + ): + continue + var encoded: Array = _encode_movement_snapshot( + subject_avatar.make_network_snapshot(subject_id) + ) + if not encoded.is_empty(): + snapshots.append(encoded) + _send_movement_snapshot_batches(recipient_id, snapshots) + _broadcast_movement_animation_updates(peer_ids) + + +func _should_send_remote_snapshot( + recipient_position: Vector3, + subject_position: Vector3, +) -> bool: + var distance_squared: float = recipient_position.distance_squared_to( + subject_position + ) + var divisor: int = DISTANT_REMOTE_SNAPSHOT_DIVISOR + if distance_squared <= NEAR_REMOTE_DISTANCE * NEAR_REMOTE_DISTANCE: + divisor = NEAR_REMOTE_SNAPSHOT_DIVISOR + elif distance_squared <= FAR_REMOTE_DISTANCE * FAR_REMOTE_DISTANCE: + divisor = FAR_REMOTE_SNAPSHOT_DIVISOR + return _movement_snapshot_tick % divisor == 0 + + +func _send_movement_snapshot_batches( + recipient_id: int, + snapshots: Array, +) -> void: for start_index: int in range( 0, snapshots.size(), MOVEMENT_SNAPSHOT_BATCH_SIZE, ): - receive_movement_snapshots.rpc( - snapshots.slice( - start_index, - mini( - start_index + MOVEMENT_SNAPSHOT_BATCH_SIZE, - snapshots.size(), - ), - ) + var batch: Array = snapshots.slice( + start_index, + mini( + start_index + MOVEMENT_SNAPSHOT_BATCH_SIZE, + snapshots.size(), + ), ) + receive_movement_snapshots.rpc_id(recipient_id, batch) + _movement_snapshot_packets_sent += 1 + _movement_snapshot_states_sent += batch.size() + + +func _broadcast_movement_animation_updates(peer_ids: Array[int]) -> void: + var refresh_all: bool = ( + _animation_refresh_accumulator >= ANIMATION_REFRESH_INTERVAL + ) + if refresh_all: + _animation_refresh_accumulator = fmod( + _animation_refresh_accumulator, + ANIMATION_REFRESH_INTERVAL, + ) + var updates: Array = [] + for subject_id: int in peer_ids: + var avatar: Player = _spawn_service.get_avatar(subject_id) + if avatar == null: + continue + var state: Dictionary = avatar.make_network_animation_state() + var previous: Dictionary = _last_animation_state_by_peer.get( + subject_id, {} + ) + if ( + not refresh_all + and _movement_animation_signature(state) + == _movement_animation_signature(previous) + ): + continue + _last_animation_state_by_peer[subject_id] = state.duplicate(true) + var encoded: Array = _encode_movement_animation(subject_id, state) + if not encoded.is_empty(): + updates.append(encoded) + if updates.is_empty(): + return + for recipient_id: int in peer_ids: + if recipient_id == 1: + continue + receive_movement_animations.rpc_id(recipient_id, updates) + _movement_animation_packets_sent += 1 + _movement_animation_states_sent += updates.size() + + +static func _movement_animation_signature(state: Dictionary) -> Array: + if not NetworkPlayerAnimationProtocol.validate_state(state): + return [] + var action: Dictionary = state["action"] + return [ + str(state["locomotion_id"]), + bool(state["grounded"]), + str(action["id"]), + int(action["sequence"]), + bool(action.get("paused", false)), + ] static func _encode_movement_snapshot(snapshot: Dictionary) -> Array: var position: Variant = snapshot.get("position") var snapshot_velocity: Variant = snapshot.get("velocity") - var animation_value: Variant = snapshot.get("animation_state") if ( typeof(position) != TYPE_ARRAY or position.size() != 3 or typeof(snapshot_velocity) != TYPE_ARRAY or snapshot_velocity.size() != 3 - or not NetworkPlayerAnimationProtocol.validate_state(animation_value) ): return [] - var animation: Dictionary = animation_value - var action: Dictionary = animation["action"] + var flags: int = 0 + if bool(snapshot.get("grounded", false)): + flags |= SNAPSHOT_FLAG_GROUNDED + if bool(snapshot.get("sitting", false)): + flags |= SNAPSHOT_FLAG_SITTING + if bool(snapshot.get("casting", false)): + flags |= SNAPSHOT_FLAG_CASTING return [ int(snapshot.get("peer_id", 0)), int(snapshot.get("acknowledged_input", 0)), @@ -1982,14 +2379,7 @@ static func _encode_movement_snapshot(snapshot: Dictionary) -> Array: float(snapshot_velocity[2]), ), float(snapshot.get("visual_yaw", 0.0)), - str(animation["locomotion_id"]), - bool(animation["grounded"]), - str(action["id"]), - int(action["sequence"]), - float(action["elapsed"]), - bool(action.get("paused", false)), - bool(snapshot.get("sitting", false)), - bool(snapshot.get("casting", false)), + flags, ] @@ -2004,18 +2394,22 @@ static func _decode_movement_snapshot(value: Variant) -> Dictionary: or typeof(fields[2]) != TYPE_VECTOR3 or typeof(fields[3]) != TYPE_VECTOR3 or typeof(fields[4]) not in [TYPE_FLOAT, TYPE_INT] - or typeof(fields[5]) not in [TYPE_STRING, TYPE_STRING_NAME] - or typeof(fields[6]) != TYPE_BOOL - or typeof(fields[7]) not in [TYPE_STRING, TYPE_STRING_NAME] - or typeof(fields[8]) != TYPE_INT - or typeof(fields[9]) not in [TYPE_FLOAT, TYPE_INT] - or typeof(fields[10]) != TYPE_BOOL - or typeof(fields[11]) != TYPE_BOOL - or typeof(fields[12]) != TYPE_BOOL + or typeof(fields[5]) != TYPE_INT ): return {} var position: Vector3 = fields[2] var snapshot_velocity: Vector3 = fields[3] + var flags: int = int(fields[5]) + if ( + int(fields[0]) <= 0 + or int(fields[1]) < 0 + or not position.is_finite() + or not snapshot_velocity.is_finite() + or not is_finite(float(fields[4])) + or flags < 0 + or flags & ~SNAPSHOT_ALLOWED_FLAGS != 0 + ): + return {} return { "peer_id": int(fields[0]), "acknowledged_input": int(fields[1]), @@ -2026,19 +2420,100 @@ static func _decode_movement_snapshot(value: Variant) -> Dictionary: snapshot_velocity.z, ], "visual_yaw": float(fields[4]), - "animation_state": NetworkPlayerAnimationProtocol.make_state( - StringName(str(fields[5])), - bool(fields[6]), - StringName(str(fields[7])), - int(fields[8]), - float(fields[9]), - bool(fields[10]), - ), - "sitting": bool(fields[11]), - "casting": bool(fields[12]), + "grounded": bool(flags & SNAPSHOT_FLAG_GROUNDED), + "sitting": bool(flags & SNAPSHOT_FLAG_SITTING), + "casting": bool(flags & SNAPSHOT_FLAG_CASTING), } +static func _encode_movement_animation( + peer_id: int, + state: Dictionary, +) -> Array: + if not NetworkPlayerAnimationProtocol.validate_state(state): + return [] + var action: Dictionary = state["action"] + return [ + peer_id, + str(state["locomotion_id"]), + bool(state["grounded"]), + str(action["id"]), + int(action["sequence"]), + float(action["elapsed"]), + bool(action.get("paused", false)), + ] + + +static func _decode_movement_animation(value: Variant) -> Dictionary: + if typeof(value) != TYPE_ARRAY: + return {} + var fields: Array = value + if ( + fields.size() != MOVEMENT_ANIMATION_FIELD_COUNT + or typeof(fields[0]) != TYPE_INT + or typeof(fields[1]) not in [TYPE_STRING, TYPE_STRING_NAME] + or typeof(fields[2]) != TYPE_BOOL + or typeof(fields[3]) not in [TYPE_STRING, TYPE_STRING_NAME] + or typeof(fields[4]) != TYPE_INT + or typeof(fields[5]) not in [TYPE_FLOAT, TYPE_INT] + or typeof(fields[6]) != TYPE_BOOL + ): + return {} + var state: Dictionary = NetworkPlayerAnimationProtocol.make_state( + StringName(str(fields[1])), + bool(fields[2]), + StringName(str(fields[3])), + int(fields[4]), + float(fields[5]), + bool(fields[6]), + ) + if ( + int(fields[0]) <= 0 + or not NetworkPlayerAnimationProtocol.validate_state(state) + ): + return {} + return {"peer_id": int(fields[0]), "state": state} + + +static func _encode_movement_animation_action( + action: Dictionary, + sitting: bool, +) -> Array: + if not NetworkPlayerAnimationProtocol.validate_action_state(action): + return [] + return [ + str(action["id"]), + int(action["sequence"]), + float(action["elapsed"]), + bool(action.get("paused", false)), + sitting, + ] + + +static func _decode_movement_animation_action(value: Variant) -> Dictionary: + if typeof(value) != TYPE_ARRAY: + return {} + var fields: Array = value + if ( + fields.size() != MOVEMENT_ANIMATION_ACTION_FIELD_COUNT + or typeof(fields[0]) not in [TYPE_STRING, TYPE_STRING_NAME] + or typeof(fields[1]) != TYPE_INT + or typeof(fields[2]) not in [TYPE_FLOAT, TYPE_INT] + or typeof(fields[3]) != TYPE_BOOL + or typeof(fields[4]) != TYPE_BOOL + ): + return {} + var action: Dictionary = NetworkPlayerAnimationProtocol.make_action_state( + StringName(str(fields[0])), + int(fields[1]), + float(fields[2]), + bool(fields[3]), + ) + if not NetworkPlayerAnimationProtocol.validate_action_state(action): + return {} + return {"action": action, "sitting": bool(fields[4])} + + @rpc("authority", "call_remote", "unreliable_ordered", 2) func receive_movement_snapshots(encoded_snapshots: Array) -> void: if state != State.JOINED_CLIENT: @@ -2058,11 +2533,13 @@ func receive_movement_snapshots(encoded_snapshots: Array) -> void: if avatar == null: continue if peer_id == local_peer_id: + _discard_acknowledged_movement_inputs( + int(snapshot.get("acknowledged_input", 0)) + ) avatar.apply_local_prediction_correction( snapshot, - _input_sequence, + _pending_movement_inputs, INPUT_INTERVAL, - estimated_transit_seconds, ) else: avatar.push_network_snapshot( @@ -2071,6 +2548,39 @@ func receive_movement_snapshots(encoded_snapshots: Array) -> void: ) +func _discard_acknowledged_movement_inputs(acknowledged_sequence: int) -> void: + while ( + not _pending_movement_inputs.is_empty() + and int(_pending_movement_inputs[0].get("sequence", 0)) + <= acknowledged_sequence + ): + _pending_movement_inputs.pop_front() + + +@rpc( + "authority", + "call_remote", + "reliable", + NetworkProtocol.MOVEMENT_ANIMATION_CHANNEL, +) +func receive_movement_animations(encoded_states: Array) -> void: + if state != State.JOINED_CLIENT: + return + for value: Variant in encoded_states: + var decoded: Dictionary = _decode_movement_animation(value) + if decoded.is_empty(): + continue + var avatar: Player = _spawn_service.get_avatar( + int(decoded["peer_id"]) + ) + if avatar == null: + _pending_animation_state_by_peer[int(decoded["peer_id"])] = ( + Dictionary(decoded["state"]).duplicate(true) + ) + continue + avatar.apply_network_animation_state(decoded["state"]) + + func _estimated_movement_transit_seconds() -> float: if state != State.JOINED_CLIENT: return -1.0 @@ -2346,7 +2856,15 @@ func _teardown_peer() -> void: _connection_deadline = 0.0 _input_sequence = 0 _input_accumulator = 0.0 + _idle_input_accumulator = 0.0 + _last_input_state_hash = 0 + _pending_movement_inputs.clear() _snapshot_accumulator = 0.0 + _movement_snapshot_tick = 0 + _animation_refresh_accumulator = 0.0 + _last_animation_state_by_peer.clear() + _pending_animation_state_by_peer.clear() + _last_local_animation_action_signature.clear() _server_capabilities = PackedStringArray() _server_identity_fingerprint = "" _server_identity_public_key = "" diff --git a/network/network_surface_drawing_service.gd b/network/network_surface_drawing_service.gd index 10348aa..4edc234 100644 --- a/network/network_surface_drawing_service.gd +++ b/network/network_surface_drawing_service.gd @@ -52,6 +52,7 @@ var _canvas_states: Dictionary[String, Dictionary] = {} var _canvas_nodes: Dictionary[String, SurfaceDrawingCanvas] = {} var _selected_canvas_id: String = "" var _hovered_canvas_id: String = "" +var _last_hovered_canvas_id: String = "" var _brush_preview: MultiMeshInstance3D var _brush_preview_multimesh: MultiMesh var _brush_preview_material: ShaderMaterial @@ -236,6 +237,7 @@ func activate( return _active = true _placing_grid = false + _last_hovered_canvas_id = "" _clear_stamp_mode() _eraser_mode = false _clear_armed_guide_action(false) @@ -267,6 +269,7 @@ func deactivate() -> void: _reset_stroke() _selected_canvas_id = "" _hovered_canvas_id = "" + _last_hovered_canvas_id = "" _aim_hit.clear() _hide_previews() _refresh_stencil_visibility() @@ -849,10 +852,22 @@ func select_saved_stamp(path: String) -> bool: func export_aimed_canvas() -> String: _update_aim() - if _hovered_canvas_id.is_empty(): + var canvas_id: String = ( + _hovered_canvas_id + if not _hovered_canvas_id.is_empty() + else _last_hovered_canvas_id + ) + var canvas: SurfaceDrawingCanvas = _canvas_nodes.get(canvas_id) + if ( + canvas_id.is_empty() + or canvas == null + or not is_instance_valid(canvas) + or canvas.is_hidden_by_relationship() + ): + _last_hovered_canvas_id = "" _emit_hud_state("aim at artwork before exporting") return "" - return export_canvas_png(_hovered_canvas_id) + return export_canvas_png(canvas_id) func export_canvas_png(canvas_id: String) -> String: @@ -1070,6 +1085,8 @@ func _update_aim() -> void: selected_layer = layer _selected_canvas_id = found_canvas_id _hovered_canvas_id = found_hovered_canvas_id + if not _hovered_canvas_id.is_empty(): + _last_hovered_canvas_id = _hovered_canvas_id if previous_canvas_id != _selected_canvas_id: _reset_stroke() _update_previews() @@ -2865,6 +2882,7 @@ func _clear_session_artwork_state() -> void: _canvas_sequence = 0 _selected_canvas_id = "" _hovered_canvas_id = "" + _last_hovered_canvas_id = "" _stroke_history_by_peer.clear() _cell_last_stroke.clear() _last_local_stroke_id = "" @@ -2900,6 +2918,8 @@ func _remove_canvas_state(canvas_id: String) -> void: _selected_canvas_id = "" if _hovered_canvas_id == canvas_id: _hovered_canvas_id = "" + if _last_hovered_canvas_id == canvas_id: + _last_hovered_canvas_id = "" func _emit_artwork_changed() -> void: diff --git a/network/network_transport.gd b/network/network_transport.gd index ce68172..5aed6ca 100644 --- a/network/network_transport.gd +++ b/network/network_transport.gd @@ -22,6 +22,25 @@ func connect_to_route(_route: ConnectionRoute) -> Error: func disconnect_transport() -> void: if _peer != null: + # Give ENet one poll cycle to emit its graceful disconnect packets before + # closing the socket. This keeps a host from retaining a departed player + # until the extended generated-world liveness timeout expires. + if ( + _peer is ENetMultiplayerPeer + and _peer.get_connection_status() + == MultiplayerPeer.CONNECTION_CONNECTED + ): + var enet_peer := _peer as ENetMultiplayerPeer + # A host explicitly notifies each still-live client before closing. + # Clients rely on ENetMultiplayerPeer.close(); their cached SceneTree + # peer list can briefly outlive the underlying ENet peer after a remote + # disconnect, making disconnect_peer() race and report an engine error. + if enet_peer.get_unique_id() == 1: + for peer_id: int in multiplayer.get_peers(): + if enet_peer.get_peer(peer_id) != null: + enet_peer.disconnect_peer(peer_id, false) + if enet_peer.host != null: + enet_peer.host.flush() _peer.close() _peer = null _route_description = "" diff --git a/network/network_world_spawn_protocol.gd b/network/network_world_spawn_protocol.gd index 4d0a55d..4bd15b0 100644 --- a/network/network_world_spawn_protocol.gd +++ b/network/network_world_spawn_protocol.gd @@ -3,8 +3,8 @@ extends RefCounted const CAPABILITY: StringName = &"world_spawn_envelope_v1" const ENVELOPE_VERSION: int = 1 -const RELIABLE_CHANNEL: int = NetworkProtocol.ITEM_RELIABLE_CHANNEL -const SNAPSHOT_CHANNEL: int = 4 +const RELIABLE_CHANNEL: int = NetworkProtocol.WORLD_SPAWN_RELIABLE_CHANNEL +const SNAPSHOT_CHANNEL: int = 15 const MAX_SESSION_ID_LENGTH: int = 96 const MAX_EVENT_ID_LENGTH: int = 48 const MAX_ENTITY_ID_LENGTH: int = 128 diff --git a/network/network_world_spawn_service.gd b/network/network_world_spawn_service.gd index db4afad..87814ee 100644 --- a/network/network_world_spawn_service.gd +++ b/network/network_world_spawn_service.gd @@ -16,7 +16,9 @@ const CalendarSeasonType = preload("res://world/calendar_season.gd") signal local_capture_received(fish_catch: FishCatch) signal local_interaction_finished(accepted: bool, message: String) -const SNAPSHOT_INTERVAL_SECONDS: float = 0.2 +const SIMULATION_INTERVAL_SECONDS: float = 1.0 / 15.0 +const SNAPSHOT_INTERVAL_SECONDS: float = 0.1 +const PLAYER_SPATIAL_CELL_SIZE: float = 8.0 const CAPACITY_RESPONSE_TIMEOUT_SECONDS: float = 3.0 const MAX_REQUEST_ID_LENGTH: int = 128 const MAX_LEDGER_ENTRIES: int = 96 @@ -49,8 +51,16 @@ var _pending_captures: Dictionary = {} var _received_results: Dictionary = {} var _showcase_deadlines: Dictionary = {} var _envelope_sequence: int = 0 +var _simulation_elapsed: float = 0.0 var _snapshot_elapsed: float = 0.0 var _population_session_id: String = "" +var _dirty_entity_ids: Dictionary[String, bool] = {} +var _moving_players_by_cell: Dictionary[Vector2i, Array] = {} +var _presentation_enabled: bool = true +var _spawn_events_sent: int = 0 +var _despawn_events_sent: int = 0 +var _snapshot_packets_sent: int = 0 +var _snapshot_states_sent: int = 0 var _rng := RandomNumberGenerator.new() @@ -68,6 +78,7 @@ func setup( save_manager: PlayerSaveManager, item_use: NetworkItemUseService, world_time: WorldTimeService = null, + presentation_enabled: bool = true, ) -> void: _session = session _spawn_service = spawn_service @@ -82,6 +93,7 @@ func setup( _save_manager = save_manager _item_use = item_use _world_time = world_time + _presentation_enabled = presentation_enabled _rng.randomize() _session.peer_authenticated.connect(_on_peer_authenticated) _session.peer_removed.connect(_on_peer_removed) @@ -136,6 +148,7 @@ func finish_local_interaction( "target_position": NetworkWorldSpawnProtocol.vector3_to_array( target_position ), + "movement_sequence": _session.get_latest_movement_input_sequence(), } if _session.is_host(): _handle_interaction_finish(_session.get_local_peer_id(), data) @@ -217,6 +230,13 @@ func get_entry_for_entity(entity_id: String) -> GatherableDataType: return state.get("data") as GatherableDataType +func refresh_world_context() -> void: + _clear_world() + _population_session_id = "" + if _session != null and _session.is_gameplay_session_active(): + _begin_population_if_ready.call_deferred() + + func _physics_process(delta: float) -> void: if ( _session == null @@ -225,11 +245,27 @@ func _physics_process(delta: float) -> void: ): return _begin_population_if_ready() + # There is no gameplay state to advance while a dedicated server has no + # spawned players. Pausing the roaming/respawn loop also prevents idle + # gatherables from producing a continuous stream of snapshots to nobody. + if _spawn_service == null or _spawn_service.get_peer_ids().is_empty(): + _simulation_elapsed = 0.0 + _snapshot_elapsed = 0.0 + return + _simulation_elapsed += delta + _snapshot_elapsed += delta + if _simulation_elapsed < SIMULATION_INTERVAL_SECONDS: + return + var simulation_delta: float = minf(_simulation_elapsed, 0.2) + _simulation_elapsed = fmod( + _simulation_elapsed, + SIMULATION_INTERVAL_SECONDS, + ) _update_pending_capture_timeouts() _update_respawns() _update_showcase_deadlines() - _update_host_entities(delta) - _snapshot_elapsed += delta + _rebuild_moving_player_spatial_index() + _update_host_entities(simulation_delta) if _snapshot_elapsed >= SNAPSHOT_INTERVAL_SECONDS: _snapshot_elapsed = fmod( _snapshot_elapsed, @@ -246,6 +282,7 @@ func _begin_population_if_ready() -> void: or _catalog == null or _world == null or _world_root == null + or not _world.is_world_ready() ): return var session_id: String = _session.get_session_id() @@ -273,7 +310,10 @@ func _cache_spawn_surface(entry: GatherableDataType) -> void: _world.get_gatherable_spawn_positions(entry.spawn_anchor_set_id) ) _spawn_anchor_positions[entry.type_id] = anchor_positions - if anchor_positions.is_empty(): + if ( + anchor_positions.is_empty() + and _world.get_world_layout() == WorldLayout.GENERATED + ): push_warning( "No gatherable spawn anchors were found for %s." % entry.type_id ) @@ -299,7 +339,10 @@ func _cache_spawn_surface(entry: GatherableDataType) -> void: _surface_triangles[entry.type_id] = triangles _surface_areas[entry.type_id] = areas _surface_total_areas[entry.type_id] = total_area - if triangles.is_empty(): + if ( + triangles.is_empty() + and _world.get_world_layout() == WorldLayout.GENERATED + ): push_warning( "No valid spawn surface was found for %s." % entry.type_id ) @@ -341,6 +384,7 @@ func _spawn_entity(entry: GatherableDataType) -> void: ) _apply_envelope(envelope) receive_world_envelope.rpc(envelope) + _spawn_events_sent += 1 func _update_host_entities(delta: float) -> void: @@ -392,6 +436,8 @@ func _update_host_entities(delta: float) -> void: minf(step / maxf(horizontal_delta.length(), 0.001), 1.0), ) state["yaw"] = atan2(-direction.x, -direction.z) + state["revision"] = int(state["revision"]) + 1 + _dirty_entity_ids[entity_id] = true state["position"] = position _entities[entity_id] = state if entry.can_be_scared() and _should_scare(entry, position, quality): @@ -405,6 +451,34 @@ func _should_scare( ) -> bool: var scare_radius: float = entry.get_scare_radius_for_quality(quality) var radius_squared: float = scare_radius * scare_radius + var center_cell := _player_spatial_cell(position) + var cell_radius: int = ceili(scare_radius / PLAYER_SPATIAL_CELL_SIZE) + for cell_x: int in range( + center_cell.x - cell_radius, + center_cell.x + cell_radius + 1, + ): + for cell_y: int in range( + center_cell.y - cell_radius, + center_cell.y + cell_radius + 1, + ): + for value: Variant in _moving_players_by_cell.get( + Vector2i(cell_x, cell_y), + [], + ): + var avatar := value as Player + if avatar == null: + continue + var player_delta := Vector2( + avatar.global_position.x - position.x, + avatar.global_position.z - position.z, + ) + if player_delta.length_squared() <= radius_squared: + return true + return false + + +func _rebuild_moving_player_spatial_index() -> void: + _moving_players_by_cell.clear() for peer_id: int in _spawn_service.get_peer_ids(): var avatar: Player = _spawn_service.get_avatar(peer_id) if ( @@ -413,13 +487,17 @@ func _should_scare( or avatar.is_sneaking() ): continue - var delta := Vector2( - avatar.global_position.x - position.x, - avatar.global_position.z - position.z, - ) - if delta.length_squared() <= radius_squared: - return true - return false + var cell: Vector2i = _player_spatial_cell(avatar.global_position) + var players: Array = _moving_players_by_cell.get(cell, []) + players.append(avatar) + _moving_players_by_cell[cell] = players + + +static func _player_spatial_cell(position: Vector3) -> Vector2i: + return Vector2i( + floori(position.x / PLAYER_SPATIAL_CELL_SIZE), + floori(position.z / PLAYER_SPATIAL_CELL_SIZE), + ) func _sample_surface_position( @@ -506,28 +584,69 @@ func _anchor_is_occupied(type_id: StringName, anchor: Vector3) -> bool: func _broadcast_entity_snapshots() -> void: - if _entities.is_empty(): + if _dirty_entity_ids.is_empty() or not _can_broadcast_snapshots(): return + var has_remote_recipients: bool = _has_authenticated_remote_peers() var snapshots: Array[Dictionary] = [] - for entity_id: String in _entities: - var state: Dictionary = _entities[entity_id] - state["revision"] = int(state["revision"]) + 1 - _entities[entity_id] = state - snapshots.append(_state_to_network(state)) - while not snapshots.is_empty(): + for entity_id: String in _dirty_entity_ids: + var state: Dictionary = _entities.get(entity_id, {}) + if not state.is_empty(): + snapshots.append(_state_to_network(state)) + _dirty_entity_ids.clear() + var maximum_chunk_size: int = ( + NetworkWorldSpawnProtocol.SNAPSHOT_ENTITIES_PER_ENVELOPE + ) + for start_index: int in range( + 0, + snapshots.size(), + maximum_chunk_size, + ): var chunk: Array[Dictionary] = [] - var chunk_size: int = mini( - NetworkWorldSpawnProtocol.SNAPSHOT_ENTITIES_PER_ENVELOPE, - snapshots.size(), - ) - for _index: int in chunk_size: - chunk.append(snapshots.pop_front()) + for value: Dictionary in snapshots.slice( + start_index, + mini(start_index + maximum_chunk_size, snapshots.size()), + ): + chunk.append(value) var envelope: Dictionary = _make_envelope( &"snapshot", {"entities": chunk}, ) _apply_envelope(envelope) + if not has_remote_recipients: + continue + # A peer-disconnected callback can resume validation/gameplay code and + # close the host while this physics update is still unwinding. Never send + # through the replacement OfflineMultiplayerPeer in that narrow window. + if not _can_broadcast_snapshots(): + return receive_world_snapshot_envelope.rpc(envelope) + _snapshot_packets_sent += 1 + _snapshot_states_sent += chunk.size() + + +func _has_authenticated_remote_peers() -> bool: + if _session == null: + return false + var local_peer_id: int = _session.get_local_peer_id() + for peer_id: int in _session.get_authenticated_peer_ids(): + if peer_id != local_peer_id: + return true + return false + + +func _can_broadcast_snapshots() -> bool: + if ( + _session == null + or not _session.is_host() + or not _session.is_gameplay_session_active() + ): + return false + var peer: MultiplayerPeer = multiplayer.multiplayer_peer + return ( + peer != null + and peer.get_connection_status() + == MultiplayerPeer.CONNECTION_CONNECTED + ) func _despawn_entity( @@ -541,6 +660,7 @@ func _despawn_entity( return var entry := state.get("data") as GatherableDataType _entities.erase(entity_id) + _dirty_entity_ids.erase(entity_id) var envelope: Dictionary = _make_envelope( &"despawn", { @@ -551,6 +671,7 @@ func _despawn_entity( ) _apply_envelope(envelope) receive_world_envelope.rpc(envelope) + _despawn_events_sent += 1 if schedule_respawn and entry != null: _respawns.append({ "type_id": entry.type_id, @@ -633,6 +754,7 @@ func _handle_interaction_finish(peer_id: int, data: Dictionary) -> void: var state: Dictionary = _entities.get(entity_id, {}) var entry := state.get("data") as GatherableDataType var avatar: Player = _spawn_service.get_avatar(peer_id) + var movement_sequence_value: Variant = data.get("movement_sequence", null) var error: String = "" if ( str(data.get("session_id", "")) != _session.get_session_id() @@ -640,6 +762,9 @@ func _handle_interaction_finish(peer_id: int, data: Dictionary) -> void: or request_id.length() > MAX_REQUEST_ID_LENGTH or str(charge.get("request_id", "")) != request_id or not target_position.is_finite() + or typeof(movement_sequence_value) != TYPE_INT + or int(movement_sequence_value) < 0 + or int(movement_sequence_value) > 2147483647 ): error = "The catch attempt was invalid." elif state.is_empty() or entry == null or bool(state.get("locked", false)): @@ -650,14 +775,28 @@ func _handle_interaction_finish(peer_id: int, data: Dictionary) -> void: error = "Equip the correct gathering tool." elif avatar == null: error = "The player is unavailable." - elif entry.requires_sneaking and not avatar.is_sneaking(): - error = "Sneak closer before using the tool." else: + var movement_state: Dictionary = ( + avatar.get_lag_compensated_movement_state( + int(movement_sequence_value) + ) + ) + if entry.requires_sneaking and not bool( + movement_state.get("sneaking", avatar.is_sneaking()) + ): + error = "Sneak closer before using the tool." + if not error.is_empty(): + _send_interaction_result(peer_id, request_id, false, error) + return var entity_position: Vector3 = state["position"] var target_distance: float = entity_position.distance_to(target_position) + var compensated_position: Vector3 = movement_state.get( + "position", + avatar.global_position, + ) var player_distance: float = Vector2( - avatar.global_position.x - entity_position.x, - avatar.global_position.z - entity_position.z, + compensated_position.x - entity_position.x, + compensated_position.z - entity_position.z, ).length() if target_distance > entry.capture_radius: error = "The gathering tool missed." @@ -903,7 +1042,7 @@ func _apply_capture_result(data: Dictionary) -> void: _local_collection, ) _local_inventory.add_catch(fish_catch) - _local_collection.mark_quality_discovered( + _local_collection.record_catch( fish_catch.fish_id, fish_catch.quality, ) @@ -1078,6 +1217,9 @@ func _apply_entity_state(value: Variant, immediate: bool) -> void: var position: Vector3 = NetworkWorldSpawnProtocol.array_to_vector3( state["position"] ) + if not _presentation_enabled: + _entity_revisions[entity_id] = revision + return var presentation := _presentations.get(entity_id) as WorldGatherableType if presentation == null or not is_instance_valid(presentation): presentation = WorldGatherableType.new() @@ -1127,6 +1269,8 @@ func _remove_presentation(entity_id: String, with_dust: bool) -> void: func _apply_showcase(payload: Dictionary) -> void: + if not _presentation_enabled: + return if ( typeof(payload.get("owner_peer_id")) != TYPE_INT or typeof(payload.get("visible")) != TYPE_BOOL @@ -1268,6 +1412,8 @@ func _clear_world() -> void: if presentation != null and is_instance_valid(presentation): presentation.queue_free() _entities.clear() + _dirty_entity_ids.clear() + _moving_players_by_cell.clear() _presentations.clear() _entity_revisions.clear() _surface_triangles.clear() @@ -1279,9 +1425,22 @@ func _clear_world() -> void: _charge_requests.clear() _pending_captures.clear() _showcase_deadlines.clear() + _simulation_elapsed = 0.0 _snapshot_elapsed = 0.0 +func get_network_metrics() -> Dictionary: + return { + "entities": _entities.size(), + "presentations": _presentations.size(), + "dirty_entities": _dirty_entity_ids.size(), + "spawn_events_sent": _spawn_events_sent, + "despawn_events_sent": _despawn_events_sent, + "snapshot_packets_sent": _snapshot_packets_sent, + "snapshot_states_sent": _snapshot_states_sent, + } + + func _bound(values: Dictionary) -> void: while values.size() > MAX_LEDGER_ENTRIES: values.erase(values.keys().front()) diff --git a/network/player_data_root.gd b/network/player_data_root.gd index 998e380..9416db3 100644 --- a/network/player_data_root.gd +++ b/network/player_data_root.gd @@ -189,6 +189,7 @@ func activate_process_root(path: String) -> bool: func path_for(store_owner: StringName) -> String: var relative: String = { &"player_save": "player/player_save.nfsave", + &"save_slots": "player/save_slots.json", &"network_profile": "player/network_profile.json", &"player_appearance": "player/player_appearance.json", &"saved_servers": "social/saved_servers.json", @@ -350,7 +351,7 @@ func _test_writable(path: String) -> bool: func _create_layout(path: String, id: String) -> bool: for relative: String in [ - "player", "social", "backups/saves", "backups/migrations", + "player", "player/saves", "social", "backups/saves", "backups/migrations", "backups/conflicts", "identity-backups", "progression-backups", ]: if DirAccess.make_dir_recursive_absolute(path.path_join(relative)) != OK: diff --git a/network/player_list_entry.gd b/network/player_list_entry.gd index 5aa9643..c75832a 100644 --- a/network/player_list_entry.gd +++ b/network/player_list_entry.gd @@ -12,6 +12,8 @@ var continuity_state := "" var ping_to_host_ms := -1 var muted := false var blocked := false +var is_friend := false +var can_request_friend := false var can_kick := false var can_ban := false var can_clear_art := false diff --git a/network/player_relationship_store.gd b/network/player_relationship_store.gd index 2ea4502..2452315 100644 --- a/network/player_relationship_store.gd +++ b/network/player_relationship_store.gd @@ -3,8 +3,12 @@ extends Node signal relationship_changed(fingerprint: String) -const FORMAT_VERSION := 1 +const FORMAT_VERSION := 2 const MAX_RECORDS := 500 +const MAX_FRIENDS := 200 +const SOCIAL_TOKEN_LENGTH := 64 +const PRESENCE_CHANNEL_DOMAIN := "NETFISHING_PRESENCE_V1:" +const INVITE_INBOX_DOMAIN := "NETFISHING_INVITE_V1:" var _records: Dictionary = {} var _loaded := false @@ -29,6 +33,11 @@ func is_blocked(fingerprint: String) -> bool: return bool(_records.get(fingerprint, {}).get("blocked", false)) +func is_friend(fingerprint: String) -> bool: + _ensure_loaded() + return bool(_records.get(fingerprint, {}).get("friend", false)) + + func set_muted(fingerprint: String, display_name: String, value: bool) -> bool: if not _valid_target(fingerprint, display_name): return false @@ -48,20 +57,101 @@ func set_blocked(fingerprint: String, display_name: String, value: bool) -> bool # fresh visibility boundary for future messages; already suppressed # messages retain their immutable local suppression flag. record["muted"] = value + if value: + _clear_friend_fields(record) return _commit(fingerprint, record) +func create_friend_capabilities() -> Dictionary: + var presence_write_token := NetworkIdentityCrypto.secure_id(32) + var invite_token := NetworkIdentityCrypto.secure_id(32) + if not _valid_social_token(presence_write_token) or not _valid_social_token(invite_token): + return {} + return { + "local_presence_write_token": presence_write_token, + "local_invite_token": invite_token, + "presence_channel": presence_channel_for_write_token( + presence_write_token + ), + "invite_token": invite_token, + } + + +func add_friend( + fingerprint: String, + display_name: String, + local_capabilities: Dictionary, + remote_capabilities: Dictionary, +) -> bool: + if ( + not _valid_target(fingerprint, display_name) + or is_blocked(fingerprint) + or not _valid_local_capabilities(local_capabilities) + or not _valid_public_capabilities(remote_capabilities) + ): + return false + _ensure_loaded() + if not is_friend(fingerprint) and get_friends().size() >= MAX_FRIENDS: + return false + var record := _record(fingerprint, display_name) + var now := int(Time.get_unix_time_from_system()) + record["friend"] = true + record["friend_since_unix"] = int(record.get("friend_since_unix", now)) + record["local_presence_write_token"] = str( + local_capabilities["local_presence_write_token"] + ) + record["local_invite_token"] = str( + local_capabilities["local_invite_token"] + ) + record["remote_presence_channel"] = str( + remote_capabilities["presence_channel"] + ) + record["remote_invite_token"] = str( + remote_capabilities["invite_token"] + ) + return _commit(fingerprint, record) + + +func remove_friend(fingerprint: String, display_name: String) -> bool: + if not _valid_target(fingerprint, display_name): + return false + _ensure_loaded() + var record := _record(fingerprint, display_name) + _clear_friend_fields(record) + return _commit(fingerprint, record) + + +func get_friend_record(fingerprint: String) -> Dictionary: + _ensure_loaded() + var record: Dictionary = _records.get(fingerprint, {}) + return record.duplicate(true) if bool(record.get("friend", false)) else {} + + +func get_friends() -> Array[Dictionary]: + _ensure_loaded() + var result: Array[Dictionary] = [] + for value: Dictionary in _records.values(): + if bool(value.get("friend", false)): + result.append(value.duplicate(true)) + _sort_records(result) + return result + + +static func presence_channel_for_write_token(write_token: String) -> String: + return (PRESENCE_CHANNEL_DOMAIN + write_token).sha256_text() + + +static func invite_inbox_id(invite_token: String) -> String: + return (INVITE_INBOX_DOMAIN + invite_token).sha256_text() + + func get_records() -> Array[Dictionary]: _ensure_loaded() var result: Array[Dictionary] = [] for value: Dictionary in _records.values(): if bool(value.get("muted", false)) or bool(value.get("blocked", false)): result.append(value.duplicate(true)) - result.sort_custom(func(a: Dictionary, b: Dictionary) -> bool: - return str(a.get("last_known_display_name", "")).naturalnocasecmp_to( - str(b.get("last_known_display_name", "")) - ) < 0 - ) + _sort_records(result) return result @@ -72,6 +162,7 @@ func _record(fingerprint: String, display_name: String) -> Dictionary: "created_unix": now, "muted": false, "blocked": false, + "friend": false, }) record["last_known_display_name"] = display_name record["updated_unix"] = now @@ -82,7 +173,11 @@ func _commit(fingerprint: String, record: Dictionary) -> bool: if _write_blocked: return false var previous: Dictionary = _records.duplicate(true) - if not bool(record["muted"]) and not bool(record["blocked"]): + if ( + not bool(record.get("muted", false)) + and not bool(record.get("blocked", false)) + and not bool(record.get("friend", false)) + ): _records.erase(fingerprint) else: _records[fingerprint] = record @@ -115,7 +210,8 @@ func _ensure_loaded() -> void: if json.parse(file.get_as_text()) != OK or typeof(json.data) != TYPE_DICTIONARY: return var data: Dictionary = json.data - if data.get("format_version") != FORMAT_VERSION: + var format_version: int = int(data.get("format_version", 0)) + if format_version not in [1, FORMAT_VERSION]: _write_blocked = true return for value: Variant in data.get("records", []): @@ -127,6 +223,13 @@ func _ensure_loaded() -> void: continue record["blocked"] = bool(record.get("blocked", false)) record["muted"] = bool(record.get("muted", false)) or record["blocked"] + record["friend"] = ( + bool(record.get("friend", false)) + and not record["blocked"] + and _valid_stored_friend_capabilities(record) + ) + if not record["friend"]: + _clear_friend_fields(record) _records[fingerprint] = record.duplicate(true) _expected_hash = PortableFileGuard.hash_file(_store_path) @@ -145,3 +248,69 @@ func _save() -> bool: if bool(result.get("ok", false)): _expected_hash = str(result["hash"]) return bool(result.get("ok", false)) + + +func _clear_friend_fields(record: Dictionary) -> void: + record["friend"] = false + for key: String in [ + "friend_since_unix", + "local_presence_write_token", + "local_invite_token", + "remote_presence_channel", + "remote_invite_token", + ]: + record.erase(key) + + +func _valid_local_capabilities(value: Dictionary) -> bool: + var write_token := str(value.get("local_presence_write_token", "")) + var invite_token := str(value.get("local_invite_token", "")) + return ( + _valid_social_token(write_token) + and _valid_social_token(invite_token) + and str(value.get("presence_channel", "")) + == presence_channel_for_write_token(write_token) + and str(value.get("invite_token", "")) == invite_token + ) + + +func _valid_public_capabilities(value: Dictionary) -> bool: + return ( + _valid_social_token(str(value.get("presence_channel", ""))) + and _valid_social_token(str(value.get("invite_token", ""))) + ) + + +func _valid_stored_friend_capabilities(record: Dictionary) -> bool: + var local: Dictionary = { + "local_presence_write_token": str( + record.get("local_presence_write_token", "") + ), + "local_invite_token": str(record.get("local_invite_token", "")), + "presence_channel": presence_channel_for_write_token(str( + record.get("local_presence_write_token", "") + )), + "invite_token": str(record.get("local_invite_token", "")), + } + var remote: Dictionary = { + "presence_channel": str(record.get("remote_presence_channel", "")), + "invite_token": str(record.get("remote_invite_token", "")), + } + return _valid_local_capabilities(local) and _valid_public_capabilities(remote) + + +func _valid_social_token(value: String) -> bool: + if value.length() != SOCIAL_TOKEN_LENGTH: + return false + for character: String in value: + if character not in "0123456789abcdef": + return false + return true + + +func _sort_records(records: Array[Dictionary]) -> void: + records.sort_custom(func(a: Dictionary, b: Dictionary) -> bool: + return str(a.get("last_known_display_name", "")).naturalnocasecmp_to( + str(b.get("last_known_display_name", "")) + ) < 0 + ) diff --git a/network/player_spawn_service.gd b/network/player_spawn_service.gd index 0b8179b..1d1c292 100644 --- a/network/player_spawn_service.gd +++ b/network/player_spawn_service.gd @@ -11,16 +11,19 @@ var _local_player: Player var _spawn_transform: Transform3D var _avatars: Dictionary[int, Player] = {} var _local_peer_id: int = 1 +var _dedicated_runtime: bool = false func setup( players_root: Node3D, local_player: Player, spawn_transform: Transform3D, + dedicated_runtime: bool = false, ) -> void: _players_root = players_root _local_player = local_player _spawn_transform = spawn_transform + _dedicated_runtime = dedicated_runtime func set_spawn_transform(spawn_transform: Transform3D) -> void: @@ -56,7 +59,10 @@ func spawn_remote_player( avatar.set_network_peer_id(peer_id) _players_root.add_child(avatar) avatar.global_transform = transform - avatar.configure_network_remote(authoritative_simulation) + avatar.configure_network_remote( + authoritative_simulation, + _dedicated_runtime and authoritative_simulation, + ) _avatars[peer_id] = avatar avatar_spawned.emit(peer_id, avatar) return avatar diff --git a/network/portable_data_migration.gd b/network/portable_data_migration.gd index a74db6d..430fba8 100644 --- a/network/portable_data_migration.gd +++ b/network/portable_data_migration.gd @@ -124,6 +124,7 @@ static func migrate_active_to( for relative: String in [ "player/player_save.nfsave", "player/player_save.json", + "player/save_slots.json", "player/network_profile.json", "player/player_appearance.json", "social/saved_servers.json", @@ -142,6 +143,16 @@ static func migrate_active_to( ): _remove_tree(staging) return {"ok": false, "message": "Migration validation failed for %s." % relative} + var source_slots: String = data_root.root_path.path_join("player/saves") + if ( + DirAccess.dir_exists_absolute(source_slots) + and not _copy_progression_slots( + source_slots, + staging.path_join("player/saves"), + ) + ): + _remove_tree(staging) + return {"ok": false, "message": "Migration validation failed for save slots."} if DirAccess.dir_exists_absolute(normalized): DirAccess.remove_absolute(normalized) if DirAccess.rename_absolute(staging, normalized) != OK: @@ -257,7 +268,7 @@ static func _copy_verified_owned_file( source: String, destination: String, ) -> Dictionary: - if source.get_file() != "player_save.nfsave": + if source.get_extension().to_lower() != "nfsave": return _copy_verified_json(source, destination) var decoded: Dictionary = ProgressionSaveCodec.read_local_save(source) if not bool(decoded.get("ok", false)): @@ -281,12 +292,42 @@ static func _valid_owned_data(filename: String, data: Dictionary) -> bool: if filename == "player_save.json": var version: int = int(data.get("save_version", -1)) return version >= 1 and version <= PlayerSaveManager.SAVE_VERSION + if filename == "save_slots.json": + return ( + int(data.get("format_version", -1)) == PlayerSaveSlotCatalog.FORMAT_VERSION + and typeof(data.get("active_slot_id")) == TYPE_STRING + and typeof(data.get("slots")) == TYPE_ARRAY + ) return ( filename not in LEGACY_FILES or int(data.get("format_version", -1)) == 1 ) +static func _copy_progression_slots(source: String, destination: String) -> bool: + if DirAccess.make_dir_recursive_absolute(destination) != OK: + return false + var access := DirAccess.open(source) + if access == null: + return false + access.list_dir_begin() + var filename: String = access.get_next() + while not filename.is_empty(): + if ( + not access.current_is_dir() + and filename.get_extension().to_lower() == "nfsave" + and not bool(_copy_verified_owned_file( + source.path_join(filename), + destination.path_join(filename), + ).get("ok", false)) + ): + access.list_dir_end() + return false + filename = access.get_next() + access.list_dir_end() + return true + + static func _copy_bytes(source: String, destination: String) -> bool: return _write_bytes(destination, PortableFileGuard.read_bytes(source)) diff --git a/player/player.gd b/player/player.gd index 6d237bf..6ec490f 100644 --- a/player/player.gd +++ b/player/player.gd @@ -139,6 +139,10 @@ const NETWORK_SNAPSHOT_JITTER_WEIGHT: float = 0.15 const NETWORK_REMOTE_SMOOTHING_RATE: float = 12.0 const NETWORK_REMOTE_JITTER_SMOOTHING_RATE: float = 6.0 const NETWORK_INPUT_STALE_TIMEOUT_SECONDS: float = 0.25 +const NETWORK_INPUT_STALE_TIMEOUT_MAX_SECONDS: float = 1.25 +const NETWORK_INPUT_STALE_RTT_MULTIPLIER: float = 1.5 +const NETWORK_MOVEMENT_HISTORY_SECONDS: float = 1.25 +const NETWORK_MAX_LAG_COMPENSATION_SECONDS: float = 0.75 const LOCAL_PREDICTION_EXTRAPOLATION_LIMIT_SECONDS: float = 0.25 const LOCAL_PREDICTION_FALLBACK_TRANSIT_RATIO: float = 0.5 const LOCAL_PREDICTION_CORRECTION_THRESHOLD: float = 0.12 @@ -417,6 +421,7 @@ class ShowcaseCameraSnapshot: @export var controller_camera_speed: float = 2.5 @export_range(0.0, 1.0, 0.01) var controller_camera_deadzone: float = 0.2 @export var invert_camera_y: bool = false +var _swap_hotbar_camera_scroll: bool = false @export_range(-89.0, 0.0, 0.5) var minimum_pitch_degrees: float = -65.0 @export_range(0.0, 89.0, 0.5) var maximum_pitch_degrees: float = 45.0 @export var minimum_zoom: float = 2.0 @@ -506,6 +511,9 @@ var _network_slow_walk: bool = false var _last_network_input_sequence: int = 0 var _network_input_age: float = 0.0 var _network_input_stale: bool = false +var _network_input_stale_timeout_seconds: float = ( + NETWORK_INPUT_STALE_TIMEOUT_SECONDS +) var _network_jump_intent_active: bool = false var _network_target_position: Vector3 var _network_target_velocity: Vector3 @@ -519,6 +527,9 @@ var _network_target_animation_action_paused: bool = false var _network_snapshot_ready: bool = false var _network_snapshot_age: float = 0.0 var _network_snapshot_jitter: float = 0.0 +var _network_simulation_only: bool = false +var _local_reconciliation_visual_offset: Vector3 = Vector3.ZERO +var _authoritative_movement_history: Array[Dictionary] = [] var _local_network_jump_intent_pending: bool = false var _local_network_jump_intent_sequence: int = -1 var _animation_action_id: StringName = &"" @@ -791,10 +802,16 @@ func _finish_successful_net_strike_pause() -> void: func _set_animation_action_paused(paused: bool) -> void: if _animation_action_id.is_empty() or _animation_action_paused == paused: return + var next_sequence: int = ( + 1 + if _animation_action_sequence + >= NetworkPlayerAnimationProtocol.MAX_ACTION_SEQUENCE + else _animation_action_sequence + 1 + ) _apply_animation_action_state( NetworkPlayerAnimationProtocol.make_action_state( _animation_action_id, - _animation_action_sequence, + next_sequence, _animation_action_elapsed, paused, ) @@ -972,6 +989,12 @@ func _physics_process(delta: float) -> void: if _network_interpolation_enabled: _update_network_interpolation(delta) return + _simulate_movement_physics(delta) + if _network_authoritative_simulation: + _record_authoritative_movement_state() + + +func _simulate_movement_physics(delta: float) -> void: if _network_authoritative_simulation: _update_network_input_freshness(delta) if local_control_enabled and _free_camera_active: @@ -1075,6 +1098,9 @@ func _physics_process(delta: float) -> void: func _process(delta: float) -> void: + if _network_simulation_only: + return + _update_local_reconciliation_visuals(delta) if not _animation_action_id.is_empty() and not _animation_action_paused: _animation_action_elapsed = minf( _animation_action_elapsed + delta, @@ -1607,6 +1633,23 @@ func is_sitting() -> bool: return _sitting +func get_network_sitting_state() -> bool: + return _sitting or _sit_after_landing + + +func apply_network_sitting_state(should_sit: bool) -> void: + _set_sitting(should_sit) + + +func apply_authoritative_network_sitting_state(should_sit: bool) -> void: + if should_sit and not is_on_floor(): + _sit_after_landing = true + _set_sitting(false) + return + _sit_after_landing = false + _set_sitting(should_sit) + + func _input(event: InputEvent) -> void: # Camera dragging must observe the complete mouse gesture before GUI controls # get a chance to consume one part of it. Do not claim the event here: the @@ -1648,7 +1691,7 @@ func _unhandled_input(event: InputEvent) -> void: var mouse_zoom_in: bool = ( event is InputEventMouseButton - and event.shift_pressed + and event.shift_pressed != _swap_hotbar_camera_scroll and event.is_action_pressed("camera_zoom_in") ) var controller_zoom_in: bool = ( @@ -1657,7 +1700,7 @@ func _unhandled_input(event: InputEvent) -> void: ) var mouse_zoom_out: bool = ( event is InputEventMouseButton - and event.shift_pressed + and event.shift_pressed != _swap_hotbar_camera_scroll and event.is_action_pressed("camera_zoom_out") ) var controller_zoom_out: bool = ( @@ -1878,10 +1921,14 @@ func get_network_peer_id() -> int: return _network_peer_id -func configure_network_remote(authoritative_simulation: bool) -> void: +func configure_network_remote( + authoritative_simulation: bool, + simulation_only: bool = false, +) -> void: set_local_control(false) _network_authoritative_simulation = authoritative_simulation _network_interpolation_enabled = not authoritative_simulation + set_network_simulation_only(simulation_only) _network_axis = Vector2.ZERO _network_jump_pending = false _network_sprint = false @@ -1889,6 +1936,7 @@ func configure_network_remote(authoritative_simulation: bool) -> void: _network_slow_walk = false _network_input_age = 0.0 _network_input_stale = false + _network_input_stale_timeout_seconds = NETWORK_INPUT_STALE_TIMEOUT_SECONDS _network_jump_intent_active = false _network_snapshot_ready = false _network_snapshot_age = 0.0 @@ -1900,10 +1948,43 @@ func configure_network_remote(authoritative_simulation: bool) -> void: _network_target_animation_action_elapsed = 0.0 _network_target_animation_action_paused = false _camera.current = false + _authoritative_movement_history.clear() + + +func set_network_simulation_only(enabled: bool) -> void: + _network_simulation_only = enabled + if not is_node_ready(): + return + set_process(not enabled) + for presentation_root: Node in [ + _visuals, + get_node_or_null("GroundShadow"), + get_node_or_null("SprintDust"), + _camera_yaw, + ]: + if presentation_root == null: + continue + presentation_root.process_mode = ( + Node.PROCESS_MODE_DISABLED + if enabled + else Node.PROCESS_MODE_INHERIT + ) + if presentation_root is Node3D: + (presentation_root as Node3D).visible = not enabled + + +func is_network_simulation_only() -> bool: + return _network_simulation_only func reset_network_movement_state() -> void: _clear_local_network_jump_intent() + if not _animation_action_id.is_empty(): + end_animation_action() + _sit_after_landing = false + _sitting_intent_pending = false + _sitting_intent_sequence = -1 + _set_sitting(false) _network_axis = Vector2.ZERO _network_jump_pending = false _network_sprint = false @@ -1911,6 +1992,7 @@ func reset_network_movement_state() -> void: _network_slow_walk = false _network_input_age = 0.0 _network_input_stale = false + _network_input_stale_timeout_seconds = NETWORK_INPUT_STALE_TIMEOUT_SECONDS _network_jump_intent_active = false _last_network_input_sequence = 0 @@ -1939,7 +2021,7 @@ func capture_network_input(sequence: int) -> Dictionary: "sprint": false, "sneak": false, "slow_walk": false, - "sitting": _sitting, + "sitting": get_network_sitting_state(), "casting": ( _fishing_visual_phase == FishingVisualPhase.CASTING ), @@ -1964,13 +2046,66 @@ func capture_network_input(sequence: int) -> Dictionary: "sprint": Input.is_action_pressed("sprint"), "sneak": Input.is_action_pressed("sneak"), "slow_walk": Input.is_action_pressed("slow_walk"), - "sitting": _sitting, + "sitting": get_network_sitting_state(), "casting": _fishing_visual_phase == FishingVisualPhase.CASTING, "animation_action": _make_animation_action_state(), } -func apply_authoritative_network_input(data: Dictionary) -> void: +func has_active_network_input() -> bool: + if not local_control_enabled: + return false + if _local_network_jump_intent_pending or _sitting_intent_pending: + return true + if not _is_movement_input_enabled() or _free_camera_active: + return false + return ( + not Input.get_vector( + "move_left", + "move_right", + "move_forward", + "move_backward", + ).is_zero_approx() + or Input.is_action_pressed("sprint") + or Input.is_action_pressed("sneak") + or Input.is_action_pressed("slow_walk") + or _fishing_visual_phase == FishingVisualPhase.CASTING + or not _animation_action_id.is_empty() + ) + + +func get_network_input_state_hash() -> int: + var axis: Vector2 = Vector2.ZERO + if ( + local_control_enabled + and _is_movement_input_enabled() + and not _free_camera_active + ): + axis = Input.get_vector( + "move_left", + "move_right", + "move_forward", + "move_backward", + ) + return hash([ + axis, + _camera_yaw.global_rotation.y, + _local_network_jump_intent_pending, + Input.is_action_pressed("sprint"), + Input.is_action_pressed("sneak"), + Input.is_action_pressed("slow_walk"), + get_network_sitting_state(), + _fishing_visual_phase == FishingVisualPhase.CASTING, + _animation_action_id, + _animation_action_sequence, + _animation_action_paused, + ]) + + +func apply_authoritative_network_input( + data: Dictionary, + stale_timeout_seconds: float = NETWORK_INPUT_STALE_TIMEOUT_SECONDS, +) -> void: var sequence: int = int(data.get("sequence", 0)) if sequence <= _last_network_input_sequence: return @@ -1980,6 +2115,11 @@ func apply_authoritative_network_input(data: Dictionary) -> void: _last_network_input_sequence = sequence _network_input_age = 0.0 _network_input_stale = false + _network_input_stale_timeout_seconds = clampf( + stale_timeout_seconds, + NETWORK_INPUT_STALE_TIMEOUT_SECONDS, + NETWORK_INPUT_STALE_TIMEOUT_MAX_SECONDS, + ) _network_axis = Vector2(float(axis[0]), float(axis[1])).limit_length(1.0) _network_camera_yaw = float(data.get("camera_yaw", 0.0)) var jump_intent_active: bool = bool(data.get("jump", false)) @@ -1989,15 +2129,13 @@ func apply_authoritative_network_input(data: Dictionary) -> void: _network_sprint = bool(data.get("sprint", false)) _network_sneak = bool(data.get("sneak", false)) _network_slow_walk = bool(data.get("slow_walk", false)) - _apply_animation_action_state(data.get("animation_action", {})) + apply_authoritative_network_animation_action( + data.get("animation_action", {}) + ) _apply_network_casting(bool(data.get("casting", false))) - var sitting_requested: bool = bool(data.get("sitting", false)) - if sitting_requested and not is_on_floor(): - _sit_after_landing = true - _set_sitting(false) - else: - _sit_after_landing = false - _set_sitting(sitting_requested) + apply_authoritative_network_sitting_state( + bool(data.get("sitting", false)) + ) func make_network_snapshot(peer_id: int) -> Dictionary: @@ -2007,19 +2145,49 @@ func make_network_snapshot(peer_id: int) -> Dictionary: "position": [global_position.x, global_position.y, global_position.z], "velocity": [velocity.x, velocity.y, velocity.z], "visual_yaw": _visuals.rotation.y, - "animation_state": NetworkPlayerAnimationProtocol.make_state( - _get_authoritative_locomotion_id(), - is_on_floor(), - _animation_action_id, - _animation_action_sequence, - _animation_action_elapsed, - _animation_action_paused, - ), - "sitting": _sitting, + "animation_state": make_network_animation_state(), + "grounded": is_on_floor(), + "sitting": get_network_sitting_state(), "casting": _fishing_visual_phase == FishingVisualPhase.CASTING, } +func make_network_animation_state() -> Dictionary: + return NetworkPlayerAnimationProtocol.make_state( + _get_authoritative_locomotion_id(), + is_on_floor(), + _animation_action_id, + _animation_action_sequence, + _animation_action_elapsed, + _animation_action_paused, + ) + + +func apply_network_animation_state(state: Dictionary) -> void: + _apply_network_target_animation_state(state) + + +func apply_authoritative_network_animation_action( + action_state: Dictionary, +) -> void: + if not NetworkPlayerAnimationProtocol.validate_action_state(action_state): + return + var incoming_sequence: int = int(action_state["sequence"]) + var wrapped_sequence: bool = ( + _animation_action_sequence + == NetworkPlayerAnimationProtocol.MAX_ACTION_SEQUENCE + and incoming_sequence == 1 + ) + if incoming_sequence < _animation_action_sequence and not wrapped_sequence: + return + if ( + incoming_sequence == _animation_action_sequence + and StringName(str(action_state["id"])) != _animation_action_id + ): + return + _apply_animation_action_state(action_state) + + func push_network_snapshot( snapshot: Dictionary, estimated_transit_seconds: float = -1.0, @@ -2053,7 +2221,8 @@ func push_network_snapshot( ) _network_target_velocity = parsed["velocity"] _network_target_visual_yaw = parsed["visual_yaw"] - _apply_network_target_animation_state(parsed["animation_state"]) + if not Dictionary(parsed.get("animation_state", {})).is_empty(): + _apply_network_target_animation_state(parsed["animation_state"]) _network_snapshot_age = 0.0 _apply_network_casting(bool(parsed["casting"])) _set_sitting(bool(parsed["sitting"])) @@ -2066,9 +2235,8 @@ func push_network_snapshot( func apply_local_prediction_correction( snapshot: Dictionary, - latest_input_sequence: int = 0, + pending_inputs: Array[Dictionary] = [], input_interval_seconds: float = 0.0, - estimated_transit_seconds: float = -1.0, ) -> void: var parsed: Dictionary = _parse_network_snapshot(snapshot) if parsed.is_empty(): @@ -2090,27 +2258,158 @@ func apply_local_prediction_correction( _clear_local_network_jump_intent() if not _sitting_intent_pending: _set_sitting(bool(parsed["sitting"])) - var authoritative_position: Vector3 = parsed["position"] - var transit_seconds: float = resolve_local_prediction_transit_seconds( - acknowledged_input, - latest_input_sequence, - input_interval_seconds, - estimated_transit_seconds, + var previous_visual_position: Vector3 = _visuals.global_position + var base_visual_local_position: Vector3 = ( + _visuals.position - _local_reconciliation_visual_offset ) - if transit_seconds > 0.0: - authoritative_position += ( - (parsed["velocity"] as Vector3) * transit_seconds - ) - var error_distance: float = global_position.distance_to( - authoritative_position + var previous_position: Vector3 = global_position + global_position = parsed["position"] + velocity = parsed["velocity"] + if input_interval_seconds > 0.0: + for input: Dictionary in pending_inputs: + _replay_network_movement_input(input, input_interval_seconds) + var correction_distance: float = previous_position.distance_to( + global_position ) - if error_distance > LOCAL_PREDICTION_SNAP_DISTANCE: - global_position = authoritative_position - elif error_distance > LOCAL_PREDICTION_CORRECTION_THRESHOLD: - global_position = global_position.lerp( - authoritative_position, - LOCAL_PREDICTION_CORRECTION_WEIGHT, + if correction_distance <= LOCAL_PREDICTION_SNAP_DISTANCE: + _visuals.global_position = previous_visual_position + _local_reconciliation_visual_offset = ( + _visuals.position - base_visual_local_position ) + else: + _local_reconciliation_visual_offset = Vector3.ZERO + + +func _replay_network_movement_input( + data: Dictionary, + delta: float, +) -> void: + var axis_value: Variant = data.get("axis", []) + if typeof(axis_value) != TYPE_ARRAY or axis_value.size() != 2: + return + if bool(data.get("sitting", false)) or _water_recovery_active: + velocity = Vector3.ZERO + return + var input_vector := Vector2( + float(axis_value[0]), + float(axis_value[1]), + ).limit_length(1.0) + var camera_basis := Basis( + Vector3.UP, + float(data.get("camera_yaw", 0.0)), + ) + var move_direction: Vector3 = ( + camera_basis.x * input_vector.x + + camera_basis.z * input_vector.y + ) + move_direction.y = 0.0 + move_direction = move_direction.normalized() + _network_sprint = bool(data.get("sprint", false)) + _network_sneak = bool(data.get("sneak", false)) + _network_slow_walk = bool(data.get("slow_walk", false)) + # Replay the speed authored by this exact pending input. Consulting the + # current InputMap here would make an older walk replay as a sprint (or the + # reverse) whenever the local button changed while a snapshot was in flight. + var replay_speed: float = walk_speed + if _network_sneak: + replay_speed = sneak_speed + elif _network_slow_walk: + replay_speed = slow_walk_speed + elif _network_sprint: + replay_speed = sprint_speed + if item_effects != null: + replay_speed *= item_effects.get_movement_multiplier() + var input_strength: float = minf(input_vector.length(), 1.0) + velocity.x = move_direction.x * replay_speed * input_strength + velocity.z = move_direction.z * replay_speed * input_strength + if not is_on_floor(): + var gravity_multiplier: float = ( + upward_gravity_multiplier + if velocity.y > 0.0 + else fall_gravity_multiplier + ) + velocity.y -= _gravity * gravity_multiplier * delta + elif bool(data.get("jump", false)): + velocity.y = jump_velocity + move_and_slide() + + +func _update_local_reconciliation_visuals(delta: float) -> void: + if _local_reconciliation_visual_offset.is_zero_approx(): + _local_reconciliation_visual_offset = Vector3.ZERO + return + var retained_ratio: float = exp(-14.0 * delta) + var retained_offset: Vector3 = ( + _local_reconciliation_visual_offset * retained_ratio + ) + _visuals.position += retained_offset - _local_reconciliation_visual_offset + _local_reconciliation_visual_offset = retained_offset + + +static func resolve_network_input_stale_timeout_seconds( + round_trip_msec: int, +) -> float: + if round_trip_msec < 0: + return NETWORK_INPUT_STALE_TIMEOUT_SECONDS + return clampf( + NETWORK_INPUT_STALE_TIMEOUT_SECONDS + + float(round_trip_msec) / 1000.0 + * NETWORK_INPUT_STALE_RTT_MULTIPLIER, + NETWORK_INPUT_STALE_TIMEOUT_SECONDS, + NETWORK_INPUT_STALE_TIMEOUT_MAX_SECONDS, + ) + + +func _record_authoritative_movement_state() -> void: + var now_seconds: float = Time.get_ticks_msec() / 1000.0 + _authoritative_movement_history.append({ + "sequence": _last_network_input_sequence, + "recorded_at": now_seconds, + "position": global_position, + "velocity": velocity, + "cast_origin": get_cast_origin_position(), + "facing": get_facing_direction(), + "sneaking": is_sneaking(), + }) + var oldest_allowed: float = now_seconds - NETWORK_MOVEMENT_HISTORY_SECONDS + while ( + not _authoritative_movement_history.is_empty() + and float( + _authoritative_movement_history[0].get("recorded_at", 0.0) + ) < oldest_allowed + ): + _authoritative_movement_history.pop_front() + + +func get_lag_compensated_movement_state( + input_sequence: int, + max_age_seconds: float = NETWORK_MAX_LAG_COMPENSATION_SECONDS, +) -> Dictionary: + var now_seconds: float = Time.get_ticks_msec() / 1000.0 + for index: int in range( + _authoritative_movement_history.size() - 1, + -1, + -1, + ): + var candidate: Dictionary = _authoritative_movement_history[index] + if now_seconds - float(candidate.get("recorded_at", 0.0)) > ( + max_age_seconds + ): + break + if ( + input_sequence <= 0 + or int(candidate.get("sequence", 0)) <= input_sequence + ): + return candidate.duplicate(true) + return { + "sequence": _last_network_input_sequence, + "recorded_at": now_seconds, + "position": global_position, + "velocity": velocity, + "cast_origin": get_cast_origin_position(), + "facing": get_facing_direction(), + "sneaking": is_sneaking(), + } static func resolve_local_prediction_transit_seconds( @@ -2154,7 +2453,8 @@ func apply_network_teleport(snapshot: Dictionary) -> void: _network_target_position = global_position _network_target_velocity = velocity _network_target_visual_yaw = _visuals.rotation.y - _apply_network_target_animation_state(parsed["animation_state"]) + if not Dictionary(parsed.get("animation_state", {})).is_empty(): + _apply_network_target_animation_state(parsed["animation_state"]) _network_snapshot_age = 0.0 _network_snapshot_ready = true @@ -2180,12 +2480,16 @@ func _parse_network_snapshot(snapshot: Dictionary) -> Dictionary: float(network_velocity[2]) ) var visual_yaw: float = float(snapshot.get("visual_yaw", 0.0)) - var animation_state_value: Variant = snapshot.get("animation_state") - if not NetworkPlayerAnimationProtocol.validate_state(animation_state_value): - return {} - var animation_state: Dictionary = ( - animation_state_value as Dictionary - ).duplicate(true) + var animation_state: Dictionary = {} + if snapshot.has("animation_state"): + var animation_state_value: Variant = snapshot.get("animation_state") + if not NetworkPlayerAnimationProtocol.validate_state( + animation_state_value + ): + return {} + animation_state = ( + animation_state_value as Dictionary + ).duplicate(true) if ( snapshot.has("acknowledged_input") and ( @@ -2237,6 +2541,23 @@ func _apply_network_target_animation_state(state: Dictionary) -> void: StringName(str(state["locomotion_id"])) ) var action: Dictionary = state["action"] + var incoming_sequence: int = int(action["sequence"]) + var wrapped_sequence: bool = ( + _network_target_animation_action_sequence + == NetworkPlayerAnimationProtocol.MAX_ACTION_SEQUENCE + and incoming_sequence == 1 + ) + if ( + incoming_sequence < _network_target_animation_action_sequence + and not wrapped_sequence + ): + return + if ( + incoming_sequence == _network_target_animation_action_sequence + and StringName(str(action["id"])) + != _network_target_animation_action_id + ): + return _network_target_animation_action_id = StringName(str(action["id"])) _network_target_animation_action_sequence = int(action["sequence"]) _network_target_animation_action_elapsed = float(action["elapsed"]) @@ -2414,11 +2735,11 @@ func _update_network_interpolation(delta: float) -> void: func _update_network_input_freshness(delta: float) -> void: _network_input_age = minf( _network_input_age + delta, - NETWORK_INPUT_STALE_TIMEOUT_SECONDS + 1.0, + _network_input_stale_timeout_seconds + 1.0, ) if ( _network_input_stale - or _network_input_age <= NETWORK_INPUT_STALE_TIMEOUT_SECONDS + or _network_input_age <= _network_input_stale_timeout_seconds ): return _network_input_stale = true @@ -2523,6 +2844,7 @@ func apply_camera_settings( new_mouse_sensitivity: float, new_controller_sensitivity: float, invert_vertical: bool, + swap_hotbar_camera_scroll: bool = false, ) -> void: mouse_sensitivity = clampf(new_mouse_sensitivity, 0.001, 0.012) controller_camera_speed = clampf( @@ -2531,6 +2853,7 @@ func apply_camera_settings( 5.0 ) invert_camera_y = invert_vertical + _swap_hotbar_camera_scroll = swap_hotbar_camera_scroll func is_camera_input_enabled() -> bool: diff --git a/save/player_save_inspection.gd b/save/player_save_inspection.gd index be5fd24..ff14de6 100644 --- a/save/player_save_inspection.gd +++ b/save/player_save_inspection.gd @@ -14,6 +14,10 @@ var detected_version: int = -1 var catch_count: int = 0 var wallet_balance: int = 0 var discovered_species_count: int = 0 +var total_experience: int = 0 +var player_level: int = 1 +var world_layout: StringName = &"generated_world" +var world_seed: int = 0 var has_primary_file: bool = false var message: String = "" diff --git a/save/player_save_manager.gd b/save/player_save_manager.gd index 1b4c1d2..1ad74a1 100644 --- a/save/player_save_manager.gd +++ b/save/player_save_manager.gd @@ -49,6 +49,7 @@ class LoadSnapshot: var catches: Array[FishCatchType] = [] var discovered_ids: Array[StringName] = [] var discovered_quality_masks: Dictionary[StringName, int] = {} + var catch_counts: Dictionary[StringName, int] = {} var wallet_balance: int = 0 var next_catch_sequence: int = 1 var bag_items: Array[OwnedItemType] = [] @@ -109,8 +110,22 @@ var _world_seed: int = DEFAULT_WORLD_SEED func configure_storage(path: String, data_root: PlayerDataRoot) -> void: + if not select_storage(path, data_root): + push_error("PlayerSaveManager could not configure progression storage.") + + +func select_storage(path: String, data_root: PlayerDataRoot) -> bool: + if path.is_empty() or data_root == null: + return false + if _autosave_enabled or _is_dirty: + return false + if _autosave_timer != null: + _autosave_timer.stop() _save_path = path _data_root = data_root + _expected_hash = "" + _automatic_saving_blocked = false + return true func _temp_path() -> String: @@ -297,9 +312,10 @@ func load_player_data() -> bool: snapshot.next_catch_sequence ) var collection_restored: bool = ( - _collection_log.replace_discovery_state( + _collection_log.replace_collection_state( snapshot.discovered_ids, snapshot.discovered_quality_masks, + snapshot.catch_counts, ) ) var wallet_restored: bool = _wallet.restore_balance( @@ -398,17 +414,30 @@ func load_player_data() -> bool: func inspect_save() -> SaveInspectionType: - var result := SaveInspectionType.new() _recover_interrupted_write() var read_path: String = _read_path() - result.has_primary_file = not read_path.is_empty() + return inspect_progression_at_path( + read_path, + read_path == _legacy_save_path(), + ) + + +func inspect_progression_at_path( + path: String, + allow_legacy_plaintext: bool = false, +) -> SaveInspectionType: + var result := SaveInspectionType.new() + if not path.is_empty(): + _remove_if_present(path + ".codec.tmp") + _recover_path_write(path) + result.has_primary_file = not path.is_empty() and FileAccess.file_exists(path) if not result.has_primary_file: result.status = SaveInspectionType.Status.MISSING result.message = "no save found." return result var decoded: Dictionary = ProgressionSaveCodec.read_local_save( - read_path, - read_path == _legacy_save_path(), + path, + allow_legacy_plaintext, ) if not bool(decoded.get("ok", false)): result.status = SaveInspectionType.Status.IO_ERROR @@ -439,6 +468,12 @@ func inspect_save() -> SaveInspectionType: result.catch_count = snapshot.catches.size() result.wallet_balance = snapshot.wallet_balance result.discovered_species_count = snapshot.discovered_ids.size() + result.total_experience = snapshot.total_experience + result.player_level = PlayerExperienceType.level_for_total_experience( + snapshot.total_experience + ) + result.world_layout = snapshot.world_layout + result.world_seed = snapshot.world_seed result.message = "save ready." return result @@ -451,31 +486,45 @@ func export_progression_archive(path: String) -> Dictionary: var source_path: String = _read_path() if source_path.is_empty(): return {"ok": false, "message": "there is no progression to export."} - var decoded: Dictionary = ProgressionSaveCodec.read_local_save( + return export_progression_archive_from_path( source_path, + path, source_path == _legacy_save_path(), ) + + +func export_progression_archive_from_path( + source_path: String, + destination_path: String, + allow_legacy_plaintext: bool = false, +) -> Dictionary: + if source_path.is_empty() or destination_path.is_empty(): + return {"ok": false, "message": "progression export is unavailable."} + var decoded: Dictionary = ProgressionSaveCodec.read_local_save( + source_path, + allow_legacy_plaintext, + ) if not bool(decoded.get("ok", false)): - return {"ok": false, "message": "the active progression could not be read."} + return {"ok": false, "message": "the selected progression could not be read."} var prepared: Dictionary = _prepare_external_save_data(decoded["data"]) if not bool(prepared.get("ok", false)): return prepared var bytes: PackedByteArray = ProgressionSaveCodec.encode_archive( prepared["data"], - path + ".codec.tmp", + destination_path + ".codec.tmp", ) if bytes.is_empty(): return {"ok": false, "message": "the progression archive could not be encoded."} var result: Dictionary = PortableFileGuard.write_guarded( - path, + destination_path, bytes, - PortableFileGuard.hash_file(path), + PortableFileGuard.hash_file(destination_path), _data_root.conflict_directory(), _data_root.device_id, ) if not bool(result.get("ok", false)): return {"ok": false, "message": "the progression archive could not be written."} - var verified: Dictionary = inspect_progression_archive(path) + var verified: Dictionary = inspect_progression_archive(destination_path) if not bool(verified.get("ok", false)): return {"ok": false, "message": "the progression archive could not be verified."} verified["message"] = "progression archive created." @@ -525,6 +574,83 @@ func import_progression_archive(path: String) -> Dictionary: } +func install_progression_archive_at_path( + archive_path: String, + destination_path: String, +) -> Dictionary: + if not _is_configured or destination_path.is_empty(): + return {"ok": false, "message": "progression import is unavailable."} + var inspected: Dictionary = inspect_progression_archive(archive_path) + if not bool(inspected.get("ok", false)): + return inspected + var result: Dictionary = _write_save_data_at_path( + inspected["data"], + destination_path, + PortableFileGuard.hash_file(destination_path), + ) + if not bool(result.get("ok", false)): + return {"ok": false, "message": "the imported progression could not be installed."} + return { + "ok": true, + "message": "progression imported as a new save slot.", + "catch_count": inspected["catch_count"], + "wallet_balance": inspected["wallet_balance"], + "discovered_species_count": inspected["discovered_species_count"], + "world_layout": inspected["world_layout"], + "world_seed": inspected["world_seed"], + } + + +func copy_progression_to_path( + source_path: String, + destination_path: String, + allow_legacy_plaintext: bool, + world_layout: StringName, + world_seed: int, +) -> Dictionary: + if ( + not _is_configured + or source_path.is_empty() + or destination_path.is_empty() + or not WorldLayoutType.is_valid(world_layout) + or world_seed <= 0 + or world_seed > MAX_WORLD_SEED + ): + return {"ok": false, "message": "progression duplication is unavailable."} + var decoded: Dictionary = ProgressionSaveCodec.read_local_save( + source_path, + allow_legacy_plaintext, + ) + if not bool(decoded.get("ok", false)): + return {"ok": false, "message": "the selected progression could not be read."} + var prepared: Dictionary = _prepare_external_save_data(decoded["data"]) + if not bool(prepared.get("ok", false)): + return prepared + var save_data: Dictionary = (prepared["data"] as Dictionary).duplicate(true) + var world_data: Dictionary = {} + if typeof(save_data.get("world")) == TYPE_DICTIONARY: + world_data = (save_data["world"] as Dictionary).duplicate(true) + world_data["layout"] = String(world_layout) + world_data["seed"] = world_seed + save_data["world"] = world_data + prepared = _prepare_external_save_data(save_data) + if not bool(prepared.get("ok", false)): + return prepared + var result: Dictionary = _write_save_data_at_path( + prepared["data"], + destination_path, + PortableFileGuard.hash_file(destination_path), + ) + if not bool(result.get("ok", false)): + return {"ok": false, "message": "the duplicated progression could not be written."} + return { + "ok": true, + "message": "save slot duplicated.", + "world_layout": String(world_layout), + "world_seed": world_seed, + } + + func initialize_new_game( world_seed: int = DEFAULT_WORLD_SEED, world_layout: StringName = WorldLayoutType.GENERATED, @@ -678,6 +804,20 @@ func _build_save_dictionary() -> Dictionary: ): return {} serialized_quality_masks[String(fish_id)] = quality_mask + var serialized_catch_counts: Dictionary = {} + var catch_counts: Dictionary[StringName, int] = ( + _collection_log.get_catch_counts() + ) + for fish_id: StringName in catch_counts: + var catch_count: int = catch_counts[fish_id] + if ( + fish_id.is_empty() + or catch_count <= 0 + or catch_count > CollectionLogType.MAX_CATCH_COUNT + or not _collection_log.has_discovered(fish_id) + ): + return {} + serialized_catch_counts[String(fish_id)] = catch_count var serialized_items: Array[Dictionary] = [] for owned: OwnedItemType in _bag.get_all_items(): if owned == null or not owned.is_valid(): @@ -725,6 +865,7 @@ func _build_save_dictionary() -> Dictionary: "collection": { "discovered_fish_ids": discovered_strings, "discovered_quality_masks": serialized_quality_masks, + "catch_counts": serialized_catch_counts, }, "inventory": { "next_catch_sequence": _inventory.get_next_catch_sequence(), @@ -926,6 +1067,30 @@ func _build_load_snapshot(save_data: Dictionary) -> LoadSnapshot: ): return null snapshot.discovered_quality_masks[fish_id] = mask + var has_saved_catch_counts: bool = collection_data.has("catch_counts") + if ( + has_saved_catch_counts + and typeof(collection_data.get("catch_counts")) != TYPE_DICTIONARY + ): + return null + if has_saved_catch_counts: + var saved_catch_counts: Dictionary = collection_data["catch_counts"] + for key: Variant in saved_catch_counts: + if typeof(key) not in [TYPE_STRING, TYPE_STRING_NAME]: + return null + var fish_id := StringName(str(key)) + var catch_count: int = _read_integer( + saved_catch_counts[key], + -1, + CollectionLogType.MAX_CATCH_COUNT, + ) + if ( + fish_id.is_empty() + or not seen_discoveries.has(fish_id) + or catch_count <= 0 + ): + return null + snapshot.catch_counts[fish_id] = catch_count var seen_ids: Dictionary[StringName, bool] = {} var seen_sequences: Dictionary[int, bool] = {} @@ -976,6 +1141,13 @@ func _build_load_snapshot(save_data: Dictionary) -> LoadSnapshot: fish_catch.catch_sequence ) snapshot.catches.append(fish_catch) + if ( + not has_saved_catch_counts + and seen_discoveries.has(fish_catch.fish_id) + ): + snapshot.catch_counts[fish_catch.fish_id] = ( + int(snapshot.catch_counts.get(fish_catch.fish_id, 0)) + 1 + ) snapshot.next_catch_sequence = maxi( requested_next_sequence, @@ -1504,15 +1676,23 @@ func _recover_path_write(path: String) -> void: func _write_current_save_data( save_data: Dictionary, expected_hash: String, +) -> Dictionary: + return _write_save_data_at_path(save_data, _save_path, expected_hash) + + +func _write_save_data_at_path( + save_data: Dictionary, + destination_path: String, + expected_hash: String, ) -> Dictionary: var bytes: PackedByteArray = ProgressionSaveCodec.encode_local_save( save_data, - _codec_scratch_path(), + destination_path + ".codec.tmp", ) if bytes.is_empty(): return {"ok": false} return PortableFileGuard.write_guarded( - _save_path, + destination_path, bytes, expected_hash, _data_root.conflict_directory(), @@ -1651,6 +1831,7 @@ func _restore_defaults() -> void: var empty_catches: Array[FishCatchType] = [] var empty_discoveries: Array[StringName] = [] var empty_quality_masks: Dictionary[StringName, int] = {} + var empty_catch_counts: Dictionary[StringName, int] = {} var default_items: Array[OwnedItemType] = [] var basic_rod := OwnedItemType.new() basic_rod.item_id = BASIC_ROD_ID @@ -1661,9 +1842,10 @@ func _restore_defaults() -> void: default_slots.fill(StringName()) default_slots[0] = BASIC_ROD_ID _inventory.replace_all_catches(empty_catches, 1) - _collection_log.replace_discovery_state( + _collection_log.replace_collection_state( empty_discoveries, empty_quality_masks, + empty_catch_counts, ) _wallet.restore_balance(0) _bag.replace_all_items(default_items) diff --git a/save/player_save_slot_catalog.gd b/save/player_save_slot_catalog.gd new file mode 100644 index 0000000..d3b9d23 --- /dev/null +++ b/save/player_save_slot_catalog.gd @@ -0,0 +1,591 @@ +class_name PlayerSaveSlotCatalog +extends RefCounted + +const FORMAT_VERSION: int = 1 +const MAX_SLOTS: int = 32 +const MAX_NAME_LENGTH: int = 32 +const LEGACY_SAVE_ID: StringName = &"player_save" + +signal slots_changed + +var _data_root: PlayerDataRoot +var _save_manager: PlayerSaveManager +var _manifest_path := "" +var _slots_directory := "" +var _slots: Array[Dictionary] = [] +var _active_slot_id := "" +var _expected_hash := "" +var _error_message := "" + + +func configure( + data_root: PlayerDataRoot, + save_manager: PlayerSaveManager, +) -> bool: + if data_root == null or save_manager == null or data_root.root_path.is_empty(): + return false + _data_root = data_root + _save_manager = save_manager + _manifest_path = data_root.path_for(&"save_slots") + _slots_directory = data_root.root_path.path_join("player/saves") + _slots.clear() + _active_slot_id = "" + _expected_hash = "" + _error_message = "" + if DirAccess.make_dir_recursive_absolute(_slots_directory) != OK: + _error_message = "the save-slot directory could not be created." + return false + _recover_interrupted_manifest_write() + var loaded: bool = _load_manifest() + if not loaded and FileAccess.file_exists(_manifest_path): + if not _preserve_invalid_manifest(): + _error_message = "the invalid save-slot catalog could not be preserved." + return false + var slot_count_before_discovery: int = _slots.size() + var active_before_discovery: String = _active_slot_id + _discover_untracked_saves() + if _active_slot_id.is_empty() and not _slots.is_empty(): + _active_slot_id = str(_slots.front().get("slot_id", "")) + if ( + not loaded + or _slots.size() != slot_count_before_discovery + or _active_slot_id != active_before_discovery + ): + if not _save_manifest(): + return false + return _select_configured_storage() + + +func get_error_message() -> String: + return _error_message + + +func list_slots() -> Array[Dictionary]: + var result: Array[Dictionary] = [] + for entry: Dictionary in _slots: + result.append(_build_slot_summary(entry)) + result.sort_custom( + func(a: Dictionary, b: Dictionary) -> bool: + var a_played: int = int(a.get("last_played_at_unix", 0)) + var b_played: int = int(b.get("last_played_at_unix", 0)) + if a_played == b_played: + return int(a.get("created_at_unix", 0)) > int( + b.get("created_at_unix", 0) + ) + return a_played > b_played + ) + return result + + +func get_slot(slot_id: String) -> Dictionary: + var entry: Dictionary = _find_slot(slot_id) + return _build_slot_summary(entry) if not entry.is_empty() else {} + + +func get_active_slot_id() -> String: + return _active_slot_id + + +func has_slots() -> bool: + return not _slots.is_empty() + + +func ensure_active_slot() -> Dictionary: + if not _active_slot_id.is_empty() and not _find_slot(_active_slot_id).is_empty(): + return {"ok": true, "slot_id": _active_slot_id} + var created: Dictionary = create_empty_slot(_next_default_name()) + if not bool(created.get("ok", false)): + return created + var slot_id: String = str(created.get("slot_id", "")) + if not activate_slot(slot_id): + return {"ok": false, "message": "the new save slot could not be selected."} + return {"ok": true, "slot_id": slot_id} + + +func create_empty_slot(display_name: String) -> Dictionary: + if _slots.size() >= MAX_SLOTS: + return {"ok": false, "message": "the maximum number of save slots has been reached."} + var clean_name: String = normalized_name(display_name) + if clean_name.is_empty(): + return {"ok": false, "message": "enter a name for this save slot."} + var slot_id: String = _generate_slot_id() + var now: int = int(Time.get_unix_time_from_system()) + _slots.append({ + "slot_id": slot_id, + "display_name": clean_name, + "created_at_unix": now, + "last_played_at_unix": 0, + "legacy": false, + }) + if not _save_manifest(): + _slots.pop_back() + return {"ok": false, "message": "the save-slot catalog could not be updated."} + slots_changed.emit() + return {"ok": true, "slot_id": slot_id} + + +func duplicate_slot( + source_slot_id: String, + display_name: String, + world_layout: StringName, + world_seed: int, +) -> Dictionary: + if _slots.size() >= MAX_SLOTS: + return {"ok": false, "message": "the maximum number of save slots has been reached."} + var source: Dictionary = _find_slot(source_slot_id) + var clean_name: String = normalized_name(display_name) + if source.is_empty() or clean_name.is_empty(): + return {"ok": false, "message": "the selected save slot cannot be duplicated."} + var source_path: String = _existing_slot_path(source) + if source_path.is_empty(): + return {"ok": false, "message": "the selected save slot has no progression to duplicate."} + var slot_id: String = _generate_slot_id() + var destination: String = _slots_directory.path_join(slot_id + ".nfsave") + var copied: Dictionary = _save_manager.copy_progression_to_path( + source_path, + destination, + source_path.ends_with(".json"), + world_layout, + world_seed, + ) + if not bool(copied.get("ok", false)): + return copied + var now: int = int(Time.get_unix_time_from_system()) + _slots.append({ + "slot_id": slot_id, + "display_name": clean_name, + "created_at_unix": now, + "last_played_at_unix": 0, + "legacy": false, + }) + if not _save_manifest(): + _slots.pop_back() + _remove_if_present(destination) + return {"ok": false, "message": "the duplicated slot could not be recorded."} + slots_changed.emit() + return {"ok": true, "slot_id": slot_id} + + +func import_slot(archive_path: String, display_name: String) -> Dictionary: + if _slots.size() >= MAX_SLOTS: + return {"ok": false, "message": "the maximum number of save slots has been reached."} + var clean_name: String = normalized_name(display_name) + if clean_name.is_empty(): + return {"ok": false, "message": "the imported save needs a slot name."} + var slot_id: String = _generate_slot_id() + var destination: String = _slots_directory.path_join(slot_id + ".nfsave") + var installed: Dictionary = _save_manager.install_progression_archive_at_path( + archive_path, + destination, + ) + if not bool(installed.get("ok", false)): + return installed + var now: int = int(Time.get_unix_time_from_system()) + _slots.append({ + "slot_id": slot_id, + "display_name": clean_name, + "created_at_unix": now, + "last_played_at_unix": 0, + "legacy": false, + }) + if not _save_manifest(): + _slots.pop_back() + _remove_if_present(destination) + return {"ok": false, "message": "the imported slot could not be recorded."} + slots_changed.emit() + installed["slot_id"] = slot_id + return installed + + +func export_slot(slot_id: String, destination_path: String) -> Dictionary: + var entry: Dictionary = _find_slot(slot_id) + var source_path: String = _existing_slot_path(entry) + if entry.is_empty() or source_path.is_empty(): + return {"ok": false, "message": "the selected save slot cannot be exported."} + return _save_manager.export_progression_archive_from_path( + source_path, + destination_path, + source_path.ends_with(".json"), + ) + + +func activate_slot(slot_id: String) -> bool: + var entry: Dictionary = _find_slot(slot_id) + if entry.is_empty(): + return false + var previous_id: String = _active_slot_id + var previous_path: String = _configured_storage_path(previous_id) + var next_path: String = _slot_primary_path(entry) + if not _save_manager.select_storage(next_path, _data_root): + return false + _active_slot_id = slot_id + if _save_manifest(): + slots_changed.emit() + return true + _active_slot_id = previous_id + _save_manager.select_storage(previous_path, _data_root) + return false + + +func mark_played(slot_id: String) -> bool: + var index: int = _find_slot_index(slot_id) + if index < 0: + return false + var previous_played_at: int = int( + _slots[index].get("last_played_at_unix", 0) + ) + var previous_active: String = _active_slot_id + _slots[index]["last_played_at_unix"] = int(Time.get_unix_time_from_system()) + _active_slot_id = slot_id + if not _save_manifest(): + _slots[index]["last_played_at_unix"] = previous_played_at + _active_slot_id = previous_active + return false + slots_changed.emit() + return true + + +func rename_slot(slot_id: String, display_name: String) -> bool: + var index: int = _find_slot_index(slot_id) + var clean_name: String = normalized_name(display_name) + if index < 0 or clean_name.is_empty(): + return false + var previous: String = str(_slots[index].get("display_name", "")) + _slots[index]["display_name"] = clean_name + if not _save_manifest(): + _slots[index]["display_name"] = previous + return false + slots_changed.emit() + return true + + +func delete_slot(slot_id: String) -> bool: + var index: int = _find_slot_index(slot_id) + if index < 0: + return false + var previous_slots: Array[Dictionary] = [] + for previous_entry: Dictionary in _slots: + previous_slots.append(previous_entry.duplicate(true)) + var previous_active: String = _active_slot_id + var entry: Dictionary = _slots[index] + var source_path: String = _existing_slot_path(entry) + var preserved_path := "" + if not source_path.is_empty(): + preserved_path = _deleted_backup_path(entry, source_path) + if not _rename_file(source_path, preserved_path): + return false + _slots.remove_at(index) + if _active_slot_id == slot_id: + _active_slot_id = ( + str(_slots.front().get("slot_id", "")) + if not _slots.is_empty() + else "" + ) + if not _select_configured_storage() or not _save_manifest(): + _slots = previous_slots + _active_slot_id = previous_active + _select_configured_storage() + if not preserved_path.is_empty(): + _rename_file(preserved_path, source_path) + return false + for auxiliary: String in _slot_auxiliary_paths(entry): + _remove_if_present(auxiliary) + slots_changed.emit() + return true + + +static func normalized_name(value: String) -> String: + var clean_name: String = value.strip_edges().left(MAX_NAME_LENGTH) + if clean_name.is_empty(): + return "" + for index: int in clean_name.length(): + var codepoint: int = clean_name.unicode_at(index) + if codepoint < 32 or codepoint == 127: + return "" + return clean_name + + +func _build_slot_summary(entry: Dictionary) -> Dictionary: + if entry.is_empty(): + return {} + var summary: Dictionary = entry.duplicate(true) + var path: String = _existing_slot_path(entry) + var inspection: PlayerSaveInspection = _save_manager.inspect_progression_at_path( + path, + path.ends_with(".json"), + ) + summary["active"] = str(entry.get("slot_id", "")) == _active_slot_id + summary["has_save"] = inspection.can_continue() + summary["save_status"] = inspection.status + summary["status_message"] = inspection.message + summary["catch_count"] = inspection.catch_count + summary["wallet_balance"] = inspection.wallet_balance + summary["discovered_species_count"] = inspection.discovered_species_count + summary["player_level"] = inspection.player_level + summary["world_layout"] = String(inspection.world_layout) + summary["world_seed"] = inspection.world_seed + return summary + + +func _load_manifest() -> bool: + if not FileAccess.file_exists(_manifest_path): + return false + var file := FileAccess.open(_manifest_path, FileAccess.READ) + if file == null: + return false + var parser := JSON.new() + var error: Error = parser.parse(file.get_as_text()) + file.close() + if error != OK or typeof(parser.data) != TYPE_DICTIONARY: + return false + var data: Dictionary = parser.data + if int(data.get("format_version", -1)) != FORMAT_VERSION: + return false + if typeof(data.get("slots")) != TYPE_ARRAY: + return false + var loaded_slots: Array[Dictionary] = [] + var seen_ids: Dictionary[String, bool] = {} + for value: Variant in data["slots"]: + if typeof(value) != TYPE_DICTIONARY: + return false + var entry: Dictionary = (value as Dictionary).duplicate(true) + if not _valid_slot_entry(entry): + return false + var slot_id: String = str(entry["slot_id"]) + if seen_ids.has(slot_id): + return false + seen_ids[slot_id] = true + loaded_slots.append(entry) + _slots = loaded_slots + _active_slot_id = str(data.get("active_slot_id", "")) + if not _active_slot_id.is_empty() and not seen_ids.has(_active_slot_id): + _active_slot_id = "" + _expected_hash = PortableFileGuard.hash_file(_manifest_path) + return true + + +func _save_manifest() -> bool: + var data: Dictionary = { + "format_version": FORMAT_VERSION, + "active_slot_id": _active_slot_id, + "slots": _slots, + } + var result: Dictionary = PortableFileGuard.write_guarded( + _manifest_path, + JSON.stringify(data, "\t").to_utf8_buffer(), + _expected_hash, + _data_root.conflict_directory(), + _data_root.device_id, + ) + if bool(result.get("conflict", false)): + _data_root.report_conflict( + str(result.get("message", "")), + str(result.get("conflict_path", "")), + ) + if bool(result.get("ok", false)): + _expected_hash = str(result.get("hash", "")) + return true + _error_message = "the save-slot catalog could not be written safely." + return false + + +func _discover_untracked_saves() -> void: + var known_ids: Dictionary[String, bool] = {} + var has_legacy: bool = false + for entry: Dictionary in _slots: + known_ids[str(entry.get("slot_id", ""))] = true + has_legacy = has_legacy or bool(entry.get("legacy", false)) + var legacy_primary: String = _data_root.path_for(LEGACY_SAVE_ID) + var legacy_plaintext: String = legacy_primary.get_base_dir().path_join( + PlayerSaveManager.LEGACY_SAVE_FILENAME + ) + if ( + not has_legacy + and ( + FileAccess.file_exists(legacy_primary) + or FileAccess.file_exists(legacy_plaintext) + ) + ): + var legacy_id: String = _generate_slot_id() + _slots.append({ + "slot_id": legacy_id, + "display_name": _next_default_name(), + "created_at_unix": int(Time.get_unix_time_from_system()), + "last_played_at_unix": 0, + "legacy": true, + }) + known_ids[legacy_id] = true + var directory := DirAccess.open(_slots_directory) + if directory == null: + return + directory.list_dir_begin() + var filename: String = directory.get_next() + while not filename.is_empty(): + if not directory.current_is_dir() and filename.ends_with(".nfsave"): + var slot_id: String = filename.trim_suffix(".nfsave") + if _valid_slot_id(slot_id) and not known_ids.has(slot_id): + _slots.append({ + "slot_id": slot_id, + "display_name": _next_default_name(), + "created_at_unix": int(Time.get_unix_time_from_system()), + "last_played_at_unix": 0, + "legacy": false, + }) + known_ids[slot_id] = true + filename = directory.get_next() + directory.list_dir_end() + + +func _select_configured_storage() -> bool: + return _save_manager.select_storage( + _configured_storage_path(_active_slot_id), + _data_root, + ) + + +func _configured_storage_path(slot_id: String) -> String: + var entry: Dictionary = _find_slot(slot_id) + if not entry.is_empty(): + return _slot_primary_path(entry) + return _data_root.path_for(LEGACY_SAVE_ID) + + +func _slot_primary_path(entry: Dictionary) -> String: + if bool(entry.get("legacy", false)): + return _data_root.path_for(LEGACY_SAVE_ID) + return _slots_directory.path_join(str(entry.get("slot_id", "")) + ".nfsave") + + +func _existing_slot_path(entry: Dictionary) -> String: + if entry.is_empty(): + return "" + var primary: String = _slot_primary_path(entry) + if FileAccess.file_exists(primary): + return primary + if bool(entry.get("legacy", false)): + var plaintext: String = primary.get_base_dir().path_join( + PlayerSaveManager.LEGACY_SAVE_FILENAME + ) + if FileAccess.file_exists(plaintext): + return plaintext + return "" + + +func _slot_auxiliary_paths(entry: Dictionary) -> Array[String]: + var primary: String = _slot_primary_path(entry) + var paths: Array[String] = [ + primary + ".tmp", + primary + ".backup", + primary + ".codec.tmp", + ] + if bool(entry.get("legacy", false)): + var plaintext: String = primary.get_base_dir().path_join( + PlayerSaveManager.LEGACY_SAVE_FILENAME + ) + paths.append_array([ + plaintext + ".tmp", + plaintext + ".backup", + ]) + return paths + + +func _deleted_backup_path(entry: Dictionary, source_path: String) -> String: + var timestamp: String = Time.get_datetime_string_from_system().replace(":", "-") + var extension: String = ".json" if source_path.ends_with(".json") else ".nfsave" + var destination: String = _data_root.root_path.path_join( + "backups/saves/deleted-slot-%s-%s%s" + % [str(entry.get("slot_id", "")).left(8), timestamp, extension] + ) + if FileAccess.file_exists(destination): + destination = destination.trim_suffix(extension) + ( + "-%d%s" % [Time.get_ticks_usec(), extension] + ) + return destination + + +func _find_slot(slot_id: String) -> Dictionary: + var index: int = _find_slot_index(slot_id) + return _slots[index] if index >= 0 else {} + + +func _find_slot_index(slot_id: String) -> int: + for index: int in _slots.size(): + if str(_slots[index].get("slot_id", "")) == slot_id: + return index + return -1 + + +func _next_default_name() -> String: + var used: Dictionary[String, bool] = {} + for entry: Dictionary in _slots: + used[str(entry.get("display_name", "")).to_lower()] = true + var number: int = 1 + while used.has("save %d" % number): + number += 1 + return "save %d" % number + + +func _generate_slot_id() -> String: + var slot_id: String = Crypto.new().generate_random_bytes(16).hex_encode() + while _find_slot_index(slot_id) >= 0: + slot_id = Crypto.new().generate_random_bytes(16).hex_encode() + return slot_id + + +func _valid_slot_entry(entry: Dictionary) -> bool: + var display_name: String = str(entry.get("display_name", "")) + return ( + _valid_slot_id(str(entry.get("slot_id", ""))) + and display_name.length() <= MAX_NAME_LENGTH + and not normalized_name(display_name).is_empty() + and typeof(entry.get("created_at_unix")) in [TYPE_INT, TYPE_FLOAT] + and typeof(entry.get("last_played_at_unix")) in [TYPE_INT, TYPE_FLOAT] + and typeof(entry.get("legacy")) == TYPE_BOOL + ) + + +func _valid_slot_id(slot_id: String) -> bool: + if slot_id.length() != 32: + return false + for index: int in slot_id.length(): + var character: String = slot_id.substr(index, 1).to_lower() + if character not in "0123456789abcdef": + return false + return true + + +func _recover_interrupted_manifest_write() -> void: + var temporary: String = _manifest_path + ".tmp" + var backup: String = _manifest_path + ".backup" + if FileAccess.file_exists(_manifest_path): + _remove_if_present(temporary) + _remove_if_present(backup) + return + if FileAccess.file_exists(backup): + _rename_file(backup, _manifest_path) + _remove_if_present(temporary) + + +func _preserve_invalid_manifest() -> bool: + var destination: String = _data_root.migration_backup_directory().path_join( + "invalid-save-slots-%s.json" + % Time.get_datetime_string_from_system().replace(":", "-") + ) + if not _rename_file(_manifest_path, destination): + return false + _expected_hash = "" + _slots.clear() + _active_slot_id = "" + return true + + +func _rename_file(source: String, destination: String) -> bool: + if source.is_empty() or destination.is_empty(): + return false + if DirAccess.make_dir_recursive_absolute(destination.get_base_dir()) != OK: + return false + return DirAccess.rename_absolute(source, destination) == OK + + +func _remove_if_present(path: String) -> bool: + return not FileAccess.file_exists(path) or DirAccess.remove_absolute(path) == OK diff --git a/save/player_save_slot_catalog.gd.uid b/save/player_save_slot_catalog.gd.uid new file mode 100644 index 0000000..8906f5a --- /dev/null +++ b/save/player_save_slot_catalog.gd.uid @@ -0,0 +1 @@ +uid://djfeifv7xrqdt diff --git a/scripts/run_validations.sh b/scripts/run_validations.sh index 1368afc..2ebaeff 100755 --- a/scripts/run_validations.sh +++ b/scripts/run_validations.sh @@ -31,6 +31,7 @@ readonly -a QUICK_TESTS=( "tests/fishing_shop_controller_validation.gd" "tests/fishing_audio_validation.gd" "tests/fishing_surface_validation.gd" + "tests/friend_relationship_validation.gd" "tests/fur_pattern_validation.gd" "tests/generated_world_runtime_validation.gd" "tests/gathering_marker_surface_validation.gd" @@ -84,6 +85,7 @@ readonly -a NETWORK_TESTS=( "tests/chat_privacy_multiplayer_validation.gd" "tests/economy_regression_validation.gd" "tests/fish_showcase_multiplayer_validation.gd" + "tests/friend_multiplayer_validation.gd" "tests/fishing_multiplayer_validation.gd" "tests/job_multiplayer_validation.gd" "tests/movement_multiplayer_validation.gd" diff --git a/settings/keyboard_mouse_mapping_manager.gd b/settings/keyboard_mouse_mapping_manager.gd index d9cb03d..591bc52 100644 --- a/settings/keyboard_mouse_mapping_manager.gd +++ b/settings/keyboard_mouse_mapping_manager.gd @@ -177,6 +177,17 @@ func get_active_bindings() -> Dictionary: return _default_bindings.duplicate(true) +func get_binding(role: StringName) -> Dictionary: + var binding: Variant = get_active_bindings().get(str(role), {}) + if typeof(binding) != TYPE_DICTIONARY: + return {} + return (binding as Dictionary).duplicate(true) + + +func get_binding_label(role: StringName) -> String: + return binding_label(get_binding(role)) + + func get_role_label(role: StringName) -> String: return str(ROLE_LABELS.get(role, str(role).replace("_", " "))) diff --git a/settings/player_settings.gd b/settings/player_settings.gd index 4ea3cfa..59099fc 100644 --- a/settings/player_settings.gd +++ b/settings/player_settings.gd @@ -32,6 +32,7 @@ const UI_COMPACT_RENDER_HEIGHTS: Array[int] = [0, 408, 336, 264, 192] @export_range(0.001, 0.012, 0.0005) var mouse_camera_sensitivity: float = 0.005 @export_range(0.5, 5.0, 0.1) var controller_camera_sensitivity: float = 2.5 @export var invert_camera_y: bool = false +@export var swap_hotbar_camera_scroll: bool = false @export var on_screen_keyboard_enabled: bool = false @export var chat_draft: String = "" @export var chat_collapsed: bool = false @@ -79,6 +80,7 @@ func copy() -> PlayerSettings: result.mouse_camera_sensitivity = mouse_camera_sensitivity result.controller_camera_sensitivity = controller_camera_sensitivity result.invert_camera_y = invert_camera_y + result.swap_hotbar_camera_scroll = swap_hotbar_camera_scroll result.on_screen_keyboard_enabled = on_screen_keyboard_enabled result.chat_draft = chat_draft result.chat_collapsed = chat_collapsed diff --git a/settings/player_settings_manager.gd b/settings/player_settings_manager.gd index 6c8cf4f..3fd2a35 100644 --- a/settings/player_settings_manager.gd +++ b/settings/player_settings_manager.gd @@ -54,6 +54,10 @@ func load_settings() -> bool: if ( typeof(accessibility.get("auto_click_enabled")) != TYPE_BOOL or typeof(camera.get("invert_vertical")) != TYPE_BOOL + or ( + camera.has("swap_hotbar_camera_scroll") + and typeof(camera["swap_hotbar_camera_scroll"]) != TYPE_BOOL + ) or ( accessibility.has("on_screen_keyboard_enabled") and typeof(accessibility["on_screen_keyboard_enabled"]) != TYPE_BOOL @@ -109,6 +113,9 @@ func load_settings() -> bool: -1.0 ) loaded.invert_camera_y = camera["invert_vertical"] + loaded.swap_hotbar_camera_scroll = bool( + camera.get("swap_hotbar_camera_scroll", false) + ) loaded.on_screen_keyboard_enabled = bool( accessibility.get("on_screen_keyboard_enabled", false) ) @@ -237,6 +244,9 @@ func save_now() -> bool: "mouse_sensitivity": current_settings.mouse_camera_sensitivity, "controller_sensitivity": current_settings.controller_camera_sensitivity, "invert_vertical": current_settings.invert_camera_y, + "swap_hotbar_camera_scroll": ( + current_settings.swap_hotbar_camera_scroll + ), }, "audio": { "master": current_settings.master_volume, diff --git a/tests/art_tools_validation.gd b/tests/art_tools_validation.gd index f370605..3bc4633 100644 --- a/tests/art_tools_validation.gd +++ b/tests/art_tools_validation.gd @@ -81,12 +81,36 @@ func _run() -> void: "%NetworkSurfaceDrawingService" ) as NetworkSurfaceDrawingService var game_ui := main.get_node("%GameUI") as GameUI + var keyboard_mapping := main.get_node( + "%KeyboardMouseMappingManager" + ) as KeyboardMouseMappingManager var toolbar := game_ui.get_node( "%SurfaceDrawingToolbar" ) as SurfaceDrawingToolbar var chat_ui := game_ui.get_node("%ChatUI") as ChatUI assert(player != null and service != null and toolbar != null) assert(chat_ui != null) + assert(keyboard_mapping != null) + assert(keyboard_mapping.reset_mapping()) + await process_frame + var shop_prompt_key := game_ui.get_node("%ShopPromptKey") as Label + var storage_prompt_message := game_ui.get_node( + "%StoragePromptMessage" + ) as Label + assert(shop_prompt_key.text == "E") + assert(storage_prompt_message.text == "E open storage") + var remapped_interact := InputEventKey.new() + remapped_interact.physical_keycode = KEY_F + remapped_interact.pressed = true + assert(keyboard_mapping.set_binding( + KeyboardMouseMappingManager.ROLE_INTERACT, + keyboard_mapping.binding_from_event(remapped_interact), + )) + await process_frame + assert(shop_prompt_key.text == "F") + assert(storage_prompt_message.text == "F open storage") + assert(keyboard_mapping.reset_mapping()) + await process_frame assert(toolbar.get_parent() == chat_ui.get_parent()) assert( toolbar.get_index() > chat_ui.get_index(), @@ -252,6 +276,33 @@ func _run() -> void: else: assert(not typed_chat_entry.virtual_keyboard_enabled) assert(on_screen_keyboard.is_open()) + + # A bite temporarily owns gameplay input without discarding an in-progress + # message. The draft and insertion point return only after fishing releases + # that ownership, and any controller keyboard follows the restored field. + var chat_fishing_spot := main.get_node("%FishingSpot") as FishingSpot + assert(chat_fishing_spot != null) + var interrupted_draft := "finish this message after fishing" + var interrupted_caret: int = 12 + typed_chat_entry.text = interrupted_draft + typed_chat_entry.caret_column = interrupted_caret + chat_fishing_spot.call("_set_fishing_input_priority", true) + await process_frame + assert(not chat_ui.is_open()) + assert(not bool(chat_ui.get("_input_lock_applied"))) + assert(chat_ui.has_fishing_resume_pending()) + assert(not on_screen_keyboard.is_open()) + chat_ui.open_chat() + assert(not chat_ui.is_open()) + chat_fishing_spot.call("_set_fishing_input_priority", false) + for _frame: int in 4: + await process_frame + assert(chat_ui.is_open()) + assert(typed_chat_entry.text == interrupted_draft) + assert(typed_chat_entry.caret_column == interrupted_caret) + assert(bool(chat_ui.get("_input_lock_applied"))) + if not DisplayServer.has_feature(DisplayServer.FEATURE_VIRTUAL_KEYBOARD): + assert(on_screen_keyboard.is_open()) on_screen_keyboard.call("_close_keyboard", true) assert(typed_chat_entry.has_focus()) var left_bumper := InputEventJoypadButton.new() @@ -507,7 +558,7 @@ func _run() -> void: and stamp_button != null ) assert(export_button.text == "png") - assert(export_button.tooltip_text == "export aimed artwork as PNG") + assert(export_button.tooltip_text == "aim at artwork, then click to export PNG") assert(stamp_button.text == "stamp") assert(stamp_button.disabled) assert(toolbar.get_node_or_null("%CloseButton") == null) @@ -830,6 +881,18 @@ func _run() -> void: await process_frame assert(player.hotbar.get_selected_slot() == 1) assert(not service.is_active() and not toolbar.visible) + hotbar_ui.set_swap_hotbar_camera_scroll(true) + hotbar_ui._unhandled_input(wheel_down) + await process_frame + assert(player.hotbar.get_selected_slot() == 1) + var shifted_wheel_down := InputEventMouseButton.new() + shifted_wheel_down.button_index = MOUSE_BUTTON_WHEEL_DOWN + shifted_wheel_down.pressed = true + shifted_wheel_down.shift_pressed = true + hotbar_ui._unhandled_input(shifted_wheel_down) + await process_frame + assert(player.hotbar.get_selected_slot() == 2) + hotbar_ui.set_swap_hotbar_camera_scroll(false) var number_one := InputEventKey.new() number_one.physical_keycode = KEY_1 diff --git a/tests/camera_drag_validation.gd b/tests/camera_drag_validation.gd index 0299492..a2dd410 100644 --- a/tests/camera_drag_validation.gd +++ b/tests/camera_drag_validation.gd @@ -54,6 +54,26 @@ func _run() -> void: player.notification(NOTIFICATION_APPLICATION_FOCUS_OUT) assert(not bool(player.get("_camera_dragging"))) + var plain_wheel_down := InputEventMouseButton.new() + plain_wheel_down.button_index = MOUSE_BUTTON_WHEEL_DOWN + plain_wheel_down.pressed = true + var shifted_wheel_down := InputEventMouseButton.new() + shifted_wheel_down.button_index = MOUSE_BUTTON_WHEEL_DOWN + shifted_wheel_down.pressed = true + shifted_wheel_down.shift_pressed = true + player.apply_camera_settings(0.005, 2.5, false, false) + var default_zoom: float = float(player.get("_target_zoom")) + player._unhandled_input(plain_wheel_down) + assert(is_equal_approx(float(player.get("_target_zoom")), default_zoom)) + player._unhandled_input(shifted_wheel_down) + assert(float(player.get("_target_zoom")) > default_zoom) + player.apply_camera_settings(0.005, 2.5, false, true) + var swapped_zoom: float = float(player.get("_target_zoom")) + player._unhandled_input(shifted_wheel_down) + assert(is_equal_approx(float(player.get("_target_zoom")), swapped_zoom)) + player._unhandled_input(plain_wheel_down) + assert(float(player.get("_target_zoom")) > swapped_zoom) + player.queue_free() await process_frame print("Camera drag validation: PASS") diff --git a/tests/chat_privacy_multiplayer_validation.gd b/tests/chat_privacy_multiplayer_validation.gd index 5d38b08..e1d6f87 100644 --- a/tests/chat_privacy_multiplayer_validation.gd +++ b/tests/chat_privacy_multiplayer_validation.gd @@ -26,6 +26,10 @@ func _run_host() -> void: var main: Node = await _create_initialized_main() var session := main.get_node("%NetworkSession") as NetworkSession var save_manager := main.get("_save_manager") as PlayerSaveManager + assert(bool(main.call( + "_apply_world", WorldLayout.STARTER_ISLAND, 1, true + ))) + assert(session.set_host_world(WorldLayout.STARTER_ISLAND, 1)) assert(session.start_private_host(TEST_PORT)) assert(save_manager.initialize_new_game()) main.call("_enter_gameplay") diff --git a/tests/controller_menu_accessibility_validation.gd b/tests/controller_menu_accessibility_validation.gd index c2a58ee..bf856d3 100644 --- a/tests/controller_menu_accessibility_validation.gd +++ b/tests/controller_menu_accessibility_validation.gd @@ -6,6 +6,7 @@ const JoinGamePageScene = preload( const TitleScreenScene = preload("res://ui/title_screen.tscn") const PauseMenuScene = preload("res://ui/pause_menu.tscn") const SettingsPanelScene = preload("res://ui/settings_panel.tscn") +const SaveSlotsPageScene = preload("res://ui/save_slots_page.tscn") const BubbleConfirmationScene = preload( "res://ui/components/bubble_menu/bubble_confirmation_page.tscn" ) @@ -43,6 +44,7 @@ func _initialize() -> void: func _run() -> void: root.size = Vector2i(1280, 720) await _validate_primary_menu_navigation() + await _validate_save_slots_navigation() await _validate_join_game_navigation() await _validate_data_settings_navigation() await _validate_settings_adjustment_navigation() @@ -113,8 +115,20 @@ func _validate_primary_menu_navigation() -> void: (control as BaseButton).disabled = false title_controls.append(control) _expect( - title_controls.size() == 7, - "Title menu does not expose all seven primary actions.", + title_controls.size() == 5, + "Title menu does not expose its five primary actions.", + ) + var play_button := title.get_node("%PlayButton") as Button + _expect( + play_button.icon != null + and play_button.icon.resource_path + == "res://ui/icons/main_menu/continue.png", + "The Play action does not use the original Continue icon.", + ) + _expect( + not (title.get_node("%NewGameButton") as Control).visible + and not (title.get_node("%DeleteSaveButton") as Control).visible, + "Legacy New/Delete title bubbles are still visible.", ) _assert_directionally_reachable(title_controls.front(), title_controls) title.queue_free() @@ -141,12 +155,67 @@ func _validate_primary_menu_navigation() -> void: await process_frame +func _validate_save_slots_navigation() -> void: + var page := SaveSlotsPageScene.instantiate() as SaveSlotsPage + root.add_child(page) + await process_frame + page.open_page() + for _frame: int in 2: + await process_frame + await create_timer(0.25).timeout + var saves_tab := page.get_node("%SavesTab") as Button + var new_tab := page.get_node("%NewSlotTab") as Button + var content_panel := page.get_node("%ContentPanel") as PanelContainer + var tab_overlap: float = ( + saves_tab.get_global_rect().end.y + - content_panel.get_global_rect().position.y + ) + _expect( + is_equal_approx(tab_overlap, saves_tab.size.y * 0.5), + "Save-slot content does not cover the lower half of its organizer tabs.", + ) + _expect( + page.get_active_page_id() == &"new", + "An empty save catalog does not open directly to New Slot.", + ) + _assert_neighbor(saves_tab, &"focus_neighbor_right", new_tab) + _assert_neighbor(new_tab, &"focus_neighbor_left", saves_tab) + var new_controls: Array[Control] = [ + saves_tab, + new_tab, + page.get_node("%NewSlotName") as Control, + page.get_node("%GeneratedButton") as Control, + page.get_node("%StarterButton") as Control, + page.get_node("%RandomSeedButton") as Control, + page.get_node("%CustomSeedButton") as Control, + page.get_node("%CreateSlotButton") as Control, + page.get_node("%BackButton") as Control, + ] + _assert_directionally_reachable(new_tab, new_controls) + page.call("_select_page", &"saves", false) + await process_frame + var import_button := page.get_node("%ImportSlotButton") as Button + _expect( + saves_tab.find_valid_focus_neighbor(SIDE_BOTTOM) == import_button, + "An empty Save Slots page does not lead from its tab to Import Save.", + ) + _expect( + import_button.find_valid_focus_neighbor(SIDE_BOTTOM) + == page.get_node("%BackButton"), + "An empty Save Slots page does not lead from Import Save to Back.", + ) + page.queue_free() + await process_frame + + func _validate_join_game_navigation() -> void: var page := JoinGamePageScene.instantiate() as Control root.add_child(page) await process_frame page.show() + await process_frame var discover := page.get_node("%DiscoverButton") as Button + var friends := page.get_node("%FriendsButton") as Button var direct := page.get_node("%DirectButton") as Button var saved := page.get_node("%SavedButton") as Button var recent := page.get_node("%RecentButton") as Button @@ -161,8 +230,21 @@ func _validate_join_game_navigation() -> void: var delete := page.get_node("%DeleteButton") as Button var cancel := page.get_node("%CancelButton") as Button var back := page.get_node("%BackButton") as Button - var modes: Array[Control] = [discover, direct, saved, recent] + var direct_content := page.get_node("%DirectContent") as Control + var list_content := page.get_node("%ListContent") as Control + var content_panel := page.get_node("%ContentPanel") as PanelContainer + var modes: Array[Control] = [discover, friends, direct, saved, recent] + var tab_overlap: float = ( + discover.get_global_rect().end.y + - content_panel.get_global_rect().position.y + ) + _expect( + is_equal_approx(tab_overlap, discover.size.y * 0.5), + "Join-game content does not cover the lower half of its organizer tabs.", + ) + direct_content.hide() + list_content.show() address.hide() name_edit.hide() server_list.show() @@ -174,14 +256,15 @@ func _validate_join_game_navigation() -> void: _set_button_state(delete, false) _set_button_state(cancel, false) _set_button_state(back, true) - page.set("_mode", 0) + page.set("_mode", JoinGamePage.Mode.DISCOVER) page.call("_configure_controller_navigation") await process_frame _assert_neighbor(discover, &"focus_neighbor_bottom", server_list) _assert_neighbor(server_list, &"focus_neighbor_top", discover) _assert_neighbor(server_list, &"focus_neighbor_bottom", refresh) _assert_neighbor(refresh, &"focus_neighbor_right", join) - _assert_neighbor(back, &"focus_neighbor_left", join) + _assert_neighbor(join, &"focus_neighbor_bottom", back) + _assert_neighbor(back, &"focus_neighbor_top", join) var discover_controls: Array[Control] = modes.duplicate() discover_controls.append_array([server_list, refresh, join, back]) _assert_directionally_reachable(discover, discover_controls) @@ -209,18 +292,31 @@ func _validate_join_game_navigation() -> void: "Discovery's visible cursor and selected room should agree immediately.", ) + page.set("_mode", JoinGamePage.Mode.FRIENDS) + page.call("_configure_controller_navigation") + await process_frame + _assert_neighbor(friends, &"focus_neighbor_bottom", server_list) + _assert_neighbor(server_list, &"focus_neighbor_top", friends) + var friend_controls: Array[Control] = modes.duplicate() + friend_controls.append_array([server_list, refresh, join, back]) + _assert_directionally_reachable(friends, friend_controls) + + list_content.hide() + direct_content.show() address.show() address.editable = true server_list.hide() _set_button_state(refresh, false) _set_button_state(join, true) _set_button_state(save, true) - page.set("_mode", 1) + page.set("_mode", JoinGamePage.Mode.DIRECT) page.call("_configure_controller_navigation") await process_frame _assert_neighbor(direct, &"focus_neighbor_bottom", address) _assert_neighbor(address, &"focus_neighbor_top", direct) _assert_neighbor(address, &"focus_neighbor_bottom", join) + _assert_neighbor(save, &"focus_neighbor_bottom", back) + _assert_neighbor(back, &"focus_neighbor_top", save) var direct_controls: Array[Control] = modes.duplicate() direct_controls.append_array([address, join, save, back]) _assert_directionally_reachable(direct, direct_controls) @@ -251,8 +347,10 @@ func _validate_join_game_navigation() -> void: entry.display_name = "Saved server %d" % index saved_entries.append(entry) server_list.add_item(entry.display_name) - page.set("_mode", 2) + page.set("_mode", JoinGamePage.Mode.SAVED) page.set("_visible_entries", saved_entries) + direct_content.hide() + list_content.show() server_list.show() page.call("_configure_controller_navigation") page.call("_restore_entry_selection_and_focus", 1) @@ -387,8 +485,6 @@ func _validate_data_settings_navigation() -> void: "Open Data Folder left a controller-activatable dialog behind.", ) var change_data_folder := panel.get_node("%ChangeDataFolder") as Button - var export_progression := panel.get_node("%ExportProgression") as Button - var import_progression := panel.get_node("%ImportProgression") as Button var copy_fingerprint := panel.get_node("%CopyPlayerFingerprint") as Button var export_player := panel.get_node("%ExportPlayerIdentity") as Button var import_player := panel.get_node("%ImportPlayerIdentity") as Button @@ -398,8 +494,6 @@ func _validate_data_settings_navigation() -> void: data_tab, open_data_folder, change_data_folder, - export_progression, - import_progression, copy_fingerprint, export_player, import_player, @@ -423,7 +517,7 @@ func _validate_data_settings_navigation() -> void: _assert_neighbor( open_data_folder, &"focus_neighbor_bottom", - export_progression, + copy_fingerprint, ) _assert_neighbor( change_data_folder, @@ -433,43 +527,13 @@ func _validate_data_settings_navigation() -> void: _assert_neighbor( change_data_folder, &"focus_neighbor_bottom", - import_progression, + copy_fingerprint, ) _assert_neighbor( - export_progression, + copy_fingerprint, &"focus_neighbor_top", open_data_folder, ) - _assert_neighbor( - export_progression, - &"focus_neighbor_right", - import_progression, - ) - _assert_neighbor( - export_progression, - &"focus_neighbor_bottom", - copy_fingerprint, - ) - _assert_neighbor( - import_progression, - &"focus_neighbor_top", - change_data_folder, - ) - _assert_neighbor( - import_progression, - &"focus_neighbor_left", - export_progression, - ) - _assert_neighbor( - import_progression, - &"focus_neighbor_bottom", - copy_fingerprint, - ) - _assert_neighbor( - copy_fingerprint, - &"focus_neighbor_top", - export_progression, - ) _assert_neighbor( copy_fingerprint, &"focus_neighbor_bottom", @@ -582,6 +646,8 @@ func _validate_settings_adjustment_navigation() -> void: var on_screen_keyboard := panel.get_node( "%OnScreenKeyboardToggle" ) as Button + var swap_scroll := panel.get_node("%SwapScrollToggle") as Button + var invert_y := panel.get_node("%InvertYToggle") as Button var controller_binds := panel.get_node("%ControllerMapping") as Button var keyboard_binds := panel.get_node("%KeyboardMapping") as Button _expect( @@ -594,6 +660,26 @@ func _validate_settings_adjustment_navigation() -> void: and is_equal_approx(controller_slider.step, 0.1), "Sensitivity sliders do not retain their authored increments.", ) + _assert_neighbor( + invert_y, + &"focus_neighbor_bottom", + swap_scroll, + ) + _assert_neighbor( + swap_scroll, + &"focus_neighbor_top", + invert_y, + ) + _assert_neighbor( + swap_scroll, + &"focus_neighbor_bottom", + on_screen_keyboard, + ) + _assert_neighbor( + on_screen_keyboard, + &"focus_neighbor_top", + swap_scroll, + ) _assert_neighbor( on_screen_keyboard, &"focus_neighbor_bottom", @@ -623,7 +709,8 @@ func _validate_settings_adjustment_navigation() -> void: panel.get_node("%ControlsTab") as Control, mouse_slider, controller_slider, - panel.get_node("%InvertYToggle") as Control, + invert_y, + swap_scroll, on_screen_keyboard, controller_binds, keyboard_binds, diff --git a/tests/economy_regression_validation.gd b/tests/economy_regression_validation.gd index 9a53975..523dbb3 100644 --- a/tests/economy_regression_validation.gd +++ b/tests/economy_regression_validation.gd @@ -94,11 +94,15 @@ func _run() -> void: func _run_multiplayer_host() -> void: root.size = Vector2i(1280, 720) var main: Node = await _create_initialized_main() + var session := main.get_node("%NetworkSession") as NetworkSession + assert(bool(main.call( + "_apply_world", WorldLayout.STARTER_ISLAND, 1, true + ))) + assert(session.set_host_world(WorldLayout.STARTER_ISLAND, 1)) assert(bool(main.call("_prepare_private_host"))) var save_manager := main.get("_save_manager") as PlayerSaveManager assert(save_manager.initialize_new_game()) main.call("_enter_gameplay") - var session := main.get_node("%NetworkSession") as NetworkSession assert(session.set_host_open(true)) var client_connected := false # Loading the full client world can take longer on a cold import. Keep the @@ -126,7 +130,10 @@ func _run_multiplayer_host() -> void: var interaction := main.get("_shop_interaction") as FishingShopInteraction assert(interaction != null) remote_avatar.global_position = interaction.global_position - var completion_deadline: int = Time.get_ticks_msec() + 30000 + # The client can finish loading its local presentation well after the host + # has authenticated it, especially during a cold import. Keep the authority + # alive until the client completes the transaction sequence or disconnects. + var completion_deadline: int = Time.get_ticks_msec() + 90000 while Time.get_ticks_msec() < completion_deadline: await process_frame if session.get_authenticated_peer_ids().size() < 2: diff --git a/tests/fish_hotbar_showcase_validation.gd b/tests/fish_hotbar_showcase_validation.gd index 9421816..c2d687c 100644 --- a/tests/fish_hotbar_showcase_validation.gd +++ b/tests/fish_hotbar_showcase_validation.gd @@ -56,7 +56,7 @@ func _run() -> void: ) fish_catch.ensure_identity() player.inventory.add_catch(fish_catch) - player.collection_log.mark_quality_discovered( + player.collection_log.record_catch( fish_catch.fish_id, fish_catch.quality, ) @@ -132,6 +132,19 @@ func _run() -> void: int(saved_masks[String(fish.id)]) == FishQuality.bit_for(FishQuality.Tier.EXCEPTIONAL) ) + var saved_catch_counts: Dictionary = ( + (parsed as Dictionary)["collection"]["catch_counts"] + ) + assert(int(saved_catch_counts[String(fish.id)]) == 1) + var legacy_without_counts: Dictionary = parsed.duplicate(true) + (legacy_without_counts["collection"] as Dictionary).erase("catch_counts") + var legacy_snapshot: RefCounted = save_manager.call( + "_build_load_snapshot", + legacy_without_counts, + ) + assert(legacy_snapshot != null) + var recovered_counts: Dictionary = legacy_snapshot.get("catch_counts") + assert(int(recovered_counts.get(fish.id, 0)) == 1) assert(player.hotbar.clear_slot(1)) assert(player.experience.restore_total_experience(0)) @@ -159,6 +172,7 @@ func _run() -> void: FishQuality.Tier.EXCEPTIONAL, ) ) + assert(player.collection_log.get_catch_count(fish.id) == 1) assert(service.is_local_showcase_visible()) await _wait_for_held_fish_visibility(player, true) assert(player.inventory.remove_catch_by_id(fish_catch.catch_id) != null) @@ -183,8 +197,8 @@ func _run() -> void: var invalid_state: Dictionary = valid_state.duplicate(true) invalid_state["display_scale"] = 1000.0 assert(not NetworkFishShowcaseProtocol.validate_state(invalid_state)) - assert(NetworkProtocol.PROTOCOL_VERSION == 9) - assert(NetworkProtocol.ENET_CHANNEL_COUNT == 10) + assert(NetworkProtocol.PROTOCOL_VERSION == 10) + assert(NetworkProtocol.ENET_CHANNEL_COUNT == 17) assert( NetworkProtocol.FISH_QUALITY_CAPABILITY == "fish_quality_v1" diff --git a/tests/fish_quality_validation.gd b/tests/fish_quality_validation.gd index 9c5d338..3441344 100644 --- a/tests/fish_quality_validation.gd +++ b/tests/fish_quality_validation.gd @@ -25,13 +25,60 @@ func _run() -> void: _validate_mail_round_trip() _validate_collection_mastery() _validate_version_four_migration() - assert(NetworkProtocol.PROTOCOL_VERSION == 9) - assert(NetworkProtocol.ENET_CHANNEL_COUNT == 10) + _validate_fishing_protocol_v2() + assert(NetworkProtocol.PROTOCOL_VERSION == 10) + assert(NetworkProtocol.ENET_CHANNEL_COUNT == 17) + assert(NetworkProtocol.MOVEMENT_ANIMATION_CHANNEL == 11) + assert( + NetworkProtocol.MOVEMENT_RECONCILIATION_CAPABILITY + == "movement_reconciliation_v2" + ) + assert( + NetworkProtocol.FISHING_REPLICATION_CAPABILITY + == "fishing_replication_v2" + ) assert(NetworkProtocol.FISH_QUALITY_CAPABILITY == "fish_quality_v1") print("Fish quality validation: PASS") quit() +func _validate_fishing_protocol_v2() -> void: + var request: Dictionary = { + "request_id": "cast-1", + "session_id": "session-1", + "origin": [0.0, 1.0, 0.0], + "target": [0.0, 0.0, -4.0], + "charge": 0.5, + "rod_id": "basic_fishing_rod", + "reel_speed": 0.2, + "barrier_damage": 1, + "bite_multiplier": 1.0, + "rarity_multipliers": [], + "discovered_fish_ids": [], + "capacity_available": true, + "movement_sequence": 17, + } + assert(NetworkFishingProtocol.validate_cast_request(request).is_empty()) + var missing_sequence: Dictionary = request.duplicate(true) + missing_sequence.erase("movement_sequence") + assert( + NetworkFishingProtocol.validate_cast_request(missing_sequence) + == "Malformed fishing request." + ) + var invalid_sequence: Dictionary = request.duplicate(true) + invalid_sequence["movement_sequence"] = -1 + assert( + NetworkFishingProtocol.validate_cast_request(invalid_sequence) + == "Fishing request values are outside allowed limits." + ) + assert(NetworkFishingProtocol.OBSERVER_SNAPSHOT_CHANNEL == 10) + assert(NetworkWorldSpawnProtocol.SNAPSHOT_CHANNEL == 15) + assert( + NetworkWorldSpawnProtocol.SNAPSHOT_CHANNEL + != NetworkFishingProtocol.SNAPSHOT_CHANNEL + ) + + func _validate_tiers_and_distribution() -> void: assert(FishQualityType.TIER_COUNT == 5) assert(FishQualityType.display_name(0) == "boring") @@ -194,7 +241,7 @@ func _validate_barrier_challenge_curve() -> void: func _validate_fight_pacing_and_reel_upgrades() -> void: assert(is_equal_approx(CatchController.CHASE_SPEED, 0.07)) - assert(is_equal_approx(CatchController.CHASE_START_DELAY, 1.0)) + assert(is_equal_approx(CatchController.CHASE_START_DELAY, 1.5)) assert(is_equal_approx(CatchController.CHASE_START_OFFSET, 0.04)) assert(is_equal_approx(Player.BASE_REEL_SPEED, 0.16)) @@ -401,6 +448,11 @@ func _validate_collection_mastery() -> void: collection.get_quality_mask(&"bluegill") == FishQualityType.ALL_TIERS_MASK ) + assert(collection.get_catch_count(&"bluegill") == 0) + collection.record_catch(&"bluegill", FishQualityType.Tier.BORING) + collection.record_catch(&"bluegill", FishQualityType.Tier.SHINY) + assert(collection.get_catch_count(&"bluegill") == 2) + assert(int(collection.get_catch_counts()[&"bluegill"]) == 2) collection.queue_free() diff --git a/tests/fish_showcase_multiplayer_validation.gd b/tests/fish_showcase_multiplayer_validation.gd index 72f4a59..5161377 100644 --- a/tests/fish_showcase_multiplayer_validation.gd +++ b/tests/fish_showcase_multiplayer_validation.gd @@ -24,6 +24,10 @@ func _run() -> void: func _run_host() -> void: var main: Node = await _create_initialized_main() var session := main.get_node("%NetworkSession") as NetworkSession + assert(bool(main.call( + "_apply_world", WorldLayout.STARTER_ISLAND, 1, true + ))) + assert(session.set_host_world(WorldLayout.STARTER_ISLAND, 1)) assert(session.start_private_host(TEST_PORT)) var save_manager := main.get("_save_manager") as PlayerSaveManager assert(save_manager.initialize_new_game()) diff --git a/tests/fishing_authority_validation.gd b/tests/fishing_authority_validation.gd index 1f40086..e7c87bb 100644 --- a/tests/fishing_authority_validation.gd +++ b/tests/fishing_authority_validation.gd @@ -19,6 +19,12 @@ func _run() -> void: for _frame: int in 8: await process_frame assert(bool(main.get("_application_initialized"))) + assert(bool(main.call( + "_apply_world", + WorldLayout.GENERATED, + PlayerSaveManager.DEFAULT_WORLD_SEED, + true, + ))) assert(bool(main.call("_prepare_private_host"))) var save_manager := main.get("_save_manager") as PlayerSaveManager assert(save_manager.initialize_new_game()) @@ -151,9 +157,16 @@ func _run() -> void: attempt = attempts.get(session.get_local_peer_id()) assert(attempt != null) assert(player.bag.get_quantity(&"worms") == bait_quantity_before) + var fishing_priority_transitions: Array[bool] = [] + fishing_spot.fishing_input_priority_changed.connect( + func(active: bool) -> void: + fishing_priority_transitions.append(active) + ) service.call("_start_bite", attempt) await process_frame assert(attempt.phase == NetworkFishingAttempt.Phase.FIGHTING) + assert(fishing_spot.is_fishing_input_priority_active()) + assert(fishing_priority_transitions == [true]) assert(player.bag.get_quantity(&"worms") == bait_quantity_before - 1) var catalog: FishPool = main.get("fish_catalog") as FishPool assert(catalog != null) @@ -200,6 +213,7 @@ func _run() -> void: service.call("_on_attempt_escaped", session.get_local_peer_id()) await process_frame assert(not service.has_local_attempt()) + assert(fishing_spot.is_fishing_input_priority_active()) assert(fishing_status.text.is_empty()) assert(not fishing_status.visible) assert(not fishing_panel.visible) @@ -210,6 +224,8 @@ func _run() -> void: ): await process_frame assert(fishing_spot.state == FishingSpotType.FishingState.READY) + assert(not fishing_spot.is_fishing_input_priority_active()) + assert(fishing_priority_transitions == [true, false]) # Leaving a session during the cast presentation must release every local # action and equipment lock. This is the same cleanup path used by an diff --git a/tests/fishing_surface_validation.gd b/tests/fishing_surface_validation.gd index a6724a8..eb02c6c 100644 --- a/tests/fishing_surface_validation.gd +++ b/tests/fishing_surface_validation.gd @@ -490,7 +490,7 @@ func _validate_remote_presentation() -> void: await process_frame var origin: Vector3 = player.get_fishing_rod_tip().global_position var target: Vector3 = origin + Vector3(-4.0, -0.5, 0.0) - presentation.show_cast(origin, target) + presentation.show_cast(origin, target, "cast-attempt") var bobber := presentation.get("_bobber") as MeshInstance3D assert(bobber.visible) assert(presentation.get("_cast_tween") != null) @@ -500,6 +500,22 @@ func _validate_remote_presentation() -> void: await create_timer(0.2).timeout assert(not is_equal_approx(bobber.global_position.y, first_bob_y)) + # A client joining after the reliable cast event reconstructs the current + # remote fishing state from the observer summary instead of waiting for the + # next cast. This also covers a bite/fighting transition received by an + # already active observer. + presentation.cleanup() + presentation.synchronize_active("late-attempt", target, false) + assert(bobber.visible) + assert( + int(player.get("_fishing_visual_phase")) + == Player.FishingVisualPhase.FISHING + ) + presentation.synchronize_active("late-attempt", target, true) + assert(bool(player.get("_fighting_visual_active"))) + presentation.synchronize_active("late-attempt", target, false) + assert(not bool(player.get("_fighting_visual_active"))) + var fish_catch := FishCatchType.new() var fish: FishData = PondPool.candidates.front() fish_catch.fish = fish diff --git a/tests/friend_multiplayer_validation.gd b/tests/friend_multiplayer_validation.gd new file mode 100644 index 0000000..f8ef64d --- /dev/null +++ b/tests/friend_multiplayer_validation.gd @@ -0,0 +1,161 @@ +extends SceneTree + +const MainScene: PackedScene = preload("res://main/main.tscn") +const TEST_PORT: int = 18196 + + +func _initialize() -> void: + call_deferred("_run") + + +func _run() -> void: + var arguments := OS.get_cmdline_user_args() + if arguments.has("host"): + await _run_host() + return + if arguments.has("client"): + await _run_client() + return + push_error("Friend multiplayer validation needs host or client mode.") + quit(1) + + +func _run_host() -> void: + var main := await _create_initialized_main() + var session := main.get_node("%NetworkSession") as NetworkSession + var save_manager := main.get("_save_manager") as PlayerSaveManager + assert(bool(main.call( + "_apply_world", WorldLayout.STARTER_ISLAND, 1, true + ))) + assert(session.set_host_world(WorldLayout.STARTER_ISLAND, 1)) + assert(session.start_private_host(TEST_PORT)) + assert(save_manager.initialize_new_game()) + main.call("_enter_gameplay") + for _frame: int in 4: + await physics_frame + assert(session.set_host_open(true)) + + var remote_peer_id := await _wait_for_remote_peer(session) + assert(remote_peer_id > 1) + assert(session.peer_supports_capability( + remote_peer_id, NetworkProtocol.FRIENDS_CAPABILITY + )) + var remote_record := session.get_peer_record(remote_peer_id) + assert(remote_record != null) + var game_ui := main.get_node("%GameUI") as GameUI + var prompt_deadline := Time.get_ticks_msec() + 8000 + while ( + Time.get_ticks_msec() < prompt_deadline + and not game_ui.is_social_prompt_open() + ): + await process_frame + assert(game_ui.is_social_prompt_open()) + await create_timer(0.15).timeout + game_ui.call("_accept_social_prompt") + + var relationships := main.get_node( + "%PlayerRelationshipStore" + ) as PlayerRelationshipStore + var accepted_deadline := Time.get_ticks_msec() + 8000 + while ( + Time.get_ticks_msec() < accepted_deadline + and not relationships.is_friend(remote_record.identity_fingerprint) + ): + await process_frame + assert(relationships.is_friend(remote_record.identity_fingerprint)) + var friend := relationships.get_friend_record( + remote_record.identity_fingerprint + ) + assert(not str(friend.get("remote_presence_channel", "")).is_empty()) + assert(not str(friend.get("remote_invite_token", "")).is_empty()) + + var disconnect_deadline := Time.get_ticks_msec() + 8000 + while ( + Time.get_ticks_msec() < disconnect_deadline + and session.is_authenticated_peer(remote_peer_id) + ): + await process_frame + assert(not session.is_authenticated_peer(remote_peer_id)) + print("Friend multiplayer host validation: PASS") + await _cleanup(main, session) + + +func _run_client() -> void: + var main := await _create_initialized_main() + main.call( + "_on_title_join_game_requested", + "127.0.0.1:%d" % TEST_PORT, + ) + var session := main.get_node("%NetworkSession") as NetworkSession + var join_deadline := Time.get_ticks_msec() + 20000 + while Time.get_ticks_msec() < join_deadline: + await process_frame + if session.state == NetworkSession.State.VERIFYING_SERVER_IDENTITY: + main.call("_confirm_server_trust") + if session.is_joined_client() and bool(main.get("_gameplay_started")): + break + assert(session.is_joined_client()) + assert(session.supports_server_capability( + NetworkProtocol.FRIENDS_CAPABILITY + )) + var host_record := session.get_peer_record(1) + assert(host_record != null) + var service := main.get_node( + "%NetworkPlayerListService" + ) as NetworkPlayerListService + assert(service.send_friend_request( + 1, + host_record.identity_fingerprint, + host_record.display_name, + )) + + var relationships := main.get_node( + "%PlayerRelationshipStore" + ) as PlayerRelationshipStore + var accepted_deadline := Time.get_ticks_msec() + 8000 + while ( + Time.get_ticks_msec() < accepted_deadline + and not relationships.is_friend(host_record.identity_fingerprint) + ): + await process_frame + assert(relationships.is_friend(host_record.identity_fingerprint)) + var friend := relationships.get_friend_record( + host_record.identity_fingerprint + ) + assert(not str(friend.get("remote_presence_channel", "")).is_empty()) + assert(not str(friend.get("remote_invite_token", "")).is_empty()) + print("Friend multiplayer client validation: PASS") + await _cleanup(main, session) + + +func _create_initialized_main() -> Node: + root.size = Vector2i(1280, 720) + var main := MainScene.instantiate() + root.add_child(main) + for _frame: int in 4: + await process_frame + if not bool(main.get("_application_initialized")): + main.call("_activate_selected_data_path", "", true) + for _frame: int in 8: + await process_frame + assert(bool(main.get("_application_initialized"))) + return main + + +func _wait_for_remote_peer(session: NetworkSession) -> int: + var deadline := Time.get_ticks_msec() + 20000 + while Time.get_ticks_msec() < deadline: + await process_frame + for peer_id: int in session.get_authenticated_peer_ids(): + if peer_id != session.get_local_peer_id(): + return peer_id + return 0 + + +func _cleanup(main: Node, session: NetworkSession) -> void: + session.disconnect_session("") + main.queue_free() + for _frame: int in 4: + await process_frame + await create_timer(0.1).timeout + quit() diff --git a/tests/friend_multiplayer_validation.gd.uid b/tests/friend_multiplayer_validation.gd.uid new file mode 100644 index 0000000..d243a6b --- /dev/null +++ b/tests/friend_multiplayer_validation.gd.uid @@ -0,0 +1 @@ +uid://cxltqyom4yt3j diff --git a/tests/friend_relationship_validation.gd b/tests/friend_relationship_validation.gd new file mode 100644 index 0000000..ce6bd90 --- /dev/null +++ b/tests/friend_relationship_validation.gd @@ -0,0 +1,76 @@ +extends SceneTree + +const FRIEND_FINGERPRINT := ( + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" +) + + +func _initialize() -> void: + call_deferred("_run") + + +func _run() -> void: + var data_root := PlayerDataRoot.new() + root.add_child(data_root) + var portable_path := ProjectSettings.globalize_path( + "user://friend-relationship-validation" + ) + var created := data_root.create_unbound_root(portable_path) + assert(bool(created.get("ok", false))) + assert(data_root.activate_process_root(portable_path)) + + var store := PlayerRelationshipStore.new() + root.add_child(store) + store.configure_storage( + data_root.path_for(&"player_relationships"), data_root + ) + var local_capabilities := store.create_friend_capabilities() + var remote_capabilities := store.create_friend_capabilities() + assert(not local_capabilities.is_empty()) + assert(not remote_capabilities.is_empty()) + assert(store.add_friend( + FRIEND_FINGERPRINT, + "Pond Friend", + local_capabilities, + { + "presence_channel": remote_capabilities["presence_channel"], + "invite_token": remote_capabilities["invite_token"], + }, + )) + assert(store.is_friend(FRIEND_FINGERPRINT)) + + var reloaded := PlayerRelationshipStore.new() + root.add_child(reloaded) + reloaded.configure_storage( + data_root.path_for(&"player_relationships"), data_root + ) + assert(reloaded.is_friend(FRIEND_FINGERPRINT)) + var friend := reloaded.get_friend_record(FRIEND_FINGERPRINT) + assert( + str(friend["remote_presence_channel"]) + == str(remote_capabilities["presence_channel"]) + ) + assert( + str(friend["remote_invite_token"]) + == str(remote_capabilities["invite_token"]) + ) + assert(reloaded.set_blocked(FRIEND_FINGERPRINT, "Pond Friend", true)) + assert(reloaded.is_blocked(FRIEND_FINGERPRINT)) + assert(reloaded.is_muted(FRIEND_FINGERPRINT)) + assert(not reloaded.is_friend(FRIEND_FINGERPRINT)) + assert(reloaded.set_blocked(FRIEND_FINGERPRINT, "Pond Friend", false)) + assert(not reloaded.is_blocked(FRIEND_FINGERPRINT)) + assert(not reloaded.is_muted(FRIEND_FINGERPRINT)) + assert(not reloaded.is_friend(FRIEND_FINGERPRINT)) + + var hello := NetworkProtocol.make_client_hello( + "profile", + "Pond Friend", + "nonce", + ) + assert( + NetworkProtocol.FRIENDS_CAPABILITY + in PackedStringArray(hello.get("capability_flags", [])) + ) + print("Friend relationship validation: PASS") + quit() diff --git a/tests/friend_relationship_validation.gd.uid b/tests/friend_relationship_validation.gd.uid new file mode 100644 index 0000000..aa2acaf --- /dev/null +++ b/tests/friend_relationship_validation.gd.uid @@ -0,0 +1 @@ +uid://d3v4e1xtu8ytq diff --git a/tests/generated_world_runtime_validation.gd b/tests/generated_world_runtime_validation.gd index d97be79..64b6ee1 100644 --- a/tests/generated_world_runtime_validation.gd +++ b/tests/generated_world_runtime_validation.gd @@ -68,6 +68,7 @@ func _run() -> void: configured_generator.elevated_cliff_double_third_tier_chance = 0.0 root.add_child(region) await process_frame + assert(region.generate_world(FIRST_SEED)) await physics_frame var generator := region.get_node( @@ -348,6 +349,27 @@ func _validate_generated_region( generator.get_generated_chunks_root().get_child_count() == expected_chunk_count ) + var generated_root := generator.get_generated_chunks_root() + var terrain_collision_batches := generated_root.find_children( + "TerrainCollisionBatch_*", + "StaticBody3D", + true, + false, + ) + assert(not terrain_collision_batches.is_empty()) + assert( + terrain_collision_batches.size() + <= ceili(float(generator.grid_size.x) / generator.collision_batch_size) + * ceili(float(generator.grid_size.y) / generator.collision_batch_size) + ) + assert( + generated_root.find_children( + "TerrainCollision", + "StaticBody3D", + true, + false, + ).is_empty() + ) assert( generator.get_primary_terrain_meshes().size() == ( @@ -769,7 +791,6 @@ func _validate_elevated_cliff_feature( stable_id, ) assert(source_mesh != null and source_mesh.mesh != null) - assert(source_mesh.has_node("TerrainCollision")) continue layered_count += 1 var base_layer := chunk_root.get_node_or_null("TerrainBaseLayer") @@ -799,8 +820,6 @@ func _validate_elevated_cliff_feature( ) assert(base_mesh != null and base_mesh.mesh != null) assert(overlay_mesh != null and overlay_mesh.mesh != null) - assert(base_mesh.has_node("TerrainBaseLayerCollision")) - assert(overlay_mesh.has_node("TerrainCollision")) assert(layered_count == (29 if has_coastal_feature else 23)) var stacked_keys := generator.stacked_elevated_placement_keys() assert(stacked_keys.size() in [0, 4]) @@ -837,7 +856,6 @@ func _validate_elevated_cliff_feature( stacked_id, ) assert(stacked_mesh != null and stacked_mesh.mesh != null) - assert(stacked_mesh.has_node("TerrainCollision")) assert(stacked_count == 4) @@ -1056,7 +1074,11 @@ func _validate_decoration_transform( else: assert(collision == null) var query := PhysicsRayQueryParameters3D.create( - prop.global_position + Vector3.UP * 8.0, + # Stay below neighboring cliff overhangs while still beginning above the + # authored walkable surface. Regional collision batches intentionally + # keep every original shape on one body, so excluding an overhang body + # would also exclude the ground beneath the prop. + prop.global_position + Vector3.UP * 0.1, prop.global_position + Vector3.DOWN * 8.0, 1, ) @@ -1361,7 +1383,10 @@ func _validate_pond_collision( var hit := region.get_world_3d().direct_space_state.intersect_ray(query) assert(not hit.is_empty()) var collider := hit.get("collider") as Node - assert(collider != null and collider.get_parent() == pond) + assert( + collider != null + and collider.has_meta(&"terrain_collision_batch") + ) func _decoration_group_count( diff --git a/tests/job_multiplayer_validation.gd b/tests/job_multiplayer_validation.gd index c31d392..6c0fa5b 100644 --- a/tests/job_multiplayer_validation.gd +++ b/tests/job_multiplayer_validation.gd @@ -24,6 +24,10 @@ func _run_host() -> void: var main: Node = await _create_initialized_main() var session := main.get_node("%NetworkSession") as NetworkSession var jobs := main.get_node("%PlayerJobService") as PlayerJobService + assert(bool(main.call( + "_apply_world", WorldLayout.STARTER_ISLAND, 1, true + ))) + assert(session.set_host_world(WorldLayout.STARTER_ISLAND, 1)) assert(session.start_dedicated_host(TEST_PORT, 8, "127.0.0.1")) jobs.begin_progression_session() await process_frame diff --git a/tests/job_system_validation.gd b/tests/job_system_validation.gd index 8ffc633..1fe5ceb 100644 --- a/tests/job_system_validation.gd +++ b/tests/job_system_validation.gd @@ -89,6 +89,7 @@ func _run() -> void: net_page.call("_select_view", TheNetPage.View.LIFETIME) await process_frame _validate_fishnet_bounds(net_page) + await _validate_compact_value_tooltips(net_page) await _validate_unavailable_fishnet_layout() var wallet_before: int = player.wallet.get_balance() @@ -287,6 +288,53 @@ func _validate_fishnet_bounds(page: TheNetPage) -> void: assert(row.size.x <= jobs_scroll.size.x + 0.5) +func _validate_compact_value_tooltips(page: TheNetPage) -> void: + assert(str(page.call("_compact_integer", 2400)) == "2.4k") + assert(str(page.call("_compact_integer", 2500)) == "2.5k") + var list := page.get("_list") as VBoxContainer + assert(list != null) + var jobs: Array[Dictionary] = [{ + "title": "compact tooltip check", + "description": "compact values keep their exact values on hover", + "target": 2500, + "progress": 2400, + "fish_coin": 1200, + "experience": 3400, + }] + page.call("_build_job_rows", jobs, "") + await process_frame + var row := list.get_child(list.get_child_count() - 1) as PanelContainer + assert(row != null) + var progress_bar: ProgressBar + var progress_count: Label + var reward: VBoxContainer + for child: Node in row.find_children("*", "ProgressBar", true, false): + progress_bar = child as ProgressBar + break + for child: Node in row.find_children("*", "Label", true, false): + var label := child as Label + if label != null and label.text == "2.4k / 2.5k": + progress_count = label + break + for child: Node in row.find_children("*", "VBoxContainer", true, false): + var candidate := child as VBoxContainer + if candidate != null and candidate.tooltip_text == ( + "1200 fish coins · 3400 xp" + ): + reward = candidate + break + assert(progress_bar != null) + assert(progress_bar.tooltip_text == "2400 / 2500") + assert(progress_bar.mouse_filter == Control.MOUSE_FILTER_STOP) + assert(progress_count != null) + assert(progress_count.tooltip_text == "2400 / 2500") + assert(progress_count.mouse_filter == Control.MOUSE_FILTER_STOP) + assert(reward != null) + assert(reward.mouse_filter == Control.MOUSE_FILTER_STOP) + row.queue_free() + await process_frame + + func _validate_creature_jobs(jobs: PlayerJobService) -> void: var fish_count: int = 0 var insect_count: int = 0 diff --git a/tests/keyboard_mouse_mapping_validation.gd b/tests/keyboard_mouse_mapping_validation.gd index d8e9a88..db0bb71 100644 --- a/tests/keyboard_mouse_mapping_validation.gd +++ b/tests/keyboard_mouse_mapping_validation.gd @@ -28,6 +28,16 @@ func _run() -> void: defaults.size() == KeyboardMouseMappingManagerType.ROLE_ORDER.size() ) + assert( + not manager.get_binding( + KeyboardMouseMappingManagerType.ROLE_INTERACT + ).is_empty() + ) + assert( + manager.get_binding_label( + KeyboardMouseMappingManagerType.ROLE_INTERACT + ) == "e" + ) assert( str(defaults[ str(KeyboardMouseMappingManagerType.ROLE_PRIMARY_ACTION) @@ -120,6 +130,11 @@ func _run() -> void: interact_key.pressed = true panel._input(interact_key) assert(_has_physical_key(&"interact", KEY_F)) + assert( + manager.get_binding_label( + KeyboardMouseMappingManagerType.ROLE_INTERACT + ) == "f" + ) assert(not panel.is_capturing()) var settings_panel := SettingsPanelScene.instantiate() as SettingsPanel diff --git a/tests/late_join_multiplayer_validation.gd b/tests/late_join_multiplayer_validation.gd index f726dbc..3813486 100644 --- a/tests/late_join_multiplayer_validation.gd +++ b/tests/late_join_multiplayer_validation.gd @@ -3,6 +3,8 @@ extends SceneTree const MainScene: PackedScene = preload("res://main/main.tscn") const TEST_PORT: int = 18194 const LATE_MESSAGE: String = "late join visibility check" +const CLEAR_MESSAGE: String = "late join animation clear check" +const ACTIVE_ACTION: StringName = &"draw" func _initialize() -> void: @@ -26,8 +28,21 @@ func _run_host() -> void: var main: Node = await _create_initialized_main() var session := main.get_node("%NetworkSession") as NetworkSession var save_manager := main.get("_save_manager") as PlayerSaveManager + assert(bool(main.call( + "_apply_world", + WorldLayout.STARTER_ISLAND, + NetworkProtocol.DEFAULT_WORLD_SEED, + true, + ))) + assert(session.set_host_world( + WorldLayout.STARTER_ISLAND, + NetworkProtocol.DEFAULT_WORLD_SEED, + )) assert(session.start_private_host(TEST_PORT)) - assert(save_manager.initialize_new_game()) + assert(save_manager.initialize_new_game( + NetworkProtocol.DEFAULT_WORLD_SEED, + WorldLayout.STARTER_ISLAND, + )) main.call("_enter_gameplay") for _frame: int in 4: await physics_frame @@ -35,7 +50,26 @@ func _run_host() -> void: assert(await _wait_for_registry_size(session, 3)) var spawn := main.get_node("%PlayerSpawnService") as PlayerSpawnService assert(spawn.get_peer_ids().size() == 3) - await create_timer(5.0).timeout + var action_peer_id: int = await _wait_for_remote_action( + spawn, + ACTIVE_ACTION, + ) + assert(action_peer_id > 1) + assert(await _wait_for_avatar_bool( + spawn, + action_peer_id, + &"_active_item_is_net", + true, + )) + assert(await _wait_for_avatar_sitting(spawn, action_peer_id, true)) + assert(await _wait_for_avatar_action( + spawn, + action_peer_id, + &"", + )) + assert(await _wait_for_avatar_sitting(spawn, action_peer_id, false)) + var chat := main.get_node("%NetworkChatService") as NetworkChatService + assert(await _wait_for_history_message(chat, CLEAR_MESSAGE)) print("Late-join multiplayer host validation: PASS") await _cleanup(main, session) @@ -47,7 +81,23 @@ func _run_first_client() -> void: var preview: Dictionary = profile.get_persisted_appearance().duplicate(true) preview["scale"] = 0.9 assert(profile.preview_appearance(preview)) - await create_timer(2.0).timeout + var player := main.get("_player") as Player + assert(player != null) + var floor_deadline: int = Time.get_ticks_msec() + 5000 + while Time.get_ticks_msec() < floor_deadline and not player.is_on_floor(): + await physics_frame + assert(player.is_on_floor()) + player.toggle_sitting() + assert(player.is_sitting()) + assert(player.bag.add_item(&"crab_net")) + assert(player.hotbar.assign_item(0, &"crab_net")) + assert(player.hotbar.select_slot(0)) + for _frame: int in 2: + await process_frame + assert(bool(player.get("_active_item_is_net"))) + assert(player.begin_animation_action(ACTIVE_ACTION)) + await create_timer(0.5).timeout + assert(StringName(str(player.get("_animation_action_id"))) == ACTIVE_ACTION) var chat := main.get_node("%NetworkChatService") as NetworkChatService var deadline: int = Time.get_ticks_msec() + 15000 while Time.get_ticks_msec() < deadline: @@ -61,6 +111,15 @@ func _run_first_client() -> void: assert(_history_contains(chat, LATE_MESSAGE)) var spawn := main.get_node("%PlayerSpawnService") as PlayerSpawnService assert(spawn.get_peer_ids().size() == 3) + # Keep the action active until the late peer has joined and announced that + # it has received the lifecycle snapshot. This exercises client -> host -> + # existing client/late client replication, including the join-in-progress + # state carried by the spawn envelope. + await create_timer(1.0).timeout + player.end_animation_action() + player.toggle_sitting() + assert(not player.is_sitting()) + assert(await _wait_for_history_message(chat, CLEAR_MESSAGE)) print("Late-join first-client validation: PASS") await _cleanup(main, session) @@ -77,9 +136,28 @@ func _run_late_client() -> void: assert(session.get_authenticated_peer_ids().size() == 3) var spawn := main.get_node("%PlayerSpawnService") as PlayerSpawnService assert(spawn.get_peer_ids().size() == 3) + var action_peer_id: int = await _wait_for_remote_action( + spawn, + ACTIVE_ACTION, + ) + assert(action_peer_id > 1) + assert(await _wait_for_avatar_bool( + spawn, + action_peer_id, + &"_active_item_is_net", + true, + )) + assert(await _wait_for_avatar_sitting(spawn, action_peer_id, true)) var chat := main.get_node("%NetworkChatService") as NetworkChatService assert(chat.send_local_message(LATE_MESSAGE)) - await create_timer(1.0).timeout + assert(await _wait_for_avatar_action( + spawn, + action_peer_id, + &"", + )) + assert(await _wait_for_avatar_sitting(spawn, action_peer_id, false)) + assert(chat.send_local_message(CLEAR_MESSAGE)) + await create_timer(0.5).timeout print("Late-join late-client validation: PASS") await _cleanup(main, session) @@ -114,6 +192,136 @@ func _history_contains(service: NetworkChatService, body: String) -> bool: ) +func _wait_for_history_message( + service: NetworkChatService, + body: String, +) -> bool: + var deadline: int = Time.get_ticks_msec() + 10000 + while Time.get_ticks_msec() < deadline: + await process_frame + if _history_contains(service, body): + return true + return false + + +func _wait_for_remote_action( + spawn_service: PlayerSpawnService, + action_id: StringName, +) -> int: + var deadline: int = Time.get_ticks_msec() + 10000 + while Time.get_ticks_msec() < deadline: + await process_frame + for peer_id: int in spawn_service.get_peer_ids(): + var avatar: Player = spawn_service.get_avatar(peer_id) + if ( + avatar != null + and _observed_action_id(avatar) == action_id + ): + return peer_id + print( + "animation wait timed out: ", + _action_debug_snapshot(spawn_service), + ) + return 0 + + +func _wait_for_avatar_action( + spawn_service: PlayerSpawnService, + peer_id: int, + action_id: StringName, +) -> bool: + var deadline: int = Time.get_ticks_msec() + 10000 + while Time.get_ticks_msec() < deadline: + await process_frame + var avatar: Player = spawn_service.get_avatar(peer_id) + if ( + avatar != null + and _observed_action_id(avatar) == action_id + ): + return true + print( + "animation clear wait timed out: ", + _action_debug_snapshot(spawn_service), + ) + return false + + +func _wait_for_avatar_bool( + spawn_service: PlayerSpawnService, + peer_id: int, + property_name: StringName, + expected: bool, +) -> bool: + var deadline: int = Time.get_ticks_msec() + 10000 + while Time.get_ticks_msec() < deadline: + await process_frame + var avatar: Player = spawn_service.get_avatar(peer_id) + if avatar != null and bool(avatar.get(property_name)) == expected: + return true + return false + + +func _wait_for_avatar_sitting( + spawn_service: PlayerSpawnService, + peer_id: int, + expected: bool, +) -> bool: + var deadline: int = Time.get_ticks_msec() + 10000 + while Time.get_ticks_msec() < deadline: + await process_frame + var avatar: Player = spawn_service.get_avatar(peer_id) + if avatar != null and avatar.is_sitting() == expected: + return true + var avatar: Player = spawn_service.get_avatar(peer_id) + if avatar != null: + print( + "sitting wait timed out: ", + { + "peer_id": peer_id, + "expected": expected, + "sitting": avatar.is_sitting(), + "sit_after_landing": bool(avatar.get("_sit_after_landing")), + "on_floor": avatar.is_on_floor(), + "position": avatar.global_position, + "velocity": avatar.velocity, + "authoritative": bool(avatar.get( + "_network_authoritative_simulation" + )), + "last_input": int(avatar.get( + "_last_network_input_sequence" + )), + }, + ) + return false + + +func _observed_action_id(avatar: Player) -> StringName: + return StringName(str(avatar.get( + "_animation_action_id" + if bool(avatar.get("_network_authoritative_simulation")) + else "_network_target_animation_action_id" + ))) + + +func _action_debug_snapshot(spawn_service: PlayerSpawnService) -> Dictionary: + var result: Dictionary = {} + for peer_id: int in spawn_service.get_peer_ids(): + var avatar: Player = spawn_service.get_avatar(peer_id) + if avatar == null: + continue + result[peer_id] = { + "authoritative": bool(avatar.get( + "_network_authoritative_simulation" + )), + "source": str(avatar.get("_animation_action_id")), + "target": str(avatar.get( + "_network_target_animation_action_id" + )), + "last_input": int(avatar.get("_last_network_input_sequence")), + } + return result + + func _create_initialized_main() -> Node: root.size = Vector2i(1280, 720) var main: Node = MainScene.instantiate() diff --git a/tests/light_performance_profile_validation.gd b/tests/light_performance_profile_validation.gd index 4533abb..f56db35 100644 --- a/tests/light_performance_profile_validation.gd +++ b/tests/light_performance_profile_validation.gd @@ -24,6 +24,12 @@ func _run() -> void: for _frame: int in 8: await process_frame assert(bool(main.get("_application_initialized"))) + assert(bool(main.call( + "_apply_world", + WorldLayout.GENERATED, + PlayerSaveManager.DEFAULT_WORLD_SEED, + true, + ))) _validate_main_profile(main) _validate_minimal_weather(main) _stop_audio_players(main) @@ -42,6 +48,12 @@ func _run() -> void: for _frame: int in 8: await process_frame assert(bool(normal_main.get("_application_initialized"))) + assert(bool(normal_main.call( + "_apply_world", + WorldLayout.GENERATED, + PlayerSaveManager.DEFAULT_WORLD_SEED, + true, + ))) _validate_normal_profile(normal_main) _validate_new_game_music_transition(normal_main) _stop_audio_players(normal_main) diff --git a/tests/logbook_validation.gd b/tests/logbook_validation.gd index 1645096..7eca559 100644 --- a/tests/logbook_validation.gd +++ b/tests/logbook_validation.gd @@ -284,10 +284,11 @@ func _validate_page() -> void: ) fish_catch.ensure_identity() inventory.add_catch(fish_catch) + collection.record_catch(fish_catch.fish_id, fish_catch.quality) page.call("_select_entry", &"bluegill", &"bluegill") await process_frame assert(not _detail_text(page).contains("number owned")) - assert(_detail_text(page).contains("number caught\nunknown")) + assert(_detail_text(page).contains("number caught\n1")) assert(_detail_text(page).contains("body of water\nfresh water")) assert( _detail_text(page).contains( @@ -412,6 +413,8 @@ func _validate_page() -> void: assert(stats_view.visible) var stats_text: String = _descendant_label_text(stats_view) assert(stats_text.contains("catalog number")) + assert(stats_text.contains("number caught")) + assert(stats_text.contains("1")) assert(stats_text.contains("seasons")) assert(not stats_text.contains("number owned")) _validate_overlay_fonts(stats_view) diff --git a/tests/movement_multiplayer_validation.gd b/tests/movement_multiplayer_validation.gd index bbd9efd..f331534 100644 --- a/tests/movement_multiplayer_validation.gd +++ b/tests/movement_multiplayer_validation.gd @@ -32,7 +32,10 @@ func _validate_latency_smoothing() -> void: await process_frame avatar.set_process(false) avatar.set_physics_process(false) + _validate_compact_input_encoding() _validate_compact_snapshot_encoding() + _validate_compact_animation_encoding() + _validate_animation_action_ordering(avatar) _validate_transit_estimation() _validate_remote_snapshot_smoothing(avatar) _validate_reliable_jump_intent(avatar) @@ -41,6 +44,26 @@ func _validate_latency_smoothing() -> void: await process_frame +func _validate_compact_input_encoding() -> void: + var input: Dictionary = _movement_input( + 12, + true, + true, + true, + &"strike", + 4, + true, + ) + var encoded: Array = NetworkSession._encode_movement_input(input) + assert(encoded.size() == NetworkSession.MOVEMENT_INPUT_FIELD_COUNT) + assert(var_to_bytes(encoded).size() < var_to_bytes(input).size()) + assert(NetworkSession._decode_movement_input(encoded) == input) + assert(NetworkSession._decode_movement_input(encoded.slice(0, 3)).is_empty()) + var unknown_flags: Array = encoded.duplicate() + unknown_flags[3] = 1 << 12 + assert(NetworkSession._decode_movement_input(unknown_flags).is_empty()) + + func _validate_compact_snapshot_encoding() -> void: var moving_snapshot: Dictionary = _network_snapshot( Vector3.ZERO, @@ -54,31 +77,133 @@ func _validate_compact_snapshot_encoding() -> void: NetworkSession._encode_movement_snapshot(moving_snapshot) ) assert(var_to_bytes(encoded_snapshots).size() < 1200) + var expected_snapshot: Dictionary = moving_snapshot.duplicate(true) + expected_snapshot.erase("animation_state") + assert( + NetworkSession._decode_movement_snapshot(encoded_snapshots[0]) + == expected_snapshot + ) assert( NetworkSession._decode_movement_snapshot( - encoded_snapshots[0] - ) == moving_snapshot + encoded_snapshots[0].slice(0, 4) + ).is_empty() ) - var paused_snapshot: Dictionary = moving_snapshot.duplicate(true) - paused_snapshot["animation_state"] = ( + var invalid_snapshot_flags: Array = encoded_snapshots[0].duplicate() + invalid_snapshot_flags[5] = 1 << 12 + assert( + NetworkSession._decode_movement_snapshot( + invalid_snapshot_flags + ).is_empty() + ) + + +func _validate_compact_animation_encoding() -> void: + var paused_state := NetworkPlayerAnimationProtocol.make_state( + NetworkPlayerAnimationProtocol.LOCOMOTION_IDLE, + true, + &"strike", + 7, + 0.5, + true, + ) + var encoded: Array = NetworkSession._encode_movement_animation( + 2, + paused_state, + ) + assert(encoded.size() == NetworkSession.MOVEMENT_ANIMATION_FIELD_COUNT) + var decoded: Dictionary = NetworkSession._decode_movement_animation(encoded) + assert(int(decoded.get("peer_id", 0)) == 2) + assert(Dictionary(decoded.get("state", {})) == paused_state) + var advanced_state: Dictionary = paused_state.duplicate(true) + advanced_state["action"]["elapsed"] = 0.75 + assert( + NetworkSession._movement_animation_signature(advanced_state) + == NetworkSession._movement_animation_signature(paused_state) + ) + var action: Dictionary = paused_state["action"] + var encoded_action: Array = ( + NetworkSession._encode_movement_animation_action(action, true) + ) + assert( + encoded_action.size() + == NetworkSession.MOVEMENT_ANIMATION_ACTION_FIELD_COUNT + ) + var decoded_action: Dictionary = ( + NetworkSession._decode_movement_animation_action(encoded_action) + ) + assert(Dictionary(decoded_action.get("action", {})) == action) + assert(bool(decoded_action.get("sitting", false))) + assert( + NetworkSession._decode_movement_animation_action( + encoded_action.slice(0, 2) + ).is_empty() + ) + + +func _validate_animation_action_ordering(avatar: Player) -> void: + var draw := NetworkPlayerAnimationProtocol.make_action_state( + &"draw", 5, 0.2 + ) + avatar.apply_authoritative_network_animation_action(draw) + assert(StringName(str(avatar.get("_animation_action_id"))) == &"draw") + var cleared := NetworkPlayerAnimationProtocol.make_action_state( + &"", 6, 0.0 + ) + avatar.apply_authoritative_network_animation_action(cleared) + assert(StringName(str(avatar.get("_animation_action_id"))).is_empty()) + avatar.apply_authoritative_network_animation_action(draw) + assert(StringName(str(avatar.get("_animation_action_id"))).is_empty()) + avatar.apply_authoritative_network_animation_action( + NetworkPlayerAnimationProtocol.make_action_state(&"strike", 6, 0.0) + ) + assert(StringName(str(avatar.get("_animation_action_id"))).is_empty()) + var strike := NetworkPlayerAnimationProtocol.make_action_state( + &"strike", 7, 0.2 + ) + avatar.apply_authoritative_network_animation_action(strike) + avatar.apply_authoritative_network_animation_action( + NetworkPlayerAnimationProtocol.make_action_state( + &"strike", 8, 0.4, true + ) + ) + avatar.apply_authoritative_network_animation_action(strike) + assert(bool(avatar.get("_animation_action_paused"))) + avatar.apply_authoritative_network_animation_action( + NetworkPlayerAnimationProtocol.make_action_state(&"", 9, 0.0) + ) + + avatar.configure_network_remote(false) + avatar.apply_network_animation_state( NetworkPlayerAnimationProtocol.make_state( NetworkPlayerAnimationProtocol.LOCOMOTION_IDLE, true, &"strike", - 7, - 0.5, + 9, + 0.4, true, ) ) - var paused_encoded: Array = NetworkSession._encode_movement_snapshot( - paused_snapshot + avatar.apply_network_animation_state( + NetworkPlayerAnimationProtocol.make_state( + NetworkPlayerAnimationProtocol.LOCOMOTION_WALKING, + true, + &"draw", + 8, + 0.1, + ) ) - assert(paused_encoded.size() == NetworkSession.MOVEMENT_SNAPSHOT_FIELD_COUNT) - var paused_decoded: Dictionary = ( - NetworkSession._decode_movement_snapshot(paused_encoded) + assert( + StringName(str(avatar.get("_network_target_animation_action_id"))) + == &"strike" + ) + avatar.apply_network_animation_state( + NetworkPlayerAnimationProtocol.make_state( + NetworkPlayerAnimationProtocol.LOCOMOTION_IDLE, + true, + &"", + 10, + ) ) - assert(not paused_decoded.is_empty()) - assert(bool(paused_decoded["animation_state"]["action"]["paused"])) func _validate_transit_estimation() -> void: @@ -158,14 +283,16 @@ func _validate_remote_snapshot_smoothing(avatar: Player) -> void: avatar.set_local_control(true) avatar.global_position = Vector3(0.8, 0.0, 0.0) + var replay_input: Dictionary = _movement_input(2, false) + replay_input["axis"] = [1.0, 0.0] + var pending_inputs: Array[Dictionary] = [replay_input] avatar.apply_local_prediction_correction( moving_snapshot, - 10, + pending_inputs, 1.0 / 30.0, - 0.1, ) assert(avatar.global_position.x < 0.8) - assert(avatar.global_position.x > 0.7) + assert(avatar.global_position.x > 0.0) func _validate_reliable_jump_intent(avatar: Player) -> void: @@ -178,9 +305,8 @@ func _validate_reliable_jump_intent(avatar: Player) -> void: assert(int(avatar.get("_local_network_jump_intent_sequence")) == 20) avatar.apply_local_prediction_correction( _network_snapshot(avatar.global_position, Vector3.ZERO, 20), - 21, + [], 1.0 / 30.0, - 0.0, ) assert(not bool(avatar.capture_network_input(22)["jump"])) @@ -209,12 +335,24 @@ func _validate_reliable_jump_intent(avatar: Player) -> void: func _validate_stale_input_expiry(avatar: Player) -> void: avatar.configure_network_remote(true) - avatar.apply_authoritative_network_input(_movement_input(40, true)) + var high_latency_timeout := ( + Player.resolve_network_input_stale_timeout_seconds(400) + ) + assert(high_latency_timeout > Player.NETWORK_INPUT_STALE_TIMEOUT_SECONDS) + avatar.apply_authoritative_network_input( + _movement_input(40, true), + high_latency_timeout, + ) assert((avatar.get("_network_axis") as Vector2).length_squared() > 0.0) avatar.call( "_update_network_input_freshness", Player.NETWORK_INPUT_STALE_TIMEOUT_SECONDS + 0.01, ) + assert(not bool(avatar.get("_network_input_stale"))) + avatar.call( + "_update_network_input_freshness", + high_latency_timeout, + ) assert((avatar.get("_network_axis") as Vector2) == Vector2.ZERO) assert(not bool(avatar.get("_network_sprint"))) assert(bool(avatar.get("_network_input_stale"))) @@ -234,6 +372,7 @@ func _network_snapshot( "position": [position.x, position.y, position.z], "velocity": [velocity.x, velocity.y, velocity.z], "visual_yaw": 0.0, + "grounded": true, "animation_state": NetworkPlayerAnimationProtocol.make_state( NetworkPlayerAnimationProtocol.LOCOMOTION_RUNNING, true, @@ -247,8 +386,15 @@ func _run_host() -> void: var main: Node = await _create_initialized_main() var session := main.get_node("%NetworkSession") as NetworkSession var save_manager := main.get("_save_manager") as PlayerSaveManager + assert(session.set_host_world( + WorldLayout.STARTER_ISLAND, + NetworkProtocol.DEFAULT_WORLD_SEED, + )) assert(session.start_private_host(TEST_PORT)) - assert(save_manager.initialize_new_game()) + assert(save_manager.initialize_new_game( + NetworkProtocol.DEFAULT_WORLD_SEED, + WorldLayout.STARTER_ISLAND, + )) main.call("_enter_gameplay") for _frame: int in 4: await physics_frame diff --git a/tests/on_screen_keyboard_validation.gd b/tests/on_screen_keyboard_validation.gd index 1c324a2..a685c65 100644 --- a/tests/on_screen_keyboard_validation.gd +++ b/tests/on_screen_keyboard_validation.gd @@ -55,6 +55,7 @@ func _run() -> void: func _validate_default_and_persistence() -> void: var defaults := PlayerSettings.new() assert(not defaults.on_screen_keyboard_enabled) + assert(not defaults.swap_hotbar_camera_scroll) assert( KeyboardType.should_enable_for_controller(false, false, "Linux") ) @@ -87,11 +88,13 @@ func _validate_default_and_persistence() -> void: assert(manager.load_settings()) var edited: PlayerSettings = manager.current_settings.copy() edited.on_screen_keyboard_enabled = true + edited.swap_hotbar_camera_scroll = true assert(manager.apply_settings(edited)) var reloaded := SettingsManagerType.new() root.add_child(reloaded) assert(reloaded.load_settings()) assert(reloaded.current_settings.on_screen_keyboard_enabled) + assert(reloaded.current_settings.swap_hotbar_camera_scroll) manager.queue_free() reloaded.queue_free() diff --git a/tests/operator_multiplayer_validation.gd b/tests/operator_multiplayer_validation.gd index 059ced1..05f8ee9 100644 --- a/tests/operator_multiplayer_validation.gd +++ b/tests/operator_multiplayer_validation.gd @@ -36,6 +36,10 @@ func _run_host() -> void: as NetworkPlayerListService ) var bans := main.get_node("%HostBanStore") as HostBanStore + assert(bool(main.call( + "_apply_world", WorldLayout.STARTER_ISLAND, 1, true + ))) + assert(session.set_host_world(WorldLayout.STARTER_ISLAND, 1)) assert(session.start_private_host(TEST_PORT)) assert(session.set_host_open(true)) @@ -65,7 +69,7 @@ func _run_host() -> void: assert(players_page != null) players_page.call("_refresh") assert(_has_button_text(players_page, "deop")) - assert(_has_button_text(players_page, "clear art")) + assert(_has_button_tooltip(players_page, "scrub art")) var unban_deadline: int = Time.get_ticks_msec() + 12000 while ( @@ -149,9 +153,9 @@ func _run_client() -> void: assert(players_page != null) players_page.call("_refresh") var tabs := players_page.get("_tabs") as HBoxContainer - assert((tabs.get_child(2) as Button).visible) - players_page.call("_select_tab", 2) - assert(int(players_page.get("_current_tab")) == 2) + assert((tabs.get_child(3) as Button).visible) + players_page.call("_select_tab", 3) + assert(int(players_page.get("_current_tab")) == 3) var local_entry: PlayerListEntry = _entry_for_peer( service, session.get_local_peer_id() ) @@ -176,7 +180,7 @@ func _run_client() -> void: await process_frame assert(not session.is_local_operator()) assert(not service.is_local_moderator()) - assert(not (tabs.get_child(2) as Button).visible) + assert(not (tabs.get_child(3) as Button).visible) assert(int(players_page.get("_current_tab")) == 0) service.request_unban.rpc_id(1, SECOND_BANNED_FINGERPRINT) var disconnect_deadline: int = Time.get_ticks_msec() + 10000 @@ -252,3 +256,11 @@ func _has_button_text(root_node: Node, text: String) -> bool: if button != null and button.text == text: return true return false + + +func _has_button_tooltip(root_node: Node, tooltip: String) -> bool: + for node: Node in root_node.find_children("*", "Button", true, false): + var button := node as Button + if button != null and button.tooltip_text == tooltip: + return true + return false diff --git a/tests/profile_multiplayer_validation.gd b/tests/profile_multiplayer_validation.gd index ec7a669..4d2bd70 100644 --- a/tests/profile_multiplayer_validation.gd +++ b/tests/profile_multiplayer_validation.gd @@ -56,6 +56,10 @@ func _run_host() -> void: "kim", )) var save_manager := main.get("_save_manager") as PlayerSaveManager + assert(bool(main.call( + "_apply_world", WorldLayout.STARTER_ISLAND, 1, true + ))) + assert(session.set_host_world(WorldLayout.STARTER_ISLAND, 1)) assert(session.start_private_host(TEST_PORT)) var local_avatar := main.get_node("%PlayerSpawnService").get_avatar( 1 diff --git a/tests/progression_archive_validation.gd b/tests/progression_archive_validation.gd index 11fc51c..3fd9eff 100644 --- a/tests/progression_archive_validation.gd +++ b/tests/progression_archive_validation.gd @@ -82,27 +82,64 @@ func _run() -> void: assert(not FileAccess.file_exists(legacy_path)) _assert_opaque(save_path) + save_manager.set_autosave_enabled(false) + var save_slots := main.get("_save_slots") as PlayerSaveSlotCatalog + assert(save_slots != null) + assert(save_slots.configure(data_root, save_manager)) + var adopted_slots: Array[Dictionary] = save_slots.list_slots() + assert(adopted_slots.size() == 1) + var adopted_slot_id: String = str(adopted_slots.front().get("slot_id", "")) + assert(bool(adopted_slots.front().get("legacy", false))) + assert(bool(adopted_slots.front().get("has_save", false))) + + var duplicated: Dictionary = save_slots.duplicate_slot( + adopted_slot_id, + "another island", + WorldLayout.GENERATED, + 97531, + ) + assert(bool(duplicated.get("ok", false))) + var duplicated_slot_id: String = str(duplicated.get("slot_id", "")) + var duplicate_summary: Dictionary = save_slots.get_slot(duplicated_slot_id) + assert(int(duplicate_summary.get("wallet_balance", -1)) == 4321) + assert(int(duplicate_summary.get("world_seed", -1)) == 97531) + assert(save_slots.activate_slot(duplicated_slot_id)) + assert(save_manager.load_player_data()) + assert(player.wallet.get_balance() == 4321) + assert(save_manager.get_world_seed() == 97531) + assert(save_slots.rename_slot(duplicated_slot_id, "renamed island")) + + var slot_archive: String = data_root.progression_backup_directory().path_join( + "save-slot-export.nfsave" + ) + assert(bool(save_slots.export_slot( + duplicated_slot_id, + slot_archive, + ).get("ok", false))) + var imported_slot: Dictionary = save_slots.import_slot( + slot_archive, + "imported island", + ) + assert(bool(imported_slot.get("ok", false))) + var imported_slot_id: String = str(imported_slot.get("slot_id", "")) + assert(not save_slots.get_slot(imported_slot_id).is_empty()) + assert(save_slots.delete_slot(duplicated_slot_id)) + assert(save_slots.get_slot(duplicated_slot_id).is_empty()) + assert(save_slots.list_slots().size() == 2) + var settings_panels: Array[Node] = main.find_children( "*", "SettingsPanel", true, false ) assert(settings_panels.size() == 2) for settings_panel: SettingsPanel in settings_panels: - var export_button := settings_panel.get_node( - "%ExportProgression" - ) as Button - var import_button := settings_panel.get_node( - "%ImportProgression" - ) as Button - assert(export_button != null and import_button != null) - assert(not export_button.disabled and not import_button.disabled) - assert( - export_button.get_node(export_button.focus_neighbor_right) - == import_button - ) - assert( - import_button.get_node(import_button.focus_neighbor_left) - == export_button - ) + assert(settings_panel.get_node_or_null("%ExportProgression") == null) + assert(settings_panel.get_node_or_null("%ImportProgression") == null) + var save_slots_page := main.find_child( + "SaveSlotsPage", true, false + ) as SaveSlotsPage + assert(save_slots_page != null) + assert(save_slots_page.get_node("%ExportSlotButton") is Button) + assert(save_slots_page.get_node("%ImportSlotButton") is Button) var migrated_root: String = data_root.root_path.get_base_dir().path_join( "progression-migrated-data" @@ -118,6 +155,18 @@ func _run() -> void: assert(bool( ProgressionSaveCodec.read_local_save(migrated_save).get("ok", false) )) + assert(FileAccess.file_exists(migrated_root.path_join( + "player/save_slots.json" + ))) + var migrated_imported_slot: String = migrated_root.path_join( + "player/saves/%s.nfsave" % imported_slot_id + ) + assert(FileAccess.file_exists(migrated_imported_slot)) + assert(bool( + ProgressionSaveCodec.read_local_save(migrated_imported_slot).get( + "ok", false + ) + )) main.queue_free() for _frame: int in 4: diff --git a/tests/session_switch_multiplayer_validation.gd b/tests/session_switch_multiplayer_validation.gd index 68cfcc7..86c9a84 100644 --- a/tests/session_switch_multiplayer_validation.gd +++ b/tests/session_switch_multiplayer_validation.gd @@ -31,6 +31,10 @@ func _run() -> void: func _run_host(port: int, label: String) -> void: var main: Node = await _create_initialized_main() var session := main.get_node("%NetworkSession") as NetworkSession + assert(bool(main.call( + "_apply_world", WorldLayout.STARTER_ISLAND, 1, true + ))) + assert(session.set_host_world(WorldLayout.STARTER_ISLAND, 1)) assert(session.start_dedicated_host(port, 8, "127.0.0.1")) assert(session.set_host_open(true)) var remote_peer_id: int = await _wait_for_remote_peer(session) diff --git a/tests/surface_drawing_multiplayer_validation.gd b/tests/surface_drawing_multiplayer_validation.gd index ebba510..d0508b2 100644 --- a/tests/surface_drawing_multiplayer_validation.gd +++ b/tests/surface_drawing_multiplayer_validation.gd @@ -24,6 +24,10 @@ func _run() -> void: func _run_host() -> void: var main: Node = await _create_initialized_main() var session := main.get_node("%NetworkSession") as NetworkSession + assert(bool(main.call( + "_apply_world", WorldLayout.STARTER_ISLAND, 1, true + ))) + assert(session.set_host_world(WorldLayout.STARTER_ISLAND, 1)) assert(session.start_private_host(TEST_PORT)) var save_manager := main.get("_save_manager") as PlayerSaveManager assert(save_manager.initialize_new_game()) diff --git a/tests/surface_drawing_runtime_validation.gd b/tests/surface_drawing_runtime_validation.gd index 6fa7a9e..e04afc2 100644 --- a/tests/surface_drawing_runtime_validation.gd +++ b/tests/surface_drawing_runtime_validation.gd @@ -67,11 +67,23 @@ func _run() -> void: state["cells"][0]["author_fingerprint"] == session.get_local_identity_fingerprint() ) - var export_path: String = service.export_canvas_png(canvas_id) + service.set("_last_hovered_canvas_id", canvas_id) + service.set("_hovered_canvas_id", "") + var game_ui := main.get_node("%GameUI") as GameUI + var toolbar := game_ui.get_node( + "%SurfaceDrawingToolbar" + ) as SurfaceDrawingToolbar + var export_button := toolbar.get_node("%ExportButton") as Button + export_button.pressed.emit() + var exported_entries: Array[Dictionary] = service.get_saved_stamp_entries() + assert(exported_entries.size() == 1) + var export_path: String = str(exported_entries[0]["path"]) assert(not export_path.is_empty()) var data_root := main.get("_data_root") as PlayerDataRoot assert(export_path.begins_with(data_root.root_path.path_join("artwork"))) assert(FileAccess.file_exists(export_path)) + var status_label := game_ui.get_node("%StatusLabel") as Label + assert(status_label.text == "artwork exported to the data folder • artwork") var exported_image: Image = Image.load_from_file(export_path) assert(exported_image.get_size() == Vector2i(16, 16)) assert(exported_image.get_pixel(8, 7).is_equal_approx( diff --git a/tests/world_layout_validation.gd b/tests/world_layout_validation.gd index 86bb00a..dd40fcf 100644 --- a/tests/world_layout_validation.gd +++ b/tests/world_layout_validation.gd @@ -84,6 +84,11 @@ func _validate_world_switching() -> void: root.add_child(world) await process_frame assert(world.get_world_layout() == WorldLayout.GENERATED) + var initial_generator := world.get_node( + "Regions/GeneratedWorldRegion/Terrain/TerrainChunkGenerator" + ) as TerrainChunkGenerator + assert(initial_generator != null) + assert(initial_generator.get_generated_chunks_root() == null) assert(world.get_fishing_shop() != null) assert(world.get_player_storage() != null) _validate_world_boundary_clearance(world) diff --git a/tests/world_spawn_multiplayer_validation.gd b/tests/world_spawn_multiplayer_validation.gd index c2b4101..45be081 100644 --- a/tests/world_spawn_multiplayer_validation.gd +++ b/tests/world_spawn_multiplayer_validation.gd @@ -38,6 +38,10 @@ func _run_host() -> void: var session := main.get_node("%NetworkSession") as NetworkSession var service: Node = main.get_node("%NetworkWorldSpawnService") var world_time := main.get_node("%WorldTimeService") as WorldTimeService + assert(bool(main.call( + "_apply_world", WorldLayout.STARTER_ISLAND, 1, true + ))) + assert(session.set_host_world(WorldLayout.STARTER_ISLAND, 1)) assert(session.start_dedicated_host(TEST_PORT, 8, "127.0.0.1")) assert(world_time.synchronize_calendar_time(12.0, SUMMER_DATE_ID)) assert(world_time.set_authoritative_time(12.0)) diff --git a/tests/world_spawn_protocol_validation.gd b/tests/world_spawn_protocol_validation.gd index 66b43fb..f529389 100644 --- a/tests/world_spawn_protocol_validation.gd +++ b/tests/world_spawn_protocol_validation.gd @@ -16,7 +16,7 @@ const CalendarSeasonType = preload("res://world/calendar_season.gd") func _initialize() -> void: - assert(NetworkProtocol.PROTOCOL_VERSION == 9) + assert(NetworkProtocol.PROTOCOL_VERSION == 10) assert( NetworkWorldSpawnProtocol.CAPABILITY == NetworkProtocol.WORLD_SPAWN_CAPABILITY diff --git a/tests/world_time_multiplayer_validation.gd b/tests/world_time_multiplayer_validation.gd index abdd1e8..635ad4f 100644 --- a/tests/world_time_multiplayer_validation.gd +++ b/tests/world_time_multiplayer_validation.gd @@ -30,6 +30,10 @@ func _run_host() -> void: var world_weather := ( main.get_node("%WorldWeatherService") as WorldWeatherService ) + assert(bool(main.call( + "_apply_world", WorldLayout.STARTER_ISLAND, 1, true + ))) + assert(session.set_host_world(WorldLayout.STARTER_ISLAND, 1)) assert(session.start_private_host(TEST_PORT)) assert(world_time.set_authoritative_time(INITIAL_HOST_TIME)) assert(world_weather.set_authoritative_weather( diff --git a/ui/chat_ui.gd b/ui/chat_ui.gd index e282950..761ae4f 100644 --- a/ui/chat_ui.gd +++ b/ui/chat_ui.gd @@ -28,6 +28,7 @@ const SPEECH_POINTER_OVERLAP: float = 3.0 const ANIMALESE_FULL_VOLUME_DISTANCE: float = 4.0 const ANIMALESE_SILENT_DISTANCE: float = 24.0 const ANIMALESE_SILENT_VOLUME_DB: float = -80.0 +const MAX_EDITOR_GIVE_BALANCE: int = 1_000_000_000_000 const MOBILE_COMPACT_WIDTH: float = 620.0 const MOBILE_EXPANDED_WIDTH: float = 820.0 const MOBILE_COMPACT_HEIGHT: float = 220.0 @@ -142,6 +143,14 @@ var _send_pending: bool = false var _pending_send_body: String = "" var _controller_refocused: bool = false var _input_lock_applied: bool = false +var _fishing_input_priority_active: bool = false +var _fishing_resume_pending: bool = false +var _suspended_chat_state_valid: bool = false +var _suspended_chat_text: String = "" +var _suspended_chat_caret: int = 0 +var _suspended_chat_had_selection: bool = false +var _suspended_chat_selection_from: int = 0 +var _suspended_chat_selection_to: int = 0 var _last_submit_frame: int = -1 var _output_scale: float = 1.0 var _dock_right: bool = false @@ -325,6 +334,7 @@ func _update_status_effect_icons() -> void: func open_chat() -> void: if ( _opened or not _available or _service == null + or _fishing_input_priority_active or not _session.is_gameplay_session_active() ): return @@ -361,12 +371,115 @@ func open_command_chat() -> void: func set_available(value: bool) -> void: _available = value if not value: + _clear_suspended_chat_state() _send_pending = false _pending_send_body = "" _entry.editable = true close_chat() - _flush_draft() - _refresh_visibility() + _flush_draft() + _refresh_visibility() + elif _fishing_resume_pending and not _fishing_input_priority_active: + call_deferred("_resume_chat_after_fishing") + + +func set_fishing_input_priority(active: bool) -> void: + if _fishing_input_priority_active == active: + return + _fishing_input_priority_active = active + if active: + if not _opened: + return + _capture_suspended_chat_state() + _fishing_resume_pending = not _send_pending + close_chat(true) + elif _fishing_resume_pending: + call_deferred("_resume_chat_after_fishing") + + +func has_fishing_resume_pending() -> bool: + return _fishing_resume_pending + + +func get_text_entry_control() -> LineEdit: + return _entry + + +func _capture_suspended_chat_state() -> void: + _suspended_chat_state_valid = true + _suspended_chat_text = _entry.text + _suspended_chat_caret = _entry.caret_column + _suspended_chat_had_selection = _entry.has_selection() + if _suspended_chat_had_selection: + _suspended_chat_selection_from = ( + _entry.get_selection_from_column() + ) + _suspended_chat_selection_to = _entry.get_selection_to_column() + else: + _suspended_chat_selection_from = 0 + _suspended_chat_selection_to = 0 + + +func _resume_chat_after_fishing() -> void: + if _fishing_input_priority_active or not _fishing_resume_pending: + return + if ( + not _suspended_chat_state_valid + or not _available + or _service == null + or _session == null + or not _session.is_gameplay_session_active() + ): + _clear_suspended_chat_state() + return + var restored_text: String = _suspended_chat_text + var restored_caret: int = _suspended_chat_caret + var restored_had_selection: bool = _suspended_chat_had_selection + var restored_selection_from: int = _suspended_chat_selection_from + var restored_selection_to: int = _suspended_chat_selection_to + _clear_suspended_chat_state() + _entry.text = restored_text + _entry.caret_column = clampi(restored_caret, 0, restored_text.length()) + open_chat() + if not _opened: + return + call_deferred( + "_restore_suspended_chat_edit_state", + restored_caret, + restored_had_selection, + restored_selection_from, + restored_selection_to, + ) + + +func _restore_suspended_chat_edit_state( + caret: int, + had_selection: bool, + selection_from: int, + selection_to: int, +) -> void: + if not _opened or not _entry.visible: + return + var text_length: int = _entry.text.length() + _entry.caret_column = clampi(caret, 0, text_length) + if had_selection: + _entry.select( + clampi(selection_from, 0, text_length), + clampi(selection_to, 0, text_length), + ) + else: + _entry.deselect() + _entry.grab_focus() + _refresh_input_ownership() + + +func _clear_suspended_chat_state() -> void: + _fishing_resume_pending = false + _suspended_chat_state_valid = false + _suspended_chat_text = "" + _suspended_chat_caret = 0 + _suspended_chat_had_selection = false + _suspended_chat_selection_from = 0 + _suspended_chat_selection_to = 0 func close_chat(preserve_status: bool = false) -> void: @@ -942,7 +1055,7 @@ func _send() -> void: if submitted_text.length() == 0: close_chat() return - if _handle_editor_world_command(submitted_text): + if _handle_editor_command(submitted_text): return _send_pending = true _pending_send_body = submitted_text @@ -959,29 +1072,27 @@ func _send() -> void: _set_status("Sending…") -func _handle_editor_world_command(body: String) -> bool: +func _handle_editor_command(body: String) -> bool: # These commands are deliberately limited to sessions launched by the - # Godot editor. Exported builds do not have the editor feature tag, and a - # joined editor client must not be able to mutate its host's world. + # Godot editor. Exported builds do not have the editor feature tag. if not OS.has_feature("editor"): return false var command_text: String = body.strip_edges() - if not ( - command_text.begins_with("/time") - or command_text.begins_with("/weather") - ): - return false var parts: PackedStringArray = command_text.split(" ", false) + if parts.is_empty() or not String(parts[0]).begins_with("/"): + return false var command: String = String(parts[0]).trim_prefix("/").to_lower() + if command not in ["give", "time", "weather"]: + return false var result: String = "" - if _session == null or not _session.is_host(): + if command == "give": + result = _apply_editor_give_command(parts) + elif _session == null or not _session.is_host(): result = "Editor world commands require the authoritative host." elif command == "time": result = _apply_editor_time_command(parts) - elif command == "weather": - result = _apply_editor_weather_command(parts) else: - return false + result = _apply_editor_weather_command(parts) _entry.clear() _flush_draft() _set_status(result) @@ -989,6 +1100,28 @@ func _handle_editor_world_command(body: String) -> bool: return true +func _apply_editor_give_command(parts: PackedStringArray) -> String: + if parts.size() != 2 or _player == null or _player.wallet == null: + return "Usage: /give [positive integer]" + var amount_text: String = String(parts[1]) + if not amount_text.is_valid_int(): + return "Usage: /give [positive integer]" + var amount: int = amount_text.to_int() + var current_balance: int = _player.wallet.get_balance() + if amount <= 0: + return "Usage: /give [positive integer]" + if current_balance > MAX_EDITOR_GIVE_BALANCE - amount: + return "Editor balance cannot exceed %d fish coins." % ( + MAX_EDITOR_GIVE_BALANCE + ) + if not _player.wallet.credit(amount): + return "Editor fish coins could not be added." + return "Added %d fish coins. Balance: %d." % [ + amount, + _player.wallet.get_balance(), + ] + + func _apply_editor_time_command(parts: PackedStringArray) -> String: if parts.size() != 2 or _world_time == null: return "Usage: /time [dawn, day, dusk, night]" @@ -1043,6 +1176,7 @@ func _on_local_message_confirmed(message: Dictionary) -> void: return _send_pending = false _pending_send_body = "" + _clear_suspended_chat_state() _entry.editable = true _entry.clear() _set_status("") @@ -1194,6 +1328,11 @@ func _on_rejected(message: String) -> void: _pending_send_body = "" _entry.editable = true _set_status(message) + if _suspended_chat_state_valid: + _fishing_resume_pending = true + if not _fishing_input_priority_active: + call_deferred("_resume_chat_after_fishing") + return if not _opened: open_chat() else: diff --git a/ui/game_ui.gd b/ui/game_ui.gd index e0b87c6..6efea59 100644 --- a/ui/game_ui.gd +++ b/ui/game_ui.gd @@ -79,6 +79,8 @@ signal passive_pointer_ui_changed(is_enabled: bool) signal player_menu_backdrop_visibility_changed(is_visible: bool) signal shop_backdrop_visibility_changed(is_visible: bool) signal virtual_pointer_mode_changed(is_active: bool) +signal social_prompt_accepted +signal social_prompt_declined const VIRTUAL_MOUSE_INPUT_OWNER: StringName = &"controller_virtual_mouse" const EMOTE_RADIAL_CAMERA_OWNER: StringName = &"emote_radial_menu" @@ -139,10 +141,12 @@ const SHOP_NPC_SPEECH_COOLDOWN_MILLISECONDS: int = 5000 @onready var _screen_fade: ScreenFade = %ScreenFade @onready var _title_screen: TitleScreenType = %TitleScreen @onready var _pause_menu: PauseMenuType = %PauseMenu +@onready var _social_prompt: BubbleConfirmationPage = %SocialPrompt @onready var _hotbar_ui: HotbarUIType = %Hotbar @onready var _fishing_shop: FishingShopType = %FishingShop @onready var _player_storage: PlayerStorageType = %PlayerStorage @onready var _storage_prompt: PanelContainer = %StoragePrompt +@onready var _storage_prompt_message: Label = %StoragePromptMessage @onready var _shop_prompt: Control = %ShopPrompt @onready var _shop_prompt_bubble: PanelContainer = %ShopPromptBubble @onready var _shop_prompt_message: Label = %ShopPromptMessage @@ -182,6 +186,8 @@ var _gameplay_ui_enabled: bool = false var _gameplay_hud_hidden: bool = false var _fishing_spot: FishingSpotType var _system_menu_open: bool = false +var _social_prompt_open: bool = false +var _social_prompt_restore_system_menu: bool = false var _shop_open: bool = false var _storage_open: bool = false var _chat_input_open: bool = false @@ -208,16 +214,22 @@ var _virtual_mouse_stick: Vector2 = Vector2.ZERO var _virtual_mouse_trigger_rest_by_device: Dictionary[int, float] = {} var _shared_trigger_rest_by_device: Dictionary[int, float] = {} var _controller_mapping_manager: ControllerMappingManagerType +var _keyboard_mouse_mapping_manager: KeyboardMouseMappingManagerType var _settings_manager: PlayerSettingsManagerType var _controller_text_entry_request: Callable var _controller_text_entry_is_open: Callable +var _controller_text_entry_close: Callable +var _restore_chat_keyboard_after_fishing: bool = false func _ready() -> void: _prioritize_surface_drawing_pointer_input() _bite_prompt_button.pressed.connect(_on_bite_prompt_pressed) + _social_prompt.confirmed.connect(_accept_social_prompt) + _social_prompt.cancelled.connect(_decline_social_prompt) _apply_active_bait_indicator_style() _refresh_active_bait_indicator() + _refresh_interaction_prompt_bindings() # Reward feedback must remain above full-screen canonical menus. Keeping the # overlay as the final stage child makes that ownership explicit instead of # relying on scene declaration order when another menu adds high-z children. @@ -268,9 +280,11 @@ func _ready() -> void: func set_controller_text_entry_request( request: Callable, is_open: Callable = Callable(), + close: Callable = Callable(), ) -> void: _controller_text_entry_request = request _controller_text_entry_is_open = is_open + _controller_text_entry_close = close func request_controller_text_entry_for(control: Control = null) -> bool: @@ -278,7 +292,15 @@ func request_controller_text_entry_for(control: Control = null) -> bool: if target == null: target = get_viewport().gui_get_focus_owner() return ( - bool(_controller_text_entry_request.call(target)) + bool(_controller_text_entry_request.call(target, false)) + if _controller_text_entry_request.is_valid() + else false + ) + + +func _resume_controller_text_entry_for(control: Control) -> bool: + return ( + bool(_controller_text_entry_request.call(control, true)) if _controller_text_entry_request.is_valid() else false ) @@ -292,6 +314,14 @@ func is_controller_text_entry_open() -> bool: ) +func _close_controller_text_entry_for(control: Control) -> bool: + return ( + bool(_controller_text_entry_close.call(control)) + if _controller_text_entry_close.is_valid() + else false + ) + + func setup( player: PlayerType, inventory: FishInventoryType, @@ -386,6 +416,9 @@ func setup( ) fishing_spot.status_changed.connect(_on_fishing_status_changed) fishing_spot.bite_prompt_changed.connect(_on_bite_prompt_changed) + fishing_spot.fishing_input_priority_changed.connect( + _on_fishing_input_priority_changed + ) fishing_spot.catch_display_changed.connect(_on_catch_display_changed) fishing_spot.showcase_changed.connect(_on_showcase_changed) _player_menu.menu_visibility_changed.connect( @@ -480,6 +513,15 @@ func setup( _shop_interaction = shop_interaction _storage_interaction = storage_interaction _surface_drawing = surface_drawing + if ( + _surface_drawing != null + and not _surface_drawing.hud_state_changed.is_connected( + _on_surface_drawing_hud_state_changed + ) + ): + _surface_drawing.hud_state_changed.connect( + _on_surface_drawing_hud_state_changed + ) _surface_drawing_toolbar.setup(_surface_drawing, art_unlocks) set_edge_docks( settings_manager.current_settings.chat_dock_right, @@ -520,6 +562,10 @@ func _prioritize_surface_drawing_pointer_input() -> void: func _input(event: InputEvent) -> void: + if _social_prompt_open and event.is_action_pressed("ui_cancel"): + _decline_social_prompt() + get_viewport().set_input_as_handled() + return # The on-screen keyboard owns controller input while it is open. Its # overlay is processed before the UI beneath it and consumes the event. if is_controller_text_entry_open(): @@ -1336,7 +1382,6 @@ func _drawing_pointer_window_position() -> Vector2: func setup_data_and_identity( data_root: PlayerDataRoot, - progression_saves: PlayerSaveManager, identity_backups: IdentityBackupService, player_identity: PlayerIdentityStore, host_identity: HostIdentityStore, @@ -1348,7 +1393,6 @@ func setup_data_and_identity( ]: panel.setup_data_and_identity( data_root, - progression_saves, identity_backups, player_identity, host_identity, @@ -1375,10 +1419,64 @@ func setup_controller_mapping( func setup_keyboard_mouse_mapping( mapping_manager: KeyboardMouseMappingManagerType, ) -> void: + if ( + _keyboard_mouse_mapping_manager != null + and _keyboard_mouse_mapping_manager.mapping_changed.is_connected( + _refresh_interaction_prompt_bindings + ) + ): + _keyboard_mouse_mapping_manager.mapping_changed.disconnect( + _refresh_interaction_prompt_bindings + ) + _keyboard_mouse_mapping_manager = mapping_manager + if ( + _keyboard_mouse_mapping_manager != null + and not _keyboard_mouse_mapping_manager.mapping_changed.is_connected( + _refresh_interaction_prompt_bindings + ) + ): + _keyboard_mouse_mapping_manager.mapping_changed.connect( + _refresh_interaction_prompt_bindings + ) for panel: SettingsPanelType in [ _title_settings_panel, _pause_settings_panel ]: panel.setup_keyboard_mouse_mapping(mapping_manager) + _refresh_interaction_prompt_bindings() + + +func _refresh_interaction_prompt_bindings() -> void: + if not is_node_ready(): + return + var interact_label: String = "interact" + if _keyboard_mouse_mapping_manager != null: + var resolved_label: String = ( + _keyboard_mouse_mapping_manager.get_binding_label( + KeyboardMouseMappingManagerType.ROLE_INTERACT + ) + ) + if resolved_label not in ["", "unmapped", "unknown key"]: + interact_label = resolved_label + if interact_label.length() == 1: + interact_label = interact_label.to_upper() + _shop_prompt_key.text = interact_label + _storage_prompt_message.text = "%s open storage" % interact_label + _resize_interaction_prompts() + + +func _resize_interaction_prompts() -> void: + var badge_width: float = maxf( + 24.0, + ceilf(_shop_prompt_key.get_combined_minimum_size().x) + 12.0, + ) + _shop_prompt_key_badge.position.x = _shop_prompt.size.x - badge_width + 6.0 + _shop_prompt_key_badge.size.x = badge_width + var storage_width: float = maxf( + 220.0, + ceilf(_storage_prompt_message.get_combined_minimum_size().x) + 24.0, + ) + _storage_prompt.custom_minimum_size.x = storage_width + _storage_prompt.size.x = storage_width func is_controller_mapping_capturing() -> bool: @@ -1709,6 +1807,52 @@ func set_system_menu_open(is_open: bool) -> void: _emit_interactive_pointer_ui_changed() +func show_social_prompt( + message: String, + accept_text: String = "accept", + decline_text: String = "decline", +) -> bool: + if _social_prompt_open: + return false + _social_prompt_open = true + _social_prompt_restore_system_menu = _system_menu_open + set_system_menu_open(true) + _social_prompt.configure( + message, + accept_text, + decline_text, + BubbleConfirmationPage.InitialFocus.CONFIRM, + ) + _social_prompt.transition_in(0.08, func() -> void: pass) + return true + + +func is_social_prompt_open() -> bool: + return _social_prompt_open + + +func _accept_social_prompt() -> void: + _resolve_social_prompt(true) + + +func _decline_social_prompt() -> void: + _resolve_social_prompt(false) + + +func _resolve_social_prompt(accepted: bool) -> void: + if not _social_prompt_open or _social_prompt.is_transitioning(): + return + _social_prompt.lock_interaction() + _social_prompt.transition_out(0.08, func() -> void: + _social_prompt_open = false + set_system_menu_open(_social_prompt_restore_system_menu) + if accepted: + social_prompt_accepted.emit() + else: + social_prompt_declined.emit() + ) + + func get_fishing_shop() -> FishingShopType: return _fishing_shop @@ -1930,6 +2074,9 @@ func _on_player_settings_changed(settings: PlayerSettings) -> void: _player_menu.set_profile_preview_world_pixel_size( settings.world_pixel_size ) + _hotbar_ui.set_swap_hotbar_camera_scroll( + settings.swap_hotbar_camera_scroll + ) func set_edge_docks( @@ -1979,6 +2126,18 @@ func _on_fishing_status_changed(status: String) -> void: _set_fishing_status(status) +func _on_surface_drawing_hud_state_changed( + _is_active: bool, + _mode_name: String, + _color_name: String, + _color_value: Color, + _brush_size: int, + _grid_size: int, + status: String, +) -> void: + _set_fishing_status(status) + + func _set_fishing_status(text: String) -> void: var normalized_text: String = text.strip_edges() _status_label.text = normalized_text @@ -2004,6 +2163,31 @@ func _on_bite_prompt_changed(prompt_visible: bool) -> void: _refresh_fishing_panel_visibility() +func _on_fishing_input_priority_changed(active: bool) -> void: + if active: + _restore_chat_keyboard_after_fishing = ( + _chat_ui.is_open() and is_controller_text_entry_open() + ) + if _restore_chat_keyboard_after_fishing: + _close_controller_text_entry_for( + _chat_ui.get_text_entry_control() + ) + _chat_ui.set_fishing_input_priority(active) + if not active and _restore_chat_keyboard_after_fishing: + call_deferred("_restore_chat_keyboard_after_fishing_ends") + + +func _restore_chat_keyboard_after_fishing_ends() -> void: + await get_tree().process_frame + await get_tree().process_frame + if not _restore_chat_keyboard_after_fishing: + return + _restore_chat_keyboard_after_fishing = false + if not _chat_ui.is_open(): + return + _resume_controller_text_entry_for(_chat_ui.get_text_entry_control()) + + func _on_bite_prompt_pressed() -> void: if _fishing_spot != null: _fishing_spot.confirm_pending_bite() @@ -2023,7 +2207,6 @@ func _on_catch_display_changed( and _fishing_spot != null and _fishing_spot.is_fighting() ) - _hotbar_ui.set_item_name_suppressed(encounter_visible) _green_catch_progress.value = progress * 100.0 _red_chase_progress.value = maxf(chase_progress, 0.0) * 100.0 _catch_track.visible = encounter_visible diff --git a/ui/game_ui.tscn b/ui/game_ui.tscn index c73349f..483433a 100644 --- a/ui/game_ui.tscn +++ b/ui/game_ui.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=21 format=3] +[gd_scene load_steps=22 format=3] [ext_resource type="Script" path="res://ui/game_ui.gd" id="1_ui"] [ext_resource type="PackedScene" path="res://ui/player_menu.tscn" id="2_menu"] @@ -14,6 +14,7 @@ [ext_resource type="PackedScene" path="res://ui/quick_radial_menu.tscn" id="12_quick"] [ext_resource type="Script" path="res://ui/controller_virtual_cursor.gd" id="13_cursor"] [ext_resource type="PackedScene" path="res://ui/player_storage.tscn" id="14_storage"] +[ext_resource type="PackedScene" path="res://ui/components/bubble_menu/bubble_confirmation_page.tscn" id="15_social_prompt"] [sub_resource type="StyleBoxFlat" id="StyleBox_chase_background"] bg_color = Color(0.032, 0.118, 0.15, 1) @@ -461,7 +462,6 @@ grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 theme_override_font_sizes/font_size = 15 -text = "E" horizontal_alignment = 1 vertical_alignment = 1 @@ -491,9 +491,10 @@ theme_override_constants/margin_top = 7 theme_override_constants/margin_right = 12 theme_override_constants/margin_bottom = 7 -[node name="Message" type="Label" parent="UIRoot/CanonicalStage/GameplayTransientHUD/StoragePrompt/Margin"] +[node name="StoragePromptMessage" type="Label" parent="UIRoot/CanonicalStage/GameplayTransientHUD/StoragePrompt/Margin"] +unique_name_in_owner = true layout_mode = 2 -text = "E open storage" +text = "open storage" horizontal_alignment = 1 vertical_alignment = 1 theme_override_font_sizes/font_size = 18 @@ -533,3 +534,8 @@ unique_name_in_owner = true [node name="PauseMenu" parent="UIRoot/CanonicalStage" instance=ExtResource("6_pause")] unique_name_in_owner = true + +[node name="SocialPrompt" parent="UIRoot/CanonicalStage" instance=ExtResource("15_social_prompt")] +unique_name_in_owner = true +z_index = 3000 +z_as_relative = false diff --git a/ui/hotbar.gd b/ui/hotbar.gd index 1c41bfe..24a9aa8 100644 --- a/ui/hotbar.gd +++ b/ui/hotbar.gd @@ -9,7 +9,6 @@ const PlayerBagType = preload("res://inventory/player_bag.gd") const PlayerHotbarType = preload("res://inventory/player_hotbar.gd") const FishInventoryType = preload("res://inventory/fish_inventory.gd") const FishCatchType = preload("res://fish/fish_catch.gd") -const FishQualityType = preload("res://fish/fish_quality.gd") const BubbleHotbarSlotType = preload( "res://ui/components/bubble_hotbar/bubble_hotbar_slot.gd" ) @@ -28,8 +27,6 @@ const HOTBAR_MENU_Z_INDEX: int = 90 @onready var _presentation_scale_root: Control = %HotbarPresentationScaleRoot @onready var _bubble_field: Control = %BubbleField -@onready var _selected_item_label: Label = %SelectedItemLabel -@onready var _item_name_timer: Timer = %ItemNameTimer var _hotbar: PlayerHotbarType var _bag: PlayerBagType @@ -39,8 +36,7 @@ var _fishing_spot: FishingSpotType var _slots: Array[BubbleHotbarSlotType] = [] var _gameplay_input_enabled: bool = false var _drag_enabled: bool = false -var _hovered_slot_index: int = -1 -var _item_name_suppressed: bool = false +var _swap_hotbar_camera_scroll: bool = false var _motion_elapsed: float = 0.0 var _compact_layout: bool = false var _player_menu_context: bool = false @@ -56,7 +52,6 @@ var _visibility_generation: int = 0 func _ready() -> void: - _item_name_timer.timeout.connect(_on_item_name_timer_timeout) resized.connect(_apply_layout) _collect_slots() _apply_layout() @@ -100,13 +95,14 @@ func set_gameplay_input_enabled(enabled: bool) -> void: _gameplay_input_enabled = enabled +func set_swap_hotbar_camera_scroll(enabled: bool) -> void: + _swap_hotbar_camera_scroll = enabled + + func set_drag_enabled(enabled: bool) -> void: _drag_enabled = enabled for slot: BubbleHotbarSlotType in _slots: slot.set_drag_enabled(enabled) - if not enabled: - _hovered_slot_index = -1 - _hide_item_name() func begin_controller_placement( @@ -148,7 +144,6 @@ func end_controller_placement() -> void: for slot: BubbleHotbarSlotType in _slots: slot.focus_mode = Control.FOCUS_NONE slot.set_controller_placement_preview(false, null) - _show_selected_item_briefly() func begin_controller_management(initial_slot: int) -> void: @@ -178,7 +173,6 @@ func end_controller_management() -> void: _controller_management_active = false for slot: BubbleHotbarSlotType in _slots: slot.focus_mode = Control.FOCUS_NONE - _show_selected_item_briefly() func _resolve_controller_placement_texture() -> Texture2D: @@ -289,13 +283,6 @@ func set_presentation_visible( ) -func set_item_name_suppressed(suppressed: bool) -> void: - _item_name_suppressed = suppressed - if suppressed: - _hovered_slot_index = -1 - _hide_item_name() - - func _unhandled_input(event: InputEvent) -> void: if ( not _gameplay_input_enabled @@ -321,7 +308,7 @@ func _unhandled_input(event: InputEvent) -> void: if ( event is InputEventMouseButton and event.pressed - and not event.shift_pressed + and event.shift_pressed == _swap_hotbar_camera_scroll ): if event.button_index == MOUSE_BUTTON_WHEEL_UP: _hotbar.cycle_selection(-1) @@ -337,10 +324,6 @@ func _collect_slots() -> void: var slot := child as BubbleHotbarSlotType if slot == null: continue - slot.item_hovered.connect(_on_slot_item_hovered) - slot.item_hover_ended.connect(_on_slot_item_hover_ended) - slot.item_drag_started.connect(_on_slot_drag_started) - slot.item_drag_finished.connect(_on_slot_drag_finished) slot.focus_entered.connect( _on_controller_slot_focused.bind(slot.slot_index) ) @@ -405,9 +388,6 @@ func _on_selected_slot_changed( _refresh() if _controller_placement_active: _refresh_controller_placement_preview() - return - if _hovered_slot_index < 0: - _show_selected_item_briefly() func _on_controller_slot_focused(slot_index: int) -> void: @@ -419,80 +399,3 @@ func _on_controller_slot_focused(slot_index: int) -> void: _hotbar.select_slot(slot_index) if _controller_placement_active: _refresh_controller_placement_preview() - - -func _on_slot_item_hovered( - slot_index: int, - item_id: StringName, -) -> void: - if _item_name_suppressed: - return - _hovered_slot_index = slot_index - _item_name_timer.stop() - _show_assignment_name(slot_index, item_id) - - -func _on_slot_item_hover_ended(slot_index: int) -> void: - if slot_index != _hovered_slot_index: - return - _hovered_slot_index = -1 - _show_selected_item_briefly() - - -func _on_slot_drag_started() -> void: - _hovered_slot_index = -1 - _hide_item_name() - - -func _on_slot_drag_finished() -> void: - _show_selected_item_briefly() - - -func _show_selected_item_briefly() -> void: - if _item_name_suppressed or _hotbar == null: - _hide_item_name() - return - var selected_slot: int = _hotbar.get_selected_slot() - var identity: StringName = _hotbar.get_selected_item_id() - if identity.is_empty(): - identity = _hotbar.get_selected_fish_catch_id() - _show_assignment_name(selected_slot, identity) - if _selected_item_label.visible: - _item_name_timer.start() - - -func _show_assignment_name(slot_index: int, identity: StringName) -> void: - if identity.is_empty() or _hotbar == null: - _hide_item_name() - return - var catch_id: StringName = _hotbar.get_fish_catch_id(slot_index) - if not catch_id.is_empty() and _fish_inventory != null: - var fish_catch: FishCatchType = _fish_inventory.get_catch_by_id(catch_id) - if fish_catch != null: - _selected_item_label.text = FishQualityType.qualified_name( - fish_catch.fish.display_name, - fish_catch.quality, - ) - _selected_item_label.visible = true - return - var item = ( - _catalog.get_item_by_id(identity) - if _catalog != null - else null - ) - if item == null: - _hide_item_name() - return - _selected_item_label.text = item.display_name - _selected_item_label.visible = true - - -func _hide_item_name() -> void: - _item_name_timer.stop() - _selected_item_label.text = "" - _selected_item_label.visible = false - - -func _on_item_name_timer_timeout() -> void: - if _hovered_slot_index < 0: - _hide_item_name() diff --git a/ui/hotbar.tscn b/ui/hotbar.tscn index ebe0099..286a305 100644 --- a/ui/hotbar.tscn +++ b/ui/hotbar.tscn @@ -105,33 +105,3 @@ slot_index = 8 desktop_anchor = Vector2(735, 49) compact_anchor = Vector2(530, 42) motion_phase = 5.51 - -[node name="SelectedItemLabel" type="Label" parent="ResponsiveHotbarStage/HotbarPresentationScaleRoot"] -unique_name_in_owner = true -visible = false -layout_mode = 1 -anchors_preset = 12 -anchor_left = 0.5 -anchor_top = 1.0 -anchor_right = 0.5 -anchor_bottom = 1.0 -offset_left = -150.0 -offset_top = -132.0 -offset_right = 150.0 -offset_bottom = -112.0 -grow_horizontal = 2 -grow_vertical = 0 -mouse_filter = 2 -clip_text = true -text_overrun_behavior = 3 -horizontal_alignment = 1 -vertical_alignment = 1 -theme_override_colors/font_color = Color(0.925, 0.953, 0.965, 1) -theme_override_colors/font_outline_color = Color(0.015, 0.02, 0.03, 0.95) -theme_override_constants/outline_size = 2 -theme_override_font_sizes/font_size = 12 - -[node name="ItemNameTimer" type="Timer" parent="."] -unique_name_in_owner = true -wait_time = 1.5 -one_shot = true diff --git a/ui/icons/player_options/clean.png b/ui/icons/player_options/clean.png new file mode 100644 index 0000000000000000000000000000000000000000..1caf9188dc404d10efbe69177947d31acee05aca GIT binary patch literal 39617 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 UvAp=l?dT=)Zb#eVowQ&74?~M4-T(jq literal 0 HcmV?d00001 diff --git a/ui/icons/player_options/clean.png.import b/ui/icons/player_options/clean.png.import new file mode 100644 index 0000000..86f3fe8 --- /dev/null +++ b/ui/icons/player_options/clean.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bmhhqwmx7lxxy" +path="res://.godot/imported/clean.png-762368d1ca0665fa46111797ef3210a1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ui/icons/player_options/clean.png" +dest_files=["res://.godot/imported/clean.png-762368d1ca0665fa46111797ef3210a1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=64 +detect_3d/compress_to=1 diff --git a/ui/icons/player_options/friends.png b/ui/icons/player_options/friends.png new file mode 100644 index 0000000000000000000000000000000000000000..e0cbc74b07e11bb443472e30a1b5551ac96e65f8 GIT binary patch literal 39562 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 void: fish.get_maximum_weight(), ], ) - _add_detail_row(left_stats, "number caught", "unknown") + _add_detail_row( + left_stats, + "number caught", + str(_collection_log.get_catch_count(fish.id)), + ) _add_detail_row(right_stats, "rarity", fish.get_rarity_name().to_lower()) _add_detail_row(right_stats, "time of day", _availability_text(fish)) _add_detail_row(right_stats, "seasons", fish.get_season_text()) @@ -1127,6 +1131,7 @@ func _stats_overlay_text(fish: FishDataType, catalog_number: int) -> String: fish.get_minimum_weight(), fish.get_maximum_weight(), ], + "number caught: %d" % _collection_log.get_catch_count(fish.id), "rarity: %s" % fish.get_rarity_name().to_lower(), "time of day: %s" % _availability_text(fish), "seasons: %s" % fish.get_season_text(), diff --git a/ui/network/join_game_page.gd b/ui/network/join_game_page.gd index a6e5c11..72bf19e 100644 --- a/ui/network/join_game_page.gd +++ b/ui/network/join_game_page.gd @@ -7,6 +7,7 @@ signal back_requested enum Mode { DISCOVER, + FRIENDS, DIRECT, SAVED, RECENT, @@ -26,6 +27,12 @@ const DIRECT_WORKFLOW_HELP: String = ( % ADDRESS_FORMAT_HELP ) +@onready var _main_panel: PanelContainer = %MainPanel +@onready var _content_panel: PanelContainer = %ContentPanel +@onready var _direct_content: Control = %DirectContent +@onready var _list_content: Control = %ListContent +@onready var _list_title: Label = %ListTitle +@onready var _details_panel: PanelContainer = %DetailsPanel @onready var _address: LineEdit = %Address @onready var _address_label: Label = %AddressLabel @onready var _address_helper: Label = %AddressHelper @@ -34,10 +41,11 @@ const DIRECT_WORKFLOW_HELP: String = ( @onready var _name_helper: Label = %NameHelper @onready var _server_list: ItemList = %ServerList @onready var _details: Label = %Details -@onready var _discover_button: Button = %DiscoverButton -@onready var _direct_button: Button = %DirectButton -@onready var _saved_button: Button = %SavedButton -@onready var _recent_button: Button = %RecentButton +@onready var _discover_button: OrganizerTab = %DiscoverButton +@onready var _friends_button: OrganizerTab = %FriendsButton +@onready var _direct_button: OrganizerTab = %DirectButton +@onready var _saved_button: OrganizerTab = %SavedButton +@onready var _recent_button: OrganizerTab = %RecentButton @onready var _join_button: Button = %JoinButton @onready var _refresh_button: Button = %RefreshButton @onready var _save_button: Button = %SaveButton @@ -62,6 +70,8 @@ var _visible_entries: Array[SavedServerEntry] = [] var _selected_entry: SavedServerEntry var _discovery_rooms: Array[Dictionary] = [] var _selected_discovery_index: int = -1 +var _friend_entries: Array[Dictionary] = [] +var _selected_friend_index: int = -1 var _discovery_refresh_timer: Timer var _editing_entry_id: String = "" var _name_entry_active: bool = false @@ -69,24 +79,13 @@ var _delete_armed: bool = false var _connection_error_latched: bool = false var _pending_confirmation_endpoint: String = "" var _pending_confirmation_room: Dictionary = {} +var _owns_pending_public_join: bool = false func _ready() -> void: - UtilityPageStyle.apply_page(self) - var paper := get_node("Paper") as PanelContainer - paper.add_theme_stylebox_override( - "panel", UtilityPageStyle.panel_style() - ) - for button: BaseButton in [ - _discover_button, _direct_button, _saved_button, _recent_button, - _refresh_button, _join_button, - _save_button, _edit_button, _favorite_button, _delete_button, - _cancel_button, _back_button, - ]: - UtilityPageStyle.apply_ocean_button(button) - UtilityPageStyle.apply_ocean_line_edit(_address) - UtilityPageStyle.apply_ocean_line_edit(_name_edit) + _configure_style() _discover_button.pressed.connect(_set_mode.bind(Mode.DISCOVER)) + _friends_button.pressed.connect(_set_mode.bind(Mode.FRIENDS)) _direct_button.pressed.connect(_set_mode.bind(Mode.DIRECT)) _saved_button.pressed.connect(_set_mode.bind(Mode.SAVED)) _recent_button.pressed.connect(_set_mode.bind(Mode.RECENT)) @@ -121,6 +120,96 @@ func _ready() -> void: hide() +func _configure_style() -> void: + UtilityPageStyle.apply_page(self) + _main_panel.add_theme_stylebox_override( + "panel", + UtilityPageStyle.rounded_style( + UtilityPageStyle.OCEAN_PANEL_MID, + 28, + ), + ) + _content_panel.add_theme_stylebox_override( + "panel", + UtilityPageStyle.rounded_style( + UtilityPageStyle.OCEAN_FIELD, + 20, + ), + ) + _details_panel.add_theme_stylebox_override( + "panel", + UtilityPageStyle.row_style(), + ) + _server_list.add_theme_stylebox_override( + "panel", + UtilityPageStyle.rounded_style( + UtilityPageStyle.OCEAN_PANEL_MID, + 12, + ), + ) + _server_list.add_theme_stylebox_override( + "focus", + StyleBoxEmpty.new(), + ) + _server_list.add_theme_stylebox_override( + "selected", + UtilityPageStyle.row_style(true), + ) + _server_list.add_theme_stylebox_override( + "selected_focus", + UtilityPageStyle.row_style(true), + ) + _server_list.add_theme_color_override( + "font_color", + UtilityPageStyle.OCEAN_TEXT_PRIMARY, + ) + _server_list.add_theme_color_override( + "font_selected_color", + UtilityPageStyle.OCEAN_TEXT_PRIMARY, + ) + for node: Node in find_children("*", "Label", true, false): + var label := node as Label + label.add_theme_color_override( + "font_color", + UtilityPageStyle.OCEAN_TEXT_PRIMARY, + ) + for node: Node in find_children("*", "Button", true, false): + if node is OrganizerTab: + continue + UtilityPageStyle.apply_ocean_button(node as BaseButton) + UtilityPageStyle.apply_ocean_line_edit(_address) + UtilityPageStyle.apply_ocean_line_edit(_name_edit) + _join_button.add_theme_stylebox_override( + "normal", + UtilityPageStyle.ocean_button_style( + UtilityPageStyle.GREEN, + ), + ) + _delete_button.add_theme_stylebox_override( + "normal", + UtilityPageStyle.ocean_button_style( + UtilityPageStyle.OCEAN_DANGER, + ), + ) + _back_button.add_theme_stylebox_override( + "normal", + UtilityPageStyle.ocean_button_style( + UtilityPageStyle.OCEAN_PANEL_DEEP, + ), + ) + for secondary_label: Label in [ + _address_helper, + _name_helper, + _details, + _status, + _session_summary, + ]: + secondary_label.add_theme_color_override( + "font_color", + UtilityPageStyle.OCEAN_TEXT_SECONDARY, + ) + + func setup( network_session: NetworkSession, saved_servers: SavedServerStore, @@ -177,6 +266,19 @@ func setup( _discovery.public_join_status_changed.connect( _on_public_join_status_changed ) + if not _discovery.friend_presence_updated.is_connected( + _on_friend_presence_updated + ): + _discovery.friend_presence_updated.connect( + _on_friend_presence_updated + ) + if not _discovery.social_status_changed.is_connected( + _on_social_status_changed + ): + _discovery.social_status_changed.connect( + _on_social_status_changed + ) + _friend_entries = _discovery.get_friend_presence() _refresh() @@ -232,7 +334,9 @@ func confirm_pending_join() -> bool: var room: Dictionary = _pending_confirmation_room.duplicate(true) cancel_pending_join_confirmation() if not room.is_empty(): + _owns_pending_public_join = true if _discovery == null or not _discovery.prepare_public_join(room): + _owns_pending_public_join = false _set_status("Could not prepare the public connection.", true) return false return true @@ -244,15 +348,19 @@ func confirm_pending_join() -> bool: func _set_mode(mode: Mode, clear_connection_error: bool = true) -> void: if clear_connection_error: _connection_error_latched = false + _set_status(_default_mode_status(mode)) _mode = mode _selected_entry = null _selected_discovery_index = -1 + _selected_friend_index = -1 _clear_edit_state() _refresh_entries() if mode == Mode.DISCOVER and not _discovery_rooms.is_empty(): _select_discovery_index(0) + elif mode == Mode.FRIENDS and not _friend_entries.is_empty(): + _select_friend_index(0) _refresh() - if mode == Mode.DISCOVER: + if mode in [Mode.DISCOVER, Mode.FRIENDS]: _discovery_refresh_timer.start() _request_discovery_refresh() else: @@ -262,6 +370,19 @@ func _set_mode(mode: Mode, clear_connection_error: bool = true) -> void: _defer_focus_control(_address if mode == Mode.DIRECT else _server_list) +func _default_mode_status(mode: Mode) -> String: + match mode: + Mode.FRIENDS: + return "friend status is live and not stored by discovery" + Mode.DIRECT: + return "direct connection • default port 7777" + Mode.SAVED: + return "saved servers are stored on this device" + Mode.RECENT: + return "recent connections are stored on this device" + return "looking for public rooms…" + + func _request_join() -> void: _connection_error_latched = false if _network_session.state in [ @@ -271,8 +392,22 @@ func _request_join() -> void: _network_session.reset_failure() var endpoint_text: String = _address.text var discovery_room: Dictionary = {} - if _mode == Mode.DISCOVER: - var room: Dictionary = _selected_discovery_room() + if _mode in [Mode.DISCOVER, Mode.FRIENDS]: + var room: Dictionary = ( + _selected_discovery_room() + if _mode == Mode.DISCOVER + else _selected_friend_room() + ) + if _mode == Mode.FRIENDS: + var friend := _selected_friend() + if not bool(friend.get("online", false)): + _set_status("This person needs to be online to do this.", true) + return + if room.is_empty(): + _set_status( + "This friend is online but is not in a joinable room.", true + ) + return if _discovery != null and _discovery.is_own_room(room): _set_status("You are already hosting this room.", true) return @@ -296,7 +431,9 @@ func _request_join() -> void: join_confirmation_requested.emit(endpoint.normalized_display) return if not discovery_room.is_empty(): + _owns_pending_public_join = true if not _discovery.prepare_public_join(discovery_room): + _owns_pending_public_join = false _set_status("Could not prepare the public connection.", true) return _set_status("Connecting…") @@ -305,7 +442,10 @@ func _request_join() -> void: func _on_public_join_prepared(endpoint_text: String) -> void: - if _mode != Mode.DISCOVER or not is_visible_in_tree(): + if not _owns_pending_public_join: + return + _owns_pending_public_join = false + if _mode not in [Mode.DISCOVER, Mode.FRIENDS] or not is_visible_in_tree(): return var endpoint: ConnectionEndpoint = EndpointParser.parse(endpoint_text) if not endpoint.is_valid(): @@ -317,8 +457,13 @@ func _on_public_join_prepared(endpoint_text: String) -> void: func _on_public_join_status_changed(message: String, is_error: bool) -> void: - if _mode == Mode.DISCOVER and is_visible_in_tree(): + if ( + _owns_pending_public_join + and _mode in [Mode.DISCOVER, Mode.FRIENDS] + and is_visible_in_tree() + ): if is_error: + _owns_pending_public_join = false _connection_error_latched = true elif _connection_error_latched: return @@ -473,6 +618,11 @@ func _on_list_item_selected(index: int) -> void: return _refresh() return + if _mode == Mode.FRIENDS: + if not _select_friend_index(index): + return + _refresh() + return if index < 0 or index >= _visible_entries.size(): return _selected_entry = _visible_entries[index] @@ -518,6 +668,8 @@ func _restore_entry_selection_and_focus( func _current_mode_button() -> Button: match _mode: + Mode.FRIENDS: + return _friends_button Mode.DIRECT: return _direct_button Mode.SAVED: @@ -536,6 +688,15 @@ func _select_discovery_index(index: int) -> bool: return true +func _select_friend_index(index: int) -> bool: + if index < 0 or index >= _friend_entries.size(): + return false + _selected_friend_index = index + _selected_entry = null + _server_list.select(index) + return true + + func _refresh_entries() -> void: _visible_entries.clear() _server_list.clear() @@ -556,6 +717,25 @@ func _refresh_entries() -> void: ] ) return + if _mode == Mode.FRIENDS: + for friend: Dictionary in _friend_entries: + var room: Dictionary = ( + friend.get("room", {}) + if typeof(friend.get("room", {})) == TYPE_DICTIONARY + else {} + ) + var state := "offline" + if bool(friend.get("online", false)): + state = ( + "playing in %s" + % str(room.get("room_name", "a public room")) + if not room.is_empty() + else "online" + ) + _server_list.add_item("%s — %s" % [ + str(friend.get("display_name", "Player")), state, + ]) + return if _saved_servers == null or _mode == Mode.DIRECT: return _visible_entries = ( @@ -594,15 +774,24 @@ func _refresh() -> void: ] or (_discovery != null and _discovery.is_public_join_preparing()) var direct: bool = _mode == Mode.DIRECT var discovery_mode: bool = _mode == Mode.DISCOVER + var friends_mode: bool = _mode == Mode.FRIENDS var selected: bool = ( _selected_discovery_index >= 0 if discovery_mode + else _selected_friend_index >= 0 + if friends_mode else _selected_entry != null ) - _discover_button.button_pressed = discovery_mode - _direct_button.button_pressed = direct - _saved_button.button_pressed = _mode == Mode.SAVED - _recent_button.button_pressed = _mode == Mode.RECENT + _discover_button.set_selected(discovery_mode, false) + _friends_button.set_selected(friends_mode, false) + _direct_button.set_selected(direct, false) + _saved_button.set_selected(_mode == Mode.SAVED, false) + _recent_button.set_selected(_mode == Mode.RECENT, false) + var direct_content_visible: bool = direct or _name_entry_active + var list_content_visible: bool = not direct_content_visible + _direct_content.visible = direct_content_visible + _list_content.visible = list_content_visible + _list_title.text = _current_list_title() _address.visible = direct or _name_entry_active _address_label.visible = _address.visible _address_helper.visible = _address.visible @@ -613,15 +802,20 @@ func _refresh() -> void: _name_edit.visible = _name_entry_active _name_label.visible = _name_entry_active _name_helper.visible = _name_entry_active - _server_list.visible = not direct and not _name_entry_active - _details.visible = not direct and not _name_entry_active + _server_list.visible = list_content_visible + _details_panel.visible = list_content_visible + _details.visible = list_content_visible _join_button.disabled = ( connecting or (not direct and not selected) or ( - discovery_mode + (discovery_mode or friends_mode) and selected - and _discovery_room_is_full(_selected_discovery_room()) + and _discovery_room_is_full( + _selected_discovery_room() + if discovery_mode + else _selected_friend_room() + ) ) or ( discovery_mode @@ -629,16 +823,19 @@ func _refresh() -> void: and _discovery != null and _discovery.is_own_room(_selected_discovery_room()) ) + or (friends_mode and selected and _selected_friend_room().is_empty()) + ) + _join_button.text = "join now" if direct else "join" + _refresh_button.visible = ( + (discovery_mode or friends_mode) and not _name_entry_active ) - _join_button.text = "join\nnow" if direct else "join" - _refresh_button.visible = discovery_mode and not _name_entry_active _save_button.visible = ( direct or _mode == Mode.RECENT or _name_entry_active ) _save_button.disabled = connecting or ( _mode == Mode.RECENT and not selected and not _name_entry_active ) - _save_button.text = "save" if _name_entry_active else "save\nserver" + _save_button.text = "save" if _name_entry_active else "save server" _edit_button.visible = _mode == Mode.SAVED and selected _favorite_button.visible = _mode == Mode.SAVED and selected _favorite_button.text = ( @@ -676,16 +873,22 @@ func _refresh() -> void: _details.text = ( _format_discovery_details(_selected_discovery_room()) if discovery_mode + else _format_friend_details(_selected_friend()) + if friends_mode else _format_entry_details(_selected_entry) ) elif ( _discovery_rooms.is_empty() if discovery_mode + else _friend_entries.is_empty() + if friends_mode else _visible_entries.is_empty() ): _details.text = ( "No public rooms are available." if discovery_mode + else "No friends added yet." + if friends_mode else "No saved servers yet." if _mode == Mode.SAVED else "No recent connections yet." @@ -702,9 +905,21 @@ func _refresh() -> void: _configure_controller_navigation() +func _current_list_title() -> String: + match _mode: + Mode.FRIENDS: + return "friends" + Mode.SAVED: + return "saved servers" + Mode.RECENT: + return "recent connections" + return "public rooms" + + func _configure_controller_navigation() -> void: var mode_buttons: Array[Control] = [ _discover_button, + _friends_button, _direct_button, _saved_button, _recent_button, @@ -722,7 +937,6 @@ func _configure_controller_navigation() -> void: _favorite_button, _delete_button, _cancel_button, - _back_button, ]: if _controller_focus_eligible(control): action_controls.append(control) @@ -730,6 +944,7 @@ func _configure_controller_navigation() -> void: all_controls.append_array(mode_buttons) all_controls.append_array(content_controls) all_controls.append_array(action_controls) + all_controls.append(_back_button) for control: Control in all_controls: control.focus_mode = Control.FOCUS_ALL for control: Control in [ @@ -743,10 +958,10 @@ func _configure_controller_navigation() -> void: _favorite_button, _delete_button, _cancel_button, - _back_button, ]: if control not in all_controls: control.focus_mode = Control.FOCUS_NONE + _back_button.focus_mode = Control.FOCUS_ALL var primary_content: Control = ( content_controls.front() if not content_controls.is_empty() @@ -775,7 +990,7 @@ func _configure_controller_navigation() -> void: if index < content_controls.size() - 1 else action_controls.front() if not action_controls.is_empty() - else content + else _back_button ) _set_controller_neighbors(content, content, content, above, below) for index: int in action_controls.size(): @@ -787,8 +1002,22 @@ func _configure_controller_navigation() -> void: content_controls.back() if not content_controls.is_empty() else mode_buttons[int(_mode)], - action, + _back_button, ) + var back_above: Control = ( + action_controls.back() + if not action_controls.is_empty() + else content_controls.back() + if not content_controls.is_empty() + else mode_buttons[int(_mode)] + ) + _set_controller_neighbors( + _back_button, + _back_button, + _back_button, + back_above, + _back_button, + ) ControllerFocusNavigationType.configure_traversal(all_controls) _recover_controller_focus(all_controls, primary_content) @@ -920,6 +1149,29 @@ func _format_discovery_details(room: Dictionary) -> String: return "\n".join(lines) +func _format_friend_details(friend: Dictionary) -> String: + if friend.is_empty(): + return "Select a friend." + var room := _selected_friend_room() + var lines: Array[String] = [ + "Friend: %s" % str(friend.get("display_name", "Player")), + "Status: %s" % ( + "online" if bool(friend.get("online", false)) else "offline" + ), + ] + if not room.is_empty(): + lines.append("Room: %s" % str(room.get("room_name", "Public room"))) + lines.append("Players: %d / %d" % [ + int(room.get("current_players", 0)), + int(room.get("max_players", 0)), + ]) + elif bool(friend.get("online", false)): + lines.append("This friend is not in a joinable public room.") + else: + lines.append("This person needs to be online to join them.") + return "\n".join(lines) + + func _selected_discovery_room() -> Dictionary: if ( _selected_discovery_index < 0 @@ -929,6 +1181,25 @@ func _selected_discovery_room() -> Dictionary: return _discovery_rooms[_selected_discovery_index] +func _selected_friend() -> Dictionary: + if ( + _selected_friend_index < 0 + or _selected_friend_index >= _friend_entries.size() + ): + return {} + return _friend_entries[_selected_friend_index] + + +func _selected_friend_room() -> Dictionary: + var friend := _selected_friend() + var room: Variant = friend.get("room", {}) + return ( + (room as Dictionary) + if typeof(room) == TYPE_DICTIONARY + else {} + ) + + func _discovery_room_is_full(room: Dictionary) -> bool: if room.is_empty(): return false @@ -938,11 +1209,14 @@ func _discovery_room_is_full(room: Dictionary) -> bool: func _request_discovery_refresh() -> void: if ( _discovery == null - or _mode != Mode.DISCOVER + or _mode not in [Mode.DISCOVER, Mode.FRIENDS] or not is_visible_in_tree() ): return - _discovery.request_rooms() + if _mode == Mode.DISCOVER: + _discovery.request_rooms() + else: + _discovery.request_friend_presence() func _on_discovery_rooms_updated(rooms: Array[Dictionary]) -> void: @@ -972,6 +1246,30 @@ func _on_discovery_status_changed(message: String, is_error: bool) -> void: _set_status(message, is_error) +func _on_friend_presence_updated(friends: Array[Dictionary]) -> void: + var selected_fingerprint := str( + _selected_friend().get("fingerprint", "") + ) + _friend_entries = friends.duplicate(true) + _selected_friend_index = -1 + if _mode != Mode.FRIENDS: + return + _refresh_entries() + if not selected_fingerprint.is_empty(): + for index: int in _friend_entries.size(): + if str(_friend_entries[index].get("fingerprint", "")) == selected_fingerprint: + _select_friend_index(index) + break + if _selected_friend_index < 0 and not _friend_entries.is_empty(): + _select_friend_index(0) + _refresh() + + +func _on_social_status_changed(message: String, is_error: bool) -> void: + if _mode == Mode.FRIENDS and is_visible_in_tree(): + _set_status(message, is_error) + + func _format_result_code(result_code: String) -> String: match result_code.strip_edges().to_upper(): "SUCCESS": diff --git a/ui/network/join_game_page.tscn b/ui/network/join_game_page.tscn index c4be4fa..54f354d 100644 --- a/ui/network/join_game_page.tscn +++ b/ui/network/join_game_page.tscn @@ -1,76 +1,10 @@ -[gd_scene load_steps=12 format=3] +[gd_scene load_steps=5 format=3] [ext_resource type="Script" path="res://ui/network/join_game_page.gd" id="1_script"] [ext_resource type="Theme" path="res://ui/game_theme.tres" id="2_theme"] +[ext_resource type="Script" path="res://ui/components/organizer_tab.gd" id="3_tab"] [ext_resource type="PackedScene" path="res://ui/components/bubble_menu/bubble_confirmation_page.tscn" id="4_confirmation"] -[sub_resource type="StyleBoxFlat" id="StyleBox_paper"] -bg_color = Color(0.051, 0.173, 0.227, 1) -corner_radius_top_left = 54 -corner_radius_top_right = 46 -corner_radius_bottom_right = 58 -corner_radius_bottom_left = 48 - -[sub_resource type="StyleBoxFlat" id="StyleBox_list"] -bg_color = Color(0.071, 0.247, 0.306, 1) -corner_radius_top_left = 12 -corner_radius_top_right = 9 -corner_radius_bottom_right = 13 -corner_radius_bottom_left = 10 - -[sub_resource type="StyleBoxFlat" id="StyleBox_selected"] -bg_color = Color(0.137, 0.525, 0.592, 1) -corner_radius_top_left = 8 -corner_radius_top_right = 7 -corner_radius_bottom_right = 9 -corner_radius_bottom_left = 6 - -[sub_resource type="StyleBoxEmpty" id="StyleBox_focus"] - -[sub_resource type="StyleBoxFlat" id="StyleBox_input"] -content_margin_left = 12.0 -content_margin_top = 7.0 -content_margin_right = 12.0 -content_margin_bottom = 7.0 -bg_color = Color(0.031, 0.122, 0.169, 1) -corner_radius_top_left = 8 -corner_radius_top_right = 7 -corner_radius_bottom_right = 9 -corner_radius_bottom_left = 6 - -[sub_resource type="StyleBoxFlat" id="StyleBox_input_focus"] -content_margin_left = 12.0 -content_margin_top = 7.0 -content_margin_right = 12.0 -content_margin_bottom = 7.0 -bg_color = Color(0.137, 0.525, 0.592, 1) -corner_radius_top_left = 8 -corner_radius_top_right = 7 -corner_radius_bottom_right = 9 -corner_radius_bottom_left = 6 - -[sub_resource type="StyleBoxFlat" id="StyleBox_input_read_only"] -content_margin_left = 12.0 -content_margin_top = 7.0 -content_margin_right = 12.0 -content_margin_bottom = 7.0 -bg_color = Color(0.031, 0.122, 0.169, 0.82) -corner_radius_top_left = 8 -corner_radius_top_right = 7 -corner_radius_bottom_right = 9 -corner_radius_bottom_left = 6 - -[sub_resource type="StyleBoxFlat" id="StyleBox_status"] -content_margin_left = 10.0 -content_margin_top = 4.0 -content_margin_right = 10.0 -content_margin_bottom = 4.0 -bg_color = Color(0.071, 0.247, 0.306, 0.9) -corner_radius_top_left = 7 -corner_radius_top_right = 6 -corner_radius_bottom_right = 8 -corner_radius_bottom_left = 5 - [node name="JoinGamePage" type="Control"] visible = false layout_mode = 3 @@ -82,243 +16,322 @@ grow_vertical = 2 theme = ExtResource("2_theme") script = ExtResource("1_script") -[node name="Paper" type="PanelContainer" parent="."] -layout_mode = 0 -offset_left = 230.0 -offset_top = 64.0 -offset_right = 1050.0 -offset_bottom = 656.0 -theme_override_styles/panel = SubResource("StyleBox_paper") +[node name="MainPanel" type="PanelContainer" parent="."] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -440.0 +offset_top = -330.0 +offset_right = 440.0 +offset_bottom = 330.0 +grow_horizontal = 2 +grow_vertical = 2 -[node name="Margin" type="MarginContainer" parent="Paper"] +[node name="OuterMargin" type="MarginContainer" parent="MainPanel"] layout_mode = 2 -theme_override_constants/margin_left = 54 -theme_override_constants/margin_top = 30 -theme_override_constants/margin_right = 54 -theme_override_constants/margin_bottom = 30 +theme_override_constants/margin_left = 24 +theme_override_constants/margin_top = 18 +theme_override_constants/margin_right = 24 +theme_override_constants/margin_bottom = 18 -[node name="Layout" type="VBoxContainer" parent="Paper/Margin"] +[node name="Layout" type="VBoxContainer" parent="MainPanel/OuterMargin"] layout_mode = 2 -theme_override_constants/separation = 10 -alignment = 1 +theme_override_constants/separation = -26 -[node name="Title" type="Label" parent="Paper/Margin/Layout"] +[node name="Heading" type="Label" parent="MainPanel/OuterMargin/Layout"] +custom_minimum_size = Vector2(0, 66) layout_mode = 2 -theme_override_colors/font_color = Color(0.902, 0.969, 0.969, 1) theme_override_font_sizes/font_size = 30 text = "join game" horizontal_alignment = 1 -[node name="Modes" type="HBoxContainer" parent="Paper/Margin/Layout"] +[node name="TabBar" type="HBoxContainer" parent="MainPanel/OuterMargin/Layout"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 52) layout_mode = 2 -theme_override_constants/separation = 14 +theme_override_constants/separation = 8 alignment = 1 -[node name="DiscoverButton" type="Button" parent="Paper/Margin/Layout/Modes"] +[node name="DiscoverButton" type="Button" parent="MainPanel/OuterMargin/Layout/TabBar"] unique_name_in_owner = true -custom_minimum_size = Vector2(100, 72) +custom_minimum_size = Vector2(165, 52) layout_mode = 2 -toggle_mode = true +focus_mode = 2 text = "discover" +script = ExtResource("3_tab") -[node name="DirectButton" type="Button" parent="Paper/Margin/Layout/Modes"] +[node name="FriendsButton" type="Button" parent="MainPanel/OuterMargin/Layout/TabBar"] unique_name_in_owner = true -custom_minimum_size = Vector2(100, 72) +custom_minimum_size = Vector2(140, 52) layout_mode = 2 -toggle_mode = true +focus_mode = 2 +text = "friends" +script = ExtResource("3_tab") +palette_index = 1 + +[node name="DirectButton" type="Button" parent="MainPanel/OuterMargin/Layout/TabBar"] +unique_name_in_owner = true +custom_minimum_size = Vector2(140, 52) +layout_mode = 2 +focus_mode = 2 text = "direct" +script = ExtResource("3_tab") +palette_index = 1 -[node name="SavedButton" type="Button" parent="Paper/Margin/Layout/Modes"] +[node name="SavedButton" type="Button" parent="MainPanel/OuterMargin/Layout/TabBar"] unique_name_in_owner = true -custom_minimum_size = Vector2(100, 72) +custom_minimum_size = Vector2(140, 52) layout_mode = 2 -toggle_mode = true +focus_mode = 2 text = "saved" +script = ExtResource("3_tab") +palette_index = 2 -[node name="RecentButton" type="Button" parent="Paper/Margin/Layout/Modes"] +[node name="RecentButton" type="Button" parent="MainPanel/OuterMargin/Layout/TabBar"] unique_name_in_owner = true -custom_minimum_size = Vector2(100, 72) +custom_minimum_size = Vector2(140, 52) layout_mode = 2 -toggle_mode = true +focus_mode = 2 text = "recent" +script = ExtResource("3_tab") +palette_index = 1 -[node name="AddressLabel" type="Label" parent="Paper/Margin/Layout"] +[node name="ContentPanel" type="PanelContainer" parent="MainPanel/OuterMargin/Layout"] unique_name_in_owner = true +custom_minimum_size = Vector2(0, 474) layout_mode = 2 -theme_override_colors/font_color = Color(0.902, 0.969, 0.969, 1) +size_flags_vertical = 3 + +[node name="ContentMargin" type="MarginContainer" parent="MainPanel/OuterMargin/Layout/ContentPanel"] +layout_mode = 2 +theme_override_constants/margin_left = 28 +theme_override_constants/margin_top = 20 +theme_override_constants/margin_right = 28 +theme_override_constants/margin_bottom = 20 + +[node name="ContentLayout" type="VBoxContainer" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin"] +layout_mode = 2 +theme_override_constants/separation = 12 + +[node name="PageStack" type="Control" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="ListContent" type="VBoxContainer" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/PageStack"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 10 + +[node name="ListTitle" type="Label" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/PageStack/ListContent"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 28) +layout_mode = 2 +theme_override_font_sizes/font_size = 20 +text = "public rooms" + +[node name="ServerList" type="ItemList" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/PageStack/ListContent"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 180) +layout_mode = 2 +size_flags_vertical = 3 theme_override_font_sizes/font_size = 17 -text = "server address" -horizontal_alignment = 1 - -[node name="Address" type="LineEdit" parent="Paper/Margin/Layout"] -unique_name_in_owner = true -custom_minimum_size = Vector2(0, 42) -layout_mode = 2 -theme_override_colors/font_color = Color(0.96, 0.93, 0.82, 1) -theme_override_colors/font_uneditable_color = Color(0.624, 0.812, 0.824, 1) -theme_override_colors/font_selected_color = Color(1, 0.98, 0.9, 1) -theme_override_colors/font_placeholder_color = Color(0.624, 0.812, 0.824, 0.78) -theme_override_colors/caret_color = Color(0.902, 0.969, 0.969, 1) -theme_override_colors/selection_color = Color(0.2, 0.48, 0.59, 0.9) -theme_override_font_sizes/font_size = 19 -theme_override_styles/normal = SubResource("StyleBox_input") -theme_override_styles/focus = SubResource("StyleBox_input_focus") -theme_override_styles/read_only = SubResource("StyleBox_input_read_only") -placeholder_text = "example.net or 192.168.1.50:7777" -alignment = 1 -max_length = 300 - -[node name="AddressHelper" type="Label" parent="Paper/Margin/Layout"] -unique_name_in_owner = true -layout_mode = 2 -theme_override_colors/font_color = Color(0.624, 0.812, 0.824, 1) -theme_override_font_sizes/font_size = 13 -text = "Hostname, IPv4, or [IPv6]. Port 7777 is used when omitted; include the port shown by a host when it differs.\nJoin Now connects once; Save Server stores this address locally." -horizontal_alignment = 1 -autowrap_mode = 2 - -[node name="NameLabel" type="Label" parent="Paper/Margin/Layout"] -unique_name_in_owner = true -visible = false -layout_mode = 2 -theme_override_colors/font_color = Color(0.902, 0.969, 0.969, 1) -theme_override_font_sizes/font_size = 17 -text = "server name" -horizontal_alignment = 1 - -[node name="NameEdit" type="LineEdit" parent="Paper/Margin/Layout"] -unique_name_in_owner = true -visible = false -custom_minimum_size = Vector2(0, 42) -layout_mode = 2 -theme_override_colors/font_color = Color(0.96, 0.93, 0.82, 1) -theme_override_colors/font_uneditable_color = Color(0.624, 0.812, 0.824, 1) -theme_override_colors/font_selected_color = Color(1, 0.98, 0.9, 1) -theme_override_colors/font_placeholder_color = Color(0.624, 0.812, 0.824, 0.78) -theme_override_colors/caret_color = Color(0.902, 0.969, 0.969, 1) -theme_override_colors/selection_color = Color(0.2, 0.48, 0.59, 0.9) -theme_override_font_sizes/font_size = 19 -theme_override_styles/normal = SubResource("StyleBox_input") -theme_override_styles/focus = SubResource("StyleBox_input_focus") -theme_override_styles/read_only = SubResource("StyleBox_input_read_only") -placeholder_text = "Friend's server" -alignment = 1 -max_length = 80 - -[node name="NameHelper" type="Label" parent="Paper/Margin/Layout"] -unique_name_in_owner = true -visible = false -layout_mode = 2 -theme_override_colors/font_color = Color(0.624, 0.812, 0.824, 1) -theme_override_font_sizes/font_size = 13 -text = "Only visible on this device." -horizontal_alignment = 1 - -[node name="ServerList" type="ItemList" parent="Paper/Margin/Layout"] -unique_name_in_owner = true -visible = false -custom_minimum_size = Vector2(0, 145) -layout_mode = 2 -theme_override_colors/font_color = Color(0.902, 0.969, 0.969, 1) -theme_override_colors/font_selected_color = Color(0.902, 0.969, 0.969, 1) -theme_override_colors/guide_color = Color(0.624, 0.812, 0.824, 0.22) -theme_override_font_sizes/font_size = 17 -theme_override_styles/panel = SubResource("StyleBox_list") -theme_override_styles/focus = SubResource("StyleBox_focus") -theme_override_styles/selected = SubResource("StyleBox_selected") -theme_override_styles/selected_focus = SubResource("StyleBox_selected") allow_reselect = true same_column_width = true -[node name="Details" type="Label" parent="Paper/Margin/Layout"] +[node name="DetailsPanel" type="PanelContainer" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/PageStack/ListContent"] unique_name_in_owner = true -visible = false -custom_minimum_size = Vector2(0, 92) +custom_minimum_size = Vector2(0, 100) layout_mode = 2 -theme_override_colors/font_color = Color(0.902, 0.969, 0.969, 1) -theme_override_font_sizes/font_size = 16 + +[node name="Details" type="Label" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/PageStack/ListContent/DetailsPanel"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_font_sizes/font_size = 15 text = "Select a server." horizontal_alignment = 1 vertical_alignment = 1 autowrap_mode = 2 -[node name="Status" type="Label" parent="Paper/Margin/Layout"] +[node name="DirectContent" type="VBoxContainer" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/PageStack"] unique_name_in_owner = true -custom_minimum_size = Vector2(0, 38) +visible = false +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 10 + +[node name="AddressLabel" type="Label" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/PageStack/DirectContent"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 28) layout_mode = 2 -theme_override_colors/font_color = Color(0.902, 0.969, 0.969, 1) -theme_override_font_sizes/font_size = 15 -theme_override_styles/normal = SubResource("StyleBox_status") -text = "Direct UDP connection • default port 7777" +theme_override_font_sizes/font_size = 20 +text = "server address" + +[node name="Address" type="LineEdit" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/PageStack/DirectContent"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 46) +layout_mode = 2 +focus_mode = 2 +theme_override_font_sizes/font_size = 19 +placeholder_text = "example.net or 192.168.1.50:7777" +alignment = 1 +max_length = 300 + +[node name="AddressHelper" type="Label" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/PageStack/DirectContent"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 48) +layout_mode = 2 +theme_override_font_sizes/font_size = 13 +text = "Hostname, IPv4, or [IPv6]. Port 7777 is used when omitted; include the port shown by a host when it differs.\nJoin Now connects once; Save Server stores this address locally." horizontal_alignment = 1 vertical_alignment = 1 autowrap_mode = 2 -[node name="SessionSummary" type="Label" parent="Paper/Margin/Layout"] +[node name="NameLabel" type="Label" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/PageStack/DirectContent"] +unique_name_in_owner = true +visible = false +custom_minimum_size = Vector2(0, 24) +layout_mode = 2 +theme_override_font_sizes/font_size = 16 +text = "server name" + +[node name="NameEdit" type="LineEdit" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/PageStack/DirectContent"] +unique_name_in_owner = true +visible = false +custom_minimum_size = Vector2(0, 46) +layout_mode = 2 +focus_mode = 2 +theme_override_font_sizes/font_size = 19 +placeholder_text = "Friend's server" +alignment = 1 +max_length = 80 + +[node name="NameHelper" type="Label" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/PageStack/DirectContent"] unique_name_in_owner = true visible = false layout_mode = 2 -theme_override_colors/font_color = Color(0.624, 0.812, 0.824, 1) -theme_override_font_sizes/font_size = 15 -text = "1 / 8 players" +theme_override_font_sizes/font_size = 13 +text = "Only visible on this device." horizontal_alignment = 1 -[node name="Actions" type="HBoxContainer" parent="Paper/Margin/Layout"] +[node name="Spacer" type="Control" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/PageStack/DirectContent"] layout_mode = 2 -theme_override_constants/separation = 7 +size_flags_vertical = 3 + +[node name="Actions" type="HBoxContainer" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 46) +layout_mode = 2 +theme_override_constants/separation = 10 alignment = 1 -[node name="RefreshButton" type="Button" parent="Paper/Margin/Layout/Actions"] +[node name="RefreshButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/Actions"] unique_name_in_owner = true visible = false -custom_minimum_size = Vector2(82, 72) +custom_minimum_size = Vector2(120, 46) layout_mode = 2 +focus_mode = 2 text = "refresh" -[node name="JoinButton" type="Button" parent="Paper/Margin/Layout/Actions"] +[node name="JoinButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/Actions"] unique_name_in_owner = true -custom_minimum_size = Vector2(82, 72) +custom_minimum_size = Vector2(120, 46) layout_mode = 2 +focus_mode = 2 text = "join" -[node name="SaveButton" type="Button" parent="Paper/Margin/Layout/Actions"] +[node name="SaveButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/Actions"] unique_name_in_owner = true -custom_minimum_size = Vector2(82, 72) +custom_minimum_size = Vector2(130, 46) layout_mode = 2 -text = "save\nserver" +focus_mode = 2 +text = "save server" -[node name="EditButton" type="Button" parent="Paper/Margin/Layout/Actions"] +[node name="EditButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/Actions"] unique_name_in_owner = true visible = false -custom_minimum_size = Vector2(76, 68) +custom_minimum_size = Vector2(110, 46) layout_mode = 2 +focus_mode = 2 text = "edit" -[node name="FavoriteButton" type="Button" parent="Paper/Margin/Layout/Actions"] +[node name="FavoriteButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/Actions"] unique_name_in_owner = true visible = false -custom_minimum_size = Vector2(88, 68) +custom_minimum_size = Vector2(130, 46) layout_mode = 2 +focus_mode = 2 text = "favorite" -[node name="DeleteButton" type="Button" parent="Paper/Margin/Layout/Actions"] +[node name="DeleteButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/Actions"] unique_name_in_owner = true visible = false -custom_minimum_size = Vector2(82, 68) +custom_minimum_size = Vector2(110, 46) layout_mode = 2 +focus_mode = 2 text = "delete" -[node name="CancelButton" type="Button" parent="Paper/Margin/Layout/Actions"] +[node name="CancelButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/Actions"] unique_name_in_owner = true visible = false -custom_minimum_size = Vector2(76, 68) +custom_minimum_size = Vector2(120, 46) layout_mode = 2 +focus_mode = 2 text = "cancel" -[node name="BackButton" type="Button" parent="Paper/Margin/Layout/Actions"] -unique_name_in_owner = true -custom_minimum_size = Vector2(76, 68) +[node name="FooterGroup" type="MarginContainer" parent="MainPanel/OuterMargin/Layout"] layout_mode = 2 +theme_override_constants/margin_top = 34 + +[node name="FooterLayout" type="VBoxContainer" parent="MainPanel/OuterMargin/Layout/FooterGroup"] +layout_mode = 2 +theme_override_constants/separation = 8 + +[node name="InfoRow" type="HBoxContainer" parent="MainPanel/OuterMargin/Layout/FooterGroup/FooterLayout"] +layout_mode = 2 +theme_override_constants/separation = 12 + +[node name="Status" type="Label" parent="MainPanel/OuterMargin/Layout/FooterGroup/FooterLayout/InfoRow"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 24) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 14 +text = "looking for public rooms…" +vertical_alignment = 1 +text_overrun_behavior = 3 + +[node name="SessionSummary" type="Label" parent="MainPanel/OuterMargin/Layout/FooterGroup/FooterLayout/InfoRow"] +unique_name_in_owner = true +visible = false +custom_minimum_size = Vector2(210, 24) +layout_mode = 2 +theme_override_font_sizes/font_size = 14 +text = "1 / 8 players" +horizontal_alignment = 2 +vertical_alignment = 1 + +[node name="Footer" type="HBoxContainer" parent="MainPanel/OuterMargin/Layout/FooterGroup/FooterLayout"] +layout_mode = 2 +alignment = 2 + +[node name="BackButton" type="Button" parent="MainPanel/OuterMargin/Layout/FooterGroup/FooterLayout/Footer"] +unique_name_in_owner = true +custom_minimum_size = Vector2(150, 46) +layout_mode = 2 +focus_mode = 2 text = "back" [node name="DeleteConfirmation" parent="." instance=ExtResource("4_confirmation")] diff --git a/ui/on_screen_keyboard.gd b/ui/on_screen_keyboard.gd index ee7475c..6b6ea44 100644 --- a/ui/on_screen_keyboard.gd +++ b/ui/on_screen_keyboard.gd @@ -100,6 +100,23 @@ func is_open() -> bool: return visible or _native_text_entry_is_active() +func close_for_control(control: Control = null) -> bool: + if visible and (control == null or _target == control): + _close_keyboard(false) + return true + if not _uses_native_virtual_keyboard(): + return false + var native_target: Control = _native_session_target() + if native_target != null and (control == null or native_target == control): + _close_native_keyboard() + return true + if control != null and control.has_focus() and _can_edit(control): + _hide_native_keyboard() + control.release_focus() + return true + return false + + func setup_controller_mapping( mapping_manager: ControllerMappingManagerType, ) -> void: @@ -110,7 +127,10 @@ func request_for_focused_control() -> bool: return request_for_control(get_viewport().gui_get_focus_owner()) -func request_for_control(control: Control = null) -> bool: +func request_for_control( + control: Control = null, + preserve_caret: bool = false, +) -> bool: if visible or not _can_edit(control): return false if _uses_native_virtual_keyboard(): @@ -118,7 +138,7 @@ func request_for_control(control: Control = null) -> bool: return true if not _is_available_for_controller(): return false - _open_for(control) + _open_for(control, preserve_caret) return true @@ -478,14 +498,20 @@ func _can_edit(control: Control) -> bool: return false -func _open_for(control: Control) -> void: +func _open_for(control: Control, preserve_caret: bool = false) -> void: _target = control _target_virtual_keyboard_enabled = bool( _target.get("virtual_keyboard_enabled") ) _target.set("virtual_keyboard_enabled", false) _buffer = str(_target.get("text")) - _buffer_caret = _buffer.length() + if preserve_caret and _target is LineEdit: + _buffer_caret = (_target as LineEdit).caret_column + elif preserve_caret and _target is TextEdit: + _buffer_caret = _text_edit_caret_offset(_target as TextEdit) + else: + _buffer_caret = _buffer.length() + _buffer_caret = clampi(_buffer_caret, 0, _buffer.length()) _set_target_caret(_buffer_caret) _page = Page.LOWER _last_focused_key = null diff --git a/ui/players_page.gd b/ui/players_page.gd index 7b77ef1..27c142c 100644 --- a/ui/players_page.gd +++ b/ui/players_page.gd @@ -17,6 +17,12 @@ const MODERATION_KICK_ICON: Texture2D = preload( const MODERATION_MUTE_ICON: Texture2D = preload( "res://ui/icons/moderation_options/moderation_options_mute_light.png" ) +const FRIEND_ICON: Texture2D = preload( + "res://ui/icons/player_options/friends.png" +) +const CLEAR_ART_ICON: Texture2D = preload( + "res://ui/icons/player_options/clean.png" +) const MODERATION_BUTTON_SIZE := Vector2(52.0, 40.0) const MODERATION_ICON_SIZE: int = 40 @@ -61,11 +67,31 @@ func setup( _status.text = message _refresh() ) + _service.friend_action_finished.connect(func(_ok: bool, message: String) -> void: + _status.text = message + _refresh() + ) if _discovery != null: _discovery.host_settings_changed.connect( _on_host_settings_changed ) _discovery.host_status_changed.connect(_on_host_status_changed) + _discovery.friend_presence_updated.connect( + func(_friends: Array[Dictionary]) -> void: _refresh() + ) + _discovery.presence_sharing_changed.connect( + func(_enabled: bool) -> void: _refresh() + ) + _discovery.friend_invite_finished.connect( + func(_ok: bool, message: String) -> void: + _status.text = message + _refresh() + ) + _discovery.social_status_changed.connect( + func(message: String, is_error: bool) -> void: + if is_error or _current_tab == 1: + _status.text = message + ) _refresh() @@ -185,9 +211,9 @@ func _build() -> void: _tabs.size_flags_horizontal = Control.SIZE_EXPAND_FILL _tabs.add_theme_constant_override("separation", 10) tab_row.add_child(_tabs) - for index: int in 3: + for index: int in 4: var button := Button.new() - button.text = ["players", "relationships", "banned"][index] + button.text = ["players", "friends", "relationships", "banned"][index] button.toggle_mode = true button.pressed.connect(_select_tab.bind(index)) UtilityPageStyle.apply_ocean_button(button) @@ -322,7 +348,7 @@ func _set_host_toggle_state( func _select_tab(index: int) -> void: - if index == 2 and (_service == null or not _service.is_local_moderator()): + if index == 3 and (_service == null or not _service.is_local_moderator()): return _current_tab = index _refresh() @@ -335,12 +361,12 @@ func _refresh() -> void: _count_label.text = "%d / %d connected" % [ _service.get_connected_count(), _service.get_max_players(), ] - if _current_tab == 2 and not _service.is_local_moderator(): + if _current_tab == 3 and not _service.is_local_moderator(): _current_tab = 0 for index: int in _tabs.get_child_count(): var button := _tabs.get_child(index) as Button button.button_pressed = index == _current_tab - button.visible = index != 2 or _service.is_local_moderator() + button.visible = index != 3 or _service.is_local_moderator() _refresh_host_settings() for child: Node in _list.get_children(): child.queue_free() @@ -348,8 +374,10 @@ func _refresh() -> void: 0: _build_active_rows() 1: - _build_relationship_rows() + _build_friend_rows() 2: + _build_relationship_rows() + 3: _build_ban_rows() if _controller_zone == ControllerZone.BODY and _body_controls().is_empty(): _controller_zone = ControllerZone.TABS @@ -520,6 +548,23 @@ func _build_active_player_row(entry: PlayerListEntry) -> void: actions.alignment = BoxContainer.ALIGNMENT_END actions.add_theme_constant_override("separation", 6) row.add_child(actions) + var friend := Button.new() + friend.disabled = entry.is_local_player or entry.is_friend or not entry.can_request_friend + var friend_action := "friends" if entry.is_friend else "add friend" + _configure_moderation_button(friend, FRIEND_ICON, friend_action) + friend.tooltip_text = ( + "Already friends." + if entry.is_friend + else "This person needs to be online to do this." + if not entry.can_request_friend + else "Send a live friend request." + ) + friend.pressed.connect(func() -> void: + _service.send_friend_request( + entry.peer_id, entry.full_fingerprint, entry.display_name + ) + ) + actions.add_child(friend) var mute := Button.new() var mute_action: String = "unmute" if entry.muted else "mute" mute.disabled = entry.is_local_player @@ -539,14 +584,9 @@ func _build_active_player_row(entry: PlayerListEntry) -> void: operator.custom_minimum_size = MODERATION_BUTTON_SIZE actions.add_child(operator) var clear_art := Button.new() - clear_art.text = "clear art" clear_art.disabled = not entry.can_clear_art - clear_art.tooltip_text = ( - "Remove every shared artwork this player participated in." - ) + _configure_moderation_button(clear_art, CLEAR_ART_ICON, "scrub art") clear_art.pressed.connect(_confirm_clear_art.bind(entry)) - UtilityPageStyle.apply_compact_ocean_button(clear_art) - clear_art.custom_minimum_size = Vector2(84.0, 40.0) actions.add_child(clear_art) var kick := Button.new() kick.disabled = not entry.can_kick @@ -661,6 +701,104 @@ func _build_relationship_rows() -> void: row.add_child(unmute) +func _build_friend_rows() -> void: + _build_presence_controls() + var friends: Array[Dictionary] = ( + _discovery.get_friend_presence() + if _discovery != null + else [] + ) + if friends.is_empty(): + _add_empty("No friends added yet. Add someone while you are in a room together.") + return + for friend: Dictionary in friends: + var row := _make_row() + var fingerprint := str(friend.get("fingerprint", "")) + var display_name := str(friend.get("display_name", "Player")) + var room: Dictionary = ( + friend.get("room", {}) + if typeof(friend.get("room", {})) == TYPE_DICTIONARY + else {} + ) + var label := Label.new() + label.size_flags_horizontal = Control.SIZE_EXPAND_FILL + label.clip_text = true + label.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS + label.text = "%s · %s %s" % [ + display_name, + NetworkIdentityCrypto.compact_suffix(fingerprint), + "playing in %s" % str(room.get("room_name", "a public room")) + if not room.is_empty() + else "Online" + if bool(friend.get("online", false)) + else "Offline", + ] + label.tooltip_text = NetworkIdentityCrypto.format_fingerprint(fingerprint) + label.add_theme_color_override( + "font_color", UtilityPageStyle.OCEAN_TEXT_PRIMARY + ) + row.add_child(label) + var invite := Button.new() + invite.text = "invite" + invite.tooltip_text = ( + "Invite this friend to your listed public room." + if bool(friend.get("online", false)) + else "This person needs to be online to do this." + ) + invite.pressed.connect(func() -> void: + _discovery.send_friend_invite(fingerprint) + ) + UtilityPageStyle.apply_compact_ocean_button(invite) + row.add_child(invite) + var remove := Button.new() + remove.text = "remove" + remove.pressed.connect(func() -> void: + _confirm( + "Remove %s from your friends?" % display_name, + func() -> void: + _service.remove_friend(fingerprint, display_name), + ) + ) + UtilityPageStyle.apply_compact_ocean_button(remove) + row.add_child(remove) + var block := Button.new() + block.text = "block" + block.pressed.connect(func() -> void: + _confirm( + "Block %s?\nThis also removes the friendship." % display_name, + func() -> void: + _service.set_blocked(fingerprint, display_name, true), + ) + ) + UtilityPageStyle.apply_compact_ocean_button(block) + row.add_child(block) + + +func _build_presence_controls() -> void: + var row := _make_row() + var label := Label.new() + label.size_flags_horizontal = Control.SIZE_EXPAND_FILL + label.text = "share online status with friends" + label.add_theme_color_override( + "font_color", UtilityPageStyle.OCEAN_TEXT_PRIMARY + ) + row.add_child(label) + var toggle := Button.new() + var enabled := _discovery != null and _discovery.is_presence_sharing() + toggle.text = "on" if enabled else "off" + toggle.tooltip_text = ( + "Friends can see when you are online and whether your room is joinable." + ) + toggle.disabled = _discovery == null or not _discovery.is_configured() + toggle.pressed.connect(func() -> void: + _discovery.set_presence_sharing( + not _discovery.is_presence_sharing() + ) + ) + UtilityPageStyle.apply_compact_ocean_button(toggle) + row.add_child(toggle) + + func _build_ban_rows() -> void: var records := _service.get_bans() if records.is_empty(): diff --git a/ui/save_slots_page.gd b/ui/save_slots_page.gd new file mode 100644 index 0000000..e50c8ee --- /dev/null +++ b/ui/save_slots_page.gd @@ -0,0 +1,731 @@ +class_name SaveSlotsPage +extends Control + +const PAGE_SAVES: StringName = &"saves" +const PAGE_NEW: StringName = &"new" +const WorldLayoutType = preload("res://world/world_layout.gd") +const SaveManagerType = preload("res://save/player_save_manager.gd") +const NewGameSetupPageType = preload("res://ui/new_game_setup_page.gd") +const DialogControllerNavigationType = preload( + "res://ui/file_dialog_controller_navigation.gd" +) + +signal back_requested +signal play_requested(slot_id: String) +signal create_requested( + display_name: String, + world_layout: StringName, + world_seed: int, + duplicate_source_slot_id: String, +) + +enum SeedMode { + RANDOM, + CUSTOM, +} + +@onready var _main_panel: PanelContainer = %MainPanel +@onready var _content_panel: PanelContainer = %ContentPanel +@onready var _saves_tab: OrganizerTab = %SavesTab +@onready var _new_slot_tab: OrganizerTab = %NewSlotTab +@onready var _saves_page: Control = %SavesPage +@onready var _new_slot_page: Control = %NewSlotPage +@onready var _slot_list: VBoxContainer = %SlotList +@onready var _empty_slots_label: Label = %EmptySlotsLabel +@onready var _slot_name_edit: LineEdit = %SelectedSlotName +@onready var _slot_summary: RichTextLabel = %SlotSummary +@onready var _play_button: Button = %PlaySlotButton +@onready var _rename_button: Button = %RenameSlotButton +@onready var _duplicate_button: Button = %DuplicateSlotButton +@onready var _export_button: Button = %ExportSlotButton +@onready var _delete_button: Button = %DeleteSlotButton +@onready var _import_button: Button = %ImportSlotButton +@onready var _new_slot_heading: Label = %NewSlotHeading +@onready var _new_slot_name: LineEdit = %NewSlotName +@onready var _generated_button: Button = %GeneratedButton +@onready var _starter_button: Button = %StarterButton +@onready var _world_description: Label = %WorldDescription +@onready var _seed_section: VBoxContainer = %SeedSection +@onready var _random_seed_button: Button = %RandomSeedButton +@onready var _custom_seed_button: Button = %CustomSeedButton +@onready var _seed_edit: LineEdit = %SeedEdit +@onready var _seed_help: Label = %SeedHelp +@onready var _create_button: Button = %CreateSlotButton +@onready var _status: Label = %Status +@onready var _back_button: Button = %BackButton + +var _catalog: PlayerSaveSlotCatalog +var _data_root: PlayerDataRoot +var _interface_fonts: InterfaceFontController +var _active_page_id: StringName = PAGE_SAVES +var _selected_slot_id := "" +var _duplicate_source_slot_id := "" +var _world_layout: StringName = WorldLayoutType.GENERATED +var _seed_mode: SeedMode = SeedMode.RANDOM +var _random_seed: int = SaveManagerType.DEFAULT_WORLD_SEED +var _slot_buttons: Array[Button] = [] +var _import_dialog: FileDialog +var _export_dialog: FileDialog +var _delete_dialog: ConfirmationDialog +var _busy: bool = false + + +func _ready() -> void: + _configure_style() + _saves_tab.pressed.connect(_select_page.bind(PAGE_SAVES, true)) + _new_slot_tab.pressed.connect(_open_fresh_slot_page) + _play_button.pressed.connect(_request_play) + _rename_button.pressed.connect(_rename_selected_slot) + _duplicate_button.pressed.connect(_prepare_duplicate) + _export_button.pressed.connect(_choose_export_path) + _delete_button.pressed.connect(_confirm_delete_selected_slot) + _import_button.pressed.connect(_choose_import_path) + _generated_button.pressed.connect( + _set_world_layout.bind(WorldLayoutType.GENERATED) + ) + _starter_button.pressed.connect( + _set_world_layout.bind(WorldLayoutType.STARTER_ISLAND) + ) + _random_seed_button.pressed.connect(_choose_random_seed) + _custom_seed_button.pressed.connect(_choose_custom_seed) + _new_slot_name.text_changed.connect(_on_new_slot_name_changed) + _seed_edit.text_changed.connect(_on_seed_text_changed) + _seed_edit.text_submitted.connect(_on_seed_submitted) + _new_slot_name.text_submitted.connect(_on_new_slot_name_submitted) + _create_button.pressed.connect(_request_create) + _back_button.pressed.connect(request_back) + visibility_changed.connect(_on_visibility_changed) + hide() + + +func _configure_style() -> void: + UtilityPageStyle.apply_page(self) + _main_panel.add_theme_stylebox_override( + "panel", + UtilityPageStyle.rounded_style( + UtilityPageStyle.OCEAN_PANEL_MID, + 28, + ), + ) + _content_panel.add_theme_stylebox_override( + "panel", + UtilityPageStyle.rounded_style( + UtilityPageStyle.OCEAN_FIELD, + 20, + ), + ) + for node: Node in find_children("*", "Label", true, false): + var label := node as Label + label.add_theme_color_override( + "font_color", + UtilityPageStyle.OCEAN_TEXT_PRIMARY, + ) + for node: Node in find_children("*", "Button", true, false): + if node is OrganizerTab: + continue + UtilityPageStyle.apply_ocean_button(node as BaseButton) + _delete_button.add_theme_stylebox_override( + "normal", + UtilityPageStyle.ocean_button_style( + UtilityPageStyle.OCEAN_DANGER, + ), + ) + _back_button.add_theme_stylebox_override( + "normal", + UtilityPageStyle.ocean_button_style( + UtilityPageStyle.OCEAN_PANEL_DEEP, + ), + ) + _status.add_theme_color_override( + "font_color", + UtilityPageStyle.OCEAN_TEXT_SECONDARY, + ) + + +func setup( + catalog: PlayerSaveSlotCatalog, + data_root: PlayerDataRoot, + interface_fonts: InterfaceFontController, +) -> void: + _catalog = catalog + _data_root = data_root + _interface_fonts = interface_fonts + if not _catalog.slots_changed.is_connected(_on_slots_changed): + _catalog.slots_changed.connect(_on_slots_changed) + + +func open_page() -> void: + _busy = false + _status.text = "" + _duplicate_source_slot_id = "" + _refresh_slots() + if _catalog != null and _catalog.has_slots(): + _select_page(PAGE_SAVES, false) + else: + _prepare_fresh_slot() + _select_page(PAGE_NEW, false) + show() + _main_panel.modulate.a = 1.0 + _main_panel.scale = Vector2.ONE + UtilityPageStyle.animate_in(self) + call_deferred("_focus_open_page") + + +func close_page() -> void: + _release_owned_focus() + hide() + + +func request_back() -> void: + if _import_dialog != null and _import_dialog.visible: + _import_dialog.hide() + return + if _export_dialog != null and _export_dialog.visible: + _export_dialog.hide() + return + if _delete_dialog != null and _delete_dialog.visible: + _delete_dialog.hide() + return + if _busy: + return + if _active_page_id == PAGE_NEW and _catalog != null and _catalog.has_slots(): + _duplicate_source_slot_id = "" + _select_page(PAGE_SAVES, true) + return + back_requested.emit() + + +func set_status(message: String) -> void: + _busy = false + _status.text = message + _refresh_action_state() + + +func finish_request_if_pending(message: String) -> void: + if _busy: + set_status(message) + + +func refresh_page() -> void: + if visible: + _refresh_slots() + + +func get_active_page_id() -> StringName: + return _active_page_id if visible else StringName() + + +func _select_page(page_id: StringName, focus_tab: bool) -> void: + if page_id not in [PAGE_SAVES, PAGE_NEW]: + return + _active_page_id = page_id + _saves_page.visible = page_id == PAGE_SAVES + _new_slot_page.visible = page_id == PAGE_NEW + _saves_tab.set_selected(page_id == PAGE_SAVES, is_inside_tree()) + _new_slot_tab.set_selected(page_id == PAGE_NEW, is_inside_tree()) + _configure_controller_focus() + if focus_tab: + (_saves_tab if page_id == PAGE_SAVES else _new_slot_tab).grab_focus() + + +func _open_fresh_slot_page() -> void: + _prepare_fresh_slot() + _select_page(PAGE_NEW, true) + + +func _prepare_fresh_slot() -> void: + _duplicate_source_slot_id = "" + _new_slot_heading.text = "new progression" + _new_slot_name.text = _suggested_slot_name() + _world_layout = WorldLayoutType.GENERATED + _seed_mode = SeedMode.RANDOM + _roll_random_seed() + _refresh_new_slot_presentation() + + +func _prepare_duplicate() -> void: + var slot: Dictionary = _selected_slot() + if slot.is_empty() or not bool(slot.get("has_save", false)): + return + _duplicate_source_slot_id = _selected_slot_id + _new_slot_heading.text = "duplicate progression" + _new_slot_name.text = PlayerSaveSlotCatalog.normalized_name( + "copy of %s" % str(slot.get("display_name", "save")) + ) + _world_layout = WorldLayoutType.GENERATED + _seed_mode = SeedMode.RANDOM + _roll_random_seed() + _refresh_new_slot_presentation() + _select_page(PAGE_NEW, true) + + +func _refresh_slots() -> void: + for button: Button in _slot_buttons: + _slot_list.remove_child(button) + button.queue_free() + _slot_buttons.clear() + if _catalog == null: + _selected_slot_id = "" + _empty_slots_label.show() + _refresh_selected_slot() + return + var slots: Array[Dictionary] = _catalog.list_slots() + var known_selection: bool = false + for slot: Dictionary in slots: + var slot_id: String = str(slot.get("slot_id", "")) + var button := Button.new() + button.name = "Slot_%s" % slot_id.left(8) + button.custom_minimum_size = Vector2(0.0, 56.0) + button.size_flags_horizontal = Control.SIZE_EXPAND_FILL + button.focus_mode = Control.FOCUS_ALL + button.toggle_mode = true + button.text = str(slot.get("display_name", "save")) + ( + " · active" if bool(slot.get("active", false)) else "" + ) + button.alignment = HORIZONTAL_ALIGNMENT_LEFT + UtilityPageStyle.apply_ocean_button(button) + button.pressed.connect(_select_slot.bind(slot_id, false)) + button.focus_entered.connect(_select_slot.bind(slot_id, true)) + _slot_list.add_child(button) + _slot_buttons.append(button) + known_selection = known_selection or slot_id == _selected_slot_id + _empty_slots_label.visible = slots.is_empty() + if not known_selection: + _selected_slot_id = _catalog.get_active_slot_id() + if _selected_slot_id.is_empty() and not slots.is_empty(): + _selected_slot_id = str(slots.front().get("slot_id", "")) + _refresh_selected_slot() + _configure_controller_focus() + + +func _select_slot(slot_id: String, _from_focus: bool) -> void: + if _catalog == null or _catalog.get_slot(slot_id).is_empty(): + return + _selected_slot_id = slot_id + _refresh_selected_slot() + + +func _refresh_selected_slot() -> void: + var slot: Dictionary = _selected_slot() + for button: Button in _slot_buttons: + button.set_pressed_no_signal( + button.name == "Slot_%s" % _selected_slot_id.left(8) + ) + if slot.is_empty(): + _slot_name_edit.text = "" + _slot_name_edit.editable = false + _slot_summary.text = "[center]create or import a save slot to begin.[/center]" + else: + _slot_name_edit.editable = true + _slot_name_edit.text = str(slot.get("display_name", "save")) + _slot_summary.text = _format_slot_summary(slot) + _refresh_action_state() + + +func _format_slot_summary(slot: Dictionary) -> String: + if not bool(slot.get("has_save", false)): + return "[center]%s[/center]" % str( + slot.get("status_message", "this slot has no progression yet.") + ) + var last_played: String = _format_timestamp( + int(slot.get("last_played_at_unix", 0)) + ) + return ( + "[font_size=24]level %d[/font_size]\n\n" + + "%d catches · %d discovered\n" + + "%d fishcoins\n\n" + + "%s · seed %d\n" + + "last played %s" + ) % [ + int(slot.get("player_level", 1)), + int(slot.get("catch_count", 0)), + int(slot.get("discovered_species_count", 0)), + int(slot.get("wallet_balance", 0)), + WorldLayoutType.display_name(slot.get("world_layout", "")), + int(slot.get("world_seed", 0)), + last_played, + ] + + +func _refresh_action_state() -> void: + var slot: Dictionary = _selected_slot() + var has_slot: bool = not slot.is_empty() + var has_save: bool = has_slot and bool(slot.get("has_save", false)) + _play_button.disabled = _busy or not has_save + _rename_button.disabled = _busy or not has_slot + _duplicate_button.disabled = _busy or not has_save + _export_button.disabled = _busy or not has_save + _delete_button.disabled = _busy or not has_slot + _import_button.disabled = _busy or _catalog == null + _create_button.disabled = _busy or not _new_slot_request_is_valid() + + +func _request_play() -> void: + if _play_button.disabled or _selected_slot_id.is_empty(): + return + _busy = true + _status.text = "loading save slot..." + _refresh_action_state() + play_requested.emit(_selected_slot_id) + + +func _rename_selected_slot() -> void: + if _catalog == null or _rename_button.disabled: + return + if not _catalog.rename_slot(_selected_slot_id, _slot_name_edit.text): + _status.text = "the save slot could not be renamed." + return + _status.text = "save slot renamed." + + +func _confirm_delete_selected_slot() -> void: + var slot: Dictionary = _selected_slot() + if slot.is_empty() or _delete_button.disabled: + return + if _delete_dialog == null: + _delete_dialog = ConfirmationDialog.new() + _delete_dialog.title = "delete save slot?" + _delete_dialog.ok_button_text = "delete" + _delete_dialog.confirmed.connect(_delete_selected_slot) + if _interface_fonts != null: + _interface_fonts.apply_utility_theme(_delete_dialog) + add_child(_delete_dialog) + _delete_dialog.dialog_text = ( + "delete \"%s\"? this cannot be undone from the game." + % str(slot.get("display_name", "save")) + ) + _delete_dialog.popup_centered(Vector2i(560, 260)) + _configure_delete_dialog.call_deferred() + + +func _configure_delete_dialog() -> void: + if ( + _delete_dialog != null + and is_instance_valid(_delete_dialog) + and _delete_dialog.visible + ): + DialogControllerNavigationType.configure_scope( + _delete_dialog, + _delete_dialog.get_cancel_button(), + ) + + +func _delete_selected_slot() -> void: + if _catalog == null or _selected_slot_id.is_empty(): + return + if not _catalog.delete_slot(_selected_slot_id): + _status.text = "the save slot could not be deleted." + return + _selected_slot_id = _catalog.get_active_slot_id() + _status.text = "save slot deleted." + _refresh_slots() + if not _catalog.has_slots(): + _prepare_fresh_slot() + _select_page(PAGE_NEW, true) + + +func _choose_import_path() -> void: + if _catalog == null or _data_root == null: + return + if _import_dialog == null: + _import_dialog = FileDialog.new() + _import_dialog.file_mode = FileDialog.FILE_MODE_OPEN_FILE + _import_dialog.access = FileDialog.ACCESS_FILESYSTEM + _import_dialog.use_native_dialog = false + _import_dialog.filters = PackedStringArray([ + "*.nfsave ; NETfishing progression archive", + ]) + _import_dialog.file_selected.connect(_import_file_selected) + if _interface_fonts != null: + _interface_fonts.apply_utility_theme(_import_dialog) + add_child(_import_dialog) + _import_dialog.current_dir = _data_root.progression_backup_directory() + if _interface_fonts != null: + _interface_fonts.popup_file_dialog(_import_dialog) + else: + _import_dialog.popup_centered_ratio(0.85) + + +func _import_file_selected(path: String) -> void: + var suggested_name: String = path.get_file().get_basename().replace("_", " ") + suggested_name = suggested_name.replace("-", " ") + var result: Dictionary = _catalog.import_slot(path, suggested_name) + _status.text = str(result.get("message", "progression import failed.")) + if bool(result.get("ok", false)): + _selected_slot_id = str(result.get("slot_id", "")) + _refresh_slots() + _select_page(PAGE_SAVES, false) + + +func _choose_export_path() -> void: + var slot: Dictionary = _selected_slot() + if slot.is_empty() or _data_root == null: + return + var timestamp: String = Time.get_datetime_string_from_system().replace(":", "-") + var filename: String = "%s-%s%s" % [ + _safe_filename(str(slot.get("display_name", "save"))), + timestamp, + PlayerSaveManager.ARCHIVE_EXTENSION, + ] + if _export_dialog == null: + _export_dialog = FileDialog.new() + _export_dialog.file_mode = FileDialog.FILE_MODE_SAVE_FILE + _export_dialog.access = FileDialog.ACCESS_FILESYSTEM + _export_dialog.use_native_dialog = false + _export_dialog.filters = PackedStringArray([ + "*.nfsave ; NETfishing progression archive", + ]) + _export_dialog.file_selected.connect(_export_file_selected) + if _interface_fonts != null: + _interface_fonts.apply_utility_theme(_export_dialog) + add_child(_export_dialog) + _export_dialog.current_dir = _data_root.progression_backup_directory() + _export_dialog.current_file = filename + if _interface_fonts != null: + _interface_fonts.popup_file_dialog(_export_dialog) + else: + _export_dialog.popup_centered_ratio(0.85) + + +func _export_file_selected(path: String) -> void: + var destination: String = ( + path + if path.ends_with(PlayerSaveManager.ARCHIVE_EXTENSION) + else path + PlayerSaveManager.ARCHIVE_EXTENSION + ) + var result: Dictionary = _catalog.export_slot( + _selected_slot_id, + destination, + ) + _status.text = str(result.get("message", "progression export failed.")) + + +func _request_create() -> void: + if _create_button.disabled: + return + var seed: int = _selected_world_seed() + if _world_layout == WorldLayoutType.GENERATED and seed == 0: + _status.text = "enter text or a whole number from 1 to %d." % SaveManagerType.MAX_WORLD_SEED + _seed_edit.grab_focus() + _seed_edit.select_all() + return + if seed == 0: + seed = SaveManagerType.roll_world_seed() + _busy = true + _status.text = "creating save slot..." + _refresh_action_state() + create_requested.emit( + PlayerSaveSlotCatalog.normalized_name(_new_slot_name.text), + _world_layout, + seed, + _duplicate_source_slot_id, + ) + + +func _set_world_layout(layout: StringName) -> void: + if not WorldLayoutType.is_valid(layout): + return + _world_layout = layout + _status.text = "" + _refresh_new_slot_presentation() + + +func _choose_random_seed() -> void: + _seed_mode = SeedMode.RANDOM + _roll_random_seed() + _status.text = "" + _refresh_new_slot_presentation() + + +func _choose_custom_seed() -> void: + _seed_mode = SeedMode.CUSTOM + if NewGameSetupPageType.parse_seed_text(_seed_edit.text) == _random_seed: + _seed_edit.text = "" + _status.text = "" + _refresh_new_slot_presentation() + _seed_edit.grab_focus.call_deferred() + _seed_edit.select_all.call_deferred() + + +func _roll_random_seed() -> void: + _random_seed = SaveManagerType.roll_world_seed() + _seed_edit.text = str(_random_seed) + + +func _selected_world_seed() -> int: + return ( + _random_seed + if _seed_mode == SeedMode.RANDOM + else NewGameSetupPageType.parse_seed_text(_seed_edit.text) + ) + + +func _on_seed_text_changed(_text: String) -> void: + if _seed_mode == SeedMode.CUSTOM: + _status.text = "" + _refresh_action_state() + + +func _on_new_slot_name_changed(_text: String) -> void: + _refresh_action_state() + + +func _on_seed_submitted(_text: String) -> void: + _request_create() + + +func _on_new_slot_name_submitted(_text: String) -> void: + if _world_layout == WorldLayoutType.STARTER_ISLAND: + _request_create() + + +func _refresh_new_slot_presentation() -> void: + var generated: bool = _world_layout == WorldLayoutType.GENERATED + _generated_button.set_pressed_no_signal(generated) + _starter_button.set_pressed_no_signal(not generated) + _world_description.text = ( + "build a new island from terrain chunks.\n" + + "the same seed always builds the same world." + if generated + else "play on the starter island." + ) + _seed_section.visible = generated + _random_seed_button.set_pressed_no_signal(_seed_mode == SeedMode.RANDOM) + _custom_seed_button.set_pressed_no_signal(_seed_mode == SeedMode.CUSTOM) + _seed_edit.editable = _seed_mode == SeedMode.CUSTOM + _seed_edit.focus_mode = ( + Control.FOCUS_ALL if _seed_mode == SeedMode.CUSTOM else Control.FOCUS_NONE + ) + _seed_help.text = ( + "press random seed again to roll another world." + if _seed_mode == SeedMode.RANDOM + else "enter text or a number from 1 to %d." + % SaveManagerType.MAX_WORLD_SEED + ) + _create_button.text = ( + "duplicate and play" + if not _duplicate_source_slot_id.is_empty() + else "create and play" + ) + _refresh_action_state() + _configure_controller_focus() + + +func _new_slot_request_is_valid() -> bool: + return ( + not PlayerSaveSlotCatalog.normalized_name(_new_slot_name.text).is_empty() + and ( + _world_layout != WorldLayoutType.GENERATED + or _seed_mode == SeedMode.RANDOM + or NewGameSetupPageType.parse_seed_text(_seed_edit.text) > 0 + ) + ) + + +func _configure_controller_focus() -> void: + if not is_node_ready(): + return + _saves_tab.focus_neighbor_right = _saves_tab.get_path_to(_new_slot_tab) + _new_slot_tab.focus_neighbor_left = _new_slot_tab.get_path_to(_saves_tab) + if _active_page_id == PAGE_SAVES: + var first: Control = _slot_buttons.front() if not _slot_buttons.is_empty() else _import_button + var last: Control = _slot_buttons.back() if not _slot_buttons.is_empty() else _import_button + _saves_tab.focus_neighbor_bottom = _saves_tab.get_path_to(first) + _new_slot_tab.focus_neighbor_bottom = _new_slot_tab.get_path_to(first) + for index: int in _slot_buttons.size(): + var button: Button = _slot_buttons[index] + var top: Control = _saves_tab if index == 0 else _slot_buttons[index - 1] + var bottom: Control = _import_button if index == _slot_buttons.size() - 1 else _slot_buttons[index + 1] + _set_neighbors(button, button, _slot_name_edit, top, bottom) + _set_neighbors(_import_button, _import_button, _slot_name_edit, last, _back_button) + _set_neighbors(_slot_name_edit, first, _slot_name_edit, _saves_tab, _play_button) + _set_neighbors(_play_button, _import_button, _rename_button, _slot_name_edit, _duplicate_button) + _set_neighbors(_rename_button, _play_button, _rename_button, _slot_name_edit, _export_button) + _set_neighbors(_duplicate_button, _import_button, _export_button, _play_button, _delete_button) + _set_neighbors(_export_button, _duplicate_button, _export_button, _rename_button, _delete_button) + _set_neighbors(_delete_button, _import_button, _delete_button, _duplicate_button, _back_button) + _set_neighbors(_back_button, _back_button, _back_button, _import_button, _back_button) + return + _saves_tab.focus_neighbor_bottom = _saves_tab.get_path_to(_new_slot_name) + _new_slot_tab.focus_neighbor_bottom = _new_slot_tab.get_path_to(_new_slot_name) + var generated: bool = _world_layout == WorldLayoutType.GENERATED + var custom: bool = generated and _seed_mode == SeedMode.CUSTOM + _set_neighbors(_new_slot_name, _new_slot_name, _new_slot_name, _new_slot_tab, _generated_button) + _set_neighbors(_generated_button, _generated_button, _starter_button, _new_slot_name, _random_seed_button if generated else _create_button) + _set_neighbors(_starter_button, _generated_button, _starter_button, _new_slot_name, _custom_seed_button if generated else _back_button) + _set_neighbors(_random_seed_button, _random_seed_button, _custom_seed_button, _generated_button, _seed_edit if custom else _create_button) + _set_neighbors(_custom_seed_button, _random_seed_button, _custom_seed_button, _starter_button, _seed_edit if custom else _back_button) + _set_neighbors(_seed_edit, _seed_edit, _seed_edit, _custom_seed_button, _create_button) + var action_top: Control = _seed_edit if custom else _random_seed_button if generated else _generated_button + _set_neighbors(_create_button, _create_button, _back_button, action_top, _create_button) + _set_neighbors(_back_button, _create_button, _back_button, action_top, _back_button) + + +func _set_neighbors( + control: Control, + left: Control, + right: Control, + top: Control, + bottom: Control, +) -> void: + control.focus_neighbor_left = control.get_path_to(left) + control.focus_neighbor_right = control.get_path_to(right) + control.focus_neighbor_top = control.get_path_to(top) + control.focus_neighbor_bottom = control.get_path_to(bottom) + + +func _focus_open_page() -> void: + if not visible: + return + (_saves_tab if _active_page_id == PAGE_SAVES else _new_slot_tab).grab_focus() + + +func _selected_slot() -> Dictionary: + return _catalog.get_slot(_selected_slot_id) if _catalog != null else {} + + +func _suggested_slot_name() -> String: + var used: Dictionary[String, bool] = {} + if _catalog != null: + for slot: Dictionary in _catalog.list_slots(): + used[str(slot.get("display_name", "")).to_lower()] = true + var number: int = 1 + while used.has("save %d" % number): + number += 1 + return "save %d" % number + + +func _format_timestamp(unix_time: int) -> String: + if unix_time <= 0: + return "never" + var value: Dictionary = Time.get_datetime_dict_from_unix_time(unix_time) + return "%04d-%02d-%02d" % [ + int(value.get("year", 0)), + int(value.get("month", 0)), + int(value.get("day", 0)), + ] + + +func _safe_filename(value: String) -> String: + var result: String = value.strip_edges().to_lower().replace(" ", "-") + for character: String in ["/", "\\", ":", "*", "?", "\"", "<", ">", "|"]: + result = result.replace(character, "") + return "netfishing-save" if result.is_empty() else result + + +func _on_slots_changed() -> void: + if visible: + _refresh_slots() + + +func _on_visibility_changed() -> void: + if not visible: + _release_owned_focus() + + +func _release_owned_focus() -> void: + if not is_inside_tree(): + return + var focus_owner: Control = get_viewport().gui_get_focus_owner() + if focus_owner != null and is_ancestor_of(focus_owner): + focus_owner.release_focus() diff --git a/ui/save_slots_page.gd.uid b/ui/save_slots_page.gd.uid new file mode 100644 index 0000000..9cb483f --- /dev/null +++ b/ui/save_slots_page.gd.uid @@ -0,0 +1 @@ +uid://cytwdvxf22106 diff --git a/ui/save_slots_page.tscn b/ui/save_slots_page.tscn new file mode 100644 index 0000000..5f47c8e --- /dev/null +++ b/ui/save_slots_page.tscn @@ -0,0 +1,350 @@ +[gd_scene load_steps=4 format=3] + +[ext_resource type="Script" path="res://ui/save_slots_page.gd" id="1_script"] +[ext_resource type="Theme" path="res://ui/game_theme.tres" id="2_theme"] +[ext_resource type="Script" path="res://ui/components/organizer_tab.gd" id="3_tab"] + +[node name="SaveSlotsPage" type="Control"] +visible = false +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme = ExtResource("2_theme") +script = ExtResource("1_script") + +[node name="MainPanel" type="PanelContainer" parent="."] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -440.0 +offset_top = -330.0 +offset_right = 440.0 +offset_bottom = 330.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="OuterMargin" type="MarginContainer" parent="MainPanel"] +layout_mode = 2 +theme_override_constants/margin_left = 24 +theme_override_constants/margin_top = 18 +theme_override_constants/margin_right = 24 +theme_override_constants/margin_bottom = 18 + +[node name="Layout" type="VBoxContainer" parent="MainPanel/OuterMargin"] +layout_mode = 2 +theme_override_constants/separation = -26 + +[node name="Heading" type="Label" parent="MainPanel/OuterMargin/Layout"] +custom_minimum_size = Vector2(0, 66) +layout_mode = 2 +theme_override_font_sizes/font_size = 30 +text = "play" +horizontal_alignment = 1 + +[node name="TabBar" type="HBoxContainer" parent="MainPanel/OuterMargin/Layout"] +custom_minimum_size = Vector2(0, 52) +layout_mode = 2 +theme_override_constants/separation = 8 +alignment = 1 + +[node name="SavesTab" type="Button" parent="MainPanel/OuterMargin/Layout/TabBar"] +unique_name_in_owner = true +custom_minimum_size = Vector2(180, 52) +layout_mode = 2 +focus_mode = 2 +text = "save slots" +script = ExtResource("3_tab") + +[node name="NewSlotTab" type="Button" parent="MainPanel/OuterMargin/Layout/TabBar"] +unique_name_in_owner = true +custom_minimum_size = Vector2(180, 52) +layout_mode = 2 +focus_mode = 2 +text = "new slot" +script = ExtResource("3_tab") +palette_index = 1 + +[node name="ContentPanel" type="PanelContainer" parent="MainPanel/OuterMargin/Layout"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 474) +layout_mode = 2 +size_flags_vertical = 3 + +[node name="ContentMargin" type="MarginContainer" parent="MainPanel/OuterMargin/Layout/ContentPanel"] +layout_mode = 2 +theme_override_constants/margin_left = 28 +theme_override_constants/margin_top = 20 +theme_override_constants/margin_right = 28 +theme_override_constants/margin_bottom = 20 + +[node name="PageStack" type="Control" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin"] +layout_mode = 2 + +[node name="SavesPage" type="HBoxContainer" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 20 + +[node name="SlotsColumn" type="VBoxContainer" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/SavesPage"] +custom_minimum_size = Vector2(340, 0) +layout_mode = 2 +theme_override_constants/separation = 10 + +[node name="Title" type="Label" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/SavesPage/SlotsColumn"] +layout_mode = 2 +theme_override_font_sizes/font_size = 20 +text = "save slots" + +[node name="SlotScroll" type="ScrollContainer" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/SavesPage/SlotsColumn"] +layout_mode = 2 +size_flags_vertical = 3 +horizontal_scroll_mode = 0 +follow_focus = true + +[node name="SlotList" type="VBoxContainer" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/SavesPage/SlotsColumn/SlotScroll"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_constants/separation = 8 + +[node name="EmptySlotsLabel" type="Label" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/SavesPage/SlotsColumn/SlotScroll/SlotList"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 100) +layout_mode = 2 +text = "no save slots yet" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="ImportSlotButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/SavesPage/SlotsColumn"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 46) +layout_mode = 2 +focus_mode = 2 +text = "import save" + +[node name="Divider" type="VSeparator" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/SavesPage"] +layout_mode = 2 + +[node name="DetailsColumn" type="VBoxContainer" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/SavesPage"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_constants/separation = 10 + +[node name="Title" type="Label" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/SavesPage/DetailsColumn"] +layout_mode = 2 +theme_override_font_sizes/font_size = 20 +text = "selected slot" + +[node name="SelectedSlotName" type="LineEdit" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/SavesPage/DetailsColumn"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 46) +layout_mode = 2 +focus_mode = 2 +placeholder_text = "save slot name" +max_length = 32 + +[node name="SlotSummary" type="RichTextLabel" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/SavesPage/DetailsColumn"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 +bbcode_enabled = true +fit_content = true +scroll_active = false +autowrap_mode = 2 +vertical_alignment = 1 + +[node name="Actions" type="GridContainer" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/SavesPage/DetailsColumn"] +layout_mode = 2 +theme_override_constants/h_separation = 10 +theme_override_constants/v_separation = 10 +columns = 2 + +[node name="PlaySlotButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/SavesPage/DetailsColumn/Actions"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 46) +layout_mode = 2 +size_flags_horizontal = 3 +focus_mode = 2 +text = "play" + +[node name="RenameSlotButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/SavesPage/DetailsColumn/Actions"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 46) +layout_mode = 2 +size_flags_horizontal = 3 +focus_mode = 2 +text = "rename" + +[node name="DuplicateSlotButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/SavesPage/DetailsColumn/Actions"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 46) +layout_mode = 2 +size_flags_horizontal = 3 +focus_mode = 2 +text = "duplicate" + +[node name="ExportSlotButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/SavesPage/DetailsColumn/Actions"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 46) +layout_mode = 2 +size_flags_horizontal = 3 +focus_mode = 2 +text = "export" + +[node name="DeleteSlotButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/SavesPage/DetailsColumn/Actions"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 46) +layout_mode = 2 +size_flags_horizontal = 3 +focus_mode = 2 +text = "delete" + +[node name="NewSlotPage" type="VBoxContainer" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack"] +unique_name_in_owner = true +visible = false +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 9 + +[node name="NewSlotHeading" type="Label" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/NewSlotPage"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_font_sizes/font_size = 20 +text = "new progression" +horizontal_alignment = 1 + +[node name="NewSlotName" type="LineEdit" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/NewSlotPage"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 44) +layout_mode = 2 +focus_mode = 2 +placeholder_text = "save slot name" +alignment = 1 +max_length = 32 + +[node name="WorldButtons" type="HBoxContainer" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/NewSlotPage"] +layout_mode = 2 +theme_override_constants/separation = 14 +alignment = 1 + +[node name="GeneratedButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/NewSlotPage/WorldButtons"] +unique_name_in_owner = true +custom_minimum_size = Vector2(230, 48) +layout_mode = 2 +focus_mode = 2 +toggle_mode = true +text = "generate a world" + +[node name="StarterButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/NewSlotPage/WorldButtons"] +unique_name_in_owner = true +custom_minimum_size = Vector2(230, 48) +layout_mode = 2 +focus_mode = 2 +toggle_mode = true +text = "starter island" + +[node name="WorldDescription" type="Label" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/NewSlotPage"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 42) +layout_mode = 2 +theme_override_font_sizes/font_size = 15 +horizontal_alignment = 1 +vertical_alignment = 1 +autowrap_mode = 2 + +[node name="SeedSection" type="VBoxContainer" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/NewSlotPage"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_constants/separation = 7 + +[node name="SeedModes" type="HBoxContainer" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/NewSlotPage/SeedSection"] +layout_mode = 2 +theme_override_constants/separation = 14 +alignment = 1 + +[node name="RandomSeedButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/NewSlotPage/SeedSection/SeedModes"] +unique_name_in_owner = true +custom_minimum_size = Vector2(190, 44) +layout_mode = 2 +focus_mode = 2 +toggle_mode = true +text = "random seed" + +[node name="CustomSeedButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/NewSlotPage/SeedSection/SeedModes"] +unique_name_in_owner = true +custom_minimum_size = Vector2(190, 44) +layout_mode = 2 +focus_mode = 2 +toggle_mode = true +text = "enter a seed" + +[node name="SeedEdit" type="LineEdit" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/NewSlotPage/SeedSection"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 42) +layout_mode = 2 +focus_mode = 2 +placeholder_text = "number or words" +alignment = 1 +max_length = 64 + +[node name="SeedHelp" type="Label" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/NewSlotPage/SeedSection"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 24) +layout_mode = 2 +theme_override_font_sizes/font_size = 13 +horizontal_alignment = 1 + +[node name="Spacer" type="Control" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/NewSlotPage"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="CreateSlotButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/NewSlotPage"] +unique_name_in_owner = true +custom_minimum_size = Vector2(260, 48) +layout_mode = 2 +size_flags_horizontal = 4 +focus_mode = 2 +text = "create and play" + +[node name="FooterGroup" type="MarginContainer" parent="MainPanel/OuterMargin/Layout"] +layout_mode = 2 +theme_override_constants/margin_top = 34 + +[node name="FooterLayout" type="VBoxContainer" parent="MainPanel/OuterMargin/Layout/FooterGroup"] +layout_mode = 2 +theme_override_constants/separation = 8 + +[node name="Status" type="Label" parent="MainPanel/OuterMargin/Layout/FooterGroup/FooterLayout"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 24) +layout_mode = 2 +horizontal_alignment = 1 +vertical_alignment = 1 +text_overrun_behavior = 3 + +[node name="Footer" type="HBoxContainer" parent="MainPanel/OuterMargin/Layout/FooterGroup/FooterLayout"] +layout_mode = 2 +alignment = 2 + +[node name="BackButton" type="Button" parent="MainPanel/OuterMargin/Layout/FooterGroup/FooterLayout/Footer"] +unique_name_in_owner = true +custom_minimum_size = Vector2(150, 46) +layout_mode = 2 +focus_mode = 2 +text = "back" diff --git a/ui/settings_panel.gd b/ui/settings_panel.gd index e93f0a2..51d0c96 100644 --- a/ui/settings_panel.gd +++ b/ui/settings_panel.gd @@ -86,6 +86,7 @@ enum PresentationMode { %ControllerSensitivityValue ) @onready var _invert_y_toggle: Button = %InvertYToggle +@onready var _swap_scroll_toggle: Button = %SwapScrollToggle @onready var _on_screen_keyboard_toggle: Button = %OnScreenKeyboardToggle @onready var _auto_click_toggle: Button = %AutoClickToggle @onready var _auto_click_interval_slider: HSlider = ( @@ -112,6 +113,7 @@ var _auto_click_interval_value: float = 0.20 var _mouse_sensitivity: float = 0.005 var _controller_sensitivity: float = 2.5 var _invert_camera_y: bool = false +var _swap_hotbar_camera_scroll: bool = false var _on_screen_keyboard_enabled: bool = false var _chat_dock_right: bool = false var _chat_mobile_mode: bool = false @@ -125,7 +127,6 @@ var _environment_volume: float = 1.0 var _network_profile: NetworkProfilePreferences var _network_session: NetworkSession var _data_root: PlayerDataRoot -var _progression_saves: PlayerSaveManager var _identity_backups: IdentityBackupService var _player_identity: PlayerIdentityStore var _host_identity: HostIdentityStore @@ -135,8 +136,6 @@ var _controller_mapping_panel: ControllerMappingPanelType var _keyboard_mouse_mapping_manager: KeyboardMouseMappingManagerType var _keyboard_mouse_mapping_panel: KeyboardMouseMappingPanelType var _data_folder_dialog: FileDialog -var _progression_import_dialog: FileDialog -var _progression_export_dialog: FileDialog var _backup_file_dialog: FileDialog var _export_file_dialog: FileDialog var _passphrase_dialog: ConfirmationDialog @@ -146,7 +145,6 @@ var _pending_identity_operation := "" var _pending_identity_type := "" var _pending_identity_path := "" var _pending_import_data: Dictionary = {} -var _pending_progression_path := "" func _notification(what: int) -> void: @@ -239,6 +237,7 @@ func _connect_controls() -> void: _on_controller_sensitivity_changed ) _invert_y_toggle.toggled.connect(_set_invert_y) + _swap_scroll_toggle.toggled.connect(_set_swap_scroll) _on_screen_keyboard_toggle.toggled.connect(_set_on_screen_keyboard) _auto_click_toggle.toggled.connect(_set_auto_click) _auto_click_interval_slider.value_changed.connect( @@ -248,8 +247,6 @@ func _connect_controls() -> void: %KeyboardMapping.pressed.connect(_open_keyboard_mouse_mapping) %OpenDataFolder.pressed.connect(_open_data_folder) %ChangeDataFolder.pressed.connect(_choose_data_folder) - %ExportProgression.pressed.connect(_choose_progression_export) - %ImportProgression.pressed.connect(_choose_progression_import) %ExportPlayerIdentity.pressed.connect( _choose_identity_export.bind("player") ) @@ -343,7 +340,6 @@ func setup_keyboard_mouse_mapping( func setup_data_and_identity( data_root: PlayerDataRoot, - progression_saves: PlayerSaveManager, identity_backups: IdentityBackupService, player_identity: PlayerIdentityStore, host_identity: HostIdentityStore, @@ -351,7 +347,6 @@ func setup_data_and_identity( interface_fonts: InterfaceFontController, ) -> void: _data_root = data_root - _progression_saves = progression_saves _identity_backups = identity_backups _player_identity = player_identity _host_identity = host_identity @@ -619,11 +614,6 @@ func _refresh_data_page() -> void: _data_root.override_active or (_network_session != null and _network_session.is_session_active()) ) - %ExportProgression.disabled = _progression_saves == null - %ImportProgression.disabled = ( - _progression_saves == null - or (_network_session != null and _network_session.is_session_active()) - ) var fingerprint: String = ( _player_identity.fingerprint if _player_identity != null else "" ) @@ -674,122 +664,6 @@ func _copy_player_fingerprint() -> void: _feedback.text = "full player fingerprint copied for server operator setup." -func _choose_progression_export() -> void: - if _progression_saves == null or _data_root == null: - _feedback.text = "progression export is unavailable." - return - var timestamp: String = Time.get_datetime_string_from_system().replace( - ":", "-" - ) - var suggested: String = _data_root.progression_backup_directory().path_join( - "NETfishing-progression-%s%s" - % [timestamp, PlayerSaveManager.ARCHIVE_EXTENSION] - ) - if _progression_export_dialog == null: - _progression_export_dialog = FileDialog.new() - _progression_export_dialog.file_mode = FileDialog.FILE_MODE_SAVE_FILE - _progression_export_dialog.access = FileDialog.ACCESS_FILESYSTEM - _progression_export_dialog.use_native_dialog = false - _progression_export_dialog.filters = PackedStringArray([ - "*.nfsave ; NETfishing progression archive", - ]) - _progression_export_dialog.file_selected.connect( - _progression_export_file_selected - ) - _interface_fonts.apply_utility_theme(_progression_export_dialog) - add_child(_progression_export_dialog) - _progression_export_dialog.current_dir = suggested.get_base_dir() - _progression_export_dialog.current_file = suggested.get_file() - _interface_fonts.popup_file_dialog(_progression_export_dialog) - - -func _progression_export_file_selected(path: String) -> void: - var destination: String = ( - path - if path.ends_with(PlayerSaveManager.ARCHIVE_EXTENSION) - else path + PlayerSaveManager.ARCHIVE_EXTENSION - ) - var result: Dictionary = _progression_saves.export_progression_archive( - destination - ) - _feedback.text = str( - result.get("message", "progression export failed.") - ) - - -func _choose_progression_import() -> void: - if _progression_saves == null or _data_root == null: - _feedback.text = "progression import is unavailable." - return - if _network_session != null and _network_session.is_session_active(): - _feedback.text = "return to title before importing progression." - return - if _progression_import_dialog == null: - _progression_import_dialog = FileDialog.new() - _progression_import_dialog.file_mode = FileDialog.FILE_MODE_OPEN_FILE - _progression_import_dialog.access = FileDialog.ACCESS_FILESYSTEM - _progression_import_dialog.use_native_dialog = false - _progression_import_dialog.filters = PackedStringArray([ - "*.nfsave ; NETfishing progression archive", - ]) - _progression_import_dialog.file_selected.connect( - _progression_import_file_selected - ) - _interface_fonts.apply_utility_theme(_progression_import_dialog) - add_child(_progression_import_dialog) - _progression_import_dialog.current_dir = ( - _data_root.progression_backup_directory() - ) - _interface_fonts.popup_file_dialog(_progression_import_dialog) - - -func _progression_import_file_selected(path: String) -> void: - var inspected: Dictionary = ( - _progression_saves.inspect_progression_archive(path) - ) - if not bool(inspected.get("ok", false)): - _feedback.text = str( - inspected.get("message", "progression archive could not be opened.") - ) - return - _pending_progression_path = path - var dialog := ConfirmationDialog.new() - dialog.title = "replace saved progression?" - dialog.ok_button_text = "import progression" - dialog.dialog_text = ( - "this will replace the current progression after making a backup.\n\n" - + "fish: %d\ndiscovered: %d\nworld: %s\nworld seed: %d\n\n" - + "identities, settings, friends, bans, and trusted servers are unchanged." - ) % [ - int(inspected.get("catch_count", 0)), - int(inspected.get("discovered_species_count", 0)), - WorldLayout.display_name(inspected.get( - "world_layout", - String(WorldLayout.GENERATED), - )), - int(inspected.get("world_seed", 0)), - ] - dialog.confirmed.connect(_confirm_progression_import.bind(dialog)) - dialog.canceled.connect(dialog.queue_free) - _interface_fonts.apply_utility_theme(dialog) - add_child(dialog) - dialog.popup_centered(Vector2i(640, 390)) - _configure_confirmation_dialog.call_deferred( - dialog, dialog.get_cancel_button() - ) - - -func _confirm_progression_import(dialog: ConfirmationDialog) -> void: - var result: Dictionary = _progression_saves.import_progression_archive( - _pending_progression_path - ) - _feedback.text = str( - result.get("message", "progression import failed.") - ) - _pending_progression_path = "" - dialog.queue_free() - - func _choose_data_folder() -> void: if _data_root == null or _data_root.override_active: _feedback.text = "the data folder is externally managed." @@ -1067,6 +941,7 @@ func _apply_settings() -> void: edited.mouse_camera_sensitivity = _mouse_sensitivity edited.controller_camera_sensitivity = _controller_sensitivity edited.invert_camera_y = _invert_camera_y + edited.swap_hotbar_camera_scroll = _swap_hotbar_camera_scroll edited.on_screen_keyboard_enabled = _on_screen_keyboard_enabled edited.chat_dock_right = _chat_dock_right edited.chat_mobile_mode = _chat_mobile_mode @@ -1099,6 +974,7 @@ func _load_controls() -> void: _mouse_sensitivity = settings.mouse_camera_sensitivity _controller_sensitivity = settings.controller_camera_sensitivity _invert_camera_y = settings.invert_camera_y + _swap_hotbar_camera_scroll = settings.swap_hotbar_camera_scroll _on_screen_keyboard_enabled = settings.on_screen_keyboard_enabled _chat_dock_right = settings.chat_dock_right _chat_mobile_mode = settings.chat_mobile_mode @@ -1125,6 +1001,7 @@ func _load_controls() -> void: _controller_sensitivity ) _invert_y_toggle.set_pressed_no_signal(_invert_camera_y) + _swap_scroll_toggle.set_pressed_no_signal(_swap_hotbar_camera_scroll) _on_screen_keyboard_toggle.set_pressed_no_signal( _on_screen_keyboard_enabled ) @@ -1142,6 +1019,9 @@ func _refresh_value_labels() -> void: "on" if _fullscreen_toggle.button_pressed else "off" ) _invert_y_toggle.text = "on" if _invert_camera_y else "off" + _swap_scroll_toggle.text = ( + "on" if _swap_hotbar_camera_scroll else "off" + ) _on_screen_keyboard_toggle.text = ( "on" if _on_screen_keyboard_enabled else "off" ) @@ -1255,6 +1135,11 @@ func _set_invert_y(enabled: bool) -> void: _refresh_value_labels() +func _set_swap_scroll(enabled: bool) -> void: + _swap_hotbar_camera_scroll = enabled + _refresh_value_labels() + + func _set_on_screen_keyboard(enabled: bool) -> void: _on_screen_keyboard_enabled = enabled _refresh_value_labels() diff --git a/ui/settings_panel.tscn b/ui/settings_panel.tscn index 94f627c..4504902 100644 --- a/ui/settings_panel.tscn +++ b/ui/settings_panel.tscn @@ -402,12 +402,32 @@ unique_name_in_owner = true custom_minimum_size = Vector2(330, 48) layout_mode = 2 focus_mode = 2 +focus_neighbor_bottom = NodePath("../SwapScrollToggle") toggle_mode = true text = "off" [node name="InvertYSpacer" type="Control" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/ControlsPage/Grid"] layout_mode = 2 +[node name="SwapScrollLabel" type="Label" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/ControlsPage/Grid"] +custom_minimum_size = Vector2(210, 48) +layout_mode = 2 +text = "swap scroll controls" +vertical_alignment = 1 + +[node name="SwapScrollToggle" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/ControlsPage/Grid"] +unique_name_in_owner = true +custom_minimum_size = Vector2(330, 48) +layout_mode = 2 +focus_mode = 2 +focus_neighbor_top = NodePath("../InvertYToggle") +focus_neighbor_bottom = NodePath("../OnScreenKeyboardToggle") +toggle_mode = true +text = "off" + +[node name="SwapScrollSpacer" type="Control" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/ControlsPage/Grid"] +layout_mode = 2 + [node name="KeyboardLabel" type="Label" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/ControlsPage/Grid"] custom_minimum_size = Vector2(210, 48) layout_mode = 2 @@ -419,6 +439,7 @@ unique_name_in_owner = true custom_minimum_size = Vector2(330, 48) layout_mode = 2 focus_mode = 2 +focus_neighbor_top = NodePath("../SwapScrollToggle") focus_neighbor_bottom = NodePath("../../BindingButtons/ControllerMapping") toggle_mode = true text = "off" @@ -567,7 +588,7 @@ size_flags_horizontal = 3 focus_mode = 2 focus_neighbor_right = NodePath("../ChangeDataFolder") focus_neighbor_top = NodePath("../../../../../../../../TabBar/DataTab") -focus_neighbor_bottom = NodePath("../../ProgressionRow/ExportProgression") +focus_neighbor_bottom = NodePath("../../CopyPlayerFingerprint") text = "open data folder" [node name="ChangeDataFolder" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/DataPage/DataScroll/DataButtons/FolderRow"] @@ -578,41 +599,15 @@ size_flags_horizontal = 3 focus_mode = 2 focus_neighbor_left = NodePath("../OpenDataFolder") focus_neighbor_top = NodePath("../../../../../../../../TabBar/DataTab") -focus_neighbor_bottom = NodePath("../../ProgressionRow/ImportProgression") +focus_neighbor_bottom = NodePath("../../CopyPlayerFingerprint") text = "change data folder" -[node name="ProgressionRow" type="HBoxContainer" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/DataPage/DataScroll/DataButtons"] -layout_mode = 2 -theme_override_constants/separation = 12 - -[node name="ExportProgression" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/DataPage/DataScroll/DataButtons/ProgressionRow"] -unique_name_in_owner = true -custom_minimum_size = Vector2(0, 44) -layout_mode = 2 -size_flags_horizontal = 3 -focus_mode = 2 -focus_neighbor_right = NodePath("../ImportProgression") -focus_neighbor_top = NodePath("../../FolderRow/OpenDataFolder") -focus_neighbor_bottom = NodePath("../../CopyPlayerFingerprint") -text = "export progression" - -[node name="ImportProgression" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/DataPage/DataScroll/DataButtons/ProgressionRow"] -unique_name_in_owner = true -custom_minimum_size = Vector2(0, 44) -layout_mode = 2 -size_flags_horizontal = 3 -focus_mode = 2 -focus_neighbor_left = NodePath("../ExportProgression") -focus_neighbor_top = NodePath("../../FolderRow/ChangeDataFolder") -focus_neighbor_bottom = NodePath("../../CopyPlayerFingerprint") -text = "import progression" - [node name="CopyPlayerFingerprint" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/DataPage/DataScroll/DataButtons"] unique_name_in_owner = true custom_minimum_size = Vector2(0, 44) layout_mode = 2 focus_mode = 2 -focus_neighbor_top = NodePath("../ProgressionRow/ExportProgression") +focus_neighbor_top = NodePath("../FolderRow/OpenDataFolder") focus_neighbor_bottom = NodePath("../PlayerIdentityRow/ExportPlayerIdentity") text = "copy player fingerprint" diff --git a/ui/surface_drawing_toolbar.tscn b/ui/surface_drawing_toolbar.tscn index 89e19ac..cc579c9 100644 --- a/ui/surface_drawing_toolbar.tscn +++ b/ui/surface_drawing_toolbar.tscn @@ -112,9 +112,9 @@ expand_icon = true [node name="ExportButton" type="Button" parent="TopPanel/Top"] unique_name_in_owner = true layout_mode = 2 -tooltip_text = "export aimed artwork as PNG" +tooltip_text = "aim at artwork, then click to export PNG" focus_mode = 0 -accessibility_name = "export aimed artwork as PNG" +accessibility_name = "export last aimed artwork as PNG" text = "png" [node name="StampButton" type="Button" parent="TopPanel/Top"] diff --git a/ui/the_net_page.gd b/ui/the_net_page.gd index 504128d..ddf2ce5 100644 --- a/ui/the_net_page.gd +++ b/ui/the_net_page.gd @@ -352,6 +352,9 @@ func _build_job_rows(jobs: Array[Dictionary], empty_text: String) -> void: progress_bar.max_value = float(target) progress_bar.value = float(progress) progress_bar.show_percentage = false + var exact_progress: String = "%d / %d" % [progress, target] + progress_bar.tooltip_text = exact_progress + progress_bar.mouse_filter = Control.MOUSE_FILTER_STOP progress_bar.add_theme_stylebox_override( "background", UtilityPageStyle.rounded_style( UtilityPageStyle.OCEAN_PANEL_DEEP, 9 @@ -372,7 +375,8 @@ func _build_job_rows(jobs: Array[Dictionary], empty_text: String) -> void: _compact_integer(progress), _compact_integer(target), ] - count.tooltip_text = "%d / %d" % [progress, target] + count.tooltip_text = exact_progress + count.mouse_filter = Control.MOUSE_FILTER_STOP count.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER count.vertical_alignment = VERTICAL_ALIGNMENT_CENTER count.add_theme_font_size_override("font_size", 14) @@ -469,6 +473,7 @@ func _claim(claim_id: String) -> void: func _make_reward_display(fish_coin: int, experience: int) -> HBoxContainer: var reward := HBoxContainer.new() reward.tooltip_text = "%d fish coins · %d xp" % [fish_coin, experience] + reward.mouse_filter = Control.MOUSE_FILTER_STOP reward.add_theme_constant_override("separation", 7) var currency: CurrencyAmount = ( CurrencyPresentationType.instantiate_amount(fish_coin, 18.0) @@ -498,6 +503,7 @@ func _make_job_reward_display( var reward := VBoxContainer.new() reward.custom_minimum_size.x = 104.0 reward.tooltip_text = "%d fish coins · %d xp" % [fish_coin, experience] + reward.mouse_filter = Control.MOUSE_FILTER_STOP reward.add_theme_constant_override("separation", 1) var currency: CurrencyAmount = ( CurrencyPresentationType.instantiate_amount(fish_coin, 16.0) diff --git a/ui/title_screen.gd b/ui/title_screen.gd index 242b335..6274f7d 100644 --- a/ui/title_screen.gd +++ b/ui/title_screen.gd @@ -27,6 +27,7 @@ const NetworkSessionType = preload("res://network/network_session.gd") const SavedServerStoreType = preload("res://network/saved_server_store.gd") const JoinGamePageType = preload("res://ui/network/join_game_page.gd") const NewGameSetupPageType = preload("res://ui/new_game_setup_page.gd") +const SaveSlotsPageType = preload("res://ui/save_slots_page.gd") const CurrencyPresentationType = preload( "res://ui/currency_presentation.gd" ) @@ -89,6 +90,13 @@ const QUICK_MENU_ENTER_SCALE: float = 0.97 signal new_game_requested(world_layout: StringName, world_seed: int) signal continue_game_requested +signal slot_play_requested(slot_id: String) +signal new_slot_requested( + display_name: String, + world_layout: StringName, + world_seed: int, + duplicate_source_slot_id: String, +) signal quit_requested signal join_game_requested(endpoint: String) @@ -97,7 +105,7 @@ enum ConfirmationAction { DELETE_SAVE, } -@onready var _continue_button: BubbleButtonType = %ContinueButton +@onready var _play_button: BubbleButtonType = %PlayButton @onready var _new_game_button: BubbleButtonType = %NewGameButton @onready var _settings_button: BubbleButtonType = %SettingsButton @onready var _credits_button: BubbleButtonType = %CreditsButton @@ -134,6 +142,7 @@ enum ConfirmationAction { @onready var _join_game_page: JoinGamePageType = %JoinGamePage @onready var _new_game_setup_page: NewGameSetupPageType = %NewGameSetupPage @onready var _credits_page: TitleCreditsPageType = %CreditsPage +@onready var _save_slots_page: SaveSlotsPageType = %SaveSlotsPage var _save_manager: SaveManagerType var _settings_manager: SettingsManagerType @@ -183,17 +192,17 @@ func _ready() -> void: ).strip_edges() if not release_version.is_empty(): _playtest_label.text = "v%s" % release_version - _continue_button.pressed.connect(_on_continue_pressed) - _continue_button.mouse_entered.connect( + _play_button.pressed.connect(_on_continue_pressed) + _play_button.mouse_entered.connect( _on_continue_stats_hover_changed.bind(true) ) - _continue_button.mouse_exited.connect( + _play_button.mouse_exited.connect( _on_continue_stats_hover_changed.bind(false) ) - _continue_button.focus_entered.connect( + _play_button.focus_entered.connect( _on_continue_stats_focus_changed.bind(true) ) - _continue_button.focus_exited.connect( + _play_button.focus_exited.connect( _on_continue_stats_focus_changed.bind(false) ) _new_game_button.pressed.connect(_on_new_game_pressed) @@ -214,6 +223,9 @@ func _ready() -> void: _emit_navigation_bubble_flurry ) _credits_page.back_requested.connect(_close_credits) + _save_slots_page.back_requested.connect(_close_save_slots) + _save_slots_page.play_requested.connect(_on_slot_play_requested) + _save_slots_page.create_requested.connect(_on_new_slot_requested) _bubble_field.configure(_get_title_buttons()) _bubble_field.motion_scale = 0.0 _decorative_fish_timer.timeout.connect(_on_decorative_fish_timer_timeout) @@ -237,14 +249,18 @@ func _ready() -> void: func setup( save_manager: SaveManagerType, + save_slots: PlayerSaveSlotCatalog, settings_manager: SettingsManagerType, network_session: NetworkSessionType, saved_servers: SavedServerStoreType, server_trust: ServerTrustStore, discovery: DiscoveryClient, + data_root: PlayerDataRoot, + interface_fonts: InterfaceFontController, ) -> void: _save_manager = save_manager _settings_manager = settings_manager + _save_slots_page.setup(save_slots, data_root, interface_fonts) _join_game_page.setup( network_session, saved_servers, false, server_trust, discovery ) @@ -276,6 +292,7 @@ func reopen() -> void: _join_game_page.close_page() _new_game_setup_page.close_page() _credits_page.close_page() + _save_slots_page.close_page() _refresh_save_inspection() show() _start_decorative_presentation() @@ -304,11 +321,15 @@ func open_join_game_page(endpoint: String = "") -> void: _confirmation_page.hide_page() _credits_page.close_page() _new_game_setup_page.close_page() + _save_slots_page.close_page() _join_game_page.open_page(endpoint) func report_network_error(message: String) -> void: _join_game_page.set_status(message) + if _save_slots_page.visible: + _save_slots_page.set_status(message) + return if not _join_game_page.visible: _feedback_label.text = _center_feedback_text(message) _feedback_label.show() @@ -321,6 +342,7 @@ func _open_join_game() -> void: or _is_confirmation_active() or _new_game_setup_page.visible or _credits_page.visible + or _save_slots_page.visible ): return open_join_game_page() @@ -342,6 +364,7 @@ func _open_credits() -> void: or _join_game_page.visible or _new_game_setup_page.visible or _credits_page.visible + or _save_slots_page.visible ): return _hide_continue_stats_context() @@ -469,12 +492,10 @@ func _update_responsive_title_stage() -> void: func _get_title_buttons() -> Array[BubbleButton]: return [ - _continue_button, - _new_game_button, + _play_button, _join_game_button, _settings_button, _credits_button, - _delete_button, _quit_button, ] @@ -583,6 +604,11 @@ func _input(event: InputEvent) -> void: _new_game_setup_page.request_back() get_viewport().set_input_as_handled() return + if _save_slots_page.visible: + if event.is_action_pressed("ui_cancel"): + _save_slots_page.request_back() + get_viewport().set_input_as_handled() + return if ( _title_settings_transition_active or _title_entry_transition_active @@ -631,6 +657,7 @@ func _handle_primary_menu_focus_input(event: InputEvent) -> bool: or _settings_panel.visible or _new_game_setup_page.visible or _credits_page.visible + or _save_slots_page.visible ): return false if event is InputEventMouseMotion: @@ -656,7 +683,7 @@ func _handle_primary_menu_focus_input(event: InputEvent) -> bool: func _get_first_available_menu_button() -> Button: - return _continue_button if not _continue_button.disabled else _new_game_button + return _play_button func _primary_menu_has_focus() -> bool: @@ -868,7 +895,7 @@ func _update_continue_stats_visibility() -> void: ) requested_visible = ( requested_visible - and not _continue_button.disabled + and not _play_button.disabled and _inspection != null and _inspection.status == SaveInspectionType.Status.VALID_SUPPORTED and not _awaiting_start_input @@ -940,14 +967,70 @@ func _on_continue_pressed() -> void: _action_in_progress or _is_confirmation_active() or _settings_panel.visible - or _inspection == null - or not _inspection.can_continue() + or _save_slots_page.visible ): return _hide_continue_stats_context() + _modal_restore_navigation_focus = _navigation_focus_active + _set_title_bubbles_interactive(false) + _release_primary_menu_focus() + _presentation_center.hide() + _start_prompt_center.hide() + _join_game_page.close_page() + _credits_page.close_page() + _new_game_setup_page.close_page() + _save_slots_page.open_page() + + +func _close_save_slots() -> void: + _save_slots_page.close_page() + _presentation_center.show() + _button_center.show() + _start_prompt_center.hide() + _set_title_bubbles_interactive(true) + var restore_navigation_focus: bool = _modal_restore_navigation_focus + _modal_restore_navigation_focus = false + if restore_navigation_focus: + _navigation_focus_active = true + _play_button.grab_focus() + else: + _navigation_focus_active = false + _release_title_focus() + _update_continue_stats_visibility() + + +func _on_slot_play_requested(slot_id: String) -> void: + if _action_in_progress or not _save_slots_page.visible: + return _action_in_progress = true - continue_game_requested.emit() + slot_play_requested.emit(slot_id) _action_in_progress = false + if visible: + _save_slots_page.finish_request_if_pending( + "the save slot could not be started." + ) + + +func _on_new_slot_requested( + display_name: String, + world_layout: StringName, + world_seed: int, + duplicate_source_slot_id: String, +) -> void: + if _action_in_progress or not _save_slots_page.visible: + return + _action_in_progress = true + new_slot_requested.emit( + display_name, + world_layout, + world_seed, + duplicate_source_slot_id, + ) + _action_in_progress = false + if visible: + _save_slots_page.finish_request_if_pending( + "the save slot could not be created." + ) func _on_new_game_pressed() -> void: @@ -1252,6 +1335,7 @@ func _open_settings() -> void: or _action_in_progress or _settings_panel.visible or _credits_page.visible + or _save_slots_page.visible or _title_settings_transition_active ): return @@ -1467,12 +1551,12 @@ func _restore_settings_focus() -> void: func _refresh_save_inspection() -> void: _inspection = _save_manager.inspect_save() - _continue_button.disabled = not _inspection.can_continue() + _play_button.disabled = false _delete_button.disabled = not _inspection.can_delete() _feedback_label.text = _center_feedback_text(_inspection.message) if _inspection.status == SaveInspectionType.Status.VALID_SUPPORTED: _feedback_label.text = _get_continue_stats_text() - if _continue_button.disabled: + if not _inspection.can_continue(): _hide_continue_stats_context() else: _update_continue_stats_visibility() @@ -1485,12 +1569,10 @@ func _focus_initial_button() -> void: or _awaiting_start_input or not _button_center.visible or _credits_page.visible + or _save_slots_page.visible ): return - if not _continue_button.disabled: - _continue_button.grab_focus() - else: - _new_game_button.grab_focus() + _play_button.grab_focus() _navigation_focus_active = true _update_continue_stats_visibility() diff --git a/ui/title_screen.tscn b/ui/title_screen.tscn index e0838ed..e969f66 100644 --- a/ui/title_screen.tscn +++ b/ui/title_screen.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=24 format=3] +[gd_scene load_steps=25 format=3] [ext_resource type="Script" path="res://ui/title_screen.gd" id="1_script"] [ext_resource type="Theme" path="res://ui/game_theme.tres" id="2_theme"] @@ -20,6 +20,7 @@ [ext_resource type="Texture2D" path="res://ui/icons/main_menu/credits.png" id="18_credits"] [ext_resource type="Texture2D" path="res://ui/icons/main_menu/delete_save.png" id="19_delete_save"] [ext_resource type="PackedScene" path="res://ui/new_game_setup_page.tscn" id="20_new_game_setup"] +[ext_resource type="PackedScene" path="res://ui/save_slots_page.tscn" id="21_save_slots"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_title_water"] shader = ExtResource("4_water_shader") @@ -260,21 +261,21 @@ offset_bottom = 318.0 script = ExtResource("8_bubble_cluster") profile = ExtResource("9_bubble_profile") -[node name="ContinueButton" type="Button" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent/ButtonCenter/BubbleLayoutSlot/BubbleMotionRoot/BubbleField"] +[node name="PlayButton" type="Button" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent/ButtonCenter/BubbleLayoutSlot/BubbleMotionRoot/BubbleField"] unique_name_in_owner = true -offset_left = 123.0 -offset_top = 86.0 -offset_right = 307.0 -offset_bottom = 264.0 +offset_left = 106.0 +offset_top = 71.0 +offset_right = 290.0 +offset_bottom = 249.0 texture_filter = 1 icon = ExtResource("16_continue") -tooltip_text = "continue" -accessibility_name = "continue" +tooltip_text = "play" +accessibility_name = "play" script = ExtResource("7_bubble_button") profile = ExtResource("9_bubble_profile") neutral_size = Vector2(184, 178) -desktop_anchor = Vector2(215, 175) -compact_anchor = Vector2(215, 175) +desktop_anchor = Vector2(198, 160) +compact_anchor = Vector2(198, 164) minimum_font_size = 19 maximum_font_size = 30 horizontal_amplitude = 1.8 @@ -285,6 +286,8 @@ deformation_period = 6.7 [node name="NewGameButton" type="Button" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent/ButtonCenter/BubbleLayoutSlot/BubbleMotionRoot/BubbleField"] unique_name_in_owner = true +visible = false +focus_mode = 0 offset_left = 42.0 offset_top = 4.0 offset_right = 170.0 @@ -310,18 +313,18 @@ deformation_period = 5.9 [node name="SettingsButton" type="Button" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent/ButtonCenter/BubbleLayoutSlot/BubbleMotionRoot/BubbleField"] unique_name_in_owner = true -offset_left = 264.0 -offset_top = 17.0 -offset_right = 384.0 -offset_bottom = 133.0 +offset_left = 254.0 +offset_top = 12.0 +offset_right = 374.0 +offset_bottom = 128.0 texture_filter = 1 icon = ExtResource("13_settings_dark") tooltip_text = "settings" accessibility_name = "settings" script = ExtResource("7_bubble_button") profile = ExtResource("9_bubble_profile") -desktop_anchor = Vector2(324, 75) -compact_anchor = Vector2(324, 68) +desktop_anchor = Vector2(314, 70) +compact_anchor = Vector2(333, 75) compact_minimum_size = Vector2(94, 90) minimum_font_size = 15 maximum_font_size = 22 @@ -332,10 +335,10 @@ deformation_period = 6.3 [node name="CreditsButton" type="Button" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent/ButtonCenter/BubbleLayoutSlot/BubbleMotionRoot/BubbleField"] unique_name_in_owner = true -offset_left = 330.0 -offset_top = 125.0 -offset_right = 414.0 -offset_bottom = 207.0 +offset_left = 54.0 +offset_top = 209.0 +offset_right = 138.0 +offset_bottom = 291.0 texture_filter = 1 icon = ExtResource("18_credits") tooltip_text = "credits" @@ -343,8 +346,8 @@ accessibility_name = "credits" script = ExtResource("7_bubble_button") profile = ExtResource("9_bubble_profile") neutral_size = Vector2(84, 82) -desktop_anchor = Vector2(372, 166) -compact_anchor = Vector2(372, 166) +desktop_anchor = Vector2(96, 250) +compact_anchor = Vector2(82, 258) compact_minimum_size = Vector2(62, 62) minimum_font_size = 12 maximum_font_size = 17 @@ -357,10 +360,10 @@ deformation_period = 5.6 [node name="JoinGameButton" type="Button" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent/ButtonCenter/BubbleLayoutSlot/BubbleMotionRoot/BubbleField"] unique_name_in_owner = true -offset_left = 126.0 -offset_top = 224.0 -offset_right = 248.0 -offset_bottom = 342.0 +offset_left = 21.0 +offset_top = 11.0 +offset_right = 143.0 +offset_bottom = 129.0 texture_filter = 1 icon = ExtResource("12_online_dark") tooltip_text = "join game" @@ -368,8 +371,8 @@ accessibility_name = "join game" script = ExtResource("7_bubble_button") profile = ExtResource("9_bubble_profile") neutral_size = Vector2(122, 118) -desktop_anchor = Vector2(187, 268) -compact_anchor = Vector2(187, 268) +desktop_anchor = Vector2(82, 70) +compact_anchor = Vector2(63, 75) compact_minimum_size = Vector2(82, 80) minimum_font_size = 15 maximum_font_size = 22 @@ -382,6 +385,8 @@ deformation_period = 5.7 [node name="DeleteSaveButton" type="Button" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent/ButtonCenter/BubbleLayoutSlot/BubbleMotionRoot/BubbleField"] unique_name_in_owner = true +visible = false +focus_mode = 0 offset_left = -11.0 offset_top = 122.0 offset_right = 123.0 @@ -406,10 +411,10 @@ deformation_period = 5.4 [node name="QuitButton" type="Button" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent/ButtonCenter/BubbleLayoutSlot/BubbleMotionRoot/BubbleField"] unique_name_in_owner = true -offset_left = 275.0 -offset_top = 217.0 -offset_right = 369.0 -offset_bottom = 309.0 +offset_left = 255.0 +offset_top = 204.0 +offset_right = 349.0 +offset_bottom = 296.0 texture_filter = 1 icon = ExtResource("14_x_dark") tooltip_text = "quit" @@ -417,8 +422,8 @@ accessibility_name = "quit" script = ExtResource("7_bubble_button") profile = ExtResource("9_bubble_profile") neutral_size = Vector2(94, 92) -desktop_anchor = Vector2(322, 263) -compact_anchor = Vector2(322, 263) +desktop_anchor = Vector2(302, 250) +compact_anchor = Vector2(317, 254) compact_minimum_size = Vector2(68, 68) minimum_font_size = 14 maximum_font_size = 18 @@ -497,3 +502,13 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 + +[node name="SaveSlotsPage" parent="ResponsiveTitleStage/TitlePresentationScaleRoot" instance=ExtResource("21_save_slots")] +unique_name_in_owner = true +z_index = 220 +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 diff --git a/ui/ui_pixelation_presenter.gd b/ui/ui_pixelation_presenter.gd index 9123a7c..476b5b5 100644 --- a/ui/ui_pixelation_presenter.gd +++ b/ui/ui_pixelation_presenter.gd @@ -46,6 +46,7 @@ func _ready() -> void: _game_ui.set_controller_text_entry_request( Callable(_on_screen_keyboard, "request_for_control"), Callable(_on_screen_keyboard, "is_open"), + Callable(_on_screen_keyboard, "close_for_control"), ) var controller_focus_presentation := ControllerFocusPresentationType.new() _ui_root.add_child(controller_focus_presentation) diff --git a/world/generation/generated_world_region.gd b/world/generation/generated_world_region.gd index 95cf6d3..5adf173 100644 --- a/world/generation/generated_world_region.gd +++ b/world/generation/generated_world_region.gd @@ -79,8 +79,6 @@ func _ready() -> void: _validate_biome_catalog() _configure_static_water() _build_shoreline_reference() - if not generate_world(initial_seed): - push_error("The initial generated world could not be built.") func generate_world(seed: int) -> bool: @@ -100,6 +98,10 @@ func get_generation_seed() -> int: return _current_seed +func is_world_generated() -> bool: + return is_instance_valid(_generator.get_generated_chunks_root()) + + func get_playable_half_extents() -> Vector2: var size := Vector2( float(_generator.grid_size.x), diff --git a/world/generation/terrain_chunk_generator.gd b/world/generation/terrain_chunk_generator.gd index 1098caf..ee79821 100644 --- a/world/generation/terrain_chunk_generator.gd +++ b/world/generation/terrain_chunk_generator.gd @@ -25,6 +25,7 @@ const MAX_PACKED_SOLVER_VARIANTS := 62 @export var generation_seed := 13001 @export var generate_on_ready := true @export var build_collision := true +@export_range(1, 16, 1) var collision_batch_size := 4 @export var show_chunk_labels := false @export var force_center_chunk_id: StringName = &"chunk_0000" @export var required_chunk_ids := PackedStringArray() @@ -3928,9 +3929,102 @@ func _build_solution_root() -> Node3D: if not _add_stacked_elevated_chunks(solution_root): solution_root.free() return null + if build_collision and collision_batch_size > 1: + _batch_generated_terrain_collision(solution_root) return solution_root +func _batch_generated_terrain_collision(solution_root: Node3D) -> void: + var shapes_by_batch: Dictionary[Vector2i, Array] = {} + var host_by_batch: Dictionary[Vector2i, Node3D] = {} + var bodies_to_remove: Array[StaticBody3D] = [] + for chunk_node: Node in solution_root.get_children(): + var chunk_root := chunk_node as Node3D + if chunk_root == null: + continue + var coordinate: Vector2i = chunk_root.get_meta( + &"terrain_chunk_coordinate", + Vector2i.ZERO, + ) + var batch_coordinate := Vector2i( + floori(float(coordinate.x) / float(collision_batch_size)), + floori(float(coordinate.y) / float(collision_batch_size)), + ) + if not host_by_batch.has(batch_coordinate): + host_by_batch[batch_coordinate] = chunk_root + var batch_shapes: Array = shapes_by_batch.get( + batch_coordinate, + [], + ) + for value: Node in chunk_root.find_children( + "TerrainShape", + "CollisionShape3D", + true, + false, + ): + var collision_shape := value as CollisionShape3D + if collision_shape == null: + continue + var collision_body := collision_shape.get_parent() as StaticBody3D + if collision_shape.shape == null or collision_body == null: + continue + var shape_to_solution := _transform_to_ancestor( + collision_shape, + solution_root, + ) + batch_shapes.append({ + "shape": collision_shape.shape, + "transform": shape_to_solution, + }) + if collision_body not in bodies_to_remove: + bodies_to_remove.append(collision_body) + shapes_by_batch[batch_coordinate] = batch_shapes + while not bodies_to_remove.is_empty(): + var collision_body: StaticBody3D = bodies_to_remove.pop_back() + collision_body.free() + for batch_coordinate: Vector2i in shapes_by_batch: + var batch_shapes: Array = shapes_by_batch[batch_coordinate] + if batch_shapes.is_empty(): + continue + var host_root: Node3D = host_by_batch.get(batch_coordinate) + if host_root == null: + continue + var body := StaticBody3D.new() + body.name = "TerrainCollisionBatch_%d_%d" % [ + batch_coordinate.x, + batch_coordinate.y, + ] + body.collision_layer = 1 + body.collision_mask = 0 + body.set_meta(&"terrain_collision_batch", batch_coordinate) + host_root.add_child(body) + var solution_to_body: Transform3D = host_root.transform.affine_inverse() + for shape_index: int in batch_shapes.size(): + var record: Dictionary = batch_shapes[shape_index] + var collision := CollisionShape3D.new() + collision.name = "TerrainShape_%d" % shape_index + collision.shape = record.get("shape") as Shape3D + collision.transform = ( + solution_to_body + * (record.get("transform", Transform3D.IDENTITY) as Transform3D) + ) + body.add_child(collision) + + +static func _transform_to_ancestor( + node: Node3D, + ancestor: Node3D, +) -> Transform3D: + var result := Transform3D.IDENTITY + var current: Node3D = node + while current != ancestor: + result = current.transform * result + current = current.get_parent() as Node3D + if current == null: + return Transform3D.IDENTITY + return result + + func _add_stacked_elevated_chunks(solution_root: Node3D) -> bool: for index: int in _stacked_elevated_placements.size(): var record := _stacked_elevated_placements[index] diff --git a/world/player_water_trigger.gd b/world/player_water_trigger.gd index 93096dd..10fab14 100644 --- a/world/player_water_trigger.gd +++ b/world/player_water_trigger.gd @@ -40,6 +40,10 @@ func _ready() -> void: return body_entered.connect(_on_body_entered) body_exited.connect(_on_body_exited) + # Generated worlds can contain many independent water volumes. Keep an + # empty trigger completely asleep instead of polling an empty array on every + # physics tick. + set_physics_process(false) func _physics_process(_delta: float) -> void: @@ -57,6 +61,8 @@ func _physics_process(_delta: float) -> void: if entry_height <= active_surface_height - entry_depth_threshold: _triggered_players[player_key] = true recovery_requested.emit(player, active_surface_height) + if _tracked_players.is_empty(): + set_physics_process(false) func get_surface_height() -> float: @@ -80,6 +86,7 @@ func _on_body_entered(body: Node3D) -> void: if player == null or player in _tracked_players: return _tracked_players.append(player) + set_physics_process(true) func _on_body_exited(body: Node3D) -> void: @@ -88,3 +95,5 @@ func _on_body_exited(body: Node3D) -> void: return _tracked_players.erase(player) _triggered_players.erase(StringName(str(player.get_instance_id()))) + if _tracked_players.is_empty(): + set_physics_process(false) diff --git a/world/test_world.gd b/world/test_world.gd index af75018..d5ac83c 100644 --- a/world/test_world.gd +++ b/world/test_world.gd @@ -30,6 +30,7 @@ const WORLD_BOUNDARY_SHORELINE_CLEARANCE := 18.0 var _world_layout: StringName = WorldLayoutType.GENERATED var _world_seed: int = PlayerSaveManager.DEFAULT_WORLD_SEED var _light_performance_profile: bool = false +var _dedicated_simulation: bool = false func get_player_water_triggers() -> Array[PlayerWaterTrigger]: @@ -74,6 +75,62 @@ func set_light_performance_profile(enabled: bool) -> void: _active_region.set_light_performance_profile(enabled) +func set_dedicated_simulation(enabled: bool) -> void: + _dedicated_simulation = enabled + if _active_region != null: + _set_region_presentation_enabled(_active_region, not enabled) + _world_environment.process_mode = ( + Node.PROCESS_MODE_DISABLED if enabled else Node.PROCESS_MODE_INHERIT + ) + _sun.visible = not enabled + _sun.process_mode = ( + Node.PROCESS_MODE_DISABLED if enabled else Node.PROCESS_MODE_INHERIT + ) + + +func _set_region_presentation_enabled( + region: WorldRegion, + enabled: bool, +) -> void: + for class_name_value: String in [ + "WaterSurfaceMotion", + "LocalStormCloudLayer", + "WorldCharacterDisplay", + ]: + for value: Node in region.find_children( + "*", class_name_value, true, false + ): + value.process_mode = ( + Node.PROCESS_MODE_INHERIT + if enabled + else Node.PROCESS_MODE_DISABLED + ) + for value: Node in region.find_children("*", "GeometryInstance3D", true, false): + (value as GeometryInstance3D).visible = enabled + for value: Node in region.find_children("*", "GPUParticles3D", true, false): + var particles := value as GPUParticles3D + particles.emitting = enabled + particles.process_mode = ( + Node.PROCESS_MODE_INHERIT if enabled else Node.PROCESS_MODE_DISABLED + ) + for value: Node in region.find_children("*", "AnimationPlayer", true, false): + var animation_player := value as AnimationPlayer + animation_player.active = enabled + animation_player.process_mode = ( + Node.PROCESS_MODE_INHERIT if enabled else Node.PROCESS_MODE_DISABLED + ) + for class_name_value: String in ["AudioStreamPlayer", "AudioStreamPlayer3D"]: + for value: Node in region.find_children( + "*", class_name_value, true, false + ): + value.call("stop") + value.process_mode = ( + Node.PROCESS_MODE_INHERIT + if enabled + else Node.PROCESS_MODE_DISABLED + ) + + func get_fishable_water_regions() -> Array[FishableWaterRegion]: return ( _active_region.get_fishable_water_regions() @@ -129,6 +186,17 @@ func get_generation_seed() -> int: return _world_seed +func is_world_ready() -> bool: + if _active_region == null: + return false + if _world_layout != WorldLayoutType.GENERATED: + return true + return ( + _active_region.has_method(&"is_world_generated") + and bool(_active_region.call(&"is_world_generated")) + ) + + func get_diggable_area_triangles( area_id: StringName, ) -> Array[PackedVector3Array]: @@ -182,6 +250,8 @@ func _replace_active_region(layout: StringName, seed: int) -> bool: _active_region = replacement _regions_root.add_child(_active_region) _active_region.set_light_performance_profile(_light_performance_profile) + if _dedicated_simulation: + _set_region_presentation_enabled(_active_region, false) return true From 348ae261e1aaf10648b14e5598d3774d9a3a8208 Mon Sep 17 00:00:00 2001 From: Voyager Date: Sun, 23 Aug 2026 20:57:16 -0400 Subject: [PATCH 39/90] chore: prepare v0.17.0-alpha release --- docs/README-PLAYTEST.txt | 4 ++-- export_presets.cfg | 26 +++++++++++++------------- project.godot | 2 +- scripts/build_playtest.sh | 6 +++--- ui/title_screen.tscn | 2 +- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/README-PLAYTEST.txt b/docs/README-PLAYTEST.txt index 6b8fb4d..dbaa032 100644 --- a/docs/README-PLAYTEST.txt +++ b/docs/README-PLAYTEST.txt @@ -1,6 +1,6 @@ NETfishing -v0.16.2-alpha -Alpha 0.16.2 +v0.17.0-alpha +Alpha 0.17.0 Thank you for trying this early private playtest. diff --git a/export_presets.cfg b/export_presets.cfg index d41ca53..c484b38 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -9,7 +9,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.16.2-alpha/windows-x86_64/NETfishing.exe" +export_path="builds/v0.17.0-alpha/windows-x86_64/NETfishing.exe" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -35,11 +35,11 @@ application/modify_resources=true application/icon="res://art/exported/system_icons/netfishing.ico" application/console_wrapper_icon="" application/icon_interpolation=4 -application/file_version="0.16.2.0" -application/product_version="0.16.2.0" +application/file_version="0.17.0.0" +application/product_version="0.17.0.0" application/company_name="Woofmeow" application/product_name="NETfishing" -application/file_description="NETfishing v0.16.2-alpha" +application/file_description="NETfishing v0.17.0-alpha" application/copyright="Copyright © 2026 Woofmeow" application/trademarks="NETfishing and Woofmeow branding is reserved; see TRADEMARKS.md" application/export_angle=0 @@ -62,7 +62,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.16.2-alpha/linux-arm64/NETfishing.arm64" +export_path="builds/v0.17.0-alpha/linux-arm64/NETfishing.arm64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -92,7 +92,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.16.2-alpha/macos/NETfishing.zip" +export_path="builds/v0.17.0-alpha/macos/NETfishing.zip" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -108,8 +108,8 @@ custom_template/release="" application/bundle_identifier="io.woofmeow.netfishing" application/icon="res://art/exported/system_icons/netfishing_1024.png" application/icon_interpolation=0 -application/short_version="0.16.2" -application/version="0.16.2" +application/short_version="0.17.0" +application/version="0.17.0" application/architecture="universal" codesign/enable=false notarization/enable=false @@ -125,7 +125,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*,tests/*" -export_path="builds/v0.16.2-alpha/server-linux-x86_64/NETfishingServer.x86_64" +export_path="builds/v0.17.0-alpha/server-linux-x86_64/NETfishingServer.x86_64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -155,7 +155,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.16.2-alpha/android/NETfishing.apk" +export_path="builds/v0.17.0-alpha/android/NETfishing.apk" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -176,8 +176,8 @@ architectures/armeabi-v7a=false architectures/arm64-v8a=true architectures/x86=false architectures/x86_64=false -version/code=160200 -version/name="v0.16.2-alpha" +version/code=170000 +version/name="v0.17.0-alpha" package/unique_name="io.woofmeow.netfishing" package/name="NETfishing" package/signed=true @@ -214,7 +214,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.16.2-alpha/linux-x86_64/NETfishing.x86_64" +export_path="builds/v0.17.0-alpha/linux-x86_64/NETfishing.x86_64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" diff --git a/project.godot b/project.godot index 2530796..3b69d42 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="NETFISHING" -config/version="0.16.2-alpha" +config/version="0.17.0-alpha" run/main_scene="res://main/main.tscn" config/features=PackedStringArray("4.7", "GL Compatibility") config/icon="res://art/exported/system_icons/netfishing_256.png" diff --git a/scripts/build_playtest.sh b/scripts/build_playtest.sh index 9fa21c1..74a0c8c 100755 --- a/scripts/build_playtest.sh +++ b/scripts/build_playtest.sh @@ -4,14 +4,14 @@ 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.16.2-alpha" +readonly BUILD_ROOT="${PROJECT_ROOT}/builds/v0.17.0-alpha" readonly WINDOWS_DIR="${BUILD_ROOT}/windows-x86_64" readonly LINUX_DIR="${BUILD_ROOT}/linux-x86_64" readonly README_SOURCE="${PROJECT_ROOT}/docs/README-PLAYTEST.txt" readonly SOURCE_COMMIT="$(git -C "${PROJECT_ROOT}" rev-parse HEAD)" readonly SOURCE_URL="https://forge.makearmy.io/woofmeow/netfishing" -readonly WINDOWS_ZIP="${BUILD_ROOT}/NETfishing-v0.16.2-alpha-windows-x86_64.zip" -readonly LINUX_ZIP="${BUILD_ROOT}/NETfishing-v0.16.2-alpha-linux-x86_64.zip" +readonly WINDOWS_ZIP="${BUILD_ROOT}/NETfishing-v0.17.0-alpha-windows-x86_64.zip" +readonly LINUX_ZIP="${BUILD_ROOT}/NETfishing-v0.17.0-alpha-linux-x86_64.zip" readonly GODOT_BIN="${GODOT_BIN:-godot}" if [[ ! -f "${PROJECT_ROOT}/project.godot" ]]; then diff --git a/ui/title_screen.tscn b/ui/title_screen.tscn index e969f66..03275f3 100644 --- a/ui/title_screen.tscn +++ b/ui/title_screen.tscn @@ -227,7 +227,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.16.2-alpha" +text = "v0.17.0-alpha" horizontal_alignment = 1 [node name="Spacer" type="Control" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent"] From a3aea989827847c5c302144b11ef83c0363197c4 Mon Sep 17 00:00:00 2001 From: Voyager Date: Sun, 23 Aug 2026 23:04:14 -0400 Subject: [PATCH 40/90] Improve multiplayer movement reconciliation --- network/network_session.gd | 34 +++- player/player.gd | 222 +++++++++++++++-------- tests/movement_multiplayer_validation.gd | 73 +++++++- 3 files changed, 240 insertions(+), 89 deletions(-) diff --git a/network/network_session.gd b/network/network_session.gd index 11217d7..b889678 100644 --- a/network/network_session.gd +++ b/network/network_session.gd @@ -13,6 +13,7 @@ const ENET_TIMEOUT_MAXIMUM_MS: int = 120000 const INPUT_INTERVAL: float = 1.0 / 30.0 const IDLE_INPUT_INTERVAL: float = 1.0 / 5.0 const SNAPSHOT_INTERVAL: float = 1.0 / 30.0 +const OWNER_SNAPSHOT_DIVISOR: int = 3 const NEAR_REMOTE_SNAPSHOT_DIVISOR: int = 2 const FAR_REMOTE_SNAPSHOT_DIVISOR: int = 6 const DISTANT_REMOTE_SNAPSHOT_DIVISOR: int = 8 @@ -122,6 +123,7 @@ var _last_input_state_hash: int = 0 var _pending_movement_inputs: Array[Dictionary] = [] var _snapshot_accumulator: float = 0.0 var _movement_snapshot_tick: int = 0 +var _last_local_snapshot_received_msec: int = 0 var _animation_refresh_accumulator: float = 0.0 var _last_animation_state_by_peer: Dictionary[int, Dictionary] = {} var _pending_animation_state_by_peer: Dictionary[int, Dictionary] = {} @@ -2248,13 +2250,16 @@ func _broadcast_movement_snapshots() -> void: var subject_avatar: Player = _spawn_service.get_avatar(subject_id) if subject_avatar == null: continue - if ( - subject_id != recipient_id - and not _should_send_remote_snapshot( + if subject_id == recipient_id: + # The owner already simulates locally. Its authoritative state is + # an audit and acknowledgement, not a presentation stream, so it + # does not need the full 30 Hz observer snapshot rate. + if _movement_snapshot_tick % OWNER_SNAPSHOT_DIVISOR != 0: + continue + elif not _should_send_remote_snapshot( recipient_avatar.global_position, subject_avatar.global_position, - ) - ): + ): continue var encoded: Array = _encode_movement_snapshot( subject_avatar.make_network_snapshot(subject_id) @@ -2538,8 +2543,10 @@ func receive_movement_snapshots(encoded_snapshots: Array) -> void: ) avatar.apply_local_prediction_correction( snapshot, - _pending_movement_inputs, + _input_sequence, INPUT_INTERVAL, + estimated_transit_seconds, + _local_snapshot_delta_seconds(), ) else: avatar.push_network_snapshot( @@ -2557,6 +2564,20 @@ func _discard_acknowledged_movement_inputs(acknowledged_sequence: int) -> void: _pending_movement_inputs.pop_front() +func _local_snapshot_delta_seconds() -> float: + var now_msec: int = Time.get_ticks_msec() + if _last_local_snapshot_received_msec <= 0: + _last_local_snapshot_received_msec = now_msec + return 0.0 + var elapsed_seconds: float = clampf( + float(now_msec - _last_local_snapshot_received_msec) / 1000.0, + 0.0, + Player.LOCAL_PREDICTION_MAX_AUDIT_DELTA_SECONDS, + ) + _last_local_snapshot_received_msec = now_msec + return elapsed_seconds + + @rpc( "authority", "call_remote", @@ -2861,6 +2882,7 @@ func _teardown_peer() -> void: _pending_movement_inputs.clear() _snapshot_accumulator = 0.0 _movement_snapshot_tick = 0 + _last_local_snapshot_received_msec = 0 _animation_refresh_accumulator = 0.0 _last_animation_state_by_peer.clear() _pending_animation_state_by_peer.clear() diff --git a/player/player.gd b/player/player.gd index 6ec490f..860caf3 100644 --- a/player/player.gd +++ b/player/player.gd @@ -145,9 +145,14 @@ const NETWORK_MOVEMENT_HISTORY_SECONDS: float = 1.25 const NETWORK_MAX_LAG_COMPENSATION_SECONDS: float = 0.75 const LOCAL_PREDICTION_EXTRAPOLATION_LIMIT_SECONDS: float = 0.25 const LOCAL_PREDICTION_FALLBACK_TRANSIT_RATIO: float = 0.5 -const LOCAL_PREDICTION_CORRECTION_THRESHOLD: float = 0.12 -const LOCAL_PREDICTION_SNAP_DISTANCE: float = 2.0 -const LOCAL_PREDICTION_CORRECTION_WEIGHT: float = 0.18 +const LOCAL_PREDICTION_CORRECTION_THRESHOLD: float = 1.5 +const LOCAL_PREDICTION_SNAP_DISTANCE: float = 6.0 +const LOCAL_PREDICTION_CORRECTION_DELAY_SECONDS: float = 0.35 +const LOCAL_PREDICTION_MIN_CORRECTION_AUDITS: int = 3 +const LOCAL_PREDICTION_SOFT_CORRECTION_RATE: float = 2.5 +const LOCAL_PREDICTION_MAX_SOFT_CORRECTION_STEP: float = 0.15 +const LOCAL_PREDICTION_MAX_AUDIT_DELTA_SECONDS: float = 0.15 +const LOCAL_RECONCILIATION_PRESENTATION_RECENTER_RATE: float = 5.0 # The target Android handheld exposes its physical right trigger through # Godot's left-trigger axis. Keep the role named here so the platform mapping # remains isolated from camera behavior. @@ -529,6 +534,13 @@ var _network_snapshot_age: float = 0.0 var _network_snapshot_jitter: float = 0.0 var _network_simulation_only: bool = false var _local_reconciliation_visual_offset: Vector3 = Vector3.ZERO +var _local_reconciliation_camera_offset: Vector3 = Vector3.ZERO +var _local_prediction_error_seconds: float = 0.0 +var _local_prediction_error_audits: int = 0 +var _local_prediction_error_direction: Vector3 = Vector3.ZERO +var _local_prediction_soft_corrections: int = 0 +var _local_prediction_hard_corrections: int = 0 +var _local_prediction_largest_error: float = 0.0 var _authoritative_movement_history: Array[Dictionary] = [] var _local_network_jump_intent_pending: bool = false var _local_network_jump_intent_sequence: int = -1 @@ -1995,6 +2007,11 @@ func reset_network_movement_state() -> void: _network_input_stale_timeout_seconds = NETWORK_INPUT_STALE_TIMEOUT_SECONDS _network_jump_intent_active = false _last_network_input_sequence = 0 + _reset_local_prediction_error() + _clear_local_reconciliation_offsets() + _local_prediction_soft_corrections = 0 + _local_prediction_hard_corrections = 0 + _local_prediction_largest_error = 0.0 func capture_network_input(sequence: int) -> Dictionary: @@ -2235,8 +2252,10 @@ func push_network_snapshot( func apply_local_prediction_correction( snapshot: Dictionary, - pending_inputs: Array[Dictionary] = [], + latest_input_sequence: int = 0, input_interval_seconds: float = 0.0, + estimated_transit_seconds: float = -1.0, + audit_delta_seconds: float = 0.0, ) -> void: var parsed: Dictionary = _parse_network_snapshot(snapshot) if parsed.is_empty(): @@ -2258,92 +2277,143 @@ func apply_local_prediction_correction( _clear_local_network_jump_intent() if not _sitting_intent_pending: _set_sitting(bool(parsed["sitting"])) + var authoritative_position: Vector3 = parsed["position"] + var transit_seconds: float = resolve_local_prediction_transit_seconds( + acknowledged_input, + latest_input_sequence, + input_interval_seconds, + estimated_transit_seconds, + ) + if transit_seconds > 0.0: + authoritative_position += ( + (parsed["velocity"] as Vector3) * transit_seconds + ) + var error_offset: Vector3 = authoritative_position - global_position + var error_distance: float = error_offset.length() + _local_prediction_largest_error = maxf( + _local_prediction_largest_error, + error_distance, + ) + if error_distance <= LOCAL_PREDICTION_CORRECTION_THRESHOLD: + _reset_local_prediction_error() + return + if error_distance >= LOCAL_PREDICTION_SNAP_DISTANCE: + _clear_local_reconciliation_offsets() + global_position = authoritative_position + velocity = parsed["velocity"] + _local_prediction_hard_corrections += 1 + _reset_local_prediction_error() + return + var error_direction: Vector3 = error_offset.normalized() + if ( + not _local_prediction_error_direction.is_zero_approx() + and _local_prediction_error_direction.dot(error_direction) < 0.5 + ): + _reset_local_prediction_error() + _local_prediction_error_direction = error_direction + _local_prediction_error_audits += 1 + _local_prediction_error_seconds += clampf( + audit_delta_seconds, + 0.0, + LOCAL_PREDICTION_MAX_AUDIT_DELTA_SECONDS, + ) + if ( + _local_prediction_error_audits + < LOCAL_PREDICTION_MIN_CORRECTION_AUDITS + or _local_prediction_error_seconds + < LOCAL_PREDICTION_CORRECTION_DELAY_SECONDS + ): + return + var correction_weight: float = 1.0 - exp( + -LOCAL_PREDICTION_SOFT_CORRECTION_RATE + * clampf( + audit_delta_seconds, + 0.0, + LOCAL_PREDICTION_MAX_AUDIT_DELTA_SECONDS, + ) + ) + var correction: Vector3 = error_offset * correction_weight + if correction.length() > LOCAL_PREDICTION_MAX_SOFT_CORRECTION_STEP: + correction = ( + correction.normalized() + * LOCAL_PREDICTION_MAX_SOFT_CORRECTION_STEP + ) + _apply_camera_safe_local_correction(correction) + _local_prediction_soft_corrections += 1 + + +func _apply_camera_safe_local_correction(correction: Vector3) -> void: + if correction.is_zero_approx(): + return var previous_visual_position: Vector3 = _visuals.global_position + var previous_camera_position: Vector3 = _camera_yaw.global_position var base_visual_local_position: Vector3 = ( _visuals.position - _local_reconciliation_visual_offset ) - var previous_position: Vector3 = global_position - global_position = parsed["position"] - velocity = parsed["velocity"] - if input_interval_seconds > 0.0: - for input: Dictionary in pending_inputs: - _replay_network_movement_input(input, input_interval_seconds) - var correction_distance: float = previous_position.distance_to( - global_position + var base_camera_local_position: Vector3 = ( + _camera_yaw.position - _local_reconciliation_camera_offset + ) + global_position += correction + _visuals.global_position = previous_visual_position + _camera_yaw.global_position = previous_camera_position + _local_reconciliation_visual_offset = ( + _visuals.position - base_visual_local_position + ) + _local_reconciliation_camera_offset = ( + _camera_yaw.position - base_camera_local_position ) - if correction_distance <= LOCAL_PREDICTION_SNAP_DISTANCE: - _visuals.global_position = previous_visual_position - _local_reconciliation_visual_offset = ( - _visuals.position - base_visual_local_position - ) - else: - _local_reconciliation_visual_offset = Vector3.ZERO -func _replay_network_movement_input( - data: Dictionary, - delta: float, -) -> void: - var axis_value: Variant = data.get("axis", []) - if typeof(axis_value) != TYPE_ARRAY or axis_value.size() != 2: - return - if bool(data.get("sitting", false)) or _water_recovery_active: - velocity = Vector3.ZERO - return - var input_vector := Vector2( - float(axis_value[0]), - float(axis_value[1]), - ).limit_length(1.0) - var camera_basis := Basis( - Vector3.UP, - float(data.get("camera_yaw", 0.0)), - ) - var move_direction: Vector3 = ( - camera_basis.x * input_vector.x - + camera_basis.z * input_vector.y - ) - move_direction.y = 0.0 - move_direction = move_direction.normalized() - _network_sprint = bool(data.get("sprint", false)) - _network_sneak = bool(data.get("sneak", false)) - _network_slow_walk = bool(data.get("slow_walk", false)) - # Replay the speed authored by this exact pending input. Consulting the - # current InputMap here would make an older walk replay as a sprint (or the - # reverse) whenever the local button changed while a snapshot was in flight. - var replay_speed: float = walk_speed - if _network_sneak: - replay_speed = sneak_speed - elif _network_slow_walk: - replay_speed = slow_walk_speed - elif _network_sprint: - replay_speed = sprint_speed - if item_effects != null: - replay_speed *= item_effects.get_movement_multiplier() - var input_strength: float = minf(input_vector.length(), 1.0) - velocity.x = move_direction.x * replay_speed * input_strength - velocity.z = move_direction.z * replay_speed * input_strength - if not is_on_floor(): - var gravity_multiplier: float = ( - upward_gravity_multiplier - if velocity.y > 0.0 - else fall_gravity_multiplier - ) - velocity.y -= _gravity * gravity_multiplier * delta - elif bool(data.get("jump", false)): - velocity.y = jump_velocity - move_and_slide() +func _reset_local_prediction_error() -> void: + _local_prediction_error_seconds = 0.0 + _local_prediction_error_audits = 0 + _local_prediction_error_direction = Vector3.ZERO + + +func _clear_local_reconciliation_offsets() -> void: + if not _local_reconciliation_visual_offset.is_zero_approx(): + _visuals.position -= _local_reconciliation_visual_offset + if not _local_reconciliation_camera_offset.is_zero_approx(): + _camera_yaw.position -= _local_reconciliation_camera_offset + _local_reconciliation_visual_offset = Vector3.ZERO + _local_reconciliation_camera_offset = Vector3.ZERO func _update_local_reconciliation_visuals(delta: float) -> void: - if _local_reconciliation_visual_offset.is_zero_approx(): + if ( + _local_reconciliation_visual_offset.is_zero_approx() + and _local_reconciliation_camera_offset.is_zero_approx() + ): _local_reconciliation_visual_offset = Vector3.ZERO + _local_reconciliation_camera_offset = Vector3.ZERO return - var retained_ratio: float = exp(-14.0 * delta) - var retained_offset: Vector3 = ( + var retained_ratio: float = exp( + -LOCAL_RECONCILIATION_PRESENTATION_RECENTER_RATE * delta + ) + var retained_visual_offset: Vector3 = ( _local_reconciliation_visual_offset * retained_ratio ) - _visuals.position += retained_offset - _local_reconciliation_visual_offset - _local_reconciliation_visual_offset = retained_offset + var retained_camera_offset: Vector3 = ( + _local_reconciliation_camera_offset * retained_ratio + ) + _visuals.position += ( + retained_visual_offset - _local_reconciliation_visual_offset + ) + _camera_yaw.position += ( + retained_camera_offset - _local_reconciliation_camera_offset + ) + _local_reconciliation_visual_offset = retained_visual_offset + _local_reconciliation_camera_offset = retained_camera_offset + + +func get_local_prediction_metrics() -> Dictionary: + return { + "soft_corrections": _local_prediction_soft_corrections, + "hard_corrections": _local_prediction_hard_corrections, + "largest_error": _local_prediction_largest_error, + "out_of_bounds_audits": _local_prediction_error_audits, + "out_of_bounds_seconds": _local_prediction_error_seconds, + } static func resolve_network_input_stale_timeout_seconds( diff --git a/tests/movement_multiplayer_validation.gd b/tests/movement_multiplayer_validation.gd index f331534..c6a98e5 100644 --- a/tests/movement_multiplayer_validation.gd +++ b/tests/movement_multiplayer_validation.gd @@ -71,6 +71,7 @@ func _validate_compact_snapshot_encoding() -> void: 1, ) assert(NetworkSession.MOVEMENT_SNAPSHOT_BATCH_SIZE == 8) + assert(NetworkSession.OWNER_SNAPSHOT_DIVISOR == 3) var encoded_snapshots: Array = [] for _peer: int in NetworkSession.MOVEMENT_SNAPSHOT_BATCH_SIZE: encoded_snapshots.append( @@ -283,16 +284,72 @@ func _validate_remote_snapshot_smoothing(avatar: Player) -> void: avatar.set_local_control(true) avatar.global_position = Vector3(0.8, 0.0, 0.0) - var replay_input: Dictionary = _movement_input(2, false) - replay_input["axis"] = [1.0, 0.0] - var pending_inputs: Array[Dictionary] = [replay_input] avatar.apply_local_prediction_correction( moving_snapshot, - pending_inputs, + 2, 1.0 / 30.0, + 0.1, + 0.1, + ) + # Ordinary host/client disagreement is expected while a packet is in flight. + # It must never tug the locally controlled body or camera around. + assert(is_equal_approx(avatar.global_position.x, 0.8)) + assert( + int(avatar.get("_local_prediction_soft_corrections")) == 0 + ) + assert( + int(avatar.get("_local_prediction_hard_corrections")) == 0 + ) + + # A larger but still plausible mismatch must persist across multiple audits + # before a small correction is allowed. Preserve both visible character and + # camera positions while the collision body catches up. + avatar.global_position = Vector3(3.0, 0.0, 0.0) + var visual_position: Vector3 = avatar.get_node("Visuals").global_position + var camera_position: Vector3 = avatar.get_node("CameraYaw").global_position + var drift_snapshot: Dictionary = _network_snapshot( + Vector3.ZERO, + Vector3.ZERO, + 20, + ) + for _audit: int in 3: + avatar.apply_local_prediction_correction( + drift_snapshot, + 20, + 1.0 / 30.0, + 0.0, + 0.1, + ) + assert(is_equal_approx(avatar.global_position.x, 3.0)) + avatar.apply_local_prediction_correction( + drift_snapshot, + 20, + 1.0 / 30.0, + 0.0, + 0.1, + ) + assert(avatar.global_position.x < 3.0) + assert(avatar.global_position.x >= 2.85 - 0.001) + assert(avatar.get_node("Visuals").global_position == visual_position) + assert(avatar.get_node("CameraYaw").global_position == camera_position) + assert( + int(avatar.get("_local_prediction_soft_corrections")) == 1 + ) + + # Genuine divergence still recovers immediately, as do the separate reliable + # teleport and water-recovery paths used by gameplay transitions. + avatar.global_position = Vector3(10.0, 0.0, 0.0) + avatar.apply_local_prediction_correction( + drift_snapshot, + 20, + 1.0 / 30.0, + 0.0, + 0.1, + ) + assert(avatar.global_position == Vector3.ZERO) + assert( + int(avatar.get("_local_prediction_hard_corrections")) == 1 ) - assert(avatar.global_position.x < 0.8) - assert(avatar.global_position.x > 0.0) func _validate_reliable_jump_intent(avatar: Player) -> void: @@ -305,8 +362,10 @@ func _validate_reliable_jump_intent(avatar: Player) -> void: assert(int(avatar.get("_local_network_jump_intent_sequence")) == 20) avatar.apply_local_prediction_correction( _network_snapshot(avatar.global_position, Vector3.ZERO, 20), - [], + 20, 1.0 / 30.0, + 0.0, + 0.1, ) assert(not bool(avatar.capture_network_input(22)["jump"])) From 867fd431af0343760401c058f1b641bd299948ce Mon Sep 17 00:00:00 2001 From: Voyager Date: Sun, 23 Aug 2026 23:04:15 -0400 Subject: [PATCH 41/90] Polish title online and save slot interfaces --- project.godot | 2 +- ...ontroller_menu_accessibility_validation.gd | 106 ++++++++- ui/network/join_game_page.gd | 202 +++++++++++++++++- ui/network/join_game_page.tscn | 41 +++- ui/players_page.gd | 134 ++++++------ ui/save_slots_page.gd | 16 +- ui/save_slots_page.tscn | 22 +- ui/title_screen.gd | 26 ++- 8 files changed, 463 insertions(+), 86 deletions(-) diff --git a/project.godot b/project.godot index 3b69d42..8a49214 100644 --- a/project.godot +++ b/project.godot @@ -30,8 +30,8 @@ enabled=PackedStringArray("res://addons/netfishing_shoreline_baker/plugin.cfg") [gui] -theme/custom="res://ui/game_theme.tres" timers/tooltip_delay_sec=0.0 +theme/custom="res://ui/game_theme.tres" [input] diff --git a/tests/controller_menu_accessibility_validation.gd b/tests/controller_menu_accessibility_validation.gd index bf856d3..70d2095 100644 --- a/tests/controller_menu_accessibility_validation.gd +++ b/tests/controller_menu_accessibility_validation.gd @@ -130,7 +130,28 @@ func _validate_primary_menu_navigation() -> void: and not (title.get_node("%DeleteSaveButton") as Control).visible, "Legacy New/Delete title bubbles are still visible.", ) - _assert_directionally_reachable(title_controls.front(), title_controls) + _assert_neighbor( + title.get_node("%JoinGameButton") as Control, + &"focus_neighbor_right", + play_button, + ) + _assert_neighbor( + title.get_node("%SettingsButton") as Control, + &"focus_neighbor_left", + play_button, + ) + _assert_neighbor( + title.get_node("%CreditsButton") as Control, + &"focus_neighbor_right", + play_button, + ) + _assert_neighbor( + title.get_node("%QuitButton") as Control, + &"focus_neighbor_left", + play_button, + ) + for title_control: Control in title_controls: + _assert_directionally_reachable(title_control, title_controls) title.queue_free() await process_frame @@ -195,6 +216,13 @@ func _validate_save_slots_navigation() -> void: page.call("_select_page", &"saves", false) await process_frame var import_button := page.get_node("%ImportSlotButton") as Button + var actions := page.get_node("%Actions") as VBoxContainer + var secondary_actions := page.get_node("%SecondaryActions") as GridContainer + var play_slot := page.get_node("%PlaySlotButton") as Button + var rename_slot := page.get_node("%RenameSlotButton") as Button + var duplicate_slot := page.get_node("%DuplicateSlotButton") as Button + var export_slot := page.get_node("%ExportSlotButton") as Button + var delete_slot := page.get_node("%DeleteSlotButton") as Button _expect( saves_tab.find_valid_focus_neighbor(SIDE_BOTTOM) == import_button, "An empty Save Slots page does not lead from its tab to Import Save.", @@ -204,6 +232,29 @@ func _validate_save_slots_navigation() -> void: == page.get_node("%BackButton"), "An empty Save Slots page does not lead from Import Save to Back.", ) + _expect( + is_equal_approx(play_slot.size.x, actions.size.x), + "Save-slot Play does not span the full action width.", + ) + _expect( + secondary_actions.columns == 2 + and is_equal_approx(rename_slot.size.x, duplicate_slot.size.x) + and is_equal_approx(export_slot.size.x, delete_slot.size.x) + and is_equal_approx(rename_slot.position.y, duplicate_slot.position.y) + and is_equal_approx(export_slot.position.y, delete_slot.position.y) + and export_slot.position.y > rename_slot.position.y, + "Save-slot secondary actions are not arranged as a 2 by 2 grid.", + ) + var play_style := play_slot.get_theme_stylebox("normal") as StyleBoxFlat + _expect( + play_style != null and play_style.bg_color == UtilityPageStyle.GREEN, + "Save-slot Play does not use the green primary-action style.", + ) + _assert_neighbor(play_slot, &"focus_neighbor_bottom", rename_slot) + _assert_neighbor(rename_slot, &"focus_neighbor_right", duplicate_slot) + _assert_neighbor(rename_slot, &"focus_neighbor_bottom", export_slot) + _assert_neighbor(duplicate_slot, &"focus_neighbor_bottom", delete_slot) + _assert_neighbor(export_slot, &"focus_neighbor_right", delete_slot) page.queue_free() await process_frame @@ -222,6 +273,9 @@ func _validate_join_game_navigation() -> void: var address := page.get_node("%Address") as LineEdit var name_edit := page.get_node("%NameEdit") as LineEdit var server_list := page.get_node("%ServerList") as ItemList + var presence := page.get_node("%PresenceButton") as Button + var room_open := page.get_node("%RoomOpenButton") as Button + var room_listing := page.get_node("%RoomListingButton") as Button var refresh := page.get_node("%RefreshButton") as Button var join := page.get_node("%JoinButton") as Button var save := page.get_node("%SaveButton") as Button @@ -233,6 +287,7 @@ func _validate_join_game_navigation() -> void: var direct_content := page.get_node("%DirectContent") as Control var list_content := page.get_node("%ListContent") as Control var content_panel := page.get_node("%ContentPanel") as PanelContainer + var actions := page.get_node("%Actions") as HBoxContainer var modes: Array[Control] = [discover, friends, direct, saved, recent] var tab_overlap: float = ( discover.get_global_rect().end.y @@ -265,9 +320,36 @@ func _validate_join_game_navigation() -> void: _assert_neighbor(refresh, &"focus_neighbor_right", join) _assert_neighbor(join, &"focus_neighbor_bottom", back) _assert_neighbor(back, &"focus_neighbor_top", join) + _expect( + is_equal_approx( + join.get_global_rect().end.x, + actions.get_global_rect().end.x, + ), + "Discover Refresh and Join are not right-justified.", + ) var discover_controls: Array[Control] = modes.duplicate() discover_controls.append_array([server_list, refresh, join, back]) _assert_directionally_reachable(discover, discover_controls) + room_open.show() + room_listing.show() + _set_button_state(room_open, true) + _set_button_state(room_listing, true) + page.call("_configure_controller_navigation") + await process_frame + _assert_neighbor(room_open, &"focus_neighbor_right", room_listing) + _assert_neighbor(room_open, &"focus_neighbor_left", room_open) + _assert_neighbor(room_listing, &"focus_neighbor_left", room_open) + _assert_neighbor(room_listing, &"focus_neighbor_bottom", server_list) + var hosted_discover_controls: Array[Control] = modes.duplicate() + hosted_discover_controls.append_array([ + room_open, + room_listing, + server_list, + refresh, + join, + back, + ]) + _assert_directionally_reachable(discover, hosted_discover_controls) var rooms: Array[Dictionary] = [ { "room_id": "controller-default-room", @@ -293,16 +375,36 @@ func _validate_join_game_navigation() -> void: ) page.set("_mode", JoinGamePage.Mode.FRIENDS) + (page.get_node("%OnlineControls") as Control).hide() + presence.show() page.call("_configure_controller_navigation") await process_frame _assert_neighbor(friends, &"focus_neighbor_bottom", server_list) _assert_neighbor(server_list, &"focus_neighbor_top", friends) + _assert_neighbor(server_list, &"focus_neighbor_bottom", presence) + _assert_neighbor(presence, &"focus_neighbor_right", refresh) + _assert_neighbor(refresh, &"focus_neighbor_right", join) + _expect( + is_equal_approx( + presence.get_global_rect().position.x, + actions.get_global_rect().position.x, + ), + "Friend presence is not left-justified in the action row.", + ) + _expect( + is_equal_approx( + join.get_global_rect().end.x, + actions.get_global_rect().end.x, + ), + "Friends Refresh and Join are not right-justified.", + ) var friend_controls: Array[Control] = modes.duplicate() - friend_controls.append_array([server_list, refresh, join, back]) + friend_controls.append_array([server_list, presence, refresh, join, back]) _assert_directionally_reachable(friends, friend_controls) list_content.hide() direct_content.show() + presence.hide() address.show() address.editable = true server_list.hide() diff --git a/ui/network/join_game_page.gd b/ui/network/join_game_page.gd index 72bf19e..93ba793 100644 --- a/ui/network/join_game_page.gd +++ b/ui/network/join_game_page.gd @@ -32,6 +32,10 @@ const DIRECT_WORKFLOW_HELP: String = ( @onready var _direct_content: Control = %DirectContent @onready var _list_content: Control = %ListContent @onready var _list_title: Label = %ListTitle +@onready var _online_controls: Control = %OnlineControls +@onready var _presence_button: Button = %PresenceButton +@onready var _room_open_button: Button = %RoomOpenButton +@onready var _room_listing_button: Button = %RoomListingButton @onready var _details_panel: PanelContainer = %DetailsPanel @onready var _address: LineEdit = %Address @onready var _address_label: Label = %AddressLabel @@ -89,6 +93,9 @@ func _ready() -> void: _direct_button.pressed.connect(_set_mode.bind(Mode.DIRECT)) _saved_button.pressed.connect(_set_mode.bind(Mode.SAVED)) _recent_button.pressed.connect(_set_mode.bind(Mode.RECENT)) + _presence_button.pressed.connect(_on_presence_pressed) + _room_open_button.pressed.connect(_on_room_open_pressed) + _room_listing_button.pressed.connect(_on_room_listing_pressed) _refresh_button.pressed.connect(_request_discovery_refresh) _join_button.pressed.connect(_request_join) _save_button.pressed.connect(_on_save_pressed) @@ -238,6 +245,10 @@ func setup( _on_peer_count_changed ): _network_session.peer_count_changed.connect(_on_peer_count_changed) + if not _network_session.host_openness_changed.is_connected( + _on_host_openness_changed + ): + _network_session.host_openness_changed.connect(_on_host_openness_changed) if ( _saved_servers != null and not _saved_servers.data_changed.is_connected(_on_store_changed) @@ -278,6 +289,22 @@ func setup( _discovery.social_status_changed.connect( _on_social_status_changed ) + if not _discovery.host_settings_changed.is_connected( + _on_host_settings_changed + ): + _discovery.host_settings_changed.connect( + _on_host_settings_changed + ) + if not _discovery.host_status_changed.is_connected( + _on_host_status_changed + ): + _discovery.host_status_changed.connect(_on_host_status_changed) + if not _discovery.presence_sharing_changed.is_connected( + _on_presence_sharing_changed + ): + _discovery.presence_sharing_changed.connect( + _on_presence_sharing_changed + ) _friend_entries = _discovery.get_friend_presence() _refresh() @@ -792,6 +819,7 @@ func _refresh() -> void: _direct_content.visible = direct_content_visible _list_content.visible = list_content_visible _list_title.text = _current_list_title() + _refresh_online_controls(discovery_mode, friends_mode, connecting) _address.visible = direct or _name_entry_active _address_label.visible = _address.visible _address_helper.visible = _address.visible @@ -916,6 +944,66 @@ func _current_list_title() -> String: return "public rooms" +func _refresh_online_controls( + discovery_mode: bool, + friends_mode: bool, + connecting: bool, +) -> void: + _online_controls.visible = discovery_mode and not _name_entry_active + _presence_button.visible = friends_mode and not _name_entry_active + var presence_enabled: bool = ( + _discovery != null and _discovery.is_presence_sharing() + ) + _presence_button.text = ( + "friends: online" if presence_enabled else "friends: offline" + ) + _presence_button.disabled = ( + connecting or _discovery == null or not _discovery.is_configured() + ) + _presence_button.tooltip_text = ( + "Stay visible to friends until you switch this off. " + + "Your current room is shared only while it is publicly joinable." + if presence_enabled + else "Show as online to friends until you switch this off." + ) + if not _online_controls.visible: + return + var local_host: bool = _network_session.is_host() + _room_open_button.visible = local_host + _room_listing_button.visible = local_host + if not local_host: + return + var room_open: bool = _network_session.is_open_host() + var room_listed: bool = ( + _discovery != null and _discovery.is_discoverable() + ) + _room_open_button.text = "room: open" if room_open else "room: closed" + _room_open_button.disabled = connecting + _room_open_button.tooltip_text = ( + "Close this room to new connections." + if room_open + else "Open this room so other players can connect." + ) + _room_listing_button.text = ( + "listing: on" if room_listed else "listing: off" + ) + _room_listing_button.disabled = ( + connecting + or _discovery == null + or not _discovery.is_configured() + or not room_open + ) + _room_listing_button.tooltip_text = ( + "Remove this room from the public room browser." + if room_listed + else "List this open room in the public room browser." + if room_open and _discovery != null and _discovery.is_configured() + else "Open the room before enabling its public listing." + if _discovery != null and _discovery.is_configured() + else "Room discovery is not configured in this build." + ) + + func _configure_controller_navigation() -> void: var mode_buttons: Array[Control] = [ _discover_button, @@ -924,12 +1012,24 @@ func _configure_controller_navigation() -> void: _saved_button, _recent_button, ] + var online_controls: Array[Control] = [] + for control: Control in [ + _room_open_button, + _room_listing_button, + ]: + if _controller_focus_eligible(control): + online_controls.append(control) var content_controls: Array[Control] = [] - for control: Control in [_address, _name_edit, _server_list]: + for control: Control in [ + _address, + _name_edit, + _server_list, + ]: if _controller_focus_eligible(control): content_controls.append(control) var action_controls: Array[Control] = [] for control: Control in [ + _presence_button, _refresh_button, _join_button, _save_button, @@ -942,12 +1042,16 @@ func _configure_controller_navigation() -> void: action_controls.append(control) var all_controls: Array[Control] = [] all_controls.append_array(mode_buttons) + all_controls.append_array(online_controls) all_controls.append_array(content_controls) all_controls.append_array(action_controls) all_controls.append(_back_button) for control: Control in all_controls: control.focus_mode = Control.FOCUS_ALL for control: Control in [ + _presence_button, + _room_open_button, + _room_listing_button, _address, _name_edit, _server_list, @@ -963,7 +1067,9 @@ func _configure_controller_navigation() -> void: control.focus_mode = Control.FOCUS_NONE _back_button.focus_mode = Control.FOCUS_ALL var primary_content: Control = ( - content_controls.front() + online_controls.front() + if not online_controls.is_empty() + else content_controls.front() if not content_controls.is_empty() else action_controls.front() if not action_controls.is_empty() @@ -978,11 +1084,29 @@ func _configure_controller_navigation() -> void: mode_button, primary_content, ) + for index: int in online_controls.size(): + var online_control: Control = online_controls[index] + var below: Control = ( + content_controls.front() + if not content_controls.is_empty() + else action_controls.front() + if not action_controls.is_empty() + else _back_button + ) + _set_controller_neighbors( + online_control, + online_controls[maxi(index - 1, 0)], + online_controls[mini(index + 1, online_controls.size() - 1)], + mode_buttons[int(_mode)], + below, + ) for index: int in content_controls.size(): var content: Control = content_controls[index] var above: Control = ( content_controls[index - 1] if index > 0 + else online_controls.front() + if not online_controls.is_empty() else mode_buttons[int(_mode)] ) var below: Control = ( @@ -1001,6 +1125,8 @@ func _configure_controller_navigation() -> void: action_controls[mini(index + 1, action_controls.size() - 1)], content_controls.back() if not content_controls.is_empty() + else online_controls.back() + if not online_controls.is_empty() else mode_buttons[int(_mode)], _back_button, ) @@ -1009,6 +1135,8 @@ func _configure_controller_navigation() -> void: if not action_controls.is_empty() else content_controls.back() if not content_controls.is_empty() + else online_controls.back() + if not online_controls.is_empty() else mode_buttons[int(_mode)] ) _set_controller_neighbors( @@ -1270,6 +1398,76 @@ func _on_social_status_changed(message: String, is_error: bool) -> void: _set_status(message, is_error) +func _on_presence_pressed() -> void: + if _discovery == null: + _set_status("Friend presence is not available.", true) + return + var enabling: bool = not _discovery.is_presence_sharing() + if not _discovery.set_presence_sharing(enabling): + return + _set_status( + "You will remain online to friends until you switch this off." + if enabling + else "You now appear offline to friends." + ) + _refresh() + + +func _on_room_open_pressed() -> void: + if _network_session == null or not _network_session.is_host(): + return + var opening: bool = not _network_session.is_open_host() + if not _network_session.set_host_open(opening): + _set_status("The room could not be updated.", true) + return + _set_status( + "The room is open to new connections." + if opening + else "The room is closed to new connections." + ) + _refresh() + + +func _on_room_listing_pressed() -> void: + if _discovery == null: + return + var enabling: bool = not _discovery.is_discoverable() + if not _discovery.set_discoverable(enabling): + return + _set_status( + "The room is being listed publicly." + if enabling + else "The room is no longer listed publicly." + ) + _refresh() + + +func _on_host_openness_changed(_is_open: bool) -> void: + _refresh() + + +func _on_host_settings_changed( + _room_name: String, + _discoverable: bool, +) -> void: + _refresh() + + +func _on_host_status_changed(message: String, is_error: bool) -> void: + if ( + _mode == Mode.DISCOVER + and is_visible_in_tree() + and _network_session != null + and _network_session.is_host() + ): + _set_status(message, is_error) + _refresh() + + +func _on_presence_sharing_changed(_enabled: bool) -> void: + _refresh() + + func _format_result_code(result_code: String) -> String: match result_code.strip_edges().to_upper(): "SUCCESS": diff --git a/ui/network/join_game_page.tscn b/ui/network/join_game_page.tscn index 54f354d..9374a85 100644 --- a/ui/network/join_game_page.tscn +++ b/ui/network/join_game_page.tscn @@ -138,9 +138,35 @@ layout_mode = 2 theme_override_font_sizes/font_size = 20 text = "public rooms" +[node name="OnlineControls" type="HBoxContainer" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/PageStack/ListContent"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 42) +layout_mode = 2 +theme_override_constants/separation = 10 + +[node name="OnlineControlsSpacer" type="Control" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/PageStack/ListContent/OnlineControls"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="RoomOpenButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/PageStack/ListContent/OnlineControls"] +unique_name_in_owner = true +visible = false +custom_minimum_size = Vector2(160, 42) +layout_mode = 2 +focus_mode = 2 +text = "room: closed" + +[node name="RoomListingButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/PageStack/ListContent/OnlineControls"] +unique_name_in_owner = true +visible = false +custom_minimum_size = Vector2(180, 42) +layout_mode = 2 +focus_mode = 2 +text = "listing: off" + [node name="ServerList" type="ItemList" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/PageStack/ListContent"] unique_name_in_owner = true -custom_minimum_size = Vector2(0, 180) +custom_minimum_size = Vector2(0, 140) layout_mode = 2 size_flags_vertical = 3 theme_override_font_sizes/font_size = 17 @@ -235,7 +261,18 @@ unique_name_in_owner = true custom_minimum_size = Vector2(0, 46) layout_mode = 2 theme_override_constants/separation = 10 -alignment = 1 + +[node name="PresenceButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/Actions"] +unique_name_in_owner = true +visible = false +custom_minimum_size = Vector2(210, 46) +layout_mode = 2 +focus_mode = 2 +text = "friends: offline" + +[node name="ActionsSpacer" type="Control" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/Actions"] +layout_mode = 2 +size_flags_horizontal = 3 [node name="RefreshButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/Actions"] unique_name_in_owner = true diff --git a/ui/players_page.gd b/ui/players_page.gd index 27c142c..68f25c6 100644 --- a/ui/players_page.gd +++ b/ui/players_page.gd @@ -44,6 +44,7 @@ var _online_state_label: Label var _discoverable_toggle: Button var _discoverable_state_label: Label var _host_discovery_status: Label +var _reset_artwork_button: Button var _current_tab := 0 var _active: bool = false var _interactive: bool = false @@ -295,6 +296,9 @@ func _build_host_settings(root: VBoxContainer) -> void: "font_color", UtilityPageStyle.OCEAN_TEXT_SECONDARY ) access_row.add_child(_host_discovery_status) + _reset_artwork_button = Button.new() + _configure_session_artwork_reset_button(_reset_artwork_button) + access_row.add_child(_reset_artwork_button) func _build_host_toggle(label_text: String, row: HBoxContainer) -> Button: @@ -389,7 +393,10 @@ func _refresh_host_settings() -> void: return var host_visible: bool = _service.is_local_host() and _current_tab == 0 _host_settings_panel.visible = host_visible - if not host_visible or _discovery == null: + if not host_visible: + return + _update_session_artwork_reset_button(_reset_artwork_button) + if _discovery == null: return if not _room_name_edit.has_focus(): _room_name_edit.text = _discovery.get_room_name() @@ -481,7 +488,9 @@ func _on_host_status_changed(message: String, is_error: bool) -> void: "Open the game before enabling discovery.", ] _host_discovery_status.text = "" if tooltip_only else message - _host_discovery_status.visible = not _host_discovery_status.text.is_empty() + # Keep this expanding label in the row even when there is no status text so + # the session reset action remains pinned to the far-right edge. + _host_discovery_status.visible = true _host_discovery_status.add_theme_color_override( "font_color", UtilityPageStyle.OCEAN_DANGER @@ -491,7 +500,7 @@ func _on_host_status_changed(message: String, is_error: bool) -> void: func _build_active_rows() -> void: - if _service.is_local_moderator(): + if _service.is_local_moderator() and not _service.is_local_host(): _build_session_artwork_controls() var entries := _service.get_entries() if entries.is_empty(): @@ -502,35 +511,29 @@ func _build_active_rows() -> void: func _build_active_player_row(entry: PlayerListEntry) -> void: - var row := _make_active_player_row() - var identity_row := HBoxContainer.new() - identity_row.add_theme_constant_override("separation", 8) - row.add_child(identity_row) - + var row := _make_row() var identity := Label.new() identity.clip_text = true identity.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS identity.size_flags_horizontal = Control.SIZE_EXPAND_FILL - var markers: Array[String] = [] - if entry.is_host: - markers.append("host") + identity.text = entry.display_name + var roles: Array[String] = ["host" if entry.is_host else "player"] if entry.is_operator: - markers.append("operator") + roles.append("operator") if entry.is_local_player: - markers.append("You") - identity.text = "%s%s · %s\n%s" % [ - entry.display_name, - " [%s]" % ", ".join(markers) if not markers.is_empty() else "", - entry.compact_fingerprint, + roles.append("you") + _configure_identity_tooltip( + identity, + "identity fingerprint:\n%s\nrole: %s\nidentity status: %s" % [ + NetworkIdentityCrypto.format_fingerprint(entry.full_fingerprint), + ", ".join(roles), entry.continuity_state, - ] - identity.tooltip_text = "Full identity fingerprint:\n%s" % ( - entry.full_fingerprint + ], ) identity.add_theme_color_override( "font_color", UtilityPageStyle.OCEAN_TEXT_PRIMARY ) - identity_row.add_child(identity) + row.add_child(identity) var ping := Label.new() ping.custom_minimum_size.x = 72 ping.text = ( @@ -542,7 +545,7 @@ func _build_active_player_row(entry: PlayerListEntry) -> void: "font_color", UtilityPageStyle.OCEAN_TEXT_SECONDARY ) ping.horizontal_alignment = HORIZONTAL_ALIGNMENT_RIGHT - identity_row.add_child(ping) + row.add_child(ping) var actions := HBoxContainer.new() actions.alignment = BoxContainer.ALIGNMENT_END @@ -634,31 +637,38 @@ func _configure_moderation_button( func _build_session_artwork_controls() -> void: - var counts: Vector2i = _service.get_session_artwork_counts() var row := _make_row() - var label := Label.new() - label.size_flags_horizontal = Control.SIZE_EXPAND_FILL - label.clip_text = true - label.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS - label.text = "session artwork · %d layers · %d painted pixels" % [ - counts.x, counts.y, - ] - label.add_theme_color_override( - "font_color", UtilityPageStyle.OCEAN_TEXT_PRIMARY - ) - row.add_child(label) + var spacer := Control.new() + spacer.size_flags_horizontal = Control.SIZE_EXPAND_FILL + spacer.mouse_filter = Control.MOUSE_FILTER_IGNORE + row.add_child(spacer) var reset := Button.new() - reset.text = "reset paint" - reset.disabled = counts.x == 0 - reset.tooltip_text = "Clears all shared artwork from this session." - reset.pressed.connect(func() -> void: + _configure_session_artwork_reset_button(reset) + _update_session_artwork_reset_button(reset) + row.add_child(reset) + + +func _configure_session_artwork_reset_button(button: Button) -> void: + button.text = "reset paint" + button.tooltip_text = "Clears all shared artwork from this session." + button.pressed.connect(func() -> void: _confirm( "Clear all shared paint from this session?\nThis cannot be undone.", _service.reset_session_artwork, ) ) - UtilityPageStyle.apply_compact_ocean_button(reset) - row.add_child(reset) + UtilityPageStyle.apply_compact_ocean_button(button) + + +func _update_session_artwork_reset_button(button: Button) -> void: + if button == null or _service == null: + return + button.disabled = _service.get_session_artwork_counts().x == 0 + + +func _configure_identity_tooltip(label: Label, text: String) -> void: + label.mouse_filter = Control.MOUSE_FILTER_STOP + label.tooltip_text = text func _build_relationship_rows() -> void: @@ -673,12 +683,16 @@ func _build_relationship_rows() -> void: label.clip_text = true label.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS var fingerprint := str(record["fingerprint"]) - label.text = "%s · %s %s" % [ + label.text = "%s %s" % [ str(record.get("last_known_display_name", "Player")), - NetworkIdentityCrypto.compact_suffix(fingerprint), "Blocked" if bool(record.get("blocked", false)) else "Muted", ] - label.tooltip_text = NetworkIdentityCrypto.format_fingerprint(fingerprint) + _configure_identity_tooltip( + label, + "identity fingerprint:\n%s" % ( + NetworkIdentityCrypto.format_fingerprint(fingerprint) + ), + ) label.add_theme_color_override( "font_color", UtilityPageStyle.OCEAN_TEXT_PRIMARY ) @@ -724,16 +738,20 @@ func _build_friend_rows() -> void: label.size_flags_horizontal = Control.SIZE_EXPAND_FILL label.clip_text = true label.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS - label.text = "%s · %s %s" % [ + label.text = "%s %s" % [ display_name, - NetworkIdentityCrypto.compact_suffix(fingerprint), "playing in %s" % str(room.get("room_name", "a public room")) if not room.is_empty() else "Online" if bool(friend.get("online", false)) else "Offline", ] - label.tooltip_text = NetworkIdentityCrypto.format_fingerprint(fingerprint) + _configure_identity_tooltip( + label, + "identity fingerprint:\n%s" % ( + NetworkIdentityCrypto.format_fingerprint(fingerprint) + ), + ) label.add_theme_color_override( "font_color", UtilityPageStyle.OCEAN_TEXT_PRIMARY ) @@ -811,12 +829,16 @@ func _build_ban_rows() -> void: label.size_flags_horizontal = Control.SIZE_EXPAND_FILL label.clip_text = true label.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS - label.text = "%s · %s banned %s" % [ + label.text = "%s banned %s" % [ str(record.get("last_known_display_name", "Player")), - NetworkIdentityCrypto.compact_suffix(fingerprint), Time.get_date_string_from_unix_time(int(record.get("banned_unix", 0))), ] - label.tooltip_text = NetworkIdentityCrypto.format_fingerprint(fingerprint) + _configure_identity_tooltip( + label, + "identity fingerprint:\n%s" % ( + NetworkIdentityCrypto.format_fingerprint(fingerprint) + ), + ) label.add_theme_color_override( "font_color", UtilityPageStyle.OCEAN_TEXT_PRIMARY ) @@ -841,20 +863,6 @@ func _make_row() -> HBoxContainer: return row -func _make_active_player_row() -> VBoxContainer: - var panel := PanelContainer.new() - panel.clip_contents = true - panel.add_theme_stylebox_override( - "panel", UtilityPageStyle.row_style(false) - ) - _list.add_child(panel) - var row := VBoxContainer.new() - row.custom_minimum_size.y = 88 - row.add_theme_constant_override("separation", 4) - panel.add_child(row) - return row - - func _add_empty(text: String) -> void: var label := Label.new() label.text = text diff --git a/ui/save_slots_page.gd b/ui/save_slots_page.gd index e50c8ee..ba142f7 100644 --- a/ui/save_slots_page.gd +++ b/ui/save_slots_page.gd @@ -124,6 +124,12 @@ func _configure_style() -> void: if node is OrganizerTab: continue UtilityPageStyle.apply_ocean_button(node as BaseButton) + _play_button.add_theme_stylebox_override( + "normal", + UtilityPageStyle.ocean_button_style( + UtilityPageStyle.GREEN, + ), + ) _delete_button.add_theme_stylebox_override( "normal", UtilityPageStyle.ocean_button_style( @@ -639,11 +645,11 @@ func _configure_controller_focus() -> void: _set_neighbors(button, button, _slot_name_edit, top, bottom) _set_neighbors(_import_button, _import_button, _slot_name_edit, last, _back_button) _set_neighbors(_slot_name_edit, first, _slot_name_edit, _saves_tab, _play_button) - _set_neighbors(_play_button, _import_button, _rename_button, _slot_name_edit, _duplicate_button) - _set_neighbors(_rename_button, _play_button, _rename_button, _slot_name_edit, _export_button) - _set_neighbors(_duplicate_button, _import_button, _export_button, _play_button, _delete_button) - _set_neighbors(_export_button, _duplicate_button, _export_button, _rename_button, _delete_button) - _set_neighbors(_delete_button, _import_button, _delete_button, _duplicate_button, _back_button) + _set_neighbors(_play_button, _import_button, _play_button, _slot_name_edit, _rename_button) + _set_neighbors(_rename_button, _import_button, _duplicate_button, _play_button, _export_button) + _set_neighbors(_duplicate_button, _rename_button, _duplicate_button, _play_button, _delete_button) + _set_neighbors(_export_button, _import_button, _delete_button, _rename_button, _back_button) + _set_neighbors(_delete_button, _export_button, _delete_button, _duplicate_button, _back_button) _set_neighbors(_back_button, _back_button, _back_button, _import_button, _back_button) return _saves_tab.focus_neighbor_bottom = _saves_tab.get_path_to(_new_slot_name) diff --git a/ui/save_slots_page.tscn b/ui/save_slots_page.tscn index 5f47c8e..87d5f93 100644 --- a/ui/save_slots_page.tscn +++ b/ui/save_slots_page.tscn @@ -165,11 +165,10 @@ scroll_active = false autowrap_mode = 2 vertical_alignment = 1 -[node name="Actions" type="GridContainer" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/SavesPage/DetailsColumn"] +[node name="Actions" type="VBoxContainer" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/SavesPage/DetailsColumn"] +unique_name_in_owner = true layout_mode = 2 -theme_override_constants/h_separation = 10 -theme_override_constants/v_separation = 10 -columns = 2 +theme_override_constants/separation = 10 [node name="PlaySlotButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/SavesPage/DetailsColumn/Actions"] unique_name_in_owner = true @@ -179,7 +178,14 @@ size_flags_horizontal = 3 focus_mode = 2 text = "play" -[node name="RenameSlotButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/SavesPage/DetailsColumn/Actions"] +[node name="SecondaryActions" type="GridContainer" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/SavesPage/DetailsColumn/Actions"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_constants/h_separation = 10 +theme_override_constants/v_separation = 10 +columns = 2 + +[node name="RenameSlotButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/SavesPage/DetailsColumn/Actions/SecondaryActions"] unique_name_in_owner = true custom_minimum_size = Vector2(0, 46) layout_mode = 2 @@ -187,7 +193,7 @@ size_flags_horizontal = 3 focus_mode = 2 text = "rename" -[node name="DuplicateSlotButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/SavesPage/DetailsColumn/Actions"] +[node name="DuplicateSlotButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/SavesPage/DetailsColumn/Actions/SecondaryActions"] unique_name_in_owner = true custom_minimum_size = Vector2(0, 46) layout_mode = 2 @@ -195,7 +201,7 @@ size_flags_horizontal = 3 focus_mode = 2 text = "duplicate" -[node name="ExportSlotButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/SavesPage/DetailsColumn/Actions"] +[node name="ExportSlotButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/SavesPage/DetailsColumn/Actions/SecondaryActions"] unique_name_in_owner = true custom_minimum_size = Vector2(0, 46) layout_mode = 2 @@ -203,7 +209,7 @@ size_flags_horizontal = 3 focus_mode = 2 text = "export" -[node name="DeleteSlotButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/SavesPage/DetailsColumn/Actions"] +[node name="DeleteSlotButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/PageStack/SavesPage/DetailsColumn/Actions/SecondaryActions"] unique_name_in_owner = true custom_minimum_size = Vector2(0, 46) layout_mode = 2 diff --git a/ui/title_screen.gd b/ui/title_screen.gd index 6274f7d..07a61fd 100644 --- a/ui/title_screen.gd +++ b/ui/title_screen.gd @@ -464,6 +464,7 @@ func _update_title_layout() -> void: Vector2(field_width, field_height), compact_layout ) + _configure_title_controller_navigation() if not _title_settings_transition_active: call_deferred("_capture_title_bubble_rest_position") if _awaiting_start_input and not _title_entry_transition_active: @@ -1483,9 +1484,28 @@ func _set_title_bubbles_interactive(interactive: bool) -> void: else Control.MOUSE_FILTER_IGNORE ) if interactive: - ControllerFocusNavigationType.configure_spatial_neighbors( - _get_title_buttons() - ) + _configure_title_controller_navigation() + + +func _configure_title_controller_navigation() -> void: + ControllerFocusNavigationType.configure_spatial_neighbors( + _get_title_buttons() + ) + # The large Play bubble overlaps the inward edge of every surrounding + # bubble. Center-only spatial scoring otherwise links the four outside + # bubbles into a ring with no route back into Play. + _join_game_button.focus_neighbor_right = ( + _join_game_button.get_path_to(_play_button) + ) + _settings_button.focus_neighbor_left = ( + _settings_button.get_path_to(_play_button) + ) + _credits_button.focus_neighbor_right = ( + _credits_button.get_path_to(_play_button) + ) + _quit_button.focus_neighbor_left = ( + _quit_button.get_path_to(_play_button) + ) func _capture_title_bubble_rest_position() -> void: From 219dbb5abcf186be7e7709ab35da9ce1c3380468 Mon Sep 17 00:00:00 2001 From: Voyager Date: Sun, 23 Aug 2026 23:11:30 -0400 Subject: [PATCH 42/90] chore: prepare v0.17.1-alpha release --- docs/README-PLAYTEST.txt | 4 ++-- export_presets.cfg | 26 +++++++++++++------------- project.godot | 2 +- scripts/build_playtest.sh | 6 +++--- ui/title_screen.tscn | 2 +- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/README-PLAYTEST.txt b/docs/README-PLAYTEST.txt index dbaa032..7b7e285 100644 --- a/docs/README-PLAYTEST.txt +++ b/docs/README-PLAYTEST.txt @@ -1,6 +1,6 @@ NETfishing -v0.17.0-alpha -Alpha 0.17.0 +v0.17.1-alpha +Alpha 0.17.1 Thank you for trying this early private playtest. diff --git a/export_presets.cfg b/export_presets.cfg index c484b38..cc5d56a 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -9,7 +9,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.17.0-alpha/windows-x86_64/NETfishing.exe" +export_path="builds/v0.17.1-alpha/windows-x86_64/NETfishing.exe" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -35,11 +35,11 @@ application/modify_resources=true application/icon="res://art/exported/system_icons/netfishing.ico" application/console_wrapper_icon="" application/icon_interpolation=4 -application/file_version="0.17.0.0" -application/product_version="0.17.0.0" +application/file_version="0.17.1.0" +application/product_version="0.17.1.0" application/company_name="Woofmeow" application/product_name="NETfishing" -application/file_description="NETfishing v0.17.0-alpha" +application/file_description="NETfishing v0.17.1-alpha" application/copyright="Copyright © 2026 Woofmeow" application/trademarks="NETfishing and Woofmeow branding is reserved; see TRADEMARKS.md" application/export_angle=0 @@ -62,7 +62,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.17.0-alpha/linux-arm64/NETfishing.arm64" +export_path="builds/v0.17.1-alpha/linux-arm64/NETfishing.arm64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -92,7 +92,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.17.0-alpha/macos/NETfishing.zip" +export_path="builds/v0.17.1-alpha/macos/NETfishing.zip" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -108,8 +108,8 @@ custom_template/release="" application/bundle_identifier="io.woofmeow.netfishing" application/icon="res://art/exported/system_icons/netfishing_1024.png" application/icon_interpolation=0 -application/short_version="0.17.0" -application/version="0.17.0" +application/short_version="0.17.1" +application/version="0.17.1" application/architecture="universal" codesign/enable=false notarization/enable=false @@ -125,7 +125,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*,tests/*" -export_path="builds/v0.17.0-alpha/server-linux-x86_64/NETfishingServer.x86_64" +export_path="builds/v0.17.1-alpha/server-linux-x86_64/NETfishingServer.x86_64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -155,7 +155,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.17.0-alpha/android/NETfishing.apk" +export_path="builds/v0.17.1-alpha/android/NETfishing.apk" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -176,8 +176,8 @@ architectures/armeabi-v7a=false architectures/arm64-v8a=true architectures/x86=false architectures/x86_64=false -version/code=170000 -version/name="v0.17.0-alpha" +version/code=170100 +version/name="v0.17.1-alpha" package/unique_name="io.woofmeow.netfishing" package/name="NETfishing" package/signed=true @@ -214,7 +214,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.17.0-alpha/linux-x86_64/NETfishing.x86_64" +export_path="builds/v0.17.1-alpha/linux-x86_64/NETfishing.x86_64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" diff --git a/project.godot b/project.godot index 8a49214..c0a7537 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="NETFISHING" -config/version="0.17.0-alpha" +config/version="0.17.1-alpha" run/main_scene="res://main/main.tscn" config/features=PackedStringArray("4.7", "GL Compatibility") config/icon="res://art/exported/system_icons/netfishing_256.png" diff --git a/scripts/build_playtest.sh b/scripts/build_playtest.sh index 74a0c8c..ff0628c 100755 --- a/scripts/build_playtest.sh +++ b/scripts/build_playtest.sh @@ -4,14 +4,14 @@ 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.17.0-alpha" +readonly BUILD_ROOT="${PROJECT_ROOT}/builds/v0.17.1-alpha" readonly WINDOWS_DIR="${BUILD_ROOT}/windows-x86_64" readonly LINUX_DIR="${BUILD_ROOT}/linux-x86_64" readonly README_SOURCE="${PROJECT_ROOT}/docs/README-PLAYTEST.txt" readonly SOURCE_COMMIT="$(git -C "${PROJECT_ROOT}" rev-parse HEAD)" readonly SOURCE_URL="https://forge.makearmy.io/woofmeow/netfishing" -readonly WINDOWS_ZIP="${BUILD_ROOT}/NETfishing-v0.17.0-alpha-windows-x86_64.zip" -readonly LINUX_ZIP="${BUILD_ROOT}/NETfishing-v0.17.0-alpha-linux-x86_64.zip" +readonly WINDOWS_ZIP="${BUILD_ROOT}/NETfishing-v0.17.1-alpha-windows-x86_64.zip" +readonly LINUX_ZIP="${BUILD_ROOT}/NETfishing-v0.17.1-alpha-linux-x86_64.zip" readonly GODOT_BIN="${GODOT_BIN:-godot}" if [[ ! -f "${PROJECT_ROOT}/project.godot" ]]; then diff --git a/ui/title_screen.tscn b/ui/title_screen.tscn index 03275f3..c69f87b 100644 --- a/ui/title_screen.tscn +++ b/ui/title_screen.tscn @@ -227,7 +227,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.17.0-alpha" +text = "v0.17.1-alpha" horizontal_alignment = 1 [node name="Spacer" type="Control" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent"] From a1ea341e8c8ac952e026df32d17fa4fd44f8646f Mon Sep 17 00:00:00 2001 From: Voyager Date: Mon, 24 Aug 2026 10:36:16 -0400 Subject: [PATCH 43/90] Fix standby lure chat input ownership --- fishing/fishing_spot.gd | 7 +++++-- tests/art_tools_validation.gd | 11 +++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/fishing/fishing_spot.gd b/fishing/fishing_spot.gd index 0fdc5f7..2559af5 100644 --- a/fishing/fishing_spot.gd +++ b/fishing/fishing_spot.gd @@ -781,7 +781,10 @@ func confirm_pending_bite() -> void: func _set_bite_confirmation_pending(is_pending: bool) -> void: if is_pending: - _set_fishing_input_priority(true) + # The Standby deliberately pauses before the fight begins. Keep chat and + # menus available during that pause; fishing only owns input once the + # player confirms the bite and enters the actual minigame. + _set_fishing_input_priority(false) if _bite_confirmation_pending == is_pending: if not is_pending: _bite_confirmation_requested = false @@ -1142,7 +1145,6 @@ func _activate_bite(confirmation_override: bool = false) -> void: ): _cancel_attempt() return - _set_fishing_input_priority(true) if ( not confirmation_override and _active_lure_has_effect(&"deferred_fight") @@ -1155,6 +1157,7 @@ func _activate_bite(confirmation_override: bool = false) -> void: _presentation.show_bite() return + _set_fishing_input_priority(true) _set_bite_confirmation_pending(false) _pending_catch = _fish_selector.create_catch(_selected_fish) if _pending_catch == null or not _pending_catch.is_valid(): diff --git a/tests/art_tools_validation.gd b/tests/art_tools_validation.gd index 3bc4633..3b9d6a3 100644 --- a/tests/art_tools_validation.gd +++ b/tests/art_tools_validation.gd @@ -305,6 +305,17 @@ func _run() -> void: assert(on_screen_keyboard.is_open()) on_screen_keyboard.call("_close_keyboard", true) assert(typed_chat_entry.has_focus()) + + # A deferred Standby bite has not started the fishing minigame yet. It must + # release fishing's input ownership so chat remains available until the + # player confirms the bite. + chat_fishing_spot.call("_set_fishing_input_priority", true) + chat_fishing_spot.call("_set_bite_confirmation_pending", true) + for _frame: int in 4: + await process_frame + assert(not chat_fishing_spot.is_fishing_input_priority_active()) + assert(chat_ui.is_open()) + chat_fishing_spot.call("_set_bite_confirmation_pending", false) var left_bumper := InputEventJoypadButton.new() left_bumper.button_index = JOY_BUTTON_LEFT_SHOULDER left_bumper.pressed = true From c65176b99fc4baad321acc476920e65c629efc18 Mon Sep 17 00:00:00 2001 From: Voyager Date: Mon, 24 Aug 2026 10:36:17 -0400 Subject: [PATCH 44/90] Fix airborne sitting and remote animation playback --- network/network_session.gd | 4 +- player/player.gd | 62 +++++++++++++++++++++--- tests/movement_multiplayer_validation.gd | 48 ++++++++++++++++++ 3 files changed, 105 insertions(+), 9 deletions(-) diff --git a/network/network_session.gd b/network/network_session.gd index b889678..2711976 100644 --- a/network/network_session.gd +++ b/network/network_session.gd @@ -2069,13 +2069,13 @@ func _maybe_send_local_animation_action() -> void: str(action["id"]), int(action["sequence"]), bool(action.get("paused", false)), - avatar.get_network_sitting_state(), + avatar.get_network_sitting_intent(), ] if signature == _last_local_animation_action_signature: return var encoded: Array = _encode_movement_animation_action( action, - avatar.get_network_sitting_state(), + avatar.get_network_sitting_intent(), ) if encoded.is_empty(): return diff --git a/player/player.gd b/player/player.gd index 860caf3..5ae4cac 100644 --- a/player/player.gd +++ b/player/player.gd @@ -1036,7 +1036,13 @@ func _simulate_movement_physics(delta: float) -> void: or (_network_authoritative_simulation and _network_jump_pending) ) ) - if _sit_after_landing and is_on_floor(): + # Sitting deliberately stops movement processing, so never allow a stale + # grounded flag or a reconciled network state to leave an airborne avatar in + # that early-return path. Preserve the intent and sit once landing is real. + if _sitting and not _can_begin_sitting(): + _sit_after_landing = true + _set_sitting(false) + if _sit_after_landing and not jump_requested and _can_begin_sitting(): _sit_after_landing = false _set_sitting(true, local_control_enabled) if _sitting: @@ -1489,8 +1495,20 @@ func _update_character_animation() -> void: _presented_animation_action_id = &"" _presented_animation_action_sequence = -1 _presented_animation_action_paused = false - if _character_animation_name == next_animation and not action_changed: + if ( + _character_animation_playback_matches( + next_animation, + action_selected and animation_action_paused, + ) + and not action_changed + ): return + # The animation name is only a selection cache. A remote player's + # AnimationPlayer can occasionally stop or lose its assigned animation while + # its replicated locomotion state remains valid. Reassert the selected + # presentation here instead of waiting for another network state transition; + # movement simulation and replication remain untouched. + _character_animation_player.active = true _character_animation_player.play(next_animation) _character_animation_name = next_animation if action_selected: @@ -1513,6 +1531,26 @@ func _update_character_animation() -> void: _character_animation_player.pause() +func _character_animation_playback_matches( + animation_name: StringName, + paused_action_selected: bool, +) -> bool: + if ( + _character_animation_name != animation_name + or _character_animation_player.assigned_animation != animation_name + or not _character_animation_player.active + ): + return false + if paused_action_selected: + return true + var animation := _character_animation_player.get_animation(animation_name) + if animation == null or animation.loop_mode == Animation.LOOP_NONE: + # Completed one-shot actions deliberately keep their final pose until the + # authoritative action state advances; they must not be restarted here. + return true + return _character_animation_player.is_playing() + + func _on_character_animation_finished(animation_name: StringName) -> void: if animation_name == CHARACTER_NET_STRIKE_ANIMATION: if local_control_enabled: @@ -1610,7 +1648,7 @@ func toggle_sitting() -> void: ]) ): return - if not is_on_floor(): + if not _can_begin_sitting(): _sit_after_landing = true return _set_sitting(should_sit, local_control_enabled) @@ -1645,7 +1683,15 @@ func is_sitting() -> bool: return _sitting +func _can_begin_sitting() -> bool: + return is_on_floor() and velocity.y <= 0.0 + + func get_network_sitting_state() -> bool: + return _sitting + + +func get_network_sitting_intent() -> bool: return _sitting or _sit_after_landing @@ -1654,7 +1700,9 @@ func apply_network_sitting_state(should_sit: bool) -> void: func apply_authoritative_network_sitting_state(should_sit: bool) -> void: - if should_sit and not is_on_floor(): + if should_sit and ( + not _can_begin_sitting() or _network_jump_pending + ): _sit_after_landing = true _set_sitting(false) return @@ -2038,7 +2086,7 @@ func capture_network_input(sequence: int) -> Dictionary: "sprint": false, "sneak": false, "slow_walk": false, - "sitting": get_network_sitting_state(), + "sitting": get_network_sitting_intent(), "casting": ( _fishing_visual_phase == FishingVisualPhase.CASTING ), @@ -2063,7 +2111,7 @@ func capture_network_input(sequence: int) -> Dictionary: "sprint": Input.is_action_pressed("sprint"), "sneak": Input.is_action_pressed("sneak"), "slow_walk": Input.is_action_pressed("slow_walk"), - "sitting": get_network_sitting_state(), + "sitting": get_network_sitting_intent(), "casting": _fishing_visual_phase == FishingVisualPhase.CASTING, "animation_action": _make_animation_action_state(), } @@ -2111,7 +2159,7 @@ func get_network_input_state_hash() -> int: Input.is_action_pressed("sprint"), Input.is_action_pressed("sneak"), Input.is_action_pressed("slow_walk"), - get_network_sitting_state(), + get_network_sitting_intent(), _fishing_visual_phase == FishingVisualPhase.CASTING, _animation_action_id, _animation_action_sequence, diff --git a/tests/movement_multiplayer_validation.gd b/tests/movement_multiplayer_validation.gd index c6a98e5..c9af294 100644 --- a/tests/movement_multiplayer_validation.gd +++ b/tests/movement_multiplayer_validation.gd @@ -38,7 +38,9 @@ func _validate_latency_smoothing() -> void: _validate_animation_action_ordering(avatar) _validate_transit_estimation() _validate_remote_snapshot_smoothing(avatar) + _validate_remote_locomotion_playback_recovery(avatar) _validate_reliable_jump_intent(avatar) + _validate_airborne_sitting(avatar) _validate_stale_input_expiry(avatar) avatar.queue_free() await process_frame @@ -141,6 +143,26 @@ func _validate_compact_animation_encoding() -> void: ) +func _validate_airborne_sitting(avatar: Player) -> void: + avatar.reset_network_movement_state() + avatar.set("_sit_after_landing", true) + assert(avatar.get_network_sitting_intent()) + assert(not avatar.get_network_sitting_state()) + assert(not bool(avatar.make_network_snapshot(2)["sitting"])) + assert(bool(avatar.capture_network_input(1)["sitting"])) + + # Even a malformed or stale reconciliation that marks an airborne avatar as + # seated must not bypass gravity and freeze it in place. + avatar.set("_sit_after_landing", false) + avatar.call("_set_sitting", true) + avatar.velocity = Vector3(0.0, 4.0, 0.0) + avatar.call("_simulate_movement_physics", 0.1) + assert(not avatar.is_sitting()) + assert(bool(avatar.get("_sit_after_landing"))) + assert(avatar.velocity.y < 4.0) + avatar.reset_network_movement_state() + + func _validate_animation_action_ordering(avatar: Player) -> void: var draw := NetworkPlayerAnimationProtocol.make_action_state( &"draw", 5, 0.2 @@ -352,6 +374,32 @@ func _validate_remote_snapshot_smoothing(avatar: Player) -> void: ) +func _validate_remote_locomotion_playback_recovery(avatar: Player) -> void: + avatar.configure_network_remote(false) + avatar.push_network_snapshot( + _network_snapshot(Vector3.ZERO, Vector3(4.5, 0.0, 0.0), 21) + ) + avatar.call("_update_character_animation") + var animation_player := avatar.get_node( + "Visuals/CharacterRig/AnimationPlayer" + ) as AnimationPlayer + assert(animation_player.assigned_animation == &"running") + assert(animation_player.is_playing()) + + # Reproduce issue #111: locomotion replication still says RUNNING (and the + # dust therefore still emits), but the rig playback has fallen idle. The + # local presentation pass must repair that state without another packet. + animation_player.stop() + assert(not animation_player.is_playing()) + assert( + int(avatar.get("_network_target_locomotion_state")) + == Player.LocomotionState.RUNNING + ) + avatar.call("_update_character_animation") + assert(animation_player.assigned_animation == &"running") + assert(animation_player.is_playing()) + + func _validate_reliable_jump_intent(avatar: Player) -> void: avatar.set_local_control(true) avatar.call("_queue_local_network_jump_intent") From f1c952f5d6fb2113cb5a77783765dd243495d821 Mon Sep 17 00:00:00 2001 From: Voyager Date: Mon, 24 Aug 2026 10:36:17 -0400 Subject: [PATCH 45/90] Clarify hotbar zoom control labels --- settings/controller_mapping_manager.gd | 4 ++-- settings/keyboard_mouse_mapping_manager.gd | 4 ++-- tests/controller_mapping_validation.gd | 16 ++++++++++++++++ tests/keyboard_mouse_mapping_validation.gd | 10 ++++++++++ 4 files changed, 30 insertions(+), 4 deletions(-) diff --git a/settings/controller_mapping_manager.gd b/settings/controller_mapping_manager.gd index 8c17e7f..278022e 100644 --- a/settings/controller_mapping_manager.gd +++ b/settings/controller_mapping_manager.gd @@ -84,7 +84,7 @@ const ROLE_LABELS: Dictionary = { ROLE_LB: "focus chat or world", ROLE_RB: "primary action", ROLE_POINTER_MODIFIER: "virtual mouse modifier", - ROLE_CAMERA_ZOOM: "camera zoom", + ROLE_CAMERA_ZOOM: "zoom modifier (+RT)", ROLE_SELECT: "chat", ROLE_START: "pause", ROLE_LEFT_STICK_CLICK: "sprint", @@ -96,7 +96,7 @@ const ROLE_LABELS: Dictionary = { ROLE_LEFT_STICK_X: "move left / right", ROLE_LEFT_STICK_Y: "move up / down", ROLE_RIGHT_STICK_X: "camera left / right", - ROLE_RIGHT_STICK_Y: "camera up / down", + ROLE_RIGHT_STICK_Y: "camera up / down (+RT to zoom)", } const ROLE_PROMPTS: Dictionary = { diff --git a/settings/keyboard_mouse_mapping_manager.gd b/settings/keyboard_mouse_mapping_manager.gd index 591bc52..54dacc8 100644 --- a/settings/keyboard_mouse_mapping_manager.gd +++ b/settings/keyboard_mouse_mapping_manager.gd @@ -86,8 +86,8 @@ const ROLE_LABELS: Dictionary = { ROLE_PRIMARY_ACTION: "primary action", ROLE_ALTERNATE_REEL: "alternate reel", ROLE_CAMERA_DRAG: "rotate camera", - ROLE_CAMERA_ZOOM_IN: "camera zoom in", - ROLE_CAMERA_ZOOM_OUT: "camera zoom out", + ROLE_CAMERA_ZOOM_IN: "hotbar select (+SHIFT to zoom)", + ROLE_CAMERA_ZOOM_OUT: "hotbar select (+SHIFT to zoom)", ROLE_PLAYER_MENU: "player menu", ROLE_TACKLE_BOX: "tackle box", ROLE_PROP_BOOK: "prop book", diff --git a/tests/controller_mapping_validation.gd b/tests/controller_mapping_validation.gd index b93d475..3a4645a 100644 --- a/tests/controller_mapping_validation.gd +++ b/tests/controller_mapping_validation.gd @@ -14,6 +14,22 @@ func _init() -> void: func _run() -> void: + if ( + ControllerMappingManagerType.ROLE_LABELS[ + ControllerMappingManagerType.ROLE_CAMERA_ZOOM + ] != "zoom modifier (+RT)" + ): + push_error("controller zoom modifier label is misleading") + quit(1) + return + if ( + ControllerMappingManagerType.ROLE_LABELS[ + ControllerMappingManagerType.ROLE_RIGHT_STICK_Y + ] != "camera up / down (+RT to zoom)" + ): + push_error("controller vertical camera label omits the RT zoom chord") + quit(1) + return var manager := ControllerMappingManagerType.new() root.add_child(manager) await process_frame diff --git a/tests/keyboard_mouse_mapping_validation.gd b/tests/keyboard_mouse_mapping_validation.gd index db0bb71..1b95e01 100644 --- a/tests/keyboard_mouse_mapping_validation.gd +++ b/tests/keyboard_mouse_mapping_validation.gd @@ -38,6 +38,16 @@ func _run() -> void: KeyboardMouseMappingManagerType.ROLE_INTERACT ) == "e" ) + assert( + KeyboardMouseMappingManagerType.ROLE_LABELS[ + KeyboardMouseMappingManagerType.ROLE_CAMERA_ZOOM_IN + ] == "hotbar select (+SHIFT to zoom)" + ) + assert( + KeyboardMouseMappingManagerType.ROLE_LABELS[ + KeyboardMouseMappingManagerType.ROLE_CAMERA_ZOOM_OUT + ] == "hotbar select (+SHIFT to zoom)" + ) assert( str(defaults[ str(KeyboardMouseMappingManagerType.ROLE_PRIMARY_ACTION) From 5ed4cccf76320bb8f5b01ef612c994633553d049 Mon Sep 17 00:00:00 2001 From: Voyager Date: Mon, 24 Aug 2026 10:36:45 -0400 Subject: [PATCH 46/90] Anchor beetles to generated tree surfaces --- gathering/catalog/beetle_stag_common.tres | 2 + gathering/gatherable_data.gd | 24 ++ network/network_world_spawn_service.gd | 15 +- tests/generated_world_runtime_validation.gd | 47 ++-- tests/tree_gathering_prototype_validation.gd | 67 +++++ tests/world_spawn_protocol_validation.gd | 2 + world/generation/generated_world_region.gd | 48 ++-- .../generation/mesh_surface_anchor_sampler.gd | 260 ++++++++++++++++++ .../mesh_surface_anchor_sampler.gd.uid | 1 + .../props/definitions/prop_palm.tres | 1 + .../props/definitions/prop_pine.tres | 2 +- .../props/definitions/prop_pine_large.tres | 2 +- .../props/definitions/prop_tree_1.tres | 2 +- .../props/definitions/prop_tree_2.tres | 2 +- .../props/definitions/prop_tree_3.tres | 2 +- .../props/definitions/prop_tree_large.tres | 2 +- world/generation/terrain_prop_catalog.gd | 7 +- world/generation/terrain_prop_definition.gd | 31 ++- 18 files changed, 446 insertions(+), 71 deletions(-) create mode 100644 world/generation/mesh_surface_anchor_sampler.gd create mode 100644 world/generation/mesh_surface_anchor_sampler.gd.uid diff --git a/gathering/catalog/beetle_stag_common.tres b/gathering/catalog/beetle_stag_common.tres index 118d733..65b15df 100644 --- a/gathering/catalog/beetle_stag_common.tres +++ b/gathering/catalog/beetle_stag_common.tres @@ -10,6 +10,8 @@ catch_data = ExtResource("2_catch") required_tool_id = &"crab_net" spawn_anchor_set_id = &"starter_reachable_tree_trunks" population = 3 +spawn_anchor_occupancy_ratio = 0.35 +maximum_anchor_population = 64 requires_sneaking = false movement_speed = 0.0 roam_radius = 0.1 diff --git a/gathering/gatherable_data.gd b/gathering/gatherable_data.gd index 9f984cf..d60dcc9 100644 --- a/gathering/gatherable_data.gd +++ b/gathering/gatherable_data.gd @@ -18,6 +18,11 @@ enum PresentationMode { @export var spawn_anchor_set_id: StringName @export_range(-100.0, 100.0, 0.01) var minimum_surface_y: float = 0.08 @export_range(0, 64, 1) var population: int = 0 +## Anchored gatherables can scale with authored/generated attachment geometry. +## Zero preserves the fixed population above. +@export_range(0.0, 1.0, 0.01) var spawn_anchor_occupancy_ratio := 0.0 +## Zero leaves the anchor count as the only ceiling. +@export_range(0, 256, 1) var maximum_anchor_population := 0 @export var presentation_mode: PresentationMode = PresentationMode.VISIBLE_CREATURE @export var requires_sneaking: bool = true @export_range(0.0, 120.0, 0.1) var active_lifetime_seconds: float = 0.0 @@ -78,6 +83,10 @@ func is_valid() -> bool: == FishDataType.CollectionMethod.DIGGING ) and population > 0 + and ( + maximum_anchor_population == 0 + or maximum_anchor_population >= population + ) and movement_parameters_valid and _quality_multipliers_are_valid( quality_movement_speed_multipliers @@ -102,6 +111,21 @@ func is_stationary_spawn() -> bool: return is_stationary_hotspot() or not spawn_anchor_set_id.is_empty() +func target_population_for_anchor_count(anchor_count: int) -> int: + if spawn_anchor_set_id.is_empty() or spawn_anchor_occupancy_ratio <= 0.0: + return population + if anchor_count <= 0: + return 0 + var target := maxi( + population, + ceili(float(anchor_count) * spawn_anchor_occupancy_ratio), + ) + target = mini(target, anchor_count) + if maximum_anchor_population > 0: + target = mini(target, maximum_anchor_population) + return target + + func can_be_scared() -> bool: return not is_stationary_spawn() and scare_radius > 0.0 diff --git a/network/network_world_spawn_service.gd b/network/network_world_spawn_service.gd index 87814ee..b27dd80 100644 --- a/network/network_world_spawn_service.gd +++ b/network/network_world_spawn_service.gd @@ -294,7 +294,7 @@ func _begin_population_if_ready() -> void: _current_season() ): _cache_spawn_surface(entry) - for _spawn_index: int in entry.population: + for _spawn_index: int in _target_population(entry): _spawn_entity(entry) @@ -1383,11 +1383,22 @@ func _reconcile_seasonal_population() -> void: for entry: GatherableDataType in _catalog.get_available_entries(season): _cache_spawn_surface(entry) var current_population: int = _population_for_type(entry.type_id) - while current_population < entry.population: + var target_population := _target_population(entry) + while current_population < target_population: _spawn_entity(entry) current_population += 1 +func _target_population(entry: GatherableDataType) -> int: + if entry == null or entry.spawn_anchor_set_id.is_empty(): + return entry.population if entry != null else 0 + var anchors: PackedVector3Array = _spawn_anchor_positions.get( + entry.type_id, + PackedVector3Array(), + ) + return entry.target_population_for_anchor_count(anchors.size()) + + func _population_for_type(type_id: StringName) -> int: var count: int = 0 for state: Dictionary in _entities.values(): diff --git a/tests/generated_world_runtime_validation.gd b/tests/generated_world_runtime_validation.gd index 64b6ee1..6e03df7 100644 --- a/tests/generated_world_runtime_validation.gd +++ b/tests/generated_world_runtime_validation.gd @@ -1131,49 +1131,36 @@ func _validate_tree_gatherable_anchors( decorations: Node3D, anchors: GatherableAnchorSet3D, ) -> void: - var eligible_props: Array[Node3D] = [] + var eligible_props: Dictionary[StringName, Node3D] = {} for child: Node in decorations.get_children(): var prop := child as Node3D if prop == null: continue var prop_id := StringName(prop.get_meta(&"terrain_prop_id", &"")) var definition := region.get_prop_catalog().definition_for_id(prop_id) - if definition != null and definition.gatherable_anchor_height > 0.0: - eligible_props.append(prop) + if definition != null and definition.has_gatherable_surface(): + eligible_props[prop.name] = prop var positions := anchors.get_spawn_positions() assert(positions.size() == eligible_props.size()) - for prop: Node3D in eligible_props: + assert(positions.size() >= 12) + for child: Node in anchors.get_children(): + var anchor := child as Marker3D + assert(anchor != null) + assert(bool(anchor.get_meta(&"mesh_surface_sampled", false))) + var prop_name := StringName(anchor.get_meta(&"terrain_prop_name", &"")) + assert(eligible_props.has(prop_name)) + var prop: Node3D = eligible_props[prop_name] var prop_id := StringName(prop.get_meta(&"terrain_prop_id", &"")) var definition := region.get_prop_catalog().definition_for_id(prop_id) - var visual_scale := float( - prop.get_meta(&"terrain_prop_visual_scale", 1.0) - ) - var nearest_anchor := Vector3(INF, INF, INF) - var nearest_distance_squared := INF - for position: Vector3 in positions: - var distance_squared := position.distance_squared_to( - prop.global_position - ) - if distance_squared < nearest_distance_squared: - nearest_distance_squared = distance_squared - nearest_anchor = position - assert(nearest_anchor.is_finite()) - var horizontal_distance := Vector2( - nearest_anchor.x - prop.global_position.x, - nearest_anchor.z - prop.global_position.z, - ).length() + assert(definition != null and definition.has_gatherable_surface()) + var local_anchor := prop.to_local(anchor.global_position) assert( - horizontal_distance - >= definition.gatherable_anchor_surface_radius() * visual_scale + local_anchor.y + >= definition.gatherable_surface_minimum_height - 0.001 ) assert( - absf( - nearest_anchor.y - - ( - prop.global_position.y - + definition.gatherable_anchor_height * visual_scale - ) - ) <= 0.001 + local_anchor.y + <= definition.gatherable_surface_maximum_height + 0.001 ) diff --git a/tests/tree_gathering_prototype_validation.gd b/tests/tree_gathering_prototype_validation.gd index d97f67e..bb6d1df 100644 --- a/tests/tree_gathering_prototype_validation.gd +++ b/tests/tree_gathering_prototype_validation.gd @@ -7,6 +7,9 @@ const Gatherables: GatherableCatalog = preload( "res://gathering/catalog/gatherable_catalog.tres" ) const FishCatalog: FishPool = preload("res://fish/pools/fish_catalog.tres") +const MeshSurfaceAnchorSamplerType = preload( + "res://world/generation/mesh_surface_anchor_sampler.gd" +) func _initialize() -> void: @@ -15,6 +18,7 @@ func _initialize() -> void: func _run() -> void: _validate_beetle_data() + await _validate_mesh_surface_sampler() await _validate_tree_anchors() _validate_anchored_presentation() _validate_three_dimensional_targeting() @@ -32,11 +36,74 @@ func _validate_beetle_data() -> void: assert(beetle.required_tool_id == &"crab_net") assert(beetle.spawn_anchor_set_id == &"starter_reachable_tree_trunks") assert(beetle.population == 3) + assert(is_equal_approx(beetle.spawn_anchor_occupancy_ratio, 0.35)) + assert(beetle.maximum_anchor_population == 64) + assert(beetle.target_population_for_anchor_count(8) == 3) + assert(beetle.target_population_for_anchor_count(40) == 14) + assert(beetle.target_population_for_anchor_count(400) == 64) assert(is_equal_approx(beetle.sprite_pixel_size, 0.005)) assert(beetle.is_stationary_spawn()) assert(not beetle.can_be_scared()) +func _validate_mesh_surface_sampler() -> void: + var prop := Node3D.new() + # The accessibility band is local to the planted prop, so the same tree on + # a raised cliff remains reachable from that cliff's walkable surface. + prop.position = Vector3(3.0, 12.0, -4.0) + root.add_child(prop) + var visual := MeshInstance3D.new() + var box := BoxMesh.new() + box.size = Vector3(2.0, 4.0, 2.0) + var wood := StandardMaterial3D.new() + wood.resource_name = "wood" + box.material = wood + visual.mesh = box + visual.position.y = 2.0 + prop.add_child(visual) + await process_frame + var random := RandomNumberGenerator.new() + random.seed = 115 + var sample: Dictionary = MeshSurfaceAnchorSamplerType.sample_vertical_surface( + prop, + prop, + PackedStringArray(["wood"]), + 0.7, + 1.5, + 0.35, + 0.025, + random, + ) + assert(not sample.is_empty()) + var surface_position: Vector3 = sample["surface_position"] + var anchor_position: Vector3 = sample["position"] + assert(surface_position.y >= 0.7 and surface_position.y <= 1.5) + var world_anchor_position := prop.to_global(anchor_position) + assert( + world_anchor_position.y >= 12.7 + and world_anchor_position.y <= 13.5 + ) + assert(is_equal_approx( + maxf(absf(surface_position.x), absf(surface_position.z)), + 1.0, + )) + assert(is_equal_approx( + anchor_position.distance_to(surface_position), + 0.025, + )) + assert(MeshSurfaceAnchorSamplerType.sample_vertical_surface( + prop, + prop, + PackedStringArray(["leaf"]), + 0.7, + 1.5, + 0.35, + 0.025, + random, + ).is_empty()) + prop.queue_free() + + func _validate_tree_anchors() -> void: var region := StarterIslandScene.instantiate() as WorldRegion root.add_child(region) diff --git a/tests/world_spawn_protocol_validation.gd b/tests/world_spawn_protocol_validation.gd index f529389..29f7fde 100644 --- a/tests/world_spawn_protocol_validation.gd +++ b/tests/world_spawn_protocol_validation.gd @@ -73,6 +73,8 @@ func _validate_catalog_statuses() -> void: assert(beetle.catch_data.collection_method == FishData.CollectionMethod.NET) assert(beetle.required_tool_id == &"crab_net") assert(beetle.spawn_anchor_set_id == &"starter_reachable_tree_trunks") + assert(is_equal_approx(beetle.spawn_anchor_occupancy_ratio, 0.35)) + assert(beetle.maximum_anchor_population == 64) assert(beetle.is_stationary_spawn()) assert(not beetle.is_stationary_hotspot()) assert(not beetle.requires_sneaking) diff --git a/world/generation/generated_world_region.gd b/world/generation/generated_world_region.gd index 5adf173..06406de 100644 --- a/world/generation/generated_world_region.gd +++ b/world/generation/generated_world_region.gd @@ -9,6 +9,9 @@ const FishingShopInteractionType = preload( const PlayerStorageInteractionType = preload( "res://world/player_storage_interaction.gd" ) +const MeshSurfaceAnchorSamplerType = preload( + "res://world/generation/mesh_surface_anchor_sampler.gd" +) const WATER_BODY_SCENE: PackedScene = preload("res://world/water_body.tscn") const SALT_WATER_MATERIAL: Material = preload( "res://world/materials/stylized_water.tres" @@ -35,7 +38,6 @@ const PROP_CLUSTER_PLACEMENT_ATTEMPTS := 10 const PROP_MINIMUM_GROUND_CLEARANCE := 0.05 const PROP_CHANCE_SCALE := 10000 const PROP_SELECTION_WEIGHT_SCALE := 1000 -const GATHERABLE_ANCHOR_SURFACE_CLEARANCE := 0.02 const PROCEDURAL_PROP_GROUPS: Array[StringName] = [ &"grass_tree", &"grass_detail", @@ -681,25 +683,37 @@ func _instantiate_prop( definition.clearance_radius * visual_scale ) _placed_prop_groups.append(definition.procedural_group) - if definition.gatherable_anchor_height > 0.0: - var anchor := Marker3D.new() - anchor.name = "TreeAnchor_%d" % _tree_anchors.get_child_count() - var local_anchor_position := ( - definition.collision_offset * visual_scale - + Vector3( - 0.0, - definition.gatherable_anchor_height * visual_scale, - -( - definition.gatherable_anchor_surface_radius() - * visual_scale - + GATHERABLE_ANCHOR_SURFACE_CLEARANCE - ), + if definition.has_gatherable_surface(): + var surface_sample: Dictionary = ( + MeshSurfaceAnchorSamplerType.sample_vertical_surface( + visual_root, + prop, + definition.gatherable_surface_material_names, + definition.gatherable_surface_minimum_height, + definition.gatherable_surface_maximum_height, + definition.gatherable_surface_maximum_up_dot, + definition.gatherable_surface_clearance, + random, ) ) - anchor.position = prop.position + local_anchor_position.rotated( - Vector3.UP, - yaw, + if surface_sample.is_empty(): + push_warning( + "No reachable gatherable mesh surface found on %s." + % definition.stable_id + ) + return true + var anchor := Marker3D.new() + anchor.name = "TreeAnchor_%d" % _tree_anchors.get_child_count() + var local_anchor_position: Vector3 = surface_sample["position"] + anchor.position = _tree_anchors.to_local( + prop.to_global(local_anchor_position) ) + anchor.set_meta( + &"terrain_prop_id", + definition.stable_id, + ) + anchor.set_meta(&"terrain_prop_name", prop.name) + anchor.set_meta(&"mesh_surface_sampled", true) _tree_anchors.add_child(anchor) return true diff --git a/world/generation/mesh_surface_anchor_sampler.gd b/world/generation/mesh_surface_anchor_sampler.gd new file mode 100644 index 0000000..3f41f56 --- /dev/null +++ b/world/generation/mesh_surface_anchor_sampler.gd @@ -0,0 +1,260 @@ +class_name MeshSurfaceAnchorSampler +extends RefCounted + +const HEIGHT_EPSILON := 0.0001 + + +static func sample_vertical_surface( + visual_root: Node3D, + relative_root: Node3D, + material_names: PackedStringArray, + minimum_height: float, + maximum_height: float, + maximum_up_dot: float, + clearance: float, + random: RandomNumberGenerator, +) -> Dictionary: + if ( + visual_root == null + or relative_root == null + or material_names.is_empty() + or maximum_height <= minimum_height + or random == null + ): + return {} + var candidates: Array[Dictionary] = [] + _collect_candidates( + visual_root, + relative_root, + material_names, + minimum_height, + maximum_height, + clampf(maximum_up_dot, 0.0, 1.0), + candidates, + ) + while not candidates.is_empty(): + var candidate_index := _weighted_candidate_index(candidates, random) + var candidate: Dictionary = candidates[candidate_index] + candidates.remove_at(candidate_index) + var point := _sample_triangle_height_slice( + candidate["a"], + candidate["b"], + candidate["c"], + minimum_height, + maximum_height, + random, + ) + if not point.is_finite(): + continue + var normal: Vector3 = candidate["normal"] + var surface_normal := Vector3(normal.x, 0.0, normal.z).normalized() + if surface_normal.is_zero_approx(): + continue + return { + "position": point + surface_normal * maxf(clearance, 0.0), + "surface_position": point, + "surface_normal": surface_normal, + } + return {} + + +static func _collect_candidates( + node: Node, + relative_root: Node3D, + material_names: PackedStringArray, + minimum_height: float, + maximum_height: float, + maximum_up_dot: float, + candidates: Array[Dictionary], +) -> void: + var mesh_instance := node as MeshInstance3D + if mesh_instance != null and mesh_instance.mesh != null: + _collect_mesh_candidates( + mesh_instance, + relative_root, + material_names, + minimum_height, + maximum_height, + maximum_up_dot, + candidates, + ) + for child: Node in node.get_children(): + _collect_candidates( + child, + relative_root, + material_names, + minimum_height, + maximum_height, + maximum_up_dot, + candidates, + ) + + +static func _collect_mesh_candidates( + mesh_instance: MeshInstance3D, + relative_root: Node3D, + material_names: PackedStringArray, + minimum_height: float, + maximum_height: float, + maximum_up_dot: float, + candidates: Array[Dictionary], +) -> void: + var mesh := mesh_instance.mesh + var to_relative := ( + relative_root.global_transform.affine_inverse() + * mesh_instance.global_transform + ) + for surface_index: int in mesh.get_surface_count(): + if ( + mesh is ArrayMesh + and (mesh as ArrayMesh).surface_get_primitive_type(surface_index) + != Mesh.PRIMITIVE_TRIANGLES + ): + continue + var material := mesh.surface_get_material(surface_index) + if not _material_matches(material, material_names): + continue + var arrays := mesh.surface_get_arrays(surface_index) + var vertices := arrays[Mesh.ARRAY_VERTEX] as PackedVector3Array + var indices := arrays[Mesh.ARRAY_INDEX] as PackedInt32Array + if indices.is_empty(): + for vertex_index: int in range(0, vertices.size() - 2, 3): + _add_triangle_candidate( + to_relative * vertices[vertex_index], + to_relative * vertices[vertex_index + 1], + to_relative * vertices[vertex_index + 2], + minimum_height, + maximum_height, + maximum_up_dot, + candidates, + ) + continue + for index_offset: int in range(0, indices.size() - 2, 3): + _add_triangle_candidate( + to_relative * vertices[indices[index_offset]], + to_relative * vertices[indices[index_offset + 1]], + to_relative * vertices[indices[index_offset + 2]], + minimum_height, + maximum_height, + maximum_up_dot, + candidates, + ) + + +static func _material_matches( + material: Material, + material_names: PackedStringArray, +) -> bool: + if material == null: + return false + var candidate_name := material.resource_name.to_lower() + for configured_name: String in material_names: + if candidate_name == configured_name.to_lower(): + return true + return false + + +static func _add_triangle_candidate( + a: Vector3, + b: Vector3, + c: Vector3, + minimum_height: float, + maximum_height: float, + maximum_up_dot: float, + candidates: Array[Dictionary], +) -> void: + var cross := (b - a).cross(c - a) + var doubled_area := cross.length() + if doubled_area <= HEIGHT_EPSILON: + return + var normal := cross / doubled_area + if absf(normal.dot(Vector3.UP)) > maximum_up_dot: + return + var triangle_minimum := minf(a.y, minf(b.y, c.y)) + var triangle_maximum := maxf(a.y, maxf(b.y, c.y)) + var overlap := ( + minf(triangle_maximum, maximum_height) + - maxf(triangle_minimum, minimum_height) + ) + if overlap <= HEIGHT_EPSILON: + return + candidates.append({ + "a": a, + "b": b, + "c": c, + "normal": normal, + "weight": doubled_area * 0.5 * overlap, + }) + + +static func _weighted_candidate_index( + candidates: Array[Dictionary], + random: RandomNumberGenerator, +) -> int: + var total_weight := 0.0 + for candidate: Dictionary in candidates: + total_weight += float(candidate.get("weight", 0.0)) + if total_weight <= 0.0: + return random.randi_range(0, candidates.size() - 1) + var roll := random.randf() * total_weight + var cumulative := 0.0 + for index: int in candidates.size(): + cumulative += float(candidates[index].get("weight", 0.0)) + if roll <= cumulative: + return index + return candidates.size() - 1 + + +static func _sample_triangle_height_slice( + a: Vector3, + b: Vector3, + c: Vector3, + minimum_height: float, + maximum_height: float, + random: RandomNumberGenerator, +) -> Vector3: + var slice_minimum := maxf(minimum_height, minf(a.y, minf(b.y, c.y))) + var slice_maximum := minf(maximum_height, maxf(a.y, maxf(b.y, c.y))) + if slice_maximum - slice_minimum <= HEIGHT_EPSILON: + return Vector3(INF, INF, INF) + var target_height := random.randf_range(slice_minimum, slice_maximum) + var intersections := PackedVector3Array() + _append_edge_intersection(a, b, target_height, intersections) + _append_edge_intersection(b, c, target_height, intersections) + _append_edge_intersection(c, a, target_height, intersections) + if intersections.size() < 2: + return Vector3(INF, INF, INF) + var first := intersections[0] + var second := intersections[1] + var greatest_distance := first.distance_squared_to(second) + for first_index: int in intersections.size(): + for second_index: int in range(first_index + 1, intersections.size()): + var distance := intersections[first_index].distance_squared_to( + intersections[second_index] + ) + if distance > greatest_distance: + greatest_distance = distance + first = intersections[first_index] + second = intersections[second_index] + return first.lerp(second, random.randf()) + + +static func _append_edge_intersection( + a: Vector3, + b: Vector3, + height: float, + intersections: PackedVector3Array, +) -> void: + var minimum := minf(a.y, b.y) + var maximum := maxf(a.y, b.y) + if height < minimum - HEIGHT_EPSILON or height > maximum + HEIGHT_EPSILON: + return + var height_delta := b.y - a.y + if absf(height_delta) <= HEIGHT_EPSILON: + return + var weight := clampf((height - a.y) / height_delta, 0.0, 1.0) + var point := a.lerp(b, weight) + for existing: Vector3 in intersections: + if existing.distance_squared_to(point) <= HEIGHT_EPSILON * HEIGHT_EPSILON: + return + intersections.append(point) diff --git a/world/generation/mesh_surface_anchor_sampler.gd.uid b/world/generation/mesh_surface_anchor_sampler.gd.uid new file mode 100644 index 0000000..a56caf8 --- /dev/null +++ b/world/generation/mesh_surface_anchor_sampler.gd.uid @@ -0,0 +1 @@ +uid://dlen7b42nxpjv diff --git a/world/generation/props/definitions/prop_palm.tres b/world/generation/props/definitions/prop_palm.tres index 4d1d344..e586f3d 100644 --- a/world/generation/props/definitions/prop_palm.tres +++ b/world/generation/props/definitions/prop_palm.tres @@ -23,3 +23,4 @@ local_overhang_direction = Vector2(-0.883, 0.469) ocean_facing_spread_degrees = 55.0 collision_radius = 0.4 collision_height = 6.0 +gatherable_surface_material_names = PackedStringArray("wood_light") diff --git a/world/generation/props/definitions/prop_pine.tres b/world/generation/props/definitions/prop_pine.tres index 26e9cb0..062dd3b 100644 --- a/world/generation/props/definitions/prop_pine.tres +++ b/world/generation/props/definitions/prop_pine.tres @@ -17,4 +17,4 @@ minimum_visual_scale = 0.65 maximum_visual_scale = 1.2 collision_radius = 0.5 collision_height = 4.0 -gatherable_anchor_height = 2.15 +gatherable_surface_material_names = PackedStringArray("wood") diff --git a/world/generation/props/definitions/prop_pine_large.tres b/world/generation/props/definitions/prop_pine_large.tres index 47c8577..5f5d584 100644 --- a/world/generation/props/definitions/prop_pine_large.tres +++ b/world/generation/props/definitions/prop_pine_large.tres @@ -17,4 +17,4 @@ minimum_visual_scale = 0.75 maximum_visual_scale = 1.2 collision_radius = 0.65 collision_height = 9.5 -gatherable_anchor_height = 2.15 +gatherable_surface_material_names = PackedStringArray("wood") diff --git a/world/generation/props/definitions/prop_tree_1.tres b/world/generation/props/definitions/prop_tree_1.tres index bb5d2af..3553988 100644 --- a/world/generation/props/definitions/prop_tree_1.tres +++ b/world/generation/props/definitions/prop_tree_1.tres @@ -27,4 +27,4 @@ secondary_variant_material_slot_names = PackedStringArray("wood", "wood_light", secondary_material_variants = Array[Material]([ExtResource("6_wood_light"), ExtResource("7_wood_mid"), ExtResource("8_wood_dark")]) collision_radius = 0.4 collision_height = 3.2 -gatherable_anchor_height = 2.15 +gatherable_surface_material_names = PackedStringArray("wood", "wood_light", "wood_mid", "wood_dark") diff --git a/world/generation/props/definitions/prop_tree_2.tres b/world/generation/props/definitions/prop_tree_2.tres index a6931be..868e044 100644 --- a/world/generation/props/definitions/prop_tree_2.tres +++ b/world/generation/props/definitions/prop_tree_2.tres @@ -27,4 +27,4 @@ secondary_variant_material_slot_names = PackedStringArray("wood", "wood_light", secondary_material_variants = Array[Material]([ExtResource("6_wood_light"), ExtResource("7_wood_mid"), ExtResource("8_wood_dark")]) collision_radius = 0.5 collision_height = 3.8 -gatherable_anchor_height = 2.15 +gatherable_surface_material_names = PackedStringArray("wood", "wood_light", "wood_mid", "wood_dark") diff --git a/world/generation/props/definitions/prop_tree_3.tres b/world/generation/props/definitions/prop_tree_3.tres index 382117e..58e3549 100644 --- a/world/generation/props/definitions/prop_tree_3.tres +++ b/world/generation/props/definitions/prop_tree_3.tres @@ -27,4 +27,4 @@ secondary_variant_material_slot_names = PackedStringArray("wood", "wood_light", secondary_material_variants = Array[Material]([ExtResource("6_wood_light"), ExtResource("7_wood_mid"), ExtResource("8_wood_dark")]) collision_radius = 0.55 collision_height = 4.2 -gatherable_anchor_height = 2.15 +gatherable_surface_material_names = PackedStringArray("wood", "wood_light", "wood_mid", "wood_dark") diff --git a/world/generation/props/definitions/prop_tree_large.tres b/world/generation/props/definitions/prop_tree_large.tres index ebf6f2f..9092ad1 100644 --- a/world/generation/props/definitions/prop_tree_large.tres +++ b/world/generation/props/definitions/prop_tree_large.tres @@ -27,4 +27,4 @@ secondary_variant_material_slot_names = PackedStringArray("wood", "wood_light", secondary_material_variants = Array[Material]([ExtResource("6_wood_light"), ExtResource("7_wood_mid"), ExtResource("8_wood_dark")]) collision_radius = 0.85 collision_height = 7.5 -gatherable_anchor_height = 2.15 +gatherable_surface_material_names = PackedStringArray("wood", "wood_light", "wood_mid", "wood_dark") diff --git a/world/generation/terrain_prop_catalog.gd b/world/generation/terrain_prop_catalog.gd index f475563..ed37c68 100644 --- a/world/generation/terrain_prop_catalog.gd +++ b/world/generation/terrain_prop_catalog.gd @@ -74,11 +74,12 @@ func validation_errors() -> PackedStringArray: % definition.stable_id ) if ( - definition.gatherable_anchor_height > 0.0 - and definition.gatherable_anchor_surface_radius() <= 0.0 + not definition.gatherable_surface_material_names.is_empty() + and definition.gatherable_surface_maximum_height + <= definition.gatherable_surface_minimum_height ): errors.append( - "%s is gatherable but has no trunk-surface radius." + "%s has an invalid gatherable-surface height band." % definition.stable_id ) if ( diff --git a/world/generation/terrain_prop_definition.gd b/world/generation/terrain_prop_definition.gd index 1479371..58fdddd 100644 --- a/world/generation/terrain_prop_definition.gd +++ b/world/generation/terrain_prop_definition.gd @@ -47,11 +47,18 @@ extends Resource @export_range(0.0, 20.0, 0.05) var collision_height := 0.0 @export var collision_box_size := Vector3.ZERO @export var collision_offset := Vector3.ZERO -## Values above zero add this prop to the tree-gathering anchor set. -@export_range(0.0, 20.0, 0.05) var gatherable_anchor_height := 0.0 -## Optional distance from the prop origin to the visible trunk surface. A -## zero value derives the distance from the authored collision shape. -@export_range(0.0, 5.0, 0.05) var gatherable_anchor_radius := 0.0 +@export_category("Gatherable Surface") +## Non-empty values explicitly designate this prop's matching mesh surfaces as +## valid attachment geometry. Unlisted props and materials are never sampled. +@export var gatherable_surface_material_names := PackedStringArray() +## Accessibility band measured upward from this prop's planted origin. It +## follows the tree onto hills/cliffs while keeping anchors within net reach. +@export_range(0.0, 20.0, 0.05) var gatherable_surface_minimum_height := 0.7 +@export_range(0.0, 20.0, 0.05) var gatherable_surface_maximum_height := 1.5 +## Reject upward-facing branches and foliage so attachments favor trunk-like +## faces. Zero accepts only vertical faces; one accepts every orientation. +@export_range(0.0, 1.0, 0.05) var gatherable_surface_maximum_up_dot := 0.35 +@export_range(0.0, 0.25, 0.005) var gatherable_surface_clearance := 0.025 func supports_chunk_tags(chunk_tags: PackedStringArray) -> bool: @@ -77,14 +84,12 @@ func has_box_collision() -> bool: ) -func gatherable_anchor_surface_radius() -> float: - if gatherable_anchor_radius > 0.0: - return gatherable_anchor_radius - if has_cylinder_collision(): - return collision_radius - if has_box_collision(): - return maxf(collision_box_size.x, collision_box_size.z) * 0.5 - return 0.0 +func has_gatherable_surface() -> bool: + return ( + not gatherable_surface_material_names.is_empty() + and gatherable_surface_maximum_height + > gatherable_surface_minimum_height + ) func is_procedural() -> bool: From bb75121dcdc7e1801adb06103a40be5497b07a2d Mon Sep 17 00:00:00 2001 From: Voyager Date: Mon, 24 Aug 2026 11:13:49 -0400 Subject: [PATCH 47/90] Activate full fish catalog --- art/exported/creatures/fish_placeholder.png | Bin 0 -> 1964 bytes .../creatures/fish_placeholder.png.import | 40 +++ fish/pools/generated_lake_pool.tres | 30 ++- fish/pools/generated_pond_pool.tres | 42 +++- fish/pools/generated_river_pool.tres | 66 ++++- fish/pools/starter_ocean_pool.tres | 234 +++++++++++++++--- fish/pools/starter_pond_pool.tres | 136 +++++++--- fish/species/abalone_red/abalone_red.tres | 6 +- .../amberjack_greater/amberjack_greater.tres | 6 +- .../amberjack_lesser/amberjack_lesser.tres | 6 +- .../anchovy_european/anchovy_european.tres | 2 +- .../anchovy_northern/anchovy_northern.tres | 2 +- .../angelfish_freshwater.tres | 6 +- .../angelfish_queen/angelfish_queen.tres | 6 +- .../anglerfish_black_seadevil.tres | 6 +- fish/species/arapaima/arapaima.tres | 6 +- .../arowana_silver/arowana_silver.tres | 6 +- fish/species/axolotl/axolotl.tres | 6 +- fish/species/barbel_common/barbel_common.tres | 6 +- .../barracuda_great/barracuda_great.tres | 6 +- fish/species/barramundi/barramundi.tres | 6 +- .../barreleye_pacific/barreleye_pacific.tres | 6 +- fish/species/bass/bass.tres | 2 +- fish/species/betta_siamese/betta_siamese.tres | 6 +- fish/species/black_drum/black_drum.tres | 6 +- .../blobfish_smooth_head.tres | 6 +- fish/species/bluefish/bluefish.tres | 6 +- fish/species/bluegill/bluegill.tres | 2 +- fish/species/bonefish/bonefish.tres | 6 +- fish/species/bowfin/bowfin.tres | 2 +- .../boxfish_yellow/boxfish_yellow.tres | 6 +- fish/species/bream_common/bream_common.tres | 6 +- .../buffalo_bigmouth/buffalo_bigmouth.tres | 6 +- .../buffalo_smallmouth.tres | 6 +- .../bullhead_black/bullhead_black.tres | 6 +- .../bullhead_brown/bullhead_brown.tres | 6 +- .../bullhead_yellow/bullhead_yellow.tres | 6 +- fish/species/burbot/burbot.tres | 6 +- .../butterflyfish_copperband.tres | 6 +- fish/species/capelin/capelin.tres | 6 +- fish/species/carp/carp.tres | 2 +- fish/species/catfish_blue/catfish_blue.tres | 2 +- .../catfish_channel/catfish_channel.tres | 2 +- .../catfish_flathead/catfish_flathead.tres | 2 +- .../catfish_walking/catfish_walking.tres | 6 +- fish/species/catfish_white/catfish_white.tres | 2 +- fish/species/char_arctic/char_arctic.tres | 6 +- .../chromis_blue_green.tres | 6 +- fish/species/chub_creek/chub_creek.tres | 6 +- fish/species/chub_european/chub_european.tres | 2 +- fish/species/chub_flame/chub_flame.tres | 2 +- fish/species/chub_lake/chub_lake.tres | 2 +- fish/species/cisco/cisco.tres | 6 +- fish/species/clam_geoduck/clam_geoduck.tres | 6 +- fish/species/clam_giant/clam_giant.tres | 6 +- .../clownfish_ocellaris.tres | 6 +- fish/species/cobia/cobia.tres | 6 +- fish/species/cod_atlantic/cod_atlantic.tres | 6 +- fish/species/cod_pacific/cod_pacific.tres | 6 +- .../coelacanth_west_indian.tres | 6 +- fish/species/conch_queen/conch_queen.tres | 6 +- .../cornetfish_red/cornetfish_red.tres | 6 +- .../cowfish_longhorn/cowfish_longhorn.tres | 6 +- .../crab_japanese_spider.tres | 6 +- fish/species/crab_red_king/crab_red_king.tres | 6 +- fish/species/crappie_black/crappie_black.tres | 6 +- fish/species/crappie_white/crappie_white.tres | 6 +- .../crayfish_red_swamp.tres | 6 +- .../croaker_atlantic/croaker_atlantic.tres | 6 +- .../croaker_yellowfin/croaker_yellowfin.tres | 6 +- fish/species/cusk/cusk.tres | 6 +- .../cuttlefish_common/cuttlefish_common.tres | 6 +- .../cuttlefish_flamboyant.tres | 6 +- .../damselfish_sergeant_major.tres | 6 +- fish/species/danio_zebra/danio_zebra.tres | 6 +- fish/species/discus/discus.tres | 6 +- .../dolphin_bottlenose.tres | 6 +- fish/species/dorado_golden/dorado_golden.tres | 6 +- fish/species/dugong/dugong.tres | 6 +- fish/species/eel_american/eel_american.tres | 6 +- fish/species/eel_european/eel_european.tres | 6 +- fish/species/electric_eel/electric_eel.tres | 6 +- fish/species/fallfish/fallfish.tres | 6 +- .../fangtooth_common/fangtooth_common.tres | 6 +- .../flounder_peacock/flounder_peacock.tres | 6 +- .../flounder_summer/flounder_summer.tres | 6 +- .../flounder_winter/flounder_winter.tres | 6 +- .../flyingfish_tropical.tres | 6 +- .../foureyes_largescale.tres | 6 +- .../freshwater_drum/freshwater_drum.tres | 6 +- fish/species/gar_alligator/gar_alligator.tres | 6 +- fish/species/gar_longnose/gar_longnose.tres | 2 +- fish/species/gar_spotted/gar_spotted.tres | 2 +- fish/species/goby_round/goby_round.tres | 2 +- fish/species/goldeye/goldeye.tres | 6 +- fish/species/goldfish/goldfish.tres | 2 +- .../goldfish_bubbleeye.tres | 2 +- fish/species/gourami_giant/gourami_giant.tres | 6 +- .../grayling_arctic/grayling_arctic.tres | 6 +- fish/species/green_sunfish/green_sunfish.tres | 6 +- .../grouper_atlantic_goliath.tres | 6 +- fish/species/grouper_giant/grouper_giant.tres | 6 +- fish/species/grouper_gulf/grouper_gulf.tres | 2 +- .../grouper_nassau/grouper_nassau.tres | 6 +- fish/species/grouper_red/grouper_red.tres | 2 +- .../grunt_bluestriped/grunt_bluestriped.tres | 6 +- fish/species/grunt_french/grunt_french.tres | 6 +- fish/species/gulper_eel/gulper_eel.tres | 6 +- fish/species/guppy/guppy.tres | 6 +- fish/species/haddock/haddock.tres | 6 +- fish/species/hake_pacific/hake_pacific.tres | 6 +- fish/species/hake_silver/hake_silver.tres | 6 +- .../halfbeak_ballyhoo/halfbeak_ballyhoo.tres | 6 +- .../halibut_atlantic/halibut_atlantic.tres | 6 +- .../halibut_pacific/halibut_pacific.tres | 6 +- fish/species/hellbender/hellbender.tres | 6 +- .../herring_atlantic/herring_atlantic.tres | 6 +- .../herring_pacific/herring_pacific.tres | 6 +- fish/species/hogfish/hogfish.tres | 6 +- fish/species/ide/ide.tres | 6 +- fish/species/jack_crevalle/jack_crevalle.tres | 6 +- fish/species/jelly_crystal/jelly_crystal.tres | 6 +- .../jelly_lions_mane/jelly_lions_mane.tres | 6 +- fish/species/jelly_moon/jelly_moon.tres | 6 +- .../jelly_pacific_sea_nettle.tres | 6 +- .../jelly_sea_wasp/jelly_sea_wasp.tres | 6 +- .../knifefish_clown/knifefish_clown.tres | 6 +- fish/species/koi/koi.tres | 6 +- .../krill_antarctic/krill_antarctic.tres | 6 +- fish/species/ladyfish/ladyfish.tres | 6 +- .../lanternfish_spotted.tres | 6 +- .../largemouth_bass/largemouth_bass.tres | 6 +- fish/species/lingcod/lingcod.tres | 6 +- fish/species/lionfish_red/lionfish_red.tres | 6 +- fish/species/loach_clown/loach_clown.tres | 6 +- fish/species/loach_weather/loach_weather.tres | 6 +- .../lobster_american/lobster_american.tres | 6 +- .../lobster_caribbean_spiny.tres | 6 +- .../lungfish_west_african.tres | 2 +- .../mackerel_atlantic/mackerel_atlantic.tres | 2 +- fish/species/mackerel_cero/mackerel_cero.tres | 2 +- fish/species/mackerel_chub/mackerel_chub.tres | 2 +- fish/species/mackerel_king/mackerel_king.tres | 2 +- .../mackerel_spanish/mackerel_spanish.tres | 2 +- .../madtom_tadpole/madtom_tadpole.tres | 6 +- fish/species/mahi_mahi/mahi_mahi.tres | 6 +- .../mahseer_golden/mahseer_golden.tres | 6 +- .../manatee_west_indian.tres | 6 +- .../manta_ray_giant/manta_ray_giant.tres | 6 +- fish/species/marlin_black/marlin_black.tres | 2 +- fish/species/marlin_blue/marlin_blue.tres | 2 +- fish/species/marlin_white/marlin_white.tres | 2 +- .../menhaden_atlantic/menhaden_atlantic.tres | 6 +- fish/species/milkfish/milkfish.tres | 6 +- .../minnow_fathead/minnow_fathead.tres | 6 +- fish/species/monkfish/monkfish.tres | 6 +- fish/species/mooneye/mooneye.tres | 6 +- fish/species/moray_green/moray_green.tres | 6 +- .../mudskipper_atlantic.tres | 6 +- fish/species/mullet_red/mullet_red.tres | 6 +- .../mullet_striped/mullet_striped.tres | 6 +- fish/species/muskellunge/muskellunge.tres | 6 +- .../nautilus_chambered.tres | 6 +- .../needlefish_hound/needlefish_hound.tres | 6 +- fish/species/oarfish_giant/oarfish_giant.tres | 6 +- .../ocean_perch_pacific.tres | 6 +- .../octopus_common/octopus_common.tres | 6 +- fish/species/octopus_day/octopus_day.tres | 6 +- .../octopus_giant_pacific.tres | 6 +- .../octopus_greater_blue_ringed.tres | 6 +- fish/species/opah/opah.tres | 6 +- fish/species/oscar/oscar.tres | 6 +- .../oyster_black_lip_pearl.tres | 6 +- fish/species/paddlefish/paddlefish.tres | 2 +- .../parrotfish_rainbow.tres | 6 +- .../parrotfish_stoplight.tres | 6 +- fish/species/peacock_bass/peacock_bass.tres | 6 +- fish/species/permit/permit.tres | 6 +- .../pickerel_chain/pickerel_chain.tres | 6 +- .../pickerel_grass/pickerel_grass.tres | 6 +- fish/species/pike_northern/pike_northern.tres | 6 +- fish/species/pipefish_bay/pipefish_bay.tres | 6 +- .../piranha_red_bellied.tres | 6 +- .../plaice_european/plaice_european.tres | 6 +- .../pollock_alaska/pollock_alaska.tres | 6 +- .../pollock_atlantic/pollock_atlantic.tres | 6 +- fish/species/pomfret_black/pomfret_black.tres | 2 +- .../pomfret_chinese/pomfret_chinese.tres | 2 +- .../pomfret_golden/pomfret_golden.tres | 2 +- fish/species/pomfret_white/pomfret_white.tres | 2 +- .../pompano_african/pompano_african.tres | 6 +- .../pompano_florida/pompano_florida.tres | 6 +- .../porcupinefish_spotted.tres | 6 +- fish/species/porgy_scup/porgy_scup.tres | 6 +- .../pufferfish_guineafowl.tres | 6 +- fish/species/pumpkinseed/pumpkinseed.tres | 6 +- .../queenfish_talang/queenfish_talang.tres | 6 +- fish/species/quillback/quillback.tres | 6 +- fish/species/red_drum/red_drum.tres | 6 +- .../redear_sunfish/redear_sunfish.tres | 6 +- .../redhorse_golden/redhorse_golden.tres | 6 +- fish/species/roach_common/roach_common.tres | 6 +- .../rockfish_black/rockfish_black.tres | 6 +- .../rockfish_canary/rockfish_canary.tres | 6 +- .../rockfish_yelloweye.tres | 6 +- fish/species/roosterfish/roosterfish.tres | 6 +- fish/species/rudd/rudd.tres | 6 +- fish/species/sablefish/sablefish.tres | 6 +- fish/species/sailfish/sailfish.tres | 2 +- .../salmon_atlantic/salmon_atlantic.tres | 2 +- fish/species/salmon_chum/salmon_chum.tres | 2 +- fish/species/salmon_coho/salmon_coho.tres | 2 +- fish/species/salmon_pink/salmon_pink.tres | 2 +- .../salmon_sockeye/salmon_sockeye.tres | 2 +- fish/species/sand_dollar/sand_dollar.tres | 6 +- .../sand_lance_american.tres | 6 +- .../sardine_european/sardine_european.tres | 6 +- .../sardine_pacific/sardine_pacific.tres | 6 +- fish/species/sauger/sauger.tres | 2 +- fish/species/saugeye/saugeye.tres | 2 +- .../sawfish_largetooth.tres | 6 +- .../scorpionfish_red/scorpionfish_red.tres | 6 +- .../sea_bass_black/sea_bass_black.tres | 6 +- .../sea_bass_chilean/sea_bass_chilean.tres | 6 +- .../sea_cucumber_giant_california.tres | 6 +- fish/species/sea_otter/sea_otter.tres | 6 +- .../sea_star_crown_of_thorns.tres | 6 +- .../sea_star_sunflower.tres | 6 +- .../seadragon_leafy/seadragon_leafy.tres | 6 +- .../seadragon_weedy/seadragon_weedy.tres | 6 +- .../seahorse_lined/seahorse_lined.tres | 6 +- fish/species/seal_harbor/seal_harbor.tres | 6 +- .../shark_blacktip/shark_blacktip.tres | 6 +- .../shark_great_hammerhead.tres | 6 +- .../shark_great_white/shark_great_white.tres | 6 +- fish/species/shark_tiger/shark_tiger.tres | 6 +- fish/species/shark_whale/shark_whale.tres | 6 +- fish/species/sheepshead/sheepshead.tres | 6 +- fish/species/shiner_common/shiner_common.tres | 6 +- .../shiner_emerald/shiner_emerald.tres | 6 +- fish/species/shiner_golden/shiner_golden.tres | 6 +- .../shrimp_peacock_mantis.tres | 6 +- .../shrimp_skunk_cleaner.tres | 6 +- .../skate_barndoor/skate_barndoor.tres | 6 +- .../smallmouth_bass/smallmouth_bass.tres | 6 +- .../smelt_eulachon/smelt_eulachon.tres | 6 +- fish/species/smelt_rainbow/smelt_rainbow.tres | 6 +- .../snakehead_giant/snakehead_giant.tres | 6 +- fish/species/snapper_lane/snapper_lane.tres | 2 +- .../snapper_mangrove/snapper_mangrove.tres | 2 +- .../snapper_mutton/snapper_mutton.tres | 2 +- fish/species/snapper_red/snapper_red.tres | 2 +- fish/species/snook_common/snook_common.tres | 6 +- fish/species/sole_dover/sole_dover.tres | 6 +- .../sprat_european/sprat_european.tres | 6 +- .../squid_bigfin_reef/squid_bigfin_reef.tres | 6 +- .../squid_colossal/squid_colossal.tres | 6 +- fish/species/squid_giant/squid_giant.tres | 6 +- .../squid_humboldt/squid_humboldt.tres | 6 +- .../stingray_ocellate_river.tres | 6 +- .../stingray_southern/stingray_southern.tres | 6 +- fish/species/sturgeon_lake/sturgeon_lake.tres | 2 +- .../sturgeon_shovelnose.tres | 2 +- .../sturgeon_white/sturgeon_white.tres | 6 +- fish/species/sucker_white/sucker_white.tres | 6 +- fish/species/sunfish/sunfish.tres | 2 +- .../surgeonfish_blue/surgeonfish_blue.tres | 6 +- fish/species/swordfish/swordfish.tres | 2 +- fish/species/tambaqui/tambaqui.tres | 6 +- fish/species/tang_yellow/tang_yellow.tres | 6 +- .../tarpon_atlantic/tarpon_atlantic.tres | 6 +- fish/species/tautog/tautog.tres | 6 +- fish/species/tench/tench.tres | 6 +- fish/species/tetra_neon/tetra_neon.tres | 6 +- .../tigerfish_goliath/tigerfish_goliath.tres | 6 +- fish/species/tilapia_nile/tilapia_nile.tres | 6 +- .../tilefish_blueline/tilefish_blueline.tres | 6 +- .../tilefish_golden/tilefish_golden.tres | 6 +- .../trevally_bluefin/trevally_bluefin.tres | 6 +- .../trevally_giant/trevally_giant.tres | 6 +- .../triggerfish_gray/triggerfish_gray.tres | 6 +- .../triggerfish_queen/triggerfish_queen.tres | 6 +- fish/species/tripletail/tripletail.tres | 6 +- fish/species/trout_brown/trout_brown.tres | 6 +- .../trout_cutthroat/trout_cutthroat.tres | 2 +- fish/species/trout_golden/trout_golden.tres | 2 +- fish/species/trout_rainbow/trout_rainbow.tres | 2 +- .../trout_steelhead/trout_steelhead.tres | 2 +- .../trumpetfish_atlantic.tres | 6 +- fish/species/tuna_albacore/tuna_albacore.tres | 2 +- fish/species/tuna_bigeye/tuna_bigeye.tres | 2 +- fish/species/tuna_bluefin/tuna_bluefin.tres | 2 +- fish/species/tuna_skipjack/tuna_skipjack.tres | 2 +- .../tuna_yellowfin/tuna_yellowfin.tres | 2 +- fish/species/turbot/turbot.tres | 6 +- fish/species/turtle_green/turtle_green.tres | 6 +- .../turtle_hawksbill/turtle_hawksbill.tres | 6 +- .../turtle_leatherback.tres | 6 +- .../turtle_loggerhead/turtle_loggerhead.tres | 6 +- fish/species/urchin_purple/urchin_purple.tres | 6 +- fish/species/wahoo/wahoo.tres | 6 +- fish/species/walleye/walleye.tres | 2 +- fish/species/walrus/walrus.tres | 6 +- fish/species/warmouth/warmouth.tres | 6 +- fish/species/weakfish/weakfish.tres | 6 +- fish/species/whale_blue/whale_blue.tres | 6 +- .../whale_humpback/whale_humpback.tres | 6 +- fish/species/whale_killer/whale_killer.tres | 6 +- fish/species/whale_sperm/whale_sperm.tres | 6 +- fish/species/white_perch/white_perch.tres | 6 +- .../whitefish_lake/whitefish_lake.tres | 6 +- .../wolffish_atlantic/wolffish_atlantic.tres | 6 +- .../wolffish_spotted/wolffish_spotted.tres | 6 +- fish/species/wrasse_ballan/wrasse_ballan.tres | 6 +- .../wrasse_cleaner/wrasse_cleaner.tres | 6 +- fish/species/wreckfish/wreckfish.tres | 6 +- fish/species/yellow_perch/yellow_perch.tres | 6 +- tests/economy_regression_validation.gd | 2 +- tests/fish_catalog_content_validation.gd | 95 ++++--- tests/logbook_runtime_validation.gd | 46 ++-- tests/logbook_validation.gd | 6 +- 321 files changed, 1611 insertions(+), 706 deletions(-) create mode 100644 art/exported/creatures/fish_placeholder.png create mode 100644 art/exported/creatures/fish_placeholder.png.import diff --git a/art/exported/creatures/fish_placeholder.png b/art/exported/creatures/fish_placeholder.png new file mode 100644 index 0000000000000000000000000000000000000000..de69afb7d7040b41193b957beb8527c5d396e67b GIT binary patch literal 1964 zcmV;d2UGZoP)9@C00001b5ch_0olnc ze*gdg1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vG?BLDy{BLR4&KXw2B00(qQO+^Rl2pA3&B*x{qdjJ3j z0!c(cRCwC$oNH_pRTRg6ce^buyWO@(Tl#=%p@EkVlB`@AInO&yW@wsE!*yPoPEzO z`%ju~c4qI~x&M0}_uO-?APb=BECH4P%~H@z7C~gd;8y`R0m}dnPy$Q`oaz=&$Y+3l zV71+e(sU|-Dxe$al!Ab53DWdY{ip&~0Zl+7P#j~kXMtPnNR+1Y5b!W?IdB4a0r*%7 zd}$|0k>LP}fHGh*upGD%m;+QK_>s0EO4IpLX@s$O9e8@IB#9JutN@q-%vCdIj*^gB zim+rO?L=uh?Z7mXTYiv&>r+OMl9ma|W~>HoSH$F}aT2GLC`~6HSOM&?_>-lfeG^Gi zUoJIM8Uali_=z?%1t}p)(|HeA7sXG0l7hyB5Txnkjj<&aK)uqjOVl;HqZ_y_(L`xF zD}n7Xj6o2nm4eQg2~zf?8dwM{0IpDKtQN>i!XWA?u$S$?g5iOQb4~VzS`NgDbyBb; zDuR@>lmhdV%37g5=aXG{Mhad{6EVa1Rti>FB1lO~4X_BfP5m#8w+F$&0{(5U;QYx# zCQk2T!jzMCBB>A1{!i_xMf57=B6||}{C+8n_Jqm93za*(N_k*c0R@S8y8lcW$6l;w zVCx0ptA4ki%BF*MlcqK)Xc$LYHUjgLxJ0Oyf=&_P;Z9&Ga4Ya2Fw<&_0k50WJEzgJ z-9^oYZanjkM3kKFUG@BRPq+}yZarc*NdoYzN!kTmn*?bwwL>BTIoAL$0XK|^ahc*= zTP?p|R~z>I)u(?9lb(a~E=NBXVanK3iqeJ8q+rch@tgs?p&S5bG?Mer*7C^8d~bbj zsAI!aLiMMn;|3m8u5(lv8YrUooe2@IotC3jS)R*F&E~Ta?=4+)Do4u&%p4&|)0qf7 z0^A?Vdc*1VQL_Gg#A}na(PTIZ1}R<8h5Igln0m9J{YfV-8S&yYoyUPq@w8^u24#qw zZ3{?&5SmUcupcOow?QjjTn^C_v=aC_6JNmBQN_tmD*>oj(?!v=&a5NIi4o_@IQ+4G zKHg6*IGQ~h>zMRZC3R2yl2s%*f!~1h82dKn-dbM?zN2LX&gD^1ex3mmw-(g! ztQ*WGN8wLG!#PsWtm*uM5w(sQ{(TM(T~mj1?o=+h+lPDZ0Ipf5Ol?%a>&APioPicM zfdL0YeGdL@aWdHAAb2Xe^|EX25Yu1YpNVR0ybaFd5w{yOoj)a=g1dfN@SWUaqbPfWuBV9YQyMf~yCJ|^)euAo_R;Tv0vy?78k(R}A ziZPPBC@f~IJPo{J=81JYTaJHkV%46jX$a3^A0-QWvM$bMCRtKk$o&vemVx|jW$ofS zQefFj3-$8y+(C*Od=%FBD5&VY7$gO=l&hE$7d0IpP-ry*5W3D8MxHxpX`OVDVkBuX zR)QSBN5GxAu}q$O9d~ZFrqc*~Lt-*1b1={&g|XE=;vB`%*w4UXU|()r6Na5(-Yc>1 z_631f;AW-nBt~X_4zc5Xl2rn!Y}1v%a~L_?=~$Tu6Hs083~(1lp;;=?Aq90QsZrH* zYJhh!Qf5U4&EW5)F!BN;g}PGd93;X9nW?`MQm`7R1GZ&|>f10(&Um3Nl3Vi9nYJ=~ zB~iCyl$(2ONKUg9EVUXmPB6NpV2W)HvQVWPj{z%fQ2f;otdSzzdrBcm)n-+F!UjjU z+^gL6`V@xvbzn2_mJ}Se*w@x1I1a0%;43oWD439HwI+ISWjVDj6($pyh)mCqI void: ) assert(player != null) assert(catalog != null and catalog.candidates.size() == 316) - assert(LogbookCatalog.ordered_species(catalog.candidates).size() == 63) + assert(LogbookCatalog.ordered_species(catalog.candidates).size() == 313) assert(sale_service != null) assert(shop_service != null) assert(session != null and session.is_host()) diff --git a/tests/fish_catalog_content_validation.gd b/tests/fish_catalog_content_validation.gd index fb5f9e4..4a252b0 100644 --- a/tests/fish_catalog_content_validation.gd +++ b/tests/fish_catalog_content_validation.gd @@ -37,6 +37,18 @@ const PelicanBuyer = preload("res://economy/buyers/pelicans.tres") const StarterRegionScene = preload( "res://world/regions/starter_island_region.tscn" ) +const SharedFishPlaceholder: Texture2D = preload( + "res://art/exported/creatures/fish_placeholder.png" +) + +const ACTIVE_CATALOG_COUNT: int = 313 +const INACTIVE_CATALOG_COUNT: int = 3 +const FISHING_SPECIES_COUNT: int = 310 +const GENERATED_POND_COUNT: int = 33 +const GENERATED_LAKE_COUNT: int = 20 +const GENERATED_RIVER_COUNT: int = 53 +const STARTER_POND_COUNT: int = 106 +const OCEAN_COUNT: int = 204 const ORIGINAL_IDS: Array[StringName] = [ &"bluegill", &"bass", &"carp", &"sunfish", @@ -82,23 +94,6 @@ const NEW_FRESH_WATER_IDS: Array[StringName] = [ &"bowfin", &"sturgeon_lake", &"gar_longnose", &"paddlefish", &"sturgeon_shovelnose", &"gar_spotted", &"lungfish_west_african", ] -const GENERATED_POND_IDS: Array[StringName] = [ - &"bowfin", &"gar_spotted", &"lungfish_west_african", - &"catfish_channel", &"catfish_white", &"carp", - &"goldfish_bubbleeye", &"goldfish", &"bluegill", -] -const GENERATED_LAKE_IDS: Array[StringName] = [ - &"sturgeon_lake", &"trout_golden", &"chub_lake", &"saugeye", - &"walleye", &"goby_round", -] -const GENERATED_RIVER_IDS: Array[StringName] = [ - &"gar_longnose", &"paddlefish", &"sturgeon_shovelnose", - &"trout_cutthroat", &"trout_rainbow", &"catfish_blue", - &"catfish_flathead", &"chub_european", &"chub_flame", &"sauger", - &"trout_steelhead", -] - - func _initialize() -> void: call_deferred("_run") @@ -115,21 +110,35 @@ func _run() -> void: func _validate_generated_habitat_pools() -> void: - var expected_by_pool: Dictionary = { - GeneratedPondPool: GENERATED_POND_IDS, - GeneratedLakePool: GENERATED_LAKE_IDS, - GeneratedRiverPool: GENERATED_RIVER_IDS, + var expected_counts: Dictionary = { + GeneratedPondPool: GENERATED_POND_COUNT, + GeneratedLakePool: GENERATED_LAKE_COUNT, + GeneratedRiverPool: GENERATED_RIVER_COUNT, } - for pool: FishPoolType in expected_by_pool: - var expected_ids: Array[StringName] = expected_by_pool[pool] - assert(pool.candidates.size() == expected_ids.size()) - for fish_id: StringName in expected_ids: - var fish: FishDataType = Catalog.get_fish_by_id(fish_id) + var freshwater_ids: Dictionary[StringName, bool] = {} + for pool: FishPoolType in expected_counts: + assert(pool.candidates.size() == int(expected_counts[pool])) + for fish: FishDataType in pool.candidates: assert(fish != null and fish.is_fishable()) - assert(pool.get_fish_by_id(fish_id) == fish) + assert(not freshwater_ids.has(fish.id)) + freshwater_ids[fish.id] = true assert(fish.is_allowed_in_water(WaterType.Type.FRESH_WATER)) - assert(GeneratedPondPool.get_fish_by_id(&"pomfret_white") == null) - assert(GeneratedPondPool.get_fish_by_id(&"mackerel_atlantic") == null) + assert(freshwater_ids.size() == STARTER_POND_COUNT) + assert(PondPool.candidates.size() == STARTER_POND_COUNT) + for fish: FishDataType in PondPool.candidates: + assert(freshwater_ids.has(fish.id)) + assert(OceanPool.candidates.size() == OCEAN_COUNT) + var ocean_ids: Dictionary[StringName, bool] = {} + for fish: FishDataType in OceanPool.candidates: + assert(fish != null and fish.is_fishable()) + assert(not ocean_ids.has(fish.id)) + ocean_ids[fish.id] = true + assert(fish.is_allowed_in_water(WaterType.Type.SALT_WATER)) + for fish: FishDataType in Catalog.candidates: + if not fish.is_fishable(): + continue + assert(freshwater_ids.has(fish.id) != ocean_ids.has(fish.id)) + assert(freshwater_ids.size() + ocean_ids.size() == FISHING_SPECIES_COUNT) assert(GeneratedPondPool.get_fish_by_id(&"gar_longnose") == null) assert(GeneratedRiverPool.get_fish_by_id(&"gar_longnose") != null) assert(GeneratedRiverPool.get_fish_by_id(&"goby_round") == null) @@ -143,7 +152,7 @@ func _validate_weight_based_display_scale() -> void: continue assert(fish.is_selectable()) assert(fish.weight_min_lb > 0.0) - assert(fish.weight_max_lb <= 1000.0) + assert(fish.weight_max_lb <= 500000.0) var minimum_scale: float = fish.get_display_scale_for_weight( fish.weight_min_lb ) @@ -172,10 +181,11 @@ func _validate_weight_based_display_scale() -> void: func _validate_catalog_and_pools() -> void: assert(Catalog.candidates.size() == 316) - assert(PondPool.candidates.size() == 26) - assert(OceanPool.candidates.size() == 34) + assert(PondPool.candidates.size() == STARTER_POND_COUNT) + assert(OceanPool.candidates.size() == OCEAN_COUNT) var active_count: int = 0 var inactive_count: int = 0 + var fishing_count: int = 0 var catalog_numbers: Dictionary[int, bool] = {} for fish: FishDataType in Catalog.candidates: assert(fish != null and not fish.id.is_empty()) @@ -194,8 +204,13 @@ func _validate_catalog_and_pools() -> void: inactive_count += 1 assert(not fish.is_selectable()) assert(fish.display_texture == null) - assert(active_count == 63) - assert(inactive_count == 253) + if fish.collection_method == FishDataType.CollectionMethod.FISHING: + fishing_count += 1 + assert(fish.active) + assert(fish.display_texture == SharedFishPlaceholder) + assert(active_count == ACTIVE_CATALOG_COUNT) + assert(inactive_count == INACTIVE_CATALOG_COUNT) + assert(fishing_count == FISHING_SPECIES_COUNT) var chum: FishDataType = Catalog.get_fish_by_id(&"salmon_chum") assert(chum != null) assert(chum.get_season_text() == "fall") @@ -233,12 +248,12 @@ func _validate_catalog_and_pools() -> void: ) == chum ) seasonal_collection.free() - var inactive_fish: FishDataType = Catalog.get_fish_by_id(&"mudskipper_atlantic") + var inactive_fish: FishDataType = Catalog.get_fish_by_id(&"crab_blue") assert(inactive_fish != null and not inactive_fish.active) var inactive_pool := FishPoolType.new() inactive_pool.candidates = [inactive_fish] var inactive_context := FishingContextType.new() - inactive_context.water_type = WaterType.Type.FRESH_WATER + inactive_context.water_type = WaterType.Type.SALT_WATER var inactive_collection := CollectionLogType.new() var inactive_selector := FishSelectorType.new() inactive_selector.use_deterministic_test_seed = true @@ -424,11 +439,15 @@ func _validate_authoritative_water_filter() -> void: ocean_region.location_tags = [&"coast", &"ocean"] var stale_salt_pool_region := FishableWaterRegion.new() stale_salt_pool_region.water_type = WaterType.Type.FRESH_WATER - stale_salt_pool_region.fish_pool = OceanPool + var salt_only_pool := FishPoolType.new() + salt_only_pool.candidates = [Catalog.get_fish_by_id(&"bass")] + stale_salt_pool_region.fish_pool = salt_only_pool stale_salt_pool_region.location_tags = [&"starter_pond"] var stale_fresh_pool_region := FishableWaterRegion.new() stale_fresh_pool_region.water_type = WaterType.Type.SALT_WATER - stale_fresh_pool_region.fish_pool = PondPool + var fresh_only_pool := FishPoolType.new() + fresh_only_pool.candidates = [Catalog.get_fish_by_id(&"bluegill")] + stale_fresh_pool_region.fish_pool = fresh_only_pool stale_fresh_pool_region.location_tags = [&"coast", &"ocean"] var evidence := {"discovered_fish_ids": []} assert( diff --git a/tests/logbook_runtime_validation.gd b/tests/logbook_runtime_validation.gd index e411fef..8b19f92 100644 --- a/tests/logbook_runtime_validation.gd +++ b/tests/logbook_runtime_validation.gd @@ -49,20 +49,20 @@ func _run() -> void: assert(not hotbar.visible) var entry_buttons: Dictionary = logbook.get("_entry_buttons") - assert(entry_buttons.size() == 26) + assert(entry_buttons.size() == 108) await _capture_if_requested("-unknown") logbook.call( "_select_category", WaterType.Type.FRESH_WATER ) await create_timer(0.25).timeout - assert((logbook.get("_entry_buttons") as Dictionary).size() == 26) + assert((logbook.get("_entry_buttons") as Dictionary).size() == 108) await _capture_if_requested("-fresh") logbook.call("_select_category", WaterType.Type.SALT_WATER) await create_timer(0.25).timeout - assert((logbook.get("_entry_buttons") as Dictionary).size() == 34) + assert((logbook.get("_entry_buttons") as Dictionary).size() == 202) logbook.call("_select_category", WaterType.Type.FRESH_WATER) await create_timer(0.25).timeout - assert((logbook.get("_entry_buttons") as Dictionary).size() == 26) + assert((logbook.get("_entry_buttons") as Dictionary).size() == 108) player.collection_log.mark_discovered(&"bluegill") await process_frame logbook.call("_select_entry", &"bluegill", &"bluegill") @@ -110,11 +110,24 @@ func _validate_save_round_trip( assert(catalog != null) assert(catalog.candidates.size() == 316) var active_species := LogbookCatalog.ordered_species(catalog.candidates) - assert(active_species.size() == 63) - # This test intentionally round-trips one catch for every active species. - # Give the fixture enough combined capacity, then bypass per-catch carried - # inventory admission while constructing it. The inventory layout still - # reconciles and persists the resulting placements. + assert(active_species.size() == 313) + # Keep this runtime save fixture within maximum player capacity while the + # focused catalog validation exercises every active species individually. + var round_trip_species: Array[FishData] = [] + for fish: FishData in active_species: + if round_trip_species.size() >= 59: + break + round_trip_species.append(fish) + for fish_id: StringName in [ + &"catfish_blue", + &"catfish_channel", + &"catfish_flathead", + &"catfish_white", + ]: + var catfish: FishData = catalog.get_fish_by_id(fish_id) + if catfish not in round_trip_species: + round_trip_species.append(catfish) + assert(round_trip_species.size() == 63) player.inventory_layout.restore_backpack_level( PlayerInventoryLayout.MAX_BACKPACK_LEVEL ) @@ -126,7 +139,7 @@ func _validate_save_round_trip( assert(player.cooler_capacity.get_level() == PlayerCoolerCapacity.MAX_LEVEL) player.inventory.set_inventory_layout(null) for index: int in 4: - _add_test_catch(player, active_species[index]) + _add_test_catch(player, round_trip_species[index]) assert(save_manager.save_now()) var no_catches: Array[FishCatch] = [] var no_discoveries: Array[StringName] = [] @@ -135,18 +148,21 @@ func _validate_save_round_trip( assert(save_manager.load_player_data()) assert(player.inventory.get_all_catches().size() == 4) for index: int in 4: - var original_fish: FishData = active_species[index] + var original_fish: FishData = round_trip_species[index] assert(player.inventory.get_count(original_fish.id) == 1) assert(player.collection_log.has_discovered(original_fish.id)) - for index: int in range(4, active_species.size()): - _add_test_catch(player, active_species[index]) + for index: int in range(4, round_trip_species.size()): + _add_test_catch(player, round_trip_species[index]) assert(save_manager.save_now()) assert(player.inventory.replace_all_catches(no_catches, 1)) assert(player.collection_log.replace_discovered_ids(no_discoveries)) assert(save_manager.load_player_data()) - assert(player.inventory.get_all_catches().size() == 63) - for fish: FishData in active_species: + assert( + player.inventory.get_all_catches().size() + == round_trip_species.size() + ) + for fish: FishData in round_trip_species: assert(player.inventory.get_count(fish.id) == 1) assert(player.collection_log.has_discovered(fish.id)) for fish_id: StringName in [ diff --git a/tests/logbook_validation.gd b/tests/logbook_validation.gd index 7eca559..a621a8a 100644 --- a/tests/logbook_validation.gd +++ b/tests/logbook_validation.gd @@ -43,7 +43,7 @@ func _run() -> void: func _validate_catalog() -> void: assert(CatalogResource.candidates.size() == 316) var ordered := LogbookCatalog.ordered_species(CatalogResource.candidates) - assert(ordered.size() == 63) + assert(ordered.size() == 313) var previous_number: int = 0 var catalog_numbers: Dictionary[int, bool] = {} for fish: FishDataType in CatalogResource.candidates: @@ -171,7 +171,7 @@ func _validate_page() -> void: var entries: Dictionary = page.get("_entry_buttons") assert( entries.size() - == (26 if category == LogbookCatalog.Category.FRESH_WATER else 34) + == (108 if category == LogbookCatalog.Category.FRESH_WATER else 202) ) for fish: FishDataType in LogbookCatalog.ordered_species( CatalogResource.candidates @@ -222,7 +222,7 @@ func _validate_page() -> void: candidate.display_name ) ) - assert(silhouette_count == 60) + assert(silhouette_count == 310) page.call("_select_category", LogbookCatalog.Category.SHELLFISH) await create_timer(0.25).timeout From 7f5a522ae57ea3b910a6387a6dc5d29d758ff6e0 Mon Sep 17 00:00:00 2001 From: Voyager Date: Mon, 24 Aug 2026 12:01:20 -0400 Subject: [PATCH 48/90] Add finished creature artwork --- art/exported/creatures/101.png | Bin 0 -> 6688 bytes art/exported/creatures/101.png.import | 42 ++++ art/exported/creatures/102.png | Bin 0 -> 8589 bytes art/exported/creatures/102.png.import | 42 ++++ art/exported/creatures/103.png | Bin 0 -> 2764 bytes art/exported/creatures/103.png.import | 42 ++++ art/exported/creatures/104.png | Bin 0 -> 7444 bytes art/exported/creatures/104.png.import | 42 ++++ art/exported/creatures/105.png | Bin 0 -> 2799 bytes art/exported/creatures/105.png.import | 42 ++++ art/exported/creatures/106.png | Bin 0 -> 3777 bytes art/exported/creatures/106.png.import | 42 ++++ art/exported/creatures/107.png | Bin 0 -> 2873 bytes art/exported/creatures/107.png.import | 42 ++++ art/exported/creatures/3906.png | Bin 0 -> 2742 bytes art/exported/creatures/3906.png.import | 42 ++++ art/exported/creatures/4401.png | Bin 0 -> 2936 bytes art/exported/creatures/4401.png.import | 42 ++++ art/exported/creatures/4701.png | Bin 0 -> 3770 bytes art/exported/creatures/4701.png.import | 42 ++++ art/exported/creatures/5702.png | Bin 0 -> 1760 bytes art/exported/creatures/5702.png.import | 42 ++++ art/exported/creatures/5901.png | Bin 0 -> 1940 bytes art/exported/creatures/5901.png.import | 42 ++++ art/exported/creatures/6103.png | Bin 0 -> 5998 bytes art/exported/creatures/6103.png.import | 42 ++++ art/exported/creatures/6804.png | Bin 0 -> 4219 bytes art/exported/creatures/6804.png.import | 42 ++++ art/exported/creatures/6905.png | Bin 0 -> 6838 bytes art/exported/creatures/6905.png.import | 42 ++++ art/exported/creatures/7403.png | Bin 0 -> 3144 bytes art/exported/creatures/7403.png.import | 42 ++++ art/exported/creatures/7508.png | Bin 0 -> 2019 bytes art/exported/creatures/7508.png.import | 42 ++++ docs/ATTRIBUTION.md | 36 +-- fish/species/betta_siamese/betta_siamese.tres | 2 +- fish/species/bowfin/bowfin.tres | 2 +- .../chromis_blue_green.tres | 2 +- .../clownfish_ocellaris.tres | 2 +- fish/species/crab_brown/crab_brown.tres | 2 +- fish/species/gar_longnose/gar_longnose.tres | 2 +- fish/species/gar_spotted/gar_spotted.tres | 2 +- fish/species/hogfish/hogfish.tres | 2 +- fish/species/ladyfish/ladyfish.tres | 2 +- .../lungfish_west_african.tres | 2 +- fish/species/mahi_mahi/mahi_mahi.tres | 2 +- .../mullet_striped/mullet_striped.tres | 2 +- fish/species/paddlefish/paddlefish.tres | 2 +- .../salmon_atlantic/salmon_atlantic.tres | 2 +- fish/species/sheepshead/sheepshead.tres | 2 +- fish/species/sturgeon_lake/sturgeon_lake.tres | 2 +- .../sturgeon_shovelnose.tres | 2 +- tests/fish_catalog_content_validation.gd | 34 ++- tools/art/export_creature_art.py | 230 ++++++++++++++++++ 54 files changed, 1013 insertions(+), 35 deletions(-) create mode 100644 art/exported/creatures/101.png create mode 100644 art/exported/creatures/101.png.import create mode 100644 art/exported/creatures/102.png create mode 100644 art/exported/creatures/102.png.import create mode 100644 art/exported/creatures/103.png create mode 100644 art/exported/creatures/103.png.import create mode 100644 art/exported/creatures/104.png create mode 100644 art/exported/creatures/104.png.import create mode 100644 art/exported/creatures/105.png create mode 100644 art/exported/creatures/105.png.import create mode 100644 art/exported/creatures/106.png create mode 100644 art/exported/creatures/106.png.import create mode 100644 art/exported/creatures/107.png create mode 100644 art/exported/creatures/107.png.import create mode 100644 art/exported/creatures/3906.png create mode 100644 art/exported/creatures/3906.png.import create mode 100644 art/exported/creatures/4401.png create mode 100644 art/exported/creatures/4401.png.import create mode 100644 art/exported/creatures/4701.png create mode 100644 art/exported/creatures/4701.png.import create mode 100644 art/exported/creatures/5702.png create mode 100644 art/exported/creatures/5702.png.import create mode 100644 art/exported/creatures/5901.png create mode 100644 art/exported/creatures/5901.png.import create mode 100644 art/exported/creatures/6103.png create mode 100644 art/exported/creatures/6103.png.import create mode 100644 art/exported/creatures/6804.png create mode 100644 art/exported/creatures/6804.png.import create mode 100644 art/exported/creatures/6905.png create mode 100644 art/exported/creatures/6905.png.import create mode 100644 art/exported/creatures/7403.png create mode 100644 art/exported/creatures/7403.png.import create mode 100644 art/exported/creatures/7508.png create mode 100644 art/exported/creatures/7508.png.import create mode 100644 tools/art/export_creature_art.py diff --git a/art/exported/creatures/101.png b/art/exported/creatures/101.png new file mode 100644 index 0000000000000000000000000000000000000000..e6e431c4e13d5ce8ee18de9eeab71b38914e5e14 GIT binary patch literal 6688 zcmbuEF$Qn-7Vb+I2h6$0@9t*NC?6ZCMn%AkVZmEVD#wc`}-T7 z7kBp;+`af*qMnW#9yT>L006)PsVf`&ml6LHCdPk0C~H3f08s6NlogDEicX4vL1a#g zBQHXoomqwGsOXsJ8S<|46ZND-M9K<%9lZZKk9V4!mW)m0CMu$wvS&KJA2oe%V61>9 zy{h6$!mCrnWPF3CsNQurc5*4RKe<*|sEUeifBqyhy{`R{bkeoqbT%u1e-5EC6W z^8XXlqI>{7=A4YSP^GBSIP;I_&B{C|Ofi?a9?Y@poh~zo4xWiOoXY;m6n*R`koQHF z>HvClJ=`+fz9*N5xM{Kh)PKuWnn5885znt#f~xQ);sHD^f9^Ki_I`wQc;bmDTD-e$ z>2s6esq}$HJ`4Z;+*nHXbJb@}CU42omb!)qW-a4<4L^EWob*LNPH?4~eU4l_wV7lW zA$$2->zR6!T1D}rfbRe(u#X7v+#wvt3Q8I?uElRjBt|-9DkWf{d1z*{FOU16YotZ*i%a8w&6A82j{t@lb;+3-+m?; zC9rR4`tN;K4wSOt;;z?6pO-3sUY<%3yY;c3s3(Wbpu@TO{F$>uK}GYHv@$nK>^?sm zx4V(ji9_=~Ka1_@<$;Xx)Dwrs%c{aFj@^XGK;TEumk|H`Z`op&?al>KLI>B6`RKjd z%*kK9ozkZ+5POZI}pY)sy7d>Sa93mj*P7wJWM{ z8?nLE;%->bRvE>qUEyjdXT)*gL;RRs-O{J9uDYMQ4B1GtSN~} zGEETw?bWwBZ9{$*~ z^&hU0hkhmM+=kt34g*`PyJUu*Ky_k%VR&4*n<$T&0k$o`tQ$sdy?rfiv8`6xqy&F9q%}N15 z=zXGZs=yG7yQ3#<1Tt!LyeX=|;G=mX`&M#sU_#)5Jny|;Bn1JVU%81t z3c)&M{Ip;Fd+E*!T)r@?{t~6GW6bhN1bHg+BxqCTgo>92>J!o z3^IdL|81r*aDDzWheA-|NYW`%BuWx}c_{GO5qm_8(Q zmiu-@0sgWn%~sG`h&7qg;-wDn_J=~X-=)z-FYWJmfild9GH4~qKiC+zMAkLma6&Iwj6p2WGb_D_$bv+i z%#tG7uv)^aE`P-y=jqTL%f>@}0U6^yG%dErHJA#g z!xAXN{mLuz<@xwRkkk|%`TL>C{~~NV5j<|U*kCK%QiFACTSHxcQNYMf&~|Zq@y-o907Hfx_vWi{9&Ky-yGh!d@l}7->Xr(t zVp{o>{*lGXGH8rYq59=ZXR9;$2eEkCn};8a{7*XtzcLQ<4FE^Zaxt>$eTPgAm9$gz zYcRu_7Lifu08;P|D2@|c0r`lHllXXfegW_a`G75p?4VBGs1hKs(~5hwWc4p%i2(W7 z_sG`NGQY+zi`{8Wh1OucZZD|blF!Nt7Dfn!m(<;ZzkBZo!K;vH@;T(XdaAANnqI#( zq;ERzi*Icyl23p#|1#(;6kB5kMtF;8X2!qS)!|T$vF9~nT$PAYqTP#^wH5H!r{z~# zz;FXPYjdhbJscT6U!6v3z~}}m>rQ_W8lW2B5#LvZ(>#3dfOt`|QSGV{h1iT9 zVuYzW^C7HlV?KBnfpkUn@}mDZhDpw{VnR5~qhDa`qCCI9JjkeP=)DrHZ^n8Gp%nPu zED^vqiHyCuUO8XbQZ^3+h|sG908L>Ao}_a_83}tNjmDxB0Az^XWKWX;kUV_ zJnBqR@?Zfp#~7BHplQbmOhKuGb=@*FVQw!*vXh5>)ODL)7j1#ceM2P`ZIb@9^_Fhx z_Fny@+R5;*H))qqB%z0>({`qh5sSluCT+X^44wifqXMUelNVv(x2z@~FiB2W)BRni zn9=r}6R*)CSEDq}-ys$zixCsY=WSvgl0+gm=O!w`E|st~h?B67+Op%&Z%0|NT~$o? z`!vzIYOq;B{%vM=(4!Z{Me@_yud^=poSAZJ^iZ6x%Gllt=GTaIda-Wudq}s6^MtZE zk6;q4J}_y>S+tG$-!*#+voNu2KCxt_eO=whb~U;P#Z&g|j8W3+Z%_K7G=c_@xHl-A zN|^UnJNORACmMeO(?E7e+^Bdq+4W$Ay5lRINb~`^xfJV?_LjTYQVP%ED8H)0Q5iR5?|-$`l$%8EGL8p+sMA3 z*Yki92K-d#mK>o%r0E*5wdAojiA=(Tv0;)l(A*{W(id1YG0y(5A3_b4?L~K-cqe^s ztWM1&m7=$3tFN%s7{1wyZY8&Y(x%|RcDlRJdLb<+hHo6GApHzsGV$7^@fJD)l$Yf{ zZ!GTdH`&4&5kf^thjMfjb}5vum^h^|I%0I3j|->k)K@_kKQ@cu)qH-cb#6BHZm%8? zQqDsyV@74QH@vk?iQ|&*(6Djh=DStSzMCNzaGI&T_5q(xk#kN?A8`HlIA~l@1G-rs z^_V!SGC$$Sw!VK?7hx*Y8FC5p+yDi8Iw!{J?$X`HhX}!6lY$}}48CX(yIJExEs{ZT zRRv}Wqq~OGAX4L6H?H+Fp|fnJ;aR;L*2h<{uff4kQ&D0b;!_&>BrxUXA@ssfqE+E% zbxjFlO65UNfK)+o}qNVFc0@3G)nrFi}v-rtsDWQ?de7|pHN_e^o zOrc>&Z3#eggU8P+W2 zNp@Or=*Xbk^Zh$239sI3v^h4P(rS!`Xh=O=xtG~~$6G{3+G00y`)13Qf%H$gX&Q>R zSku>C=ISO=f*vb??ML7*V(MxAst)E}xxlJ=y&)*8OieTqdKmVr**F6u2U>jcck(2z z>b0y}!@nmb0}=%MAe}qeSUt^UQ0?q-{)Qjxi5b|}D`y|{KO#A<7wa&U#BNq6jFJ^% zz5>M9#^uEaz-FvG=FJ5=GvEc^^LWyv#{TpT_vV%NeaStTFFHAqkCIr|(+%IaDjG3- z&^fJZ@%8qxw(khw9AT!ZTrIh#IhD1)qwR`;ZQ4MA2{55hXuK~S{x)RYKH%G(Z(=WD z+tZOtXrQ(DOpPer9AETmurGxAbX?2Psci3C;?b5adT$?93Q8DotBQnfwy5;A6Jv7A z3B!)S?%$bU+a-LHT?+ViRJ&20w)>1{;&6_`{ciKa!m zR{2Z?kLHxj=1oyd;W ztkqs2Y^zQ2k{A$nGlzEXpN8{o5RvjDNcdwMzR^K=t|%=)@-V3E4SAWNI?|(EGQd^f z$f8S}twY`niH=q3s*U{QY4IM|yyUY%K^_rVy}@y0N4R%TPWn+x`juu$ z|2Z~BXZF2cmz#z<-&&YsT?vn+CC^q|GA;VYo*6jBbJfLzp_B&4(CxPkxS94_V#@^rpK_PZ2#}x^RYbiiZE6<|pUWF4<7JCnycCY7&4<%*kU_1s5O^k2X z8<3@HOgQ4j1zg*YkGf_tNTj|!7W~u<$8Yq5ShbapA$*e`gINO8wM6e0-s=P*ZknF> zX+9!@xHy}OcalKd^~mQs7S$BI+CzP*Zh&|GsNepuGQLhb+a67p!}i*9-yFMAp8Y8- zn6!HRUUy^KT8?3z&%AHd<8M`&l7*m8F72d}o@Nu6oa!8I&+>Qbox_-mv3NBe#ioc5 zhHkIgTQnoB3VNMAC#<%SmAT$-tTfn(1Ggf4Xws8!7_YtMu6l0tTIy)zj#KrZ*s*Vw zrhZn6NIlhX_H}(h^w?}8bNpD!_#`du#JQpmfPU?G#D3~YSzgAzRdmTGOH^;Mk*)gA zUwf)hA|OEr{iK5Z7YaVDqX=Qk!8_n9xWc44&4!vWkBExf2xUa+fOmTOX%>-7PU{F+ z-=})J%mIInQ4gF>Y1;+IO$17@-~JkreWX|oV0w3&V}=hGN3I+!mPId{WGAm(chKsH zOnJzX1#pa}M=50x0MXgE7wEq`z$~r#b))$ey>bdw*Z2*N*blH6smFd? z!pQ~}MjMvOgFn>C({E0^g@*(L)2eO2-;y)8;gO{l*RShgJFTww-zh#ETPLC+i%rgA ze$>;85~+%0rxUCo$pCe9g4xoA0Mw8*ND+PG;h?p63(NC+%VUujg!T7m>2DstWW{>I zUM<-y(q!^ZZ@s8s%VjJN!WSBNY9h`Oyfx+z8OH>-4KmF17O1B1xlwHxaIz3aaNmYZ zU(j#mz*ZcE@N~HeNh&{?!$(?rZPq`Aj}9&Q=2*0eezjaYu@d7LU}L<}5!=sz4M8#N z#rjC|;5vr3-hfWlKeMyQ#316n7Zh=T{F{%czjG_O%I13+KJ(JGeE#*^(x;TPC9LUN zcgc42TC^xqgHhs-@0BS37oqphqfCldgy2-mr? zngiSC0VbPA_n!RS0rdihWMyQt0y(QA%794}J_1cmZX%k+1Q>6aHpXBS|29c=*5>Ps z5szIlJW0%57~&8$HI^`J#=b)d;esPec?fcByp>Y)2db_G3If)9mDU6i^qB;rkFm(Ql1K!9RQ$_f@QIOZD5^uR%0?Tu42tn ztDxSRpQADUqzTpO3ZsoA`Ox2O!=}OZswav$+WcWDpM%dMPJY*JlvDVrzGzq5S_&cS z@|wcwi=94joRDXn2E;JXQs=M&0>hQdHxsLWG~oE;_TyUR z*_`B(({=nmogcve>XbyN+`p5yY=Q#54R zMb{d$8xAP$$Mz3!$@{16!p*Hg*ybHhWO)NOT?>2MmHn(8+^A3h-~G#WWKW!y3-*<4 zb=9MC;VQQQ+ci^|m}BeC<6aZKV`A?nn=2;KgCH?cp8@~q9Q3U}FJf{G+;++MdP$^; zzxG|P5#fMid@2}p7kz8zeui)*3a`k$AG4x`8SIE0y zqu1*y@I5(@ven^_y7DUZk1@rRhhM5$rc2<4r_zmh{Uw=b=m9zsH4F-~5pOi1XG$s3 zRc{w=39!zf&mF0i&DfY6gFBP@3l-8crb^tJ;w%Q7D=?(BY9Rq=V?M}<*3yn;QI&`Vy{;Vz@Kuj0_~nk;`~ss3V&)V`Zx<;9IFiK`}dGS+H!)aw8ir*W2H7Ev2Dwy z{5hU1xF|%8J5O%6%S%+(y17Zxt^_L?s z6+_tBM4myNHx{F;jTK;xc3Z08Emri+Jd7n9nf0c|0*AN#GsjKOVE|6Rn-u{I&dar} z-YHs80XLJaRx|=uD@n^hGMK4b%R_4vhLCyYI1OmXJ#yHq;B>zcvEUJ z<=p!EPx$k5n+2_bi%7B1N!aw-s9PUi@0J+Lf0*HEEk;jSXLUC-#A=x)L`F5sD2T{O z1U*B_d{4OsQ~_%A_5ql#-O_1rNuSK|mWVFgdFZ~M{j23C%OP)u#T;Luw8>z|%aiTIhv^J`c@M&JRz%?!VvF`{Z7Ku-_1a~H`pC&qk&4&Kf4%5jU2t~}41 zJ!kXQ4AxHO8@;e-mv3SVd-PUc{|Rak^hp4L(%_s+H8c|HmVU8s0v?x*bcn1v(I&kztgeAS6)$!SSpP?FZ32MyS^T9GmTQ&zFs+eUzMrt zU4|}M=T`FLKmH9$&2UqU7=^zi|B(PYq9_J~)uDB*c-dQcU+gY5Y>lyGzsH1xZ|zqD z_6zGOTS~%j1AhsG2mPQ8-LN&0QHC(LF{C zMh*7!Z9LDpf86^5?mg#x&gXu4qo+kf#YP1H0BByleEuH*0Q@%s0kTUj?>0 zyYlefcUUC0R=P4Nex)J2c?*Y&ycP%k$5WW7_ULwD;LP<{+V6j5pQJO?ece{6_9RV5 zZ!EJ(`2g2Rd6)kGIueUlKIG3Z9d(UelE`s)I|J}QKe}#PK)}bc=d}8QfODXlktp{8 zX|&4@DO2M31w8)Q!HJ}$d&o<_jLDEtcj7n4VwMn`{1@OiKrVI2V*n-KJE`3IA>kIl z74RGw-Pl{jJV+m;jV#py=T!Wz@N;KnVX&l6NAbj*muL{j>lqvETsoETLl9ra0$+wHE`rS=SBTTvNHQMLDr_)jb z(UF`h(?TVU!|HRh>v)rm3#K1MS>(MlQR3B7PM@c_hOfw|HLUBvaq4 zL;P4GuA6S}4-F3|wz!rf?Uvw{d&K(E`?0Q1i)5zZ2(LYNm(pX+8-k4#akn<~4aR_L zah&-}baZ!WqTotByv0(cs;pH7K82y6>`yia!f4mlnu)iG+YC#$nUa&= zvvbC!ruw{RT%n~rJQf!f)i5(-<>Tk4=j3z{rf5vbo{^;FqF*tkHZeBJ%g^t<@(0Tn zuf?6I{;Yc^y^d^5f}E?nL~6rvzun%`5ZG1xFIXXNN-Ab}POoFCP?b&@*AFtFw~2{z zhFAkM9m%#cxh5TD7_i-9iG@g?O}Aj+&=9T6Y#M?1Wvwo{GUA#6I@Y#vY)1p&*?e#=qV1Q4)CgvxL z_Au@0g~^hp9+zNH;M3iFngkJa%hayxi`cyg(OssxV!jFsD!u}~K0F!Oo|>~zN>Ck1 z`Lz49SHIDkKX~-^bZtH^O>M7~)VON5{v5~1INBHF{*u&4)z5S_x>eEgBpP_=1elpI z9z=naoKZE~^L3P$r`Q#oGX5smtcgA*B`{tiibG4iW!liIpt<*H^BG^r&gn(oZ9A>C z@I0*otNF&_a_9p^zwNs+F6hVv)hh;pfV5}h68m!v1J%5UT&D!Aqu(Ttk(!S&1ud7o zdzZPJ4gH@wInR~S-t=G>*Q3wx%ikW0js{w7Vvg<-gmWQKs(W- zTh3Jt^Y$^-0I;pM`taa3zPTWuPjWv~O0wGBU5cWL8oXGN4P_#4`#LTq%7k;Ye#f=c z=B~;Wc*%Xf23>sDIra@;!HO?Q1>$+hJjnsf00Q9CwLc z&F8}iKR*2QSg{F^CjaSka5$xZBvZ4CvlZZR{lHs}DE*ny78Wa*e4R<$QNh%n%<4W} z3fW}QQUCKm2Eq7nDxO|*)8n9!LiQy=t>??d-ZcS+xz$7;bt&Ej%QmqrROuM*~B$h3zZ)*iMw>tl`YsLLYz6l7ouN% zXP|jp;wN>8SQ$Gr{cb7KwwRc=rptxEK? zRFbX3ECfd@*Fk%PW|}gX{JB>=of=R>ifa= zVw;!m9As@UJH<}-bsUzTKF%fNFQUHJED~2T0ERia-kUd5Jh(`vv>QVq7{Dnk(niF0~sZne(iBZz-kDNPmI{iTg*75HBhWn|c zMGmRN^QFK+&<`EeswuMD@-mhk!Te(BK9v{gOrePOS>}B3ei-tz3wp zZ{Nvf0Jq)Z;KzlaJ?~R4^TXMm=OpKup}kh;OX6Lp_{!Y^?Lei$ShmlpKCa-3yK+Xq zgf!YtE$XVlvWk%^gXVj@&jd)iUxL??LV9Q@P6p$-Rz_#5heySqYx>aM7hR#+VS55M zT)KYGTTw&uj>ZD43S%A)uPL$l)g3J7gn4} z81)?_9r(g>JH|V$EMS3zc@wBPWb$xDK2D{AVEH-~Xk!sLkV#9F9c_UyQu6DriNx zjAAcvj4GnsCC$@r3$e#kV=^r|5|TCA%qM$`j6%P^R1}wtfBX8G8SB8TC*3nanG-Cw zt`Vaw5O6dgtGbNHnR)8x*b{G-5{P6}@ReceMn7Z_ub53&ngK@$=01)I#cTr`A0YmN8>Fs|bN#GaSQz$%8$RRX%1FfuRlgM^C}ctZ$-F`19-2 zsSa(Z#goRXLJ6tm4C`&V1SC^X=WRMsxU?aF6Q2AAMymWdVx_p{M;;_l&;>c#2Ztb^ zBvj3Qi)Y8CyQ?^v9HA|$z$ZQDbmXDlJLHxP%>Tm%J*{T1r1GNAzW@T~6yfwz}c;SzmA5HB{M6$qWZqrf$eJmb8cFvrYO@qp!Q2 zc}?S|HqOj&frTc32JC}1&&h>ZIU+_<+FUJry-vJyFfe#vC?A;V*mXg3J|Z z`BSZHJco?~8wmlprX|nGDfKQcSe0pXbBfJulL$#shfGG}#KglSWcwXKOK^>-BEr*g zz2ZfV-1WlhXyw!{k(Jxf8nk-{%G$<~}2$6So z6U+?8Zl5b;2G3fXe@#jXa^y-oy@kN)+}^aME=l=|roL6|u#}V-;ciSQ8AKl1-dsj; zCuSM=t{Njycoy$t37rhNu?G_#)S?uLoi}H%+Ybi=9!mf1Ixf|(Dv%GLlC_qiJUa43 z$LvKB3866k<&--;Mz;dHnzq){sCWfsmolS@v7*nPKVKeOx}H1n$iyr{yE$MuWb5G{ z_K~Th9yhiBtbqIc6(q~=E+8rMbJUlI@3ez+GgTO^!F2&_Oy$ zXuxs>Z_LfVE(!!BHUtSaI=ISul55Vf&ll{brF@;08hfGB<^zlpUb?X`wz~Jb&EuoV=T3)3xE>F7H(?fx-f~ea2#Oz84V&<6U&t({XL%9-6tlrZHzt zk@R{@YDNwMgYg{k*Oad(L`0`P_Oyt1x9VCP9c>LC^$kr)8#lcyH zUt}WFJ<(*7b<|JsGF8syA+s9qW&-tptK8d1yN0H42nV&2nVF?(z{YXS~ph*=%01;=_ z$cck>bQkr<@}DApjm$cmC(nVT#^K=xnY;@UuidQ0yLXI@D@PdY-T49#daz5Es_+?i zbf}F+yv$?`XLBY069#%$KAldjQpZlRw9AX)8mD8TE6gbM1s^s=`5ZOuiVE z)#yVZh@-Boh{j}-!|J+?#^@GyF^%tyk&!bSiyQpE83juG1EmP!#SHpLoS@xXaVTp< zE-_}FXS5ft1apq$RwT=4bn9b3fW|sAj&(jUxw%TQZ%_8Uzo#|a`uk4O?Pz-m z^f8mmKHW>sNl<3+@Pzm7P`S`F+uBSzQ{SV#=1DziQ2^L!`p?r( z1ZUHBj76Q<1Ic;!i!%;A^67hTJ+8?6IZkcD{PeZA_RBQ6tm{mACHWCqJ86nYSNnYcQ)WEQ-*eUCJ|dyxdFBXO$nj;tXjB1geHcEHUd&oM%x z+Lw*NrAIDaYhLrk3d^2tja`DxRB=Tq9NzmixqO6D*JJvdj=}3Tlm)6r z3R!cg&!)OrElkLEKn5;p@2+iGe(XsD`pl*!&e*he|OcAXOb< zG&}PW2T82O0f?B1p8|)EZ*xA$O*o@b!sV9-iIooalM$Hv$$G_9s2>iG0Hb#JG=D_V zRR+<{$1?#$NCdS(LH7-UyMW{Qfwqn4*FKpvpQ_bF71-q>sc+mXv^feC8KwyBjMtCK3dcXnA z?ME62X5SVao;Y?*x49%6vG$)3D41{IK$+P5YU~|d2(B`7SoW0!C0$yUU21Ay=;o{W z4gBj(sN2SVOG~6vRY#dHj!kFi_d;S!$JN=)Ug*ia8&oRGWB;R9BOM!DE~8~NYdRfw zFv*c*7Cw25w4`zz)os_2pZqWf;&v0%`u;!Ir8v`BowCV)CPh$5)xb+SR3PT8vb@^|JS;-v6`3enSjrGy=u>5hMn8ShliP9su6ZlK=7iz*1% zbcIMQBrs*ZQB4w>htRB+3d)^W>&wn-D*n{ED~7MBG2x_2+3|G^Sk?ab}>L(auK zlI1ZetfVswl@ZxKJ9xOzT$c-~;MTI~m1A7gX`1H|aB$mBb0wTNjKmGM|GR8h^wHBb zWyjmKt1n+iBbI?dqa^o@pDF>BxX|-sXeP&)3srp;C-eTn?I~sQpRYQ5^eNhcO*`^5 z^|vmfh|!?n09KiM))_s**`z)lX#zh?nyJnHxo~6Ww0Ylj_^WtC1{lL>3qSe_e>Ns& zSR|-EzS3gJz+sYuR{LO1S6^2|2|>*&4_FB;?6QWy;)JLoo$uSa91>~JG}PMKyO zen+npN_yG6#zm)$YlmiQqVz~*Ha=&FWVIa>w?T@`G_?G%59U)rYSn&{lBUwT{cE1P zhif{r>CEiRe>|eq^U^g>?r5P}q0J}SN_dU~G9y`^8lnPGZ_>&MJYt+a;fWPMScRu? z4A`e61zmLjCq4Rh3~67OmRiNhZK=AWY>WSMo&MWUJ)$1R)~uUxE0$#!0D^tUytJ8=2~!a!|AJUuA|m#49qRJldqui-LdrGnEDIkDRHPeZWe+ujz9792r)0 z(@`_2&lTC+tQYOJhbC|44G{LyT;Hb)oPK$yS~&mmk~RccS<2y``P4pl4Hj^=0~QuU zx^%BRVH_`HQVUr!*!V(@iUc-rQg$&rH#~ypb5nLN3eY0I%-*#DuEl-{`sz8jUMCSS z_W%OyI{F-NDS^VCccFuq&=#}SGkSW{0Rv*K`k^TKwZ#B=naHK@`<8?H?C1YQWqR4@ zDPy?8RVZ5Jo>^+vfZqw=x%>I&jSi%!H# z*ByE;1oFoP!L%fOr!Tf4hG)6KtW8ol_A)ZY?v>u#krN$>FDoaU_7+oZkkK~Mk%YKc z$+5Myra`pZ^Eoq9&0A{DJ3xB}7pYHzv+|$ha36DCRqbY(_v#oJ0(=j1vYmf&IFXy1 zTGjYpJ2G#zi*~}0J!^ZA-fVVqod#jDX<>xfncbFG?;*RriAWO_gS&fw#vPv;F+bXJ zy?UPpD>ot#Eg97`gMYcVt5{d+cae&J#%r>h1iRmH8m;>?@sia z9WeyosVS~jsT2G2WDljx#NO19!OFQ6N3}(pAA(H?yVBl@MD1o=`;xhCEuVv(a8*F>$vI| zpvP8!ArGjlQBGakD4c#e<2SEn{XP`Ag^qFE4gq=O`TK;ltY!yXwqUrYao5x~Hb-18 zs7=?Ovr8_R8&DU;a@`Me+dvMA6EE@qY*!PBjt^vSb{TZCO%2f_ysbbKo7$@wQsKD;7wW$I+WB zl<6d_rdp9PrLF$y3%YJe(dOjxdX=Gy?NgQV2GMG_g~>8SIe^exs~~&%x&(|;Xpw3MC+H$-x?Ita`A%y@^FzExNJ^F z?5{+@)f4)@z@!uc6%@oDX{gjBZLA%1zO%LIv){dDYnCM|1m& zYhyyKLAW5OX?c?WW${xN_rQ0hY1H=zl1`wNfZl0;IG6!qw!A z6HZ;uSv6-3nebmHf4(6Ps}Ly|mB}MqE!8<{2Bt^`n41u@;-bO)=xc!ChbaJH~%)!lE<3l5uwa@s8lwZO!?#yS9;lKR^rsktj&ulg+| zDZBvgtS+Tg8n5mb$E{4_yC8uyB%|G#%L`8Mt5Zj0Y)ihy;PSO)DiD>+3_t8$!MQm_Ec>irJ#>CEm{A z^;O9&15vB(-UbpLbiznL6D~|&Q(8fH>sJWsE7yY8!RpQ)F&U@)d9Vf1BqAYY3Dqz%hMN;Pl;Te3ulvk zWdEYuGEh)trX+*rjcfX)dqQ=wY?yAd!t}26Ve@^9N$6;t;DH!m=7N013qGpW+q&T@ zYOax2UVA?!)hN{Ft3eL(T=iFWwN(uc+yuV>&Evh^6rpt161e>%>}tAon%IgS$Bzty)gp)ebfl!u-W6 zA<$;llQ{tuoH1%h{jqT}|IhBrRF`N~T*1NKdekd;mJm|()&*n;fB`^U_r2{hI#e<4 zyT|$#ASH$bBCpOJQlj;=jjt)@-h5+(b;L?zlNth_UEDi$N}Z#w?5t z2Io0Nt1Ys~{O~(FdG|EgU(qLn>iODT@aA*(M|Ohf{Q zc)e?xm~OG$#AFtLiFnGs~;vHfc?Yh;$h3wXLA3n1_~X?ZR9 zDnveR!{|OSUo$cwKwC?v8e$6a&O8{SWAl|c+1*CJGnDHB8Ze_4JTsrq+sl4A$hx@X zx<7}dq+e=YhimJetRUd9nIvY>(>}#9-zFMD7jdu~x^&q3!}ki^JdV8C2BLkV_!*Kl zs+WG7TS#aIDhr2(_$y@;WU;!wl+2 zC_#5?zt8W82DoJ&kjScn0pu|jy2mai1Ap9a!}c7%3CWJp3=uf~wOO5SQ5t_Z%hP^* z;jnZk!MLQS5-TOReHm~>1>P>bx$)Gt|~efXZuP#J%M~1X}Klgx2HtGWD>8h&9^Cui2>{ObJTkJtQE(Wc;&xeYc-R zuXp48*nEkpFBux8$(opUd*5n4NNY=o$9jnjoW;m!Jo$NPeK2uA4>bEy%ce|vvCUH5 zFHp@`Zy#{d_DC;Xf(d*Ox}hCo3)3mGPh<;tPLbT5Nu7B>v3jpA^xM0(XJ?=v-$EXB z=gy*XEpa2{jY_Q9;)ry}frUVfoT^IE6M3zeU_?}^go^2i(y+5M{a{OcoCigSoXl0G!SPbotZh4za z8w7VW`o`wbTc<(S6rWdC@rHM@l=RzNbJ$^2Cj416p3iU3oC|r~z4>gY@Lg`(xkew$ zZS(?sED2nKGOoy(?pWv;#}(HXLBj&k2XsXqqYlhf(U9Nh~inRp+YBm`%1g$L|NRC^k)zfSTwRwvN&31=qq1Z+VW2$Cb!# zAm9||Rz1lJOqE)@ut-I**oS})Ef~xAzg?X$-Mz>IG{%|@IZ!gUYh*#`1%9i7p04g^ z^}P=2=-WeDV!vwqS>_85^h150C^fqxm+t^XnyUfN9Lr`r;cwr zjrab@+FU@5KHK4BVx+$IJddM&I}5G&V>~uyxy%FB-a3@*t-H=71NFh34*Y z)%c#m(vMc)=V#XJbxNMv+j)_SVB&Dt@AmVQv5hzawRWE|Cl$}{uO`1+?Jc9;S1z&x zHL9Fsiyo>(S2$2V1YNOpT7S9pP1wIyZ4uy5X@K0lMh_XNu2&I$2E4&i(R1?=2+QLL zcyS3Gjy0o_udne|2S|NNt3^$XwNyJr+)Wir*1%N|XC(1&=UMChC?sh6kmNLGVPdsW zM0YMaB$<%C%SfzEGwf;-%*K2V#mT_dG>c_{5^hHR&ON9u#xzGa7eM~s2-zYpr(nlw zw?W1=K8rUgK)akU_ogb$GNWI9Ldx-7rw|Hd6m&qVFZeUgp|bF)*{3g8M$T=#O*pEW z3&4&2EqHm~5MQV1s=X@yRq$?zPo#86Y#-GnAt7N7yOfXc80S|g&|xd_8H%U^6>ub9 zwPmN5fj_o8JG|f%H^;Xwe@Qj4v6U=Pbylo-+#32-zfSucaZNCV5|r7WHc=aLV_JI4 z_Of^wldtffg!>N##TBVO`cst+RDm+sM+-1t4A*hr@JbW(hKH)Rl>-S^35QvURdDny zfpb<{`ZXLZuX;Q&a15JT`Cw~)Cl?ZgHL`5%-kt`dJT}?xl_`PYoiEPayuv_7pG{<) zKCiRuZ2G;`^0$ab$YAeafy?oq9^EWe_WQ=Atk(qO_>)E=srcu!~Wx-#@ zuh^b?QS`JRg;UzU8*mOwLpOWfcSWOmoWUTAc<2(x-0=&Ra+%ou1X~L#<3jgCl}2V_ z?+IKm8rKfA+P#^oP_*mmK@&qi%XaRC?5fPR?b{RzzII%&e{Znub!=w%U)f>MVicGG WD@hOa1pmHNfSHlCVa*-axc>otn_ZFs literal 0 HcmV?d00001 diff --git a/art/exported/creatures/103.png.import b/art/exported/creatures/103.png.import new file mode 100644 index 0000000..2972cde --- /dev/null +++ b/art/exported/creatures/103.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cfdsg4tevv0jm" +path.s3tc="res://.godot/imported/103.png-f8985f10e04b19499cd6f5ffbadc83c9.s3tc.ctex" +path.etc2="res://.godot/imported/103.png-f8985f10e04b19499cd6f5ffbadc83c9.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://art/exported/creatures/103.png" +dest_files=["res://.godot/imported/103.png-f8985f10e04b19499cd6f5ffbadc83c9.s3tc.ctex", "res://.godot/imported/103.png-f8985f10e04b19499cd6f5ffbadc83c9.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/art/exported/creatures/104.png b/art/exported/creatures/104.png new file mode 100644 index 0000000000000000000000000000000000000000..09eec3c33e1b572627fb7755a6b28f0182b67312 GIT binary patch literal 7444 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 literal 0 HcmV?d00001 diff --git a/art/exported/creatures/104.png.import b/art/exported/creatures/104.png.import new file mode 100644 index 0000000..01a9393 --- /dev/null +++ b/art/exported/creatures/104.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://pgm364g5qlgs" +path.s3tc="res://.godot/imported/104.png-e164f67032648af2cc0a545d2a861c7d.s3tc.ctex" +path.etc2="res://.godot/imported/104.png-e164f67032648af2cc0a545d2a861c7d.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://art/exported/creatures/104.png" +dest_files=["res://.godot/imported/104.png-e164f67032648af2cc0a545d2a861c7d.s3tc.ctex", "res://.godot/imported/104.png-e164f67032648af2cc0a545d2a861c7d.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/art/exported/creatures/105.png b/art/exported/creatures/105.png new file mode 100644 index 0000000000000000000000000000000000000000..3ba1000ed6a4247eb2659d96327c55a39e68f614 GIT binary patch literal 2799 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 H?g{?`DnM*Y literal 0 HcmV?d00001 diff --git a/art/exported/creatures/105.png.import b/art/exported/creatures/105.png.import new file mode 100644 index 0000000..de797a7 --- /dev/null +++ b/art/exported/creatures/105.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dwanip2j561n7" +path.s3tc="res://.godot/imported/105.png-a2b440912e59b3375c6e61e17d08287b.s3tc.ctex" +path.etc2="res://.godot/imported/105.png-a2b440912e59b3375c6e61e17d08287b.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://art/exported/creatures/105.png" +dest_files=["res://.godot/imported/105.png-a2b440912e59b3375c6e61e17d08287b.s3tc.ctex", "res://.godot/imported/105.png-a2b440912e59b3375c6e61e17d08287b.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/art/exported/creatures/106.png b/art/exported/creatures/106.png new file mode 100644 index 0000000000000000000000000000000000000000..61285cbcfb617d3e4526c1b0c8eeba1e0db0e2bd GIT binary patch literal 3777 zcmb`K_dgVl2PF(BYStet+RE;*&G#F-K9{v>~+>z}ioO>f6B$=(+#6{@J4Xrj1K8(p%>F0gp**^@?3>#ANZ66fs>CR()yQO23YO_y#nNP`#Zv*frI1*goXJ4BQ>~8=CTw=L(lgTEU@6cfe`6j+%grshyu!wn_BsKG2nbO2 zR&fpbw8Ts%GbH()0!>SEwZa`Kh7J6I>R4ahtvFrl505CKKzU{5)i(`uxMG_Crf#zb zZ1tY-_b3OJEZQbq_FMJQzxwD36*JSAj=Ejq*Onv*5N}v9nIdo*q(1)Ec7_Yo!GlP+ zwBA+*PT>t@9=Sk^omc0-6z*0I;*Ev}Z!cce^pCW~+6N|Zr=`S)WY#k&Dt>o=I!)CN zm9M-whlitG&6FjW3y$G?!PPyoK0xWy2R~b~LPyGmCni{a!BrLuDG2jh6I3w<+}~6z zG{CcU)%Q=&Ux;K!$pey|R%&u-rR64|9mFYHvAlXgYEet|(pAuCO1sNGvVXG7d7^N97vy+!Q1{4e&F$~G<@#li zju}*{_4cs5XaC#HbIx@TYByINAY7gjqV@;xQJBWo8hOmzr#oe|u(MMoAt8Ul>%pTe zb2nj)CQ2tFTKzDH!5Zc5&8aB7tEX?y&F`O4lF*1P1b1P%?R+zlr{!`sL@IdL&Yh4u z;1Hv+`$N2RyHeB7cb0DNK&2(a8`BzPVu{Y9U41ibg&p-TpY4-95d(*={i6eN60g@u zl)p(cVZFC^#{B}dQgcs&!p()mNjxKJcCzywGE{!sIHm7b4Eb*7)3Z+a$f5# z>Pxy-Rb8E!5emxRg-Kyg%KF{wL}QH%>sCHoKD!x!-+ssk_R$uE&!gN246QdN3F<+F zU)>&9J;tNpK$Zn{)i1;@-C3jFqt!NXvG)7XPc8NM|G*U$gHO`V0{gQc=Um>q!Z_0K zH#l>EedmHyZ&FXiE-PZa;m7lVy1OKI7z8?kN06>4>#(b^6Y5P_*Rw8imz31}(l$eG zf?lVVukURUlN^lccRm2;11suZ6%^l69GnQ#kFPk0(Eb{#Lu|C}U;y-|e#?6=T z?(hzQ8|Iwj*f3-gdT|ftT&mQtEs$7vpuo_zI5lvhG#sK-Ak0@PkB$d(aoj z%!bJknF|Y@m9uo71i`mw9i*`#F$YUAcRw$^`$udhGi?1Qr%E2}-T`V`TbRmCA%li@ zoNEZa=ZMW3x4L~7nqFVmnAm!jB*~<}spN|V#rE@2C*qXE72(hIW|nKk*~3yA71Dd4 zy}tJy3-D8&;{vUqJ&&{*F0eQgDdc?e2X+4CPu63fXW^l4(@{A&L5(?72pX@Q4C5Tw zX}C>Zhz0~Qy)g;aUd*bX+W6r&GG4A-0Q=<5kFcv;SxWsC%>{QTvk6icNxwFNXIM>YVsf8`%66G zk(j(ZIfUQ%tgf2!@>}4+)m-LTHyw|PCs)TE4BE}vHLIO&x*>VDPN78ulifW>*;nyP zyGvO~sr1>H>fSc}BtT95>1cPR*XPI4!Hb)qXs!ub3hCeoa!m1*QVf-`LFXsceb!C* zV0vy5f)(-l62Ro=_qFY5iyll>DbmbHv%TJheG9S$R@x58k@II_6(goD4MNV?wNg%q z4b(#GAL(NR627i3Z$&5APcJm%GbZzjM;zFOO5-%DoSh4U-fZqPBL#nci09=OMU=>U zd6nN!_j<4sQ*u@oP>ZEOA2p3OvP_u<{CkCv{* z5Y_Mp#NG{>JJN9bJoeJQ7j1ys#3(_CMCR&McM-K!J5S?iDaZ;QLFsO1}6Y-~C!%0Hb`p&eT* zydpl{_=dwXZgVLwwqx|0wt$X*Kx=t#a{HmH4rm)sdq%~r9E-zgQTaT5-Gwl#c=GZk zrrUbP#u>!H;cWLwim5Fxi%d61YPm-+t!0uitZ%}Q;-jz7`gUhkFe^_AqK+{?);hEf z94nd8x2!8BB^A|XYl%Es)yzN-)ce3%&gVy#jrbDd9DmtA2Ee^cYfQd&_uS-tVImt+ zrS_Wd_~6k!PCh$6bD1D-G}*&Wwq@I8{yz24 zz@)3mzQueHaa^C>=Pib0I5TrA!=kHOTBu|NOEX6>^5);I6tsO_m5s=lUjT)Z2Gsm` z*;Wqf7-98tjDe;K?6D#o2nY1a=4nw)*}6)))G2K&5ZEKL9wUm-CUqi4k_m($w8?GC zFC@}*#IETDN@%_PqS89)fR|n4Se{G<&TmPX9VFJXS`i{Yjv0f)@-DY54taY3A|^b- zH!N8Pt*1LXukn?(2OEXi{yD>Tn?ghx^pg|QeOVYdgyxJlsDl07JMH1sAT54rpQy|- z{=9$%%if`GNxS+dQ8ix>t522w*_k9bBGrfuF>+@YEV@0|7TVR1c0-i6VB1`4n zQ_n8_aGG;T6F#-zUZDd<1~C0R9$MQ|)zTLsS?ea&R#PB#PfiJW-zLgvO)g1BiM>!g zOh@_9;lIS;IJ~}zI?k*qL_F1j!%qFz!n{5{5vQCI4pw!Q!+H}1wRXb}vwOCd_&gPo ztx;Me%~VIFTBl9Je9QBt_|0Ks_N0S%#MRn1Otu;Bv%m8SVgFp|Y*?R_Ar(_GRw9k@ zYsW$cN@+e`6q<)d+>d5`)SAT_mmYA}$c9bGv1 z#B;0bQKO}t9|F0$u~B4y&5tJZ+6xgW;zFEQsE=;g4Oua3_PdgV<%QqER7d3h0^Vez zjcU6*Wylh2D!D$9Kj-Eq#`HHz21A1b8oVFnKZ`yTV0}_<8`LS(2uXS87RsfV1#VS~ zv4=dJjX+Oi6>luIzAdjGzqD;mJUe3eIu}}*U($1V!zNvHH0c0yZCGNi)`wxBSFg0m zc`-5sS`=*2gs=P)A9qx<vVi@4+702B;6?VjOhG2;f-q)4auHrF}Zcd&W~Twwt9(-Y-~-7##01 znbC3UidnvaV!S>-xB;boUQGf>Q&yaf&H!kbHNDDJcJj}x%_5>A9cLqi4G(o~s=`0R zKm?&J?lZ@ti}a{ahcYG?#on}ZU&;L9@@kGeBMWRxE2nNL5j{)wR(Rdv@PKg`Qc|O> z65BVNABRu?mISO<2rEY!Z~=OMx7_@nkleo$8b91$$}Q}3NAGwl*MDdVFwiyCsez-y F{ttQRICcO4 literal 0 HcmV?d00001 diff --git a/art/exported/creatures/106.png.import b/art/exported/creatures/106.png.import new file mode 100644 index 0000000..3032c38 --- /dev/null +++ b/art/exported/creatures/106.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cr7tc11ievso5" +path.s3tc="res://.godot/imported/106.png-306ce449448588714e5a0e883ae441ac.s3tc.ctex" +path.etc2="res://.godot/imported/106.png-306ce449448588714e5a0e883ae441ac.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://art/exported/creatures/106.png" +dest_files=["res://.godot/imported/106.png-306ce449448588714e5a0e883ae441ac.s3tc.ctex", "res://.godot/imported/106.png-306ce449448588714e5a0e883ae441ac.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/art/exported/creatures/107.png b/art/exported/creatures/107.png new file mode 100644 index 0000000000000000000000000000000000000000..c843bbe1f4572dcf00a3e31e422fdee3768e1c48 GIT binary patch literal 2873 zcmbW3`9IT-1IOQ(tG;Sz?$9tAbF&W#Eio+R*eG%pOXfZ4&o%K7d4!}lNf{P23det7--dOV)gt5#+L$0Uvc03cwFHnI8Bl>dc~=MO&^ zy7d6SalqW@oiw^&od{fcO2N^7cwzR04z~$Lq=6Z@YeqPEg zuY`JfmdxfA+K&cvQgO1eBFCWnSgJ)v2Q_~}Z?Yb%O4q|k(e=VVGIoEi-47X95A|$r zWKOdtyy@mGGTsZ1bKhufGWVwaL}X*YD84iQ3SHsCk#t^Riag*A5O`{Yjo&fp7l09< zkLxy%EB94EmczKZ#RW8r1sb=!y#P}VDIPWlMHt`#Fb1q-!|twICBQEoiW@0SdUOfo z4{o~;SOVePZR__qUUG;rjuP3AIoXatHAfe5Ec%y{tc1f0?~R`TNBjuBIW^GeD{O0qY5A!I zS#kB+T9^_vNvr*A`m%p%mBr-7Mu3i9ZLLOmk`vxg@IrZY>w~^3-*wx(HH&xmc7C9b zQ=CGOloZr~J1X2jNN8R|Tl+=58O%w0@}DmmFz%ry|Fr!4q>;tvCke~`fBjiOi5}o) z(m~DjO7;BoT6rX|mzPl0FFb)DrDzo)Qfe*%9G5=B@sM|IGepx!O;j1DVk_Z&yKY|% zarVSydIBZkN&V|!R{}x%Nn3sWl&RaCX3EXz=!?HttcIH7*WFQ^x_(*20DY)IAvwTs z;Jn=OCwPn{Ai|a7IefQH%i7tw98(*4+bkl2$)!g8HXz7iHp>w_83*Fw&x#s;zrHKT z;rP!+6q2bCyK`V<7(5i@G~qjg6J#5Hg{nFe*oG=z-^E070JMJAw+LhT8}iJ@X=$|R zoS3ua72Y+0%epByNzEj*i+mZ0ose5ud0tw?ZD=18q5huWAQAteD5l+YGEogAl`UuX zz3F5#?`*t-ET?O>@zfZVN;SnU!cutj^v2OwMEljl2)d2$;?MCOZF4vuFqNh0FqjnF zmoGNjuu4l*TbFqiHG94xG<00a5i9Wm9D@kVNdkyd;q;#tDe30sR3#+`edW!FUu^5= zK}C1`Zmja#;hJYRr=DA84^DbV4(sXh^JGO{C@w(<>zi9yiMYGF*WUF=jUQz&kh9F@ zQA)pjzmJv1d;^|QM(Wl!QQF%>z(3~XfSYsOi9`^sKYT6#qnRoC#&^SCPDjR4V~8t& zx1c1r05n_Gaqkdzl#90*U@{}8oXj_(FUGjf$1SJkWl0Q0ceRZ&T&%g2-$R$|RLYBq zb!xZ|VRiU4LC{kg?WAu0sRL99grA=uefhDFK`8UxJl^0d-_FMQkQV9bX`AMsvkJgb zrvX3Zdv|gAqK87&1vmmxFuGA;Up;^KgAUeU!*oc+%LV(YbD7dDi;f9j{G^lVEFS&U z8@0QuB6j+;fPNnugE6^wjXy0toht-4oY5^UDfyu*fgo2i=>tay=-9sXFXHIz?9tHm z#2#$KzO_7ihaYN}<|$G3^}%9K#wDQ+i3BYBLX&gciAI3M#SXctXhh~88n&tNn+XAn zipF#CGU=n05NYA{wN~cDQQY^bBuQidYs}oi2bWO^Z=W4d|J+@dJYV=|ijV_^erfJ7 z=phSAh=a<+9aKahZ1HI5k5htfs6Ve58n#XS>d9P|yqteZL~x+A^tLu~=Eq+%Ge%E9 z80Zn}McMPHg$4On{I7y&nL%Lr=!Y$dlrN)?bFnL88j|E0CX>3`!^jxTtc2q@WrdA2 zH6Pg0j0$x(5Qq@}>Q@3T5ut-v7({tsWF$%DO)?&jFZcfB3V}eLlq{uF3>o&A!I6>J zxl}Wz&NGCH#N4hp+ z;NDAaq~Gfp1A03jCBvV5My4Pv7$JhN*ko_ht`uS=V1=XrR*nN8;P?hN*XD9q#3>!p z5i1t0E>7%pUHk;Gh{j(GGvjrCdb5VO0gcIDS&<-&*I73RlF@C70T0)MxO0iKeUBR* zUcYD?A?qO-tN?RsEnxEjg7+xH`G4tDL@@ovnN75 zI!%LQwY0dz#clTZPmtGUcgVk9)&Wodf$YA*yA0%>$5mXu2CluzsGey{YjQfJ(i?~n zqk5QIVC*2oCf%Mk(+Cx(a?V<1dr7yT3Lz_J%jgkLGbh5|4|F;d?hlWTC$U&(ca~O{ zdza)FO`8Q*MHUm1lW{0KC=S)?(dOb~Oq6N+-u~0iRKwV#lLy;R1_#lNwk1~|K)}ak zS)pF>dH2@$|2p+9?0#xde%Q_5I7}t!JqPV#)~(Zb(&zK`%XCkSm_}K0QP~Kti&fs@ zUGnBHf7IDL-;ToUVrs?}2gb%0ic~bay+MyGD6BYmAx7K%X%-9nBDMvpOjCBA}~yv0iE_WJ%$PEz*@ znA5|wn741WS}3DsT?s2m%$B(7sH`UZyQ64t z=Ndw&SNqGI5k?iwdVlMfLS>{nrl1j`p5?4)zbPdqCT4dXQJ8e+dXox7u|rPZLX)r2 zVvi8q_+y-@SKFkN=5A$bVNthRP@FNt&3{@s<#FD9%5XT77*L*&x#;fVw0Q@a!aA;h5=Ma6e=%Ss;#g_hs*?Xc<_ARdzGrEIUTGjZ-*cFXkw*d`(9*mQga_M=R= zON6y9wYX%xW#hmqG((<5*Z5QDNc&g>*rvF~wdF(`G=~%Hd?M^cz?&Fb8S!Y)0 z3cku&Hf*4|gOk`YhW0eM3myz{a49O_pzc-|Etoy~R|5He?*xu`XNS~YMlS#U_D6{U N^GjAHRVde}{{l7{NXq~K literal 0 HcmV?d00001 diff --git a/art/exported/creatures/107.png.import b/art/exported/creatures/107.png.import new file mode 100644 index 0000000..c4d28e8 --- /dev/null +++ b/art/exported/creatures/107.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c8rf4tnxx8mov" +path.s3tc="res://.godot/imported/107.png-062740d0bdad6e3ac4ecc1cf92ee6b9d.s3tc.ctex" +path.etc2="res://.godot/imported/107.png-062740d0bdad6e3ac4ecc1cf92ee6b9d.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://art/exported/creatures/107.png" +dest_files=["res://.godot/imported/107.png-062740d0bdad6e3ac4ecc1cf92ee6b9d.s3tc.ctex", "res://.godot/imported/107.png-062740d0bdad6e3ac4ecc1cf92ee6b9d.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/art/exported/creatures/3906.png b/art/exported/creatures/3906.png new file mode 100644 index 0000000000000000000000000000000000000000..6cc1d1b359f7ef7f8bd2c6b76fa426b72eb91558 GIT binary patch literal 2742 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 wJ%g{Tr_ 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 literal 0 HcmV?d00001 diff --git a/art/exported/creatures/4401.png.import b/art/exported/creatures/4401.png.import new file mode 100644 index 0000000..809a146 --- /dev/null +++ b/art/exported/creatures/4401.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://7dbcbicxwvlo" +path.s3tc="res://.godot/imported/4401.png-0fd242cb090b49614af9b4d07503b2db.s3tc.ctex" +path.etc2="res://.godot/imported/4401.png-0fd242cb090b49614af9b4d07503b2db.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://art/exported/creatures/4401.png" +dest_files=["res://.godot/imported/4401.png-0fd242cb090b49614af9b4d07503b2db.s3tc.ctex", "res://.godot/imported/4401.png-0fd242cb090b49614af9b4d07503b2db.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/art/exported/creatures/4701.png b/art/exported/creatures/4701.png new file mode 100644 index 0000000000000000000000000000000000000000..afd6a853fd29bca87048640a75ea6109ea855820 GIT binary patch literal 3770 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 literal 0 HcmV?d00001 diff --git a/art/exported/creatures/4701.png.import b/art/exported/creatures/4701.png.import new file mode 100644 index 0000000..5f4ed32 --- /dev/null +++ b/art/exported/creatures/4701.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://do6hcv3omivv5" +path.s3tc="res://.godot/imported/4701.png-dcb44d4ce6dfdc812a2e185e7f9511be.s3tc.ctex" +path.etc2="res://.godot/imported/4701.png-dcb44d4ce6dfdc812a2e185e7f9511be.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://art/exported/creatures/4701.png" +dest_files=["res://.godot/imported/4701.png-dcb44d4ce6dfdc812a2e185e7f9511be.s3tc.ctex", "res://.godot/imported/4701.png-dcb44d4ce6dfdc812a2e185e7f9511be.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/art/exported/creatures/5702.png b/art/exported/creatures/5702.png new file mode 100644 index 0000000000000000000000000000000000000000..2da58085c4f18faaec6247554c7ac0cef8264627 GIT binary patch literal 1760 zcmV<61|Ru}P)q8OD_Du_l~ zBUJyO1fxVrOej$>p-~DLB0)fj;ub75MSDVzef!4zW;<`+zCC-9roK-yeaFt5H{ajP z?>E1B1x!p#OiWBnOiWBnOiWBn`U%4U@G#{83~+dyi8utOB~h5k%)|p!J42GYi<0-R(p`})2mW=ngik} z?->lyBUn!xAhAB5f?10uMXExbv~->q19(Zim@(`xIe-b{ry_5`JwXqoJ8h^~?hI*Y z=I71u@!r*7>&e51%a3w>=W7e?sP;IJozn)+ffb)|RMjffLDB8KyGoFf;u3X9xRKMV zQlh@^$A<&IPe0TwPkB!aVL=Z@e&w2_LiF~Ti8!-51w+Otm^Qx!o~sTF$x-mbYrY^+ zR+cD)hZCP*?b`dPU4y~M5WDV(0m@3t57NlX>G)i}icy(u@LWg~*IC(ZXlrKLIdwF_ z0zAKYZNxS^eBJ2@P+1UUgw36XNbXYuOc+0PH63a6X{2e|4;`z(>GYxQstw8MDw^x8 zsQV+}VU;WW9nD`lC8WKoTk-Q#h@6mMm~g^NE& zt>Z58M*aP-rcjq4@pdcVD`BD#h0`3^F~dRP>GE>8wpgSHFRe+@okU*0=76dOEk7a9 z3(4xSh~@@TOte`b4J6x`dH+PHstTu#p;h79)GsKu;_X>ZeVY6z zE?+K-Bp&g-h0G@i5>I@8>>~CS?GxuN2k_lBMf5qEF)hX$`ZSirO23XptR$wZ#99`= z{kkgT-kBZKu(9xIEYGoHL?IWhKyhl{Zwih+F5L8&m_e|i>7R&#{;o~Hog!Ldv@O?x z`O9)~;+wPDY^70l7u^=;N3I6PkXOFqGX71BX@E3WhB!8PIb8N&muYYBcH$T}BW0Vl_#2|ly8Wx-JM*fm1V)JscCbS{9y92d4H&E4pqbe$3 zi(`W19cqT%ZVxe>Ty`S`EIGpIqkI@%6uJ^+WQF!uzg%|`Vp$gMfy!g&`JBa*MI4|E zFEcZc;6z&ni6z-~yfGtuE+C(!t#DduI_ew#4eR@3(iuj&fJ=2iO*0P~;hF{@=VdMo zURGKz3@442>h>WaiN`IT2s>tWn_cTLSN+1{5l>WjyrSN+Bb1K&;fA%Ja~>jI{`Sce z3=8k&NKEF~umJFW_S}K}Uuv$=SZjsnSDPkUCqD8nELtiY<)b7a zzS0jocG%? zFMko82U?Vd0;B`!6z{;cZ4!wqRjDHbsz?utMg&qasT>E zxKdKl)ZD0DQ>rbqO(L3`$sAvgZkl&X8$-|GTV`9ZWwt+ak((i>Q$=g5Kg29N+=6Cr zR)ewjsON3zY-yA2Mx)X>0}VdNJy^P)k=nmNN7Xwy+*u6L<8!^+$>YWTD(;y;01-}S1(T69p4f+A8h9F4S@ftAR{|XJbe~jo6 z!f4f~e8$GD%ztfR;3o@Gc-tQTY5|}Iy#z!5f`2eC3HezJRx8Kt+g2^O`g{x{i#vL~ z-xl;A#FU;s%qlirNl7Y(xjVGL>K^aylR>kfpK|l29f^smwyJb4cfCGi8Tt=_q@4x6 zMD^3Y_9@0lpWU~wGchqSF)=YQF)=YQF)_jajsF0=A}aS51z-9A0000x literal 0 HcmV?d00001 diff --git a/art/exported/creatures/5702.png.import b/art/exported/creatures/5702.png.import new file mode 100644 index 0000000..527c367 --- /dev/null +++ b/art/exported/creatures/5702.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dxwr7yv5h30s" +path.s3tc="res://.godot/imported/5702.png-b0cead42bd9a5851c3f6775a7d0e469e.s3tc.ctex" +path.etc2="res://.godot/imported/5702.png-b0cead42bd9a5851c3f6775a7d0e469e.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://art/exported/creatures/5702.png" +dest_files=["res://.godot/imported/5702.png-b0cead42bd9a5851c3f6775a7d0e469e.s3tc.ctex", "res://.godot/imported/5702.png-b0cead42bd9a5851c3f6775a7d0e469e.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/art/exported/creatures/5901.png b/art/exported/creatures/5901.png new file mode 100644 index 0000000000000000000000000000000000000000..a75039feaf883b458065c96d8f5165848b42e9d4 GIT binary patch literal 1940 zcmV;F2W$9=P)6GiVquKhfvTkeB#HkNdkL?a z8AUo822ddM8Xg&Zz-W;uT15TS{tDaa0v!3d7itS-=2HUJ-OV+$qQ3BpP8Mr zyXWqn{eE}P?w(Bm8yg!N8yg!N8yg#&u0!}kw}W?a{eq2~a7fu$vbMV$(G}#v>Aa+D zEGZ(<^6GFj>**W82+>Ns>6-68Tm;5^*Rv5KSako*rSdxMFQ0}q<$5t9!6YVRP#&4O zFIfEG%{z;Nj5v+|BQ}Q@%={s;DKuBmYY}EtgbHUmtMRM@W$OX-FjCKb1|+2dSFUKa za;^nxu1^J8T3VOBPz9_`Yn{irPkGC|PR*L0o##Hhw&0a{>7so9-NPn7_sK7&&8RAz z{qs3kRJ|4}lCs;`ei2-Tq3uiqP-3K3G)6Bm^gE#6MS#=12cV$`@NFXSz0=<;0lXOS zQYYVic&#gQRCe%H-V7LFMT0)ST=iRKp>U{*A`4GDf_71H50L8w)FzpX9g}{%DJj{5 z(yin8qL+3o9yRsC;lGw7?WZu zKra<)`D`|{WxBV)ojEt0I2J{GDS#;vhrGGR50(RC($OX|Qh~Aq;qQMu2w0K~B>nUh zF8(tCmulkucTNDfGeil^kl}X&)t*{hI@33jP8OwkqLuiPEa1>~V3`-V^)xWRgDxd! z9`L8vf!7WI+vY}V@6Q1IO~%MjGS-4dW=TB#YGEvfU)HiJd$Y*B)>(X%0Jw&lb7*)~ zn9?)?Dvi|Ma)5D7Ja?$@wJ6aH;9>HAWW*N5O7X<00dZ3NowZFs4b6*P%tVjY0r^#W zPI=IVNE1)LdBv-Vf8iOKmA|E8y_Hptg~=EAqX&5-&tqxtIxQz774frXl8wX&-*>P3$#hHy2;}q@)%Bjh`jes0$04jj)rH#M06Ki2l|EDt%QV!$#2~A>O$nd ze*)vPerM^S&NtQoKL1|73+N#jZW7#Dx30S7so%c--X<$QWfAU)Wn0To*CSCTjLFc- zhKAxFmup{x?I5Em7Gs;Vl_!|GbN|6x3uoZcg|ooTNkHKmp#MNXRRBc|Jb&DaW!Seo zqa*tOLiFtI#D$Jqhem7 zwo=e%Zj|Mc%nQfzDR)6t1Lp|olb_iCKvvFiiu-&jE0~%36oBsm#QXRD&4HHFS%i<; zAs|H9p~zqjVK$+;sS&eA{#eHUuA_}gIdc4JoR&GVTUO01jUm3nWQH5t$ z7Rwt)_m{!hw?CH8nTUFCV4hg9`y}$WerfcwIfN6ha3+OQAbvA`m?oZUCn>SL;u`ed zl6cOQaI-E=2FxGcjwFm*G{7)n+JaSBGGi<}HQKRU+5?Xu=Z*Klxq_Z?eISI8y-&gQ z*uC0v8U22#r)TfoNJ=ZM`DA9+;Kj8<(7S}$45^kBh;2=D2^DU-alE2m+!v+6&RA-T3jTu zMkS)DA)q%HWnJ;Q#c{)YXRA-e6)l)P(=_?vni`P*&Y>M7p01SfucH#zNHAoHi!Sa8!TucPyAPwk^-6&%)c#iLiE*ktR^YYy`11Gj%F0hXfgN4chX< z{dL%75>Iiu3gJUaT83dr1ZbAN*)&uCAmZC=03*S<#pQHfDAA3WxBA_3*W+WP8H6Jy zMtynHu97#)D&JU3R#>U3R#>NKS ag#Q7^p7{8#1%TE70000 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 O0f5v)>DJw{!~YMRHRwqI literal 0 HcmV?d00001 diff --git a/art/exported/creatures/7403.png.import b/art/exported/creatures/7403.png.import new file mode 100644 index 0000000..bef32c4 --- /dev/null +++ b/art/exported/creatures/7403.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bl7ru6gm5xnpb" +path.s3tc="res://.godot/imported/7403.png-54b51089a6ff5c2091372d659ba4bdc7.s3tc.ctex" +path.etc2="res://.godot/imported/7403.png-54b51089a6ff5c2091372d659ba4bdc7.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://art/exported/creatures/7403.png" +dest_files=["res://.godot/imported/7403.png-54b51089a6ff5c2091372d659ba4bdc7.s3tc.ctex", "res://.godot/imported/7403.png-54b51089a6ff5c2091372d659ba4bdc7.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/art/exported/creatures/7508.png b/art/exported/creatures/7508.png new file mode 100644 index 0000000000000000000000000000000000000000..3f6c7f33ea36a99ace7405f1f1dbe1ee7d5e2d34 GIT binary patch literal 2019 zcmV<92ORi`P)? z|L7lr#4n(tu|p(83yDM^0aRKCIYLnz;RFax9MJ^l!@2r=7rmeUlFJW&~ULQ@q+965a!{X163vYxur z_dtGVmtD|r0L3@>2V_UVw2w>MUL-|Or3M{chvdp1_}5`%zPuNd>@I1;GiyM}ZNVK_ zr@^yN+JhCfVfqIkI_Xu!1y=%vRT{NTd}U`J_HO?a`AIXBtdI+IvNn+Cv~Uo1#Q%UC zYX;9g4p_rj#}>=F?!X7h2>Sc;G9?)N`1vL4{$ zAP_oPYhb4)IJQ~?t|Er?1=v;p7&N0t4tXIJL1C3lkD0gpWl~O%)b6daMDgpl0mjY5zp(x`3M7D)yo2uOWZtL$6ah0bt%aO$fFt3&Lha z{{Mp`-r?=zkbM?oFi|VRfa>r!>nnVVye#h{4b-6yLURE4x7idF5C}!yi=g9htl{?<)Z0qrt5z?^RB*8OFfu3l z!E+lVN!K_!gvIaT7(}1*3;Av4`p@t&aXP})tcO*mJ=_2G?}GjOyA54PYgdO7sfPI3 z;cwCZ&;POuvl+cF|3u1_B8tf?c@6H61wr28ze7jYtHBeb1pxn_ zB&^1>;}N@GC8s2y8C#r?-LD8eOaV1@vwVc*_99JgL65HnC0+!WIC8-_{O@D(3#9G{9D_nEjagz~ghm^l1dJ7q zrWq)?wJdQ^7Mi{TmbnVtT8ODaj3LHvFtQjK-0LbpkSC)NsNW1Q1AKU`Z^x;qRLO*r z%7xlgVGbhyHmW*%IJ*f9rnLOU(cuHR=kbR5X`$m}H#DQn{eZ_|=I<>L6FUN?_4#CK z8;ji|hzkYuZU3XMP7pLFJBxZ7hi1ItwkyY#LdbJ!d<~!)*8{jNkF|gjFJSS+ezcFi z?aI9#VW;&q(ij7)Uo1c813{qqhIf$u?3bu(Y{kT^wt@oU8v*?~pAx*sqS7Uc%93|i znA>N_A*fbgxkT~Xz1&y>CGr1BK8pAGV5rruL|*Lx0kI1z^^;G31X$x$C13Oa8E;+r zGzRt-&XFP*M&4WY;>Q%jI&#`na9_nRv-_c^?n3)L%dw|t6IMO45iB;}Ch0N4MVOpQ zwpb4mUe&U^<{&hyk zms7x9nd5uxWR`G)MG&qn?%e9aR$tT=CqNWlZ?@(4vjuM3Zrwg|vcKdubSE~s3-IN^ zM`tWML}77cx!j+aq|Ep@N>{2I!31_TF9GL`u=001{R@|CpMQ@Fp0U&zRk8uT z3WxCf_3Lr+?1n%Esj$;azDKO4$P&^pnEnoyp4o>5+9JG_-zSZ$iZdQ!i(o*L?LC3l zjOGQYS_Oz?=Rz3xs_|todI{!tEuh$HUmH)%9iSX8lb!|tP0&+!U~SsACt}MBnNqSt zUgXT@Vg|tiWFj?-d2Ok})H4suOs^m>L(bv867o#n>6VMhi)ZYNuZ_0E%~-2lFGJVv z`UfRhu?xhiUrqJssS&Y^#Eg!Q5CIu{=u4nCEfVpU@9wRjV(+j-g{sp)_!XOv zL_o0SNv~b7_X2v5@Z=Y7;_#kl3XPh?`@Tttgn~`3yBxvCSnQg=1dc?y1)k5E;K}XQ zvC?WIsgm6n^z9IZ)Rny9HBvtZ_x+QG@AA5h6s05FtW@2oWMgh=5BC-vjvtExV>1hf4qe002ovPDHLkV1l=M B+}8jA literal 0 HcmV?d00001 diff --git a/art/exported/creatures/7508.png.import b/art/exported/creatures/7508.png.import new file mode 100644 index 0000000..a14d42f --- /dev/null +++ b/art/exported/creatures/7508.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bnw0dw14iyxbh" +path.s3tc="res://.godot/imported/7508.png-555eff33a2cb66622ccca9d7f063522e.s3tc.ctex" +path.etc2="res://.godot/imported/7508.png-555eff33a2cb66622ccca9d7f063522e.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://art/exported/creatures/7508.png" +dest_files=["res://.godot/imported/7508.png-555eff33a2cb66622ccca9d7f063522e.s3tc.ctex", "res://.godot/imported/7508.png-555eff33a2cb66622ccca9d7f063522e.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/docs/ATTRIBUTION.md b/docs/ATTRIBUTION.md index 2eac3e5..d24f1ca 100644 --- a/docs/ATTRIBUTION.md +++ b/docs/ATTRIBUTION.md @@ -12,14 +12,14 @@ publicly credited as Voyager and Endeavour and operating collectively as the independent team Woofmeow. - Voyager: co-owner, developer, project director, creator of the game's - current provisional fish artwork and original 3D work except where another - creator is credited, and composer of the original title track + provisional fish placeholder artwork and original 3D work except where + another creator is credited, and composer of the original title track `audio/music/title/as_in_four_wolves.ogg`, dusk/world track `audio/music/world/craft.mp3`, and the synthesized robot animalese tones. - Endeavour: co-owner, developer, and 2D artist. Her incorporated work includes - character pattern/channel-map art, environment and UI art, and item art. - Planned work is not described as incorporated until its files enter the - project. + character pattern/channel-map art, environment and UI art, item art, and + finished fish and creature artwork. Planned work is not described as + incorporated until its files enter the project. - chillnfill: contributor of original 3D models for the character bodies and arms, ears and tails, and multiple world props and decorative assets, including trees and bridges. The contributor requested to be credited as @@ -132,17 +132,18 @@ locations only and must never appear in scenes or resources. ## Project-created artwork and music -The current in-game fish images are provisional artwork by Voyager. Endeavour -is creating replacement fish artwork, but work that has not been incorporated -into this repository is not presented here as part of the game or attributed -as a shipped asset. +Fish entries without finished replacement artwork use provisional placeholder +artwork by Voyager. Incorporated finished fish and creature artwork is by +Endeavour; work that has not entered this repository is not presented here as +part of the game or attributed as a shipped asset. Endeavour's incorporated 2D contributions include the inventory notepad, -environment and UI artwork, item artwork, and character customization pattern -and channel-map artwork. Voyager's incorporated original work includes 3D -assets, the provisional fish artwork, the title and dusk music identified -above, and the robot animalese tones. Specific contributor exceptions are -recorded below and in the in-game credits. +environment and UI artwork, item artwork, finished fish and creature artwork, +and character customization pattern and channel-map artwork. Voyager's +incorporated original work includes 3D assets, the provisional fish +placeholder artwork, the title and dusk music identified above, and the robot +animalese tones. Specific contributor exceptions are recorded below and in the +in-game credits. These credits intentionally describe work by creator and contribution family instead of maintaining a second file-by-file asset catalog. Runtime resources @@ -192,9 +193,10 @@ https://creativecommons.org/licenses/by/3.0/legalcode. ### Endeavour 2D contribution record Endeavour created the incorporated character customization patterns and -channel maps as well as additional UI, environment, and item artwork. The -current provisional fish artwork is not part of this credit. New or replacement -art is added to this record only after it is accepted into the repository. +channel maps as well as additional UI, environment, item, fish, and creature +artwork. Voyager's provisional fish placeholder is not part of this credit. +New or replacement art is added to this record only after it is accepted into +the repository. The exact current filenames and bytes are intentionally not copied into this document. The character appearance resources and Git history are the diff --git a/fish/species/betta_siamese/betta_siamese.tres b/fish/species/betta_siamese/betta_siamese.tres index d8e7ee5..4c9ca3c 100644 --- a/fish/species/betta_siamese/betta_siamese.tres +++ b/fish/species/betta_siamese/betta_siamese.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/7508.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/bowfin/bowfin.tres b/fish/species/bowfin/bowfin.tres index b87370e..7b2881f 100644 --- a/fish/species/bowfin/bowfin.tres +++ b/fish/species/bowfin/bowfin.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="4_texture"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/101.png" id="4_texture"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/chromis_blue_green/chromis_blue_green.tres b/fish/species/chromis_blue_green/chromis_blue_green.tres index 17061f8..65f35b4 100644 --- a/fish/species/chromis_blue_green/chromis_blue_green.tres +++ b/fish/species/chromis_blue_green/chromis_blue_green.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/5901.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/clownfish_ocellaris/clownfish_ocellaris.tres b/fish/species/clownfish_ocellaris/clownfish_ocellaris.tres index 25bea8f..16566cb 100644 --- a/fish/species/clownfish_ocellaris/clownfish_ocellaris.tres +++ b/fish/species/clownfish_ocellaris/clownfish_ocellaris.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/5702.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/crab_brown/crab_brown.tres b/fish/species/crab_brown/crab_brown.tres index 8f31b9c..7dec427 100644 --- a/fish/species/crab_brown/crab_brown.tres +++ b/fish/species/crab_brown/crab_brown.tres @@ -2,7 +2,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] -[ext_resource type="Texture2D" path="res://fish/species/crab_brown/crab_brown.png" id="3_texture"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/3906.png" id="3_texture"] [resource] script = ExtResource("1_fish_data") diff --git a/fish/species/gar_longnose/gar_longnose.tres b/fish/species/gar_longnose/gar_longnose.tres index 28f6e7b..aaabbfe 100644 --- a/fish/species/gar_longnose/gar_longnose.tres +++ b/fish/species/gar_longnose/gar_longnose.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="4_texture"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/103.png" id="4_texture"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/gar_spotted/gar_spotted.tres b/fish/species/gar_spotted/gar_spotted.tres index faf4afc..3405ee9 100644 --- a/fish/species/gar_spotted/gar_spotted.tres +++ b/fish/species/gar_spotted/gar_spotted.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="4_texture"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/106.png" id="4_texture"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/hogfish/hogfish.tres b/fish/species/hogfish/hogfish.tres index bd4373d..0e94a20 100644 --- a/fish/species/hogfish/hogfish.tres +++ b/fish/species/hogfish/hogfish.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/6103.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/ladyfish/ladyfish.tres b/fish/species/ladyfish/ladyfish.tres index 55aa31a..57c277c 100644 --- a/fish/species/ladyfish/ladyfish.tres +++ b/fish/species/ladyfish/ladyfish.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/7403.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/lungfish_west_african/lungfish_west_african.tres b/fish/species/lungfish_west_african/lungfish_west_african.tres index 342a8f8..f049cff 100644 --- a/fish/species/lungfish_west_african/lungfish_west_african.tres +++ b/fish/species/lungfish_west_african/lungfish_west_african.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="4_texture"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/107.png" id="4_texture"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/mahi_mahi/mahi_mahi.tres b/fish/species/mahi_mahi/mahi_mahi.tres index c7bd6dd..691a52a 100644 --- a/fish/species/mahi_mahi/mahi_mahi.tres +++ b/fish/species/mahi_mahi/mahi_mahi.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/4701.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/mullet_striped/mullet_striped.tres b/fish/species/mullet_striped/mullet_striped.tres index 409d7d6..a285ee7 100644 --- a/fish/species/mullet_striped/mullet_striped.tres +++ b/fish/species/mullet_striped/mullet_striped.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/6804.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/paddlefish/paddlefish.tres b/fish/species/paddlefish/paddlefish.tres index 80cebe6..498730b 100644 --- a/fish/species/paddlefish/paddlefish.tres +++ b/fish/species/paddlefish/paddlefish.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="4_texture"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/104.png" id="4_texture"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/salmon_atlantic/salmon_atlantic.tres b/fish/species/salmon_atlantic/salmon_atlantic.tres index 122c3e3..1c77325 100644 --- a/fish/species/salmon_atlantic/salmon_atlantic.tres +++ b/fish/species/salmon_atlantic/salmon_atlantic.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" uid="uid://h7hg45b7wmst" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/bass_catch_profile.tres" id="2_profile"] [ext_resource type="Script" uid="uid://bs7cqi88csolc" path="res://fish/fish_availability.gd" id="3_availability_script"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="4_texture"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/4401.png" id="4_texture"] [sub_resource type="Resource" id="AtlanticSalmonAvailability"] script = ExtResource("3_availability_script") diff --git a/fish/species/sheepshead/sheepshead.tres b/fish/species/sheepshead/sheepshead.tres index 5e3fcc0..d4b8cfa 100644 --- a/fish/species/sheepshead/sheepshead.tres +++ b/fish/species/sheepshead/sheepshead.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/6905.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/sturgeon_lake/sturgeon_lake.tres b/fish/species/sturgeon_lake/sturgeon_lake.tres index cf73e25..eef7789 100644 --- a/fish/species/sturgeon_lake/sturgeon_lake.tres +++ b/fish/species/sturgeon_lake/sturgeon_lake.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="4_texture"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/102.png" id="4_texture"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/sturgeon_shovelnose/sturgeon_shovelnose.tres b/fish/species/sturgeon_shovelnose/sturgeon_shovelnose.tres index 03434b0..9f02593 100644 --- a/fish/species/sturgeon_shovelnose/sturgeon_shovelnose.tres +++ b/fish/species/sturgeon_shovelnose/sturgeon_shovelnose.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="4_texture"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/105.png" id="4_texture"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/tests/fish_catalog_content_validation.gd b/tests/fish_catalog_content_validation.gd index 4a252b0..d7174a8 100644 --- a/tests/fish_catalog_content_validation.gd +++ b/tests/fish_catalog_content_validation.gd @@ -40,6 +40,25 @@ const StarterRegionScene = preload( const SharedFishPlaceholder: Texture2D = preload( "res://art/exported/creatures/fish_placeholder.png" ) +const FINAL_CREATURE_TEXTURE_PATHS: Dictionary[StringName, String] = { + &"bowfin": "res://art/exported/creatures/101.png", + &"sturgeon_lake": "res://art/exported/creatures/102.png", + &"gar_longnose": "res://art/exported/creatures/103.png", + &"paddlefish": "res://art/exported/creatures/104.png", + &"sturgeon_shovelnose": "res://art/exported/creatures/105.png", + &"gar_spotted": "res://art/exported/creatures/106.png", + &"lungfish_west_african": "res://art/exported/creatures/107.png", + &"crab_brown": "res://art/exported/creatures/3906.png", + &"salmon_atlantic": "res://art/exported/creatures/4401.png", + &"mahi_mahi": "res://art/exported/creatures/4701.png", + &"clownfish_ocellaris": "res://art/exported/creatures/5702.png", + &"chromis_blue_green": "res://art/exported/creatures/5901.png", + &"hogfish": "res://art/exported/creatures/6103.png", + &"mullet_striped": "res://art/exported/creatures/6804.png", + &"sheepshead": "res://art/exported/creatures/6905.png", + &"ladyfish": "res://art/exported/creatures/7403.png", + &"betta_siamese": "res://art/exported/creatures/7508.png", +} const ACTIVE_CATALOG_COUNT: int = 313 const INACTIVE_CATALOG_COUNT: int = 3 @@ -186,6 +205,8 @@ func _validate_catalog_and_pools() -> void: var active_count: int = 0 var inactive_count: int = 0 var fishing_count: int = 0 + var final_art_count: int = 0 + var placeholder_fishing_count: int = 0 var catalog_numbers: Dictionary[int, bool] = {} for fish: FishDataType in Catalog.candidates: assert(fish != null and not fish.id.is_empty()) @@ -204,13 +225,24 @@ func _validate_catalog_and_pools() -> void: inactive_count += 1 assert(not fish.is_selectable()) assert(fish.display_texture == null) + if FINAL_CREATURE_TEXTURE_PATHS.has(fish.id): + var expected_texture: Texture2D = load( + FINAL_CREATURE_TEXTURE_PATHS[fish.id] + ) as Texture2D + assert(expected_texture != null) + assert(fish.display_texture == expected_texture) + final_art_count += 1 if fish.collection_method == FishDataType.CollectionMethod.FISHING: fishing_count += 1 assert(fish.active) - assert(fish.display_texture == SharedFishPlaceholder) + if not FINAL_CREATURE_TEXTURE_PATHS.has(fish.id): + assert(fish.display_texture == SharedFishPlaceholder) + placeholder_fishing_count += 1 assert(active_count == ACTIVE_CATALOG_COUNT) assert(inactive_count == INACTIVE_CATALOG_COUNT) assert(fishing_count == FISHING_SPECIES_COUNT) + assert(final_art_count == FINAL_CREATURE_TEXTURE_PATHS.size()) + assert(placeholder_fishing_count == 294) var chum: FishDataType = Catalog.get_fish_by_id(&"salmon_chum") assert(chum != null) assert(chum.get_season_text() == "fall") diff --git a/tools/art/export_creature_art.py b/tools/art/export_creature_art.py new file mode 100644 index 0000000..fb44e52 --- /dev/null +++ b/tools/art/export_creature_art.py @@ -0,0 +1,230 @@ +#!/usr/bin/env python3 +"""Export cataloged creature artwork with consistent transparent margins.""" + +from __future__ import annotations + +import argparse +import hashlib +import re +import sys +import zipfile +import xml.etree.ElementTree as ET +from pathlib import Path + +from PIL import Image + + +TABLE_NAMESPACE = "urn:oasis:names:tc:opendocument:xmlns:table:1.0" +TABLE_ATTRIBUTE = "{%s}" % TABLE_NAMESPACE +NAMESPACES = {"table": TABLE_NAMESPACE} +VALID_EXPORT_SIZES = {64, 128, 256, 512} +SAFE_AREA_RATIO = 0.875 +KNOWN_SOURCE_ALIASES = { + # The delivered filename predates the catalog's authoritative species ID. + "bowfish": "bowfin", +} + + +def parse_arguments() -> argparse.Namespace: + parser = argparse.ArgumentParser( + description=( + "Export PNG creature art according to the catalog's recommended " + "canvas size, using alpha-bound trimming and nearest-neighbor scaling." + ) + ) + parser.add_argument("--tracker", required=True, type=Path) + parser.add_argument("--source", required=True, type=Path) + parser.add_argument("--output", required=True, type=Path) + parser.add_argument( + "--skip", + action="append", + default=[], + help="Catalog creature ID or source filename stem to skip; repeat as needed.", + ) + parser.add_argument( + "--dry-run", + action="store_true", + help="Validate and report the batch without writing output files.", + ) + return parser.parse_args() + + +def normalize_name(value: str) -> str: + normalized = value.strip().lower().replace("&", " and ") + normalized = re.sub(r"[^a-z0-9]+", "_", normalized) + return normalized.strip("_") + + +def expanded_row_values(row: ET.Element) -> list[str]: + values: list[str] = [] + for cell in row.findall("table:table-cell", NAMESPACES): + repeat = int( + cell.attrib.get( + TABLE_ATTRIBUTE + "number-columns-repeated", + "1", + ) + ) + values.extend(["".join(cell.itertext()).strip()] * repeat) + return values + + +def load_catalog(tracker_path: Path) -> list[dict[str, str]]: + with zipfile.ZipFile(tracker_path) as archive: + root = ET.fromstring(archive.read("content.xml")) + table = root.find(".//table:table", NAMESPACES) + if table is None: + raise ValueError("tracker does not contain a table") + rows = table.findall("table:table-row", NAMESPACES) + if not rows: + raise ValueError("tracker table is empty") + headers = expanded_row_values(rows[0]) + required_headers = { + "catalog_number", + "display_name", + "id", + "recommended_export_canvas_px", + } + missing_headers = required_headers.difference(headers) + if missing_headers: + raise ValueError( + "tracker is missing required columns: " + + ", ".join(sorted(missing_headers)) + ) + records: list[dict[str, str]] = [] + for row in rows[1:]: + values = expanded_row_values(row) + if not any(values): + continue + record = dict(zip(headers, values)) + if record.get("id", "").strip(): + records.append(record) + return records + + +def catalog_lookup(records: list[dict[str, str]]) -> dict[str, dict[str, str]]: + lookup: dict[str, dict[str, str]] = {} + for record in records: + keys = { + normalize_name(record["id"]), + normalize_name(record["display_name"]), + } + for key in keys: + previous = lookup.get(key) + if previous is not None and previous["id"] != record["id"]: + raise ValueError( + f"ambiguous normalized catalog name {key!r}: " + f"{previous['id']} and {record['id']}" + ) + lookup[key] = record + return lookup + + +def resolve_record( + source_path: Path, + lookup: dict[str, dict[str, str]], +) -> dict[str, str]: + source_key = normalize_name(source_path.stem) + catalog_key = KNOWN_SOURCE_ALIASES.get(source_key, source_key) + record = lookup.get(catalog_key) + if record is None: + raise ValueError( + f"cannot map source {source_path.name!r} to one catalog creature" + ) + return record + + +def normalize_artwork(source_path: Path, canvas_size: int) -> tuple[Image.Image, tuple[int, int, int, int], tuple[int, int]]: + with Image.open(source_path) as source_image: + artwork = source_image.convert("RGBA") + alpha_bounds = artwork.getchannel("A").getbbox() + if alpha_bounds is None: + raise ValueError(f"source {source_path.name!r} is fully transparent") + visible = artwork.crop(alpha_bounds) + safe_long_side = round(canvas_size * SAFE_AREA_RATIO) + scale = safe_long_side / max(visible.width, visible.height) + scaled_size = ( + max(1, round(visible.width * scale)), + max(1, round(visible.height * scale)), + ) + visible = visible.resize(scaled_size, Image.Resampling.NEAREST) + canvas = Image.new("RGBA", (canvas_size, canvas_size), (0, 0, 0, 0)) + offset = ( + (canvas_size - scaled_size[0]) // 2, + (canvas_size - scaled_size[1]) // 2, + ) + canvas.alpha_composite(visible, offset) + return canvas, alpha_bounds, scaled_size + + +def sha256(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as source: + for block in iter(lambda: source.read(1024 * 1024), b""): + digest.update(block) + return digest.hexdigest() + + +def main() -> int: + arguments = parse_arguments() + records = load_catalog(arguments.tracker) + lookup = catalog_lookup(records) + skip_keys = {normalize_name(value) for value in arguments.skip} + source_paths = sorted(arguments.source.glob("*.png")) + if not source_paths: + raise ValueError(f"no PNG files found under {arguments.source}") + + resolved: list[tuple[Path, dict[str, str]]] = [] + output_names: set[str] = set() + for source_path in source_paths: + record = resolve_record(source_path, lookup) + source_key = normalize_name(source_path.stem) + creature_key = normalize_name(record["id"]) + if source_key in skip_keys or creature_key in skip_keys: + print(f"SKIP {source_path.name} -> {record['id']}") + continue + output_name = f"{record['catalog_number']}.png" + if output_name in output_names: + raise ValueError(f"duplicate output filename {output_name}") + output_names.add(output_name) + resolved.append((source_path, record)) + + if not arguments.dry_run: + arguments.output.mkdir(parents=True, exist_ok=True) + + for source_path, record in resolved: + canvas_size = int(record["recommended_export_canvas_px"]) + if canvas_size not in VALID_EXPORT_SIZES: + raise ValueError( + f"{record['id']} has invalid export size {canvas_size}" + ) + image, alpha_bounds, scaled_size = normalize_artwork( + source_path, + canvas_size, + ) + output_path = arguments.output / f"{record['catalog_number']}.png" + if not arguments.dry_run: + image.save(output_path, format="PNG", optimize=False, compress_level=6) + output_hash = sha256(output_path) + else: + output_hash = "dry-run" + print( + "EXPORT " + f"{source_path.name} -> {output_path.name} " + f"id={record['id']} canvas={canvas_size}x{canvas_size} " + f"alpha_bounds={alpha_bounds} visible={scaled_size[0]}x{scaled_size[1]} " + f"source_sha256={sha256(source_path)} output_sha256={output_hash}" + ) + + print( + f"Complete: {len(resolved)} export(s), " + f"{len(source_paths) - len(resolved)} skipped." + ) + return 0 + + +if __name__ == "__main__": + try: + raise SystemExit(main()) + except (OSError, ValueError, zipfile.BadZipFile) as error: + print(f"ERROR: {error}", file=sys.stderr) + raise SystemExit(1) From 8b13ba1d7d114101cbb600da776017cdfb2c0562 Mon Sep 17 00:00:00 2001 From: Voyager Date: Mon, 24 Aug 2026 12:01:33 -0400 Subject: [PATCH 49/90] Normalize logbook creature portraits --- tests/logbook_validation.gd | 34 +++++++++++++++++++-- ui/components/logbook_portrait.gd | 51 +++++++++++++++++++++++++++++++ ui/logbook_page.gd | 9 ++++-- 3 files changed, 90 insertions(+), 4 deletions(-) diff --git a/tests/logbook_validation.gd b/tests/logbook_validation.gd index a621a8a..74736fa 100644 --- a/tests/logbook_validation.gd +++ b/tests/logbook_validation.gd @@ -162,6 +162,8 @@ func _validate_page() -> void: var shared_material: Material var silhouette_count: int = 0 + var smallest_silhouette_area: float = INF + var largest_silhouette_area: float = 0.0 for category: LogbookCatalog.Category in [ LogbookCatalog.Category.FRESH_WATER, LogbookCatalog.Category.SALT_WATER, @@ -192,8 +194,15 @@ func _validate_page() -> void: assert(portrait != null) assert(portrait.source_texture == fish.display_texture) assert( - portrait.custom_minimum_size - == LogbookPage.CATALOG_PORTRAIT_SIZE + portrait.custom_minimum_size.x + <= LogbookPage.CATALOG_PORTRAIT_SIZE.x + and portrait.custom_minimum_size.y + <= LogbookPage.CATALOG_PORTRAIT_SIZE.y + ) + assert(portrait.get_parent() is CenterContainer) + assert( + (portrait.get_parent() as CenterContainer).custom_minimum_size + == LogbookPage.CATALOG_PORTRAIT_SIZE ) assert( portrait.expand_mode @@ -209,6 +218,19 @@ func _validate_page() -> void: else: assert(portrait.material == shared_material) assert(_texture_has_transparency(portrait.texture)) + var silhouette_area: float = ( + portrait.custom_minimum_size.x + * portrait.custom_minimum_size.y + ) + assert(silhouette_area > 0.0) + smallest_silhouette_area = minf( + smallest_silhouette_area, + silhouette_area, + ) + largest_silhouette_area = maxf( + largest_silhouette_area, + silhouette_area, + ) silhouette_count += 1 for candidate: FishDataType in CatalogResource.candidates: assert(not entry.text.contains(candidate.display_name)) @@ -223,6 +245,9 @@ func _validate_page() -> void: ) ) assert(silhouette_count == 310) + assert( + largest_silhouette_area / smallest_silhouette_area <= 1.12 + ) page.call("_select_category", LogbookCatalog.Category.SHELLFISH) await create_timer(0.25).timeout @@ -269,6 +294,11 @@ func _validate_page() -> void: assert(known_portrait != null) assert(known_portrait.source_texture == bluegill.display_texture) assert(known_portrait.material == null) + assert(known_portrait.get_parent() is CenterContainer) + assert( + (known_portrait.get_parent() as CenterContainer).custom_minimum_size + == LogbookPage.CATALOG_PORTRAIT_SIZE + ) assert(known.button_pressed) _validate_handwritten_logbook_font(page) diff --git a/ui/components/logbook_portrait.gd b/ui/components/logbook_portrait.gd index ef23922..fb5fa4a 100644 --- a/ui/components/logbook_portrait.gd +++ b/ui/components/logbook_portrait.gd @@ -3,6 +3,7 @@ extends TextureRect const ENTRY_FRAME_SIZE := Vector2(86.0, 40.0) const DETAIL_FRAME_SIZE := Vector2(240.0, 132.0) +const UNIFORM_FOOTPRINT_AREA_RATIO: float = 0.6 static var _normalized_textures: Dictionary[String, Texture2D] = {} @@ -52,6 +53,53 @@ func configure_fitted( custom_minimum_size = texture_size * fit_scale +func configure_uniform_footprint( + portrait_texture: Texture2D, + maximum_size: Vector2, + portrait_material: Material = null, +) -> void: + source_texture = portrait_texture + material = portrait_material + texture = _normalize_visible_bounds(portrait_texture) + if texture == null: + custom_minimum_size = Vector2.ZERO + return + custom_minimum_size = uniform_footprint_size( + texture.get_size(), + maximum_size, + ) + + +static func uniform_footprint_size( + visible_size: Vector2, + maximum_size: Vector2, +) -> Vector2: + if ( + visible_size.x <= 0.0 + or visible_size.y <= 0.0 + or maximum_size.x <= 0.0 + or maximum_size.y <= 0.0 + ): + return Vector2.ZERO + var target_area: float = ( + maximum_size.x + * maximum_size.y + * UNIFORM_FOOTPRINT_AREA_RATIO + ) + var area_scale: float = sqrt( + target_area / (visible_size.x * visible_size.y) + ) + var fit_scale: float = minf( + maximum_size.x / visible_size.x, + maximum_size.y / visible_size.y, + ) + var scale: float = minf(area_scale, fit_scale) + return Vector2( + minf(maximum_size.x, maxf(1.0, roundf(visible_size.x * scale))), + minf(maximum_size.y, maxf(1.0, roundf(visible_size.y * scale))), + ) + + static func _normalize_visible_bounds( portrait_texture: Texture2D, ) -> Texture2D: @@ -67,6 +115,9 @@ static func _normalize_visible_bounds( if image == null or image.is_empty(): _normalized_textures[cache_key] = portrait_texture return portrait_texture + if image.is_compressed() and image.decompress() != OK: + _normalized_textures[cache_key] = portrait_texture + return portrait_texture var full_rect := Rect2i(Vector2i.ZERO, image.get_size()) var visible_rect: Rect2i = image.get_used_rect() if visible_rect.size == Vector2i.ZERO or visible_rect == full_rect: diff --git a/ui/logbook_page.gd b/ui/logbook_page.gd index a79239d..c5528e4 100644 --- a/ui/logbook_page.gd +++ b/ui/logbook_page.gd @@ -666,13 +666,18 @@ func _add_entry_content( content.add_theme_constant_override("separation", 4) content_margin.add_child(content) + var portrait_frame := CenterContainer.new() + portrait_frame.custom_minimum_size = CATALOG_PORTRAIT_SIZE + portrait_frame.mouse_filter = Control.MOUSE_FILTER_IGNORE + content.add_child(portrait_frame) + var portrait_view := LogbookPortraitType.new() - portrait_view.configure( + portrait_view.configure_uniform_footprint( portrait, CATALOG_PORTRAIT_SIZE, _silhouette_material if unknown else null, ) - content.add_child(portrait_view) + portrait_frame.add_child(portrait_view) var name_label := _label(_entry_label_text(entry_name), 16) name_label.custom_minimum_size.y = 38.0 From 4dc87235ec3094c634d5c2d402d7521218736401 Mon Sep 17 00:00:00 2001 From: Voyager Date: Mon, 24 Aug 2026 13:50:57 -0400 Subject: [PATCH 50/90] Restore catch quality inventory styling --- tests/unified_inventory_validation.gd | 54 +++++++++++++++++++++ ui/components/general_inventory_slot.gd | 62 +++++++++++++++++++++---- ui/components/shop_sale_tray_slot.gd | 26 ++++++++++- ui/shop_sell_inventory.gd | 10 +++- 4 files changed, 141 insertions(+), 11 deletions(-) diff --git a/tests/unified_inventory_validation.gd b/tests/unified_inventory_validation.gd index dacc5a0..e9a0d85 100644 --- a/tests/unified_inventory_validation.gd +++ b/tests/unified_inventory_validation.gd @@ -62,6 +62,7 @@ func _run() -> void: fish_catch.sale_value = Bluegill.get_sale_value_for_weight( fish_catch.weight_lb ) + fish_catch.quality = FishQuality.Tier.IMPRESSIVE assert(catches.add_catch(fish_catch)) assert(layout.get_inventory_count() == 2) assert(layout.move_entry_to_first_free( @@ -106,8 +107,53 @@ func _run() -> void: == Color(UtilityPageStyle.OCEAN_SELECTED, 0.92) ) staged_slot.set_staged(false) + var quality_slot := GeneralInventorySlot.new() + root.add_child(quality_slot) + quality_slot.set_presentation_size(Vector2(78.0, 78.0)) + quality_slot.configure( + 0, + PlayerInventoryLayout.InventoryContainer.STORAGE, + false, + layout, + bag, + catches, + hotbar, + ItemCatalogResource, + ) + assert(quality_slot.entry_identity == fish_catch.catch_id) + assert( + (quality_slot.get_theme_stylebox("normal") as StyleBoxFlat).bg_color + == GeneralInventorySlot.quality_background_color( + FishQuality.Tier.IMPRESSIVE, + GeneralInventorySlot.QualityEmphasis.NORMAL, + ) + ) + quality_slot.set_staged(true) + assert( + (quality_slot.get_theme_stylebox("normal") as StyleBoxFlat).bg_color + == GeneralInventorySlot.quality_background_color( + FishQuality.Tier.IMPRESSIVE, + GeneralInventorySlot.QualityEmphasis.SELECTED, + ) + ) + var distinct_quality_colors: Dictionary[Color, bool] = {} + for quality: int in FishQuality.TIER_COUNT: + var quality_color := GeneralInventorySlot.quality_background_color( + quality, + GeneralInventorySlot.QualityEmphasis.NORMAL, + ) + assert(not distinct_quality_colors.has(quality_color)) + distinct_quality_colors[quality_color] = true + assert(distinct_quality_colors.size() == FishQuality.TIER_COUNT) var sale_tray_slot := ShopSaleTraySlot.new() root.add_child(sale_tray_slot) + sale_tray_slot.configure( + "catch:%s" % fish_catch.catch_id, + fish_catch.fish.display_texture, + fish_catch.fish.display_name, + 1, + fish_catch.quality, + ) assert( sale_tray_slot.custom_minimum_size == GeneralInventoryGrid.DEFAULT_SLOT_SIZE @@ -117,6 +163,14 @@ func _run() -> void: ) as StyleBoxFlat assert(sale_tray_style != null) assert(sale_tray_style.corner_radius_top_left == 26) + var expected_tray_quality_color := ( + GeneralInventorySlot.quality_background_color( + FishQuality.Tier.IMPRESSIVE, + GeneralInventorySlot.QualityEmphasis.NORMAL, + ) + ) + expected_tray_quality_color.a = 0.96 + assert(sale_tray_style.bg_color == expected_tray_quality_color) var wallet := PlayerWallet.new() root.add_child(wallet) assert(wallet.restore_balance(15000)) diff --git a/ui/components/general_inventory_slot.gd b/ui/components/general_inventory_slot.gd index 9204d0a..cf9ccc4 100644 --- a/ui/components/general_inventory_slot.gd +++ b/ui/components/general_inventory_slot.gd @@ -11,6 +11,12 @@ const LockedContentPresentationType = preload( "res://ui/components/locked_content_presentation.gd" ) +enum QualityEmphasis { + NORMAL, + HOVER, + SELECTED, +} + var slot_index: int = -1 var container: int = -1 var entry_kind: int = -1 @@ -29,6 +35,7 @@ var _context_text: String = "" var _context_hovered: bool = false var _context_focused: bool = false var _staged: bool = false +var _quality_tier: int = -1 func _ready() -> void: @@ -101,10 +108,12 @@ func refresh() -> void: entry_kind = -1 entry_identity = StringName() _context_text = "" + _quality_tier = -1 _icon.texture = null _quantity.text = "" disabled = _locked _apply_icon_geometry() + _apply_style() if _locked: _icon.texture = LockedContentPresentationType.ICON _icon.modulate = LockedContentPresentationType.icon_modulate() @@ -152,12 +161,14 @@ func refresh() -> void: ) if fish_catch == null: return + _quality_tier = fish_catch.quality _icon.texture = fish_catch.fish.display_texture _context_text = _catch_context_text(fish_catch) var catch_name: String = FishQuality.qualified_name( fish_catch.fish.display_name, fish_catch.quality ) accessibility_name = "%s, slot %d" % [catch_name, slot_index + 1] + _apply_style() func _on_pressed() -> void: @@ -306,27 +317,62 @@ func _drop_data(_at_position: Vector2, data: Variant) -> void: func _apply_style() -> void: var radius: int = roundi(minf(_presentation_size.x, _presentation_size.y) * 0.5) + var normal_color: Color = quality_background_color( + _quality_tier, + QualityEmphasis.SELECTED if _staged else QualityEmphasis.NORMAL, + ) var normal := UtilityPageStyle.rounded_style( - Color( - UtilityPageStyle.OCEAN_SELECTED - if _staged else UtilityPageStyle.OCEAN_FIELD, - 0.92 if _staged else 0.88, - ), + normal_color, radius, ) var hover := UtilityPageStyle.rounded_style( - Color(UtilityPageStyle.OCEAN_SELECTED, 0.92), radius + quality_background_color(_quality_tier, QualityEmphasis.HOVER), + radius, + ) + var selected := UtilityPageStyle.rounded_style( + quality_background_color(_quality_tier, QualityEmphasis.SELECTED), + radius, ) var locked := UtilityPageStyle.rounded_style( LockedContentPresentationType.disabled_background_color(), radius ) - for state: StringName in [&"normal", &"pressed"]: - add_theme_stylebox_override(state, normal) + add_theme_stylebox_override("normal", normal) + add_theme_stylebox_override( + "pressed", selected if FishQuality.is_valid(_quality_tier) else normal + ) add_theme_stylebox_override("disabled", locked) for state: StringName in [&"hover", &"focus"]: add_theme_stylebox_override(state, hover) +static func quality_background_color( + quality: int, + emphasis: QualityEmphasis, +) -> Color: + var base_color: Color + var alpha: float + var quality_mix: float + match emphasis: + QualityEmphasis.HOVER: + base_color = UtilityPageStyle.OCEAN_SELECTED + alpha = 0.92 + quality_mix = 0.64 + QualityEmphasis.SELECTED: + base_color = UtilityPageStyle.OCEAN_SELECTED + alpha = 0.92 + quality_mix = 0.82 + _: + base_color = UtilityPageStyle.OCEAN_FIELD + alpha = 0.88 + quality_mix = 0.46 + if not FishQuality.is_valid(quality): + return Color(base_color, alpha) + return Color( + base_color.lerp(UIPalette.get_quality_color(quality), quality_mix), + alpha, + ) + + func _apply_presentation() -> void: _apply_icon_geometry() var is_large: bool = _presentation_size.x >= 70.0 diff --git a/ui/components/shop_sale_tray_slot.gd b/ui/components/shop_sale_tray_slot.gd index 5deb62f..0ac87bf 100644 --- a/ui/components/shop_sale_tray_slot.gd +++ b/ui/components/shop_sale_tray_slot.gd @@ -7,6 +7,7 @@ signal drop_requested(payload: Dictionary) var entry_key: String = "" var _icon: TextureRect var _quantity: Label +var _quality_tier: int = -1 func _ready() -> void: @@ -32,11 +33,29 @@ func _ready() -> void: _quantity.horizontal_alignment = HORIZONTAL_ALIGNMENT_RIGHT _quantity.mouse_filter = Control.MOUSE_FILTER_IGNORE add_child(_quantity) + _apply_style() + + +func _apply_style() -> void: + var normal_color := GeneralInventorySlot.quality_background_color( + _quality_tier, + GeneralInventorySlot.QualityEmphasis.NORMAL, + ) + var hover_color := GeneralInventorySlot.quality_background_color( + _quality_tier, + GeneralInventorySlot.QualityEmphasis.SELECTED, + ) + # Preserve the tray's established opacity while sharing the inventory's + # quality colors. Ordinary items and the empty drop target stay unchanged. + normal_color.a = 0.96 + hover_color.a = 0.96 var normal := UtilityPageStyle.rounded_style( - Color(UtilityPageStyle.OCEAN_FIELD, 0.96), 26 + normal_color, + 26, ) var hover := UtilityPageStyle.rounded_style( - Color(UtilityPageStyle.OCEAN_SELECTED, 0.96), 26 + hover_color, + 26, ) for state: StringName in [&"normal", &"pressed", &"disabled"]: add_theme_stylebox_override(state, normal) @@ -49,12 +68,15 @@ func configure( icon: Texture2D, label: String, quantity: int = 1, + quality: int = -1, ) -> void: entry_key = key + _quality_tier = quality _icon.texture = icon _quantity.text = "×%d" % quantity if quantity > 1 else "" tooltip_text = "%s · select to remove" % label accessibility_name = tooltip_text + _apply_style() func _can_drop_data(_at_position: Vector2, data: Variant) -> bool: diff --git a/ui/shop_sell_inventory.gd b/ui/shop_sell_inventory.gd index f4e9a43..9e39850 100644 --- a/ui/shop_sell_inventory.gd +++ b/ui/shop_sell_inventory.gd @@ -205,12 +205,14 @@ func _refresh_tray() -> void: var identity := StringName(str(record["identity"])) var icon: Texture2D var label: String + var quality: int = -1 if int(record["kind"]) == PlayerInventoryLayout.EntryKind.CATCH: var fish_catch := _fish_inventory.get_catch_by_id(identity) if fish_catch == null: continue icon = fish_catch.fish.display_texture label = fish_catch.fish.display_name + quality = fish_catch.quality else: var item := _item_catalog.get_item_by_id(identity) if item == null: @@ -219,7 +221,13 @@ func _refresh_tray() -> void: label = item.display_name var slot := ShopSaleTraySlot.new() _tray_grid.add_child(slot) - slot.configure(key, icon, label, int(record.get("quantity", 1))) + slot.configure( + key, + icon, + label, + int(record.get("quantity", 1)), + quality, + ) slot.remove_requested.connect(_on_remove_requested) slot.drop_requested.connect(_on_drop_payload) var drop_slot := ShopSaleTraySlot.new() From 966968e54d1ab21a494b7ad8a789b96b6557ebd9 Mon Sep 17 00:00:00 2001 From: Voyager Date: Mon, 24 Aug 2026 13:51:11 -0400 Subject: [PATCH 51/90] Restrict generated clam spots to visible sand --- tests/digging_prototype_validation.gd | 56 +++++++++++++++++++++++++++ world/digging/diggable_area_3d.gd | 19 ++++++++- 2 files changed, 74 insertions(+), 1 deletion(-) diff --git a/tests/digging_prototype_validation.gd b/tests/digging_prototype_validation.gd index c19bf0b..21f8629 100644 --- a/tests/digging_prototype_validation.gd +++ b/tests/digging_prototype_validation.gd @@ -11,6 +11,15 @@ const Gatherables: GatherableCatalog = preload( "res://gathering/catalog/gatherable_catalog.tres" ) +class PrimaryTerrainProvider: + extends Node3D + + var primary_mesh: MeshInstance3D + + + func get_primary_terrain_meshes() -> Array[MeshInstance3D]: + return [primary_mesh] if primary_mesh != null else [] + func _initialize() -> void: call_deferred("_run") @@ -20,6 +29,7 @@ func _run() -> void: _validate_catalog_content() _validate_flat_shovel() await _validate_beach_authoring() + _validate_primary_terrain_provider() print("Digging prototype validation: PASS") quit() @@ -81,6 +91,52 @@ func _validate_beach_authoring() -> void: region.queue_free() +func _validate_primary_terrain_provider() -> void: + var fixture := Node3D.new() + fixture.name = "PrimaryTerrainFixture" + root.add_child(fixture) + var provider := PrimaryTerrainProvider.new() + provider.name = "Provider" + fixture.add_child(provider) + provider.primary_mesh = _flat_sand_triangle(0.0) + provider.add_child(provider.primary_mesh) + var buried_base := _flat_sand_triangle(10.0) + buried_base.name = "BuriedSandBase" + provider.add_child(buried_base) + var area := DiggableArea3D.new() + area.name = "DiggableArea" + area.area_id = &"provider_test" + area.terrain_source = NodePath("../Provider") + area.surface_materials = [&"sand"] + area.generation_bounds = Rect2(-20.0, -20.0, 40.0, 40.0) + fixture.add_child(area) + var triangles := area.get_surface_triangles() + assert(triangles.size() == 1) + var center := (triangles[0][0] + triangles[0][1] + triangles[0][2]) / 3.0 + assert(center.x < 2.0) + fixture.free() + + +func _flat_sand_triangle(x_offset: float) -> MeshInstance3D: + var arrays: Array = [] + arrays.resize(Mesh.ARRAY_MAX) + arrays[Mesh.ARRAY_VERTEX] = PackedVector3Array([ + Vector3(x_offset, 0.0, 0.0), + Vector3(x_offset, 0.0, 1.0), + Vector3(x_offset + 1.0, 0.0, 0.0), + ]) + arrays[Mesh.ARRAY_INDEX] = PackedInt32Array([0, 1, 2]) + var mesh := ArrayMesh.new() + mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays) + var material := StandardMaterial3D.new() + material.resource_name = "sand" + mesh.surface_set_material(0, material) + var mesh_instance := MeshInstance3D.new() + mesh_instance.name = "PrimarySand" + mesh_instance.mesh = mesh + return mesh_instance + + func _collect_meshes( root_node: Node, result: Array[MeshInstance3D], diff --git a/world/digging/diggable_area_3d.gd b/world/digging/diggable_area_3d.gd index 1c34070..47270b1 100644 --- a/world/digging/diggable_area_3d.gd +++ b/world/digging/diggable_area_3d.gd @@ -18,7 +18,7 @@ func get_surface_triangles() -> Array[PackedVector3Array]: var terrain_root: Node = get_node_or_null(terrain_source) if terrain_root == null: return triangles - for mesh_instance: MeshInstance3D in _collect_mesh_instances(terrain_root): + for mesh_instance: MeshInstance3D in _terrain_mesh_instances(terrain_root): var mesh: Mesh = mesh_instance.mesh if mesh == null: continue @@ -92,6 +92,23 @@ func _append_triangle( result.append(PackedVector3Array([a, b, c])) +func _terrain_mesh_instances(terrain_root: Node) -> Array[MeshInstance3D]: + # Generated terrain can contain authored base layers beneath raised visual + # overlays. Those meshes are useful for closing terrain seams, but they are + # not necessarily the visible surface and must not produce buried dig spots. + # A terrain provider may therefore expose its authoritative primary meshes. + if terrain_root.has_method(&"get_primary_terrain_meshes"): + var provided: Variant = terrain_root.call(&"get_primary_terrain_meshes") + var meshes: Array[MeshInstance3D] = [] + if provided is Array: + for value: Variant in provided: + var mesh_instance := value as MeshInstance3D + if mesh_instance != null: + meshes.append(mesh_instance) + return meshes + return _collect_mesh_instances(terrain_root) + + func _collect_mesh_instances(root: Node) -> Array[MeshInstance3D]: var meshes: Array[MeshInstance3D] = [] if root is MeshInstance3D: From a7c71213cc8cf5e5ec69ae053578c2be2a3e50e3 Mon Sep 17 00:00:00 2001 From: Voyager Date: Mon, 24 Aug 2026 13:51:21 -0400 Subject: [PATCH 52/90] Improve beetle and net target visibility --- gathering/catalog/beetle_stag_common.tres | 2 +- gathering/gathering_controller.gd | 2 ++ tests/gathering_marker_surface_validation.gd | 2 ++ tests/generated_world_runtime_validation.gd | 4 ++++ tests/tree_gathering_prototype_validation.gd | 4 ++-- world/generation/terrain_prop_definition.gd | 5 ++++- 6 files changed, 15 insertions(+), 4 deletions(-) diff --git a/gathering/catalog/beetle_stag_common.tres b/gathering/catalog/beetle_stag_common.tres index 65b15df..c8b7d85 100644 --- a/gathering/catalog/beetle_stag_common.tres +++ b/gathering/catalog/beetle_stag_common.tres @@ -19,7 +19,7 @@ scare_radius = 0.1 capture_radius = 0.34 interaction_range = 2.8 charge_duration = 1.0 -sprite_pixel_size = 0.005 +sprite_pixel_size = 0.0075 sprite_tilt_degrees = 0.0 capture_respawn_min_seconds = 90.0 capture_respawn_max_seconds = 150.0 diff --git a/gathering/gathering_controller.gd b/gathering/gathering_controller.gd index 2859145..c061db5 100644 --- a/gathering/gathering_controller.gd +++ b/gathering/gathering_controller.gd @@ -341,10 +341,12 @@ func _build_marker() -> void: _marker_invalid_material.albedo_color = MARKER_INVALID_COLOR _marker_invalid_material.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED _marker_invalid_material.roughness = 1.0 + _marker_invalid_material.no_depth_test = true _marker_valid_material = StandardMaterial3D.new() _marker_valid_material.albedo_color = MARKER_VALID_COLOR _marker_valid_material.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED _marker_valid_material.roughness = 1.0 + _marker_valid_material.no_depth_test = true var disc := CylinderMesh.new() disc.top_radius = marker_radius disc.bottom_radius = marker_radius diff --git a/tests/gathering_marker_surface_validation.gd b/tests/gathering_marker_surface_validation.gd index 8ce3b4a..72f15f0 100644 --- a/tests/gathering_marker_surface_validation.gd +++ b/tests/gathering_marker_surface_validation.gd @@ -44,6 +44,8 @@ func _run() -> void: assert(invalid_material.albedo_color == Color.WHITE) assert(is_equal_approx(invalid_material.albedo_color.a, 1.0)) assert(is_equal_approx(valid_material.albedo_color.a, 1.0)) + assert(invalid_material.no_depth_test) + assert(valid_material.no_depth_test) assert( invalid_material.shading_mode == BaseMaterial3D.SHADING_MODE_UNSHADED diff --git a/tests/generated_world_runtime_validation.gd b/tests/generated_world_runtime_validation.gd index 6e03df7..6c4343f 100644 --- a/tests/generated_world_runtime_validation.gd +++ b/tests/generated_world_runtime_validation.gd @@ -943,6 +943,10 @@ func _validate_prop_catalog(region: GeneratedWorldRegion) -> void: assert(instance.position.is_zero_approx()) assert(_find_mesh_instance(instance) != null) instance.free() + if definition.has_gatherable_surface(): + assert( + definition.gatherable_surface_clearance >= 0.12 + ) var mushroom := catalog.definition_for_id(&"prop_mushroom") assert(mushroom != null and mushroom.has_collision()) assert(mushroom.visual_offset.y < 0.0) diff --git a/tests/tree_gathering_prototype_validation.gd b/tests/tree_gathering_prototype_validation.gd index bb6d1df..2814e19 100644 --- a/tests/tree_gathering_prototype_validation.gd +++ b/tests/tree_gathering_prototype_validation.gd @@ -41,7 +41,7 @@ func _validate_beetle_data() -> void: assert(beetle.target_population_for_anchor_count(8) == 3) assert(beetle.target_population_for_anchor_count(40) == 14) assert(beetle.target_population_for_anchor_count(400) == 64) - assert(is_equal_approx(beetle.sprite_pixel_size, 0.005)) + assert(is_equal_approx(beetle.sprite_pixel_size, 0.0075)) assert(beetle.is_stationary_spawn()) assert(not beetle.can_be_scared()) @@ -128,7 +128,7 @@ func _validate_anchored_presentation() -> void: var sprite := presentation.get_node("GatherableSprite") as Sprite3D assert(sprite != null) assert(is_zero_approx(sprite.position.y)) - assert(is_equal_approx(sprite.pixel_size, 0.005)) + assert(is_equal_approx(sprite.pixel_size, 0.0075)) assert(not sprite.shaded) assert(sprite.billboard == BaseMaterial3D.BILLBOARD_ENABLED) assert(sprite.texture_filter == BaseMaterial3D.TEXTURE_FILTER_NEAREST) diff --git a/world/generation/terrain_prop_definition.gd b/world/generation/terrain_prop_definition.gd index 58fdddd..d2524eb 100644 --- a/world/generation/terrain_prop_definition.gd +++ b/world/generation/terrain_prop_definition.gd @@ -58,7 +58,10 @@ extends Resource ## Reject upward-facing branches and foliage so attachments favor trunk-like ## faces. Zero accepts only vertical faces; one accepts every orientation. @export_range(0.0, 1.0, 0.05) var gatherable_surface_maximum_up_dot := 0.35 -@export_range(0.0, 0.25, 0.005) var gatherable_surface_clearance := 0.025 +## Keep camera-facing creature billboards clear of the sampled trunk as they +## rotate. This is a physical anchor offset, so creatures remain hidden by the +## rest of the tree instead of rendering through it as an overlay. +@export_range(0.0, 0.25, 0.005) var gatherable_surface_clearance := 0.12 func supports_chunk_tags(chunk_tags: PackedStringArray) -> bool: From 3608be41ab7faef94af34218f78475738974f32c Mon Sep 17 00:00:00 2001 From: Voyager Date: Mon, 24 Aug 2026 14:34:58 -0400 Subject: [PATCH 53/90] Improve tree gathering and rain occlusion --- tests/generated_world_runtime_validation.gd | 26 +++++++++ tests/world_weather_validation.gd | 31 ++++++++++ world/environment/precipitation_occlusion.gd | 56 +++++++++++++++++++ world/generation/generated_world_region.gd | 15 +++++ .../props/definitions/prop_pine.tres | 1 - .../props/definitions/prop_pine_large.tres | 1 - world/regions/starter_island_region.gd | 6 ++ world/world_time_visual_controller.gd | 31 ++++++++++ 8 files changed, 165 insertions(+), 2 deletions(-) create mode 100644 world/environment/precipitation_occlusion.gd diff --git a/tests/generated_world_runtime_validation.gd b/tests/generated_world_runtime_validation.gd index 6c4343f..b8ea847 100644 --- a/tests/generated_world_runtime_validation.gd +++ b/tests/generated_world_runtime_validation.gd @@ -12,6 +12,9 @@ const GeneratedLakePool: FishPool = preload( const GeneratedRiverPool: FishPool = preload( "res://fish/pools/generated_river_pool.tres" ) +const PrecipitationOcclusionType = preload( + "res://world/environment/precipitation_occlusion.gd" +) const FIRST_SEED := 13001 const SECOND_SEED := 13002 const RIVER_FALLBACK_SEED := 13012 @@ -502,6 +505,12 @@ func _validate_generated_region( assert(PROCEDURAL_PROP_IDS.has(prop_id)) var definition := region.get_prop_catalog().definition_for_id(prop_id) assert(definition != null) + if definition.procedural_group in [&"grass_tree", &"sand_tree"]: + assert( + _has_precipitation_occlusion_layer(child), + "Precipitation occlusion layer missing from %s (%s)." + % [child.name, prop_id], + ) var biome_id := StringName( child.get_meta(&"terrain_biome_id", &"") ) @@ -967,10 +976,12 @@ func _validate_prop_catalog(region: GeneratedWorldRegion) -> void: assert(pine != null) assert(pine.minimum_visual_scale < pine.maximum_visual_scale) assert(pine.material_variants.is_empty()) + assert(not pine.has_gatherable_surface()) var large_pine := catalog.definition_for_id(&"prop_pine_large") assert(large_pine != null) assert(large_pine.minimum_visual_scale < large_pine.maximum_visual_scale) assert(large_pine.material_variants.is_empty()) + assert(not large_pine.has_gatherable_surface()) var palm := catalog.definition_for_id(&"prop_palm") assert(palm != null) assert(is_equal_approx(palm.minimum_visual_scale, 0.5)) @@ -1180,6 +1191,21 @@ func _find_mesh_instance(root_node: Node) -> MeshInstance3D: return null +func _has_precipitation_occlusion_layer(root_node: Node) -> bool: + var mesh_instance := root_node as MeshInstance3D + if ( + mesh_instance != null + and mesh_instance.get_layer_mask_value( + PrecipitationOcclusionType.RENDER_LAYER_NUMBER + ) + ): + return true + for child: Node in root_node.get_children(): + if _has_precipitation_occlusion_layer(child): + return true + return false + + func _has_material_variant_override( root_node: Node, variants: Array[Material], diff --git a/tests/world_weather_validation.gd b/tests/world_weather_validation.gd index c346e93..9a53eff 100644 --- a/tests/world_weather_validation.gd +++ b/tests/world_weather_validation.gd @@ -10,6 +10,9 @@ const WorldTimeServiceType = preload("res://world/world_time_service.gd") const WorldTimeVisualControllerType = preload( "res://world/world_time_visual_controller.gd" ) +const PrecipitationOcclusionType = preload( + "res://world/environment/precipitation_occlusion.gd" +) const FishingContextType = preload("res://fishing/fishing_context.gd") const FishingSpotType = preload("res://fishing/fishing_spot.gd") const FishAvailabilityType = preload("res://fish/fish_availability.gd") @@ -526,6 +529,14 @@ func _validate_weather_presentation() -> void: )) var rain_material := rain.process_material as ParticleProcessMaterial assert(rain_material != null) + assert( + rain_material.collision_mode + == ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT + ) + assert(is_equal_approx( + rain.collision_base_size, + WorldTimeVisualControllerType.RAIN_COLLISION_BASE_SIZE, + )) assert(rain_material.emission_box_extents.is_equal_approx( WorldTimeVisualControllerType.RAIN_EMISSION_EXTENTS )) @@ -542,6 +553,26 @@ func _validate_weather_presentation() -> void: assert(rain_mesh.size.is_equal_approx( WorldTimeVisualControllerType.RAIN_DROP_SIZE )) + var rain_collision := visuals.get_node( + "LocalRainCanopyCollision" + ) as GPUParticlesCollisionHeightField3D + assert(rain_collision != null) + assert(rain_collision.follow_camera_enabled) + assert( + rain_collision.resolution + == GPUParticlesCollisionHeightField3D.RESOLUTION_256 + ) + assert( + rain_collision.update_mode + == GPUParticlesCollisionHeightField3D.UPDATE_MODE_WHEN_MOVED + ) + assert(rain_collision.size.is_equal_approx( + WorldTimeVisualControllerType.RAIN_COLLISION_SIZE + )) + assert( + rain_collision.heightfield_mask + == PrecipitationOcclusionType.RENDER_LAYER_MASK + ) visuals.call( "_on_weather_changed", WorldWeatherServiceType.Weather.SUNNY, diff --git a/world/environment/precipitation_occlusion.gd b/world/environment/precipitation_occlusion.gd new file mode 100644 index 0000000..8d27a68 --- /dev/null +++ b/world/environment/precipitation_occlusion.gd @@ -0,0 +1,56 @@ +class_name PrecipitationOcclusion +extends RefCounted + +## A secondary visual layer used only when building the local rain height field. +## Canopy meshes remain on layer 1 for ordinary cameras. +const RENDER_LAYER_NUMBER: int = 20 +const RENDER_LAYER_MASK: int = 1 << (RENDER_LAYER_NUMBER - 1) +const CANOPY_MATERIAL_NAMES: Array[String] = [ + "leaf", + "leaf_light", + "leaf_mid", + "leaf_dark", + "pine", + "tree", +] + + +static func mark_canopy_meshes(root_node: Node) -> int: + if root_node == null: + return 0 + var marked_count: int = 0 + var mesh_instance := root_node as MeshInstance3D + if mesh_instance != null and _has_canopy_material(mesh_instance): + mesh_instance.layers |= RENDER_LAYER_MASK + marked_count += 1 + for child: Node in root_node.get_children(): + marked_count += mark_canopy_meshes(child) + return marked_count + + +## Generated tree definitions are already explicit terrain metadata, so every +## mesh in their visual scene can safely participate. This also supports older +## combined tree meshes whose imported material name does not identify leaves. +static func mark_tree_meshes(root_node: Node) -> int: + if root_node == null: + return 0 + var marked_count: int = 0 + var mesh_instance := root_node as MeshInstance3D + if mesh_instance != null: + mesh_instance.layers |= RENDER_LAYER_MASK + marked_count += 1 + for child: Node in root_node.get_children(): + marked_count += mark_tree_meshes(child) + return marked_count + + +static func _has_canopy_material(mesh_instance: MeshInstance3D) -> bool: + if mesh_instance == null or mesh_instance.mesh == null: + return false + for surface_index: int in mesh_instance.mesh.get_surface_count(): + var material := mesh_instance.mesh.surface_get_material(surface_index) + if material == null: + continue + if material.resource_name.to_lower() in CANOPY_MATERIAL_NAMES: + return true + return false diff --git a/world/generation/generated_world_region.gd b/world/generation/generated_world_region.gd index 06406de..c816c3b 100644 --- a/world/generation/generated_world_region.gd +++ b/world/generation/generated_world_region.gd @@ -12,6 +12,9 @@ const PlayerStorageInteractionType = preload( const MeshSurfaceAnchorSamplerType = preload( "res://world/generation/mesh_surface_anchor_sampler.gd" ) +const PrecipitationOcclusionType = preload( + "res://world/environment/precipitation_occlusion.gd" +) const WATER_BODY_SCENE: PackedScene = preload("res://world/water_body.tscn") const SALT_WATER_MATERIAL: Material = preload( "res://world/materials/stylized_water.tres" @@ -292,9 +295,21 @@ func _on_generation_completed(summary: Dictionary) -> void: _place_spawn_amenities(spawn_position) _configure_fresh_water(records) _configure_diggable_area() + # Imported prop instances may finish applying their scene state while the + # generated world is assembled. Mark the final decoration tree once every + # prop and material variant is in place so rain canopy occlusion persists. + _mark_precipitation_occluders() world_generated.emit(_current_seed, summary) +func _mark_precipitation_occluders() -> void: + for prop: Node in _decorations.get_children(): + var prop_group := prop.get_meta(&"terrain_prop_group", &"") as StringName + if prop_group not in [&"grass_tree", &"sand_tree"]: + continue + PrecipitationOcclusionType.mark_tree_meshes(prop) + + func _assign_biomes( records: Array[Dictionary], summary: Dictionary, diff --git a/world/generation/props/definitions/prop_pine.tres b/world/generation/props/definitions/prop_pine.tres index 062dd3b..b3224a9 100644 --- a/world/generation/props/definitions/prop_pine.tres +++ b/world/generation/props/definitions/prop_pine.tres @@ -17,4 +17,3 @@ minimum_visual_scale = 0.65 maximum_visual_scale = 1.2 collision_radius = 0.5 collision_height = 4.0 -gatherable_surface_material_names = PackedStringArray("wood") diff --git a/world/generation/props/definitions/prop_pine_large.tres b/world/generation/props/definitions/prop_pine_large.tres index 5f5d584..df9076d 100644 --- a/world/generation/props/definitions/prop_pine_large.tres +++ b/world/generation/props/definitions/prop_pine_large.tres @@ -17,4 +17,3 @@ minimum_visual_scale = 0.75 maximum_visual_scale = 1.2 collision_radius = 0.65 collision_height = 9.5 -gatherable_surface_material_names = PackedStringArray("wood") diff --git a/world/regions/starter_island_region.gd b/world/regions/starter_island_region.gd index b787ff1..3af3010 100644 --- a/world/regions/starter_island_region.gd +++ b/world/regions/starter_island_region.gd @@ -11,6 +11,9 @@ const PlayerStorageInteractionType = preload( const FOLIAGE_WIND_SHADER: Shader = preload( "res://world/materials/foliage_wind.gdshader" ) +const PrecipitationOcclusionType = preload( + "res://world/environment/precipitation_occlusion.gd" +) const FOLIAGE_MATERIAL_NAMES: Array[StringName] = [ &"leaf", &"leaf_light", @@ -60,6 +63,9 @@ var _foliage_wind_enabled: bool = false func _ready() -> void: if rebuild_terrain_collision_on_ready or not has_terrain_collision(): _build_terrain_collision() + PrecipitationOcclusionType.mark_canopy_meshes( + get_node_or_null(terrain_visual_root_path) + ) _set_foliage_wind_enabled(true) if Engine.is_editor_hint(): update_configuration_warnings() diff --git a/world/world_time_visual_controller.gd b/world/world_time_visual_controller.gd index fd743ed..5328c54 100644 --- a/world/world_time_visual_controller.gd +++ b/world/world_time_visual_controller.gd @@ -17,6 +17,8 @@ const LIGHT_RAIN_FIXED_FPS: int = 8 const RAIN_VELOCITY_MIN: float = 16.0 const RAIN_VELOCITY_MAX: float = 20.0 const RAIN_DROP_SIZE := Vector3(0.014, 0.34, 0.014) +const RAIN_COLLISION_BASE_SIZE: float = 0.08 +const RAIN_COLLISION_SIZE := Vector3(28.0, 24.0, 28.0) const FOG_DAYLIGHT_SCENE_BRIGHTNESS: float = 0.42 const FOG_DAYLIGHT_FOG_LIGHT_BRIGHTNESS: float = 0.42 const FOG_DAYLIGHT_WATER_BRIGHTNESS: float = 0.42 @@ -37,6 +39,9 @@ const FRESH_WATER_MATERIAL: ShaderMaterial = preload( const LocalStormCloudLayerType = preload( "res://world/environment/local_storm_cloud_layer.gd" ) +const PrecipitationOcclusionType = preload( + "res://world/environment/precipitation_occlusion.gd" +) const DAY_SKY_TOP := Color(0.204, 0.498, 0.643) const DAY_SKY_HORIZON := Color(0.663, 0.843, 0.847) @@ -88,6 +93,7 @@ var _rain_camera_provider: Callable var _environment: Environment var _sky_material: ShaderMaterial var _rain: GPUParticles3D +var _rain_collision: GPUParticlesCollisionHeightField3D var _storm_clouds: LocalStormCloudLayer var _elapsed: float = 0.0 var _weather_from: WorldWeatherService.Weather = ( @@ -211,6 +217,7 @@ func _prepare_rain() -> void: LIGHT_RAIN_FIXED_FPS if _light_performance_profile else 30 ) _rain.local_coords = false + _rain.collision_base_size = RAIN_COLLISION_BASE_SIZE _rain.visibility_aabb = RAIN_VISIBILITY_AABB var process_material := ParticleProcessMaterial.new() process_material.emission_shape = ( @@ -222,6 +229,9 @@ func _prepare_rain() -> void: process_material.initial_velocity_min = RAIN_VELOCITY_MIN process_material.initial_velocity_max = RAIN_VELOCITY_MAX process_material.gravity = Vector3(0.0, -2.0, 0.0) + process_material.collision_mode = ( + ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT + ) _rain.process_material = process_material var drop_mesh := BoxMesh.new() drop_mesh.size = RAIN_DROP_SIZE @@ -232,9 +242,30 @@ func _prepare_rain() -> void: drop_mesh.material = drop_material _rain.draw_pass_1 = drop_mesh add_child(_rain) + _prepare_rain_collision() _update_rain_position() +func _prepare_rain_collision() -> void: + _rain_collision = GPUParticlesCollisionHeightField3D.new() + _rain_collision.name = "LocalRainCanopyCollision" + _rain_collision.size = RAIN_COLLISION_SIZE + _rain_collision.resolution = ( + GPUParticlesCollisionHeightField3D.RESOLUTION_256 + ) + _rain_collision.update_mode = ( + GPUParticlesCollisionHeightField3D.UPDATE_MODE_WHEN_MOVED + ) + _rain_collision.follow_camera_enabled = true + _rain_collision.heightfield_mask = ( + PrecipitationOcclusionType.RENDER_LAYER_MASK + ) + # Local rain remains on its normal layer; unrelated particle systems do not + # need to query this weather-specific collision field. + _rain_collision.cull_mask = 1 + add_child(_rain_collision) + + func _prepare_storm_clouds() -> void: _storm_clouds = LocalStormCloudLayerType.new() _storm_clouds.name = "LocalStormClouds" From 05838406d0e627bf54da175b069184dd937ddf8c Mon Sep 17 00:00:00 2001 From: Voyager Date: Mon, 24 Aug 2026 16:31:55 -0400 Subject: [PATCH 54/90] Refresh generated terrain assets and projection --- tests/generated_world_runtime_validation.gd | 85 +++++++++++++++--- tools/blender/export_terrain_chunks.py | 68 ++++++++++++-- world/generation/chunks/assets/chunk_0000.glb | Bin 7700 -> 7700 bytes world/generation/chunks/assets/chunk_0001.glb | Bin 7660 -> 7660 bytes world/generation/chunks/assets/chunk_0002.glb | Bin 14472 -> 14472 bytes world/generation/chunks/assets/chunk_0003.glb | Bin 24372 -> 24348 bytes world/generation/chunks/assets/chunk_0004.glb | Bin 27748 -> 25744 bytes world/generation/chunks/assets/chunk_0005.glb | Bin 17972 -> 20480 bytes world/generation/chunks/assets/chunk_0006.glb | Bin 33760 -> 33952 bytes world/generation/chunks/assets/chunk_0007.glb | Bin 19004 -> 19004 bytes world/generation/chunks/assets/chunk_0008.glb | Bin 17996 -> 17996 bytes world/generation/chunks/assets/chunk_0009.glb | Bin 7700 -> 7700 bytes world/generation/chunks/assets/chunk_0010.glb | Bin 19908 -> 20036 bytes world/generation/chunks/assets/chunk_0011.glb | Bin 19428 -> 19420 bytes world/generation/chunks/assets/chunk_0012.glb | Bin 30804 -> 30816 bytes world/generation/chunks/assets/chunk_0013.glb | Bin 27908 -> 27908 bytes world/generation/chunks/assets/chunk_0014.glb | Bin 19420 -> 19420 bytes world/generation/chunks/assets/chunk_0015.glb | Bin 19908 -> 20040 bytes world/generation/chunks/assets/chunk_0016.glb | Bin 26224 -> 26200 bytes world/generation/chunks/assets/chunk_0017.glb | Bin 27692 -> 27632 bytes world/generation/chunks/assets/chunk_0018.glb | Bin 26616 -> 26528 bytes world/generation/chunks/assets/chunk_0019.glb | Bin 6996 -> 6972 bytes world/generation/chunks/assets/chunk_0020.glb | Bin 25916 -> 25852 bytes world/generation/chunks/assets/chunk_0021.glb | Bin 25860 -> 26724 bytes world/generation/chunks/assets/chunk_0022.glb | Bin 25988 -> 26292 bytes world/generation/chunks/assets/chunk_0023.glb | Bin 25988 -> 26292 bytes world/generation/chunks/assets/chunk_0024.glb | Bin 28540 -> 28544 bytes world/generation/chunks/assets/chunk_0025.glb | Bin 30292 -> 30760 bytes world/generation/chunks/assets/chunk_0026.glb | Bin 19988 -> 19980 bytes world/generation/chunks/assets/chunk_0027.glb | Bin 21096 -> 21160 bytes world/generation/chunks/assets/chunk_0028.glb | Bin 7700 -> 7700 bytes world/generation/chunks/assets/chunk_0029.glb | Bin 36656 -> 36644 bytes world/generation/chunks/assets/chunk_0030.glb | Bin 36656 -> 36648 bytes world/generation/chunks/assets/chunk_0031.glb | Bin 37872 -> 38052 bytes world/generation/chunks/assets/chunk_0032.glb | Bin 37868 -> 38052 bytes world/generation/chunks/assets/chunk_0033.glb | Bin 25700 -> 25700 bytes world/generation/chunks/assets/chunk_0034.glb | Bin 30684 -> 30680 bytes world/generation/chunks/assets/chunk_0035.glb | Bin 30304 -> 30292 bytes world/generation/chunks/assets/chunk_0036.glb | Bin 29524 -> 29524 bytes world/generation/chunks/assets/chunk_0037.glb | Bin 27692 -> 27592 bytes world/generation/generated_world_region.gd | 64 ++++++------- world/generation/props/assets/prop_palm.glb | Bin 26408 -> 26244 bytes world/generation/props/assets/prop_pine.glb | Bin 9408 -> 10168 bytes .../props/assets/prop_pine_large.glb | Bin 9624 -> 9500 bytes world/generation/props/assets/prop_tree_1.glb | Bin 8416 -> 8416 bytes world/generation/props/assets/prop_tree_2.glb | Bin 6324 -> 6328 bytes world/generation/props/assets/prop_tree_3.glb | Bin 7316 -> 7284 bytes .../props/assets/prop_tree_large.glb | Bin 4304 -> 13200 bytes .../generation/terrain_chunk_edge_profile.gd | 38 ++++++++ world/generation/terrain_chunk_generator.gd | 67 +++++++++++++- world/materials/generated_terrain_dirt.tres | 16 ++++ world/materials/generated_terrain_grass.tres | 16 ++++ world/materials/generated_terrain_sand.tres | 16 ++++ 53 files changed, 319 insertions(+), 51 deletions(-) create mode 100644 world/materials/generated_terrain_dirt.tres create mode 100644 world/materials/generated_terrain_grass.tres create mode 100644 world/materials/generated_terrain_sand.tres diff --git a/tests/generated_world_runtime_validation.gd b/tests/generated_world_runtime_validation.gd index b8ea847..ef933bf 100644 --- a/tests/generated_world_runtime_validation.gd +++ b/tests/generated_world_runtime_validation.gd @@ -481,6 +481,9 @@ func _validate_generated_region( assert(river_body_count == river_placement_count) _validate_authored_chunk_surfaces(region, generator) + _validate_projected_terrain_materials( + generator.get_generated_chunks_root() + ) var decorations := region.get_node("Decorations") as Node3D var anchors := region.get_node( @@ -1147,21 +1150,28 @@ func _validate_tree_gatherable_anchors( anchors: GatherableAnchorSet3D, ) -> void: var eligible_props: Dictionary[StringName, Node3D] = {} + var expected_anchor_count := 0 for child: Node in decorations.get_children(): var prop := child as Node3D if prop == null: continue var prop_id := StringName(prop.get_meta(&"terrain_prop_id", &"")) var definition := region.get_prop_catalog().definition_for_id(prop_id) - if definition != null and definition.has_gatherable_surface(): + var socket_count := _count_authored_beetle_sockets(prop) + if ( + definition != null + and definition.has_gatherable_surface() + and socket_count > 0 + ): eligible_props[prop.name] = prop + expected_anchor_count += socket_count var positions := anchors.get_spawn_positions() - assert(positions.size() == eligible_props.size()) + assert(positions.size() == expected_anchor_count) assert(positions.size() >= 12) for child: Node in anchors.get_children(): var anchor := child as Marker3D assert(anchor != null) - assert(bool(anchor.get_meta(&"mesh_surface_sampled", false))) + assert(bool(anchor.get_meta(&"authored_beetle_socket", false))) var prop_name := StringName(anchor.get_meta(&"terrain_prop_name", &"")) assert(eligible_props.has(prop_name)) var prop: Node3D = eligible_props[prop_name] @@ -1169,14 +1179,17 @@ func _validate_tree_gatherable_anchors( var definition := region.get_prop_catalog().definition_for_id(prop_id) assert(definition != null and definition.has_gatherable_surface()) var local_anchor := prop.to_local(anchor.global_position) - assert( - local_anchor.y - >= definition.gatherable_surface_minimum_height - 0.001 - ) - assert( - local_anchor.y - <= definition.gatherable_surface_maximum_height + 0.001 - ) + assert(prop_id != &"prop_palm") + assert(local_anchor.y >= 0.25 and local_anchor.y <= 2.0) + + +func _count_authored_beetle_sockets(root_node: Node) -> int: + var result := 0 + if String(root_node.name).to_lower().contains("beetle_socket"): + result += 1 + for child: Node in root_node.get_children(): + result += _count_authored_beetle_sockets(child) + return result func _find_mesh_instance(root_node: Node) -> MeshInstance3D: @@ -1357,6 +1370,56 @@ func _material_names(mesh_instance: MeshInstance3D) -> PackedStringArray: return result +func _validate_projected_terrain_materials(root: Node) -> void: + var expected_sizes := { + "grass_lite": 1.75, + "sand": 2.6, + "dirt": 2.5, + } + var surface_counts := { + "grass_lite": 0, + "sand": 0, + "dirt": 0, + } + _validate_projected_material_node(root, expected_sizes, surface_counts) + for material_name: String in expected_sizes: + assert(surface_counts[material_name] > 0) + + +func _validate_projected_material_node( + root: Node, + expected_sizes: Dictionary, + surface_counts: Dictionary, +) -> void: + var mesh_instance := root as MeshInstance3D + if mesh_instance != null and mesh_instance.mesh != null: + for surface_index: int in mesh_instance.mesh.get_surface_count(): + var material := mesh_instance.get_active_material(surface_index) + if material == null or not expected_sizes.has(material.resource_name): + continue + var shader_material := material as ShaderMaterial + assert(shader_material != null and shader_material.shader != null) + assert( + shader_material.shader.resource_path + == "res://world/materials/terrain_surface_projection.gdshader" + ) + assert( + is_equal_approx( + float(shader_material.get_shader_parameter( + &"tile_world_size" + )), + float(expected_sizes[material.resource_name]), + ) + ) + surface_counts[material.resource_name] += 1 + for child: Node in root.get_children(): + _validate_projected_material_node( + child, + expected_sizes, + surface_counts, + ) + + func _validate_pond_collision( region: GeneratedWorldRegion, pond: MeshInstance3D, diff --git a/tools/blender/export_terrain_chunks.py b/tools/blender/export_terrain_chunks.py index 2c35982..ced081e 100644 --- a/tools/blender/export_terrain_chunks.py +++ b/tools/blender/export_terrain_chunks.py @@ -10,10 +10,11 @@ Run through Blender rather than a standalone Python interpreter: Collections use ``chunk_####_description`` and contain one primary terrain mesh named ``chunk_####``. Additional production objects may live in the same collection. Reusable procedural props use individual ``prop_description`` -mesh objects. They may be arranged anywhere in the source file because each -object's authored origin becomes the exported runtime anchor. A same-named -``prop_description`` collection remains supported for multi-object props. -Unrelated objects and collections are ignored. +mesh objects. Their child empties are exported with them so authored sockets +remain attached to the prop. Props may be arranged anywhere in the source file +because each root object's authored origin becomes the exported runtime anchor. +A same-named ``prop_description`` collection remains supported for multi-object +props. Unrelated objects and collections are ignored. """ from __future__ import annotations @@ -43,6 +44,12 @@ PROP_COLLECTION_PATTERN = re.compile( r"^prop_(?P
$6d3{K~mRvq~0mdnVWDxfds-VUC2BMgOJT zgisE|ALQ0Q^$>v%n2XlwW94EKudSo5eD(hzpV1t^F;;uSGW`d?1?b=WKDD!9QeOJU z7g+k|f0^qUefgiN{|Wr}Imb8-`Zvt{k{km48||yTPXFoy9QrTzEc0-vGxY&V$p41^ z59ijuKl%?w|K>Lsf22M@^OE19e{&DO&Gg^$cJ$9VypjGj=l9jV-t*(pKlNwnANw2h zUuKI43-=|7Bm$`$`_L;vXh zI{i1W^B{X#MNj zTay{%pWL;!8_GKFm%u&w&B*&3+VQ_J@xOLD`cL10{-& z6N&Bq1+kI-ej@%hiTJ2i$N7g7|G8J%zvo3~r%E@aGu%y*G^i9J{EE z=Ks28fpg7rea?p`|EGP`a-jWx9skq$KZb^{Q_r+N&Hr0|lso^|Z6~d0Yi-E?JLi%A zYy9s?-RO9qlRk{!m~}oh{_Az8zSL>vS;osR&{(l{Zc+F-sC2==+7kNzOQl}gYAKVpMGB?vl!7(|Qg<=WY@hh|r_TCQXNJDiX*@AN$N4O1 zQ$3aE(e}%k4f^N{&*pJEo(R!z2_y+1g=>)nSV^{PZ z@gsf%)JD-)PDVq6&vT89^J+n^J?yghCtQ`F#yJv<-h-+F{r({O{DDo;dWUP`-|?zN zK=?HYO1>%umtB@3yDv%6J(t~3zIXQ(sjxFgD(w`h493>lCUW0appT~1hdP^hpRt<~ z)M0VB+osIwYf^R9WvRXLf`^*RFGwZs^DZ*#9OIOI43iY-XQ<~7j2#KmPVZShBo!lKqcx%pY<0)y@lEYqptw8nCJQ*)OoJ8 zes!C%IZON0x1R$SWq;6T2U>7^eWs8eJAltP;rX6^A-re(2KEnye4uNQ6s8Ro*NR-&0uRt;xUN)+I8ut(qEuK(``U0#I_$bEUG`oAwQeHzUzV7MFH3jj zpqrQjmnCxdW#$ID>E9zkddHiiE?*di-!bAw26IOq{DuZ2D?OR@9@%m=QRn(r}SXVrl(B|(VDf;$*dbVb{_9ly!CczoJO?xX!+E8>Uf2KUe7B&z zH~J^%&qkkrrOz=cMjeGvZ=uwe5==P&y}7{ec?Z<5rE|1uKYr(PgyF%DMgkxK18T9$W7VN9PBOh4L97oqh|LOp37luN_kwW}_r63fhofXBW z-9%J)z%@ix~9_}>NQeGe(lLFNbjnx*tMLJArAg{mDb?>GOYg2^?$zlFs{O=A(KPk0<9ueE zKNjEJo%)RWA7ZhMmb+7T8taod_sIs%eLwte8v0JB?cNN{b9LTy7}{^hIjqIGtYcFh zTLDVIJvJpc$CWO#59hc(=hD!CGMe{8|9&lPTHymaq5nSg3x-^fP;#;m$T#AG6q$NS zD($)^EHUGuHo9)|tVq}kBHfONMA$@O6Cf4R9rS&U{SJ#X--i#_MGPG7#jepVWVfuqE9QnQ}4NQeDw?Z9-lF| z>|;2OYmV=+9A9;A!Tz4t?Q%YB0oqStbY2vF8;Ypj`Q7;;pOe>kjkunl|COKrXj#gI zC>Mph9NhgbzTgAe&*$U{N4->`TpembZ3p#^5mz|3tvKJU9kitmI->PXw7<^2&=xz} zbi#HaF7>*K7IKJx)Uhuqyyn1_PWv26Utpvgy^l0#0zQCi1Et6}%h9gN?R8TDTNUa+ zT?aLZJNJ-7164Dt#rl*bhPxpO-iM> z_3x*;SCS4B`ybJ?i5x)nPn}r$=lmxtoO{)OI{sAkox%CM5t+QF z_sFV`tkT`hezu?k!q#e#r|0@yQ`W z(La4LCEv&kQgqryskHl=)I#%y+Qj*$Xu8XbX#ami_=^_N*d$1Y44X`B%JaPcs7Q;4 zL>f{jhV~C#lb+;gs{6jm;R{@|y&w_WE=#pV=zj*kZ@P{8fJwIg&HVy8XK>6ZTmR&r zf13WOL!)QQ=B58<*hlrRzQVD;>OT;CHGL=B`Dj0u{#ESP!pJCftI|y{m7=?TwfPA0;V*~eWWljM4FG;&91!bTT)U>IE z<&oD?Z98LAIv-^k(56)XUD1ClTmP+9|4B~$Yy4kh$NxWD|HS`0(LeX!S-P*yxm2n_ zStt(0Z0^$6(0{dS?8|>v-79sWA!z(Z_ZDqz{U=Hp;I>%S+yR_9FJZv5AnZN-1A zQ`1(ASFPjkJ^VN6pWHt${TD#*g+aA%xQiI1`q%h>NBTeR)xP=w)xQ=0X?M4)e~te) z(!P1UFKtxyKNy_)ALrG7DfF+}_tn3pebqlyBmNgg|E4|liA$64KEsLs6Kuvy>*Q(D zj`cY^rmwc*en(sXjZ^PH|2=63G35V|!~v57+%o>(rvCeXC;r{eh<|g&#+Zli-^h*L zkK0P^&RI2>g9;5&v~e&l&?TK0x(Pz5f~UKlCNyJpKN{dBlIs z|26mb#C|Q)&kUunZ^eD|ZQ_5P`sZAfwDqq!zoN07<$*Tq#zNLH|@U6<= zYzY{ALJAK2Ns6*&PO;Q8QZ((16oW#2f02-0XT=qb?xP^mZC!C(w@bVt0V!8KgbuhW zMF(D!lA{co>lXyuZRr% zyU3tdZA*D5uMPVv{Kd;)_8q`@LDCcCU5|O`{YZ}Vc=)Px+jm8}?z@b=%y{4xY0bRO z%G}>kbUry76vS^AWZWkI9Qr5BXAGIf|K+--+Ta;yB;WzA1I*=o&Ewoza4u)!Q&Wj) z@t@M~vgwVD`iSvQa)4Gk4)`8!4IDJ&{l?#N&N$y~ ze}a>4+MPoC_~mZr++%wYv_GXAgp=!s5r;b2bi{VKLfpSb&YMHqMvntQ?GVryPe0!S z?bMHU>PLUyx`&)GK(+ql@gZ}G=?{t&UE}4hbzEoK%viuqk@CB^P5|X8mtmYBKi3cZ zXirKf?%l1|Zywk6R(L3zx>CyZUn}KPHo<0#a@c#5c1r&E{q*(Gz6bOli~gh0f7H`n zA}M#p2ZTXqo3Lly{-8VUCXP1Ni~LOKji2sI92!JB9eRv@jT6rGF!VnR?JGmGC1_N( z+%xMtDZAi%DZlu8DFEz*rb#GZvpP?j?9ZWIVpZFc5zbvp+|g?qGbDaoncRc$@yN9I3D-M@mq) z_j<^Y;>)h`dQTqz3Q?!Vs)jXIYrnyRZtLsp z8;b8R1<~}jCN~G%j zD*8w3N(TrB)`+$=uG%IBSrF5$>we^WezP3ty<`vM#>KY(Z1ProK=3?J3n3aSR^kt~ ziWEchh9b1@ApC?M?MZ2yI76!SU&MT#HD1!zO40tz^Xa=;iY7DH*MfPz3A-h*_W`tv z{ym`op6EXc{j25;5tPHBlY`EbyO0y;7+@@Q8TYE2UbG>-7BGmoG>mpS{HO!`?(lB` z?JKJPF+AId=Nna6nJtxA=hRSU`Hxa$9{2Oj;QUYLoZAG{2d3czrg4nvHpBR?sQp|I+)BPi{nP@rRq;vX@#CeaFAuBn1>A2` zZ0SWQx`h9s|79tDU()0PV%!|NIwVWI9k?xJ`h~s zXQSm{{7xZ$W6=+R-+NO&=6(EJQT}gH{=cC(OY5l(Vfx(xcfIHPcIe_-% zo%&b*5rFbwtV&9E^(R_|BGch;(vPX_+Kp9od;;zn4vK>b373#((r*p7>vp_-`n^><1|{7oV)!pJt&X9^yLaCn=1@U>Xp9eNdq^bwNyhcir3HRKeL!#Gf8r5x00a6R?1=yB z0~E~#H2#l&ja;AjZy1lSF!5jYZ+w6i|H(U4_cf?5js0q?5dX{B@xLUxH)#AXivEkB ze>e027L)%k_=EI+NAcfB{~G_bFQC`zJh?ym4^jPV{!g7dG4Vf_4`Ck@|4r;S_D1?I z@)0?NFX+Dr@xL(fzwl8vMX-0lJ)k*&1@D)kT;nUo^vE^!n%)gL?tZTo`e)r|EB@=X zJj0FRf0QHscSNfi|HB~@eB=LQUemlkulTR88Rk)*1FHY&FwFsAF1KBH@5| z6V?7T$GAyzj$UpArv=Xum&sdm8aO-6jJ&8hy`2?+gDWve;%3_5pH& zX>W*3dELuY{J}K*#q^hfV<|IW1iq!m0dkP-_@Hgf3j(#Z@d1^|)yl0EDeIs#@xR1! z<{sk%++2|2OU_C`^8cW$uOx8ZF%JQ=j)^Oi^V!!yGUqs!xY(8a|GN0kS|T<6C9X=W zDP*Wfe?as9GN63`LrKm5ee|#6ghi;^f-lpDr=APi6kt0)@juu69CU8cDNDH`TCeP&8ttq;?W`5Cy`A>$ zZQ5fE9VlC%{SH5J?tUSsNBcUD#}Gj|7J4~|qul)p8p&Zlanl(a0Rv$iOmHxjvT8aD z=KHXKZ72G^`T^aanC}6<5U`ARPYem!yE!!>kGj76r&299VeJu}*9}{M+ zHGSK^$hn11M>uEH^UzNi|DbJ-p}q{Gj^PWar{U@cVCdJ9Z|v7nXYsevY~68bu_;?x zY;@Cp$FgV*4MwCPSXgk%{PUDr0z4 zY^G!H{~MZqRU`|&8s?$nxpqH)jvePU)-QceWb?-&+dmcA@foQ7L}dL3A}e`s1-`(7 z@)G?VK4IqH(Z2cto6#@gTkttC^gW^<0&FC<({AP$Zp9B!f3>MML!EWxEck%>E3aDI zhpoeSMukPEb3{!jvId>}!U z{_P>K();3Hkv>5Mv|rvqS+scX8|V=28j4ZA2Om%hzg`AEP})Yf^>x*__V=Br)^+}l zll-c6#`-kg2RX=xFDk6#eh&Q?r(A*9QJw!()20Si=j=A7?X*JItsQj8MuTWM0v#K4 zz3%9f^ks?ZJ<)Yf@<=5Xbk2S}Bp7%v`N)avky4*dP7Jp*^K1 z^nnpD38umn+p3OL^fi6Y2N&A`t8(Mdw##vha>*;Da5B%+M)UrR z_gN%v7yn*7izE7=_(vVW0@f9Qe#2Go4hWcj?a+C%9h~cJZknjo?cIPMX#9`^@&|ox zXOm|bYk3y1EwE9vk74-kvDDdk+UYnO^#dbe_%Sy_k4k~DUrECy-$=U+$E5?$G3v0{ zO~lskC4R?GGGNzfN!xu!Qf)i}92pH0h`INZgD*vo52EW8HdtL}aCf_&&dl;i8%y$~C{eqZ3d>-Dd3 zzbbjY&d+ZE^=+EcX4?OUHhUajhvvK4wmZ7lH53v~k#{;l`-x}ayq9Fk{U8<69O!*J zDQG__hkbp}*RBJ7CPAW20=6&cn7`_NI!v?eZ0r(1tCrqXugW^u0K|h^qWi5u>-Z2~ ztmE>YzF#tVwd7CU!1(YMFNxdnQRo)U=USuNiuGu}lY@@z(^mDpjdQ=5>qi{Ng6)Po zVXqJPiiVE?;|1oqUFriOh!d*+anzma-{8?dujzFGOaI5D(b8|E1N!g0)%$$I=dy`Lc5we-E%aXw{g+1nrEKm&|G`H8>H{o4 zz&XBw{sSAMee|!oH>fWNAP3O?K(28?y*`+i{!5}~)w|wHV5mU3G^l?txq@1wf9IHh zRW|xZ^JdEQxXlQwH80IKH((o{j>wLulI?n z-jmU`A%*e)$nYVZ*x#QxuNqGN4X7{Z2V-C=sQwM)?$%l{s(D+dmZdLf>7KUWcPlpA zpQR6wYuy>$R=;8&_Yc*-NBimnwt=ty@hJ`eSpA!4o2rf4=GDJy-&g-e`)a2=hyLlm zTk#%^udz`-;MBkI1DoF!S%?0O_SIVY|J1GjLwV?btB?NI-=_Z62i%GNTapVj;~5aD z|FY=cXkYCgq5t3;>HkLY|F`I0<9{w6a1;IOHGXIQukl~?f1i*3n;k>{_>ZP<82|U6`Mowy{WAuj@xK9R zKOn-+|8Fz?HzfYI-{6k@<{8J)+rIb2|6KY%=#KxtTmR_SsedhR$wU9@3wD1-%y;Nt za{#CQP3%{z@qZvbNp)|~en5A|05twL-0F?}ng=x5Nc{K2es|fe|DP@WUl;#}+xfqV z|2N71Zyf*0|9#`XrT;f`$8*i^HUD?U|H^Dv1dadtzQ%oHwJ)Ige=hCoHu~4GJ`?-Z z=7WOd|JUjNqwDqGfIL9;-yskE_eB4?hKjDip*etMHU87D_l^I3iTfJ=)4`boSn;3y zzi$qoL2Gx4(f^+n|8G7hD=-dFkK-Bc+l`;*^Y!UNDEC3*NBNGInDxFBw;4jx?)tlF3-P>L^P~Q4Zj_e}e-|d9H`wsNH9bH@Fe74>DxyWJq`;Vh} zClBfS?7t1&8#Mo4ME*aM{C_ICH;jK-WH|Xq<`dj6_&65QA%*?`ms_myKphiQqVNgb zb}JyMw^8^!o>$<9gghxa20owyg1Pt^GU_tLQq= z!yp6w_rJ!m9q2v$>G*@pTcG<40`BMV%i{AqL&n2mUgJ4(R-Uf8x}tr7b%5``F89}5 zU-j;bjseh5ybe3}*ZiP#@3$dI$tE6+_CWvPXgdtL*mU5v)@Z#s`x%;{?M7Rv zi#4>3l{Txet6?4B2MjeR*WAp$+wc|mg}QvU4m9BVx{wD9B(EF!CHJ-*^`gFD0!)NS z?sBmiMsBKgnhy;}GMIFjp8KF!ov7QXWHj40g1GQP1Eb9=#?p zJFiH@cGhxX9hXRK_?Gk1a@8rRxA=tAUX*Q72V0dsK!Gveh-(PiFzCG%`dr~i&UI(< z=1w*pcvfKZPsG2$#}ZKYqg?pcrEcn?KPR<`#ntfvmGJ?FDwJ!1t|ihKbWLrw4WTYn z1+%Z(N}xWZ43xGhL)ZTU989plvBKXabHqrc##1rV6n4XTd4Fieo zx=zA4v_65@K0z%^MCbZk-N~12(DEe86JZ>E`mr`+u)3}5uS|t$Hd>wp!>;gMd?wXF zCa;ak;TY)dW@y}>z{eSg)xzP{dp*>4xG zIbl56+Sm30Ws9l9*GoKQp2h9g89F&^TXf%SyIb$7c}4sD8t<#Fpe~nEx65pn zV^_l3+*Dz^2Gqhg81CE1_Z-Hb(!PdKmwN4A$NJRjb%4n*&1ULRDL(tC#BVt&BM%&v zaSXhTCE->k9r{LQKJvZHdE}JLedM&vJp_l($owaNkwwp+mnHvm5iVFPd+CC#`s)SR z`054O{MrTCg584M{>DW)@Xi%^;scSVJ_PiuJpGBt^XUG? z=b*beIk~x??dj-angiXwALhVZ8~xlY7>#BJ;zvCF0?I>qZ4&P}kC9h-3dho8tY!b5 ze2zNwqdqNI_r+RMemVOrwb6e3N-(-MK0sr?<^&q&Obp=IWo_~~bI z>0jeMIyX4=-_iB~YTKy(x4AX1x>t0}U-SMd%jx4Sar*%E1C{Utl^z800wVFE`(`{7$bB;>l)}u1!;iEF)@KG6$4^XB&@*lY${m(=HS?GTr zWF0;&3!nN$mb`FImZE*ba`e9%{crlat$o!$>_Gny6aSw=|4*y#ZJzxU-J}2i$@bw} zw$Z=p-ihjezeE4~IF3{QB%uU37)1o|%V z4_!q2-u2$QqyG-*zsd3wTpP(2)xO%=%#+HcfBPN^OaD=tGjm=&`lqb=Z}Ks9`_ZjY z{p<7bYN1&}9m)+r_1+p<+2~qhdatp*Z}wHIKA*8O)rfe*BMN=zr{4Vk#O^#=~To1#=kNW$7lE2Y`69AJ9c-w`d4im{j2sF zSMorA@;B*U^8ge7jrM)@Z|PpOe+T+kKXBg$>h&;vChFXp|96bo4*Bwq|KoQ2xAotV zbF6fLmgxU>~*+Pl$&En`GLF#{W_1e=Hg@s2|Yz-?Kq|0QZ4d%tdo^uX*G7Tye*D)w$|*ssr7g z1seaInE0Q`G1D9jM!OpSoyW+ltnq&)`>o@*>_Y!W`_!r5Hjc4|-?x-~me^=n^{=`% zv0v?G*a*(}@6^A>{F~^%bQ1YL_x1WE?Gcxf49xTOi-Ati0o`lt??_qWf75OFca8fd z{%`We|2*}-+K&IWHSu5LzCrsB9f|*G#F8QSeC-1a1+_XKXfo|m^MB0&eDnW9$7Jk5 z@_*3$-=lxxzUBe*?D)Tw_^&a4`Ag?59(?(NtRenye)WQEeGP1D#s7DS|K$G95VI|a z;~M{8K>tUM`|u6h=-=f3#^#y-Glr<+e^b!2-WP0`_=-FKH?d!>#($^&P5jq#TGn{x{Y5zl_)qjnRJ{;(uZCfB)h1k4J!s|NY4SqtSoZF?USu zjMY4#HRr$SC&XOhzs1Mcyx{!?AL6^wX&vIV#`W6Ry3i0>Fn_qU7r&Og));hO-Ot!s zl&eEksA5x4aPR# zMqAiSoo{sa`K@vO_0%W*dCmWQ^j{8iWoDFcA!2$VGOXy%%c*%>MKdw`nB}i`5)=G!_APr-^!GO-^tv^ew2BS z|7h8)$A6Ml&z+L(fB9MV{{2^reb{}ko|V0?pOf8hUdY8mZ(o$h-@hs^euAdS;SDc- z?jGNJ7Om&vn0xH+*`r>odHadeHT5I}s*zm5CncZ%G#%Z-+c@LI?U)`!o!LS6u~d1fRw|Dvl>j$>5X%Do$) zRw)l&Fp@*(Y;6Xlr$N{hU?L_}uY^`dHccQO5aOv;HF9bT_w+EvCK>GVm z0=Ryp`)n6}*QJ&^*9UmE+aH-?VrFfAcK<<~cVVUSxa+e=vgf zVXgsS^G`h{^%wm|+N}Im+OIh-?N%SRY#-(Vjy-Tf<~;eGWIcr+z|O~RKJueH`syip z;U8x#Uc^5C*3a_PTffSox6jLgw=Y;cjD6(Yi}LJ;SLH9Ci@frsmzTd_EP&S@|I7z{ zjs2Y0{vJdB53}Ds@&+^Zr~2Q-^~4!ydcZRxy`JD6Bbzj~$G+em|1&;7;!5NCSU>s#hLmsVTjK+I;AeGA{g!;rd^&Wi&u6f4VFMyRl%Q_RALe-t zhG5D85!7Q8ekDpj2hq^;3v$n6jG^Ri0*zY8WH4TE-aPKzvYK5%5D8<%Y zlm?8I^?3B6BtCUflAd;x@XRIY`QjCcdg+=(yqx19`hRjH?nTzP=3FH`pCiejw(CJi8d7k^QY|3JJytowFmm>lA5xYjpM#w9}35;lhBSE#ie>TdA|1b>l61?`)2G;t!iJd`{}s9ul~#7 z14{Xz{-8YjJI4eo;X|r${2E+mtaS(;!LLArN8R@a4yAqRb%61J4W4vN%Fq2qY7pCM zX&+a|xu6^Kfky4mmN`#lOV-nFJO7z%+41uC^4uFI<+XQC%d4RFZ||Iu7vK3+9((7! zJn{~@w|VSe7v+VIuFBuh`>W{KpuXVAPl)U2I2WI?&Atpj&R<5YG$nAM_ns!v|#8q+^rG1^Uo0 zh~r$}60{rlDGEt2i`h?oiC&Ygy zeu`%+hVDThwBdYv(F%HK&bdnBzo+8^Gs%sVbV$Z8_U7F1$S60Qt3Gcthl1Qm-_Nx7 z&%pNN^NrAOX*8@lR!ZW7@1hP^x=dK&RQx#qN?c`>KECm0RflZ(n$|uRh?f=>MrdLjSa<1Y7^A{okyA z+NSXr(`^0gy$*fQziQv3f5rpKqyGZA^nXf%M%el{+E;7z-}_i@ojNs}t9)bq2j8y# zmL2HujL1@&7me{rX`kczG5_m-RsY<0a-II``ow?D0cvPIe+Thj^;$3h2f7}uO50e8tZpHsA z@^|!ZV!v9A|4$L?bskWz_^&zuHCr+7tUN{i8vR|G!87u|DxXf*b&> z_#Z>A5KF&8eTZJeSF8F@v-PiY6O>Wz_#cA)^Pzu@U-{u4Q2kr+9}TLel{7H=k45{6 z`hdLjuYSYQKj+)Tf3+o{IIlVN@3QrOH?f}EmpnOuNB{hmVD#_5$4wws`w_nSZ^>ty zfzf{h%IXK|{@>95?%eUeNbFis3fpM8VDvf((fq$L`F}%Dt9^m`+V|I-AH6%N&bXfD z{(Al2P=Rt;DCLBGH2+uqSEk=!`u{pds2azw$rxbmgKp~34`^_h`2PxX*FF>%`ghs+ zf5^mRQg+TaJR9dY_q-mL>Wi_^WnH!m+m|gfAJ3Ktp3Ih6Pv8r%8(;ih9{c-Ga^%fZ z9-e>mv^@2XU*ynR=j7qH&U<*|pBLoW53a~xKNry)KzRjTX8UopeDDMM_D*>10DeL9 zeZzjryLo*F^L@6z&-`Dtpt<`*bgS$C#yrCO{=;qtknfEnAJv?HmdykBi3PNe2gzU8 z@j1gZB>9H2UI=}FKm-0DV8FNHpY*l(qf3K}vMc@=TJ;4j>pB9x83V9!VFP-7BEfMV zOK9xJ5@Hj|YxxsDmx2Sn;@OdaErcyhU;pkgtmio8J1H^sdyA4YevmQ?PfL}Zm!&%W z;2LO3sSn+rLGz4@4Cfq-pdX|RgEaDgmXMSLbf0LW+x^K4(q7LYNAMDlp2LrD-!$jE zIjC*+0)2F1e-+MudCt9|GI72Z^-!N2qk#eKHsCkZdzSZz(>16|{e5&>rO8v|bn0XH zO-^Fij)VvsEr)Tuy3}6@{7xZ`RoJE=#|R<+cX2#V4#4qm6#upV9}LpPNnmnr&kI58D8p)<)~q8OL){RW-ec ze!YWol*>RVCyRLvf1vY%s-pj@_!6ZW$JM#PwRdyOmvc8{v6j0bBzJ81tnB zj6Ev;+yf9Y?ilyAeJy2JD+9J2moel3;}0?x2oqrb6W__Y=YEiF zFa9XoUU0Mh$WOBU<aGZwT1jszL3Dw&-nZ&5|s9-MS+2z%e|wHN#$wBrOJ%sQW>hw zr2jVigfw0DleAlZ27b2au<>WPoI3Ke(_p><9$_yC8 z_7HSG&_O13knz?vNqzIG40r>uS|0fNH5vBz92vo}M%oO+WY+R5 zUQu1MY_;@b|4e+vKnHr9Nqp}Vev>bgd2N!7zBh*78pHmLslyulx0*JU@dJ13*uvr4 z*MHy^`Xat;;c z3k_FU;H5IIp?0W4YJ|Ks_05Kn3KL(G` zzP6*k4b;7pRrv6Qw3jUEaUL-t3v}FmJo+3&n@y+vreiZ8lky#;W<7_ z8+wrAtb_+S)++3J+TJ#fzl*kJ*va+=-p}IrvuQVTY#v}v!1Tw@$t3Q5nE3EXHwRA2 z=)EVU_uA7EwZcop^3&3C{?Af%##t#j<*eKT_bQXm%3b4smLj81;SYYYD2y#I>PHD4 z#oB_S=pT&Y8i7IAWgZBr3OT%5?aL4OkGRxVPy9msC%7rh{EbQrzLiEBev+n}xn8%) zZQJfVO&)Y!lJH;2&$~%^;i?RJ`KnC$M~>W&MjqhY8y5bXbA(S`^BH{ZwyQqnob&or z_M6E5$|M-eeOyESc}4nhO}DSbB}sYv67OA+W&g^N_0+4f0oG90i~0PNx6vj3WvtC; zwnxG+2gA|#SdKrN+-}*2tQ|vaFs%NVI^(zPxCOiT?Hl+X!}*>F>bezerj26zgNn3~ z;KR4pzZnbEaX`%jJZz%88W!6ua$DCD;y!D|_^r8Q5rFnxQRLo{XwT4%SlkIcwnp>Z zXzIrz6P9g6+^>axE6*c_JE%apG?cmprL)jK{zC5+(CY@y>j*lBIM@0iTgf|iqW>2p zn0djW%nJ-1j_x4@KM*jH{s3*tHQh}Bwi0XKbzb$2#BOHnoAm$;v6Q<*j7>B)VaEv> zvHu6jdg7EUefqS;GOYT6ZGXEU2mi_aKh&||0Cm0@?XN+TPL@$$51?J`uj^R6H6D*0 zOir0duG)*(Zb+n@4ntu$46~W?0zQP8zuIx^wUjr(PS^u`ZFXZf(N5;`eRKJqc{X#< z|NT#$m+8!RoX*@w!-V~(rSHbmj0bw@x$2CxXT8vx_n(t8tdCrhIdY|J?wS0n+%-?Ee8dQR0RGu;#!>g2E$XJo?60KS3f5`c zbxK;XHiOc7-)Ww+@Uz4}e@W8Ofa%W?PR%y{pzZ1~_>u4}Wq_`KeqJr^HfKCgBfOos6e zCQzP^&sc`mH~IXQ9sDk)rF+JM%(#%Ree@XhiVx6Z^~Aq-pk6!Kw4gmzp>2d5zJ2{0 zKj5+G-VG5O>8t;_FS_+V z!$Zl!;{eqi)J>6l0RT2F=1e^vC~4E?u6 z`${YH-|65l(g*#gp?@8lR|ca0(dd6J`d3{W?Jq@dD{cL6_R;?$_S3$A>Qzzgs{V%% z>-(brM0B43YNw(9^$z{(wb`9~UiCi*{hMQ`oeG*ujB}vAV4AJ}jp*O}7PWV(e?6A= zFWU3J)dzHhW-oD#k#-Vv7`;AXa|rto_+0<<=$+V~tE~Ee5VFANU+w%qSpS*_+${cU z%vV(VYRlbb{CDase{zX#&K zi}>#%_Ip78u94q}|76AwiT@V(=Av`HmTJsPwBkRycgO!T()keje}VYVf6fHW0dmEE zN9@;lyXrIiAMsw}|5h8-pl|%2fvzT@|6%CAANtq0Z^i$2bH{&kZAS0W*7X_Y**U}v z{D3kICc^|6uW;On*cs@5Ir;l0`?r{UMD>3VG~VmApd0ZR@qaJzU;8StdBuNXN4`fH zt4IGj4iJddxqJTTUvqt5a%o?E!Hx89#edEH-SI!LJN^A=&HahDhOTUD|GyRae+xVJ zZ%O>O@_)wjD*qq$-aEd^D(m|elu<{=vCNFUj$;=A6{Yvyi%JzKqBMcf6FQ;y-g^y@ zP!l=`(jf^g2_=OVLQO(QZ@>4uuX9}|2L#5s?`PikkN1Jk_p`5)oSc)KbAD^Bz4qE` zqhn9r;`VF9$N`{jGxs+>-sqg1V7|9U-;Jpge4qTkXY6mTe;5DrJAAo-oWy1oXc4N% ze>!V(Mt^E|min->%GZP3bI-FD`5E6B7^TwVE~w_r%c?yaW?fb-s4+8^+Mrlfp6;R& zqlppPF21G#0XNAH-qNsjz&Hv!Fl`5Q!TYkP56*V8Xn(e5?90*Qy>~NuPp*}-H~G6h zV8-6io;kg#^J|9Yn}Qizz>m!9Ouv6~=7&QsVg)mwA5UCA!DbTUOzgoTeBlZ{AASbr zAIlhLJ`x%Ge|o9-N~0 z2Bhg-_?H>kEBB^%vR>_dn{|RjH!t>z*WY{H&OS0}38n%k-i_4!>JZM?%diJ9t!zwgCd*w6=C zI|z+ULX$JkT@bxy}=tMMr3N~*=((iB*$YDz~e6Cxu)@)6T3ljspv6Quf1$jKp^%L;uLTrL3^RNL^U<3?@VfHw}_WzU9=_kOscy;EY|M_Tt zVIEbuU4|S$QS|=>+WgX{5c$84$lw2q9Kd_n0mHxGU6T`JZO^^;AB|HJn4g?pfx`1( zz6unXug4f4<#s*}+q3G1J#E1K^iS<^z6xvgXuaKf^xH!gk9~VkkA8PZ`I;S}_e!uH zY2hLt<8z&l)9>Q6KAjY$f>WY_adNai855(Ad@tz30WLmZ{L=TLYOr3=a{d+lyd;ly z(V58ikKb(DH{K4Y98z#8oray)>i6p(XbbqH|u!Txqh1%1MkL* z_p>waW5;#8=WFxm%KO^~TQPv2cNoI^Kjl|y2>48_$46{H4~DhGB=fNWK779i_wQxn zvpGjYH>GQAP_o9kxuX&5`TZB&RJ*y?)o$K(wP*Zk&P_F*nyAWSQdDYGno4jsQb{Pm z8EK#Urs&hb$>il-d^G5eJ{p{)kA36y$Df0`dEre}f{OHHuDv{-xzBBSAEc?@;dJ$7--Q{61ZU7kFunGior#t+(R3c`qO!E%e3k-vjG)+T1wzneYP+vy>ClZV zh2G3`6MQpEhi_zS&-GkUE_xTga(mA`?7c1>jF*liN=FU1UDrnvxV|L?-}K-H*W5q& zY91k6AB@EYoaOyIg`Fezm}N7W_uK6A7>xZN2!o(MHoxOGsREy!w^ve&VDkp!i>rtg zOpLIGIfKDm^R@iO28@TXo*4aSGdIYx#y{0XleHG1{iS(S=5{IkZxQrg2<;cP`3%4P zvB?3TbvJ1JL-Kha-ks0OS8%o-V^7Z$W!LM8@*8b7=uf5BD1VU!JkC9JMEBFbnFADC z&K|^d>`4joU=w>rw!seA=_Y^Ey?U&7h#n^xe0(f5Cx+4VvFcCE@Jl4?2+?j{U>)HT z;?gqXqg83Di;9fpC&j4vh)XKm|B62AcSQyJvX74I%A>BTm;X(T*-ox-hl|mSgSRD9 zf1j<6Xx+r~26NpHM#5+hhN1sH=)N=WPkVpvdk-DCZ7^T&#``=DAHN!3xIK(L#`q<} zRz53>@sXxiP&*#adA^?P0T@YtqgmV2HHZDp4%4>K`)K8Lc`vf!g#cfKAOI7KKNh-^{p&auFhmu?ufe$CUc%QN0boL-& zJDUWis13hItL-j2?VQ<_Y_>64DXJ;rrH_d}|t}}HjHy5~{O#)*Q zq})R?w{L^_KEJM;n>kWkx)jUvx#4+Z?*Mip7W-hh0+(({;g_XQ<^o5fZLod&nHQLK zXVZIP1Mj`*KeLX}^rZh`C$-Cbrf8jMQ7}mQ7oUY^u?_^;{zGh6@VHlY1Ln~i!L{XhDj>c7ld<|Ba~U<=A`h3$Y1aA>lZUI8J>hyL@C zG|Gqm^P&HI=szF&&)1r@0x*5>|4JU=L-b#A9GWLqa40)5Mn#8T(kE#DBOmGup&-{4 zM#Qnd_@+kxhx#AG`{Xbjy?Q@H|BgK{w!!OR`aev5ocQ98=zlu;AH3?ijP4!!EFt$X z@0OaP|AuJ4zD-@m$`jI58vQ%kH)BckUuNPRbf3uUM9$8p6yxVc|27|>|IcP5suJ;1 z)1XwfVZU{2Y=GgH-_kYoc$O9tBU7R!ejP1`0Q}&u_)1DM-B6yXlL`&=cWM;^*WX0{S?GL)dSdoW+i1@32qWQBCO=iQ`oI|c7W%)Mfxh{HyGZ6XcQ(2=#DUR&1UB&4dH#0v?{JVfXy+OBlSa5~fZ2m??0`9s zqUA31kLDfyf5x??f98RX_RVPNpV+|a7w})zzljA*Oz;5z|6kKT{{I2`e+2zMg7z)Y z|0C%C5%h2MzPI)N%megaW@3!KME@V5`479{>L!{WqDG=l_ij zaP;r^e-i^3N{qGjkN;EIZ(D>)-f(#|HeL(7%Zf&Rxqu|M>b;bc#>5^l!%d>OUPFXTpD`f1`O%jQ_vN zbKIqUV+-!1|H}{4|7mgsyx+$6yY)}p_XGMj+W*YJ`~PVW=frMi@8bVZ|Bu&wK>S~t z`2X{1uGrtq1Bx&QC`8@wC&c<65%b>#c>z-w{4w{ln5KN}8+we`{RvO~m)mH?|8D

~3ITWNu?rf$4%@KGs?0nGy?-z%nS_wgKu`|JFe7~HZF z{V3ajdw%L>k1)3L!3>b6^Z@1d`-g3%FW2sFV{rY67C=lP>u!4%{q;GbQTl(EEr~Aw9wMyy?+{@TqSIq;1;%pj*|qoZv-4AyWCvMvB8&3-@GtbE73pYg z$&gx68cBHOuQ|h~iA4{)zo?pmGG)z|xGo?(!*8#P!`;?1a*62~56^G~ zA1XRO3*xPQ0b*>PDSJB}aYlr$YMPphz9<-nG1^DvHP+fYR@yNe0K3H1UMh~_Htqsw z$`EbM00`8p*=jguR)3_BiAZoGcV5l~#>v#JvCu)0x>XM5?#B6|mOII&Kuw|_(_O<| zDurL77s=tizP45krmcBZ!HM3&gR|{{hR4UR*~Vg?K!~|1+HjDhI*}2pynHZYdm{hK zIc?#HP%sD2o>q)pod!ynL+%*pAP*ga@)5uR(4Pj#(mfbu{P)8kLljs^aZWkvfX19a z-Pq8OyjV`cn>_Lz%ImPv-XjnL)l1fiN|2^U29%W8gJem7FFB+phVm)(>a&01O=NR* zTYj=CIEA$I{t|l{G8I1_wnE2V&&k_Q+4x~!4W|;sC&uMf?q4*}UDw++X$LtW;>9+S zH@`Shr`OU-4Zhr&z7Ce9ScQ~^NjupS?<2W$mfh(` z#1pXiD9P^|m*2WgU~qVs<6WStiIhgjNi{y0L)P;TJBsHUUXqO3Z&%1F+StYrI9o+>g$XJMeCzZEZhF=z||ehvds5)(WXWF z!=~hEAp)2#%p`18%r%}nmPfY+Q-GkG-h<{1$Z`-8@5b6EMSgxggr8fOkiRbvxsHOV zF=n2%7OhcBLz3fa89P3oLzn`MM8&4(j#6pmyhw{UEvOvwaLKTa5-d>0P5oLAL2IJ8 z)LpTqgHJ)@ME4?UmG)y$j`)x>65KRzOFLLVO3gM)v3bshu1J z>zGM8N+-s=yE4Y|8LP_OgKe`tI^bN8&Z3qqFKSKynvlRxNZhaT`_l3B3F_>Th=D^@ zKZJd|^}EaKymYHiGqyY~F7G-Dz1FuJdY*j3Zc|Owbnvzs+ed4*Ul4QzKX!lq-S5x8 zyS8u311pm2gMt+U{+VfRK@$-6cn_@9T6#Gg`6a<=4vTk^cQnYAa;ew|Ob2Q*sY=5t8uC#EP#`q4Ddr|H@3gz3S87n-LwIH7)--uXQ$UK`vBa5EED^3(7-_~`|A)Xz7jLHcXxMnlANWS9%I z8i(#=7jQ=URdcD`TvC^E@}wLWas`ckc!(Slh1~{}633q_wMw4$?f@$)w2(`)uIArs zJ=wViS8j2zDZ=<7;|06^3+GvATSqJP#t}liMvTLp6wou`W>iA9eOidqSA0;TrXlFL zp{%ax-Q`@STvk0gabi2b?=#^&@{Ly*s(5}QWyDz_{1fJtdrR_W>7=3V0bVwCkE z#W(A?hiK!=jTc-Bf&~#jDu=>tSW#qE*z?5$Go(h2d8du|$)m%jU=lVp$Qh=4;X}Js z0!oIn097dOOiepcRlRDqM5qzQ#i}QvYV^0l%u19mw3d1(0tEqqlQw>YVP`mj5mtoq zynD}*L4$*P@VWw+!S^aO8r%4GZT+>QROfB9@IrE-#!$8|{f3{omw1gYYqf6NH66bU&LWkSCWptW_V!Vg^NsShWY3JEX0BIAa7}#bR-W zLn^v|uxnCJGvjj%y{AvbH&eG7<>Ni}c|&4%@4c3(nR*@E?wj7{u0p~+%8FV-UuX7t zxCl{J7gp6pWQu-}aI1nmP=0<~IZZC|LQwKyx_D)Zm^KnFMx3NA=R9v^Sy!Up{RSo3 z`8QetSUFbP+2}-{Rq3)oL36%_jTI7)qZw)7P=K0W7xGGOxVE4teDnPMa+-WYy@aET zrk281#$bDlWT+S2Q)pKB*aZ#pxw*DIIq?5Py6G$tsxro!=?K>wh zr_X3l&A%M*7Vckvo}uG7e!&`63Ujx$UBJw?9QG*?pTjNh>3sH1`>$*IYT2#7lO%Kw z{P&SO2d(mRWlSdRIrM>~PS_X%C+w3tiB6wvU(T0py^u z-l(q|?sINK>6KtF${p@=2O(>^qka^#D1&{0+$#L?Vqo=biYA&%gGmKX`hvm?bCQNw zG%kOwY<4!f9t^YMG$x>m0l%);i(;04(lgA*;aStrLVLYLeuxVSXv9aV4MycXv?LpT(SHRuO(TAWiE1#JyT-a zM8kkHS!!WD^9M-{8y=8CNfQZ%w};aaJ-~`NN$G-4Ln&(g(*NjMHr+P*-ygx-AT|Ho zF?0G}UKL0Yku-u%SJ7$cA4U#Ym)v*Xt(F;_4BhfEmT2ZNP{OMvf|%6Dv1Swtwc3J$ zJ=CNo2X2)Ze^ig)2gve$pp8rDP;rx7BT|W652FTSc;52}=mEG*8jg`Hs+FmX;-Uq7H zE`SK`DKG|`qG3w39>vz;Df#%#BP{->fNg;1(lhK!7{ITu8jPRHvf_LsH*IOXeThkrV*jy1bL=$9lEMucy!A>k8)A@}{>T%ui z1F8f&>nX0$mu(e(RD`wUhTD?|HnVy`fZ=k2;llMwQ4|?KZYWnJRp;Bx>f&Xh&;K*? z?A2-hKhEOKs6V>buXDK?x&)FfljW*>|Z0EwS`Z4+4#G_ad#Om31X zS~T;fliZA2A^haVI;J^&NwIMG*HQ$PNK`uq1@pG4?0b)^?Oz8uli{IpNo!kn1hYaI zOBR0JdqEXaElG8xzmDM}Hj|;N{LPXNi>jE@Q|j3-D@9wqN7eRqc*nG^YwA6HVSHmZ zE`C==UFX5hj&iCT(*1`@%`f01`af*iADPgZ^UFzMcE}W1O<5db%NU6ja{e$LD~pQ{ z6S{i7c0GC#x@1+Wef_b1QnPfL>)pc0i1Z1=Qs=wpr0*DvAYYptcq7)8KI_?`T-u*K zHJ9F9Gs>`@L>>y(&(U7ThBE;rpVym_2GMPFqG?W8G-@!I#U)HLshsb6dOu#EeKZ6{ za&TLgqDNUp)k|;UqN4&DdwQ!No6B7d|EMOd4Vu~oTa_65Majr`_W;XXJ%jtHa;dhQ zmEANBz5VYY&VRpx|0#tlZy4$@4kUb?PCEv5IOQg^KA%+REtnUxnPg~i)d*;SXKy>B!OqxZkA`QO+q`1+gr@P zO{!d@T)FDL-Bi3gzAQk_zyefY7(hGe0( zw!$ndyjHr;U4PXXNG|Q<0Vb?4IX_BGq*(z}xz3AewbLB%O}OXO{OMsu!>_$~BkZ(F z`}=?o(Z5e*CXlIsO7JMChY{AU%KCib`y6KoOWxuTwX`@o+^-g9&am^$i(T~6N4Vgj zH^FM^qe7x+3O8*1fHEG1grWJY=66(2tc34OgdN&AR1@GZ1W3+JYW)!9bcrFLtZgXh ztT8bYXg=PA!KKwye(TUsk_TCO)3#0><@3Uy=B)y=#BCPmBtjwB+QPog)=ripDa98h zcFNd?#Bf50OpQ6WpK6y}N5Fyu7Q&(?VNoOp-7H%@HvL0S^r>A}@BEf``)ay6x@^w2 zDK9~M^A2?6i;SJj^q4lrPeK-oviflBtc1DfS4?WqwX%>qA)|Q%Hddr&SyHeo?5>$% z3`m*^jRLLFK~DxftQ*0)wxiB(*uI>nJMPSQGdk}_3RBTRPX}zJD;ul$+B+mq3_2H0 zJ#%!fPJcM&63jjvx$(!4p(5m}__hv8swew^B>wyr`NMo7%{LV;rcgfUHmeMY~dD- z|MBNiAo0XbUYW}NtHU75KeiFjCfR0>NL~Hm9;)b4D;j1j)@V~Q6*FC)&c!cHSvM!Y zKqJK9YX8aHM=9{-dgL=9IsR8BU-jV_3bPGdrGv{c!`mZIFj~;GB<#E69EIwD?GzFv z%=;n3B8hiRf{4$vsmQ^PD8zgM!f+>VI0NYP{lpKooI%d0LTrY(ozTT2pY%b*MWXuS zFtT}35kT|2#FyVHgYEdzu63^A6mI#a!fy%;&CC%zIUYz~sPbG}m-_p8X zr@y;ARFaeHg`BLys1s2)gNiq+b$nrLQU^?oc11T4sGL$27t7_l-SO;5KBO zXO(PIp--@<@=@{CRdaf@qYR=xTGCp@QOAGT4HXz` z^k}NPUMc|Q8jgK81Dgm5+HX^>J++7PMLNAwG8^~Esv65~+G@jSM4v_kghkL-FO;?}9ox!ns1i&fl|wR|(bcP~;1- zh&`i&Y9Y+V3RdaYq#4KK8JRGxlXk=>96L1^``KCa`AZz4kH^4Tb3uvg3FTGM!sW}b z@4#{udw^)yW=X+gcr1#Wp!ER3$U~_}`-jiPUwypCX~-bXJRy`fY8`%&j;1^HL?lq$ zp)Pm@x7q;R(5v7lH`NKb)ay75H8Ar@OTGNK57fN8#Xg(v`n~AM_5RERu0LY{nN&$B z;K?@D;L-j?Dh=HzD_YtWb%~}OJEpJGr*sa#0xqbJb8m_7n^4dN`ro~44jnW zc1vxurUAj^6WP=-VR+$5@HVI~h8O`mu{-bV>5hpy_fO{y6Uc(jQ>hL}^a*9wjs>AN zfc#-|!_w*E6y2OD^V@z9-v(1d{4)7QXox6uPW|Kp?$xdg>mdx-Z7bg54Z$?ZU3)4T z5rkD}Qx-=q8MYbIByJEK^g4I6xmFqA95pxx01|057iQl4>yOIivFLCu((tyv(cZjf zN_i}e$k3-$1cyKTSt7^mcemvEjY^9=8PYd#3AuxF+<0+jFd;HC%FF`e+^2G@>--}U zhYJ+LHq7^>}-Qb7@=hPULv@4ZSPc1%i8H*@eX!#%@WHcB3&IN%+xBjV*wg*5YLY~is z;LF6)%+&XXVC0RqR?RL{mkWmBoB2^yU3^)W4Thk6Gmt|K9-RzSV;C>utS|OW#O|#b zqRroqMBEsIpFi&lv17c9be``SRqSFr4yfa`h()0n-&=i9PFOlzT+>G#$TM;#X45LW z0yiLC;u@i}kQ|(Evt6H55~7{@xfm9xHI)oR->@F8ukeYuIJB+UFi0^Uh1=I=SLd$H zh@7?`N%ropSNGA8X!~k+4jx!BD?yyw9vP6SC8CaXex}$j;LR<4@wl6qMw_rp=~Z>Y zg#N+kay#mbNr4P+e##eG!pZwuHW$rtJPd;;j?J=B4xov1VA@Czf9IlnBZTO>eYj%> zRxoYtsveCUN8A%hY9%mq?dG)$8f`guX_+5BN2}Gqmq-IH=G|SgX8zp>1nU~SvHY&b zL?mnNA47Z+HTy8ySt*vN^-1bRtbaoVuN`H0hfJN=T1+O}#;7c%h>BY@S$Fqt@0pC` za!U%gE7+m!)(pXL#*@B;RX!yCWi8-mWUKJGLlTnznH|FNjS54&Jn z7Zx8@2)Gs(IOfyGaO5~&f(2(@rpgx^E+B78et=OOhuT_Ep<|+rSN`eqmK6peE!U4#bwxSXL?5=u`fNp?usLJz4-#=iRrsiz^yYD= z{uIp5yhz>5qFi?ZT5Cx^=CM03o@sLhBpOcky_QL9nw@p|ydLDyxB#Abt!3NUkumSM zhI3iqOl$LfOD2~DvBtpem+8G7;qx8~HFN0}7)tmVn~w?lTI~IxW5kQ#+g?=KiAWa$ zEznu{SRQOsvqkG*>FD9my#uN<*D~kclu1TTj?P`mOYy0oy-SQF_)t#ch$74GF@Nff z8M*(o_SG*j=w`nAx*s!~-=j7RFTd#s*&e7? z|CH?ynNl-RI-5uA7r-ol^j6QABxaTLorKorueO(PpypSFim#nvS6RdcPq}qvSKKa= z(C?F?u@-+IO?OYp%iHCR@HY#uUg%ZOc5xUtQT`>6PhjQq@*Z-_qVAu>s3y?&Iy|pd z_KMCk%ze4dQCMvya6J5;1If89g2FKfPoPv_X!7sQ$q|fy8h`fX;rzm4{%j~S>!`L# zjr_WGD}Acavip|P*kBhsJ?JD&cF?pl?k0$|kYjm>=Z&!8rw-z4t9Dkq-|X+328V8& z?HJb+jz<4lqbRrdtuV9dU8tuZ1HQC1n;P~||4MV^_wWlaZ>=Fltq*$EZ(k~Mmg3JH z-5Y~kWcaQ~g`0H_@d-fyfp|p|p({4NHW^-8n)wc{it8R08|-}+C#nwK>zMw;5%AGx zBTkjDSxx!8)1aOGW1jZ@!1Mtki*xu>vmYD=orZZlxR+|~zY$4EscuW}4nS0jEuH)^ z7_0EjK=W)g2Nc@XMUT=Jm)yKiID$2bwXb-W@yvZ$S?0(*0VQ5p%-5$lcih41KG>Zn z7HTaBi_HV~)L`aCa)ows@+4Ve8kN?_k{Xl`;iu&wF^riP=!`u~R)v4=d?+ReS+Uq2 zzJr#7ham99c;8^`CBThb>oVAP43}ZO^cm{K*xu-DNq>RDWtK;XMtW-u7V6@i1DJq< zOuK5VIW1vPE~%x$VdTjx>F41;3Z>lPRIVp>Zr`}3K@0}*eNs#GIkm0G#pl*j(kpc6 z+?^B@9UoGncX7*M!m3nxv&QCkpsnouQVg5_Ytm@R< z8a^eS24K|nXiY&jI6zm+5hGO-Lg_nnMy!fb^g#Z877-X&N)0)FPj3Hhw^_?SOmvUo zE*Xbh_~m=ss+8kFn?2~O3krg7$4Q^`a6$fHxo-D!>)luOj#0M8vTQujLgUBz>6u|{ z`x1V{#V|=I62H30xjI5+E)GrVCC1|wV1!2g zBA%byM+Z=hH+Yhl&RXC*ET+S*eo{P_(`6T8gxjV z@V0XY!IyFSe$b*?No&ZJ6XSeo3@C7uz6Tefc-Rp9An%Qadpq%^a{4p@;ZKoQ58MNs z8ssG&+#dyVpHxMlP4>(W4yF);C znycfbhj03~x$wy!yoJUmN7ux~yfU7;XG&=B!;OL@F)E-l%Zm;L!F-=)@vAYg&F2{3 zfEHdjk-K(s$oo~L8gaoBf7Xku`|5^07}Oed{5#C;Hw64GL!E3c-mEzlMM87Ti+$k~ zSS5`xtofy^=nwfe$Z@%$cs#IIsU+ zaEiz7{D*u0Cj>n+IGGmy>B zI#1J55anFfpn<>f$JP5%LKdYTo(w!}V|&pSc7ZJD@YgW2MkBM?sK?jh+&b@A-87K{ zFCRHlOU7&p$(>oPO$qsccCp>4fRi(&IpHy)0f2^HmasJ`XqKwH6OoO8UPl0x!5o!L zv8{sUT%Hp$G^4Cji=&=4QgYc%2_je{MV3Hhj4CEGX|AjGFnQ|GGFB0Hk%BvhMrqRr z2-2^2Oi;`zS38JOqkf*wxA+d^d zg}>}7gW8h;C*zkpQ=X2Hg(rwS*n`)j3_>jDZm=^G{^Gp43!0TnV5k#W3W~*Gw=NoE zd_GvqBVZ2-?guTH!vn%!s-_g|Iwt$LdM>*bkefydfJMgAJK|Gh0F!xIg5%u%(vcfU zgTwz2YpGNy{WSK=h)<06M6A{$9Lr|;AU7?JwjWUgo&SGFcq1xQ@dAUf!AXDv)R23f!6UEM$YPz0aM}Uc}wjF)|6(fpT|aB{-Z*Rfnk&%_z{g2Tt#E!-y6rjpfWHT~oVTY~-r; zIYm!E(qjF4(PvV3E*z9($q@rXU8hje%OZYF)uWo6tHC9e21K(1L8k~?VNr>jSr6~V ziIy_#1keEduTq20jiughjF+ycskIvN}tIoY_# zo1O;f3?eu)`Iea*+`}UUZOmAEgkXjL1~A}Vd2QU=W-eNG{idXFfE))(oG92UpbGoX zh_Q%l%$|OUTOfT#eC`+JOHiXP^lU;m;{paJ$lQf$&Y%7)oAx`rJ_hOQOD(6zy6CDP z^Xr>9jos{;#zZ#FRJh~U;mYXuB8)wm&wP9KO{MA~&KI5y0vm${fM^mD%V7z9uFClX zJ!Wv~>jRV6;X$c+$wGUT`l_)E+%`B@EZA2Ha|mXf4VOPek2Ya6!!o7(4Bjkavoc+- zbF5kKHZVIY%s@L;Gf+v`HY$7$Zx(lZk)NDCCmB^PE~SBsQ`*COKq5F{3wIdgOZ%P- zL4}Hw3C*h)PM-%7+8MaHzS=mo!t8%vRQ-2X`d6{w$lm%M+GB18QMm48T6(Wn*f(Z< zdNT*o$D#iiAy+b9=Iag%hUFGY8pWtIR!sa5WJdx7Oc)Fq+kcGYF3p` zy#foN@)?-Y0h6J;RUy7p^9dwI$Dl%lv}N)iGSK2TamYVIx?t;_@uNVS4FkKh@X(gV zF~fmYk8{JTOsAwC^umlLB;^4}V}NzvLaiEys=&-l?I2efS*(|hgtNy6gpWenLmnz2 z2L}ykYS55lZ8NU1rXt-04JR1k*cdM~K9R2rzVyRNT4Eq;$R~qU16i#}pdpk17JnYM zvdQcsn1KV6IeC3p%I*c)P!|?~Z5QS-VEh3OFsIEOFLnupac+VQD**wBT|n5!N>C{( zuNfc}jRTP5ry^jRrlrHlSOu?+`A;{$({Z(B`o;%uc3%K^RI~0>fzh79=>jxY%!w#| zcFgcT#uMs|SCm}|-#MXhRe%u>AV?G9WwlrLEANG>o-eY@cJ51&zD2I8-87{8svp{B zbH_-}*@M`FO&Bir`*i2%PrjK!Q#K|R4F*A3PrJ{atX}>5I^J;Az+EA%s4*AJ3A7 zDF7~%huQxiPl>%-YVa^Jc3mhK?iXgVk6PDPgSU>u0FFpa!X!F4lRsv|dG{MpFSpR= zNF?mrvd#k&x2oaqEf2%@*9tSaSP}PtIU5n=MQ9MmkJd5Os%E{GUgYLlQNr7wWNBTh zB$)Lr+#io}{iANOX)qO<*CK7!CNkY|dRWao;3is}l@{E%wL5_#pEv;qxbgF%xQoa5 zgma9CAm}u7WUkL+L2f)O9lic4_6sa4y*VIwD9^Hn7j~)`kbn7yh0t#}Ff}Y%(t5E-`_TtwgA`%$Q)zk&*PDb0SYG>2BxkVhv=n+)QN_u!w@ z;*B_Wx3~(S>8B=?HyTq}Cp}k7ioaxP`;I}CWJ@X7=ikHb2E=z#cjb`x>iV7w21WMT zexi|^xM$lCS2|w^Vffy)ET&C_QO^rZn`q6VTyVihid8r@2jn<;=lE`y%S5L{{CKNy zSHBI&x0J=#!B0b=FgPythHB|r$R8m|2x>VjsU!UkMh4O=Uo&0EF)ICR2<0*?WusCZ zM7;<`iL}V=782|#QVtWP@p=wg6;&hhGPJGbcinSC!ldqGsp??5Q5_R4+{IWQrXJjC+zr zyx}oQRdJ{1Wtizs*uaeZgGk<7Rm5k!M+PS@@esWt!j$Hp7J>Pll?G*}_PpisZjtr| z)}dZy_P@1xYZr%j=0LYRe3_Su>S!@Xb?wPat4u)~6xPnqv9deb2IGPSW$o(}vQcE*l=Jt5m%kK&~Bg z9BC|u5Cp?=?;p!GfV^WiAoSkoGl zPGPE0+(wu7bslz-H1k>`VCdSq;L=k6n$ie;xXdu(TRIvnx;8E z<_#;uoK5{{h{mY%8h6gzC#wdMHOl{dGgvBz8Zk}bNZBnw&mhBVEizw5h+zZYl5V7g&w7OHDB6Kd2XyTq* z095m{{yTEtE0EF|NKc~W$TUO4!`<4L4m`gXfqt{qbtvOo2p@ln-^Nd_z%y-K3VG90 zQ^J`UAxIrqg545NIgFr;4)pQ5>3S~={jqK3O?ul+TR=whV=`m<&0P4`43nY-hG{(r z!iB+J_2~ni24!#UwS5iukHbA_7QS3|zgh^<2P5<@K*0buOHIDW>&A%cQ4I`~S+EPO zj8ESsHU=q%>$z=s`t=c*gF>o`y~=xlnH}|of>tluKMKv zD1lP{=RN-)G1`sM`AdAL7hAbPRrD4bF6goy?H`XVxczk*!08w9o_GZ3X3dDjJMxr~ zZ$8=8x_TgKc1Yi6yoarOcP0hl3$_9X6sO^bPM&c|1<_x%iFYRzQ{n!#6aMPtyE23E z&{l2^h%G(!vV!@FkFTl-%oR6@DJ(jSl6+K|NqnM%*?0rRLk^kBKM0-$Kf5J@qL zMxZ=`_j^Ecuf3={B2A7sglI+tNo)OGmjXya+2vPwE=jiRpRQOnKPI1R&wd;IYMC<} zujn~TOqCl0Qf}S5G7^vi2(F11Yt_l?re~KAZ}46vDCzNtLlA_@rk;9r!-%a>UhYjS zAfKq3=JyXG)(vUOKOtDRbNBx9Uap8O123K}(Toz_lXiJ&>JOC=54K}Rc2gV{ogetX393T6vz$(9vhG;SOXO*;ZCk3%F0>>=bgA4VKLNW5;R;H;LoIF#Zj1CB zDc~4qGmz-SErXS?ge1&43y4%R%;_dLn;D`k=2{6;H_~JW=Z2TEECVlt-ButQslU+1 z>tEzn*{)?-UYune5xV8;ujv<-^pQBmJBN!EYTYUO(OZ{LTQvPSu}_r4ttHsW>jR>R zS+4dsICH{3f2s|BXj%n>phj$bH0Y5!f(dud9JZkj0#ov}bJ|>Z5|)9cN(ja}rK9f@ zcMydd!|PCCxR5dGZI$12{K5PV*+01)ClD*&c zp_NWkGD$S0+`aAH+&;nXejzQqf{KOd`_9@o-4~nQ@#l|7w64>tt?T(&M|A^NefM zr2pYo40${F_zsDlM%B^0xYZf@wE>#jjJ}4ToyAN21Fo9(w-2qfQFMW0mA*37YE^Pz zb$`f)@5sH_LFqt_2+xeHEp+Li9H z_xEWfXT<5qIkjycPantXA;*Z18y&hw{TmUdixqLIek0rCBJeH`zjdE(E1ZB>TXvvx zot8MEN|=-+`T3Mfa_}da#M1ui4x}~nx9#QbExI@|XmTwA@<#i&>{GSSpP)2sM8kSX z7Qc}60m}C$q3F^1R(}uO0O~ zp2s#EdGbRZCh4Gv3A)#nfW5lF;#%pwNi%KIw*-RbP>FjsIA32a|8r}y_E*T;@?ut1 zjBZ49&y8+c;Q~)VEO=x?<**$E zXUrADCW=FChy{uCt-xNnZ=yjQz~(A9hV}oVaSfaZE8{}aW0eK4rYk~wr*2*w5o;`( zJ6>+|cKlQ^e;{_p48dA%7&LJE9licN&inIsHsn$&a;!EqCt>(+u;F$LrdPX*Fu^5e zjL_iwN){cspOL-`VKYqxL|3XQ{+@#{e|pCKBDv@^>9Y8iilR4c!@1IIH##`8GvqNI6hFqWEx|X>yxAlsyk85G#Gv- z<}!Gl>uejwh>%F?tG-mIs(JP;wBp#v1mXpnY&?#ZjVm1`@E!{bV8SRj%5DhK z>A&N1id=I;J@0_UrdRNiV=p;~`5!ozZ|$_tWp`(mZ&mDZ9z7++t+vq-qA-C_lS~RO(6zmhJ zEKs604a|g}Z2}iu3YVO)j{)E%uOdYuV-7XZ@9N_nil$_{&pcY|>{XnW8OHJuw#~!N z2OD~sS;dW*Zg~PH>@OW~q6T}6q=70a=oErDy($1wof5QYtx@g-{V=jox3qKoPy?Dn z=bo>YY_Cr`O1s>b_R7)d&d;ItN+*T<@w=rhsh^_!ca!w^ZU`-iTx z6hy3bKD0Gn*F%j6`9%dnZ78qq3&qU*cS$$Uk(!DpDw>DOl<)I+VO9@=VjZjpQ z4+jSV^J%WB~4P@CG`J*T-qCmU8M*Z%vCttxYML`SRzew2OCa%BL z)pb}j>rO(WlRrkIwz!Igl53Z#z(@$JbHcp?6*Ybs&Lpmtx7D%L<7%lgaj;LeWCVgr z-+qR-hx>L?XcdDBn7bdWyU%d9M{xu=m14O#+TMR$cR#a1_-@Ea{jX=^ZQlF;oaGBv zC0DwcYP$JXK&{=D%l3kQ$#C=BB+l3t21HH@@eTW~_1iz=4ZVy<(?7%kPX7A6kw?IJ zVc47HHl0y%ERNy69I>hX>r=TT3>xG=)5eb~LW|jFxO=4u%1Z3Z|;t>7)?J_>x>I z-_*;pA56R7;yO7YiyEjG9<7KQRb??C7u7QAYm0gAMkdgwX!Pq6I_U8UrK$556bd118mFbGL3D?K5e4+F_U>gR>=H z4zrO4B?RW znL84(*pgwmem8jMGnTTi8I3rbxJZ!5G%kj2zU5saw9h@g{uaOy3H;t$bVVYZ{dOL8 z$JIE4Z8pSrj_5oAzAkP8%ph^61rWt@AWx(7-3!J@1=cVOyZ`~f5A1t_cNG2xOxI?7 z?0J%gpf>?YqvwD{+he+``pJ)|xQAeHt02>UonXlq-j^WvTs&9`2cGc1K5=y=&$I|M-yyZbr^z#Q3LJEXf7)%{O)}dPJ#5o9L)P8}x z#c&p)n|WgTmht#3tHhjoQ*F}a0CBO}8>tp!z8wNSUlTG}A!at0!OIG$gjNbcD;NHG+jA?5v$ZM9B z8?}T$&`b~_5Ch+tZ(7#x;xsk;0s@<`E?#=Xp?b! z3Ufzu_ct~m{RJiW(>bEhJJu(qkEpNf&Nze1Gp-1E7VOR69|bnMNC>`nkZ@0XTwjTf zQx6Y&0T^f}r>0nZH?YBun1G2T7u!k$XK^D<13m;E@YAZgL0+^Zv1>|6QX%?q*oF%+#{(c3T%5P z1T%jQ*IHP|lTSpfn>iDo^x@u)YX1h9hUK|VjnABEfX%)6x)&8>8U?Y? zDz7Rn_7tZR19Zs5R&;ltq&@;{@Z!8$hH7yYn<}fPqrb)JZNo8bH%Ha-M0#$!n7?*i z9yP4Z`?9*24dgUd5-rH*03G7?i2H!ohAvWmyI28EUBOqm_}0$0J1|g0=Lz=0pS_Vm z!}XgU&CpF~wK!Ry|2I>N`u(Q*jAEOeT>^XV>8(ZA2M+AupV%saeRf28rahw=?Xxby z7@hA7-G<|t~Wj?Pl~ycm+xpEhlfIZ*Y^&p8%?HzYWj zU(Fy>fT_TYF10B0jJd;HQQNM#25e1JC4L88qi@0}!~omQv34|sZa^PQ@|?%zJ|-BG z&`7mW9lHh)d>SAh@;N|uilLSQ`Is!E)11mGEohPLg~5vaDe%Gr z+rbxExi`aoUr=fa+kzhn6rMX;U|PyP&z0(1%V`JEihksC4t=-%TzZpJm*VRIY!0a$ z{@iNc7u_EnkBovA2Q6df`x;;MDFxb?SHQJ<{r+6Nu7#?+Qep+{Rv&J{eI6M&p@3<) zR8K)ZjTQ5yAl3HhNTk|wt?}={cs(M5Hb~{0BT)HWQVo~I5X#E^MMq~!sTFu$Plap~ ztIv>yWu_a49|Z%;GfbqZLV30lmS4f4Ge-=A&JiwgCxyyM{G{j-H9je1RCyWzQMh4X zkbs?$E5cm;McaO5sVSO(VqIn8>Cu}*$HXDsPFzir_&FJH2VKMKA*un3?|fn=*qJdSsaR)-D6}<7EMM+VYzQ(41`8W@F;5I9yV-}A1V(04f(8pW z+kdqxU#7W{?_u@&c0ib^4taY85zwVYAprl#7voeFa&q#Tr;&Kx>zW$NxTcYc@|+P2 zEgkoYmJ)Q4)*-m!VRPQD=qTzA#<_(0u`78Uznk-y|El*61rM+H_kvcA$%tYf>|>82 zJbROz>kfhZ0c{16ga(#s4+Y`AQsPGJh;n2kT&NtZJ0ZJx(Ns8y>?kAEM<*!7qktq| zb|v_DCI3)G8#EMr;IcEvQutRli5JX&NH8WBa4N^_$y}syL4j#Xhs>x{>mys-9U9sN4WLOiGy)oTCXPXg|{AAgnqWn$U{ zFc*Cft^d`pR(K}6>SX4QEB}1QHAtdaHL3~eV#kpKt43XnUql+xs7*#U6kDgGG5!}2 zCd)dTDbfip4)G{-i;RHWc?^(*mAMm4xr`IaTU@0>k%zs+y?DOGr*vGjkmJc9R4>i@ZviDKI7ZnZ#V^g_V;qk z@qXC0>NlQNbQ!|Sr5x85F$m1k3L zU6yowS;~-9o|8x1a;l44E#xC7aEuY390z>J%Ot{t#SYZ^DH3-&PD>7M8{bz62dbQ7 z2|$+3@6gt!-dn9`Y@jE%22FL+ON~MS1iWZmb}<-=ZuucjZbc_Wwn zIQ3l@?y$TQ3XHBg4|H&y<9E9?<@>dg%B}WY#+M!|8f-gdQW0@4nI(dt=Z}r%e?tEq8wl47iTI zqH!rtxnjP;gs6JP=u4TZ40*vU{bbkkm~8T?Yz=OLs=TK|2S(z3XdQ?byXl&xTD33? zlwd*oYszB3D>Zo9Hh|HgA`9MhJ*?Vu$I>$dJw}a=uUIuw$;=JDZ zyu#+zU`=$I8?WsApyT_YEFfoO0e;2aqMbGpP<_O@>8-n`=B|JHC*f%^^emLH2VEQC z2b7x|;8t?0c*vVe;CX&G)me%KN5I+QEWK9_3`cs4M^Roc!>|RoPMAtrE-4=AT~n;K ztRrkjCw|AB?%YubvLb=cuZ;&wJ4#cZS<;5B0Q1!qHF@n)Ef5et$cZVk^N6q4-Ci6> zk~E|5oHD+7%Jb3IUt~{xBDCKU8%EWFJ2;S^zFW=~y{>jGV0%)F`R-Qz;=JXex!V5E zld})PzBl%pUAyD7Li*uA&FxG$k-(P8#-ldM5_dmFM1r?nhX$CwTsv@PbG`a;u*#Sp zAQq^CEY%bV%5_@$Z#((_kO2OV2XdeBjcffAxE@J{uNT9^b4T{Md<&)rwkzS_!g++F zC&Qogs>6q+qJ#D|Yj+en*Jiv@0GZ&g0a%!%QLlt_kNUP^t{-Zf2RE*NPMLemEn_py zR2Gg^sPwqk9mJILWLF`CT8U{e{eUJ((hVRK>MAStmcC>x4F9lC`9I?Oe}jogodQ4Ai2) zv&fl;ir1%*NQBFrE}sP`+!q3A3M%AxRlm0lK!OJeZboSv(UgY;0Z(R@Zq0lQ0u61f z%%5_H?X4H`MO6&0l1hjtiR33K2cd&815-} zRx1Jvjeno_GkZX*!oV?-CSQFQeAx@q5%oONaMk1SWOtuG=vX6&=FZ;Cxj*ZoYi)R9 z_<|hs_z?i=R-D_g-M;f~pk?R9q(u$Cwo8BeHs=bPR7eTGejK)I;!he(w={vmJa2Tg z&f``~h7_%gNQ3Ai8hbpHe*Y8VuGA`bhS-*y)nVCrH|KfKi=}y-YO&&G59*0Dz`3fC z5`2T{Mmqwa(gE<9b@)2rOOwQd)fp&8zev0sa1K{i@+zRmQ_o*wHVL$_`ry6Rp@8#A znt|BbBJLAKm0cay8jxB_9{SQHstn!xdODN-0*JYIj}x;Y#D1*(6s>X+lov2W-8+K8 z3dG)!5rt=yzaF0GyT*y&_myt_KZT)Y%T$nz)o= zzn+MPVgVi`&8o5aPN2^GCrt&gFR}h5SSPgK?7P12Nt?{H_QRcz^2+1YZ{nT6^Sgeh zAMv((ph8k(g53lnQqWmv!n=F8lUlXPHz<5p|7YBU1y!@Kgbj6?O3Dg5GO+QbWAHD+ zRlAaowkh*L!#Ec5*b@hIlEo&(BF*Dc#W5iLR*s=M^p4ia5YrV#)B}RZGG03@!vcq3 z^-C0W$UV3I0;K8@?7xTY<^o@_vj=7TZ~N>eZnQz;aKvRAyVhd9NFQsy}krC`1VG}y?DS>7fk4pVR4hJhoct1FlT|ZYFZ9#(Sh%x zc&+NYT=T6Iq|$VnA#}ERA;u$9D^>{F_SYYg2(L~G^Q6tQ$F!3CU>zzt{g9UbdG3lS zy1C1y4R+;;91QL$#=`z8{<@4ihF0X{B6?Cv{(!A;CU8q~Y;xpsQr38s;F zTkoXF?VmX9fJ84XVEYA;G|3RNLLarR-gH6_4+qDmStZocD!CY{%Ip_hX1GM_Gh< zF(vQX7;13jq0{F$eFDIgZLyO_(2@`1s%#CJg}@h#_DnUZbet|hVSHJ#*L^^;pG(BD zIQ@?6Af_K5e_nub;Y6BC1hRKi`)_rXhM6@u4n0CR=*nSPk#UQZSF#Q&6@YdfL{IMZ#N%cE{t0xD~|?1 zz)oX#*JX&r4D?rZW9|@O*%og$TZ_DgKg%)rwtHq7Dflfodr%sk4EQ?0OOImc@>6_x zSUz+yxmNhGUu}C7oENf4daVrKQKAhv%|@)8Q$h1>cblj_dkP)NJnebk|5N{g3>xQk`QLRfI1KQom%(WVu@KxMHd`2ozWaT44A9yTmy@5VXuI` z2_bp;la30C{>BzsnN^>)EdX}DR%EJX*VoFom}8SaS~?Bc=_~783u)NcB+Q(kI9BV& zvV2=fE#4`?RNMHSZr%38@#WnP)&8{UWQ~0aINcwSzEq9%V*Bo=kMJf8+M70$%WGY z-t6|pH8Z&lVKFD&T~2M;sX+wBWeI1&JnqyrbM`N*Z$^JBe2LZ$jF?>P7egjwFul%K zu2`6vE&IKu1Wi6Ri5?avhzy$rekM=g^c{mj|gtsco(!o~}mFSY}%%ES4HHsA} z-{^S9D2;L}--u^fg8AyLzu(2>JW@flQ^15U=4BsumShBkGuPG1%;>vYlubnCGe&j; zfxC8!o7KqeCs@@S;CqhcZZnT9ci+GM3UQN@mZFwP%xROxDl;!{zlVeLGYu5F%((i5 zP*~}Uy?vn=iJi~YXCJ-P2X#Ds`ec9TV~*QKB0KhRE23FFW9E){n?ivr%S)(~vc}}H zJjJFSep@|Ry`kiIQvijHu>0+K0DMh~1-DR1VGxu2h~msOMvcvb6)=)KqKSi(!&yn+ z6ooh&{Z%ZtoeTFEnt1=ypWwchN3xbh-uCIyT1`RpUh6*cPJtDX)X{NN($Rgm%#?r9 z%o};pRL?P`X}o>z>>vu>ysip-3xyJ{Q<}gAQNufUtSO%e{Gh~Q7Iu2{I&@rl{ZFSy zPR9XO`a5)K*K5e5#@_6=0vE>$vJK`bU;VV0im5NlRdr{4AL zra+v{_14codOvxov)*VNTO?-Le(X5X{OUKKKlew_PoDghe(&omy%lNfdnG@2NPYo`8&fqF$O7bkS(<3Y9P0 z+~T2)UFU6c^7JEys59Lw!Ionk_b`5PsYg8aNo?z$O|_b)d?onK@`rYH(ZjUJ%6MJh z7Fz++_OFTPyCNaDP;5Fea}XJ+d0(k}##l=tJ=c|TWm+%z^7^8kP?@Qy2ryTBkqM|# zXAnco?dE;W7c(+y6b3IdXp!m`zG4|>RCg{UdgU*8L=e<|=5AHwPu!4q~OxBL|scgd&WC-(xne^dSb1u06yj{b56BTks zu&Ivg>^H@I3&7AiWb~upT%qF_T_n_o5jta0K&HS(+83nf%?JD40gjub3(yDyK81Sr zfN7W1$aku6&RAJ-hxI?nW^SP*q;*zXsBi0qA<m7or}^OMi`1Cn2Piq=>jB|%LjfN{1$e{3s`U2=#@W^ed2~+>n_4O#d?{bu z&9a|H|2-#vyv9!yk5VV=R3hIUW&9iFr?O|t;#D08gE^ge`90P|;Ay>9f`?FEeZICG zNJk#`F`m!mrorIt7jueOp9vEnx>U2>8n1l&W<1{IyIk4wxx&ViipdHyzA>YDEtjB^ zGhR4>>!XKJ7ZUWzL49PamiLG)->YmO-EL2_1@fdZi18$MQzR43!D3H&-mGauW{%JB z05SE|%6QerJXUXxGiEzBpM_Si9 z^ei2>Db;`E@0K*dd7soO#NmW)&=J(7<87vxNoQcj+*y!GqkP(PD~}{I10|ix;R=1R zkCqOYZ1%mrZaOA@o{aWx7){@}@)EIAIya}`*BQ~KPMTZk3aMqhWUR3bFU*U^bgEWsd{hMNkg2g}1fMdw_2?l(FU1{J%(rjgMs$^I<@BJf9x`rPE)|!tbfn#cA>jZ{R|IuY_I- z1FBux2w5uHHp2+RT;o=Vz(c$GE(XE00H3MsiDOp3TAg$lY4YvYS+Tr6#$v|4v`_M=(>JQLU23@SDc)wQwo9B!3$O;QA^*A!Fc zd+n+8%v2GRRF+{_!EgCG+!_(Uz#4+SnSQ;Mm3d{#G#pgSDTW*Gju`O_?pTpJQ+``n=*U*e-2fXZBg za5?b;0h#87#Xc4C6@3#2fgLl3z606XoE;y^w_Q3yCA_mW#ESyk9@~mE>*&TfRr6Am zJ`wFhHE`wtLb$7dHE*e?~NS*u49s(3O+Bv$oA`G_ij4e!10$9cIVD^eu8_U)=so9O}Zd z4v-(GmzyyAU9A3DH(lEw3Wj6koVd!>UD&9@Ts!yC>qO7pv*(q~#!LP2gw*pN5md` zt~k@cG0orQNbJLxuG!p)ahW&*&Wxru;e6|9fq_ZUE&3&vv8ZWoi`dy+5#S}Dx_Fi^Ouho`?ON;p1p(#Q)guYVr! z9YIFV)^Yn}b%b9P5#%$1OWt%qm8EwD7!Vd*5Neit9PB@?gj^HO-t(ejNRA_T{kcPj zP{tK67bokaV9IB%!VIlm@S}KtYWkmJz8?qQUKp_Ci{9#y5*DuuEUwHQn!)A}R#l6S z+k9Y=RLPrP8I(PH-J$q;!uC%iAX5+X0^iw^6hd6qFi7zeR12(uZHVcG_7s%kQg+Nz@D?wi>lfAbewB9>!I+}=Wby}ga)d*~lp=9lu z3^9rec(fe5qpKu$f={^N%oCjJPH4yg?vHDh$IAYi4@zue7^NcIoPQTOeyK^ZfZK`$ zGYzj#L<_wxrbM8u9X>=B>m+L(iaJD5n79gd-%y{0K@UHmx3WepiF(O}MBFc;>;Xd4 zjuxmb(?rVWz1c6(>t-bbmQO?bt)B9<$!8%A=T;*$&CUA1^1;2lzeub~MS3!;+Vq39 zk!Sx-eTvqT&5xT$P}-8)P5?~Er(4TYjXa!{YS*8A4kPOPJk49K->@%m8N2C>dJ;;% z8?h;^fA0zs)_Rf#V`e&89y3!6gwa3DE5^IeD)_m0*MCCE&ix$|x)a588|f3`^umvA z_aVQV9~l9Dz*DM|=BX_EZZ_1dB>Nvp(qE$pK)a1MREDu@1M z(U$=Ldg@KCCm-+6Mcvu-%0Hlz+dq+l)_=nVJ}FOq*K&Wiui$>e-MSx3fK=s9Px`ne4MeJ+M*i5xA`RE`Xm=Tpdg9yz5c9qyk?q-E`g ziM^{jyM@=rTYCNucgH%x#2Y*B$$ESw7cQ`^cYTFbsx&iQcE9&_{sY0?0l6ZRi!%@V>0(^`4{Y@l_#-ek#JTu`R zRSg~EO1qE=L+uyHvoh^DC$G=1N#;yb8Q_ZzvUzW}gQI#=C?MEgxzhe<*u!RK)FQUXtoh{N@FLJ#r%7byuMV zcw0OLMEGU)llID!o(5k!e(|T6H0f?vD5y$X>UsyCpQugW3Kw3+3<#*CsmBLn7T8CQ zhRWLUj-WMzh-Fv*{g#-0F{REtL#H@B&hWgbFMpF%Ob}7SpP9Bh)~yWws?NEYO|SlB z$D06vimoe_Q`;bx8bq+wTuMdY9TCFOZydBbSQFJ1VF(}QFipet!yNDfR$Cfq1;PtS zpSPn_hyHHL*j*JZ&T(;N>yq*UzQ=3WOa8=%(Xkz4fEQ=+I`%KEVB|rPY}@sG>UGpT zspL>;x$ug*Mhc)dG_wo8Ow9;|X5%xnHE|{lX8$q({u^+#83BX3h;`^lh;f1%HrLY)L^jtw>@y~t6ynnLFOlm zbbvSQ9zdC#JfgjYku?=@IDQcql#(sA+J1F<7Yq=9&nC~fVhH?lr;vw(ngPpio55Uw z8AF{KV;Nq|oltyKgdZQNw^*&MaNVeuPkKtxXIq{0qZJm|LuCqy5HElI>6kxtW0i%W zT-z{3XqSE=n|6!>3B10G?hyUAM z{c^SI+cUJTTiQMA9mIv54+X9DadSKa`iH&dwR2quv6BLPMK8aif&797?e(X_O+DDn zHEUL_D4+6WTkP0Y9ZgcZl^hqYTD6%~Soj;&UdIm(M zSZu6n8=DjO8?J|v1Vygjgu_ca9M7NWd>SfhtF+P_Z+d5ba!;WcyrlON^6j`7SQzNu zBYzn*iM;Ia>FeuaTD=%l6t5eS4kHtwo`_zVS0F00~Y+r4J4B;joOjA)Xdu%Hm<_CuB-%j zV|Tk;n6`5t;>>egs#cB?oA*9O(CprEwFCP_QbOSGD5aJ(pgSC;ZCS*2`~;-)B?-&L zS&ihlqkK>2xO8aKwT~|ro-}K7sXh_m#E5Q2C2Y!59PuBtu?3AVj923}1R&2W8F|`y zQ|>Yc%xxmPxP);PL&kc0d^)5~NRXRW~zuRUEM&^2)X|&Y&rFujEp<_?VWY0B?+IDh2PKeWp`j z511zBCD(RKgoU=r9)gL>mx+~nUG?m~qQFSc>8!fuyX0;ApBDdmqp6J;{0gt%`X?E! z4D{72l74a_?R#$Y)(WFaI=X}m+|?S(yiux;;@B0`_N?8Ypuf6J*3T)=YiB*4pooW# zSg-mT$fO4o{et#XBeI}D{dVb1XZ#B~?8?cE)^otDWGQX2N=lKfyvtl?n)yt%ED?Bi zJ>V;Gf?R`(dk6)`Ww-%OH?Q!VV2Sx}xkq=}mrIl%T&WyhTib73)*wT6GES}X?>tBk zN3Pjhp$ZXiJ3Z0!a6$%m>WdzQ53?#qFl^ig&&#@#MVT-i8<1L-$$8sovP3gLzS(nD zh?6aNjoVY65~xeh4AQVmt&r^l^Z{M2`0qBo)LxvPp2WDO5Gqg`*lh6TT!b zxjL8AIY(WgRIA{+$+e;SJ0E|dXh#`JG#UL;14nm&2d{FhcE#lOdtz-`0@8}g|GG71 zdI-B9$R6d6v%Q>$sXLWC-UsBCD#rZuz4lHX)zluzvaCZYsCTMUOG-u8bUt(UmFA(U zj<~3$=f8tDvCK;xI4U6U8k!S}Dav2dwafWZb|g$t3e%f=@ze2)Y%|;A`S;~T9PI~p zsie;mdQ-OdY*nSj>AK-zxq7Q|MPM8tUt%Kw8@{guU@KobN#5jD8g)!_A@`Ar&A(Sm^!1b z(N8 z0BMjsTTIMZ$ppmRpD^$mO^%SWSTpgg8vTU1yOc=yF5B?927uRE-UJ{SF=lHM;$NCd z05`>D@`k1_^=#u)KB%Vdj;p7~<@eX*ehp{yQzJUpxtHE~vcm)~bqE9cOKM;R+vLz1 zglkwq(2h1VcWXZv;vvI1ya77&wT7L^Ncs}`YHC_EBIgRTG~S&mE=X8W zr9dJ|=$ICQ9!vMaX1?&U`aGm__41yWFu)Y3sYp;#;5q1t;u-DsyW84JyDP4L>B{G%4dH?kd z#+7OjE+rN1yzH<4H1&lR00S~$cl3;Y8V{wPPnR<{qfeY{RI4w~~!YK43nU~Zf)e~;MsXu$9i zFe>1kADs6MJb$dg1C}_(X*GwPySky1VW$rP1n{T7b1@V&sO%GRer>b+4GVa5u~i&0 zrftnjzPqdG1Y={=JO8AZSZ$NPzdqiRo{BC4FCW|Mp#taFj;o-HlJuwSB_Ef-xkqUc zTA(`1VIdcNR}OJFCTkJ8yRyWSS0Djc)&P z9prhmOz03U)Y{m}G*8A%{MpsIL@B}GapQ$Z^wf*DW`Jqr9P~1I9;B{4^=A$JafQJg zP@n6i`LZ7;?#y1AGn0Ipe{|~=qR-(GzVS(Hx@w{T7=7ml`^B(9eJvG0XXIQ}J)Lkh z*!nkqm>JucW#0ANW6#5(#yxoxx^26&8-{wK2eK1CYp+l}hbNAsW=i$V3{iP{BgG5| z+w+)w7~cy7S!~^%IhTgDH_loiO+-vLLAJ`iO_Lb5x^~E8Co|E+e9t+BgjamMfz+Xv zlYod*Bt+%rMU8i>7gN<3^btYc)fouyE^j?zf)`=cdvko(S(#IK~tit@0=s zIzBVrl;G5(?rGCcOT2R8^#}zlk;u3Oc!$PUNbjs^?OMGrBreAsh*lS@ib;+zkgiRhVDduXP z{hzhc{Qp$z0gpJ*91+7&B<{yKFh^#?XK*Jk< zXMMjlE2f1`|NH@YdtB#xb#JEHzw06|QAy7U#_g&%d;hc;Jdc$&0-sErHR|m|GjWx$ z*A06fG&1{?Zl;`R`A%lxM?R6hrjdH@1TZ}M$Ipr#^D;varaQXwcgNJFE_}Aw3-?Us&>%a!C)l>H!X_x6Ye82Db?A8aZ>np6*NrJ&Vu}gLRKOsSX z0_UeP{6+B%#e$c2zI*(ozR9ZyiZwACtRLwY-51@P7F>Wp0O1wf7O>SllHqm7#<;Dk z6cc@Bwny_l+q@K{1Sv1gMtr+GHzafZhN?jOmu+P9N$(-ddElPYo!6qyFEd31VUWk$ zw&{UWbIVISHR1SOuj12yC#UBRN)vk@)#48egHwzd$1IirV*i{)Ct38N!wvTcunb3sS6&%as~5nA0F zA(FHT@k8*u16bPz+10yb_lF}Ms7A$~1|HenN>Ce`{8FEMO|`2Y@J+X=6cIlu!``+7 z4^i1iKfZNN3rhaJD{pir4*uQg(CGC(&qh~8I5K_5t8%Dp71iEq*1{m;c+ltgLC~;^=dwNN&7ME-=mvIx*Xep2aSCL8S;Lb za~+Wjesb(bBuN(8u+wF28<`sQY|T5)1IU(@Y zs)6l?^sH`d?YWPAd;h(i|BGJY$G;xXM)g-59yytXMMm~z5A&H$U4^4B>IFFo1NM`& z*^W}c4v6$Gk)%*0+wUD)j2_8b?PCs~eQM-$)l`2!-OnnbyzpQ>q-KdH7E~ zu45h0s-I49V^&ga;`9PHuliIc@G*~Xzs4&bmF_*gc=7#P$X+gnb1*9i4bb4e(=O24 zCa=MY*E)e~6IDbsxrC;`EimKPyaYc&fz#1RB^cSy}id{#E>$l%sQ9Q@Cvl1>D>3d zI}UtHcZ8a@r^tlnMX#m zNR2hav$(T- zf9oN|XnncSG3RpnqrLa*Vy`Ku6l<2FlUIM7Xncq8OfSp|nr^cct$IL;LpEC-+FS?= zng85jxI@u)0ral0S5P7E-sWD5~s5IDBWjO zFMG(~3|F)4TCCO`yAY=wy=Ul~N&%AVul#koh?yPhhIQA2*Q5f6rs`@D9j#A(g&#Hh z{|Y-3ucpp*jbp8)4i$$AQU$6Ou?2~O0u6*Hh$u3MD5DrrAcz7Ya{`G}nFL7@fdWDb zf*6@Zh5!OV8KN?TDa;{igpdRXNk~G*eYbY4bMIQ`T+cs{mHq8^fBSpi{XD;iB+&m7 zF$A;|6@K3I4^IrST@1Z&xrB#i{ZUB4a&5u)-&pX1-IrM>ZDvY#j$9<@2&BmAQ8wbS z3+0(59>B?uxe8D-dP!p=I02-A0xw4u~Sr2_k(xG;<{}zaF2sv zYlfuId#-45&baw&U#k6uS@Cay$mEZmfm7N>%Z>R9t4`27R$paR;%+yKON+5@yZ0%Y z$I*p9h6L0^r6So7#B@~wz}~S~vqcs4=lRGSYEVxAdX7G(=kWshu4y~!lIP(tFV-HP zQt>a#Tbgy8+FIUPp|{x2dFFsQN>ERY)OJbc>V^s4HL@2=Rz3?WVRIUlkueMNrxS)3 zM)c$znD;xgc~6eYm%i9gjv4=ZzTVBTe~#@~=|43^YVc4hje0gBrH>~iFqhfkOp9en zi)DgUH{cs{^7#YJl>zUVW*6&15OHN(IRz?l1-(U(YNgD=SaV9LxgXjuI5awGoc5}t zl^=GZet0ZsBD6oJK-&}Z<}`%Fy8+mw6kcvcYlGH)P9vS6fghUftG^iW=%ZcY>Ix2R zuz}+Y(*0#zlEfT-AfizAgZc70?LBI~Z@|buFiNGXKp=RF!}mG#byAqkK*&Wr)ln>~ z;gWidBubg~f)=%kUW%?mc34nKl?n=oVI1rn6~9on4W^5h4_K@Ir3JynmU_2ddYFL$ z!kI^Dh>YM6Pqye`>Ps}nHlBI4Fr+4rn$9#DSX*(Cr}9G;jb9GI(iQiyyo9oxORo=q zjYc;u{9G(Lo{Ff-wwB)4R+^=mRiQaqXGY8He?)`UKClHWv3W1huX6eXQ+Y6nqB{38 z&O?r82zRSE?l6actnyFH^dLoIMg*Ibv#C=dC=c?77NoL3r%Du7_t71>oJO))*0;+C zK;e2sHcN4k5*}Y8yx}ey!}MX7z->O#Ygli=7Gg@7x&vy#G8>?dI(lV4KI4kZ**Ol0#zAyGmkFE}XI|HVn|x z%XVH#zH(q6^%;JqHjQZ-6mqIHC|8l*hxpDYBP(tZgA zj$&5TNADtoLBn&vZ^FS>Cvr62$h)%ywr9A%4{+xtAS0Wi5mVlO5UvNt z^6LJGK$yy;mJa#+b;?Cl_pfH@k$CjRX@ya2$+q(8d`WF`*^UL zNqC}_aTn{REqkcHEcQjnFl+s7;ag*vWi?`K6L8}R8L2CPQzgLrefVrt9ei}w0c3O3 z_r?W+a(@mXV@mQd>SZTtyfYF;dOlc9)3GGc(+z{wuEX);!Yk0RMPT6!;LPq|RV`8M z@oMwyRa!#9_s9T)w`!5y$n>k>? zKwO|(|NX#uE>iW8KfXqqME`WlaoyMca4u)fvJBw=u4yI$vwh-f`);9WoMcnOBfY4A z-6BUfy3Y>6{g>t=X;-Q`HWOd$E5Nb}RkB}!nJVzcLs?MP{K`_hQAhTksvB+9i1WZ^ z$h~hE_uTd-OB0%KUfN^azb_XL87U|1#ZDGf=#g~JH4V_P!;2fTqGLzJz}s4Ft(tU~ z8SUWH-s*Wim(n7pxvm+++Yvl<14fPV)nLZVv5<@OOzGv4F|M-{1$X*duHt+(#P}r; zw=j`YGBdt#Mp22tIIta=b+93}sPwcgJ8DLTA*hw1V2v>=k493PL}!!d_k1($z!&%F zX=5XKa~k!Sua)(%`d^-t+i`IHB7&{XOVRT_erZJYzL`e0nK)h&w;Pdapch0rbp1)q z^HW!HIsD%=17y%tdBaCg$CC?;jFOYKZa(=shX&6IO}eh(<~+XnVEXUdF8POfW2z!p zMdz#E9=lRt#Y8+Kj+>pn4tFH4n|4U>c5G#yaVA74LDrSNdedmkIr`%=>fo+`Yo-+w zR%rh^rsvB6#ZrkxV3p01sz(CshWfHsd&OyR;G}9rhCFTvXp0#QjrcOA`%f{ZW&)VX zG<0nK^Uw!2fCOHBW4{>$k)6X9`SC6;JCXm-J382%GW z7;QPmifjs=jg+Ugh`77Lg<$qC=t+_;B0CakPNs6n;Wm_1avb0|!D+c2DEgoXw_Al+)^tyi^ragM8t+JFt#>Ywf^9ofsJ8a6SMYAz> z^h8>)O?JG&(br2`TkQOYNDv`K@6wpq3^WWak!-PuRjjN&7n)08cU?NYj`?m>-08YlT@B_{Q8ZAnLQhyv zonfo0Lu?Bft0}*8L7ZbafLEP!Sv-6Me@!iaQ0bnd!D5n!t!dcV3=BOqWXo;ym^pxD zN_twG^p%hCHVjbp6!%m36WBjzJx9JL?j$S#AJr=yNO#*g&VYc`SemcH{klfIU8 z<2$U)2krGj>s)s%dto(L|XnpzGNJGh}fF)X)yPbC`(MgTfE)#$3wy3V{x}#huvZ z4lh?zC?9z3hYv8Wc!0#^ULz&rF<}I|?1dj7mZ}i4HvT=>gmYFI3OJGku z;a;Y5{|EyP-O1sfgkld93r%vDNL{|g6b=fKTOaf zs^4GxnnFGxR!v3R$;jIp1ICUc{A%STRBRZH6PuT?_qNT}ci&f;z_twj06DlKEb?hP zSnIB-Zt-W+ee2xmflmYcxZO87YtBw;JUp%7yW$Q^ZWhOv>%-qmmey~1H;{-yOnVpd zU?|?N1PxVaFvNq#nll|Db?~_why&-5MKSEp-|G;PF zgC5&-?Lk(?B7Oc>ufN4x*5s9^dBSzETk0{Z{ro7baw44T%#u3^mJvXduUX2$;(X(_<*;I z9t~y3Kj^@DJ}E&dHU9e_+xh2ivT(%NC2i=L&WULo;orVsppKIFF;REtA}!`}M^gzn zuj+_vFqPj-lN*Oto^Wl1L-clF#QJ(yOO4@+Gmyeo;e;Ivr?1I z=)9`zqHb2UAF7Qcy_dcVUJ$rnA*!?ngD9a(3VjF|D<5zq3#!9u6jpYomn9hn(nc8+ zh*QCN3a+{_k_6)Ax3^1p(>09N11rjUVR9j!cS1ZC%RN;#HP@<`*?2B$s#&R2l+w21 z)UOiCa+TVY1|!xx*2&SRs8K6^~kus`u<90&y|L!m0n>S4Nz zk8cTscf_1y`B0_RT!S80j?Rn+FhhY6qpf?o^8d>vuK#?AunxZ3lELSCV3;Tno{IR0 zkdD((amT})qPIfhyCSC_6Cy9yjeG((Rib}h6J=Z9iMgIK`E?Q;fBhtiYpj#m4DwU# z5Yb{&5OT;d9ZWa|*IHd;#dw-zsWT1pJw|zGMh$(Jqy|R$b$tk`i~>WFdYKKKR19FJ zcKfd=CDUX1)>X3ggFv+`vmtw6uX7oh&G~t=Yc&^3xQ+a zBbURtYG=V>XcUGL9*?R`dtet3Fxg7;Sk2q$e@yNF=}7b0!Uy9;>#h~lN2z}%!b8Sa zz-b|rvAgE`A|$ld)!9oX@6p?K@cgxny=7NH2HF++|r4_L%6-}mKumoU#woo2>p`gLiidi#cj`eI7pcOSr zk_jl7Xj*wP{J;2U%fOS`^~5=FkCTLm;#}cvOA+0)?dk21oNt6pdIbNU%~RTpSMK^c zCuTqWLz6s&-u!I?Ifpo>zGm>=9!J#fM~0<-c}TQr>80I^XW~{raZeXatlTI zRCYgpfr^GjBAtJkCH?b+8)Da{cK!P5E8|Y^wrUDG85C6a9D?rA;)uH)QY+P~#4wwQ z>&tSG?e`A+xu+g_$)tF`$E&we)O$qJzrsn^DnyeRiz>;i+<%8|pbSIi&h+;bR}{3l z&oh~V*H5N|#zaqKb=}?Ms|wSi53ck%qFVHs^wG#jyGT zVWjy@M9gE2qs5~WEeC{M)k=X>5fu|v5I$#gq+bw2iA`+ac9LHia>(nsU~1u~&=S34 zhsV-_O|)bhBiOjh!kz2n;erlhulYsE8AQt-;p!=40U}n~aL~D$tOkNJ*(G3lDzu(4 zxcTWXRNMB-jl0far^Iosn3=rqqhXehPALWvva1AK`pPQh3TOQmuSBd1*v8G_KQsqilwi24BJ+FM82FSGKwNSvG35;w6akU1u+WRi<$y*{3 zrDaP7h0*efva!}b+;zUbVm~cK7##zs1zljfB0HR~%yI=H%7N5~knQO>q&sZu@06p% zW+6LFfCq%wo{Kpf`%b948mB{-_H$4F>2x$K->J?pwO4)1&SXVn!3uwm{MHd-FA)BW z+_4Dj>($W;RJ%Q83LCBj{A*hu54&*I9P+9Qj6iF7Hw$AmgM~q|@U^X~$98jg4KjgaD{xbtO)4+#b;=b_j8D8CQ#`P} zDEI#LLXZ8x`1XaiV?9q@jdFbVhCY%Diam6H2dbAu*lxmja>!iPy<7=f^=BeQ1 lVKlE@rA+lJn)~;_+T=6gZ!0MpO`n(Lw2kA5Dyz$X{151TywCsu literal 0 HcmV?d00001 diff --git a/art/exported/system_icons/netfishing_1024.png.import b/art/exported/system_icons/straywild_1024.png.import similarity index 74% rename from art/exported/system_icons/netfishing_1024.png.import rename to art/exported/system_icons/straywild_1024.png.import index 08aa925..dea156a 100644 --- a/art/exported/system_icons/netfishing_1024.png.import +++ b/art/exported/system_icons/straywild_1024.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bkh5hw8wwu8pc" -path="res://.godot/imported/netfishing_1024.png-7c53a099ed2743b4a623c258641b1d29.ctex" +path="res://.godot/imported/straywild_1024.png-b9b5c159c9fcecc21b04324370d4522f.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://art/exported/system_icons/netfishing_1024.png" -dest_files=["res://.godot/imported/netfishing_1024.png-7c53a099ed2743b4a623c258641b1d29.ctex"] +source_file="res://art/exported/system_icons/straywild_1024.png" +dest_files=["res://.godot/imported/straywild_1024.png-b9b5c159c9fcecc21b04324370d4522f.ctex"] [params] diff --git a/art/exported/system_icons/straywild_256.png b/art/exported/system_icons/straywild_256.png new file mode 100644 index 0000000000000000000000000000000000000000..98275eb61ba155c1182c746e8d62aaa99cbc1c18 GIT binary patch literal 51987 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 Copyright (c) 2014-present Godot Engine contributors. > Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. @@ -103,7 +103,7 @@ FreeType for font rendering; portions are copyright The FreeType Project Runtime file: `ui/fonts/seattle_avenue.otf`; source, hash, and original notice: `ui/fonts/Seattle-Avenue-LICENSE.txt`. -Public-domain fonts are not governed by the NETfishing Asset License. +Public-domain fonts are not governed by the straywild Asset License. ## Intake policy @@ -122,7 +122,7 @@ owners' private project records. This public document should contain the credits and license notices needed by recipients; it should not duplicate a changing file inventory that can be derived from the repository itself. -NETfishing does not accept unsolicited contributions. For work expressly +straywild does not accept unsolicited contributions. For work expressly invited by both Owners, maintainers must obtain affirmative agreement to the source-root `CONTRIBUTOR-TERMS.md` and retain the written invitation and agreement in a durable Project record. @@ -159,8 +159,8 @@ against the repository when this record was revised. | Material | Runtime location | Credit or terms | | --- | --- | --- | -| Kat animalese alphabet and number sounds | `sound/dialogue/animalese/alphanumeric/` | Project-processed derivatives of the original source voice recording supplied by NETfishing community member kat. | -| Kim animalese alphabet and number sounds | `sound/dialogue/animalese/kim/` | Project-processed derivatives of the original source voice recording supplied by NETfishing community member kim. | +| Kat animalese alphabet and number sounds | `sound/dialogue/animalese/alphanumeric/` | Project-processed derivatives of the original source voice recording supplied by straywild community member kat. | +| Kim animalese alphabet and number sounds | `sound/dialogue/animalese/kim/` | Project-processed derivatives of the original source voice recording supplied by straywild community member kim. | | Tuffy font | `ui/fonts/Tuffy_Bold.otf` | Public-domain dedication in `ui/fonts/Tuffy-LICENSE.txt`. | | Seattle Avenue font | `ui/fonts/seattle_avenue.otf` | Public-domain font by JLH Fonts; notice in `ui/fonts/Seattle-Avenue-LICENSE.txt`. | | Fishing fight loop | `audio/sfx/fishing/fighting.wav` | Edited from “Spinning reel.wav” by Freesound user tosha73, sound 509902, CC0. | diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index 09db779..76ed032 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -1,6 +1,6 @@ # Development reference -This is the authoritative reference for NETfishing architecture, engineering +This is the authoritative reference for straywild architecture, engineering decisions, content policy, authoring, and validation. ## Architecture @@ -43,7 +43,7 @@ open host may publish a short-lived room lease, and the shared Join Game page may browse compatible leases before handing the selected address back to the existing direct ENet connection flow. The directory does not carry gameplay traffic or become a gameplay authority. Its base URL comes from -`network/discovery/base_url`, with `NETFISHING_DISCOVERY_URL` available as a +`network/discovery/base_url`, with `straywild_DISCOVERY_URL` available as a development/deployment override. Friendships are local identity relationships shared across save slots. A live, @@ -261,7 +261,7 @@ copies of the entire customization catalog. ### Texture sampling -NETfishing artwork uses nearest-neighbor sampling. Do not enable linear, +straywild artwork uses nearest-neighbor sampling. Do not enable linear, bilinear, trilinear, or anisotropic texture filtering. Shader samplers must declare `filter_nearest`. The three canonical repeating terrain textures are the sole mipmap exception: their projected shader uses nearest-filtered @@ -351,10 +351,10 @@ godot --headless --path . --script tests/fish_catalog_content_validation.gd rm -rf -- "$test_root" ``` -Do not point `NETFISHING_DATA_DIR` at an arbitrary empty directory; it is an +Do not point `straywild_DATA_DIR` at an arbitrary empty directory; it is an explicit portable-data override and must identify a valid data root. The PortMaster launcher is the narrow exception: it also sets -`NETFISHING_CREATE_DATA_DIR=1`, allowing the game to initialize its known empty +`straywild_CREATE_DATA_DIR=1`, allowing the game to initialize its known empty external save directory on first launch. Headless tests cannot prove visual alignment, mouse routing, shader appearance, diff --git a/docs/PORTMASTER.md b/docs/PORTMASTER.md index e8c24f6..3c75a80 100644 --- a/docs/PORTMASTER.md +++ b/docs/PORTMASTER.md @@ -1,15 +1,15 @@ # PortMaster reference -NETfishing's PortMaster release is a canonical PortMaster package, not a +straywild's PortMaster release is a canonical PortMaster package, not a version-named generic ZIP. The installer-facing archive must be named -`netfishing.zip`, and its root must contain exactly: +`straywild.zip`, and its root must contain exactly: ```text -NETfishing.sh -netfishing/ +straywild.sh +straywild/ ``` -`port.json` belongs at `netfishing/port.json` in the distributable archive. +`port.json` belongs at `straywild/port.json` in the distributable archive. The upstream source-submission layout keeps it beside the launcher and port directory, but PortMaster's release builder relocates it into the declared port directory. Do not copy the source-submission layout directly into a @@ -17,7 +17,7 @@ release ZIP. HarbourMaster's installer also relocates recognized non-script files found at an archive root into the detected port directory. That compatibility behavior -masked NETfishing's former root-level `port.json` during auto-install tests. +masked straywild's former root-level `port.json` during auto-install tests. Directly extracting the same archive into `/ports` did not perform the repair. Do not rely on installer relocation; build the distributable layout correctly. @@ -26,30 +26,30 @@ directory. The templates in `scripts/portmaster/` are authoritative. ## Release contract -- `port.json` uses schema version 4, names `netfishing.zip`, and marks the +- `port.json` uses schema version 4, names `straywild.zip`, and marks the self-contained package ready to run. -- `NETfishing.sh` does not contain a `# PORTMASTER:` signature in the source or +- `straywild.sh` does not contain a `# PORTMASTER:` signature in the source or distributable archive. HarbourMaster adds that installation marker when it installs the port. -- The executable is `netfishing/NETfishing.aarch64`. +- The executable is `straywild/straywild.aarch64`. - The package declares AArch64, two analog sticks, GLIBC 2.28, and `weston_pkg_0.2.squashfs`. -- The launcher starts GPTOKEYB with the explicit `netfishing.gptk` no-op map. +- The launcher starts GPTOKEYB with the explicit `straywild.gptk` no-op map. Every keyboard and mouse binding is disabled, leaving only GPTOKEYB's - device-specific force-quit chord while Godot and NETfishing's controller + device-specific force-quit chord while Godot and straywild's controller mapping manager handle gameplay input. The explicit map also avoids the anomalous controller behavior observed on ROCKNIX without a passthrough map. - The launcher calls `pm_platform_helper` for the game executable after starting GPTOKEYB and calls `pm_finish` after the game exits. -- NETfishing automatically creates player data for new installations under - `ports/saves/netfishing/` and does not present the in-game folder picker. +- straywild automatically creates player data for new installations under + `ports/saves/straywild/` and does not present the in-game folder picker. - Existing installations with a selected data root keep that location when upgraded. Device-local data, configuration, and cache remain under - `netfishing/conf/data`, `netfishing/conf/config`, and - `netfishing/conf/cache`. + `straywild/conf/data`, `straywild/conf/config`, and + `straywild/conf/cache`. - The archive must not contain `conf/`, saves, identities, logs, source files, `.git`, or `.godot` content. -- Release downloads must publish only the canonical `netfishing.zip` for this +- Release downloads must publish only the canonical `straywild.zip` for this platform. Do not also publish a byte-identical versioned PortMaster ZIP; HarbourMaster identifies the port by its canonical archive name and the Forgejo release tag already supplies the version. @@ -67,7 +67,7 @@ The script deletes and regenerates the Linux ARM64 export, stages the package, validates its structure, and writes: ```text -builds/v/netfishing.zip +builds/v/straywild.zip ``` `--package-only` is reserved for repackaging an already validated ARM64 export. @@ -83,7 +83,7 @@ bash scripts/build_portmaster.sh --package-only --hotfix The hotfix keeps the game executable and PCK tied to the release tag while recording the newer packaging commit separately in `BUILD-INFO.txt`. Replace -the release's existing `netfishing.zip`; never move the game release tag. +the release's existing `straywild.zip`; never move the game release tag. ## Local muOS installation @@ -93,22 +93,22 @@ The muOS auto-install directory is: /mnt/mmc/MUOS/PortMaster/autoinstall/ ``` -For an explicit offline installation test, copy `netfishing.zip` to a temporary +For an explicit offline installation test, copy `straywild.zip` to a temporary device directory and run: ```bash /mnt/mmc/MUOS/PortMaster/harbourmaster \ - --offline --no-check install ./netfishing.zip + --offline --no-check install ./straywild.zip ``` Before upgrading an existing installation, preserve -`/mnt/mmc/ports/netfishing/conf/` and `/mnt/mmc/ports/saves/netfishing/` on the +`/mnt/mmc/ports/straywild/conf/` and `/mnt/mmc/ports/saves/straywild/` on the device. After installation: 1. Confirm the installed executable and PCK hashes match the staged release. 2. Confirm HarbourMaster added its `# PORTMASTER:` installation signature to the installed launcher, then confirm the launcher starts GPTOKEYB with - `netfishing.gptk` and calls `pm_platform_helper` for the game executable. + `straywild.gptk` and calls `pm_platform_helper` for the game executable. 3. Confirm `conf/` and the external save directory were not replaced or removed. 4. Launch the installed port through the normal muOS menu. @@ -117,7 +117,7 @@ device. After installation: Start+Select on most devices. Installing the public PortMaster catalog entry can still install an older -catalog build until the upstream `netfishing.zip` is updated. A local release +catalog build until the upstream `straywild.zip` is updated. A local release test must install the generated local archive explicitly. ## Template provenance @@ -130,7 +130,7 @@ f24daae48f543b3a270a5aa46b5e73a31904bf0c7216d4c8a9e15a8dc48a5eed screenshot.png ``` The remaining catalog metadata assets were copied from the installed official -`netfishing.zip` package and are intentionally preserved byte-for-byte: +`straywild.zip` package and are intentionally preserved byte-for-byte: ```text e2a9d132744684c67865c01eca027a8c9946b4c5a19da57c82f1af0373dc83b7 gameinfo.xml @@ -160,7 +160,7 @@ The device-verified Godot mapping is: - left-stick click `b9`, left trigger `b10`, right trigger `b11`, right-stick click `b12` - D-pad `h0`; left and right sticks `a0..a3` -`scripts/portmaster/NETfishing.sh` must replace the incompatible SDL2 entry +`scripts/portmaster/straywild.sh` must replace the incompatible SDL2 entry with the Godot entry when that SDL2 GUID is selected. Do not append the two entries with a newline. WestonPack reconstructs the wrapped game command through a shell, so raw mapping values passed in that command can be split into @@ -169,14 +169,14 @@ this failure with the `GO-Super Gamepad` mapping. The outer Weston environment also does not reliably preserve the corrected muOS mapping for the game. Write the exact selected mapping to `conf/cache/controller_mapping.txt` before -starting Weston. Weston must launch `launch-netfishing.sh`, which reads that +starting Weston. Weston must launch `launch-straywild.sh`, which reads that file, exports `SDL_GAMECONTROLLERCONFIG`, and immediately replaces itself with the game process. This applies the mapping at the same point as the working 0.10.1 launcher without passing its raw text through WestonPack's command reconstruction. Do not move the mapping back to either side of `westonwrap.sh`. -Always pass `netfishing.gptk`, which explicitly unassigns every direct and +Always pass `straywild.gptk`, which explicitly unassigns every direct and hotkey binding with GPTOKEYB's `\"` value. This keeps GPTOKEYB from injecting keyboard or mouse events on top of Godot's native controller input and retains the device-specific kill chord. Supplying the explicit passthrough map also @@ -209,8 +209,8 @@ The light profile passes these Godot options: - `--max-fps 30` - `--audio-output-latency 40` -It also passes `NETFISHING_PERFORMANCE_PROFILE=light` and -`NETFISHING_LOW_END=1`. The game renders the 3D world at 37.5% linear +It also passes `straywild_PERFORMANCE_PROFILE=light` and +`straywild_LOW_END=1`. The game renders the 3D world at 37.5% linear resolution with nearest-neighbor scaling, reducing 3D pixel work by about 86% while the separately rendered UI retains its canonical resolution. The light profile also: @@ -244,7 +244,7 @@ omitted ambience or replace the micro textures with desktop-resolution assets. The normal profile otherwise retains the full visual presentation. To opt a capable device into the normal profile, create the persistent file -`netfishing/conf/performance_profile` containing exactly: +`straywild/conf/performance_profile` containing exactly: ```text normal @@ -253,13 +253,13 @@ normal On a typical muOS installation, the full path is: ```text -/mnt/mmc/ports/netfishing/conf/performance_profile +/mnt/mmc/ports/straywild/conf/performance_profile ``` Set the file to `light`, or remove it, to restore the default. An externally -provided `NETFISHING_PERFORMANCE_PROFILE=normal` or `light` environment value +provided `straywild_PERFORMANCE_PROFILE=normal` or `light` environment value takes precedence over the persistent file. Invalid values safely fall back to -the light profile and are reported in `netfishing/log.txt`. +the light profile and are reported in `straywild/log.txt`. Do not use Godot's low processor mode for the light profile. It reduces idle CPU usage by sleeping between updates and is not a game-performance diff --git a/docs/README-PLAYTEST.txt b/docs/README-PLAYTEST.txt index f1839ea..fb08636 100644 --- a/docs/README-PLAYTEST.txt +++ b/docs/README-PLAYTEST.txt @@ -1,10 +1,10 @@ -NETfishing +straywild v0.18.1-alpha Alpha 0.18.1 Thank you for trying this early private playtest. -NETfishing is an early multiplayer fishing game. This alpha includes local +straywild is an early multiplayer fishing game. This alpha includes local progression, player-hosted and dedicated multiplayer sessions, public room discovery, and direct UDP connections. Expect rough edges and please keep a backup of any save or identity data you care about. @@ -12,15 +12,15 @@ backup of any save or identity data you care about. INSTALLATION 1. Extract the entire ZIP into a new folder. -2. Keep the executable and netfishing.pck together. -3. Launch netfishing.exe on Windows or netfishing on Linux. +2. Keep the executable and straywild.pck together. +3. Launch straywild.exe on Windows or straywild on Linux. Windows may show a warning for an unsigned application. This private build is not code signed. Only run a copy received from the playtest organizer. Linux users may need to allow execution: - chmod +x netfishing + chmod +x straywild CONTROLS diff --git a/docs/README.md b/docs/README.md index 05ac0b4..444ebc7 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,4 +1,4 @@ -# NETfishing documentation +# straywild documentation This directory is the single home for maintained project documentation. Start here instead of searching feature, asset, world, or script directories @@ -17,10 +17,10 @@ for local README files. ## Related repositories -- [Discovery service API](https://forge.makearmy.io/woofmeow/netfishing-discovery-server/src/branch/main/docs/API.md) +- [Discovery service API](https://forge.makearmy.io/woofmeow/straywild-discovery-server/src/branch/main/docs/API.md) stays with the service implementation and defines its versioned HTTP contract. -- [Dedicated-server packaging](https://forge.makearmy.io/woofmeow/netfishing-dedicated-server/src/branch/main/README.md) +- [Dedicated-server packaging](https://forge.makearmy.io/woofmeow/straywild-dedicated-server/src/branch/main/README.md) stays with its installer and update scripts. It consumes this repository's attribution and legal notices from the exact pinned game commit instead of maintaining copies. diff --git a/export_presets.cfg b/export_presets.cfg index e917d48..9ae60f2 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -9,7 +9,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.18.1-alpha/windows-x86_64/NETfishing.exe" +export_path="builds/v0.18.1-alpha/windows-x86_64/straywild.exe" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -32,16 +32,16 @@ codesign/digest_algorithm=1 codesign/description="" codesign/custom_options=PackedStringArray() application/modify_resources=true -application/icon="res://art/exported/system_icons/netfishing.ico" +application/icon="res://art/exported/system_icons/straywild.ico" application/console_wrapper_icon="" -application/icon_interpolation=4 +application/icon_interpolation=0 application/file_version="0.18.1.0" application/product_version="0.18.1.0" application/company_name="Woofmeow" -application/product_name="NETfishing" -application/file_description="NETfishing v0.18.1-alpha" +application/product_name="straywild" +application/file_description="straywild v0.18.1-alpha" application/copyright="Copyright © 2026 Woofmeow" -application/trademarks="NETfishing and Woofmeow branding is reserved; see TRADEMARKS.md" +application/trademarks="straywild and Woofmeow branding is reserved; see TRADEMARKS.md" application/export_angle=0 ssh_remote_deploy/enabled=false ssh_remote_deploy/host="user@host_ip" @@ -62,7 +62,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.18.1-alpha/linux-arm64/NETfishing.arm64" +export_path="builds/v0.18.1-alpha/linux-arm64/straywild.arm64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -92,7 +92,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.18.1-alpha/macos/NETfishing.zip" +export_path="builds/v0.18.1-alpha/macos/straywild.zip" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -105,8 +105,8 @@ script_export_mode=2 custom_template/debug="" custom_template/release="" -application/bundle_identifier="io.woofmeow.netfishing" -application/icon="res://art/exported/system_icons/netfishing_1024.png" +application/bundle_identifier="io.woofmeow.straywild" +application/icon="res://art/exported/system_icons/straywild_1024.png" application/icon_interpolation=0 application/short_version="0.18.1" application/version="0.18.1" @@ -125,7 +125,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*,tests/*" -export_path="builds/v0.18.1-alpha/server-linux-x86_64/NETfishingServer.x86_64" +export_path="builds/v0.18.1-alpha/server-linux-x86_64/straywildServer.x86_64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -155,7 +155,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.18.1-alpha/android/NETfishing.apk" +export_path="builds/v0.18.1-alpha/android/straywild.apk" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -178,8 +178,8 @@ architectures/x86=false architectures/x86_64=false version/code=180100 version/name="v0.18.1-alpha" -package/unique_name="io.woofmeow.netfishing" -package/name="NETfishing" +package/unique_name="io.woofmeow.straywild" +package/name="straywild" package/signed=true package/app_category=0 package/retain_data_on_uninstall=false @@ -187,7 +187,7 @@ package/exclude_from_recents=false package/show_in_android_tv=false package/show_in_app_library=true package/show_as_launcher_app=true -launcher_icons/main_192x192="res://art/exported/system_icons/netfishing_256.png" +launcher_icons/main_192x192="res://art/exported/system_icons/straywild_256.png" graphics/opengl_debug=false screen/immersive_mode=true screen/edge_to_edge=false @@ -214,7 +214,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.18.1-alpha/linux-x86_64/NETfishing.x86_64" +export_path="builds/v0.18.1-alpha/linux-x86_64/straywild.x86_64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" diff --git a/main/main.gd b/main/main.gd index 1724bd9..460eb9e 100644 --- a/main/main.gd +++ b/main/main.gd @@ -294,7 +294,7 @@ func _ready() -> void: _configure_presentation_performance_profile( _performance_profile.is_light() ) - DisplayServer.window_set_title("NETfishing") + DisplayServer.window_set_title("straywild") _rain_ambience = RainAmbienceType.new() _rain_ambience.name = "RainAmbience" add_child(_rain_ambience) @@ -324,11 +324,12 @@ func _ready() -> void: func _configure_presentation_performance_profile(light_profile: bool) -> void: - _game_ui.get_title_screen().set_minimal_presentation(light_profile) _game_ui.set_light_performance_profile(light_profile) - var title_water_material := _title_background.material as ShaderMaterial - if title_water_material != null: - title_water_material.set_shader_parameter( + var title_background_material := ( + _title_background.material as ShaderMaterial + ) + if title_background_material != null: + title_background_material.set_shader_parameter( "animation_enabled", not light_profile, ) @@ -461,7 +462,7 @@ func _print_dedicated_metrics() -> void: metrics["gatherables"] = _network_world_spawns.call( "get_network_metrics" ) - print("NETfishing server metrics: %s" % JSON.stringify(metrics)) + print("straywild server metrics: %s" % JSON.stringify(metrics)) func _start_dedicated_server() -> void: @@ -556,7 +557,7 @@ func _start_dedicated_server() -> void: _fail_dedicated_server(_discovery.get_host_status_message()) return print( - "NETfishing dedicated server ready: %s on %s:%d (%d players, %s, timezone %s)" + "straywild dedicated server ready: %s on %s:%d (%d players, %s, timezone %s)" % [ config.server_name, config.bind_address, @@ -1096,7 +1097,7 @@ func _initialize_application(dedicated: bool) -> void: func _show_data_root_setup() -> void: if _data_setup_dialog == null: _data_setup_dialog = ConfirmationDialog.new() - _data_setup_dialog.title = "NETfishing player data" + _data_setup_dialog.title = "straywild player data" _data_setup_dialog.ok_button_text = "Use This Folder" _data_setup_dialog.cancel_button_text = "Quit" _data_setup_dialog.confirmed.connect(_use_default_data_root) @@ -1113,14 +1114,14 @@ func _show_data_root_setup() -> void: var default_path: String = _data_root.default_visible_path() var legacy: bool = PortableDataMigration.legacy_files_present() _data_setup_dialog.dialog_text = ( - ("Move your existing NETfishing data to an easy-to-find folder." - if legacy else "Choose where NETfishing stores your player data.") + ("Move your existing straywild data to an easy-to-find folder." + if legacy else "Choose where straywild stores your player data.") + "\n\n%s\n\nYou can choose a Syncthing folder." % (default_path if not default_path.is_empty() else "Choose a folder") ) _data_setup_dialog.ok_button_text = ( ( - "Move to Documents/NETFISHING" + "Move to Documents/straywild" if legacy else "Use This Folder" ) if not default_path.is_empty() @@ -1129,7 +1130,7 @@ func _show_data_root_setup() -> void: _data_setup_current_button.visible = not default_path.is_empty() if not _data_root.error_message.is_empty(): _data_setup_dialog.dialog_text = ( - "Your NETfishing data folder is unavailable.\n\n%s" + "Your straywild data folder is unavailable.\n\n%s" % _data_root.error_message ) _data_setup_dialog.popup_centered(Vector2i(640, 360)) @@ -1265,11 +1266,11 @@ func _activate_selected_data_path(path: String, app_data: bool = false) -> void: func _show_existing_root_choice(path: String) -> void: _pending_existing_root_path = path var dialog: ConfirmationDialog = ConfirmationDialog.new() - dialog.title = "Existing NETfishing data" + dialog.title = "Existing straywild data" dialog.ok_button_text = "Use Data Already in Selected Folder" dialog.cancel_button_text = "Cancel" dialog.dialog_text = ( - "This folder already contains NETfishing player data.\n\n" + "This folder already contains straywild player data.\n\n" + "Choose which complete data set to use. Data is never merged automatically." ) dialog.add_button( diff --git a/main/main.tscn b/main/main.tscn index b9ad6fb..c1380d6 100644 --- a/main/main.tscn +++ b/main/main.tscn @@ -38,7 +38,7 @@ [ext_resource type="Script" uid="uid://dpiv6wttry0j4" path="res://network/player_data_root.gd" id="37_data_root"] [ext_resource type="Script" uid="uid://bu5q4a8jfvxkf" path="res://network/identity_backup_service.gd" id="38_identity_backup"] [ext_resource type="Script" uid="uid://djmxy6jibi5y3" path="res://ui/interface_font_controller.gd" id="39_fonts"] -[ext_resource type="Shader" uid="uid://c8s1g7tn771du" path="res://ui/title_water_background.gdshader" id="40_title_water"] +[ext_resource type="Texture2D" uid="uid://doju2lbj2ghwa" path="res://world/generation/chunks/assets/chunk_0000_grass_lite.png" id="40_title_grass"] [ext_resource type="Texture2D" uid="uid://f8a0cs0s7ler" path="res://art/patterns/pattern_tealdot.png" id="41_menu_pattern"] [ext_resource type="Shader" uid="uid://byw3iub66qvog" path="res://ui/player_menu_pattern.gdshader" id="42_menu_pattern"] [ext_resource type="Texture2D" uid="uid://b6xws1d2dnbnn" path="res://art/patterns/pattern_moneyfish.png" id="43_shop_pattern"] @@ -59,18 +59,12 @@ [ext_resource type="Script" path="res://network/network_world_spawn_service.gd" id="59_world_spawns"] [ext_resource type="Script" path="res://gathering/gathering_controller.gd" id="60_gathering_controller"] -[sub_resource type="ShaderMaterial" id="ShaderMaterial_title_water_native"] -shader = ExtResource("40_title_water") -shader_parameter/surface_color = Color(0.1, 0.45, 0.62, 1) -shader_parameter/middle_color = Color(0.055, 0.285, 0.4, 1) -shader_parameter/depth_color = Color(0.02, 0.16, 0.27, 1) -shader_parameter/virtual_pixel_density = Vector2(320, 180) -shader_parameter/color_step_count = 14.0 -shader_parameter/continuous_depth_blend = 0.12 -shader_parameter/wave_speed = 0.1 -shader_parameter/wave_scale = 2.4 -shader_parameter/wave_strength = 0.012 -shader_parameter/caustic_strength = 0.018 +[sub_resource type="ShaderMaterial" id="ShaderMaterial_title_grass_native"] +shader = ExtResource("42_menu_pattern") +shader_parameter/pattern_texture = ExtResource("40_title_grass") +shader_parameter/source_tile_size = Vector2(128, 128) +shader_parameter/display_scale = 1.0 +shader_parameter/scroll_velocity_pixels = Vector2(-7.5, -7.5) [sub_resource type="ShaderMaterial" id="ShaderMaterial_player_menu_pattern"] shader = ExtResource("42_menu_pattern") @@ -139,7 +133,7 @@ layer = -1 [node name="TitleBackground" type="ColorRect" parent="TitleBackgroundLayer" unique_id=1768697365] unique_name_in_owner = true -material = SubResource("ShaderMaterial_title_water_native") +material = SubResource("ShaderMaterial_title_grass_native") anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 diff --git a/main/runtime_performance_profile.gd b/main/runtime_performance_profile.gd index ee2581d..8cc1ea6 100644 --- a/main/runtime_performance_profile.gd +++ b/main/runtime_performance_profile.gd @@ -2,9 +2,9 @@ class_name RuntimePerformanceProfile extends RefCounted const PROFILE_ENVIRONMENT_VARIABLE: String = ( - "NETFISHING_PERFORMANCE_PROFILE" + "straywild_PERFORMANCE_PROFILE" ) -const LEGACY_LIGHT_ENVIRONMENT_VARIABLE: String = "NETFISHING_LOW_END" +const LEGACY_LIGHT_ENVIRONMENT_VARIABLE: String = "straywild_LOW_END" const NORMAL_PROFILE: StringName = &"normal" const LIGHT_PROFILE: StringName = &"light" const NORMAL_WORLD_RENDER_SCALE: float = 1.0 diff --git a/main/texture_sampling_policy.gd b/main/texture_sampling_policy.gd index 3d041d0..822299c 100644 --- a/main/texture_sampling_policy.gd +++ b/main/texture_sampling_policy.gd @@ -1,6 +1,6 @@ extends Node -## Enforces NETfishing's nearest-neighbor-only artwork policy at runtime. +## Enforces straywild's nearest-neighbor-only artwork policy at runtime. ## ## Godot uses separate texture-filter enums for CanvasItem and 3D materials. ## Applying both here prevents imported models, dynamically created controls, diff --git a/network/discovery_client.gd b/network/discovery_client.gd index 31b8054..a3d983f 100644 --- a/network/discovery_client.gd +++ b/network/discovery_client.gd @@ -20,12 +20,12 @@ signal friend_invite_received( signal friend_invite_finished(success: bool, message: String) const BASE_URL_SETTING: String = "network/discovery/base_url" -const BASE_URL_ENVIRONMENT: String = "NETFISHING_DISCOVERY_URL" +const BASE_URL_ENVIRONMENT: String = "straywild_DISCOVERY_URL" const SETTINGS_PATH: String = "user://network_discovery.cfg" const DEFAULT_ROOM_NAME: String = "Player's Server" -const LEGACY_DEFAULT_ROOM_NAME: String = "NETfishing Room" +const LEGACY_DEFAULT_ROOM_NAME: String = "straywild Room" const LEGACY_DEDICATED_DEFAULT_ROOM_NAME: String = ( - "NETfishing Dedicated Server" + "straywild Dedicated Server" ) const ROOM_NAME_SUFFIX: String = "'s Server" const MAX_ROOM_NAME_LENGTH: int = 48 @@ -33,7 +33,7 @@ const HEARTBEAT_INTERVAL_SECONDS: float = 15.0 const REQUEST_TIMEOUT_SECONDS: float = 8.0 const TRAVERSAL_POLL_INTERVAL_SECONDS: float = 1.0 const JOIN_PROBE_INTERVAL_SECONDS: float = 0.35 -const TRAVERSAL_PACKET_PREFIX: String = "NETFISHING_TRAVERSAL_V1 " +const TRAVERSAL_PACKET_PREFIX: String = "straywild_TRAVERSAL_V1 " const UPNP_MAPPING_DURATION_SECONDS: int = 3600 const UPNP_RENEW_INTERVAL_SECONDS: float = 2700.0 const UPNP_RETRY_INTERVAL_SECONDS: float = 300.0 @@ -560,7 +560,7 @@ func _configured_base_url() -> String: if not value.is_empty() and not ( value.begins_with("https://") or value.begins_with("http://") ): - push_warning("Ignored invalid NETfishing discovery URL.") + push_warning("Ignored invalid straywild discovery URL.") return "" return value @@ -809,7 +809,7 @@ func _on_traversal_request_completed( var port: int = int(endpoint.get("port", 0)) if address.is_empty() or port < 1 or port > 65535: continue - var punch: PackedByteArray = "NETFISHING_PUNCH_V1".to_utf8_buffer() + var punch: PackedByteArray = "straywild_PUNCH_V1".to_utf8_buffer() for _attempt: int in 3: _session.send_traversal_packet(address, port, punch) @@ -895,13 +895,13 @@ func _configure_upnp_mapping(port: int) -> Dictionary: var mapping_result: int = upnp.add_port_mapping( port, port, - "NETfishing", + "straywild", "UDP", UPNP_MAPPING_DURATION_SECONDS, ) if mapping_result == UPNP.UPNP_RESULT_ONLY_PERMANENT_LEASE_SUPPORTED: mapping_result = upnp.add_port_mapping( - port, port, "NETfishing", "UDP", 0 + port, port, "straywild", "UDP", 0 ) return { "success": mapping_result == UPNP.UPNP_RESULT_SUCCESS, @@ -1374,18 +1374,18 @@ func _discovery_version_mismatch_message(required_version: String) -> String: match rejection: NetworkProtocol.RejectionCode.CLIENT_OUTDATED: return ( - "Your NETfishing version is out of date. Update to %s to " + "Your straywild version is out of date. Update to %s to " + "enable public discovery. This room will not be listed " + "until you update." ) % required_version NetworkProtocol.RejectionCode.SERVER_OUTDATED: return ( - "Public discovery is still on NETfishing %s. This room " + "Public discovery is still on straywild %s. This room " + "will not be listed until discovery is updated for %s." ) % [required_version, local_version] _: return ( - "Public discovery requires NETfishing %s. This room will " + "Public discovery requires straywild %s. This room will " + "not be listed until both versions match." ) % required_version @@ -1577,4 +1577,4 @@ func _save_settings() -> void: config.set_value("social", "share_presence", _presence_sharing) var error: Error = config.save(SETTINGS_PATH) if error != OK: - push_warning("Could not save local NETfishing discovery settings.") + push_warning("Could not save local straywild discovery settings.") diff --git a/network/identity_backup_service.gd b/network/identity_backup_service.gd index ff7396c..53cf718 100644 --- a/network/identity_backup_service.gd +++ b/network/identity_backup_service.gd @@ -3,7 +3,7 @@ extends Node signal operation_finished(success: bool, message: String) -const MAGIC := "NETFISHING_IDENTITY_BACKUP" +const MAGIC := "straywild_IDENTITY_BACKUP" const FORMAT_VERSION := 1 const MAX_BACKUP_BYTES := 256 * 1024 const MIN_PASSPHRASE_LENGTH := 12 @@ -189,7 +189,7 @@ func import_backup( ) _finish( bool(result.get("ok", false)), - "Identity imported. Restart NETfishing before multiplayer." + "Identity imported. Restart straywild before multiplayer." if bool(result.get("ok", false)) else "Could not install this identity backup.", ) diff --git a/network/network_identity_crypto.gd b/network/network_identity_crypto.gd index 4886cca..d3f9983 100644 --- a/network/network_identity_crypto.gd +++ b/network/network_identity_crypto.gd @@ -5,7 +5,7 @@ const ALGORITHM: String = "RSA-3072-SHA256" const FINGERPRINT_LENGTH: int = 64 const MAX_PUBLIC_KEY_BYTES: int = 8192 const MAX_SIGNATURE_BYTES: int = 1024 -const DOMAIN_PREFIX: String = "NETFISHING" +const DOMAIN_PREFIX: String = "straywild" const IDENTITY_VERSION: String = "identity_v1" diff --git a/network/network_protocol.gd b/network/network_protocol.gd index 6bbbf9b..20be022 100644 --- a/network/network_protocol.gd +++ b/network/network_protocol.gd @@ -3,7 +3,7 @@ extends RefCounted const WorldLayoutType = preload("res://world/world_layout.gd") -const PROTOCOL_VERSION: int = 10 +const PROTOCOL_VERSION: int = 11 const GAME_BUILD: String = "prealpha" const MAX_GAME_VERSION_LENGTH: int = 64 const MAX_DISPLAY_NAME_LENGTH: int = 24 @@ -304,7 +304,7 @@ static func make_server_hello( assigned_peer_id: int, player_count: int, max_players: int, - server_display_name: String = "NETfishing", + server_display_name: String = "straywild", world_seed: int = DEFAULT_WORLD_SEED, world_layout: StringName = WorldLayoutType.GENERATED, ) -> Dictionary: @@ -372,17 +372,17 @@ static func rejection_text(code: int) -> String: return "You are not permitted to join this server." RejectionCode.CLIENT_OUTDATED: return ( - "Your NETfishing version is out of date. " + "Your straywild version is out of date. " + "Update the game to join this server." ) RejectionCode.SERVER_OUTDATED: return ( "This server is out of date. " - + "The host needs to update NETfishing." + + "The host needs to update straywild." ) RejectionCode.VERSION_MISMATCH: return ( - "This game and server use different NETfishing versions. " + "This game and server use different straywild versions. " + "Update both to the latest release." ) _: diff --git a/network/network_session.gd b/network/network_session.gd index 2711976..8b99fd6 100644 --- a/network/network_session.gd +++ b/network/network_session.gd @@ -160,7 +160,7 @@ var _local_appearance_snapshot: Dictionary = ( ) var _moderation_disconnect_message := "" var _host_port: int = 0 -var _session_display_name: String = "NETfishing Room" +var _session_display_name: String = "straywild Room" var _dedicated_host: bool = false var _configured_operator_fingerprints: Dictionary[String, bool] = {} var _session_operator_fingerprints: Dictionary[String, bool] = {} @@ -432,7 +432,7 @@ func set_peer_operator( func set_session_display_name(value: String) -> void: var cleaned: String = value.strip_edges().left(48) if cleaned.is_empty(): - cleaned = "NETfishing Room" + cleaned = "straywild Room" if cleaned == _session_display_name: return _session_display_name = cleaned @@ -1187,7 +1187,7 @@ func resolve_server_trust(accepted: bool) -> void: if not _server_trust.trust( get_current_endpoint(), str(_pending_server_proof["server_fingerprint"]), - "NETfishing", + "straywild", ): _fail_identity("The server identity could not be pinned.") return diff --git a/network/network_surface_drawing_service.gd b/network/network_surface_drawing_service.gd index 4edc234..c322e5b 100644 --- a/network/network_surface_drawing_service.gd +++ b/network/network_surface_drawing_service.gd @@ -879,7 +879,7 @@ func export_canvas_png(canvas_id: String) -> String: _emit_hud_state("paint something before exporting") return "" if _data_root == null or _data_root.root_path.is_empty(): - _emit_hud_state("choose a NETfishing data folder before exporting") + _emit_hud_state("choose a straywild data folder before exporting") return "" var export_directory: String = _artwork_directory() if DirAccess.make_dir_recursive_absolute(export_directory) != OK: @@ -990,7 +990,7 @@ func _stamp_entry_is_unlocked(entry: Dictionary) -> bool: func _next_artwork_export_path(directory: String) -> String: var date_time: Dictionary = Time.get_datetime_dict_from_system() - var stem: String = "netfishing-artwork-%04d%02d%02d-%02d%02d%02d" % [ + var stem: String = "straywild-artwork-%04d%02d%02d-%02d%02d%02d" % [ int(date_time.get("year", 0)), int(date_time.get("month", 0)), int(date_time.get("day", 0)), diff --git a/network/player_data_root.gd b/network/player_data_root.gd index 9416db3..d6153ff 100644 --- a/network/player_data_root.gd +++ b/network/player_data_root.gd @@ -9,11 +9,11 @@ const BOOTSTRAP_TEMP_PATH := "user://data_root_bootstrap.json.tmp" const BOOTSTRAP_VERSION := 1 const MANIFEST_VERSION := 1 const LAYOUT_VERSION := 1 -const MANIFEST_FILENAME := "netfishing_data.json" +const MANIFEST_FILENAME := "straywild_data.json" const README_FILENAME := "README.txt" -const ENVIRONMENT_VARIABLE := "NETFISHING_DATA_DIR" -const CREATE_ENVIRONMENT_VARIABLE := "NETFISHING_CREATE_DATA_DIR" -const APPLICATION_ID := "netfishing" +const ENVIRONMENT_VARIABLE := "straywild_DATA_DIR" +const CREATE_ENVIRONMENT_VARIABLE := "straywild_CREATE_DATA_DIR" +const APPLICATION_ID := "straywild" const APP_DATA_PORTABLE_PATH := "user://portable-data" const PATH_ALLOWED: StringName = &"allowed" const PATH_SOURCE_PROJECT: StringName = &"source_project" @@ -48,7 +48,7 @@ func resolve() -> bool: mode = Mode.ENVIRONMENT_OVERRIDE var environment_path: String = OS.get_environment(ENVIRONMENT_VARIABLE) if not environment_path.is_absolute_path(): - return _fail("NETFISHING_DATA_DIR must be an absolute path.") + return _fail("straywild_DATA_DIR must be an absolute path.") if ( OS.get_environment(CREATE_ENVIRONMENT_VARIABLE) == "1" and not FileAccess.file_exists( @@ -84,7 +84,7 @@ func default_visible_path() -> String: var documents: String = OS.get_system_dir(OS.SYSTEM_DIR_DOCUMENTS) if documents.is_empty(): return "" - var candidate: String = _normalize(documents.path_join("NETFISHING")) + var candidate: String = _normalize(documents.path_join("straywild")) if not candidate.is_absolute_path(): return "" var classification: StringName = classify_candidate_path( @@ -109,16 +109,16 @@ func select_new_root(path: String, app_data: bool = false) -> bool: if FileAccess.file_exists(manifest_path): var manifest: Dictionary = _read_json(manifest_path) if not _valid_manifest(manifest): - return _fail("The selected folder has a malformed NETfishing manifest.") + return _fail("The selected folder has a malformed straywild manifest.") root_id = str(manifest["root_id"]) else: if not _directory_is_empty(normalized) and not app_data: return _fail( - "Choose an empty folder or an existing NETfishing data folder." + "Choose an empty folder or an existing straywild data folder." ) root_id = Crypto.new().generate_random_bytes(16).hex_encode() if not _create_layout(normalized, root_id): - return _fail("The NETfishing data folder could not be created.") + return _fail("The straywild data folder could not be created.") if not _write_bootstrap(normalized, root_id): return _fail("The data-folder pointer could not be saved.") root_path = normalized @@ -238,15 +238,15 @@ func _activate_existing(path: String, expected_id: String, permit_creation: bool return false var manifest_path: String = normalized.path_join(MANIFEST_FILENAME) if not FileAccess.file_exists(manifest_path): - return _fail("The selected folder is not a NETfishing data folder.") + return _fail("The selected folder is not a straywild data folder.") var manifest: Dictionary = _read_json(manifest_path) if not _valid_manifest(manifest): - return _fail("The NETfishing data-folder manifest is malformed.") + return _fail("The straywild data-folder manifest is malformed.") var found_id: String = str(manifest["root_id"]) if not expected_id.is_empty() and expected_id != found_id: return _fail("The selected data folder does not match this device pointer.") if not _test_writable(normalized): - return _fail("The NETfishing data folder is unavailable or unwritable.") + return _fail("The straywild data folder is unavailable or unwritable.") root_path = normalized root_id = found_id requires_selection = false @@ -339,7 +339,7 @@ static func _is_same_or_child_path(candidate: String, reference: String) -> bool func _test_writable(path: String) -> bool: var probe: String = path.path_join( - ".netfishing-write-%s.tmp" % device_id.left(12) + ".straywild-write-%s.tmp" % device_id.left(12) ) var file: FileAccess = FileAccess.open(probe, FileAccess.WRITE) if file == null: @@ -370,7 +370,7 @@ func _create_layout(path: String, id: String) -> bool: ): return false var readme: String = ( - "NETfishing player data\n\n" + "straywild player data\n\n" + "This folder is safe to synchronize with tools such as Syncthing.\n" + "Active private identity keys remain device-local.\n" + "Encrypted identity backups require their passphrase.\n" diff --git a/network/player_relationship_store.gd b/network/player_relationship_store.gd index 2452315..0f4b6f1 100644 --- a/network/player_relationship_store.gd +++ b/network/player_relationship_store.gd @@ -7,8 +7,8 @@ const FORMAT_VERSION := 2 const MAX_RECORDS := 500 const MAX_FRIENDS := 200 const SOCIAL_TOKEN_LENGTH := 64 -const PRESENCE_CHANNEL_DOMAIN := "NETFISHING_PRESENCE_V1:" -const INVITE_INBOX_DOMAIN := "NETFISHING_INVITE_V1:" +const PRESENCE_CHANNEL_DOMAIN := "straywild_PRESENCE_V1:" +const INVITE_INBOX_DOMAIN := "straywild_INVITE_V1:" var _records: Dictionary = {} var _loaded := false diff --git a/network/portable_data_migration.gd b/network/portable_data_migration.gd index 17ded9f..e95d883 100644 --- a/network/portable_data_migration.gd +++ b/network/portable_data_migration.gd @@ -33,12 +33,12 @@ static func migrate_legacy_to( return { "ok": false, "requires_existing_root_decision": true, - "message": "The selected folder already contains NETfishing data.", + "message": "The selected folder already contains straywild data.", } if not _directory_empty(normalized): return { "ok": false, - "message": "Choose an empty folder or create a NETfishing subfolder.", + "message": "Choose an empty folder or create a straywild subfolder.", } var staging: String = "%s.migration-%s" % [ normalized, Crypto.new().generate_random_bytes(8).hex_encode() @@ -111,11 +111,11 @@ static func migrate_active_to( "ok": false, "requires_existing_root_decision": true, "message": ( - "The selected folder already contains NETfishing data. " + "The selected folder already contains straywild data. " + "Choose it through the existing-data recovery flow." ), } - return {"ok": false, "message": "Choose an empty folder or a NETfishing subfolder."} + return {"ok": false, "message": "Choose an empty folder or a straywild subfolder."} var staging: String = "%s.migration-%s" % [ normalized, Crypto.new().generate_random_bytes(8).hex_encode() ] @@ -209,7 +209,7 @@ static func replace_existing_with_legacy( var normalized: String = destination.simplify_path().trim_suffix("/") var manifest: String = normalized.path_join(PlayerDataRoot.MANIFEST_FILENAME) if not FileAccess.file_exists(manifest): - return {"ok": false, "message": "The selected folder is not a NETfishing data root."} + return {"ok": false, "message": "The selected folder is not a straywild data root."} var recovery: String = ProjectSettings.globalize_path( "user://migration-recovery" ).path_join( @@ -230,7 +230,7 @@ static func replace_existing_with_active( ) -> Dictionary: var normalized: String = destination.simplify_path().trim_suffix("/") if not FileAccess.file_exists(normalized.path_join(PlayerDataRoot.MANIFEST_FILENAME)): - return {"ok": false, "message": "The selected folder is not a NETfishing data root."} + return {"ok": false, "message": "The selected folder is not a straywild data root."} var recovery: String = ProjectSettings.globalize_path( "user://migration-recovery" ).path_join( diff --git a/player/player.tscn b/player/player.tscn index 4a2d897..3288d2d 100644 --- a/player/player.tscn +++ b/player/player.tscn @@ -12,7 +12,7 @@ [ext_resource type="Script" path="res://progression/player_cooler_capacity.gd" id="10_capacity"] [ext_resource type="Script" path="res://player/player_ground_shadow.gd" id="11_ground_shadow"] [ext_resource type="Material" path="res://player/materials/player_blob_shadow.tres" id="12_blob_shadow"] -[ext_resource type="PackedScene" path="res://art/exported/characters/base/netfishing_base_character.glb" id="13_character"] +[ext_resource type="PackedScene" path="res://art/exported/characters/base/straywild_base_character.glb" id="13_character"] [ext_resource type="Script" path="res://progression/player_art_unlocks.gd" id="14_art_unlocks"] [ext_resource type="Script" path="res://progression/player_experience.gd" id="15_experience"] [ext_resource type="Script" path="res://player/sprint_dust_trail.gd" id="16_sprint_dust"] diff --git a/player/player_visual_presenter.gd b/player/player_visual_presenter.gd index 745fc3c..b071b2c 100644 --- a/player/player_visual_presenter.gd +++ b/player/player_visual_presenter.gd @@ -3,9 +3,9 @@ extends RefCounted const PlayerScene: PackedScene = preload("res://player/player.tscn") const FurPatternShader: Shader = preload("res://player/fur_pattern.gdshader") -const RUNTIME_MATERIAL_META: StringName = &"netfishing_runtime_material" +const RUNTIME_MATERIAL_META: StringName = &"straywild_runtime_material" const RUNTIME_FUR_PATTERN_MATERIAL_META: StringName = ( - &"netfishing_runtime_fur_pattern_material" + &"straywild_runtime_fur_pattern_material" ) const EAR_MESH_NAMES: Array[String] = [ "ears_antlers_round", diff --git a/project.godot b/project.godot index 054e584..db06b66 100644 --- a/project.godot +++ b/project.godot @@ -10,11 +10,11 @@ config_version=5 [application] -config/name="NETFISHING" +config/name="straywild" config/version="0.18.1-alpha" run/main_scene="res://main/main.tscn" config/features=PackedStringArray("4.7", "GL Compatibility") -config/icon="res://art/exported/system_icons/netfishing_256.png" +config/icon="res://art/exported/system_icons/straywild_256.png" [autoload] @@ -26,7 +26,7 @@ window/stretch/aspect="expand" [editor_plugins] -enabled=PackedStringArray("res://addons/netfishing_shoreline_baker/plugin.cfg") +enabled=PackedStringArray("res://addons/straywild_shoreline_baker/plugin.cfg") [gui] @@ -260,7 +260,7 @@ alternate_fishing={ [network] -discovery/base_url="https://discovery.netfishing.org" +discovery/base_url="https://discovery.straywild.io" [physics] diff --git a/save/progression_save_codec.gd b/save/progression_save_codec.gd index 7844e16..a006773 100644 --- a/save/progression_save_codec.gd +++ b/save/progression_save_codec.gd @@ -1,7 +1,7 @@ class_name ProgressionSaveCodec extends RefCounted -const MAGIC := "NETFISHING_PROGRESSION_CONTAINER" +const MAGIC := "straywild_PROGRESSION_CONTAINER" const FORMAT_VERSION := 1 const LOCAL_KIND := "local_save" const ARCHIVE_KIND := "portable_archive" @@ -10,7 +10,7 @@ const MAX_CONTAINER_BYTES := 16 * 1024 * 1024 # This key keeps routine progression files opaque to casual editing. Since the # client is open source, it is intentionally not treated as a security secret. const CONTAINER_PASSPHRASE := ( - "NETfishing progression container v1 / not an identity credential" + "straywild progression container v1 / not an identity credential" ) diff --git a/scripts/build_android_debug.sh b/scripts/build_android_debug.sh index 8f856f8..f68eb32 100755 --- a/scripts/build_android_debug.sh +++ b/scripts/build_android_debug.sh @@ -4,7 +4,7 @@ set -euo pipefail readonly SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" readonly PROJECT_ROOT="$(cd -- "${SCRIPT_DIR}/.." && pwd)" -readonly OUTPUT_PATH="${PROJECT_ROOT}/builds/android/NETfishing-debug.apk" +readonly OUTPUT_PATH="${PROJECT_ROOT}/builds/android/straywild-debug.apk" readonly GODOT_BIN="${GODOT_BIN:-godot}" mkdir -p -- "$(dirname -- "${OUTPUT_PATH}")" diff --git a/scripts/build_playtest.sh b/scripts/build_playtest.sh index 1aa067c..c18f277 100755 --- a/scripts/build_playtest.sh +++ b/scripts/build_playtest.sh @@ -9,9 +9,9 @@ readonly WINDOWS_DIR="${BUILD_ROOT}/windows-x86_64" readonly LINUX_DIR="${BUILD_ROOT}/linux-x86_64" readonly README_SOURCE="${PROJECT_ROOT}/docs/README-PLAYTEST.txt" readonly SOURCE_COMMIT="$(git -C "${PROJECT_ROOT}" rev-parse HEAD)" -readonly SOURCE_URL="https://forge.makearmy.io/woofmeow/netfishing" -readonly WINDOWS_ZIP="${BUILD_ROOT}/NETfishing-v0.18.1-alpha-windows-x86_64.zip" -readonly LINUX_ZIP="${BUILD_ROOT}/NETfishing-v0.18.1-alpha-linux-x86_64.zip" +readonly SOURCE_URL="https://forge.makearmy.io/woofmeow/straywild" +readonly WINDOWS_ZIP="${BUILD_ROOT}/straywild-v0.18.1-alpha-windows-x86_64.zip" +readonly LINUX_ZIP="${BUILD_ROOT}/straywild-v0.18.1-alpha-linux-x86_64.zip" readonly GODOT_BIN="${GODOT_BIN:-godot}" if [[ ! -f "${PROJECT_ROOT}/project.godot" ]]; then @@ -31,26 +31,26 @@ mkdir -p -- "${WINDOWS_DIR}" "${LINUX_DIR}" --headless \ --path "${PROJECT_ROOT}" \ --export-release "Windows Desktop" \ - "${WINDOWS_DIR}/NETfishing.exe" + "${WINDOWS_DIR}/straywild.exe" "${GODOT_BIN}" \ --headless \ --path "${PROJECT_ROOT}" \ --export-release "Linux Desktop" \ - "${LINUX_DIR}/NETfishing.x86_64" + "${LINUX_DIR}/straywild.x86_64" for required_file in \ - "${WINDOWS_DIR}/NETfishing.exe" \ - "${WINDOWS_DIR}/NETfishing.pck" \ - "${LINUX_DIR}/NETfishing.x86_64" \ - "${LINUX_DIR}/NETfishing.pck"; do + "${WINDOWS_DIR}/straywild.exe" \ + "${WINDOWS_DIR}/straywild.pck" \ + "${LINUX_DIR}/straywild.x86_64" \ + "${LINUX_DIR}/straywild.pck"; do if [[ ! -s "${required_file}" ]]; then echo "error: expected export output is missing: ${required_file}" >&2 exit 1 fi done -chmod +x -- "${LINUX_DIR}/NETfishing.x86_64" +chmod +x -- "${LINUX_DIR}/straywild.x86_64" cp -- "${README_SOURCE}" "${WINDOWS_DIR}/README-PLAYTEST.txt" cp -- "${README_SOURCE}" "${LINUX_DIR}/README-PLAYTEST.txt" @@ -60,7 +60,7 @@ stage_licenses() { install -m 0644 "${PROJECT_ROOT}/LICENSE" \ "${destination}/GPL-3.0-or-later.txt" install -m 0644 "${PROJECT_ROOT}/ASSET-LICENSE.md" \ - "${destination}/NETFISHING-ASSET-LICENSE.md" + "${destination}/straywild-ASSET-LICENSE.md" install -m 0644 "${PROJECT_ROOT}/docs/ATTRIBUTION.md" \ "${destination}/ATTRIBUTION.md" install -m 0644 "${PROJECT_ROOT}/TRADEMARKS.md" \ @@ -72,7 +72,7 @@ stage_licenses() { cat >"${destination}/SOURCE-CODE.md" <&2 exit 1 fi -if [[ "${NETFISHING_ALLOW_DIRTY_RELEASE:-0}" != "1" ]]; then +if [[ "${straywild_ALLOW_DIRTY_RELEASE:-0}" != "1" ]]; then dirty_tree=0 git -C "${PROJECT_ROOT}" diff --quiet || dirty_tree=1 git -C "${PROJECT_ROOT}" diff --cached --quiet || dirty_tree=1 @@ -97,7 +97,7 @@ done mkdir -p -- "${ARM64_ROOT}" "${RELEASE_ROOT}" if [[ ${PACKAGE_ONLY} -eq 0 ]]; then readonly EXPORT_PROJECT_ROOT="$( - mktemp -d -t netfishing-portmaster-export.XXXXXX + mktemp -d -t straywild-portmaster-export.XXXXXX )" cleanup_export_project() { rm -rf -- "${EXPORT_PROJECT_ROOT}" @@ -108,9 +108,9 @@ if [[ ${PACKAGE_ONLY} -eq 0 ]]; then --exclude '/.git/' \ --exclude '/.godot/' \ --exclude '/art/source/' \ - --exclude '/art/exported/system_icons/netfishing.ico' \ - --exclude '/art/exported/system_icons/netfishing_1024.png' \ - --exclude '/art/exported/system_icons/netfishing_1024.png.import' \ + --exclude '/art/exported/system_icons/straywild.ico' \ + --exclude '/art/exported/system_icons/straywild_1024.png' \ + --exclude '/art/exported/system_icons/straywild_1024.png.import' \ --exclude '/audio/ambience/' \ --exclude '/builds/' \ --exclude '/docs/design/' \ @@ -141,14 +141,14 @@ rm -f -- \ "${OBSOLETE_LOWERCASE_ARCHIVE}" mkdir -p -- "${GAME_ROOT}/licenses" -install -m 0755 "${TEMPLATE_ROOT}/NETfishing.sh" "${STAGE_ROOT}/NETfishing.sh" +install -m 0755 "${TEMPLATE_ROOT}/straywild.sh" "${STAGE_ROOT}/straywild.sh" install -m 0644 "${TEMPLATE_ROOT}/port.json" "${GAME_ROOT}/port.json" -install -m 0644 "${TEMPLATE_ROOT}/netfishing.gptk" \ - "${GAME_ROOT}/netfishing.gptk" -install -m 0755 "${TEMPLATE_ROOT}/launch-netfishing.sh" \ - "${GAME_ROOT}/launch-netfishing.sh" -install -m 0755 "${ARM64_EXECUTABLE}" "${GAME_ROOT}/NETfishing.aarch64" -install -m 0644 "${ARM64_PCK}" "${GAME_ROOT}/NETfishing.pck" +install -m 0644 "${TEMPLATE_ROOT}/straywild.gptk" \ + "${GAME_ROOT}/straywild.gptk" +install -m 0755 "${TEMPLATE_ROOT}/launch-straywild.sh" \ + "${GAME_ROOT}/launch-straywild.sh" +install -m 0755 "${ARM64_EXECUTABLE}" "${GAME_ROOT}/straywild.aarch64" +install -m 0644 "${ARM64_PCK}" "${GAME_ROOT}/straywild.pck" install -m 0644 "${TEMPLATE_ROOT}/gameinfo.xml" "${GAME_ROOT}/gameinfo.xml" install -m 0644 "${TEMPLATE_ROOT}/screenshot.png" "${GAME_ROOT}/screenshot.png" install -m 0644 \ @@ -159,7 +159,7 @@ install -m 0644 \ "${GAME_ROOT}/licenses/GPL-3.0-or-later.txt" install -m 0644 \ "${PROJECT_ROOT}/ASSET-LICENSE.md" \ - "${GAME_ROOT}/licenses/NETFISHING-ASSET-LICENSE.md" + "${GAME_ROOT}/licenses/straywild-ASSET-LICENSE.md" install -m 0644 \ "${PROJECT_ROOT}/TRADEMARKS.md" \ "${GAME_ROOT}/licenses/TRADEMARKS.md" @@ -171,7 +171,7 @@ install -m 0644 \ "${GAME_ROOT}/licenses/Seattle-Avenue-LICENSE.txt" cat >"${GAME_ROOT}/BUILD-INFO.txt" <"${GAME_ROOT}/licenses/SOURCE-CODE.md" <"${GAME_ROOT}/README.md" </dev/null readonly TOP_LEVELS="$( unzip -Z1 "${ARCHIVE}" | cut -d/ -f1 | sort -u )" -readonly EXPECTED_TOP_LEVELS="$(printf '%s\n' NETfishing.sh netfishing)" +readonly EXPECTED_TOP_LEVELS="$(printf '%s\n' straywild.sh straywild)" if [[ "${TOP_LEVELS}" != "${EXPECTED_TOP_LEVELS}" ]]; then echo "Unexpected PortMaster archive roots:" >&2 printf '%s\n' "${TOP_LEVELS}" >&2 exit 1 fi grep -q '"version": 4' "${GAME_ROOT}/port.json" -grep -q '"name": "netfishing.zip"' "${GAME_ROOT}/port.json" +grep -q '"name": "straywild.zip"' "${GAME_ROOT}/port.json" grep -q '"rtr": true' "${GAME_ROOT}/port.json" if unzip -Z1 "${ARCHIVE}" | grep -qx 'port.json'; then - echo "port.json must be inside netfishing/, not at the archive root." >&2 + echo "port.json must be inside straywild/, not at the archive root." >&2 exit 1 fi if grep -Eq '^[[:space:]]*#[[:space:]]*PORTMASTER:' \ - "${STAGE_ROOT}/NETfishing.sh"; then + "${STAGE_ROOT}/straywild.sh"; then echo "The distributable launcher contains an installed PortMaster signature." >&2 exit 1 fi grep -Fq 'PROFILE_PATH="$CONFDIR/performance_profile"' \ - "${STAGE_ROOT}/NETfishing.sh" -grep -Fq 'NETFISHING_PERFORMANCE_PROFILE=light' \ - "${STAGE_ROOT}/NETfishing.sh" + "${STAGE_ROOT}/straywild.sh" +grep -Fq 'straywild_PERFORMANCE_PROFILE=light' \ + "${STAGE_ROOT}/straywild.sh" grep -Fq 'CONTROLLER_MAPPING_FILE="$CONFDIR/cache/controller_mapping.txt"' \ - "${STAGE_ROOT}/NETfishing.sh" -grep -Fq 'SAVEDIR="$PORTS_ROOT/saves/netfishing"' \ - "${STAGE_ROOT}/NETfishing.sh" -grep -Fq '"NETFISHING_DATA_DIR=$SAVEDIR"' \ - "${STAGE_ROOT}/NETfishing.sh" -grep -Fq '"NETFISHING_CREATE_DATA_DIR=1"' \ - "${STAGE_ROOT}/NETfishing.sh" -grep -Fq 'printf '\''%s\n'\'' "$netfishing_controllerconfig" > "$CONTROLLER_MAPPING_FILE"' \ - "${STAGE_ROOT}/NETfishing.sh" -grep -Fq '"$GAME_LAUNCHER"' "${STAGE_ROOT}/NETfishing.sh" -grep -Fq '"$CONTROLLER_MAPPING_FILE"' "${STAGE_ROOT}/NETfishing.sh" -if grep -Fq 'SDL_GAMECONTROLLERCONFIG="$netfishing_controllerconfig"' \ - "${STAGE_ROOT}/NETfishing.sh"; then + "${STAGE_ROOT}/straywild.sh" +grep -Fq 'SAVEDIR="$PORTS_ROOT/saves/straywild"' \ + "${STAGE_ROOT}/straywild.sh" +grep -Fq '"straywild_DATA_DIR=$SAVEDIR"' \ + "${STAGE_ROOT}/straywild.sh" +grep -Fq '"straywild_CREATE_DATA_DIR=1"' \ + "${STAGE_ROOT}/straywild.sh" +grep -Fq 'printf '\''%s\n'\'' "$straywild_controllerconfig" > "$CONTROLLER_MAPPING_FILE"' \ + "${STAGE_ROOT}/straywild.sh" +grep -Fq '"$GAME_LAUNCHER"' "${STAGE_ROOT}/straywild.sh" +grep -Fq '"$CONTROLLER_MAPPING_FILE"' "${STAGE_ROOT}/straywild.sh" +if grep -Fq 'SDL_GAMECONTROLLERCONFIG="$straywild_controllerconfig"' \ + "${STAGE_ROOT}/straywild.sh"; then echo "Raw controller mappings must not be passed through westonwrap.sh." >&2 exit 1 fi grep -Fq 'SDL_GAMECONTROLLERCONFIG="$(<"$CONTROLLER_MAPPING_FILE")"' \ - "${GAME_ROOT}/launch-netfishing.sh" + "${GAME_ROOT}/launch-straywild.sh" grep -Fq 'export SDL_GAMECONTROLLERCONFIG' \ - "${GAME_ROOT}/launch-netfishing.sh" -grep -Fq 'exec "$@"' "${GAME_ROOT}/launch-netfishing.sh" -grep -Fq 'GPTOKEYB_CONFIG="$GAMEDIR/netfishing.gptk"' \ - "${STAGE_ROOT}/NETfishing.sh" -grep -Fq '$GPTOKEYB "NETfishing.aarch64" -c "$GPTOKEYB_CONFIG" &' \ - "${STAGE_ROOT}/NETfishing.sh" + "${GAME_ROOT}/launch-straywild.sh" +grep -Fq 'exec "$@"' "${GAME_ROOT}/launch-straywild.sh" +grep -Fq 'GPTOKEYB_CONFIG="$GAMEDIR/straywild.gptk"' \ + "${STAGE_ROOT}/straywild.sh" +grep -Fq '$GPTOKEYB "straywild.aarch64" -c "$GPTOKEYB_CONFIG" &' \ + "${STAGE_ROOT}/straywild.sh" grep -Fq 'pm_platform_helper "$GAME_EXECUTABLE"' \ - "${STAGE_ROOT}/NETfishing.sh" -grep -Fq 'pm_finish' "${STAGE_ROOT}/NETfishing.sh" + "${STAGE_ROOT}/straywild.sh" +grep -Fq 'pm_finish' "${STAGE_ROOT}/straywild.sh" if [[ "$(grep -Ec '^[[:space:]]*\$GPTOKEYB[[:space:]]' \ - "${STAGE_ROOT}/NETfishing.sh")" -ne 1 ]]; then - echo "NETfishing must start exactly one GPTOKEYB exit handler." >&2 + "${STAGE_ROOT}/straywild.sh")" -ne 1 ]]; then + echo "straywild must start exactly one GPTOKEYB exit handler." >&2 exit 1 fi readonly GPTOKEYB_NOOP_KEYS=( @@ -303,13 +303,13 @@ readonly GPTOKEYB_NOOP_KEYS=( for noop_key in "${GPTOKEYB_NOOP_KEYS[@]}"; do if ! grep -Eq \ "^[[:space:]]*${noop_key}[[:space:]]*=[[:space:]]*\\\\\"[[:space:]]*$" \ - "${GAME_ROOT}/netfishing.gptk"; then + "${GAME_ROOT}/straywild.gptk"; then echo "GPTOKEYB no-op mapping is missing: ${noop_key}" >&2 exit 1 fi done if [[ "$(grep -Ec '^[[:space:]]*[a-z0-9_]+[[:space:]]*=' \ - "${GAME_ROOT}/netfishing.gptk")" -ne "${#GPTOKEYB_NOOP_KEYS[@]}" ]]; then + "${GAME_ROOT}/straywild.gptk")" -ne "${#GPTOKEYB_NOOP_KEYS[@]}" ]]; then echo "GPTOKEYB no-op mapping contains an unexpected assignment." >&2 exit 1 fi diff --git a/scripts/import_animalese_voice.sh b/scripts/import_animalese_voice.sh index cb7eded..b9076ca 100755 --- a/scripts/import_animalese_voice.sh +++ b/scripts/import_animalese_voice.sh @@ -35,10 +35,10 @@ if [[ ! "$SAMPLE_SET_DIRECTORY" =~ ^[a-z0-9_-]+$ ]]; then fi readonly DESTINATION_DIRECTORY="$PROJECT_ROOT/sound/dialogue/animalese/$SAMPLE_SET_DIRECTORY" -readonly WORK_DIRECTORY="$(mktemp -d -t netfishing-animalese-import.XXXXXX)" +readonly WORK_DIRECTORY="$(mktemp -d -t straywild-animalese-import.XXXXXX)" cleanup() { - if [[ "$WORK_DIRECTORY" == /tmp/netfishing-animalese-import.* ]]; then + if [[ "$WORK_DIRECTORY" == /tmp/straywild-animalese-import.* ]]; then find "$WORK_DIRECTORY" -depth -delete fi } diff --git a/scripts/normalize_texture_profiles.sh b/scripts/normalize_texture_profiles.sh index 1483a61..0551efd 100755 --- a/scripts/normalize_texture_profiles.sh +++ b/scripts/normalize_texture_profiles.sh @@ -13,7 +13,7 @@ fi readonly ROOT_PATH="$1" -readonly WORK_ROOT="$(mktemp -d -t netfishing-godot-data.XXXXXX)" +readonly WORK_ROOT="$(mktemp -d -t straywild-godot-data.XXXXXX)" trap 'rm -rf -- "${WORK_ROOT}"' EXIT cd "${PROJECT_ROOT}" diff --git a/scripts/portmaster/gameinfo.xml b/scripts/portmaster/gameinfo.xml index ef608bd..1b0a1c7 100755 --- a/scripts/portmaster/gameinfo.xml +++ b/scripts/portmaster/gameinfo.xml @@ -1,13 +1,13 @@ - ./NETfishing.sh - NETfishing + ./straywild.sh + straywild A relaxed multiplayer fishing game about exploring a small island, catching and collecting fish, customizing your character, and spending time by the water. 20260804T000000 - NETfishing project + straywild project Independent adventure, simulation - ./netfishing/screenshot.png + ./straywild/screenshot.png diff --git a/scripts/portmaster/launch-netfishing.sh b/scripts/portmaster/launch-straywild.sh similarity index 100% rename from scripts/portmaster/launch-netfishing.sh rename to scripts/portmaster/launch-straywild.sh diff --git a/scripts/portmaster/port.json b/scripts/portmaster/port.json index affc601..4c36648 100644 --- a/scripts/portmaster/port.json +++ b/scripts/portmaster/port.json @@ -1,13 +1,13 @@ { "version": 4, - "name": "netfishing.zip", + "name": "straywild.zip", "items": [ - "NETfishing.sh", - "netfishing/" + "straywild.sh", + "straywild/" ], "items_opt": null, "attr": { - "title": "NETfishing", + "title": "straywild", "porter": [ "Voyager" ], diff --git a/scripts/portmaster/netfishing.gptk b/scripts/portmaster/straywild.gptk similarity index 87% rename from scripts/portmaster/netfishing.gptk rename to scripts/portmaster/straywild.gptk index ff1ad36..2e8602e 100644 --- a/scripts/portmaster/netfishing.gptk +++ b/scripts/portmaster/straywild.gptk @@ -1,4 +1,4 @@ -# NETfishing reads the controller directly. GPTOKEYB is retained only for its +# straywild reads the controller directly. GPTOKEYB is retained only for its # device-specific force-quit chord, so every keyboard and mouse binding is # disabled to prevent duplicate input. diff --git a/scripts/portmaster/NETfishing.sh b/scripts/portmaster/straywild.sh similarity index 70% rename from scripts/portmaster/NETfishing.sh rename to scripts/portmaster/straywild.sh index 8e118da..58e17b3 100755 --- a/scripts/portmaster/NETfishing.sh +++ b/scripts/portmaster/straywild.sh @@ -16,35 +16,35 @@ source "$controlfolder/control.txt" [ -f "${controlfolder}/mod_${CFW_NAME}.txt" ] && source "${controlfolder}/mod_${CFW_NAME}.txt" get_controls -GAMEDIR="/${directory}/ports/netfishing" +GAMEDIR="/${directory}/ports/straywild" CONFDIR="$GAMEDIR/conf" -PORTS_ROOT="${GAMEDIR%/netfishing}" -SAVEDIR="$PORTS_ROOT/saves/netfishing" -DATA_BOOTSTRAP_DIR="$CONFDIR/data/godot/app_userdata/NETFISHING" -GAME_EXECUTABLE="$GAMEDIR/NETfishing.aarch64" -GAME_LAUNCHER="$GAMEDIR/launch-netfishing.sh" -GPTOKEYB_CONFIG="$GAMEDIR/netfishing.gptk" +PORTS_ROOT="${GAMEDIR%/straywild}" +SAVEDIR="$PORTS_ROOT/saves/straywild" +DATA_BOOTSTRAP_DIR="$CONFDIR/data/godot/app_userdata/straywild" +GAME_EXECUTABLE="$GAMEDIR/straywild.aarch64" +GAME_LAUNCHER="$GAMEDIR/launch-straywild.sh" +GPTOKEYB_CONFIG="$GAMEDIR/straywild.gptk" CONTROLLER_MAPPING_FILE="$CONFDIR/cache/controller_mapping.txt" -WESTON_DIR="/tmp/netfishing-weston" +WESTON_DIR="/tmp/straywild-weston" WESTON_RUNTIME="weston_pkg_0.2" HARBOURMASTER="$controlfolder/harbourmaster" mkdir -p "$CONFDIR/data" "$CONFDIR/config" "$CONFDIR/cache" "$WESTON_DIR" chmod +x "$GAME_EXECUTABLE" -# NETfishing uses a predictable save directory beside the port instead of +# straywild uses a predictable save directory beside the port instead of # presenting a folder picker on a small screen. Preserve an established # data-root choice when upgrading an existing installation. -NETFISHING_DATA_ENVIRONMENT=() -if [ -f "$SAVEDIR/netfishing_data.json" ] || { +straywild_DATA_ENVIRONMENT=() +if [ -f "$SAVEDIR/straywild_data.json" ] || { [ ! -f "$DATA_BOOTSTRAP_DIR/data_root_bootstrap.json" ] && [ ! -f "$DATA_BOOTSTRAP_DIR/data_root_bootstrap.json.backup" ] }; then mkdir -p "$SAVEDIR" - NETFISHING_DATA_ENVIRONMENT+=( - "NETFISHING_DATA_DIR=$SAVEDIR" - "NETFISHING_CREATE_DATA_DIR=1" + straywild_DATA_ENVIRONMENT+=( + "straywild_DATA_DIR=$SAVEDIR" + "straywild_CREATE_DATA_DIR=1" ) fi @@ -52,7 +52,7 @@ fi if [ ! -f "$controlfolder/libs/${WESTON_RUNTIME}.squashfs" ]; then if [ ! -x "$HARBOURMASTER" ]; then - pm_message "NETfishing requires the latest PortMaster and WestonPack runtime." + pm_message "straywild requires the latest PortMaster and WestonPack runtime." sleep 5 exit 1 fi @@ -78,17 +78,17 @@ cd "$GAMEDIR" || exit 1 GODOT_MUOS_MAPPING="19004ca6010000000100000000010000,muOS-Keys,a:b0,b:b1,x:b3,y:b2,leftshoulder:b4,rightshoulder:b5,lefttrigger:b10,righttrigger:b11,guide:b8,start:b7,back:b6,dpup:h0.1,dpleft:h0.8,dpright:h0.2,dpdown:h0.4,leftx:a0,lefty:a1,leftstick:b9,rightx:a2,righty:a3,rightstick:b12,platform:Linux," MUOS_SDL2_GUID="19000000010000000100000000010000" if [[ "$sdl_controllerconfig" == "${MUOS_SDL2_GUID},"* ]]; then - netfishing_controllerconfig="$GODOT_MUOS_MAPPING" + straywild_controllerconfig="$GODOT_MUOS_MAPPING" elif [ -n "$sdl_controllerconfig" ]; then - netfishing_controllerconfig="$sdl_controllerconfig" + straywild_controllerconfig="$sdl_controllerconfig" else - netfishing_controllerconfig="$GODOT_MUOS_MAPPING" + straywild_controllerconfig="$GODOT_MUOS_MAPPING" fi -printf '%s\n' "$netfishing_controllerconfig" > "$CONTROLLER_MAPPING_FILE" +printf '%s\n' "$straywild_controllerconfig" > "$CONTROLLER_MAPPING_FILE" -NETFISHING_GODOT_OPTIONS=() -NETFISHING_GAME_ENVIRONMENT=() -PERFORMANCE_PROFILE="${NETFISHING_PERFORMANCE_PROFILE:-}" +straywild_GODOT_OPTIONS=() +straywild_GAME_ENVIRONMENT=() +PERFORMANCE_PROFILE="${straywild_PERFORMANCE_PROFILE:-}" PROFILE_PATH="$CONFDIR/performance_profile" if [[ -z "$PERFORMANCE_PROFILE" && -r "$PROFILE_PATH" ]]; then IFS= read -r PERFORMANCE_PROFILE < "$PROFILE_PATH" || true @@ -96,16 +96,16 @@ if [[ -z "$PERFORMANCE_PROFILE" && -r "$PROFILE_PATH" ]]; then fi case "$PERFORMANCE_PROFILE" in normal) - NETFISHING_GAME_ENVIRONMENT+=( - "NETFISHING_PERFORMANCE_PROFILE=normal" + straywild_GAME_ENVIRONMENT+=( + "straywild_PERFORMANCE_PROFILE=normal" ) ;; light|"") - NETFISHING_GAME_ENVIRONMENT+=( - "NETFISHING_PERFORMANCE_PROFILE=light" - "NETFISHING_LOW_END=1" + straywild_GAME_ENVIRONMENT+=( + "straywild_PERFORMANCE_PROFILE=light" + "straywild_LOW_END=1" ) - NETFISHING_GODOT_OPTIONS+=( + straywild_GODOT_OPTIONS+=( --single-window --disable-vsync --max-fps 30 @@ -114,11 +114,11 @@ case "$PERFORMANCE_PROFILE" in ;; *) echo "Unknown performance profile '$PERFORMANCE_PROFILE'; using light." >&2 - NETFISHING_GAME_ENVIRONMENT+=( - "NETFISHING_PERFORMANCE_PROFILE=light" - "NETFISHING_LOW_END=1" + straywild_GAME_ENVIRONMENT+=( + "straywild_PERFORMANCE_PROFILE=light" + "straywild_LOW_END=1" ) - NETFISHING_GODOT_OPTIONS+=( + straywild_GODOT_OPTIONS+=( --single-window --disable-vsync --max-fps 30 @@ -127,10 +127,10 @@ case "$PERFORMANCE_PROFILE" in ;; esac -# NETfishing reads gameplay input natively. The explicit no-op map prevents +# straywild reads gameplay input natively. The explicit no-op map prevents # GPTOKEYB from injecting duplicate keyboard or mouse input while retaining # its device-specific force-quit chord, including on ROCKNIX. -$GPTOKEYB "NETfishing.aarch64" -c "$GPTOKEYB_CONFIG" & +$GPTOKEYB "straywild.aarch64" -c "$GPTOKEYB_CONFIG" & pm_platform_helper "$GAME_EXECUTABLE" $ESUDO env CRUSTY_RESOLUTION="${DISPLAY_WIDTH}x${DISPLAY_HEIGHT}" \ @@ -139,12 +139,12 @@ $ESUDO env CRUSTY_RESOLUTION="${DISPLAY_WIDTH}x${DISPLAY_HEIGHT}" \ XDG_CONFIG_HOME="$CONFDIR/config" \ XDG_CACHE_HOME="$CONFDIR/cache" \ GODOT_SILENCE_ROOT_WARNING=1 \ - "${NETFISHING_DATA_ENVIRONMENT[@]}" \ - "${NETFISHING_GAME_ENVIRONMENT[@]}" \ + "${straywild_DATA_ENVIRONMENT[@]}" \ + "${straywild_GAME_ENVIRONMENT[@]}" \ "$GAME_LAUNCHER" \ "$CONTROLLER_MAPPING_FILE" \ "$GAME_EXECUTABLE" \ - "${NETFISHING_GODOT_OPTIONS[@]}" \ + "${straywild_GODOT_OPTIONS[@]}" \ --resolution "${DISPLAY_WIDTH}x${DISPLAY_HEIGHT}" \ --fullscreen \ --rendering-driver opengl3_es \ diff --git a/scripts/run_validations.sh b/scripts/run_validations.sh index 2ebaeff..5d15b8e 100755 --- a/scripts/run_validations.sh +++ b/scripts/run_validations.sh @@ -6,9 +6,9 @@ readonly SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" readonly PROJECT_ROOT="$(cd -- "${SCRIPT_DIR}/.." && pwd)" readonly GODOT_BIN="${GODOT_BIN:-godot}" readonly TEST_TIMEOUT_SECONDS="${TEST_TIMEOUT_SECONDS:-120}" -readonly RUN_ROOT="$(mktemp -d -t netfishing-validations.XXXXXX)" +readonly RUN_ROOT="$(mktemp -d -t straywild-validations.XXXXXX)" -export NETFISHING_ISOLATED_VALIDATION_STORAGE=1 +export straywild_ISOLATED_VALIDATION_STORAGE=1 readonly -a QUICK_TESTS=( "scripts/validate_animalese_samples.gd" diff --git a/scripts/setup_android_build.sh b/scripts/setup_android_build.sh index c1cebdc..bc96083 100755 --- a/scripts/setup_android_build.sh +++ b/scripts/setup_android_build.sh @@ -336,8 +336,8 @@ check_editor_settings() { run_export_hint() { echo echo "Example export commands:" - echo " ${GODOT} --headless --path \"$PROJECT_ROOT\" --export-release \"Android\" builds/${PROJECT_VERSION}/android/NETfishing.apk" - echo " ${GODOT} --headless --path \"$PROJECT_ROOT\" --export-debug \"Android\" builds/android/NETfishing-debug.apk" + echo " ${GODOT} --headless --path \"$PROJECT_ROOT\" --export-release \"Android\" builds/${PROJECT_VERSION}/android/straywild.apk" + echo " ${GODOT} --headless --path \"$PROJECT_ROOT\" --export-debug \"Android\" builds/android/straywild-debug.apk" } print_status INFO "Starting Android dependency preflight..." diff --git a/scripts/test_player_data_root_paths.gd b/scripts/test_player_data_root_paths.gd index 69a2485..f357b9a 100644 --- a/scripts/test_player_data_root_paths.gd +++ b/scripts/test_player_data_root_paths.gd @@ -1,36 +1,36 @@ extends SceneTree -const PROJECT_PATH := "/tmp/netfishing" -const INSTALL_PATH := "/opt/NETfishing" +const PROJECT_PATH := "/tmp/straywild" +const INSTALL_PATH := "/opt/straywild" func _initialize() -> void: - var root_to_create: String = OS.get_environment("NETFISHING_TEST_CREATE_ROOT") + var root_to_create: String = OS.get_environment("straywild_TEST_CREATE_ROOT") if not root_to_create.is_empty(): _create_validation_root(root_to_create) return var failures: PackedStringArray = [] _expect( "external temporary directory", - "/tmp/NETfishing-test-data", + "/tmp/straywild-test-data", PlayerDataRoot.PATH_ALLOWED, failures, ) _expect( "external trailing slash", - "/tmp/NETfishing-test-data/", + "/tmp/straywild-test-data/", PlayerDataRoot.PATH_ALLOWED, failures, ) _expect( "similar project-name sibling", - "/tmp/netfishing-data", + "/tmp/straywild-data", PlayerDataRoot.PATH_ALLOWED, failures, ) _expect( "documents directory", - "/home/player/Documents/NETfishing", + "/home/player/Documents/straywild", PlayerDataRoot.PATH_ALLOWED, failures, ) @@ -55,7 +55,7 @@ func _initialize() -> void: ) _expect_with_references( "empty project reference", - "/tmp/NETfishing-test-data", + "/tmp/straywild-test-data", "", INSTALL_PATH, PlayerDataRoot.PATH_ALLOWED, @@ -63,7 +63,7 @@ func _initialize() -> void: ) _expect_with_references( "root project reference", - "/tmp/NETfishing-test-data", + "/tmp/straywild-test-data", "/", INSTALL_PATH, PlayerDataRoot.PATH_ALLOWED, @@ -71,9 +71,9 @@ func _initialize() -> void: ) _expect_with_references( "Windows component and case normalization", - "C:\\Games\\NETfishing Data", - "C:\\Games\\NETfishing", - "C:\\Program Files\\NETfishing", + "C:\\Games\\straywild Data", + "C:\\Games\\straywild", + "C:\\Program Files\\straywild", PlayerDataRoot.PATH_ALLOWED, failures, true, diff --git a/server/dedicated_server_config.gd b/server/dedicated_server_config.gd index 2f515c4..623e7c3 100644 --- a/server/dedicated_server_config.gd +++ b/server/dedicated_server_config.gd @@ -1,7 +1,7 @@ class_name DedicatedServerConfig extends RefCounted -const DEFAULT_NAME: String = "NETfishing Dedicated Server" +const DEFAULT_NAME: String = "straywild Dedicated Server" const DEFAULT_BIND_ADDRESS: String = "*" const DEFAULT_PORT: int = 7777 const DEFAULT_MAX_PLAYERS: int = 8 @@ -32,7 +32,7 @@ static func from_runtime() -> DedicatedServerConfig: "network/discovery/base_url", "" )).strip_edges() var config_path: String = OS.get_environment( - "NETFISHING_SERVER_CONFIG" + "straywild_SERVER_CONFIG" ).strip_edges() for argument: String in OS.get_cmdline_user_args(): if argument.begins_with("--config="): @@ -87,36 +87,36 @@ func _load_file(path: String) -> bool: func _apply_environment() -> void: server_name = _environment_string( - "NETFISHING_SERVER_NAME", server_name + "straywild_SERVER_NAME", server_name ) bind_address = _environment_string( - "NETFISHING_SERVER_BIND", bind_address + "straywild_SERVER_BIND", bind_address ) - port = _environment_int("NETFISHING_SERVER_PORT", port) + port = _environment_int("straywild_SERVER_PORT", port) max_players = _environment_int( - "NETFISHING_SERVER_MAX_PLAYERS", max_players + "straywild_SERVER_MAX_PLAYERS", max_players ) world_seed = _environment_int( - "NETFISHING_WORLD_SEED", world_seed + "straywild_WORLD_SEED", world_seed ) public_listing = _environment_bool( - "NETFISHING_SERVER_PUBLIC", public_listing + "straywild_SERVER_PUBLIC", public_listing ) discovery_url = _environment_string( - "NETFISHING_DISCOVERY_URL", discovery_url + "straywild_DISCOVERY_URL", discovery_url ) data_directory = _environment_string( - "NETFISHING_DATA_DIR", data_directory + "straywild_DATA_DIR", data_directory ) chat_logging = _environment_bool( - "NETFISHING_CHAT_LOGGING", chat_logging + "straywild_CHAT_LOGGING", chat_logging ) chat_log_path = _environment_string( - "NETFISHING_CHAT_LOG_PATH", chat_log_path + "straywild_CHAT_LOG_PATH", chat_log_path ) - if OS.has_environment("NETFISHING_SERVER_OPERATORS"): + if OS.has_environment("straywild_SERVER_OPERATORS"): operator_fingerprints = _parse_fingerprint_list( - OS.get_environment("NETFISHING_SERVER_OPERATORS") + OS.get_environment("straywild_SERVER_OPERATORS") ) diff --git a/settings/player_settings_manager.gd b/settings/player_settings_manager.gd index 3fd2a35..362abc9 100644 --- a/settings/player_settings_manager.gd +++ b/settings/player_settings_manager.gd @@ -7,7 +7,7 @@ const TEMP_PATH: String = "user://player_settings.json.tmp" const BACKUP_PATH: String = "user://player_settings.json.backup" const SILENT_VOLUME_DB: float = -80.0 const HEADLESS_WRITE_ENVIRONMENT: String = ( - "NETFISHING_ISOLATED_VALIDATION_STORAGE" + "straywild_ISOLATED_VALIDATION_STORAGE" ) signal settings_changed(settings: PlayerSettings) diff --git a/tests/character_rig_validation.gd b/tests/character_rig_validation.gd index c8fc57d..2aece2b 100644 --- a/tests/character_rig_validation.gd +++ b/tests/character_rig_validation.gd @@ -2,7 +2,7 @@ extends SceneTree const CHARACTER_SCENE: PackedScene = preload( - "res://art/exported/characters/base/netfishing_base_character.glb" + "res://art/exported/characters/base/straywild_base_character.glb" ) const EXPECTED_ANIMATIONS: Array[StringName] = [ diff --git a/tests/controller_mapping_validation.gd b/tests/controller_mapping_validation.gd index 3a4645a..a5938d6 100644 --- a/tests/controller_mapping_validation.gd +++ b/tests/controller_mapping_validation.gd @@ -278,7 +278,7 @@ func _validate_manager(manager: ControllerMappingManagerType) -> String: func _validate_portmaster_launcher() -> String: - const launcher_path: String = "res://scripts/portmaster/NETfishing.sh" + const launcher_path: String = "res://scripts/portmaster/straywild.sh" if not FileAccess.file_exists(launcher_path): return "PortMaster launcher template is missing" var launcher: String = FileAccess.get_file_as_string(launcher_path) @@ -291,9 +291,9 @@ func _validate_portmaster_launcher() -> String: "guide:b8,start:b7,back:b6", "leftstick:b9", "rightstick:b12", - "netfishing_controllerconfig=\"$GODOT_MUOS_MAPPING\"", - "GPTOKEYB_CONFIG=\"$GAMEDIR/netfishing.gptk\"", - "$GPTOKEYB \"NETfishing.aarch64\" -c \"$GPTOKEYB_CONFIG\" &", + "straywild_controllerconfig=\"$GODOT_MUOS_MAPPING\"", + "GPTOKEYB_CONFIG=\"$GAMEDIR/straywild.gptk\"", + "$GPTOKEYB \"straywild.aarch64\" -c \"$GPTOKEYB_CONFIG\" &", "pm_platform_helper \"$GAME_EXECUTABLE\"", "\"$GAME_LAUNCHER\"", "\"$CONTROLLER_MAPPING_FILE\"", @@ -304,7 +304,7 @@ func _validate_portmaster_launcher() -> String: if "$'\\n'" in launcher: return "PortMaster launcher appends mappings across a Weston-unsafe newline" const game_launcher_path: String = ( - "res://scripts/portmaster/launch-netfishing.sh" + "res://scripts/portmaster/launch-straywild.sh" ) if not FileAccess.file_exists(game_launcher_path): return "PortMaster game launcher wrapper is missing" diff --git a/tests/controller_menu_accessibility_validation.gd b/tests/controller_menu_accessibility_validation.gd index 70d2095..aa2f9e2 100644 --- a/tests/controller_menu_accessibility_validation.gd +++ b/tests/controller_menu_accessibility_validation.gd @@ -122,8 +122,38 @@ func _validate_primary_menu_navigation() -> void: _expect( play_button.icon != null and play_button.icon.resource_path - == "res://ui/icons/main_menu/continue.png", - "The Play action does not use the original Continue icon.", + == "res://ui/icons/new_menu/play.png" + and play_button.text.is_empty(), + "The Play action is not presented as the large square icon button.", + ) + _expect( + is_equal_approx(play_button.size.x, play_button.size.y), + "The Play action is not square.", + ) + var online_button := title.get_node("%JoinGameButton") as Button + var settings_button := title.get_node("%SettingsButton") as Button + var credits_button := title.get_node("%CreditsButton") as Button + var close_button := title.get_node("%QuitButton") as Button + for secondary_button: Button in [ + online_button, + settings_button, + credits_button, + close_button, + ]: + _expect( + is_equal_approx( + secondary_button.size.x, + secondary_button.size.y, + ), + "A secondary title action is not square.", + ) + _expect( + is_equal_approx( + close_button.position.y + close_button.size.y + - online_button.position.y, + play_button.size.y, + ), + "The secondary title-action stack does not match Play's height.", ) _expect( not (title.get_node("%NewGameButton") as Control).visible @@ -131,24 +161,29 @@ func _validate_primary_menu_navigation() -> void: "Legacy New/Delete title bubbles are still visible.", ) _assert_neighbor( - title.get_node("%JoinGameButton") as Control, - &"focus_neighbor_right", play_button, + &"focus_neighbor_right", + title.get_node("%JoinGameButton") as Control, + ) + _assert_neighbor( + title.get_node("%JoinGameButton") as Control, + &"focus_neighbor_left", + play_button, + ) + _assert_neighbor( + title.get_node("%JoinGameButton") as Control, + &"focus_neighbor_bottom", + title.get_node("%SettingsButton") as Control, ) _assert_neighbor( title.get_node("%SettingsButton") as Control, - &"focus_neighbor_left", - play_button, + &"focus_neighbor_bottom", + title.get_node("%CreditsButton") as Control, ) _assert_neighbor( title.get_node("%CreditsButton") as Control, - &"focus_neighbor_right", - play_button, - ) - _assert_neighbor( + &"focus_neighbor_bottom", title.get_node("%QuitButton") as Control, - &"focus_neighbor_left", - play_button, ) for title_control: Control in title_controls: _assert_directionally_reachable(title_control, title_controls) @@ -1196,12 +1231,12 @@ func _validate_profile_voice_navigation() -> void: kat_down != null and pitch_grid.is_ancestor_of(kat_down), "Down from the voice-set row does not enter the pitch row.", ) - if OS.has_environment("NETFISHING_PROFILE_VOICE_CAPTURE"): + if OS.has_environment("straywild_PROFILE_VOICE_CAPTURE"): await RenderingServer.frame_post_draw var capture := root.get_viewport().get_texture().get_image() _expect( capture.save_png(OS.get_environment( - "NETFISHING_PROFILE_VOICE_CAPTURE" + "straywild_PROFILE_VOICE_CAPTURE" )) == OK, "The profile voice-page capture could not be saved.", ) diff --git a/tests/controller_ui_navigation_validation.gd b/tests/controller_ui_navigation_validation.gd index e1169f9..24f39f9 100644 --- a/tests/controller_ui_navigation_validation.gd +++ b/tests/controller_ui_navigation_validation.gd @@ -266,22 +266,22 @@ func _validate_four_by_three_centering() -> void: func _validate_low_end_profile_contract() -> void: var launcher: String = FileAccess.get_file_as_string( - "res://scripts/portmaster/NETfishing.sh" + "res://scripts/portmaster/straywild.sh" ) - assert(launcher.contains("NETFISHING_PERFORMANCE_PROFILE:-")) + assert(launcher.contains("straywild_PERFORMANCE_PROFILE:-")) assert(launcher.contains("$CONFDIR/performance_profile")) assert(launcher.contains("normal)")) assert(launcher.contains("light|\"\")")) - assert(launcher.contains("NETFISHING_PERFORMANCE_PROFILE=normal")) - assert(launcher.contains("NETFISHING_PERFORMANCE_PROFILE=light")) - assert(launcher.contains("NETFISHING_LOW_END=1")) + assert(launcher.contains("straywild_PERFORMANCE_PROFILE=normal")) + assert(launcher.contains("straywild_PERFORMANCE_PROFILE=light")) + assert(launcher.contains("straywild_LOW_END=1")) assert(launcher.contains("--max-fps 30")) assert(launcher.contains("--audio-output-latency 40")) var builder: String = FileAccess.get_file_as_string( "res://scripts/build_portmaster.sh" ) assert(builder.contains("prepare_portmaster_assets.sh")) - assert(builder.contains("netfishing-portmaster-export")) + assert(builder.contains("straywild-portmaster-export")) var asset_profile: String = FileAccess.get_file_as_string( "res://scripts/prepare_portmaster_assets.sh" ) diff --git a/tests/dedicated_server_config_validation.gd b/tests/dedicated_server_config_validation.gd index 02a881d..2125220 100644 --- a/tests/dedicated_server_config_validation.gd +++ b/tests/dedicated_server_config_validation.gd @@ -15,7 +15,7 @@ func _initialize() -> void: func _run() -> void: var defaults := ConfigType.new() - defaults.set("data_directory", "/tmp/netfishing-server") + defaults.set("data_directory", "/tmp/straywild-server") defaults.call("_validate") assert(defaults.is_valid()) assert(not bool(defaults.get("public_listing"))) @@ -37,7 +37,7 @@ func _run() -> void: file.set_value("world", "seed", 928374) file.set_value("server", "public", true) file.set_value("server", "data_directory", "/tmp/configured-server") - file.set_value("discovery", "url", "https://discovery.netfishing.org/") + file.set_value("discovery", "url", "https://discovery.straywild.io/") file.set_value("privacy", "chat_logging", true) file.set_value( "privacy", @@ -59,7 +59,7 @@ func _run() -> void: assert(int(configured.get("max_players")) == 12) assert(int(configured.get("world_seed")) == 928374) assert(bool(configured.get("public_listing"))) - assert(str(configured.get("discovery_url")) == "https://discovery.netfishing.org") + assert(str(configured.get("discovery_url")) == "https://discovery.straywild.io") assert(bool(configured.get("chat_logging"))) assert( str(configured.get("chat_log_path")) diff --git a/tests/fish_hotbar_showcase_validation.gd b/tests/fish_hotbar_showcase_validation.gd index c2d687c..753f480 100644 --- a/tests/fish_hotbar_showcase_validation.gd +++ b/tests/fish_hotbar_showcase_validation.gd @@ -197,7 +197,7 @@ func _run() -> void: var invalid_state: Dictionary = valid_state.duplicate(true) invalid_state["display_scale"] = 1000.0 assert(not NetworkFishShowcaseProtocol.validate_state(invalid_state)) - assert(NetworkProtocol.PROTOCOL_VERSION == 10) + assert(NetworkProtocol.PROTOCOL_VERSION == 11) assert(NetworkProtocol.ENET_CHANNEL_COUNT == 17) assert( NetworkProtocol.FISH_QUALITY_CAPABILITY diff --git a/tests/fish_quality_validation.gd b/tests/fish_quality_validation.gd index 3441344..b6e6bfd 100644 --- a/tests/fish_quality_validation.gd +++ b/tests/fish_quality_validation.gd @@ -26,7 +26,7 @@ func _run() -> void: _validate_collection_mastery() _validate_version_four_migration() _validate_fishing_protocol_v2() - assert(NetworkProtocol.PROTOCOL_VERSION == 10) + assert(NetworkProtocol.PROTOCOL_VERSION == 11) assert(NetworkProtocol.ENET_CHANNEL_COUNT == 17) assert(NetworkProtocol.MOVEMENT_ANIMATION_CHANNEL == 11) assert( diff --git a/tests/inventory_notepad_art_validation.gd b/tests/inventory_notepad_art_validation.gd index c42883c..d871b49 100644 --- a/tests/inventory_notepad_art_validation.gd +++ b/tests/inventory_notepad_art_validation.gd @@ -666,7 +666,7 @@ func _to_screen_rect( func _capture_inventory_pages(player_menu: PlayerMenu) -> void: - if not OS.has_environment("NETFISHING_NOTEPAD_CAPTURE"): + if not OS.has_environment("straywild_NOTEPAD_CAPTURE"): return player_menu.visible = true var sections: Array[PlayerMenu.Section] = [ @@ -700,7 +700,7 @@ func _capture_inventory_pages(player_menu: PlayerMenu) -> void: func _save_capture(suffix: String) -> void: var image: Image = root.get_texture().get_image() var path: String = "%s-%s.png" % [ - OS.get_environment("NETFISHING_NOTEPAD_CAPTURE"), + OS.get_environment("straywild_NOTEPAD_CAPTURE"), suffix, ] assert(image.save_png(path) == OK) diff --git a/tests/light_performance_profile_validation.gd b/tests/light_performance_profile_validation.gd index f56db35..6a654f1 100644 --- a/tests/light_performance_profile_validation.gd +++ b/tests/light_performance_profile_validation.gd @@ -123,7 +123,6 @@ func _validate_main_profile(main: Node) -> void: var game_ui := main.get_node("%GameUI") as GameUI var title_screen := game_ui.get_title_screen() assert(title_screen != null) - assert(not title_screen.is_decorative_presentation_active()) var player_menu := game_ui.get("_player_menu") as PlayerMenu assert(player_menu != null) assert(not player_menu.is_cooler_water_effect_enabled()) @@ -159,8 +158,6 @@ func _validate_normal_profile(main: Node) -> void: var game_ui := main.get_node("%GameUI") as GameUI var title_screen := game_ui.get_title_screen() assert(title_screen != null) - assert(title_screen.is_decorative_presentation_active()) - assert(title_screen.is_decorative_bubble_scheduler_active()) var player_menu := game_ui.get("_player_menu") as PlayerMenu assert(player_menu != null) assert(player_menu.is_cooler_water_effect_enabled()) diff --git a/tests/logbook_runtime_validation.gd b/tests/logbook_runtime_validation.gd index 8b19f92..75fc47f 100644 --- a/tests/logbook_runtime_validation.gd +++ b/tests/logbook_runtime_validation.gd @@ -201,13 +201,13 @@ func _add_test_catch(player: Player, fish: FishData) -> void: func _capture_if_requested(suffix: String) -> void: - if not OS.has_environment("NETFISHING_LOGBOOK_CAPTURE"): + if not OS.has_environment("straywild_LOGBOOK_CAPTURE"): return await process_frame await process_frame var image: Image = root.get_texture().get_image() var path: String = ( - OS.get_environment("NETFISHING_LOGBOOK_CAPTURE") + OS.get_environment("straywild_LOGBOOK_CAPTURE") + suffix + ".png" ) diff --git a/tests/logbook_validation.gd b/tests/logbook_validation.gd index 49b9459..4810e0a 100644 --- a/tests/logbook_validation.gd +++ b/tests/logbook_validation.gd @@ -23,11 +23,11 @@ func _initialize() -> void: func _run() -> void: - if OS.has_environment("NETFISHING_TEST_CREATE_ROOT"): + if OS.has_environment("straywild_TEST_CREATE_ROOT"): var data_root := PlayerDataRoot.new() root.add_child(data_root) var result: Dictionary = data_root.create_unbound_root( - OS.get_environment("NETFISHING_TEST_CREATE_ROOT") + OS.get_environment("straywild_TEST_CREATE_ROOT") ) assert(bool(result.get("ok", false))) data_root.queue_free() diff --git a/tests/manual/terrain_chunk_generator/terrain_chunk_generator_test.tscn b/tests/manual/terrain_chunk_generator/terrain_chunk_generator_test.tscn index df3a835..5c1e046 100644 --- a/tests/manual/terrain_chunk_generator/terrain_chunk_generator_test.tscn +++ b/tests/manual/terrain_chunk_generator/terrain_chunk_generator_test.tscn @@ -4,7 +4,7 @@ [ext_resource type="Script" path="res://world/generation/terrain_chunk_generator.gd" id="2_generator"] [ext_resource type="Resource" path="res://world/generation/chunks/terrain_chunk_catalog.tres" id="3_catalog"] [ext_resource type="PackedScene" path="res://player/player.tscn" id="4_player"] -[ext_resource type="Environment" path="res://world/environment/netfishing_environment.tres" id="5_environment"] +[ext_resource type="Environment" path="res://world/environment/straywild_environment.tres" id="5_environment"] [node name="TerrainChunkGeneratorTest" type="Node3D"] script = ExtResource("1_test") diff --git a/tests/title_credits_validation.gd b/tests/title_credits_validation.gd index 5bbf632..e5ac4cc 100644 --- a/tests/title_credits_validation.gd +++ b/tests/title_credits_validation.gd @@ -21,6 +21,10 @@ func _run() -> void: var credits_button := title_screen.get_node( "%CreditsButton" ) as BubbleButton + var play_button := title_screen.get_node("%PlayButton") as BubbleButton + var continue_stats_drawer := title_screen.get_node( + "%ContinueStatsDrawer" + ) as RichTextLabel var credits_page := title_screen.get_node( "%CreditsPage" ) as TitleCreditsPageType @@ -34,9 +38,32 @@ func _run() -> void: await process_frame _expect(credits_button != null, "title menu exposes a credits button") + _expect(play_button != null, "title menu exposes the play button") + _expect( + continue_stats_drawer != null, + "play button owns a dedicated save-preview drawer", + ) + if play_button != null and continue_stats_drawer != null: + _expect( + continue_stats_drawer.get_parent() == play_button, + "save preview extends directly from the play button", + ) + _expect( + continue_stats_drawer.position.y < play_button.size.y + and ( + continue_stats_drawer.position.y + + continue_stats_drawer.size.y + ) > play_button.size.y, + "save preview overlaps the play edge and extends below it", + ) + _expect( + continue_stats_drawer.mouse_filter + == Control.MOUSE_FILTER_IGNORE, + "save preview drawer cannot intercept menu input", + ) _expect( credits_button.icon != null and credits_button.text.is_empty(), - "credits bubble uses its authored icon", + "credits action uses its icon in the square-button presentation", ) _expect(credits_page != null, "title screen contains the credits page") _expect(not credits_page.visible, "credits page starts closed") @@ -44,29 +71,39 @@ func _run() -> void: Rect2(Vector2.ZERO, bubble_field.size).encloses( Rect2(credits_button.position, credits_button.size) ), - "credits bubble stays inside the authored title field", + "credits button stays inside the authored title field", ) _expect( credits_button.mouse_filter == Control.MOUSE_FILTER_STOP, - "credits bubble accepts pointer input", + "credits button accepts pointer input", ) - if OS.has_environment("NETFISHING_TITLE_MENU_CAPTURE"): + if OS.has_environment("straywild_TITLE_MENU_CAPTURE"): (title_screen.get_node("%StartPromptCenter") as Control).hide() title_screen.set_process(true) await create_timer(0.5).timeout _expect( _save_capture( - OS.get_environment("NETFISHING_TITLE_MENU_CAPTURE") + OS.get_environment("straywild_TITLE_MENU_CAPTURE") ) == OK, "title menu validation capture saves successfully", ) title_screen.set_process(false) title_screen.set("_navigation_focus_active", false) + credits_button.call("_set_hovered", true) + credits_button.advance_emphasis(1.0) + _expect( + (credits_button.get_node("HoverDrawer") as Control).visible, + "pointer hover reveals the credits drawer before activation", + ) credits_button.pressed.emit() await process_frame _expect(credits_page.visible, "pointer activation opens credits") _expect(not presentation.visible, "credits replace the primary title menu") + _expect( + not (credits_button.get_node("HoverDrawer") as Control).visible, + "opening a title page collapses its hover drawer", + ) _expect( root.gui_get_focus_owner() != back_button, "pointer activation does not pseudo-select back", @@ -80,11 +117,11 @@ func _run() -> void: back_button.mouse_filter == Control.MOUSE_FILTER_STOP, "credits back button accepts pointer clicks", ) - if OS.has_environment("NETFISHING_CREDITS_CAPTURE"): + if OS.has_environment("straywild_CREDITS_CAPTURE"): await process_frame _expect( _save_capture( - OS.get_environment("NETFISHING_CREDITS_CAPTURE") + OS.get_environment("straywild_CREDITS_CAPTURE") ) == OK, "credits validation capture saves successfully", ) @@ -97,6 +134,30 @@ func _run() -> void: "pointer return leaves the title menu unfocused", ) + var online_button := title_screen.get_node( + "%JoinGameButton" + ) as BubbleButton + var join_game_page := title_screen.get_node("%JoinGamePage") as Control + online_button.call("_set_hovered", true) + online_button.advance_emphasis(1.0) + _expect( + (online_button.get_node("HoverDrawer") as Control).visible, + "pointer hover reveals the online drawer before activation", + ) + online_button.pressed.emit() + await process_frame + _expect(join_game_page.visible, "online activation opens the join page") + _expect( + not (online_button.get_node("HoverDrawer") as Control).visible, + "opening the join page collapses the online drawer", + ) + title_screen.call("_close_join_game") + await process_frame + _expect( + not (online_button.get_node("HoverDrawer") as Control).visible, + "returning from the join page does not restore stale pointer hover", + ) + title_screen.set("_navigation_focus_active", true) credits_button.grab_focus() credits_button.pressed.emit() @@ -134,7 +195,7 @@ func _run() -> void: _expect(not credits_page.visible, "ui cancel closes credits") _expect( root.gui_get_focus_owner() == credits_button, - "navigation return restores focus to the credits bubble", + "navigation return restores focus to the credits button", ) var chillnfill_name := credits_page.get_node( diff --git a/tests/ui_scaling_runtime_validation.gd b/tests/ui_scaling_runtime_validation.gd index b9e8bce..6e6182a 100644 --- a/tests/ui_scaling_runtime_validation.gd +++ b/tests/ui_scaling_runtime_validation.gd @@ -66,12 +66,6 @@ func _run() -> void: var pause_profile_stage := pause_menu.get_node( "ResponsivePauseStage" ) as Control - var decorative_fish_layer := title_screen.get_node( - "DecorativeFishLayer" - ) as Control - var decorative_bubble_layer := title_screen.get_node( - "DecorativeBubbleLayer" - ) as Control ui_viewport.add_child(game_ui) presenter.add_child(ui_viewport) root.add_child(presenter) @@ -165,26 +159,6 @@ func _run() -> void: assert(pause_profile_stage.position.is_equal_approx( expected_profile_position )) - assert(decorative_fish_layer.size.is_equal_approx( - expected_visible_size - )) - assert(decorative_bubble_layer.size.is_equal_approx( - expected_visible_size - )) - var left_to_right_bounds: Vector2 = ( - TitleScreen.get_decorative_fish_crossing_bounds( - expected_visible_size.x, 160.0, 1.0 - ) - ) - var right_to_left_bounds: Vector2 = ( - TitleScreen.get_decorative_fish_crossing_bounds( - expected_visible_size.x, 160.0, -1.0 - ) - ) - assert(left_to_right_bounds.x < -160.0) - assert(left_to_right_bounds.y > expected_visible_size.x) - assert(right_to_left_bounds.x > expected_visible_size.x) - assert(right_to_left_bounds.y < -160.0) assert(is_equal_approx(presenter.scale.x, presenter.scale.y)) assert(is_equal_approx(ui_root.scale.x, ui_root.scale.y)) var effective_scale: float = presenter.scale.x * ui_root.scale.x @@ -310,13 +284,13 @@ func _run() -> void: chat_panel.position.x * effective_scale, ] ) - if OS.has_environment("NETFISHING_UI_SCALE_CAPTURE"): + if OS.has_environment("straywild_UI_SCALE_CAPTURE"): await process_frame var capture: Image = root.get_texture().get_image() var capture_path: String = ( "%s-requested-%dx%d-actual-%dx%d.png" ) % [ - OS.get_environment("NETFISHING_UI_SCALE_CAPTURE"), + OS.get_environment("straywild_UI_SCALE_CAPTURE"), target_size.x, target_size.y, actual_size.x, diff --git a/tests/world_spawn_protocol_validation.gd b/tests/world_spawn_protocol_validation.gd index 29f7fde..a8365a1 100644 --- a/tests/world_spawn_protocol_validation.gd +++ b/tests/world_spawn_protocol_validation.gd @@ -16,7 +16,7 @@ const CalendarSeasonType = preload("res://world/calendar_season.gd") func _initialize() -> void: - assert(NetworkProtocol.PROTOCOL_VERSION == 10) + assert(NetworkProtocol.PROTOCOL_VERSION == 11) assert( NetworkWorldSpawnProtocol.CAPABILITY == NetworkProtocol.WORLD_SPAWN_CAPABILITY diff --git a/tests/world_time_validation.gd b/tests/world_time_validation.gd index 17ddb49..3caea2b 100644 --- a/tests/world_time_validation.gd +++ b/tests/world_time_validation.gd @@ -304,7 +304,7 @@ func _validate_environment_presentation() -> void: var sky := Sky.new() var sky_material := ShaderMaterial.new() sky_material.shader = preload( - "res://world/environment/netfishing_sky.gdshader" + "res://world/environment/straywild_sky.gdshader" ) sky.sky_material = sky_material environment.sky = sky @@ -352,7 +352,7 @@ func _validate_environment_presentation() -> void: "res://world/materials/stylized_water.gdshader" ) var sky_shader: Shader = preload( - "res://world/environment/netfishing_sky.gdshader" + "res://world/environment/straywild_sky.gdshader" ) assert("uniform float fog_horizon_occlusion" in sky_shader.code) assert("fog_horizon_color.rgb" in sky_shader.code) diff --git a/tests/world_weather_validation.gd b/tests/world_weather_validation.gd index 1f46adf..7bc5114 100644 --- a/tests/world_weather_validation.gd +++ b/tests/world_weather_validation.gd @@ -283,7 +283,7 @@ func _validate_weather_presentation() -> void: var sky := Sky.new() var sky_material := ShaderMaterial.new() sky_material.shader = preload( - "res://world/environment/netfishing_sky.gdshader" + "res://world/environment/straywild_sky.gdshader" ) sky.sky_material = sky_material environment.sky = sky diff --git a/tools/blender/export_terrain_chunks.py b/tools/blender/export_terrain_chunks.py index ced081e..d4a278e 100644 --- a/tools/blender/export_terrain_chunks.py +++ b/tools/blender/export_terrain_chunks.py @@ -107,7 +107,7 @@ def _parse_arguments() -> argparse.Namespace: if "--" in sys.argv: script_arguments = sys.argv[sys.argv.index("--") + 1 :] parser = argparse.ArgumentParser( - description="Export NETfishing terrain chunk collections to GLB files." + description="Export straywild terrain chunk collections to GLB files." ) parser.add_argument( "--output", diff --git a/ui/assets/title/netfishing_logo.png b/ui/assets/title/netfishing_logo.png deleted file mode 100644 index 71c8ac84569e8621d0539d40061b923878012027..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22579 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 literal 0 HcmV?d00001 diff --git a/ui/assets/title/straywild_logo.png.import b/ui/assets/title/straywild_logo.png.import new file mode 100644 index 0000000..9cd04ca --- /dev/null +++ b/ui/assets/title/straywild_logo.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dwe5p5t0ode73" +path.s3tc="res://.godot/imported/straywild_logo.png-de66accac60dbd31604d2c39ab8d2775.s3tc.ctex" +path.etc2="res://.godot/imported/straywild_logo.png-de66accac60dbd31604d2c39ab8d2775.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://ui/assets/title/straywild_logo.png" +dest_files=["res://.godot/imported/straywild_logo.png-de66accac60dbd31604d2c39ab8d2775.s3tc.ctex", "res://.godot/imported/straywild_logo.png-de66accac60dbd31604d2c39ab8d2775.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/ui/components/bubble_menu/bubble_button.gd b/ui/components/bubble_menu/bubble_button.gd index 3dc3730..ac0409e 100644 --- a/ui/components/bubble_menu/bubble_button.gd +++ b/ui/components/bubble_menu/bubble_button.gd @@ -2,6 +2,13 @@ class_name BubbleButton extends Button const ICON_FILL_RATIO: float = 0.76 +const LABELED_ICON_FILL_RATIO: float = 0.58 +const BubbleGradientBackgroundType = preload( + "res://ui/components/bubble_menu/bubble_gradient_background.gd" +) +const BubbleHoverDrawerType = preload( + "res://ui/components/bubble_menu/bubble_hover_drawer.gd" +) @export var profile: BubbleMenuProfile @@ -16,6 +23,9 @@ const ICON_FILL_RATIO: float = 0.76 @export_range(1, 256, 1) var minimum_font_size: int = 14 @export_range(1, 256, 1) var maximum_font_size: int = 32 +@export_group("Icon") +@export_range(0.0, 1.0, 0.01) var icon_fill_ratio_override: float = 0.0 + @export_group("Motion") @export_range(0.0, 32.0, 0.1) var horizontal_amplitude: float = 1.8 @export_range(0.0, 32.0, 0.1) var vertical_amplitude: float = 4.0 @@ -23,20 +33,37 @@ const ICON_FILL_RATIO: float = 0.76 @export_range(0.0, TAU, 0.01) var motion_phase: float = 0.0 @export_range(0.0, 0.2, 0.001) var deformation_amplitude: float = 0.016 @export_range(0.1, 30.0, 0.1) var deformation_period: float = 6.0 +@export var hover_wiggle_amplitude: Vector2 = Vector2.ZERO +@export_range(0.1, 30.0, 0.1) var hover_wiggle_period: float = 2.0 + +@export_group("Hover Drawer") +@export var hover_drawer_text: String = "" +@export_enum("Right", "Left Vertical") var hover_drawer_mode: int = 0 +@export_range(0.1, 12.0, 0.1) var hover_drawer_speed: float = 4.0 + +@export_group("Hit Area") +@export var elliptical_hit_area: bool = true var neutral_position: Vector2 = Vector2.ZERO var presented_size: Vector2 = Vector2.ZERO var emphasis: float = 0.0 var _hovered: bool = false +var _drawer_focused: bool = false +var _drawer_reveal: float = 0.0 +var _gradient_background: BubbleGradientBackground +var _hover_drawer: BubbleHoverDrawer func _ready() -> void: mouse_entered.connect(_set_hovered.bind(true)) mouse_exited.connect(_set_hovered.bind(false)) + focus_entered.connect(_set_drawer_focused.bind(true)) + focus_exited.connect(_set_drawer_focused.bind(false)) resized.connect(_update_pivot) _update_pivot() apply_profile() _apply_icon_presentation(neutral_size) + _update_hover_drawer() func _gui_input(event: InputEvent) -> void: @@ -97,6 +124,8 @@ func apply_layout( presented_size = bubble_size _update_pivot() _apply_icon_presentation(bubble_size) + if _hover_drawer != null: + _hover_drawer.refresh_layout() var label_control: Control = get_label_control() var font_size := clampi( roundi(minf(bubble_size.x, bubble_size.y) * font_size_ratio), @@ -134,17 +163,26 @@ func _uses_icon_only_presentation() -> bool: func _apply_icon_presentation(bubble_size: Vector2) -> void: + if icon == null: + return + vertical_icon_alignment = VERTICAL_ALIGNMENT_CENTER + expand_icon = true + texture_filter = CanvasItem.TEXTURE_FILTER_NEAREST + var fill_ratio: float = ( + ICON_FILL_RATIO + if _uses_icon_only_presentation() + else LABELED_ICON_FILL_RATIO + ) + if _uses_icon_only_presentation() and icon_fill_ratio_override > 0.0: + fill_ratio = icon_fill_ratio_override + add_theme_constant_override( + "icon_max_width", + maxi(1, roundi(minf(bubble_size.x, bubble_size.y) * fill_ratio)), + ) if not _uses_icon_only_presentation(): return alignment = HORIZONTAL_ALIGNMENT_CENTER icon_alignment = HORIZONTAL_ALIGNMENT_CENTER - vertical_icon_alignment = VERTICAL_ALIGNMENT_CENTER - expand_icon = true - texture_filter = CanvasItem.TEXTURE_FILTER_NEAREST - add_theme_constant_override( - "icon_max_width", - maxi(1, roundi(minf(bubble_size.x, bubble_size.y) * ICON_FILL_RATIO)), - ) func advance_emphasis(delta: float) -> void: @@ -154,6 +192,27 @@ func advance_emphasis(delta: float) -> void: target, profile.emphasis_speed * delta ) + if _gradient_background != null: + _gradient_background.queue_redraw() + var drawer_target: float = 1.0 if (_hovered or _drawer_focused) else 0.0 + _drawer_reveal = move_toward( + _drawer_reveal, + drawer_target, + hover_drawer_speed * delta, + ) + if _hover_drawer != null: + _hover_drawer.set_reveal(_drawer_reveal) + + +func reset_hover_presentation() -> void: + _hovered = false + _drawer_focused = false + emphasis = 0.0 + _drawer_reveal = 0.0 + if _gradient_background != null: + _gradient_background.queue_redraw() + if _hover_drawer != null: + _hover_drawer.set_reveal(0.0) func calculate_target( @@ -169,12 +228,17 @@ func calculate_target( sin(phase * 0.73 + motion_phase) * horizontal_amplitude, sin(phase) * vertical_amplitude ) * layout_scale * motion_scale + var hover_phase: float = elapsed / hover_wiggle_period * TAU + var hover_offset := Vector2( + sin(hover_phase), + sin(hover_phase * 2.0 + motion_phase) * 0.5, + ) * hover_wiggle_amplitude * emphasis * layout_scale * motion_scale idle_offset.y -= ( profile.hover_focus_lift * emphasis * layout_scale ) - return neutral_position + idle_offset + return neutral_position + idle_offset + hover_offset func calculate_visual_scale( @@ -219,6 +283,8 @@ func apply_presentation( func _has_point(point: Vector2) -> bool: + if not elliptical_hit_area: + return Rect2(Vector2.ZERO, size).has_point(point) var radius: Vector2 = size * 0.5 if radius.x <= 0.0 or radius.y <= 0.0: return false @@ -228,6 +294,12 @@ func _has_point(point: Vector2) -> bool: func _set_hovered(value: bool) -> void: _hovered = value + if _gradient_background != null: + _gradient_background.queue_redraw() + + +func _set_drawer_focused(value: bool) -> void: + _drawer_focused = value func _update_pivot() -> void: @@ -237,6 +309,7 @@ func _update_pivot() -> void: func apply_profile() -> void: if profile == null: return + _update_gradient_background() add_theme_stylebox_override("normal", profile.make_normal_style()) var hover_style: StyleBoxFlat = profile.make_hover_style() add_theme_stylebox_override("hover", hover_style) @@ -251,3 +324,35 @@ func apply_profile() -> void: var label_control: Control = get_label_control() if label_control != self: label_control.add_theme_color_override("font_color", profile.text_color) + + +func _update_gradient_background() -> void: + if not profile.gradient_enabled: + if _gradient_background != null: + _gradient_background.queue_free() + _gradient_background = null + return + if _gradient_background == null: + _gradient_background = BubbleGradientBackgroundType.new() + _gradient_background.name = "GradientBackground" + add_child(_gradient_background) + move_child(_gradient_background, 0) + _gradient_background.configure(self, profile) + + +func _update_hover_drawer() -> void: + if hover_drawer_text.is_empty(): + if _hover_drawer != null: + _hover_drawer.queue_free() + _hover_drawer = null + return + if _hover_drawer == null: + _hover_drawer = BubbleHoverDrawerType.new() + _hover_drawer.name = "HoverDrawer" + add_child(_hover_drawer) + move_child(_hover_drawer, 0) + _hover_drawer.configure( + self, + hover_drawer_text, + hover_drawer_mode as BubbleHoverDrawer.DrawerMode, + ) diff --git a/ui/components/bubble_menu/bubble_cluster.gd b/ui/components/bubble_menu/bubble_cluster.gd index 0ad2624..29f7889 100644 --- a/ui/components/bubble_menu/bubble_cluster.gd +++ b/ui/components/bubble_menu/bubble_cluster.gd @@ -9,6 +9,7 @@ const ControllerFocusNavigationType = preload( @export var desktop_reference_size: Vector2 = Vector2(396.0, 318.0) @export var compact_reference_size: Vector2 = Vector2(294.0, 200.0) @export_range(0.0, 1.0, 0.01) var motion_scale: float = 1.0 +@export var collision_separation_enabled: bool = true var _bubbles: Array[BubbleButton] = [] var _elapsed: float = 0.0 @@ -70,39 +71,40 @@ func advance_motion(delta: float) -> void: targets.append(target) visual_scales.append(visual_scale) visual_radii.append(bubble.get_visual_radius(visual_scale)) - for first_index: int in _bubbles.size(): - for second_index: int in range(first_index + 1, _bubbles.size()): - var first_center: Vector2 = ( - targets[first_index] - + _bubbles[first_index].presented_size * 0.5 - ) - var second_center: Vector2 = ( - targets[second_index] - + _bubbles[second_index].presented_size * 0.5 - ) - var center_delta: Vector2 = second_center - first_center - var distance: float = center_delta.length() - var desired_distance: float = ( - visual_radii[first_index] - + visual_radii[second_index] - + profile.contact_gap * _layout_scale - ) - if distance >= desired_distance: - continue - var direction := ( - center_delta / distance - if distance > 0.001 - else Vector2.RIGHT.rotated(float(first_index + 1)) - ) - var correction: Vector2 = ( - direction - * minf( - (desired_distance - distance) * 0.5, - profile.maximum_separation * _layout_scale + if collision_separation_enabled: + for first_index: int in _bubbles.size(): + for second_index: int in range(first_index + 1, _bubbles.size()): + var first_center: Vector2 = ( + targets[first_index] + + _bubbles[first_index].presented_size * 0.5 ) - ) - targets[first_index] -= correction - targets[second_index] += correction + var second_center: Vector2 = ( + targets[second_index] + + _bubbles[second_index].presented_size * 0.5 + ) + var center_delta: Vector2 = second_center - first_center + var distance: float = center_delta.length() + var desired_distance: float = ( + visual_radii[first_index] + + visual_radii[second_index] + + profile.contact_gap * _layout_scale + ) + if distance >= desired_distance: + continue + var direction := ( + center_delta / distance + if distance > 0.001 + else Vector2.RIGHT.rotated(float(first_index + 1)) + ) + var correction: Vector2 = ( + direction + * minf( + (desired_distance - distance) * 0.5, + profile.maximum_separation * _layout_scale + ) + ) + targets[first_index] -= correction + targets[second_index] += correction var position_weight: float = 1.0 - exp( -profile.position_response * delta ) diff --git a/ui/components/bubble_menu/bubble_gradient_background.gd b/ui/components/bubble_menu/bubble_gradient_background.gd new file mode 100644 index 0000000..cf17bdb --- /dev/null +++ b/ui/components/bubble_menu/bubble_gradient_background.gd @@ -0,0 +1,79 @@ +class_name BubbleGradientBackground +extends Control + +const CORNER_SEGMENTS: int = 8 + +var host_button: BaseButton +var profile: BubbleMenuProfile + + +func configure( + button: BaseButton, + menu_profile: BubbleMenuProfile, +) -> void: + host_button = button + profile = menu_profile + mouse_filter = Control.MOUSE_FILTER_IGNORE + show_behind_parent = true + set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT) + queue_redraw() + + +func _draw() -> void: + if host_button == null or profile == null or size.x <= 0.0 or size.y <= 0.0: + return + var fill_color: Color = _get_fill_color() + var top_color: Color = fill_color.lightened(profile.gradient_top_lift) + var points := PackedVector2Array() + _append_arc(points, Vector2(profile.corner_radius, profile.corner_radius), PI, PI * 1.5) + _append_arc( + points, + Vector2(size.x - profile.corner_radius, profile.corner_radius), + PI * 1.5, + TAU, + ) + _append_arc( + points, + Vector2(size.x - profile.corner_radius, size.y - profile.corner_radius), + 0.0, + PI * 0.5, + ) + _append_arc( + points, + Vector2(profile.corner_radius, size.y - profile.corner_radius), + PI * 0.5, + PI, + ) + var colors := PackedColorArray() + for point: Vector2 in points: + colors.append(top_color.lerp(fill_color, clampf(point.y / size.y, 0.0, 1.0))) + draw_polygon(points, colors) + + +func _append_arc( + points: PackedVector2Array, + center: Vector2, + start_angle: float, + end_angle: float, +) -> void: + var radius: float = minf( + float(profile.corner_radius), + minf(size.x, size.y) * 0.5, + ) + for index: int in range(CORNER_SEGMENTS + 1): + var weight: float = float(index) / float(CORNER_SEGMENTS) + var angle: float = lerpf(start_angle, end_angle, weight) + points.append(center + Vector2(cos(angle), sin(angle)) * radius) + + +func _get_fill_color() -> Color: + if host_button.disabled: + return profile.disabled_fill + match host_button.get_draw_mode(): + BaseButton.DRAW_PRESSED, BaseButton.DRAW_HOVER_PRESSED: + return profile.pressed_fill + BaseButton.DRAW_HOVER: + return profile.hover_fill + if host_button.has_focus(): + return profile.hover_fill + return profile.normal_fill diff --git a/ui/components/bubble_menu/bubble_gradient_background.gd.uid b/ui/components/bubble_menu/bubble_gradient_background.gd.uid new file mode 100644 index 0000000..ecab908 --- /dev/null +++ b/ui/components/bubble_menu/bubble_gradient_background.gd.uid @@ -0,0 +1 @@ +uid://cckk3lwdqadjn diff --git a/ui/components/bubble_menu/bubble_hover_drawer.gd b/ui/components/bubble_menu/bubble_hover_drawer.gd new file mode 100644 index 0000000..ad72edc --- /dev/null +++ b/ui/components/bubble_menu/bubble_hover_drawer.gd @@ -0,0 +1,97 @@ +class_name BubbleHoverDrawer +extends Control + +enum DrawerMode { + RIGHT, + LEFT_VERTICAL, +} + +const DRAWER_COLOR: Color = Color(0.031, 0.122, 0.169, 1.0) +const TEXT_COLOR: Color = Color(0.764706, 0.87451, 0.901961, 1.0) +const RIGHT_SIZE: Vector2 = Vector2(132.0, 48.0) +const LEFT_VERTICAL_SIZE: Vector2 = Vector2(50.0, 176.0) +const OVERLAP: float = 12.0 + +var host_button: BaseButton +var drawer_mode: DrawerMode = DrawerMode.RIGHT +var _panel: Panel +var _label: Label + + +func configure( + button: BaseButton, + drawer_text: String, + mode: DrawerMode, +) -> void: + host_button = button + drawer_mode = mode + mouse_filter = Control.MOUSE_FILTER_IGNORE + show_behind_parent = true + _build_controls() + _label.text = drawer_text + _refresh_label_layout() + refresh_layout() + set_reveal(0.0) + + +func refresh_layout() -> void: + if host_button == null: + return + if drawer_mode == DrawerMode.RIGHT: + size = RIGHT_SIZE + position = Vector2( + host_button.size.x - OVERLAP, + (host_button.size.y - size.y) * 0.5, + ) + pivot_offset = Vector2(0.0, size.y * 0.5) + else: + size = LEFT_VERTICAL_SIZE + position = Vector2( + -size.x + OVERLAP, + (host_button.size.y - size.y) * 0.5, + ) + pivot_offset = Vector2(size.x, size.y * 0.5) + _refresh_label_layout() + + +func set_reveal(amount: float) -> void: + var reveal: float = clampf(amount, 0.0, 1.0) + visible = reveal > 0.001 + scale = Vector2(maxf(reveal, 0.001), 1.0) + + +func _build_controls() -> void: + if _panel != null: + return + _panel = Panel.new() + _panel.mouse_filter = Control.MOUSE_FILTER_IGNORE + _panel.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT) + var panel_style := StyleBoxFlat.new() + panel_style.bg_color = DRAWER_COLOR + panel_style.corner_radius_top_left = 12 + panel_style.corner_radius_top_right = 12 + panel_style.corner_radius_bottom_right = 12 + panel_style.corner_radius_bottom_left = 12 + _panel.add_theme_stylebox_override("panel", panel_style) + add_child(_panel) + + _label = Label.new() + _label.mouse_filter = Control.MOUSE_FILTER_IGNORE + _label.add_theme_color_override("font_color", TEXT_COLOR) + _label.add_theme_font_size_override("font_size", 20) + _label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + _label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER + add_child(_label) + + +func _refresh_label_layout() -> void: + if _label == null: + return + if drawer_mode == DrawerMode.RIGHT: + _label.rotation = 0.0 + _label.position = Vector2.ZERO + _label.size = size + else: + _label.rotation = -PI * 0.5 + _label.position = Vector2(-OVERLAP * 0.5, size.y) + _label.size = Vector2(size.y, size.x) diff --git a/ui/components/bubble_menu/bubble_hover_drawer.gd.uid b/ui/components/bubble_menu/bubble_hover_drawer.gd.uid new file mode 100644 index 0000000..9a31896 --- /dev/null +++ b/ui/components/bubble_menu/bubble_hover_drawer.gd.uid @@ -0,0 +1 @@ +uid://jvw68gltfda0 diff --git a/ui/components/bubble_menu/bubble_menu_profile.gd b/ui/components/bubble_menu/bubble_menu_profile.gd index a78cbd1..1af8b50 100644 --- a/ui/components/bubble_menu/bubble_menu_profile.gd +++ b/ui/components/bubble_menu/bubble_menu_profile.gd @@ -21,6 +21,10 @@ extends Resource @export_range(0, 12, 1) var normal_border_width: int = 2 @export_range(0, 12, 1) var emphasized_border_width: int = 3 +@export_group("Gradient") +@export var gradient_enabled: bool = false +@export_range(0.0, 0.5, 0.01) var gradient_top_lift: float = 0.12 + @export_group("Colors") @export var normal_fill: Color = Color(0.82, 0.93, 0.96, 0.96) @export var normal_border: Color = Color(0.91, 0.98, 1.0, 0.85) @@ -78,7 +82,11 @@ func _make_style( style.content_margin_top = content_margin style.content_margin_right = content_margin style.content_margin_bottom = content_margin - style.bg_color = fill_color + style.bg_color = ( + Color(fill_color.r, fill_color.g, fill_color.b, 0.0) + if gradient_enabled + else fill_color + ) style.border_width_left = outline_width style.border_width_top = outline_width style.border_width_right = outline_width diff --git a/ui/components/bubble_menu/title_menu_profile.tres b/ui/components/bubble_menu/title_menu_profile.tres new file mode 100644 index 0000000..3ae3a4a --- /dev/null +++ b/ui/components/bubble_menu/title_menu_profile.tres @@ -0,0 +1,22 @@ +[gd_resource type="Resource" script_class="BubbleMenuProfile" load_steps=2 format=3] + +[ext_resource type="Script" path="res://ui/components/bubble_menu/bubble_menu_profile.gd" id="1_profile"] + +[resource] +script = ExtResource("1_profile") +font_size_ratio = 0.14 +hover_focus_scale = 1.02 +hover_focus_lift = 0.0 +emphasis_speed = 7.0 +emphasized_deformation_scale = 0.0 +contact_gap = 0.0 +maximum_separation = 0.0 +content_margin = 6.0 +corner_radius = 36 +normal_border_width = 0 +emphasized_border_width = 0 +gradient_enabled = false +normal_fill = Color(1, 1, 1, 1) +hover_fill = Color(1, 1, 1, 1) +pressed_fill = Color(1, 1, 1, 1) +disabled_fill = Color(1, 1, 1, 0.78) diff --git a/ui/components/bubble_menu/title_secondary_menu_profile.tres b/ui/components/bubble_menu/title_secondary_menu_profile.tres new file mode 100644 index 0000000..d79b7da --- /dev/null +++ b/ui/components/bubble_menu/title_secondary_menu_profile.tres @@ -0,0 +1,22 @@ +[gd_resource type="Resource" script_class="BubbleMenuProfile" load_steps=2 format=3] + +[ext_resource type="Script" path="res://ui/components/bubble_menu/bubble_menu_profile.gd" id="1_profile"] + +[resource] +script = ExtResource("1_profile") +font_size_ratio = 0.14 +hover_focus_scale = 1.02 +hover_focus_lift = 0.0 +emphasis_speed = 7.0 +emphasized_deformation_scale = 0.0 +contact_gap = 0.0 +maximum_separation = 0.0 +content_margin = 6.0 +corner_radius = 16 +normal_border_width = 0 +emphasized_border_width = 0 +gradient_enabled = false +normal_fill = Color(1, 1, 1, 1) +hover_fill = Color(1, 1, 1, 1) +pressed_fill = Color(1, 1, 1, 1) +disabled_fill = Color(1, 1, 1, 0.78) diff --git a/ui/controller_focus_presentation.gd b/ui/controller_focus_presentation.gd index 405b834..cb41c31 100644 --- a/ui/controller_focus_presentation.gd +++ b/ui/controller_focus_presentation.gd @@ -245,7 +245,7 @@ func _clear_directional_input_in_flight(generation: int) -> void: func _is_directional_navigation(event: InputEvent) -> bool: if event is InputEventKey and (event as InputEventKey).echo: return false - # Tab is both Godot's default ui_focus_next key and NETfishing's default + # Tab is both Godot's default ui_focus_next key and straywild's default # player-menu binding. The global focus presenter must leave that gameplay # action alone; otherwise a remembered neutral focus seed consumes the key # before PlayerMenu can open or close. diff --git a/ui/controller_mapping_panel.gd b/ui/controller_mapping_panel.gd index 16080a7..12ac941 100644 --- a/ui/controller_mapping_panel.gd +++ b/ui/controller_mapping_panel.gd @@ -239,7 +239,7 @@ func _build_interface() -> void: _instruction_label = Label.new() _instruction_label.text = ( - "auto-map walks through NETfishing's controller actions. " + "auto-map walks through straywild's controller actions. " + "select any row afterward to override it; the mapped back " + "control cancels capture." ) diff --git a/ui/icons/new_menu/close.png b/ui/icons/new_menu/close.png new file mode 100644 index 0000000000000000000000000000000000000000..886ed6ad1cb58280b44774e7a474c2ec65ce1f1b GIT binary patch literal 13893 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 G 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 g|L+}bxqgpcH>Oxz5oCK literal 0 HcmV?d00001 diff --git a/ui/icons/new_menu/online.png.import b/ui/icons/new_menu/online.png.import new file mode 100644 index 0000000..df12baa --- /dev/null +++ b/ui/icons/new_menu/online.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c8sty10uue6nm" +path.s3tc="res://.godot/imported/online.png-3f69c41cde4beb29d8f23e574a61641f.s3tc.ctex" +path.etc2="res://.godot/imported/online.png-3f69c41cde4beb29d8f23e574a61641f.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://ui/icons/new_menu/online.png" +dest_files=["res://.godot/imported/online.png-3f69c41cde4beb29d8f23e574a61641f.s3tc.ctex", "res://.godot/imported/online.png-3f69c41cde4beb29d8f23e574a61641f.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/ui/icons/new_menu/play.png b/ui/icons/new_menu/play.png new file mode 100644 index 0000000000000000000000000000000000000000..aa61c525083f7a77771e94b0a7c4f0a575f4af32 GIT binary patch literal 25535 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 af!5=>u04F`SvS~C2IQqxq{<~t1O5-%kzU*Y literal 0 HcmV?d00001 diff --git a/ui/assets/title/netfishing_logo.png.import b/ui/icons/new_menu/play.png.import similarity index 55% rename from ui/assets/title/netfishing_logo.png.import rename to ui/icons/new_menu/play.png.import index 2aa351a..6fc788b 100644 --- a/ui/assets/title/netfishing_logo.png.import +++ b/ui/icons/new_menu/play.png.import @@ -2,20 +2,22 @@ importer="texture" type="CompressedTexture2D" -uid="uid://ckqayis1ckb2v" -path="res://.godot/imported/netfishing_logo.png-82ab9fce5851dcc5239eca178e8cde99.ctex" +uid="uid://7qe6siny4ru7" +path.s3tc="res://.godot/imported/play.png-f35bbfc9549b806b0a83d0c3b4c7dc74.s3tc.ctex" +path.etc2="res://.godot/imported/play.png-f35bbfc9549b806b0a83d0c3b4c7dc74.etc2.ctex" metadata={ -"vram_texture": false +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true } [deps] -source_file="res://ui/assets/title/netfishing_logo.png" -dest_files=["res://.godot/imported/netfishing_logo.png-82ab9fce5851dcc5239eca178e8cde99.ctex"] +source_file="res://ui/icons/new_menu/play.png" +dest_files=["res://.godot/imported/play.png-f35bbfc9549b806b0a83d0c3b4c7dc74.s3tc.ctex", "res://.godot/imported/play.png-f35bbfc9549b806b0a83d0c3b4c7dc74.etc2.ctex"] [params] -compress/mode=0 +compress/mode=2 compress/high_quality=false compress/lossy_quality=0.7 compress/uastc_level=0 @@ -37,4 +39,4 @@ 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 +detect_3d/compress_to=0 diff --git a/ui/icons/new_menu/settings.png b/ui/icons/new_menu/settings.png new file mode 100644 index 0000000000000000000000000000000000000000..7d69c3b8b0c5bc0efc1154a1e8c6d45f039cbd73 GIT binary patch literal 8161 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 AX#fBK literal 0 HcmV?d00001 diff --git a/ui/icons/new_menu/settings.png.import b/ui/icons/new_menu/settings.png.import new file mode 100644 index 0000000..54dde27 --- /dev/null +++ b/ui/icons/new_menu/settings.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cxqwvyg0qryg1" +path.s3tc="res://.godot/imported/settings.png-3654f1ee86a2237bbc3c9af7e818343c.s3tc.ctex" +path.etc2="res://.godot/imported/settings.png-3654f1ee86a2237bbc3c9af7e818343c.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://ui/icons/new_menu/settings.png" +dest_files=["res://.godot/imported/settings.png-3654f1ee86a2237bbc3c9af7e818343c.s3tc.ctex", "res://.godot/imported/settings.png-3654f1ee86a2237bbc3c9af7e818343c.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/ui/save_slots_page.gd b/ui/save_slots_page.gd index ba142f7..74e3a7f 100644 --- a/ui/save_slots_page.gd +++ b/ui/save_slots_page.gd @@ -439,7 +439,7 @@ func _choose_import_path() -> void: _import_dialog.access = FileDialog.ACCESS_FILESYSTEM _import_dialog.use_native_dialog = false _import_dialog.filters = PackedStringArray([ - "*.nfsave ; NETfishing progression archive", + "*.nfsave ; straywild progression archive", ]) _import_dialog.file_selected.connect(_import_file_selected) if _interface_fonts != null: @@ -479,7 +479,7 @@ func _choose_export_path() -> void: _export_dialog.access = FileDialog.ACCESS_FILESYSTEM _export_dialog.use_native_dialog = false _export_dialog.filters = PackedStringArray([ - "*.nfsave ; NETfishing progression archive", + "*.nfsave ; straywild progression archive", ]) _export_dialog.file_selected.connect(_export_file_selected) if _interface_fonts != null: @@ -716,7 +716,7 @@ func _safe_filename(value: String) -> String: var result: String = value.strip_edges().to_lower().replace(" ", "-") for character: String in ["/", "\\", ":", "*", "?", "\"", "<", ">", "|"]: result = result.replace(character, "") - return "netfishing-save" if result.is_empty() else result + return "straywild-save" if result.is_empty() else result func _on_slots_changed() -> void: diff --git a/ui/settings_panel.gd b/ui/settings_panel.gd index 049b9c9..159b3c0 100644 --- a/ui/settings_panel.gd +++ b/ui/settings_panel.gd @@ -697,7 +697,7 @@ func _change_data_folder(path: String) -> void: ).to_lower() _refresh_data_page() return - _feedback.text = "data folder changed. NETfishing will close safely." + _feedback.text = "data folder changed. straywild will close safely." _refresh_data_page() get_tree().call_deferred("quit") else: @@ -708,16 +708,16 @@ func _change_data_folder(path: String) -> void: func _show_existing_data_folder_choice(path: String) -> void: var dialog := ConfirmationDialog.new() - dialog.title = "existing NETfishing data" + dialog.title = "existing straywild data" dialog.ok_button_text = "use selected data" dialog.dialog_text = ( - "the selected folder contains different NETfishing data.\n\n" + "the selected folder contains different straywild data.\n\n" + "choose one complete data set. data will not be merged." ) dialog.add_button("replace selected data", false, "replace") dialog.confirmed.connect(func() -> void: if _data_root.use_existing_root(path): - _feedback.text = "data folder changed. NETfishing will close safely." + _feedback.text = "data folder changed. straywild will close safely." get_tree().call_deferred("quit") else: _feedback.text = _data_root.error_message @@ -756,7 +756,7 @@ func _choose_identity_export(identity_type: String) -> void: _export_file_dialog.access = FileDialog.ACCESS_FILESYSTEM _export_file_dialog.use_native_dialog = false _export_file_dialog.filters = PackedStringArray([ - "*.nfidentity ; NETfishing identity backup", + "*.nfidentity ; straywild identity backup", ]) _export_file_dialog.file_selected.connect( _identity_export_file_selected @@ -786,7 +786,7 @@ func _choose_identity_import(identity_type: String) -> void: _backup_file_dialog.access = FileDialog.ACCESS_FILESYSTEM _backup_file_dialog.use_native_dialog = false _backup_file_dialog.filters = PackedStringArray([ - "*.nfidentity ; NETfishing identity backup", + "*.nfidentity ; straywild identity backup", ]) _backup_file_dialog.file_selected.connect( _identity_import_file_selected diff --git a/ui/title_credits_page.tscn b/ui/title_credits_page.tscn index 1fe54e0..2697ced 100644 --- a/ui/title_credits_page.tscn +++ b/ui/title_credits_page.tscn @@ -45,7 +45,7 @@ horizontal_alignment = 1 layout_mode = 2 theme_override_colors/font_color = Color(0.624, 0.812, 0.824, 1) theme_override_font_sizes/font_size = 18 -text = "NETfishing is created by Woofmeow" +text = "straywild is created by Woofmeow" horizontal_alignment = 1 [node name="Columns" type="HBoxContainer" parent="Paper/Margin/Layout"] diff --git a/ui/title_screen.gd b/ui/title_screen.gd index 07a61fd..3055e15 100644 --- a/ui/title_screen.gd +++ b/ui/title_screen.gd @@ -31,55 +31,18 @@ const SaveSlotsPageType = preload("res://ui/save_slots_page.gd") const CurrencyPresentationType = preload( "res://ui/currency_presentation.gd" ) -const DECORATIVE_FISH_TEXTURES: Array[Texture2D] = [ - preload("res://fish/species/bass/fish_bass_striped.png"), - preload("res://fish/species/bluegill/fish_bluegill.png"), - preload("res://fish/species/carp/fish_carp_common.png"), - preload("res://fish/species/sunfish/fish_sunfish.png"), -] -const DECORATIVE_BUBBLE_TEXTURES: Array[Texture2D] = [ - preload("res://ui/assets/title/bubbles/bubble1.png"), - preload("res://ui/assets/title/bubbles/bubble2.png"), - preload("res://ui/assets/title/bubbles/bubble3.png"), -] - -const FIRST_FISH_DELAY_MIN: float = 2.0 -const FIRST_FISH_DELAY_MAX: float = 5.0 -const NEXT_FISH_DELAY_MIN: float = 5.0 -const NEXT_FISH_DELAY_MAX: float = 12.0 -const CROSSING_DURATION_MIN: float = 8.0 -const CROSSING_DURATION_MAX: float = 16.0 -const FISH_LONGEST_SIDE_MIN: float = 120.0 -const FISH_LONGEST_SIDE_MAX: float = 210.0 -const FISH_EDGE_MARGIN: float = 24.0 -const BUBBLE_EVENT_DELAY_MIN: float = 4.0 -const BUBBLE_EVENT_DELAY_MAX: float = 10.0 -const BUBBLE_CLUSTER_DELAY_MIN: float = 0.25 -const BUBBLE_CLUSTER_DELAY_MAX: float = 0.65 -const BUBBLE_TRAVEL_DURATION_MIN: float = 7.0 -const BUBBLE_TRAVEL_DURATION_MAX: float = 14.0 -const BUBBLE_SCALE_MIN: float = 0.65 -const BUBBLE_SCALE_MAX: float = 1.15 -const BUBBLE_OPACITY_MIN: float = 0.55 -const BUBBLE_OPACITY_MAX: float = 0.90 -const BUBBLE_DRIFT_MIN: float = 10.0 -const BUBBLE_DRIFT_MAX: float = 45.0 -const BUBBLE_WOBBLE_MIN: float = 3.0 -const BUBBLE_WOBBLE_MAX: float = 9.0 -const BUBBLE_EDGE_MARGIN: float = 16.0 -const MAX_DECORATIVE_BUBBLES: int = 6 -const MAX_TRANSITION_BUBBLES: int = 30 -const LOGO_ASPECT_RATIO: float = 2560.0 / 760.0 +const LOGO_ASPECT_RATIO: float = 2560.0 / 480.0 const LOGO_WIDTH_FACTOR: float = 0.4784 const LOGO_MIN_WIDTH: float = 294.0 const LOGO_MAX_WIDTH: float = 662.0 const TITLE_HORIZONTAL_MARGIN: float = 48.0 const TITLE_DESKTOP_REFERENCE_SIZE: Vector2 = Vector2(1280.0, 720.0) const TITLE_COMPACT_REFERENCE_SIZE: Vector2 = Vector2(640.0, 480.0) -const BUBBLE_FIELD_MAX_WIDTH: float = 440.0 -const BUBBLE_FIELD_DESKTOP_HEIGHT: float = 318.0 +const BUBBLE_FIELD_MAX_WIDTH: float = 500.0 +const BUBBLE_FIELD_DESKTOP_HEIGHT: float = 360.0 const BUBBLE_FIELD_COMPACT_WIDTH: float = 294.0 const BUBBLE_FIELD_COMPACT_HEIGHT: float = 200.0 +const BUBBLE_FIELD_DESKTOP_OFFSET_Y: float = -10.0 const BUBBLE_COMPACT_HEIGHT_THRESHOLD: float = 560.0 const START_PROMPT_MIN_SCALE: float = 0.985 const START_PROMPT_MAX_SCALE: float = 1.015 @@ -87,6 +50,11 @@ const START_PROMPT_CYCLE_SECONDS: float = 3.0 const QUICK_MENU_ENTER_DURATION: float = 0.14 const QUICK_MENU_EXIT_DURATION: float = 0.10 const QUICK_MENU_ENTER_SCALE: float = 0.97 +const INTRO_PROMPT_FADE_DURATION: float = 0.24 +const INTRO_LOGO_FLOAT_DURATION: float = 0.72 +const INTRO_MENU_REVEAL_DELAY: float = 0.34 +const INTRO_MENU_REVEAL_DURATION: float = 0.30 +const INTRO_LOGO_CENTER_Y_RATIO: float = 0.43 signal new_game_requested(world_layout: StringName, world_seed: int) signal continue_game_requested @@ -113,6 +81,7 @@ enum ConfirmationAction { @onready var _quit_button: BubbleButtonType = %QuitButton @onready var _join_game_button: BubbleButtonType = %JoinGameButton @onready var _feedback_label: RichTextLabel = %FeedbackLabel +@onready var _continue_stats_drawer: RichTextLabel = %ContinueStatsDrawer @onready var _confirmation_page: TitleConfirmationBubblePageType = ( %ConfirmationPage ) @@ -121,11 +90,6 @@ enum ConfirmationAction { %TitlePresentationScaleRoot ) @onready var _background: ColorRect = %Background -@onready var _decorative_fish_layer: Control = %DecorativeFishLayer -@onready var _decorative_fish_timer: Timer = %DecorativeFishTimer -@onready var _decorative_bubble_layer: Control = %DecorativeBubbleLayer -@onready var _decorative_bubble_event_timer: Timer = %DecorativeBubbleEventTimer -@onready var _decorative_bubble_cluster_timer: Timer = %DecorativeBubbleClusterTimer @onready var _title_logo: TextureRect = %TitleLogo @onready var _playtest_label: Label = %PlaytestLabel @onready var _presentation_center: CenterContainer = %Center @@ -149,17 +113,6 @@ var _settings_manager: SettingsManagerType var _inspection: SaveInspectionType var _confirmation_action: ConfirmationAction = ConfirmationAction.NONE var _action_in_progress: bool = false -var _decorative_rng := RandomNumberGenerator.new() -var _decorative_fish: TextureRect -var _decorative_fish_tween: Tween -var _decorative_presentation_ready: bool = false -var _decorative_presentation_active: bool = false -var _decorative_generation: int = 0 -var _decorative_bubbles: Array[TextureRect] = [] -var _decorative_bubble_tweens: Dictionary[int, Tween] = {} -var _transition_bubble_ids: Dictionary[int, bool] = {} -var _pending_cluster_bubbles: int = 0 -var _minimal_presentation: bool = false var _awaiting_start_input: bool = false var _start_prompt_elapsed: float = 0.0 var _navigation_focus_active: bool = false @@ -219,27 +172,16 @@ func _ready() -> void: _settings_panel.closed.connect(_on_settings_closed) _settings_panel.closing.connect(_on_settings_closing) _settings_panel.opened.connect(_on_settings_opened) - _settings_panel.navigation_transition_started.connect( - _emit_navigation_bubble_flurry - ) _credits_page.back_requested.connect(_close_credits) _save_slots_page.back_requested.connect(_close_save_slots) _save_slots_page.play_requested.connect(_on_slot_play_requested) _save_slots_page.create_requested.connect(_on_new_slot_requested) _bubble_field.configure(_get_title_buttons()) - _bubble_field.motion_scale = 0.0 - _decorative_fish_timer.timeout.connect(_on_decorative_fish_timer_timeout) - _decorative_bubble_event_timer.timeout.connect( - _on_decorative_bubble_event_timer_timeout - ) - _decorative_bubble_cluster_timer.timeout.connect( - _on_decorative_bubble_cluster_timer_timeout - ) + _bubble_field.motion_scale = 1.0 visibility_changed.connect(_on_title_visibility_changed) resized.connect(_update_responsive_title_stage) get_window().size_changed.connect(_update_responsive_title_stage) _start_prompt_label.resized.connect(_update_start_prompt_pivot) - _decorative_rng.randomize() set_process(false) call_deferred("_update_responsive_title_stage") call_deferred("_update_start_prompt_pivot") @@ -269,19 +211,9 @@ func setup( Input.mouse_mode = Input.MOUSE_MODE_VISIBLE _refresh_save_inspection() show() - _decorative_presentation_ready = true - _start_decorative_presentation() _begin_title_entry() -func set_minimal_presentation(enabled: bool) -> void: - _minimal_presentation = enabled - if _minimal_presentation: - _stop_decorative_presentation() - elif visible: - _start_decorative_presentation() - - func reopen() -> void: _cancel_title_entry_transition() _cancel_title_settings_transition() @@ -295,7 +227,6 @@ func reopen() -> void: _save_slots_page.close_page() _refresh_save_inspection() show() - _start_decorative_presentation() _start_entry_prompt_animation() @@ -315,6 +246,8 @@ func reopen_to_menu() -> void: func open_join_game_page(endpoint: String = "") -> void: _cancel_title_entry_transition() _awaiting_start_input = false + _set_title_bubbles_interactive(false) + _release_primary_menu_focus() _start_prompt_center.hide() _presentation_center.hide() _settings_panel.hide() @@ -353,6 +286,7 @@ func _close_join_game() -> void: _presentation_center.show() _button_center.show() _start_prompt_center.hide() + _set_title_bubbles_interactive(true) _focus_initial_button() @@ -395,28 +329,6 @@ func is_awaiting_start_input() -> bool: return _awaiting_start_input -func is_decorative_presentation_active() -> bool: - return _decorative_presentation_active - - -func get_active_decorative_fish_count() -> int: - return 1 if is_instance_valid(_decorative_fish) else 0 - - -func get_active_decorative_bubble_count() -> int: - return _decorative_bubbles.size() - - -func is_decorative_bubble_scheduler_active() -> bool: - return ( - _decorative_presentation_active - and ( - not _decorative_bubble_event_timer.is_stopped() - or not _decorative_bubble_cluster_timer.is_stopped() - ) - ) - - func _update_title_layout() -> void: if not is_node_ready(): return @@ -464,6 +376,12 @@ func _update_title_layout() -> void: Vector2(field_width, field_height), compact_layout ) + _bubble_field.position = Vector2( + 0.0, + BUBBLE_FIELD_DESKTOP_OFFSET_Y + * field_height + / BUBBLE_FIELD_DESKTOP_HEIGHT, + ) _configure_title_controller_navigation() if not _title_settings_transition_active: call_deferred("_capture_title_bubble_rest_position") @@ -520,12 +438,6 @@ func _update_world_preview_resolution() -> void: _world_pixel_size, displayed_size ) - var shader_material := _background.material as ShaderMaterial - if shader_material != null: - shader_material.set_shader_parameter( - "virtual_pixel_density", - Vector2(grid_size) - ) var logo_material := _title_logo.material as ShaderMaterial if logo_material != null: var render_scale: float = ( @@ -542,23 +454,6 @@ func _update_world_preview_resolution() -> void: ) -func _snap_world_preview(value: Vector2) -> Vector2: - var displayed_size := Vector2i( - maxi(1, roundi(size.x)), - maxi(1, roundi(size.y)) - ) - var grid_size: Vector2i = PlayerSettings.get_world_grid_size( - _world_pixel_size, - displayed_size - ) - var render_scale: float = float(grid_size.y) / float(displayed_size.y) - var step: float = 1.0 / render_scale - return Vector2( - roundf(value.x / step) * step, - roundf(value.y / step) * step - ) - - func _process(delta: float) -> void: if not visible: return @@ -725,6 +620,9 @@ func _prepare_awaiting_start_input() -> void: _continue_stats_hovered = false _continue_stats_focused = false _cancel_continue_stats_fade() + _continue_stats_drawer.hide() + _continue_stats_drawer.modulate.a = 0.0 + _continue_stats_drawer.scale = Vector2(1.0, 0.001) _main_content.show() _start_prompt_center.show() _start_prompt_center.modulate.a = 1.0 @@ -775,7 +673,6 @@ func _reveal_primary_menu() -> void: _navigation_focus_active = false _release_title_focus() _bubble_motion_root.position = Vector2.ZERO - _branding_motion_root.position = Vector2.ZERO _bubble_field.pivot_offset = _bubble_field.size * 0.5 _bubble_field.scale = Vector2.ONE * QUICK_MENU_ENTER_SCALE _bubble_field.modulate.a = 0.0 @@ -784,20 +681,28 @@ func _reveal_primary_menu() -> void: _start_prompt_center, "modulate:a", 0.0, - QUICK_MENU_EXIT_DURATION + INTRO_PROMPT_FADE_DURATION ).set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_IN) + _title_entry_transition.tween_property( + _branding_motion_root, + "position", + Vector2.ZERO, + INTRO_LOGO_FLOAT_DURATION + ).set_trans(Tween.TRANS_CUBIC).set_ease(Tween.EASE_IN_OUT) _title_entry_transition.tween_property( _bubble_field, "scale", Vector2.ONE, - QUICK_MENU_ENTER_DURATION - ).set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_OUT) + INTRO_MENU_REVEAL_DURATION + ).set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_OUT).set_delay( + INTRO_MENU_REVEAL_DELAY + ) _title_entry_transition.tween_property( _bubble_field, "modulate:a", 1.0, - QUICK_MENU_ENTER_DURATION - ) + INTRO_MENU_REVEAL_DURATION + ).set_delay(INTRO_MENU_REVEAL_DELAY) _title_entry_transition.finished.connect( _finish_primary_menu_reveal.bind(generation), CONNECT_ONE_SHOT @@ -814,6 +719,7 @@ func _finish_primary_menu_reveal(generation: int) -> void: _title_entry_transition_active = false _start_prompt_center.hide() _start_prompt_center.modulate.a = 1.0 + _branding_motion_root.position = Vector2.ZERO _bubble_field.scale = Vector2.ONE _bubble_field.modulate.a = 1.0 _feedback_label.modulate.a = 0.0 @@ -855,10 +761,18 @@ func _prepare_intro_presentation(generation: int) -> void: return _branding_motion_root.size = _branding_slot.size _bubble_motion_root.size = _bubble_layout_slot.size - _branding_motion_root.position = Vector2.ZERO _bubble_motion_root.position = Vector2.ZERO _title_content_rest_position = _presentation_center.position _title_bubble_rest_position = _bubble_field.position + var branding_rect: Rect2 = _get_title_stage_rect(_branding_slot) + var desired_branding_center_y: float = ( + _title_presentation_scale_root.size.y + * INTRO_LOGO_CENTER_Y_RATIO + ) + _branding_motion_root.position = Vector2( + 0.0, + desired_branding_center_y - branding_rect.get_center().y, + ) _intro_geometry_ready = true @@ -908,7 +822,7 @@ func _update_continue_stats_visibility() -> void: and _presentation_center.visible ) if requested_visible: - _feedback_label.text = _get_continue_stats_text() + _continue_stats_drawer.text = _get_continue_stats_text() _fade_continue_stats_to(1.0 if requested_visible else 0.0) @@ -922,16 +836,47 @@ func _fade_continue_stats_to(target_opacity: float) -> void: if not is_node_ready(): return _cancel_continue_stats_fade() - if is_equal_approx(_feedback_label.modulate.a, target_opacity): - _feedback_label.modulate.a = target_opacity + var target_scale := Vector2( + 1.0, + 1.0 if target_opacity > 0.0 else 0.001, + ) + if target_opacity > 0.0: + _continue_stats_drawer.show() + if ( + is_equal_approx( + _continue_stats_drawer.modulate.a, + target_opacity, + ) + and _continue_stats_drawer.scale.is_equal_approx(target_scale) + ): + _continue_stats_drawer.modulate.a = target_opacity + _continue_stats_drawer.scale = target_scale + if target_opacity <= 0.0: + _continue_stats_drawer.hide() return - _continue_stats_fade = create_tween() + _continue_stats_fade = create_tween().set_parallel(true) _continue_stats_fade.tween_property( - _feedback_label, + _continue_stats_drawer, "modulate:a", target_opacity, QUICK_MENU_ENTER_DURATION ).set_trans(Tween.TRANS_CUBIC).set_ease(Tween.EASE_IN_OUT) + _continue_stats_fade.tween_property( + _continue_stats_drawer, + "scale", + target_scale, + QUICK_MENU_ENTER_DURATION + ).set_trans(Tween.TRANS_CUBIC).set_ease(Tween.EASE_IN_OUT) + if target_opacity <= 0.0: + _continue_stats_fade.chain().tween_callback( + _finish_continue_stats_hide + ) + + +func _finish_continue_stats_hide() -> void: + _continue_stats_fade = null + if _continue_stats_drawer.modulate.a <= 0.001: + _continue_stats_drawer.hide() func _cancel_continue_stats_fade() -> void: @@ -1180,7 +1125,6 @@ func _begin_confirmation_open() -> void: _confirmation_transition_generation += 1 _cancel_confirmation_transition() _confirmation_transition_active = true - _emit_navigation_bubble_flurry() _confirmation_title_content_rest_position = _presentation_center.position _set_confirmation_stage_rect() _confirmation_page.hide_page() @@ -1238,7 +1182,6 @@ func _begin_confirmation_return() -> void: _confirmation_transition_generation += 1 _cancel_confirmation_transition() _confirmation_transition_active = true - _emit_navigation_bubble_flurry() _confirmation_page.lock_interaction() var generation: int = _confirmation_transition_generation _confirmation_page.transition_out( @@ -1375,7 +1318,6 @@ func _begin_title_cluster_exit() -> void: _title_settings_transition_generation += 1 _cancel_title_settings_tween() _title_settings_transition_active = true - _emit_navigation_bubble_flurry() _title_content_rest_position = _presentation_center.position _title_bubble_rest_position = _bubble_field.position _set_title_bubbles_interactive(false) @@ -1475,6 +1417,8 @@ func _finish_title_cluster_return(generation: int) -> void: func _set_title_bubbles_interactive(interactive: bool) -> void: for bubble: BubbleButton in _get_title_buttons(): + if not interactive: + bubble.reset_hover_presentation() bubble.focus_mode = ( Control.FOCUS_ALL if interactive else Control.FOCUS_NONE ) @@ -1491,21 +1435,39 @@ func _configure_title_controller_navigation() -> void: ControllerFocusNavigationType.configure_spatial_neighbors( _get_title_buttons() ) - # The large Play bubble overlaps the inward edge of every surrounding - # bubble. Center-only spatial scoring otherwise links the four outside - # bubbles into a ring with no route back into Play. - _join_game_button.focus_neighbor_right = ( + _play_button.focus_neighbor_right = ( + _play_button.get_path_to(_join_game_button) + ) + _join_game_button.focus_neighbor_left = ( _join_game_button.get_path_to(_play_button) ) + _join_game_button.focus_neighbor_bottom = ( + _join_game_button.get_path_to(_settings_button) + ) _settings_button.focus_neighbor_left = ( _settings_button.get_path_to(_play_button) ) - _credits_button.focus_neighbor_right = ( + _settings_button.focus_neighbor_top = ( + _settings_button.get_path_to(_join_game_button) + ) + _settings_button.focus_neighbor_bottom = ( + _settings_button.get_path_to(_credits_button) + ) + _credits_button.focus_neighbor_left = ( _credits_button.get_path_to(_play_button) ) + _credits_button.focus_neighbor_top = ( + _credits_button.get_path_to(_settings_button) + ) + _credits_button.focus_neighbor_bottom = ( + _credits_button.get_path_to(_quit_button) + ) _quit_button.focus_neighbor_left = ( _quit_button.get_path_to(_play_button) ) + _quit_button.focus_neighbor_top = ( + _quit_button.get_path_to(_credits_button) + ) func _capture_title_bubble_rest_position() -> void: @@ -1575,7 +1537,7 @@ func _refresh_save_inspection() -> void: _delete_button.disabled = not _inspection.can_delete() _feedback_label.text = _center_feedback_text(_inspection.message) if _inspection.status == SaveInspectionType.Status.VALID_SUPPORTED: - _feedback_label.text = _get_continue_stats_text() + _continue_stats_drawer.text = _get_continue_stats_text() if not _inspection.can_continue(): _hide_continue_stats_context() else: @@ -1609,11 +1571,8 @@ func _on_quit_pressed() -> void: func _on_title_visibility_changed() -> void: - if not _decorative_presentation_ready: - return if visible: set_process(true) - _start_decorative_presentation() else: _hide_continue_stats_context() _stop_entry_prompt_animation() @@ -1621,482 +1580,3 @@ func _on_title_visibility_changed() -> void: _modal_restore_navigation_focus = false _reset_confirmation() _credits_page.close_page() - _stop_decorative_presentation() - - -func _start_decorative_presentation() -> void: - if ( - not _decorative_presentation_ready - or not visible - or _decorative_presentation_active - or _minimal_presentation - ): - return - _decorative_generation += 1 - _decorative_presentation_active = true - _schedule_next_decorative_fish( - FIRST_FISH_DELAY_MIN, - FIRST_FISH_DELAY_MAX - ) - _schedule_next_decorative_bubble_event( - BUBBLE_EVENT_DELAY_MIN, - BUBBLE_EVENT_DELAY_MAX - ) - - -func _stop_decorative_presentation() -> void: - _decorative_generation += 1 - _decorative_presentation_active = false - _decorative_fish_timer.stop() - if _decorative_fish_tween != null: - _decorative_fish_tween.kill() - _decorative_fish_tween = null - if is_instance_valid(_decorative_fish): - _decorative_fish.queue_free() - _decorative_fish = null - _decorative_bubble_event_timer.stop() - _decorative_bubble_cluster_timer.stop() - _pending_cluster_bubbles = 0 - for bubble_tween: Tween in _decorative_bubble_tweens.values(): - if bubble_tween != null: - bubble_tween.kill() - _decorative_bubble_tweens.clear() - for bubble: TextureRect in _decorative_bubbles: - if is_instance_valid(bubble): - bubble.queue_free() - _decorative_bubbles.clear() - _transition_bubble_ids.clear() - - -func _schedule_next_decorative_fish( - minimum_delay: float, - maximum_delay: float, -) -> void: - if not _decorative_presentation_active or not visible: - return - _decorative_fish_timer.start( - _decorative_rng.randf_range(minimum_delay, maximum_delay) - ) - - -func _on_decorative_fish_timer_timeout() -> void: - if ( - not _decorative_presentation_active - or not visible - or is_instance_valid(_decorative_fish) - ): - return - _spawn_decorative_fish(_decorative_generation) - - -func _spawn_decorative_fish(generation: int) -> void: - if ( - generation != _decorative_generation - or not _decorative_presentation_active - or not visible - or DECORATIVE_FISH_TEXTURES.is_empty() - ): - return - var layer_size: Vector2 = _decorative_fish_layer.size - if layer_size.x <= 1.0 or layer_size.y <= 1.0: - _schedule_next_decorative_fish(0.5, 1.0) - return - var texture: Texture2D = DECORATIVE_FISH_TEXTURES[ - _decorative_rng.randi_range(0, DECORATIVE_FISH_TEXTURES.size() - 1) - ] - var source_size: Vector2 = texture.get_size() - if source_size.x <= 0.0 or source_size.y <= 0.0: - _schedule_next_decorative_fish( - NEXT_FISH_DELAY_MIN, - NEXT_FISH_DELAY_MAX - ) - return - var longest_side: float = _decorative_rng.randf_range( - FISH_LONGEST_SIDE_MIN, - FISH_LONGEST_SIDE_MAX - ) - var presentation_scale: float = longest_side / maxf( - source_size.x, - source_size.y - ) - var presentation_size: Vector2 = source_size * presentation_scale - var fish_control := TextureRect.new() - fish_control.name = "DecorativeFish" - fish_control.texture = texture - fish_control.expand_mode = TextureRect.EXPAND_IGNORE_SIZE - fish_control.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_CENTERED - fish_control.texture_filter = CanvasItem.TEXTURE_FILTER_NEAREST - fish_control.mouse_filter = Control.MOUSE_FILTER_IGNORE - fish_control.custom_minimum_size = presentation_size - fish_control.size = presentation_size - fish_control.modulate.a = 0.46 - - var direction: float = ( - 1.0 - if _decorative_rng.randi_range(0, 1) == 1 - else -1.0 - ) - fish_control.flip_h = direction > 0.0 - var minimum_y: float = maxf(24.0, layer_size.y * 0.08) - var maximum_y: float = maxf( - minimum_y, - layer_size.y - presentation_size.y - maxf(24.0, layer_size.y * 0.08) - ) - var base_y: float = _decorative_rng.randf_range(minimum_y, maximum_y) - var bob_amplitude: float = _decorative_rng.randf_range(3.0, 8.0) - var bob_speed: float = _decorative_rng.randf_range(0.65, 1.15) - var crossing_duration: float = _decorative_rng.randf_range( - CROSSING_DURATION_MIN, - CROSSING_DURATION_MAX - ) - var horizontal_bounds: Vector2 = get_decorative_fish_crossing_bounds( - layer_size.x, - presentation_size.x, - direction, - ) - fish_control.position = Vector2(horizontal_bounds.x, base_y) - _decorative_fish_layer.add_child(fish_control) - _decorative_fish = fish_control - _decorative_fish_tween = create_tween() - _decorative_fish_tween.tween_method( - _update_decorative_fish.bind( - fish_control, - direction, - base_y, - bob_amplitude, - bob_speed, - crossing_duration, - generation - ), - 0.0, - 1.0, - crossing_duration - ) - _decorative_fish_tween.finished.connect( - _on_decorative_fish_finished.bind(fish_control, generation), - CONNECT_ONE_SHOT - ) - - -func _update_decorative_fish( - progress: float, - fish_control: TextureRect, - direction: float, - base_y: float, - bob_amplitude: float, - bob_speed: float, - crossing_duration: float, - generation: int, -) -> void: - if ( - generation != _decorative_generation - or not _decorative_presentation_active - or not is_instance_valid(fish_control) - ): - return - var horizontal_bounds: Vector2 = get_decorative_fish_crossing_bounds( - _decorative_fish_layer.size.x, - fish_control.size.x, - direction, - ) - fish_control.position.x = lerpf( - horizontal_bounds.x, horizontal_bounds.y, progress - ) - var bobbed_y: float = ( - base_y - + sin(progress * crossing_duration * bob_speed) * bob_amplitude - ) - fish_control.position.y = clampf( - bobbed_y, - 8.0, - maxf(8.0, _decorative_fish_layer.size.y - fish_control.size.y - 8.0) - ) - fish_control.position = _snap_world_preview(fish_control.position) - - -static func get_decorative_fish_crossing_bounds( - layer_width: float, - fish_width: float, - direction: float, -) -> Vector2: - var outside_left: float = -fish_width - FISH_EDGE_MARGIN - var outside_right: float = layer_width + FISH_EDGE_MARGIN - return ( - Vector2(outside_left, outside_right) - if direction > 0.0 - else Vector2(outside_right, outside_left) - ) - - -func _on_decorative_fish_finished( - fish_control: TextureRect, - generation: int, -) -> void: - if generation != _decorative_generation: - return - _decorative_fish_tween = null - if is_instance_valid(fish_control): - fish_control.queue_free() - if _decorative_fish == fish_control: - _decorative_fish = null - _schedule_next_decorative_fish( - NEXT_FISH_DELAY_MIN, - NEXT_FISH_DELAY_MAX - ) - - -func _schedule_next_decorative_bubble_event( - minimum_delay: float, - maximum_delay: float, -) -> void: - if not _decorative_presentation_active or not visible: - return - _decorative_bubble_event_timer.start( - _decorative_rng.randf_range(minimum_delay, maximum_delay) - ) - - -func _on_decorative_bubble_event_timer_timeout() -> void: - if not _decorative_presentation_active or not visible: - return - var available_slots: int = ( - MAX_DECORATIVE_BUBBLES - _get_idle_decorative_bubble_count() - ) - if available_slots <= 0: - _schedule_next_decorative_bubble_event( - BUBBLE_EVENT_DELAY_MIN, - BUBBLE_EVENT_DELAY_MAX - ) - return - var event_size: int = _choose_decorative_bubble_event_size() - event_size = mini(event_size, available_slots) - if not _spawn_decorative_bubble(_decorative_generation): - _schedule_next_decorative_bubble_event(0.5, 1.0) - return - _pending_cluster_bubbles = event_size - 1 - if _pending_cluster_bubbles > 0: - _start_decorative_bubble_cluster_timer() - else: - _schedule_next_decorative_bubble_event( - BUBBLE_EVENT_DELAY_MIN, - BUBBLE_EVENT_DELAY_MAX - ) - - -func _choose_decorative_bubble_event_size() -> int: - var roll: float = _decorative_rng.randf() - if roll < 0.75: - return 1 - if roll < 0.95: - return 2 - return 3 - - -func _start_decorative_bubble_cluster_timer() -> void: - _decorative_bubble_cluster_timer.start( - _decorative_rng.randf_range( - BUBBLE_CLUSTER_DELAY_MIN, - BUBBLE_CLUSTER_DELAY_MAX - ) - ) - - -func _on_decorative_bubble_cluster_timer_timeout() -> void: - if ( - not _decorative_presentation_active - or not visible - or _pending_cluster_bubbles <= 0 - ): - _pending_cluster_bubbles = 0 - return - if _get_idle_decorative_bubble_count() < MAX_DECORATIVE_BUBBLES: - _spawn_decorative_bubble(_decorative_generation) - _pending_cluster_bubbles -= 1 - if _pending_cluster_bubbles > 0: - _start_decorative_bubble_cluster_timer() - else: - _schedule_next_decorative_bubble_event( - BUBBLE_EVENT_DELAY_MIN, - BUBBLE_EVENT_DELAY_MAX - ) - - -func _spawn_decorative_bubble( - generation: int, - start_y_ratio: float = -1.0, - normalized_x_override: float = -1.0, - is_transition_bubble: bool = false, -) -> bool: - if ( - generation != _decorative_generation - or not _decorative_presentation_active - or not visible - or DECORATIVE_BUBBLE_TEXTURES.is_empty() - ): - return false - if is_transition_bubble: - if _transition_bubble_ids.size() >= MAX_TRANSITION_BUBBLES: - return false - elif _get_idle_decorative_bubble_count() >= MAX_DECORATIVE_BUBBLES: - return false - var layer_size: Vector2 = _decorative_bubble_layer.size - if layer_size.x <= 1.0 or layer_size.y <= 1.0: - return false - var texture: Texture2D = DECORATIVE_BUBBLE_TEXTURES[ - _decorative_rng.randi_range( - 0, - DECORATIVE_BUBBLE_TEXTURES.size() - 1 - ) - ] - var presentation_scale: float = _decorative_rng.randf_range( - BUBBLE_SCALE_MIN, - BUBBLE_SCALE_MAX - ) - var presentation_size: Vector2 = texture.get_size() * presentation_scale - var bubble := TextureRect.new() - bubble.name = "DecorativeBubble" - bubble.texture = texture - bubble.expand_mode = TextureRect.EXPAND_IGNORE_SIZE - bubble.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_CENTERED - bubble.texture_filter = CanvasItem.TEXTURE_FILTER_NEAREST - bubble.mouse_filter = Control.MOUSE_FILTER_IGNORE - bubble.size = presentation_size - bubble.modulate.a = _decorative_rng.randf_range( - BUBBLE_OPACITY_MIN, - BUBBLE_OPACITY_MAX - ) - _decorative_bubble_layer.add_child(bubble) - _decorative_bubbles.append(bubble) - if is_transition_bubble: - _transition_bubble_ids[bubble.get_instance_id()] = true - - var normalized_x: float = normalized_x_override - if normalized_x < 0.0: - normalized_x = _decorative_rng.randf_range(0.08, 0.92) - var drift_direction: float = ( - 1.0 if _decorative_rng.randi_range(0, 1) == 1 else -1.0 - ) - var horizontal_drift: float = ( - _decorative_rng.randf_range( - BUBBLE_DRIFT_MIN, - BUBBLE_DRIFT_MAX - ) - * drift_direction - ) - var wobble_amplitude: float = _decorative_rng.randf_range( - BUBBLE_WOBBLE_MIN, - BUBBLE_WOBBLE_MAX - ) - var wobble_cycles: float = _decorative_rng.randf_range(0.8, 1.6) - var wobble_phase: float = _decorative_rng.randf_range(0.0, TAU) - var travel_duration: float = _decorative_rng.randf_range( - BUBBLE_TRAVEL_DURATION_MIN, - BUBBLE_TRAVEL_DURATION_MAX - ) - if start_y_ratio >= 0.0: - var full_start_y: float = ( - layer_size.y + presentation_size.y + BUBBLE_EDGE_MARGIN - ) - var end_y: float = -presentation_size.y - BUBBLE_EDGE_MARGIN - var burst_start_y: float = ( - start_y_ratio * layer_size.y - presentation_size.y * 0.5 - ) - var remaining_distance: float = maxf(burst_start_y - end_y, 1.0) - var full_distance: float = maxf(full_start_y - end_y, 1.0) - travel_duration *= remaining_distance / full_distance - _update_decorative_bubble( - 0.0, - bubble, - normalized_x, - horizontal_drift, - wobble_amplitude, - wobble_cycles, - wobble_phase, - start_y_ratio, - generation - ) - var bubble_tween: Tween = create_tween() - _decorative_bubble_tweens[bubble.get_instance_id()] = bubble_tween - bubble_tween.tween_method( - _update_decorative_bubble.bind( - bubble, - normalized_x, - horizontal_drift, - wobble_amplitude, - wobble_cycles, - wobble_phase, - start_y_ratio, - generation - ), - 0.0, - 1.0, - travel_duration - ) - bubble_tween.finished.connect( - _on_decorative_bubble_finished.bind(bubble, generation), - CONNECT_ONE_SHOT - ) - return true - - -func _update_decorative_bubble( - progress: float, - bubble: TextureRect, - normalized_x: float, - horizontal_drift: float, - wobble_amplitude: float, - wobble_cycles: float, - wobble_phase: float, - start_y_ratio: float, - generation: int, -) -> void: - if ( - generation != _decorative_generation - or not _decorative_presentation_active - or not is_instance_valid(bubble) - ): - return - var layer_size: Vector2 = _decorative_bubble_layer.size - var start_y: float = ( - layer_size.y + bubble.size.y + BUBBLE_EDGE_MARGIN - ) - if start_y_ratio >= 0.0: - start_y = start_y_ratio * layer_size.y - bubble.size.y * 0.5 - var end_y: float = -bubble.size.y - BUBBLE_EDGE_MARGIN - var base_x: float = normalized_x * layer_size.x - var wobble: float = sin( - wobble_phase + progress * TAU * wobble_cycles - ) * wobble_amplitude - bubble.position = _snap_world_preview(Vector2( - base_x - + horizontal_drift * progress - + wobble - - bubble.size.x * 0.5, - lerpf(start_y, end_y, progress) - )) - - -func _on_decorative_bubble_finished( - bubble: TextureRect, - generation: int, -) -> void: - if generation != _decorative_generation: - return - if is_instance_valid(bubble): - _decorative_bubble_tweens.erase(bubble.get_instance_id()) - _transition_bubble_ids.erase(bubble.get_instance_id()) - _decorative_bubbles.erase(bubble) - bubble.queue_free() - - -func _get_idle_decorative_bubble_count() -> int: - return _decorative_bubbles.size() - _transition_bubble_ids.size() - - -func _emit_navigation_bubble_flurry() -> void: - # Page changes now use a quick fade and scale without travel bubbles. - pass - - -func _exit_tree() -> void: - _stop_decorative_presentation() diff --git a/ui/title_screen.tscn b/ui/title_screen.tscn index 4d02718..1888db9 100644 --- a/ui/title_screen.tscn +++ b/ui/title_screen.tscn @@ -1,29 +1,36 @@ -[gd_scene load_steps=25 format=3] +[gd_scene load_steps=28 format=3] [ext_resource type="Script" path="res://ui/title_screen.gd" id="1_script"] [ext_resource type="Theme" path="res://ui/game_theme.tres" id="2_theme"] [ext_resource type="PackedScene" path="res://ui/settings_panel.tscn" id="3_settings"] -[ext_resource type="Shader" path="res://ui/title_water_background.gdshader" id="4_water_shader"] -[ext_resource type="Texture2D" path="res://ui/assets/title/netfishing_logo.png" id="5_logo"] +[ext_resource type="Shader" path="res://ui/player_menu_pattern.gdshader" id="4_grass_shader"] +[ext_resource type="Texture2D" path="res://ui/assets/title/straywild_logo.png" id="5_logo"] [ext_resource type="Shader" path="res://ui/title_logo_underwater.gdshader" id="6_logo_shader"] [ext_resource type="Script" path="res://ui/components/bubble_menu/bubble_button.gd" id="7_bubble_button"] [ext_resource type="Script" path="res://ui/components/bubble_menu/bubble_cluster.gd" id="8_bubble_cluster"] [ext_resource type="Resource" path="res://ui/components/bubble_menu/bubble_menu_profile.tres" id="9_bubble_profile"] [ext_resource type="PackedScene" path="res://ui/title_confirmation_bubble_page.tscn" id="10_confirmation_page"] [ext_resource type="PackedScene" path="res://ui/network/join_game_page.tscn" id="11_join_page"] -[ext_resource type="Texture2D" path="res://ui/icons/pictograms/online_dark.png" id="12_online_dark"] -[ext_resource type="Texture2D" path="res://ui/icons/pictograms/settings_dark.png" id="13_settings_dark"] -[ext_resource type="Texture2D" path="res://ui/icons/pictograms/x_dark.png" id="14_x_dark"] +[ext_resource type="Texture2D" path="res://ui/icons/new_menu/online.png" id="12_online_dark"] +[ext_resource type="Texture2D" path="res://ui/icons/new_menu/settings.png" id="13_settings_dark"] +[ext_resource type="Texture2D" path="res://ui/icons/new_menu/close.png" id="14_x_dark"] [ext_resource type="PackedScene" path="res://ui/title_credits_page.tscn" id="15_credits_page"] -[ext_resource type="Texture2D" path="res://ui/icons/main_menu/continue.png" id="16_continue"] +[ext_resource type="Texture2D" path="res://ui/icons/new_menu/play.png" id="16_continue"] [ext_resource type="Texture2D" path="res://ui/icons/main_menu/new_game.png" id="17_new_game"] -[ext_resource type="Texture2D" path="res://ui/icons/main_menu/credits.png" id="18_credits"] +[ext_resource type="Texture2D" path="res://ui/icons/new_menu/credits.png" id="18_credits"] [ext_resource type="Texture2D" path="res://ui/icons/main_menu/delete_save.png" id="19_delete_save"] [ext_resource type="PackedScene" path="res://ui/new_game_setup_page.tscn" id="20_new_game_setup"] [ext_resource type="PackedScene" path="res://ui/save_slots_page.tscn" id="21_save_slots"] +[ext_resource type="Texture2D" path="res://world/generation/chunks/assets/chunk_0000_grass_lite.png" id="22_grass_pattern"] +[ext_resource type="Resource" path="res://ui/components/bubble_menu/title_menu_profile.tres" id="23_title_menu_profile"] +[ext_resource type="Resource" path="res://ui/components/bubble_menu/title_secondary_menu_profile.tres" id="24_title_secondary_menu_profile"] -[sub_resource type="ShaderMaterial" id="ShaderMaterial_title_water"] -shader = ExtResource("4_water_shader") +[sub_resource type="ShaderMaterial" id="ShaderMaterial_title_grass"] +shader = ExtResource("4_grass_shader") +shader_parameter/pattern_texture = ExtResource("22_grass_pattern") +shader_parameter/source_tile_size = Vector2(128, 128) +shader_parameter/display_scale = 1.0 +shader_parameter/scroll_velocity_pixels = Vector2(-7.5, -7.5) [sub_resource type="ShaderMaterial" id="ShaderMaterial_title_logo"] shader = ExtResource("6_logo_shader") @@ -39,6 +46,17 @@ corner_radius_top_right = 14 corner_radius_bottom_right = 14 corner_radius_bottom_left = 14 +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_continue_stats_drawer"] +content_margin_left = 10.0 +content_margin_top = 18.0 +content_margin_right = 10.0 +content_margin_bottom = 2.0 +bg_color = Color(0.031, 0.122, 0.169, 1) +corner_radius_top_left = 14 +corner_radius_top_right = 14 +corner_radius_bottom_right = 14 +corner_radius_bottom_left = 14 + [node name="TitleScreen" type="Control"] unique_name_in_owner = true z_index = 200 @@ -55,7 +73,7 @@ script = ExtResource("1_script") [node name="Background" type="ColorRect" parent="."] unique_name_in_owner = true visible = false -material = SubResource("ShaderMaterial_title_water") +material = SubResource("ShaderMaterial_title_grass") layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -64,42 +82,6 @@ grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 -[node name="DecorativeFishLayer" type="Control" parent="."] -unique_name_in_owner = true -z_index = 1 -clip_contents = true -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -mouse_filter = 2 - -[node name="DecorativeFishTimer" type="Timer" parent="."] -unique_name_in_owner = true -one_shot = true - -[node name="DecorativeBubbleLayer" type="Control" parent="."] -unique_name_in_owner = true -z_index = 2 -clip_contents = true -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -mouse_filter = 2 - -[node name="DecorativeBubbleEventTimer" type="Timer" parent="."] -unique_name_in_owner = true -one_shot = true - -[node name="DecorativeBubbleClusterTimer" type="Timer" parent="."] -unique_name_in_owner = true -one_shot = true - [node name="ResponsiveTitleStage" type="Control" parent="."] unique_name_in_owner = true z_index = 10 @@ -122,13 +104,13 @@ mouse_filter = 1 unique_name_in_owner = true z_index = 12 layout_mode = 1 -anchor_top = 1.0 +anchor_top = 0.5 anchor_right = 1.0 -anchor_bottom = 1.0 -offset_top = -104.0 -offset_bottom = -48.0 +anchor_bottom = 0.5 +offset_top = 45.0 +offset_bottom = 101.0 grow_horizontal = 2 -grow_vertical = 0 +grow_vertical = 2 mouse_filter = 2 [node name="StartPromptLabel" type="Label" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/StartPromptCenter"] @@ -136,8 +118,6 @@ unique_name_in_owner = true layout_mode = 2 mouse_filter = 2 theme_override_colors/font_color = Color(1, 1, 1, 1) -theme_override_colors/font_outline_color = Color(0.02, 0.075, 0.11, 0.9) -theme_override_constants/outline_size = 3 theme_override_font_sizes/font_size = 39 text = "press any key to start" horizontal_alignment = 1 @@ -202,27 +182,33 @@ texture = ExtResource("5_logo") expand_mode = 1 stretch_mode = 5 -[node name="VersionRow" type="Control" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent/BrandingSlot/BrandingMotionRoot/BrandingContent"] +[node name="VersionRow" type="Control" parent="ResponsiveTitleStage/TitlePresentationScaleRoot"] unique_name_in_owner = true -custom_minimum_size = Vector2(0, 18) -layout_mode = 2 +z_index = 12 +custom_minimum_size = Vector2(280, 28) +layout_mode = 1 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -140.0 +offset_top = -38.0 +offset_right = 140.0 +offset_bottom = -10.0 +grow_horizontal = 2 +grow_vertical = 0 mouse_filter = 2 -[node name="VersionAnchor" type="CenterContainer" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent/BrandingSlot/BrandingMotionRoot/BrandingContent/VersionRow"] +[node name="VersionAnchor" type="CenterContainer" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/VersionRow"] layout_mode = 1 -anchor_left = 0.7 -anchor_top = 0.5 -anchor_right = 0.7 -anchor_bottom = 0.5 -offset_left = -140.0 -offset_top = -17.0 -offset_right = 140.0 -offset_bottom = 11.0 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 -[node name="PlaytestLabel" type="Label" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent/BrandingSlot/BrandingMotionRoot/BrandingContent/VersionRow/VersionAnchor"] +[node name="PlaytestLabel" type="Label" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/VersionRow/VersionAnchor"] unique_name_in_owner = true layout_mode = 2 theme_override_colors/font_color = Color(0.682, 0.733, 0.761, 1) @@ -242,47 +228,75 @@ layout_mode = 2 [node name="BubbleLayoutSlot" type="Control" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent/ButtonCenter"] unique_name_in_owner = true -custom_minimum_size = Vector2(440, 318) +custom_minimum_size = Vector2(500, 360) layout_mode = 2 [node name="BubbleMotionRoot" type="Control" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent/ButtonCenter/BubbleLayoutSlot"] unique_name_in_owner = true layout_mode = 0 -offset_right = 440.0 -offset_bottom = 318.0 +offset_right = 500.0 +offset_bottom = 360.0 mouse_filter = 2 [node name="BubbleField" type="Control" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent/ButtonCenter/BubbleLayoutSlot/BubbleMotionRoot"] unique_name_in_owner = true -custom_minimum_size = Vector2(440, 318) +custom_minimum_size = Vector2(500, 360) layout_mode = 0 -offset_right = 440.0 -offset_bottom = 318.0 +offset_right = 500.0 +offset_top = -10.0 +offset_bottom = 350.0 script = ExtResource("8_bubble_cluster") -profile = ExtResource("9_bubble_profile") +profile = ExtResource("23_title_menu_profile") +desktop_reference_size = Vector2(500, 360) +collision_separation_enabled = false [node name="PlayButton" type="Button" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent/ButtonCenter/BubbleLayoutSlot/BubbleMotionRoot/BubbleField"] unique_name_in_owner = true -offset_left = 106.0 -offset_top = 71.0 -offset_right = 290.0 -offset_bottom = 249.0 +offset_left = 36.0 +offset_top = 30.0 +offset_right = 366.0 +offset_bottom = 360.0 texture_filter = 1 icon = ExtResource("16_continue") -tooltip_text = "play" -accessibility_name = "play" +accessibility_name = "play straywild" script = ExtResource("7_bubble_button") -profile = ExtResource("9_bubble_profile") -neutral_size = Vector2(184, 178) -desktop_anchor = Vector2(198, 160) -compact_anchor = Vector2(198, 164) -minimum_font_size = 19 -maximum_font_size = 30 -horizontal_amplitude = 1.8 -vertical_amplitude = 4.6 -motion_period = 5.8 -deformation_amplitude = 0.01 -deformation_period = 6.7 +profile = ExtResource("23_title_menu_profile") +neutral_size = Vector2(330, 330) +desktop_anchor = Vector2(201, 195) +compact_anchor = Vector2(201, 195) +minimum_font_size = 28 +maximum_font_size = 36 +icon_fill_ratio_override = 0.9 +horizontal_amplitude = 0.0 +vertical_amplitude = 0.0 +deformation_amplitude = 0.0 +hover_wiggle_amplitude = Vector2(7, 6) +hover_wiggle_period = 3.8 +hover_drawer_text = "play straywild" +hover_drawer_mode = 1 +elliptical_hit_area = false + +[node name="ContinueStatsDrawer" type="RichTextLabel" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent/ButtonCenter/BubbleLayoutSlot/BubbleMotionRoot/BubbleField/PlayButton"] +unique_name_in_owner = true +show_behind_parent = true +z_index = -1 +visible = false +layout_mode = 0 +offset_left = 22.0 +offset_top = 314.0 +offset_right = 308.0 +offset_bottom = 360.0 +pivot_offset = Vector2(143, 0) +scale = Vector2(1, 0.001) +mouse_filter = 2 +theme_override_font_sizes/normal_font_size = 15 +text = "" +bbcode_enabled = true +scroll_active = false +autowrap_mode = 2 +horizontal_alignment = 1 +vertical_alignment = 1 +theme_override_styles/normal = SubResource("StyleBoxFlat_continue_stats_drawer") [node name="NewGameButton" type="Button" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent/ButtonCenter/BubbleLayoutSlot/BubbleMotionRoot/BubbleField"] unique_name_in_owner = true @@ -313,75 +327,75 @@ deformation_period = 5.9 [node name="SettingsButton" type="Button" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent/ButtonCenter/BubbleLayoutSlot/BubbleMotionRoot/BubbleField"] unique_name_in_owner = true -offset_left = 254.0 -offset_top = 12.0 -offset_right = 374.0 -offset_bottom = 128.0 +offset_left = 384.0 +offset_top = 116.0 +offset_right = 456.0 +offset_bottom = 188.0 texture_filter = 1 icon = ExtResource("13_settings_dark") -tooltip_text = "settings" accessibility_name = "settings" script = ExtResource("7_bubble_button") -profile = ExtResource("9_bubble_profile") -desktop_anchor = Vector2(314, 70) -compact_anchor = Vector2(333, 75) -compact_minimum_size = Vector2(94, 90) +profile = ExtResource("24_title_secondary_menu_profile") +neutral_size = Vector2(72, 72) +desktop_anchor = Vector2(420, 152) +compact_anchor = Vector2(420, 152) minimum_font_size = 15 -maximum_font_size = 22 -vertical_amplitude = 3.7 -motion_period = 4.9 -motion_phase = 2.5 -deformation_period = 6.3 +maximum_font_size = 20 +horizontal_amplitude = 0.0 +vertical_amplitude = 0.0 +deformation_amplitude = 0.0 +hover_wiggle_amplitude = Vector2(2.4, 1.2) +hover_wiggle_period = 1.9 +hover_drawer_text = "settings" +elliptical_hit_area = false [node name="CreditsButton" type="Button" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent/ButtonCenter/BubbleLayoutSlot/BubbleMotionRoot/BubbleField"] unique_name_in_owner = true -offset_left = 54.0 -offset_top = 209.0 -offset_right = 138.0 -offset_bottom = 291.0 +offset_left = 384.0 +offset_top = 202.0 +offset_right = 456.0 +offset_bottom = 274.0 texture_filter = 1 icon = ExtResource("18_credits") -tooltip_text = "credits" accessibility_name = "credits" script = ExtResource("7_bubble_button") -profile = ExtResource("9_bubble_profile") -neutral_size = Vector2(84, 82) -desktop_anchor = Vector2(96, 250) -compact_anchor = Vector2(82, 258) -compact_minimum_size = Vector2(62, 62) -minimum_font_size = 12 -maximum_font_size = 17 -horizontal_amplitude = 1.4 -vertical_amplitude = 3.0 -motion_period = 5.0 -motion_phase = 1.8 -deformation_amplitude = 0.015 -deformation_period = 5.6 +profile = ExtResource("24_title_secondary_menu_profile") +neutral_size = Vector2(72, 72) +desktop_anchor = Vector2(420, 238) +compact_anchor = Vector2(420, 238) +minimum_font_size = 15 +maximum_font_size = 20 +horizontal_amplitude = 0.0 +vertical_amplitude = 0.0 +deformation_amplitude = 0.0 +hover_wiggle_amplitude = Vector2(2.4, 1.2) +hover_wiggle_period = 1.9 +hover_drawer_text = "credits" +elliptical_hit_area = false [node name="JoinGameButton" type="Button" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent/ButtonCenter/BubbleLayoutSlot/BubbleMotionRoot/BubbleField"] unique_name_in_owner = true -offset_left = 21.0 -offset_top = 11.0 -offset_right = 143.0 -offset_bottom = 129.0 +offset_left = 384.0 +offset_top = 30.0 +offset_right = 456.0 +offset_bottom = 102.0 texture_filter = 1 icon = ExtResource("12_online_dark") -tooltip_text = "join game" -accessibility_name = "join game" +accessibility_name = "online" script = ExtResource("7_bubble_button") -profile = ExtResource("9_bubble_profile") -neutral_size = Vector2(122, 118) -desktop_anchor = Vector2(82, 70) -compact_anchor = Vector2(63, 75) -compact_minimum_size = Vector2(82, 80) +profile = ExtResource("24_title_secondary_menu_profile") +neutral_size = Vector2(72, 72) +desktop_anchor = Vector2(420, 66) +compact_anchor = Vector2(420, 66) minimum_font_size = 15 -maximum_font_size = 22 -horizontal_amplitude = 1.7 -vertical_amplitude = 3.8 -motion_period = 5.2 -motion_phase = 3.1 -deformation_amplitude = 0.015 -deformation_period = 5.7 +maximum_font_size = 20 +horizontal_amplitude = 0.0 +vertical_amplitude = 0.0 +deformation_amplitude = 0.0 +hover_wiggle_amplitude = Vector2(2.4, 1.2) +hover_wiggle_period = 1.9 +hover_drawer_text = "online" +elliptical_hit_area = false [node name="DeleteSaveButton" type="Button" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent/ButtonCenter/BubbleLayoutSlot/BubbleMotionRoot/BubbleField"] unique_name_in_owner = true @@ -411,35 +425,41 @@ deformation_period = 5.4 [node name="QuitButton" type="Button" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent/ButtonCenter/BubbleLayoutSlot/BubbleMotionRoot/BubbleField"] unique_name_in_owner = true -offset_left = 255.0 -offset_top = 204.0 -offset_right = 349.0 -offset_bottom = 296.0 +offset_left = 384.0 +offset_top = 288.0 +offset_right = 456.0 +offset_bottom = 360.0 texture_filter = 1 icon = ExtResource("14_x_dark") -tooltip_text = "quit" -accessibility_name = "quit" +accessibility_name = "close" script = ExtResource("7_bubble_button") -profile = ExtResource("9_bubble_profile") -neutral_size = Vector2(94, 92) -desktop_anchor = Vector2(302, 250) -compact_anchor = Vector2(317, 254) -compact_minimum_size = Vector2(68, 68) +profile = ExtResource("24_title_secondary_menu_profile") +neutral_size = Vector2(72, 72) +desktop_anchor = Vector2(420, 324) +compact_anchor = Vector2(420, 324) minimum_font_size = 14 -maximum_font_size = 18 -horizontal_amplitude = 1.4 -vertical_amplitude = 3.2 -motion_period = 4.2 -motion_phase = 4.8 -deformation_amplitude = 0.02 -deformation_period = 4.8 +maximum_font_size = 20 +horizontal_amplitude = 0.0 +vertical_amplitude = 0.0 +deformation_amplitude = 0.0 +hover_wiggle_amplitude = Vector2(2.4, 1.2) +hover_wiggle_period = 1.9 +hover_drawer_text = "close" +elliptical_hit_area = false -[node name="FeedbackLabel" type="RichTextLabel" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent"] +[node name="FeedbackLabel" type="RichTextLabel" parent="ResponsiveTitleStage/TitlePresentationScaleRoot"] unique_name_in_owner = true +z_index = 12 visible = false -custom_minimum_size = Vector2(430, 44) -layout_mode = 2 -size_flags_horizontal = 4 +custom_minimum_size = Vector2(500, 44) +layout_mode = 1 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -250.0 +offset_top = 224.0 +offset_right = 250.0 +offset_bottom = 268.0 +grow_horizontal = 2 text = "" bbcode_enabled = true scroll_active = false diff --git a/ui/title_water_background.gdshader b/ui/title_water_background.gdshader deleted file mode 100644 index ca12bc6..0000000 --- a/ui/title_water_background.gdshader +++ /dev/null @@ -1,97 +0,0 @@ -shader_type canvas_item; - -uniform vec4 surface_color : source_color = vec4(0.10, 0.45, 0.62, 1.0); -uniform vec4 middle_color : source_color = vec4(0.055, 0.285, 0.40, 1.0); -uniform vec4 depth_color : source_color = vec4(0.02, 0.16, 0.27, 1.0); -uniform vec2 virtual_pixel_density = vec2(320.0, 180.0); -uniform float color_step_count : hint_range(2.0, 16.0, 1.0) = 14.0; -uniform float continuous_depth_blend : hint_range(0.0, 0.25, 0.01) = 0.12; -uniform float wave_speed : hint_range(0.0, 0.5, 0.01) = 0.10; -uniform float wave_scale : hint_range(0.5, 8.0, 0.1) = 2.4; -uniform float wave_strength : hint_range(0.0, 0.05, 0.001) = 0.012; -uniform float caustic_strength : hint_range(0.0, 0.08, 0.001) = 0.018; -uniform bool animation_enabled = true; - -void fragment() { - vec2 grid_size = max(virtual_pixel_density, vec2(1.0)); - vec2 pixel_uv = (floor(UV * grid_size) + vec2(0.5)) / grid_size; - float continuous_depth = pixel_uv.y; - float caustic_level = 0.0; - if (animation_enabled) { - float motion = TIME * wave_speed; - float broad_wave = sin( - pixel_uv.x * wave_scale + motion - ); - float secondary_wave = sin( - pixel_uv.x * 1.1 + pixel_uv.y * 1.6 - motion * 0.65 - ); - float movement_falloff = 1.0 - pixel_uv.y * 0.75; - float depth_displacement = ( - (broad_wave * 0.65 + secondary_wave * 0.35) - * wave_strength - * movement_falloff - ); - continuous_depth = clamp( - pixel_uv.y - + depth_displacement, - 0.0, - 1.0 - ); - float caustic_wave = clamp( - ( - sin( - pixel_uv.x * 4.0 - + pixel_uv.y * 1.2 - + motion * 0.7 - ) - * sin( - pixel_uv.x * 1.7 - - pixel_uv.y * 2.2 - - motion * 0.55 - ) - - 0.25 - ) / 0.75, - 0.0, - 1.0 - ); - caustic_level = floor(caustic_wave * 3.0) / 3.0; - } - float depth_steps = max(2.0, floor(color_step_count)); - float band_index = floor( - continuous_depth * (depth_steps - 1.0) + 0.5 - ); - float band_depth = band_index / (depth_steps - 1.0); - float display_depth = mix( - band_depth, - continuous_depth, - clamp(continuous_depth_blend, 0.0, 0.25) - ); - - vec3 water_color; - if (display_depth < 0.5) { - water_color = mix( - surface_color.rgb, - middle_color.rgb, - display_depth * 2.0 - ); - } else { - water_color = mix( - middle_color.rgb, - depth_color.rgb, - (display_depth - 0.5) * 2.0 - ); - } - - float upper_water_mask = 1.0 - smoothstep( - 0.18, - 0.34, - pixel_uv.y - ); - water_color += ( - vec3(0.05, 0.12, 0.14) - * caustic_level - * upper_water_mask - * caustic_strength - ); - COLOR = vec4(clamp(water_color, vec3(0.0), vec3(1.0)), 1.0); -} diff --git a/ui/title_water_background.gdshader.uid b/ui/title_water_background.gdshader.uid deleted file mode 100644 index fda761b..0000000 --- a/ui/title_water_background.gdshader.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c8s1g7tn771du diff --git a/world/environment/netfishing_environment.tres b/world/environment/straywild_environment.tres similarity index 87% rename from world/environment/netfishing_environment.tres rename to world/environment/straywild_environment.tres index 4f625e4..f4c5b75 100644 --- a/world/environment/netfishing_environment.tres +++ b/world/environment/straywild_environment.tres @@ -1,6 +1,6 @@ [gd_resource type="Environment" load_steps=2 format=3] -[ext_resource type="Sky" path="res://world/environment/netfishing_sky.tres" id="1_sky"] +[ext_resource type="Sky" path="res://world/environment/straywild_sky.tres" id="1_sky"] [resource] background_mode = 2 diff --git a/world/environment/netfishing_sky.gdshader b/world/environment/straywild_sky.gdshader similarity index 98% rename from world/environment/netfishing_sky.gdshader rename to world/environment/straywild_sky.gdshader index 22af7ad..83defee 100644 --- a/world/environment/netfishing_sky.gdshader +++ b/world/environment/straywild_sky.gdshader @@ -1,6 +1,6 @@ shader_type sky; -#include "res://world/environment/netfishing_sky_clouds.gdshaderinc" +#include "res://world/environment/straywild_sky_clouds.gdshaderinc" uniform vec4 sky_top_color : source_color = vec4(0.204, 0.498, 0.643, 1.0); uniform vec4 sky_horizon_color : source_color = vec4(0.663, 0.843, 0.847, 1.0); diff --git a/world/environment/netfishing_sky.gdshader.uid b/world/environment/straywild_sky.gdshader.uid similarity index 100% rename from world/environment/netfishing_sky.gdshader.uid rename to world/environment/straywild_sky.gdshader.uid diff --git a/world/environment/netfishing_sky.tres b/world/environment/straywild_sky.tres similarity index 89% rename from world/environment/netfishing_sky.tres rename to world/environment/straywild_sky.tres index 98fb4e0..553b687 100644 --- a/world/environment/netfishing_sky.tres +++ b/world/environment/straywild_sky.tres @@ -1,8 +1,8 @@ [gd_resource type="Sky" format=3 uid="uid://dersyay71dyat"] -[ext_resource type="Shader" uid="uid://chbcdlhui3ro4" path="res://world/environment/netfishing_sky.gdshader" id="1_sky_shader"] +[ext_resource type="Shader" uid="uid://chbcdlhui3ro4" path="res://world/environment/straywild_sky.gdshader" id="1_sky_shader"] -[sub_resource type="ShaderMaterial" id="ShaderMaterial_netfishing"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_straywild"] shader = ExtResource("1_sky_shader") shader_parameter/cloud_coverage = 0.0 shader_parameter/cloud_opacity = 0.0 @@ -36,4 +36,4 @@ shader_parameter/star_visibility = 0.0 shader_parameter/star_strength = 0.72 [resource] -sky_material = SubResource("ShaderMaterial_netfishing") +sky_material = SubResource("ShaderMaterial_straywild") diff --git a/world/environment/netfishing_sky_clouds.gdshaderinc b/world/environment/straywild_sky_clouds.gdshaderinc similarity index 100% rename from world/environment/netfishing_sky_clouds.gdshaderinc rename to world/environment/straywild_sky_clouds.gdshaderinc diff --git a/world/environment/netfishing_sky_clouds.gdshaderinc.uid b/world/environment/straywild_sky_clouds.gdshaderinc.uid similarity index 100% rename from world/environment/netfishing_sky_clouds.gdshaderinc.uid rename to world/environment/straywild_sky_clouds.gdshaderinc.uid diff --git a/world/interactables/fishing_shop_world.tscn b/world/interactables/fishing_shop_world.tscn index 7221005..760f3b6 100644 --- a/world/interactables/fishing_shop_world.tscn +++ b/world/interactables/fishing_shop_world.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=5 format=3] [ext_resource type="Script" path="res://world/fishing_shop_interaction.gd" id="1_shop"] -[ext_resource type="PackedScene" path="res://art/exported/characters/base/netfishing_base_character.glb" id="2_character"] +[ext_resource type="PackedScene" path="res://art/exported/characters/base/straywild_base_character.glb" id="2_character"] [ext_resource type="Script" path="res://world/world_character_display.gd" id="3_display"] [sub_resource type="SphereShape3D" id="InteractionShape"] diff --git a/world/test_world.tscn b/world/test_world.tscn index 18697aa..2a94f53 100644 --- a/world/test_world.tscn +++ b/world/test_world.tscn @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://world/test_world.gd" id="1_world"] [ext_resource type="PackedScene" path="res://world/generation/generated_world_region.tscn" id="2_island"] [ext_resource type="Script" path="res://world/below_world_failsafe.gd" id="3_water_trigger"] -[ext_resource type="Environment" path="res://world/environment/netfishing_environment.tres" id="4_environment"] +[ext_resource type="Environment" path="res://world/environment/straywild_environment.tres" id="4_environment"] [sub_resource type="BoxShape3D" id="NorthSouthBoundsShape"] size = Vector3(168.8772, 14, 2) diff --git a/world/world_time_visual_controller.gd b/world/world_time_visual_controller.gd index ec67e85..92614c5 100644 --- a/world/world_time_visual_controller.gd +++ b/world/world_time_visual_controller.gd @@ -206,7 +206,7 @@ func _prepare_runtime_environment() -> bool: runtime_sky.sky_material.duplicate(true) as ShaderMaterial ) if _sky_material == null: - push_error("World time visuals require the NETfishing sky material.") + push_error("World time visuals require the straywild sky material.") return false runtime_sky.sky_material = _sky_material _environment.sky = runtime_sky From 737d1cf2e09e5036c651d58b774c3b8966e51661 Mon Sep 17 00:00:00 2001 From: Voyager Date: Tue, 25 Aug 2026 17:14:22 -0400 Subject: [PATCH 70/90] Restore authored hand net --- art/exported/items/equipment/net.glb | Bin 0 -> 357136 bytes art/exported/items/equipment/net.glb.import | 45 ++++++++++ art/exported/items/equipment/net_Material.png | Bin 0 -> 282926 bytes .../items/equipment/net_Material.png.import | 43 +++++++++ .../items/equipment/net_Plane Base Color.png | Bin 0 -> 43400 bytes .../equipment/net_Plane Base Color.png.import | 43 +++++++++ art/source/items/equipment/net.blend | Bin 0 -> 388516 bytes player/net_attachment.gd | 85 +++++++++++++++++- player/net_attachment.tscn | 56 ++---------- tests/net_attachment_validation.gd | 78 +++++++++++++--- 10 files changed, 284 insertions(+), 66 deletions(-) create mode 100644 art/exported/items/equipment/net.glb create mode 100644 art/exported/items/equipment/net.glb.import create mode 100644 art/exported/items/equipment/net_Material.png create mode 100644 art/exported/items/equipment/net_Material.png.import create mode 100644 art/exported/items/equipment/net_Plane Base Color.png create mode 100644 art/exported/items/equipment/net_Plane Base Color.png.import create mode 100644 art/source/items/equipment/net.blend diff --git a/art/exported/items/equipment/net.glb b/art/exported/items/equipment/net.glb new file mode 100644 index 0000000000000000000000000000000000000000..db4fa3476c5d4f9544be0dd75efa6054c9d43a82 GIT binary patch literal 357136 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

L5C7DU|9AD{Kl=Mee?QJnztjJB^`V1oktIAW zvxJ-LB1dEotvx(Fz>qZ>4DDcKj?7Ru#D|uTypb_7MOd!nUMK+C03<;As4E%- z?I6@2=^-lW18pDVgbdICTA|P%yN?$PV$44@!VG0nJ3N$OA<}8;K^P-l#7M zg*Ft8L4Ig9N`y8M5r~6gPz1CQh>ixLiD(?O<4`{&L_^R#Xy>71WP?Vaq0kOR7HBwH zgcd-%00pAyNQ^c^yBTdjqMaxW9YzPCJ&2Z| z0<;BPh4w1CjBX(+hGDl5hSj1s$O`L$y+J*&7id4akM2Nw2Nk1V&}Y;FZ3{Y&6zDBd zL90Ti(9ftI>0&>_rw$!LkI_SDAEE>38frsdp#6fbpeoda8lY`J<>)wij(&yqS9Ao` zz+?7yXxq_sbP;_-@1T8$D$!~58a;#d89Iinv0>N{%o;wuFdD|e7|=2>3ibdQVFu6| zV0Td~a>4pwt*8(70sV&TFbnKAWP!ax_fS`ijom|ROb>g4%rFyZO|VDk8*;@4VBgRH z>?>+UPM8hWjBKz*^b+;Nx?wL-H|!}qKc{2vm=1h8&?n@KIbffV1NI(;VhNZC^TcAX z2xucP56lqbV_aytm_F7Y8;^xR8-n%4?6Hy9P-ur@mRJ|e8;gQA3S(iWm;l3}#W7>d z4V#38K^uk*#Cl_6uo2LXz-%#d%pdcG))(uJF|ldb6lkYlgRp+sIBXQOqcBG-2%C)s zV9{6{7LNH~V$2JhfW=~Cv0!W#7Krh%8Q648h$UeJHW{0VO~giHiP&&#FqVw@VUbuo zHWgbT3LawA#i|R04Wprf{-eq0L4Ne9K$h4J%m9MT9zDdD;(2kz81knW;Rqo@hjY8O zMd-nIhseOuBM?e)Mo798fvth65Sl|r=yf!c!^1a8 zJ~rGPDJh*-_j8SDg|*Iw3m48PeMVJ6uk3M*4}Ch|FLAvZ86IBjmHM&4dxquAxHwl3 zL0^@YR=F-MEp0{Ei(lz4Jt-7F^7H2I(HO-O5p#ggYTt@GcgC+xON+3gP%`XoYi|=& zYUT(-L&FI%*S9UgSEtXa8>mZm+O#1p&2eK|T46Sb+bT^C+9hmU(+@fpz-RS(tAM5L zCdx0-tsq($mUe+s$!(?)a{)wR!63(WCcRSXgXh(CK$T zn$*MbIkh_{&1lBPT73|6K1Ah$lyCK%A*COW(?B=BhkSPNlCHmBP|3w$)KqwRZvZ@!+$xI3Bla7QC{O z=#Q|CJ8qC0_H&Ssh8YX3kCxi$qOJXOtaMMh^zA!mNvSa4X7SF`5y}f~;+NasIucE; zOY^VEj*d?k-)~2Atb`fE@1CS?-Ui0#$9Qe_pQKLKrP-IeNvPSNxnIcmP~8`; zFzIjTHb}*8Hd%GCw8rvb;hN#Av$KU)zNJER(h+akBiPze4v-KJzOK~Yf}tV`qL`{O zZeE7*OV+Pls}p4-a@K3SvFCQ}LgniHwtyE^l0fvFR^}FdhlXTfjujK87>Ad&e|dakI(Fi#1Kt^mm$)zF4{OISjhX zx;jh-D?ZZu6-2q*Ou->T7Ykctp?qw=FdsD9X5FGYOQ~PV%^vyE-x$GK>(j&a`8Mw! zh%aK?`2lyIWg=CDW&i&Dl|P#+AAS{CdD3gP8kD`-VJ0c~Aec&Iu=HiavV>@{vegdm zH)Pk&ol{o7h-#V6IN3_M(|Yk*rw3K#biMjbHrG^qNJw6D5u55bGd9HnDjp782DXF6(fb(|-;<3?*$okt zrTiRp{RXL-Mh6pFXzu9w6;MTNtFYWVI`Fn`dVq5Ot0W^6*J9yI9qGsE83!(&>eILH z2Z_Xh;VKS@B`37Chxp)KC-5gx*zVgAOB`ONf6Px0wZ01GY>;_v(vLSq>u(Dd7(WXQ z3s+)$m6aNc1x0Hv7Zj_P+U(46&5WOoRmA>GcMA*Vyf5{S##e| zKa-QXyWCPfcUwPBuzh0OXocE9c9ga}`BCwX zG#Gr9DF5^>hx3BwewkJut<3MEtSpvM(qf;Ri}skYnnxzTw0|KZCwaVYdUZB-Exb08 z-mA2m16kU1VU0Yy#iLkE;#9ceD0t_Y*pqv#U&M%fa^|*26f$(hDzu#sS#>(O?4Jc; zr@pXTF7#H$N0%OnypvYb6IHnf?S1K}Y=HWphq%8{aS@tv>BgH(l-Eztdzq~I-lLi- zOjyZSIn)4CZL1Zl=8RsuQ?*OvR=h?h%)<&&f6{Ak2nT#w!04&oEoV%Wn~`j@v!2y9 z17sz^u9;e97~cfvYo)#Z8eQiRDaoU&*5F$viA!X|XUEXQ^$(HO^*^x0&r3fd$Z*(?HXDdNF9HUzwZ-whYyvkrlQ&*f8q|Osw znFp>W7&jvjJV6@$^3}0q-H^)k0b$C;C&y$g>VMy1#SydL3`q??HWR<%t15`F99~h@ z2YV&|oH8}$xAZ3Cvh>PxS;jh2~v3tzk)Sa4rKN<>JNY1E$OLgm@Z7?Z4WKh@oh^(oGmyG#UIIbt8 zi>*)x&4&^T72MUeof6pfMAcQ@W!XH)#Va9f7gl=cli6~>b>X;EY0j~Ngr%o8nzO{F zizF|$n>!BkW0EU;WnQ|{g0+0`z@OS7)DA}_bh4t(ljE};(9_LK8Fnr0P)c2Op*dNC z%c?^dpmY7%H8tO4U690EXbd1~Bw;vUE-#FjaZ}WpLzVK`%EHvW%8Z{>&s!475VEd4 z^*U5NYo_FnuCh}#Efftl;H&*qBcdSktYLYHwvni=eAxyei_)M{l7+nb85*E$QX zsQSy?7PGc-sdMW5Ktk%qdQ6XBXIRSbR(fzkUj2(mhDjaOs>jxF)ny~m%SX#H2VM*p z(#35?vz0E{gszO)A@kd~5tb&co_h9R+QJE=K~RXk;8QP?b61JMR}Qaex?j9Q z*o#!AFR7Q*3gL;v(${msPQ7XGRCnb52OYa8c+Pce%$(CM9JnmtO4qPV)`qK@w_eHOmkkuo@!7EYeALw_ z5WAzMnrKBK#d!x)LtZY20FxFiTa+rJ%t*NL#FR1KB4dEHGEFF}!u$eEXiN33xETE` zf$V;)@XBw(J=fBWMLUL6NCRZT1!#RQ^X>f9xq%Pvtu_~Ul9S9pvZ}5%JBu$bdmbrz zdY76qj55~Eg1!1AS!vOJeSM%Ns^i??nnRy@w&m|z z4K;Ds`le%@j=y7tU945z6#GL$L^@arqZ#h9Mdj6O^1AIt@3^e7Q>^u`3*ICv^Cyd} zZ6&)rix2GCFh(#j=}0WQ!gDk#7FhOQZ2O_#2H(eEX4xW7S>IM6scp)2LGNQB9$RG$ z8RbDVsIZ6cr^q<2&XQI+tZ1Qg>GNBS(X>8Pee0X|o+bB?6IDE>L7aWEsT&huK zHtDGxkoe>3TZ=`o!59x7`j}I;BkPthJGLFoZ66ZTL@$cGvkEpM%}~9T3cRnB+Q{^5 z^+Ul;53RDJr3>%*-h+@M$dcoQe*Wq84HA1@I)@WF4Wz;5_OT#~XC89m>~U|{hP}!w zb~&b#@^mzkbfcEGZ6DqH{VQ7h30JVYmvQ`w$78$)WYJdJ=`8P;6tF8P3#m*GLaC)l zw=>p%y*|VE3mO}Il09l9Rr1bQymM3_6t5C5hhl+j+p8jHqZOvow^c1!?n8C21uK)! zS#pO9n1rlv!Yi_LrCjcMX|3M|qoynfBxA@VQOonRdUUsI7iZBPH2wNyD30!t#Syzr z@N3bgOhz;_mIab+bom+KK_6X&K1?Gl&b=}d1D~sU!I&#;uD&@kjo(3rsYZrl5 zk18{;*hS8$c-xqwiBN$HvD z?$4%*>}c_h1=I(bly27Nr>ECo$b*s)V%2MNzhaDf!u}7yY6(wXaT2`(Y5SL zv$1$CxdG}?UE0zMjuJ8kLcn9f>fgx59FL8?8|axT<#iNYnLk8)mI;N%^WVZ?Wj>&> zu;WI8MiXW2)1M(cE-svx5ZDb$ zPKW*{1A0bwO#=XQK&{QIhV_N%(86*?9JJOE3^ZoJJq;n?=j2Qol<77%bGwCv8>SQP+7w@-8o|GdM5mwG2)i*BPhZgZ zc-baeV_SxC8>OTG+pyKtpgvD_!D>H)C|kXe6X8=l0{%HA>M_dCvJ=#_11-BYqzYpW zOOHpUg-$oRBXh0o@^hrDYGoniMri{p<0`d8SG4P6&opI~RaY{e3>+Z1P23ppHvEOt z#$H8Rmy9nqoMx3Wa6B8P%e8gxB3NJ}iDIZeZW@>2H9oTkS#Xc8Vb8by3a2H6?1H!I zu`L*27ztYsFOlBhnL{!fMAG^NWYxz(&WFw3BR>X%_4?LKVWhWyr| zx2(&CcW4f{fBW7ZOZ=``sJfJl7QaO6PsF~`QwsObQr;Ubjx`Y;6~>#8wZ61h@llH-{#HxAcxI4aCQ1L`bb>$bOd-@bYUjWnYk&Nm7pX-%B{%|zG~sc)oyI21|6 zPfZHG?U~a~U3O_K*lQ`7d+Q?{+Ff?*$UeBDo?EgD`nA%Ak2BAFA5Jw>f2I zzCBFY`sF@ErFZKr_&t8cu34lv{G9gIdbjfAs79Ho^o6x3W7{@nM^W|y(c@eJdAfs5 zZZhGm&b_sjqKpf7246W=*{x2Q@r%GVU#t{HNlx}RsLR>&Ib0wBOmd{u%RCncceep8=l4egAmSEz{(EyGFsaMgalyHe2`fxV6 zt`BKr{mW8vjkA&I5%7`&K5SscyfWg-v z4BZ*!Wft`j%q_ga5+0TLpPCg?^A1!lpCx*UO8Z%`WJ88sPy2{vRGZ)N&F$VX^gV39 zT0#LX2m**5>E;`pinD!JGIkd0Z65J42#L8haFT@1%9wKmFV;*WxHE)XJB%P`-i2Un z>o(|;fspqmE%-p1@!PG?v0^0cjc}l;aNsCoA?=nb{P`seYS-TV4!n9jMp?K}38neR zbf{U`kzMOk5HF;m4AxX$BSfNiCh>-_@tH~OZa!XSnJDTzZq~F>>k_?`H) z1&%h5Z4>446`5tfuuO_LuW~sQ)H;&m7fGZiwmS4KEzC|yd2TI=v@3nNMB<#g`lOX{ znBdAq(Bncdjz(m6_-{fmVGg2rS=2A3B!%b!d7p~qMSX@E7bwcKf0H0-+aK%{@Cgnj;OJ1 zBvj1EZPv~?7rVbmP-b_NRqab5>rzW+ueF`WpdVjsmu^ca0f!g7If*u#6mZwAgJ{}D zE+OtwV2;k(HoU&I9~o@NIO^_%0y<-^tQr$P^6okOT&%7*>Q)>~{Wy4~@t4ZV9|s>s zI>i|YZabbjpojM`*-Mr`p!_P-R8p#G5|!7pFKoWaBhXX57bR_784)zQNcOcol~iVo zP7SX_>Krb}^0{t%m9o&!cC|4w{9s}8>}^)H-4tJ*jc9prFm*Da8)ks&bCP4? z=RckyF_kV?k{jmp*L%P^1U$n!sa3NKa#2)=|G8^PW2Zp{SO1pwy6sKvom^Q9^|ep_ zR@lx{vKx04yjQ+iE4+t=kP|=JQraL$yGp%_mD!><4yeU>s}AX_p+?HevXJJ1Scc#| zt?U5fH?lx$w$^vC-(Y9xh{F2o@RsJnA@fq>7(b~odJFbaabZKEG8b5psoskEwzwwG z6kV&x$bSkM$!6)>taXL&UA)ds1L+a|GA4$@&SsT-_nBD z1;e@Y9mZPYuMlG4@VAXT{Wep%*;6H|@N}!Avf2ItG;H~D7pOWTV78*C{d=S&P|V6M zh3d?>S_OH2+`KimtNkVx9X`wuA1d!&)@HwcYV31Ik!3lhENqaO3<{ljj^HdxD2?>7VRyu)v^YwOol)hvWDk*XlGu*61; zEagXA!LMEGb?7!3vz6pgp|E?;s(X$~zgdE#?@xml?F22eRLTWNZ-98@Pvl;nfU4wZ z(d|`f>C=-Ucfz3*(O+!7>6S5-?K%?hb`CJG#VU>#R8!x)vmlqHkF3HeY(qin$D!=Z z9v@`Edc|juk&ZOFG+>-gxB*{v%|K?!S2~!NJe^+JoZHtppdb&Htx^UnOI&3GJH!jB zO^R1Pg!(;iE}V7u^J8xj+RjqWa8`vPr7OQUu4uzNL3BogbgG#?|CK#!RoB;TvuiI; zbA6G{>$n0d=t4RkbyZuj(!q#4cvTkW$=p17thrA6o2PoO5B+2qMdu;<`p886GTRid z$9CeE_H_$nQAL=!uYqPC(ChA)h!kck>)4pv7;f|c9BtARGU$;&?x>+M)U_kmU9iyT`&vhHRoFC z_0FO3&1_gFjq7*o@f_BNMxfVi_GEC}P-7AsWl(Q%(7` zNH&pt$ReHqvLHl88wi^P`qT}fz1EG<2rShrBe5%Gm7&Ml_>Q`Qfa z1@$8%-E7IZ&4Op9jz;Bfm_%nj)Jzn9{`~aXKno}+RPFvwlelf`1u(HVbcOWHfzJWe=n1T3p|P867gtYb?5zlZjZm zZ~*We^x_PG_Oo*SL9@C5s)$07xS5DwHI$S3{7gSJsvy`AWzQ20ei~49q0f;-yNvun zx!YQDZTi$j_?hT7lQ%Vbp-jGoUWAJ>7QmK+q6&FsHs?@}(q@yeYo!HHUl^D>uyzQa z7`|?c$w}ByI7;8dEVA&GvBd2SM0IM|+ph|E7-b4i43nbz)Lm2dOp+b#A&BT|_1MO# zzs^3UaLjUvdc^Tvh3i$*Gp{b3yKTx~P&`z@G?@zGQmwcfv<;2KcWsMaxc*!7pc? zh?Zlwb%_#P?@5lh`kteD-92o6{J8=HqZ=g<4;b)i@!H=tWJ%h`(qP!x?|wP?R)%Aa zaNLTt>Vt6VY?67$f}5bEm7FP@^|HfCe77U;Ra?edV@bFhJXMV-KB$YXy^hZKn4Jp= zoZ($c2Q^tOZ`%E2siDf%MC9FYNBnY0c%{k`QLNjGj`vP!6s^~Xj7%G{($tDk_%&acIz;&OieTO^8Na3l98b&EgG`eZd;w5D$;N;g z6h74iy@xGS2e}Q01NO)6)};35T_xj6TAx_RFI6&+>FCUeaRUplFkiyB@wJE6P@8VR zzQmjf+l}5)4KV80jqwd$oB_f8AxL>3qm#iBJeA3#GC* z=gCt7@uG5zOLIk4_3$#nlLDw#zSRU7_UKbbzDXeC7Yzm}wvw_B*sT>qy~*;nR2w%Q$u-gke@s;VuI)=+OAX()c<%~hf zw6ZY)i8s>DKUVH|Ro6<}wP7sGs6^?PkrnD-G=@yy!+XyyPVJgferE#dFOzS`p8ski zdDmUlCtkU@do}quEvi?b;Ug_FbWRhi@tIRgaPEs28*pwe!C|%o2Z2Gvh z`DJ2fy^YG0U(d$gOhc{RSiOy{bn})b&@4C^NV$P2d$TqOv^HM2ZI>DK`A;>Qmssh& z6?vG~wUTxJ^NGrPE^uh!QSW(YZOeAW)IjiRiCUV50aY| zR=83wP^K-KBspZuxgTWlR91c5&1lrJmGD$rP@vz@&#Ec)D05)Ykn>p!^re^MNsV)ThJi*}#CO0tT;&M!IYpnOMb1A9ec(~*W`hB% z1_-k}a}VVEXP+qSJiv;-MzQ@&E300YzjcWyXfCsPt|M|x)%EA)39xwk8Zy8 zA{}s`dB5B)Mrq%7MIExCmLglff#WhlTUy}mS8XRhV16dIl8;xd8`Z0D84@og4-zGb zDlU2F72nduLE=h1+t8QfHl3II*i|)2Cv3dOq-*exKU25fGu0XJnGAb-hTJ$(MeBM2 zcCM~{sE*$tm|j;-#91n+w#y>YCxT*BU_Bwt)ab0JvayfK)wQ@cXFFs-!xKR(qXdvx z3?3SgPZ`Fy>j%~t_+{=dbolB%#7P5RA?O$||Pqqh>0!wtHE3#`dbd|}^V)EwCs)>2WXLxDUO2@rN6F*=gv1N^$9v<6Hnj2bH`%+#uYa`$JeDD_mDQ_^~ko> z4V$c2zukbRTy-Hd+lmV)Nf4ZadhCC!ySv_F({+1UIm&Ob^N4|kT`DGnUL{-yDvpq8@g&ZY#Br@1x zrWZg%0U;8T`0Ks{w~YbeX5HS!b?ceuBCFaAa}nIzFOI!ld^e*rB??=0k55~5E91DVDaB4a^N#9B_^;jdpax~hhW;j$ z&Ql8Sty6L=-sjkj<%&CBQ0tMh%++Q4jk4cp^>#W1K9rJrTUG@9wP}dpjlXopJ(on5 zE^IKwdb&Id`bzSg>&)_7w)%OigxS57`=9%ZX}$VzR<7|yrIYT$(^Nge4d@stjM}!M~864-UKOJmN0R&QDkbZ(AVV zmRGFONxODUE{Zm(HI*jZUJ2)Rn?M&1zO)!Scs4KQLC93K&*zQzT)1Dl?K);PY02Or zQy)OsJ*hi++0Y>~hm`CH)faeobO*TjzB<%kFX^o-URAlW29sAB1zblK_un&L^IRQK z{UA6mYCfU#J1_XUVngiwAjVZaS*3?^?IgCUa#~Spfy|M@XI<{bDk5jLLl~jAVOM`P z?5bkl)!s@{!E=Q2k}$AyX?2xM=%Z|PG?AT1mDU=^^8+(qLE2mkzcFDF_hTpRPJ26< zHu;xR5v36$1N@D;yD7&q$anGh@M)90GZ*(?&_+HGi1`AC7Ehv6OeXeWeP&lqgw=QiWI48ZVVTt~3>rLwlv#Qg04yRRzY>{LoE;c`B%@ga*z95qo z&hyAP5Y@C}7QC9)VO8oh?YYYEnr!(OY?f}zBtxZxs29wapKu#9D#$qgR2tlF5B~;g z)UY+7)U?Yq(Zr=w9%6T&!#1C88x~M=Wrsc@IIyEuF9 z&we{;$H;37x=8+%Gb_Toooe5+$nf_I1ddyXhHDRU=K(44^>#f2imb!!f_rqYWvDk^q>NH zP|>m_-yGhMn@mrkqB&Kw>q@aMoez}IgHJ|{KAXTm%9L~6pN(-OL-O*rVNh&acfN8r zJmXxJ8+FbmNasC-SFpk>mj$W&UOk_x{N;!(%)<>b(4vuph7D;f9NAeW^%igMPl9Kl zflGE8wO$-`iaZ)OQaOwQk>g~u2aBW3@Y#h%vC1P$l((Ej6zlEDLC*vO2MTEJFLK8&{Z^6MHVw%myGWiRDe4TS23!kAyAueo7i#_+~e+7yKkY>%f&^Nn&G&3hD8+rD;8 zA`?nwsLXg8`MPEC(Lj?yX$L|#!~RedL7s+24ma_poii4n-(gbUPCmi~Hx^vqU?Ll9 zN515{wJ7U~VPMOR^R-~?vj=wFquE|9+Ep&2_zQ2ZNwX>~Ev4Q5A4H2Hyx=F_N%?Ik&Hj4JwkA<$=Yh-YIoUU3VFofjZ{*>rq3>X zFJC0F?k;A#7RLt->s85vQ;(99rKL0L;;fJ;V0YT#qJW&tii)M=tELLD=*C|Kf<1@J~whNZ1_AKB(B_h2PvuvH7#m{&_*OIuMB zn3ei=PnCnzQM{l8{8)!yKJsEUacSa-&g?hP4j$9YKbMJIvNL$p7O#VPlAac-u*z;K z^Kvt5)wB6fAB-ns04`qTX!|B?^p-BKy;mFS_sTp$&KEv^y=ddHteMn;5;q^=8&I}-(FKQ zP!>d$#IRKPX^V>b<=6ZXgKG?~yL?38}#&YM=Hle(o`=9Dy~{WR=lb;lU- z%Z|&SpjgYCq>gM4>eSAognXTh;IFij$2*QugfB~_2Y#lweYJn^^WbS>zeI~LFghwb z4u)AH)_Jf#^%9)_*#s~f}CbE&_q-!JLLt95LB{jWb?EPGxA@6z;!lZ(^^ zrOh5oyBTfR(pmAWX1jFQ6}}HbqTcr)-$zhO#=TRXf;T1>MuDkqY_Aa^LF@gL7G&gh z4A%p5Vvxk|HzJ!fv8d{$-B;ho&zNh^c+wpRJj; znfBDww2-8QmI+PUOw*>6iG+xvWlC8xg)Gf9TF{21qMQ_sQo`7J@kZ7Xrwv8qC8o%l zC0oDy>GS*kG5=_sIp;k0b1&C@UH3EELrnN0zCY6ts@ioIs~!U@NuBdWl}%JC8$CMs za2`N!s38uBgaJYDnnitP@b$V-Ir4vO=5l}Bf2u5!l41!VZ6zf%zK;L>t{;E?^5a+S zMD`uUCkQg!31(+kgd=?D`o28?i%5P2d*- zPdRNC4w*KUC84L-PZ0%X>#?W_vZ2`mPZC?%UN8JsNY}fNv&s;#&P^AdQx*=;MPE&c ztmr`SE>Dmxg4=)p@l(5OKG>oi1FnCkC~#8);X>?(a|U{yfz9Z_5n=S0&0}y$2ZuEhxz!6VyxG;mO{*@^8yQ*`Zh!;%R)sqgOra6FmQPnXZ1{E%vfBwnDJ+SpL*#bG4y8_iysS#snakE)0i&cdGQ^@*f%7P-kQRsO~E9wM^E zWtATEz2d|qJ?0bGoroR5v@4(R)G?`8$3i?R7W3^)QHUw2ehkcty^Y(Z8RzxEpOzGd zW$)qYsSCwadHP6aB;7QPazn!-V?A0!U;wii8H2mMuPY#jIO zYK-bQIHM)$`bs>=5WY20g{8EvuQNVi_|Tlte^qJNKz#n+4#)m0$Pbr0o!%ijrxHI` zwQ1cGvgn&K_+EB=)7=I1+BhCFKH`+LH5hmCuX>c9;dRK@pzJnp+FvR4R{Vk6ym&yh z92HQG%@@8p5VD%4jCzEE=7Mn7_0aJCtS0i&QVh%t*E_5*q3Bi5=CM@4W?G~p-dh#( zD8eywMWbgD=f1Z%)|QtCkU~g72RW(8lS#T`P6(=*fgbSJ&3N}VO2VCe?#hG+RcPc$ zV{Zy0?u(x`K?-929e(;$VM}6>`xzkpu2ECqp7<=y@P+}Bol-C$7>^wu51+ke@)DOC z@@%wu7p5wAT)TpOCdzjjiMWT2AgI>2O~E5A6q?U7I@Xw-F#QK_DdoL!lAITIS{F$B zPGTcxks^VWbcoJxK3q(-{x`ewf$tSIlQhQ*;Xj+E7DeyveLwLSgot;^gsy;G- z#HAx7PEvtwBy#CX!z<OH*0cQ+#oZCx~jnf6I*ba{S1zA;rO?D^=}2hLA-Cbmcib4pcgxHv<$ZHXG^ zGANCr0K}B4il$n~wpA?}$Y^x~GBVW!lAQ$G7Yfeqai=bUYURkjnfy4$=$$ zQ?%8#lxIE6Wx5LxPJ?;v=zd0|qvS2Uc;CK0RK@r4j|FCHZ74}cgl*1@TzHT-w5CwsC+1CADW`mf_vQT3#r}lSx+pJk9xqlBT(08oxrS=K$o2Ae%l@v%rCaDW1vP~no zBPF7I6*PsoZ`bUL^ib+=Q*U~+I2_;@UD<-Hx%htHvRw+e7fr0HAEQPCL!@OGwKsxo zYpQyx!syu(27wx^Z(%!_LbNf4s3Sb5uC2Qq^L3P+p0|D~K`zl~y6%`C45)#ACh9hM z&|E~i1y4~OQ7m1X*HIZ|C2ojOvWxKaNDEVouLQn~dN>h53WXqDBP5UuV+ljG!2CD> zKQeabNd|X>4nN5kL2o}{VJV6f@K&3?{2miJ_@uGDMBK&SCj?>l8%g!{Qh&h_O8HwY zSnBnu?5kO`5wQI1lk2c6X+lP33hR9vC1;xqmfQ7@^oos`S!9l$&|c0krmH zS1mv_XdmCVpj5f=2ybgE_xmL&$Is9AdtOFHwC;W*5@t9R?kN!N@LzZhT>2D2#pFkG zynZS}+|r0iK;52^IYg1SJ*5Askcus06){~EJ z9tZ7#Tts%)h(>!Cim~v6bhF!%^OLTB8<28DW)5?FnH21H00Ez6ho=;|0s)5+K1SPg z+e-RFQ{3==DZq^w_wtN=i+0dhlhyjH9h=U@{XonA!t{2PhlM5y?HZ-woe<>2vB!Be zxzgex9o$DRUQj~{Es+*GtlYbAUz&ROvw3>^KN*nvkEoX&qm(zzM~}aTOV`Fd1`!Y9 zP!-)@P?)<(|5cg;p#KcPR<+l7NZCbXN&q)D?u7KWxNa+VC>BZMs*$Nudv%YyYo1Q%ghPoL6@OSAv8_Wk!y2Hvht=!*GM^fSnJ*y*<>%HDOjm8ZW5e!&s+Rk zHT<;(XEkQPUN-l^0ft$d-=~j^iPDdnbPTW_!r)STo{sRt^m;dX>#2dIPJ)+)-8oqm zca~E)_x3Stav(X9@9s4h&VYCeZtPk?)|{d-a$5^v(2_+(s$|*fu+;(g)`6VQ<2=?RuLO1&B+}=UoUPyipXc7j2$Z-Po z_!rEzH)8Vo*{b=nTA^X8G`=XB?)78GiVi{D`Pr`iD;l1~)= zyBW#G{0^?$Uw9q^m(Z$?S0>4A3nCjxDSsz%T{nD)%-AUePx`UhlI~iH&7vvX#AH-V zvjzh0#7_w~`CrqbJV+`0o5s=jUVWvY9a90y))(Enox}LPmx7*qL1Mwr1Ch$&*cud) znDS6~_e9Zyi?ir)VR%0|JYU1r_@jkvmG5HijC2BXidjuYtQj}(XdFTtM1!XOiMj<@ zgrJEi`n>YZ7V-HWVP~VcTC%6iftp}1J^x{6=L_$3sKfri)9RIAGvi>FP`(`G2*uqs0}nzGOob1Ckrx#f9vQou>+YbXaR?1H=d($kEQ}iIknr z(0qGyG{r00-=Q`=Bokr5;$fqmq~S9wc&A1wL2e0&fG{0BByiYvY=Y(){v3e77AgDF$*5Z0anoLjAJN zkb$Q?Ff6SwJEk7O(OKQfI@5L?e`zMRMJ`MKU<+1%(848|VwJU`-55#$Bthn7-C99q z?V$HvJs&fgSg@C-IBgsMDsxy?knMxOqHj9FA&_bCXTc?I&23_jT3D^*K-4=4*-~S6 zK6QT#Oa29%(BzU|T)GdQ?1-}zPY@v};c)XS-=PjoY|F%DltydogRm^icDw3&rN;Z| zw-jg6`>3M=`*QRw=8>p5K+t2>a&eB3!>W6kkiexI!(>J0YHQgP41fw`61J&RmUJGX7r_xN5FE-P>E(3g;v zU^iMoXBbtMtJ`EicTyjoMJ5g08NB;|ICc^*@L%rtAHINJp534DA8;iLP*C?hH9vQj z@!Y)AAz!;;O##m<-UF=~LV{Sz{14hf2~%^;6B%;1n%e<01Wn5zQM2DJ`l|m)g$kX5 zlv_jRIvFCf)d;7zbLNcOAAu@ZU+!rdnwr7LBp*{M(RGf;!^C&tsj1y;k=3D0sB(k@ zc?WOpAl`h-1h4VFW2AJ-B>M^%GG}z#D{8as0f7a9$e1 zt#o#|SL*dGsg7Gs5fQY61<8M5Pn&A#9Is07<%=PUPb%uF>hexHC1wiI?Pm{bIv3m@ z9GeS2RfsYG!=u-HHpTJV3hXo+@Tw+GgA1oe?=wfCz(ecks6{xBIn zGxA>5N#NfzAyzZt(>b($zq(LcO&&BOfn89L2-sZno&52T=Q@TYZ2J%LHXys=NYIDK z{m)d7+|Tn7C}$L#XE4mHcg`@U?8^JEL(|}+Cb#dAYLj2-!#I+l?O&u>{FVedpm1}} z&i2ZUTNuNm(~x1_(quR`ar#kh&QO+pnSZM8FZb7P)Iy9!e|D{RQ*);cnL&~YEKKR- zJjNnDlmW9+H=&lGio((|d@Qc94CMIt05TTP`x8_-%4H9OmFP`k#<$CXYxelIn?4m+ zoGp>MTBIGZ-t&K40N;q&Op-U`np=#8z=|l<7wT3hM}&ruI6_-PQRgYZn6zi;3_V>! zaUqMEJcTJF#j~iiiv5H$TagR923-jnVPp+U^$C%C*69hnNC-)k)u}&hFnGGAaii|j zZmz%i#T*aRvK#55+Qrl?eq$=Ss&bJ<=&$f+6%5!b^*x)b)Q-Otc+sPrVF?icy#k3Jp|h_sKl%Q`@E+8zKD;UM@sE}{KAOjzbRi@+_Vf* zj`dx4FQD>aalukVRoe%thEjMb;jB@U`reARa$dGY825rDzR{lYdJsu`b5x1d&|3dZ zPFSDuSvw?cNTv*$uXe}}Rg*S%bqt5pQI{zLs51^OhRBw=uNxf*`)@%8s(ZgNyT>#t zyB1x;44*KJx!dBgDWG-=BpoT1I25y@z!3BO=28^oIv;s_#Z%5efG0o$(t} z-99h6LhiAH$NuH_IdxBnm{4Uy(2R0uWzva9`2@~S2FF-ao}TwCo1D=wbvb0MkqAq< z--6$o?Cv@~v+}^*dma4foZwkisx*5FW<%s=FH17sd4UYg!)#>Ch;kz$NaMSQd732r zv$6c7arY4E;3u|7A5ueHe+IrI8NZgymM3gBfJ@twMlNP{R({d2HoDK(c;s%+&3;<} ziMk9m#_75p*4n&Z12yn`ue|2B)Esb^-dw%~WS;NFmsZnz=p!N3Ukev@4nMi!ET=i6tH*`zbK=U~Dij+bP11l&({b%Ab4a(Dk9*Xa;IXcm(Gq+Du zYu4O-GNgv_OjBG@@&r&ELeq@GieHbpG*Z8GMGgOL>14rbid+DNiXKj$u z3-STsG&Ochz^R4*d{Szk5ZCUy_vqtv<^iL>fC(HN4Zo{|!gfnEZ}DyQal&yt8}29r z-A>*2|6rM+75iKzLT|Lht7f5(>*#NDe8i$G)IsxtIaG4X;9-BFU{*HJT%VkCm%BJA z<9xDs*mU2iO_m-1U<^;;p#an_`?pZGDRj)9CVy|Q{$;@E>obstdl8!AX49Gq_EqQ= zqn3eIIe5Bat894BAeb`m@CaaZKnHv?mquP|Ffc;Ex1-)eNe4X!TqQ3iEv2-?T=`{IV4AXG_Wir@Sx`f{%mMJS<)vd& z-$fYNjhrLFG04`?jQs!YCf})k{7B7g5L6O`g1}PPk!B6bl=`Q;z_-qs z-BcE;? ze;-*jKO~o)+dyd6x2{?R*>J2fSA({k(r>!?5Hioiig{hs%voSNY@NLmbQnEH>GhDR zd}#M2fDiwsBU0*0;{cV7b+ik zVu;=pZ2-J-?+8u5vhDbUG@l16zyX>Gr>YElcXbAYm(r7G3y%v&gOkHEKguqVO@LBC z!1v9=Sx-ijH58GS0)E*;8n>g(v+7%+7Kz+FW-4-Oi>9z5XSqK<9n|eI2d@YDTDM+c;TUXVjV_m^O*MCh+Zc z#htGsg5F|cQ<-LWFC~SuOF87s0Wo74CE|GkZNz_n5>7}6{Xe=a$1fx7K7rmUz8>GY z-gVC2FygEQM7C*f0leF8UHjp6P0)dTA;$hlN8OAIwa2e9r(iKTRe3%EUdf>!Fa{B7 z`4#2%qm2Y-)k*NSen9Tmm6od2|32g|0m!8Nl5eDf_hY8bo10^tMVC@1i*6M^bb5gO zOcl)hbz2`Mq~x!GosLk2u60_?^g16w!_z|eoE0O$e>g?vB6B=nr7D7)Cp{rHB z<#OJm+rF@B#t;Z>t=v1h_Ee?P9S9M<6i(NTLt!e(IZAhB8zB=t|G#FV@>rxNIE*b2 zH2G&7Krd?SynRk)v)Rz^mWeB*fs1F;S=btfm3V=j=C$rcU}4KQ|N159SsT zi)QY68R%8^VpAKiV{)vefqORI{!>U=$xg6{j;*gvLn|~c zl@3aFCo6W1W5I{0dHsaibrt|8 z4o%^f&j_FM#cnj=bsgqZGch@$g`x1$a2}+Lsk4t3L&scGSGQ_2n<6wNVHwP{Igu1V zOcKCBTx%?%cN<7Rv}d$OKA&1O3&29IYZTU-n)dFBWzRt@-&3X)K~CcCt4$C60}=&f z7@hsXEy2DV@pyGr9=NJo@D38zlE!ijp7Wg=AL zswkRm6n{gK+YNhW`+EV?%CvmU)Z&w*-4LHT7=~_m;Yj?J|A77fFJzPEf8ef1FM4Sl z+7xdIa*n0AzE}w_T^GLAbpy!rN*L|S*k3eGP(gVPl1bj+CM~$_`c5q?dJ_1LCCU+t z0&1Q7dI}nWS-{o>lH5S1+eH;7fsjO$Wxro+7uH6xHM@XmH&3~NPXQ#Sido|b59Yb29G=&ysoScobSNPD?$ho-y- z3+{$WrugBbnVnX{zImXWRU26&wlo-cD5Vm(hIb+Qn(J}`2nUU0a5(R*T>v!KS}Vrat=;k zp0G9X;vrhz%rrU&$OBbQ;}({-it0&L1(M*KS?99nvNN${@N+Y6mPyQBjonUoDP0GO*qg#=+KSbcaeg~d4bl)sE`OP^*j;HKw#@?) zi6|R(;&l6j(6`E@Sgd98>3(lwt6SrGKnv9TPMK#Y-L`UPl13pLUA+NtPN~ZF#GOw_ z;eV=NJsaUsuPLSZC@)Vga$u79E|jdzZ%p+^F%DC{Ndua>P1*!~YiUVV@te^VK$aN+ ziO7*rQ51o*4#r(c!p@#Y%!*q_5O(@(TK^XQGMcKfSnoXW)kEjJJv)2sq(rG#bstO`1W<&wM9ht-kVY6)M* zdET}n6FRb#5U`Z#qY1YEea?hxs|B@fC*}zKUA=tR_a>x&{yUq^?k?_DwGp_p2;uck zO)POZFTiLcwegE*+E%q)Aqn8|`zELNLkjQ$slOL zh~kCpQ6u3wU13`&;;h-lz38|?D4R1<6UEHv{SJJ=N{FOUqCyS*$yMwXgou7hU&iX} zKyz7?#Fo~yT1Rw_B8;~`^TTQ@n*umTD<~(c@inDZ=8vSs586p~kEABCeE&bP-{AaP zK?ZDtV`VeX$E*uYWy|)?uPe2SuE`iqzyrk7L5g(en&alj{zDA;Ohet3a*?rByQE<) zE8^RHUn@Q>f%}zZx2~B3TJq=SExTHR)MR9}zSwzfZ;8D9lQ8}d?aH>#@yskJFWg`W zg5dL$eJ)4x0@7zbnme~av0Ih7Y<9wLdm`pOj(wTT9V68pY+SUU7{1z3)h0Qe^++}# zR2EEyZvD+`onzT!yEK}L=(Dy}G zGAxq$UvQ}xplF(&jOV{alOzx>l^(BHhleo)alPfmHl>w+rr^8d@i8r|r%V316U_p2 z!EMI5iQ&CY3GeMm_}t5=es$UQjO1*E5Atd>r0*L;eGeK879iIofK-;Me1*BEnqwd; zNYWFYDn-kE%6oE8MAfh#jAi{FdF3-O*E~ceW7#R!xwPeyhEJ3{dDk#z15*!%6Op(o zRSe?bSA~XV-_Q(;gMaoLyuq6$0VS-y6I*n9#91Lvhg(}?!CAM&CVQk2dL>Yd3FXR3G>e?4oS$SE6bNooi zDX_suGqG$(3DqPS<%o;dEO@e2@mkVK$4_*Dohi)uaUK92K8l#X& ziRHKxw!ekSswMYrybJ`yB^sPs|9qFKG}ubVCzLJ6U*7Y)2&4KQgBMK))3VLH|GT4U zgW4JW&`nY*(GmtP?#ZC|I&9}hLf!QIa7NJ^-F}Nyts^yDaq1MzrG*_bxZ$u1sOoOu@|-2! zxOvL+LUNRahCwExnMCjCB4gyJ%xowaz3`gHmxA}RajuzSUg1~xQOrFB8{sJue1WuN zA8Bq6)aa92PoX>Mt5OL+qta*eGlwA|)&9%dD&TF3EMSmu^X8~9sP>}F9e%_M`_-76 zY5kKlTAk#{qds`$dbp`SzBX!E(o1+fK@F|vrao!wyznh*-8+c%efkTlOv&XGBHb~r zb3JAVmKgDU_T*D})r-6gR9<^&T+Ic%C1J)DiEU@Mf-i>ow2+0xqYTV>1?FpbwJDeRp4_g`TE1gKGe=yE z#@TW89NZZM@|Y{Ab}KiH-eV+qJ4HERgDx_@N`k56`jJM<&x4t$7WUIV|w(!NL4nyv6=$&bRkL&>4d zb{2IM`eYC=zfF*p?4F@~L|Klx{0vU!3^z!KbCypyUac9x8yFdUs^t*&4;?=c~~gx^A9{ zqHt_VWNb$UH30!u1E9A0`L`zV0ejJ6}BGnO@^TOt|OrznL`cADm;0_pN{dTyaZEg zC^$Z4GCvWC!ojM=eXrq5`yz>xRlLYBsMZbsc^)q}#BIV6Y*RLK<|;atSUih*RY%FQ z&3NBi9+#MSa^BjQfU94tIN;Hq8c5rJONT924ciA~(7Ww3Q~s{hT%#!`f+SrU{GWSp z4Nr{lPpaZi_YF=;C~L1dfpzcLqktJpn#f7B&F3h*t0(#9I#xFwdiG$#_#Bz&MSc1v8{3K~lrVvJk;z9a=m_cYh#^0~GMh zAZxEo6!ndW~2wl5&i?^X#eEAv7uOw&!gn!kwDH6_Ps_goFsX%Vh;ucr~a;hO$U zy~>=sQNR-rAk@fu<=pRPQ7kNJ3U&?L2uIrZIYbYf8HxKSA|tG`@UX|Oq|5)H0LUQo zPp1?Cg=&JhNXC~uW%O5#8+AFewTO8c(zVJeBf_CU$R`U85r-yKMpL%(iEENeUgK;2{K zvaI#APMLZtA!54`bO{DBB9x*+R?!GtOBe7bKX?akh<~8k7s!g!DKJ(|Bf-`KRUOk5 z=4Pn3ab)jdpEZ_30iZ*K2p=j_6FaxP>NP6jfTpn6SHfJ2QH=po1NX}cP~vve>kG8y(13p`x2nJ?M9p|S6L!qQE?m8C@H=)l_7)AEl;fxj(4JM4_xtS ze77c_!4phVhi6Z@E(5~hQd0RKX=Kwe#76nd#dBpe(Rsq_+>kOZ%!Q-zVuk?!;x3`f z*`U`AcryyB_Eu$lY<5c3ufOs7Uoe}Gh{r@+7`~J={7d|KRs)Z)5tr1$DkQR#35pxz zKhYgl?j5VT#dtZv^PqoxG*RDqTRy45=5cq&3RbI&TJ7&7FBr|MWzi*3Mu1f=p|lIG zyN)+DBWOvuv^M~(a0z_;>^E?5?97c~c+W5#LRtrj;a%E3{90aBnEGB#Ldp`s( z!F*^OxQ~SZN4|G)RptCc00m`xLSIP0ec6+X%~HE%h7>UqYJO*xrN3%-DeK`0 zL3pp0MvlO>HkwTl5M)V+1`u9K;=G~A%anX7bQv$l$H#erA^siY@Xr)Zyn$S#6l%8b z=%&ySs5t604b+{+ACq*${Y#Kr`lgUJT&)3>p`$HS5hzfZ!eqd)DMo&x(W`0^l4y^#n zFMH_*$HP-}Pkb@;s)1^;C{3_DO8v6NoAoAE|MD~@&Dd#@>|0m5x$yhIpeIBEl)j_c z+t|-+{Ul5L+ukrdwH<|&`+Et!p1T3x6QX&H9I=r+qwr{NdST`(b%J9(sIstvc~IkXv1LL9n0)*1f?Il4ABS=(zw)5nPF7TG#B<&26KOqUOm8WoTnn8s zN?Bq*^7va|@h`|f-;rHvnT-_SJe!}z3zI*ZCMybE350+^?f@qdI%{c%;0Gce~IuBaG+Tl7vyUr_!Dj4x|XG zG~_W;F zV*4S~z&^ zCIVeZA{bjEl-lN5_shrMNni{Qi8%D?Z8`h$U)5+m*|S*?kV@40->7OEeKH8I=-T>V zT#@K#I9(&{LrNRClH6vaqv6=#Ml@hEh`E&*>XBh@caq4$)%*0f?9$IFD08_Cp4k`m z9s8H>MYO$y#S3q?ykZc=TmW&O13A*&CoH2=ThVt1O~zL` zJ>4-e^h=I95k$>dCXjd5nl#UUuTNN_E@oOksSH&0yiV~0D8?Xv!oJQF|9PpJE~FWY zRwY9hL25B0g{?h~03F5^Ps1C>_d0`{%>>8rfx@yJOTy(3-FC}u_?AiZ}Sx_?q* zr53z&EE8VSH_?*!X_Tf5-|qWAt#INFjsX&EdwM^Y{~=~R1Za>*znRRlaS4Ez2n%<( zu&UBT$RzZyr8IrsTgx(Ma*U!!=i+vH_>+~~-ze4fCM(RGg(((_V!NYXwWXR`6~^{+zh99yd`LLn6_t(&2+r?#PeQ0MZ%kh`BM;Q@ejYeLLWI<(?XpVkKS{6@ z#o#*?Tn%+4mniQ@VO0W*P*J`yi=C7aRxhR&puJ>vU-;t2g#XedvBVD{!{9!s&n?)FtO%DNrKG;4G~e4;5n}Z4YqBD3M>i)CDLC1yL*6gsi;T~ zueRzdIiVWv4E;53-PYcy2I>JVfHoU(gPll&!FyCFWr!(uCu-vU$vlh`=nKS_Zo#=X z^uk_I9?MM7XijSVZc6zkZQrUM@%RY`0wMV{fRTKy(IPL+bfBIzH!7pn*Rwny@TEb1 zxp3luyo%U2U!`o9(xQ{2yPX7=$l?E~_kAC6Oe?gylCeE<#1Q-Q*KEF&`3<|D{vK{( zrG%12xQdeT)^?wlOR>>4ctzsrupPTGmE3R?Nqx%HPb+G;SW^1Ftp zvU|T*pZx&|?>e-ZmFU9KzO9J~LJO+36W7TV%lF#{zI0mNJ45GGP3Qyvo35q!I3b}w zS2UWeXSGtoT*W`}S`a{?AZrVX!YJD(~ez?B+HGy!avKR}#v3{km@@IvW$yHd+CDq^W zjfWprG$3KWcEl7q~`YsNuCBXmi@#A$GC@II7SY-q;Z%5 z+XR=0SCp!NXCw*Bixd=!hcBWQBQP(W3Y)D=!p#X0r-@B-siIV}l?SbljFm1DG`SO4 z%`D;f+&)h^s2XEZjq;`iaO2c_P*Ll2jz(C5eV5m&*V~(>KuQR#5a9GWixIWMnM=KV zTDi6nOknF?2)`teKLmi5b^bCulX8Id0)ANyf>95a$8B2TmZ0(#XifV@kb;ksV(Pu{ zpN4C1gm~mbm^+k3QY;ABmO#5=EYg^+xSWe1`%|Lz_MW4!UKlGJ6FE!f8rc9M1l?lk zQMa0)oX(q}bmXHG=y;?q5?AT-7B8tmcRYPUTlEc~2nwNI*H8ic1I$UN)N>fTYv@Npp$yGcGEfk?Q9;7QWnA`8`ki&H#0GEYO4i1NrPN zM6e5BU12dtr3nRAavmi-oMxS?=y)MMrXkq!N}06{H)2u5N^SVjN~ha<@vcE$-WGg| z#^`5?kV+NFVm_@`{B9x9`>^GZfeWCk@{w#A%!eZ-w5-M#Bklu^o0J*4!*oL4;)*U? zaeSn`Na?XHJfkzyK*LE}PSKb5(Sa{fK9-%?s(GAt4R8jo3L6fOa<5*moc&tXHAKgB zEU`uVg4u2#C~U40Q~kMm#L_#2g!NKYe!|a5-H*v5Q-OEM0CF5{KE+rb-k`IR=y|rd!)2@Pz||c~E%zQ9(GorfMsdrl7u!Cg=G?zh>kY^j{XK+r;Q-|Cp@hhxNVPx&b#y4$(UOTfU@R=;J>Dbij5C7MNOfy2826T zobWIBt;{(x#e{v4G$Nz-HSTQEV9)vQb~9nc3;)0i8J*9t6?c6CA1rK3^uPEdW7iuRb@T#W6VbUUNdTwxuJ!_db?1cTQtO!b2(@H=faqZ{nD z(j+)P<<${3Pq$wk`u2bANIfac1!+O706dp04BKNJ`_h3@R1?|eoxN=}8prq?qg}oU zZtm&rm+KM&C1JWLu=+*$4c13f@qKGeMx%dBhCAy;dzN7}lvQ|&%-%!mOTcMOZN=MG zXI%|e1kq5(2wUVhYG6PJOTmW+lMiwvK2tDxCcC%%b!(((fzospGuj zY@SW;9npK)`AR*YsP#ZTJ- z#{ijye-pgV^Oveq1u^&0B5|tlfST;f zI`0-~R$;&DTLcnj2d&l$Um?CvCS*<%Qng>rk52E}O|QifKdcN{`=$e3trZ~~KcR6e z4hqru3j7`F%LyZ?1qrnQlFr_oz7O-~DG>1%ESc{ja@A2BC#;f(9Hn+gZlKXQ+*85F zZrJV~Mbb3YtHh3Z@a)1h>cUlP3`cDb5kGy99YgeqX0~Fv6EsNw*k(PZG~H%}&J5sR zta>F>9-v@f>V?k!hz8p?7vm*d&MtSXIVM>+_7yCyST!yr{ITTbJVBfiP;7>OYmC7WC*zXh1s*U?EEB1} z6hp_t+0R;3Hj;!rS<~+X0~vTV7K6jFP-W+#>2MAdd?dRRO8Zag+AP9>5&1dYD2{OE z6X+ag<${BIh7LKB?c?9cU;hw>Po-ykhF3+lI&3>(o(tsadhmq84|N`hefq%8ZluK? z&9rYh<91tlIa38@_F%zV2zhVS1Y?bQ@>Pk|r?iiTgfcj*E8lb=nu9pZyW{LyFNPYP zFb64Bw<8hLftz=dtKM~hBJ1zQiSL}vIDalN1U3_Nb2 zO$xf3ye$cw006OGNYNNIH-g~Wyr8pw?EvB(o;di6_Fg8F#7=5vVKSwW!M{3l{gIS+F$C5r!;)-xEWKI)_pfOk?{=iWgR@;!6V}5J@p4knIkah{hVkW-czKhQ!1~GXSS|2aw=Z>T_8cqv zg0S?m5W`gIrJ~!^4VK)ut6;Ek_@=)+1}UPw739lb(n{HrGOiMgZKS=24gCg z>ccoglWVl;v-f!4390&AWzLOP7I#9g|1{cKilRhxHo{u~f=H?lvWvU1TO!@PF zH^E@<^@S*Pr75a+!2jB&;1Z&OicS!YDQyLy6s{p!n(8VpACEelx95!2w20Xt{DYRK z#H4(DF}yzHl{U@YG$hNfG(aapOpwE`stM0*z^*hCQ}(>zx<+^Zg@aIFWZyEh^zl3U z^2t4au#Khnb+$fJk*&^uuZ+78uwb2Yal^c-WW={qboz6@cUz^u0vA2KWD0ms4lK?z z=1gaA#*!s((r>iuPNa6uW{Mjjc;|Y2dsX)g&%zeNThs$9*TNkIa;5GV&$Q%*RZuyw zW-lra&&vq@S@Y)WI&75Obiqhe_T?6sX8w#C3&#M|-R96D5z|eWZmOV&Ca3JHS7$3n zBH}5IQgEN0iBjcw5ZTb$Cl{Ff@Uv>9?z#*fN%*AS8@csT2h8zM@eDF+ff`5SrPb-Y z$Z$?(L=R?h^^N8Raubf|(_i^zT4+p$d-qJUFzR zo837Bj7Ay8NxpMQ{QhXcgM%$y77AWDMik&*BWNC)*hFkn3HXs82w`wX+Ng^ zY6kK>_L26N)^yv6ARJU%2&Y!f&ZC}qF9|E>E+%M?xGq<6RD2XG!SZ<*SZKyik?kd@ ziXDZ1dHzXNt&m=>pCGw#rejm>u>+RaQrh)0Srw_fBLcdO_W#BH?T~7)-vUX!7tOH2 zcm}wwh0H0tA-4|-Q&QhJjY(;gygz&NJZs7=H^CcvQ$30OR-^AB@6?DBW>0M&ILG^< z?apa1bIqQbm70-?kb$mv7q*pY*+hG0O*iS-lmsPPQ7=+6hZ6&68!;VscijEN#lEuc zWEE)bAP^C&Cb5^5q9ZFi$VajGi3#i5OR!@v|KMa&r6c)sgOF`atAA+z0krIy3AVA?=n1tNn~m)kXR1!E|i~?KKyDiMtVyibW?EQbz@|q zFI4r8GL<-atWcLF3#ues=f!zUwgpu15IBEGIfvhgMk&HmBQP;AD+8tWtJ>6ASG=~@ zO@M`0u7G_>=IDrGadywlJ*wffcuf4&o z^F^9Geg1>}&Bxb<=H_Y=>RTaGoudYoe7`n9b)Dn9$#c~dmga!j*{~z_RvR8S=o6ZZ zKwTZJjN{ifw4tVj^^?3z#}BBais? zEH|zg@yy_OJte0S0kJLQpPA?Nt`t!XX1}(vM?&{&;gHkMspmEw7 zTdpZ`H&TQ??$EhBU87BF&4eV(UPUgqL|mqdzytrH0v8M<6i|_G?Kyb_l1cV6+fESD z0Nqt`(rdR^?{PKni6@ur^a;H6=scarPaQ38VA81=zlm#O6{=7O1?0b0!e$uw5oIcW zR$29RN{h9^tl1gJV`TQ@XW4dUgN9}o8ol@J*Fa|_HeHDU$?*Bd7GCNcgXd6V6b59w z_hM&OJHduPKK7QO)+eXsMO=*$MJEL@!GUC!Zf*n`vnspB;4C4t(})4hkM;J=RE0^fXw(HNFgms`dzJk%r#l|n zZDk`fDJj)bG05YO+i24x-$fsLo#Fn@W4NStL3h%>@ zKj)@G`d}Qor1M%|Wt`HeTd^*3>vQ`t{y&OA6~W>W z8{3NVAh^OXd@zYg_`Lu#nyFB%FIsqeKKyCVgwDG=%eLTvyBHX1z4<*sRT)3f(RU@Z zram>c!TdecnPrkoV&?Z(c8(L>+EeY4PL6QTC5u++RV z*JdcRt4TpSB=>I;Z@Qn0kRt+vKIg7)aqngt0UeJ7$E^+{*hpp`v}eC9PeN+d^aMdr zu$ZG7J+>;e3mpuWt1TSe9kwZ9mD)nQb1Ci-j^FKbt&EF_TsYf0OMgO3jZWGqlUzoK zb<=EPQRI{|>)MUHv*W4Q8Z$`e?ju2kJVrWPtR6$IbV|iyim)DAjOupfGMPDtT>hBe zcR{W1*L=V-F1y347^lE)iny!BR3`Ma$kit;@puKtzH)qojp@LDYm;Glz4)yeLSJZk zdcvT`Ap3$c7;6Bhdnh&e(nY?8c0VmJUc8{6VtrPq^$a_s-~A>8T>za_w8zY3vs0xs z^cq@;^Lj$<^1gghl1nh`gLe@D>Xxx#rtHa#zEk4|wD){eC@BT2ppX0D>PgmPKe5S-NFBddySW_?%v4ONqa^X z&N}cgpHPpJZn_9fZSTkYgQQ5GE?f|3kKsw1v6zONqLRHz#})}#jxhgyZZ$pR3clzF zCa3m|&rez@w%q(s+^`UEGqZ$a+NBJ_*MGR6g^e+{qdMFXJ(SI|CgI;^F3kMm z+0-gvGaZT8HFa$c@yHBqHak>1yvF*_=xSe^;KBu!^nvrj-ALuzi9uCn9zG=ls)UjusJpQI|3}l8$3wZk|IcP- zFf*1A!&nlDlo;Efo}th_3e^;)&_k4Jv}l_#mKLN!QRH)I(HAyUwI& zllIf^y65xz{^51b>l`zl=f1D|y07JZz2D?CaFt`=XW3pKpj%m}fNL$=q?FlbapX`( zc`)~rA@EHhetELlWT3Y}5nm<#mvhYgQb|s|E?fBJ8+h^A=!;rbN5L=Y@M}f~uJ%#o zP;+~iLi!{?a^@kiw_n`LT3t5^o89-nJXC&FY5kPhSIy{tPzqBl9rK8DmDwP6We9nO z=~!Z}6Z(6m5yVAy;$Gv*V*dz2#u8D?Wj@bc5!n;9foOLkZn)L-F;jM!V4qIb5f)>R!~l%A@!QSU0^XAKFU zP!iQ()&X!9fE`I5A0sZm+?GPGwIDj25U=PfSePBy>S0szYC~W$)6$aQ-GPP$Q^G7y z#pKQzyOHVq@-x`c|E)4A1>F8`L8~H`*k%}R*Lp9I$;|&jJh=ZA9Ce<2`ozkLIOX*u zO_BhQk#%KDb!&j1B@WPJa}R2dErd;s0R)@RnzaiRP-&%rhIoodqvv$)VFwUdAdz zpgH-nX8QG!P_XaaE&n-wW7`waqygxAjUd8Unn_O)9`%SYak!jU-U@ECOhIu7*Uq?SD*KdK|*KY>3kr2R=Vtk8EqOSeHzW)e_da2T~G%H)}NO5?KD% z0HeLnUJVSk4z!mpJKVu^UE^qHIeQRJ!qQ(pUM0iea4b;G%hXYDbI~Tm8Cl1R}I^qmR(=i z;))++sN;4d+D-Vp(ob`RUV{w6k1f^_wp%G<4K*jPh%|3&L$8+K-T6OV*JL}w!IKbE zr0Z>DKJ!@v`F3RDP-&NU;y9sJB?AFjY&s|Dl&;h(EVIz5N)cxprn8EO>Zy2q2WG)Z zKBgR8t1OzM|DZ)cK;G14{RTmr)Ozx~$Q{y&%d`x+UbqLE9u}HUJ|3o=^bFkcT>D?2D?$ZWLF$BAU0(?yQ}lH+Aa#auzLc%6 zK|pq_7wchX@tyVLKNl0plJc{3$ymwTSQEU#N>=Eu!PY0v)8&IFKcy$iIan3HTTP?H zd&utFYCeu0s?nHF-6j>PR`7a127qKD2pj58saYtHzCpu|yp3}qXk9q{)eWZ8LdC5l^ANVYpT%;$lYPU}>0ZLvUE7lURQsu=BVxGSs|ON&Y8dk9_3Xrp z^8Q0Q&FW#lN+Xjb<-NkzK?|vO3Es2AXzA#g<6eVNQkpj?>fUhMKT;~j1AYKxgvr7i zLG3omtKG=^4Y+N;k^M2fDIW!sBZ+xyn3*?21mbVnCVu-|;`R*;-zV=}ww6{Jas5I) zBW+%j5wgS8LsR+Zb>4VO_A!8TQ7w2*YH8KWWl6-9BP+s_QZgyBH~PYNZip#X75#|)?l&s4 zWWLr()~rSzzsbyb@0ND9MET7SP?w?%ZuOzCD=$Fv3+ez4?S#wXk#8%X>p4l5=*jko z@C47%o++PT6VsUnr_tjnw-PILMu*Uuw=S2vP;tYPZC;2l+EhJxYw)lC#P@Ux70G1b zH`{R$W9Pb1u+fy}0tK%ZcI`Wu1}M>E+dD*LGJQ31VH-HptoHX-PMnaj;F0|n5+1e~ zD_TCdNg=}b>Kz?H>wKkCpV$8y5|4zale6x(H$Fa$W`*IPi?k7dkSFso$KCQDjx$4M zQR=n<(bHJ~1KycTwVO==A{`T=hi1tX%aY0-y?0gZX7hE%Fg=U162G?$o1Rrwj6&&= zC@QWu5}u^ZEC>v1tCfG{m$MFjC+`CixH4nUH`G9Tni(b;S0xcy-Qk1`$RhnA&Q0 zl@MC(ifsOyvSKR#a1{h4kEc{ee2g`q$gTA1t7gEPI1jvDNRI3yCg|@vhJKH4}pQ@nVBkN}Ll+Eyx6>uB}6AE62bVPe3*N&v< z=6uTJ6fCSqZJRoi+9&>1TkB!E@C2g4 zeLV9~?70L&T*cHx`k%8sV_|~KhtX_E(A)5JQWsSWPsF*xN~`p|)f?u|38e535&<)a zygmMciww~;4=}+OFE!)hL>XQ>k=onm_gXY22x$ZTw*6qNlsj2TSg>c~;u%NA4zw^q zlurG~Mz-<-V`Gv|7p?Okv$OJiLCKm2>C>zom=SD@^(s;kIkjc1%`QIk7A(SnsF`1P zRE0o_JZ&n`9zeXC+Y)>9#wCPZ;=jJ+E47*BIyHO0m{doyx@S(UroN}cLY+osWIo&0 zPpfdvpMUr87uyC+A0_stdAld7iso^o@8s|`o+XNK3yQpC9a0^Z;fAg! zHqdhAisKpE)9tgViV}w2T$6>>#(!NISuxaB1YK{DV)PTh#qT8P2ai;|RmAkRIpME+49%wRP4D)wSn(RMLV=cwi_Q{q-RS{t>H5 z@nfh6mLMfWH?;$e~G2P`T@G=mZT51F{|6RdgAYt3Z;VfJx* zos~yC*MK`2DHKiRnye&(5`pw9nf^5bqqQ}V9#m}ikO6;liK)y@bZc4S_n0=$OR8+1 zlj>5$)bb9X4)i3yR?2)?nTd1?VT%M0wIWgAjm1);BQ4*}6+qs@$hXgJ;1(L4KAl^c z=};bzl#A{Zp<#v+bZwjsAn&o002rUqro_;=!~>V_mZjfnVQ2Ig(V z$;$F|_4ly~zhaj?xN#y{4GxO>vE7fa@d%e9#CC>d7tXpcpTV7369?#svYw-VHRH;E zQYiRp3{k@^@>Z4WK*Vxqy-HjfLjJk71UB4S{yzBIbEnM^XASgn$OCaC)p=k}9dM)5 z)C-n8)QIDhF0PW7B@n1=&N>eBa5_-)4t!@3Dw#{~Ow%eF8*54eCqJ2y7Y*eF5@X;8 zhvP?wt6ogV8~a-GgIE6&DIB8sf++S|dDpz%gQLBC$HO1bLwD0)d;0VV%$j@U*)zmk zN78c=krjY<42Ohsa5aj;Um6JA3`8Sfp2AylQL$`w!jUCGYaWL@F&wa!jqy~unq!R- zNr;aZJG*E9k<`Bnp?VHUHfh%vboS_XSX?=8LdC?(I_lRpFe@sXt|QpMIF;_08xQ0; zM4a(H^hup@*StFOi5e#HE5Q_B{9APtxCzng7@sIc%RZgsI{p5HHO}}Xt}4BF^7e`a znxfp#Z!NVYn5aobtWqw^bw=eGI<`JW{3s?4vusk=87%t;-Elb_5;N22*^?Z>{Ja|+ z30+T}c0_wiw?~1-QQP-20Ix2korUZEN#*G-@o6{PsY{k-SEiCR6R!{v+e5!_1j3(V4+#|8Wqv={|sykAn!Wk758de+C2vJK9?=o z0V}3j!KlA}J)O5?Wdn`f_K77(KkAicYc?wMR;4%<6#xM-mrcypdp(}KX0J)gFF_%Hs~|LI^jctxm)FsA4(MV^ z^Q`C@9h1u6jTCo1j#t#p7mv7?@SOf6xHXAFiLC(Kg&&H6CY`Vr@_ngu=~syx6qWLa zVVaYz(--BnkWZ9siuxq0)bS!B9Et0i}> zjLpueW&LlEKk{jFdCNbcf!3^c2Q)d>OM=dXsdGjkC;KA646I}hg(99qfu53IPf&jp zm-pyah<#;WmAyjrD%7XMV6h>0<4T>hIei}dPQ?QpDjb>{!z4c@yj!&m>#@DXBW)YR z`Q1JOFK6*gHa2^r;<(>&G+}b)S7_^uj74N>Q!%viHqOY9R=JeDO|p=6G>;~)FbNBf zsteZb82R*!Bl=TY52@VCFT$j?#(fMK`T>U0m;kL;5r@vq!=PfQRR2USq34d4k`EC9 zo?{9|>2~rMoj=7(XDjY8RM2BnrT51juG&Z{JXq-SSKJ7yu%xIxG>^qSklw$R)zhUc z_l~#Cyz4Z?K|6Ld;+m3Ki7ojo;&9c3I0R@@b)YQWQLs{)9&nyj(w(>K9uQN2?Efp*a_T@ zvE@lWvyi%{7IeoiA(|fU%K9}2$aPB>Q>BA+Ofg z76y;aJ-f+veg6okxH8C*rDVs#*z;k7Y+Wk3a)V^aemI#0*4U$r)DgN2F;6b-@mp=eQPs0wUCEumK}0rj`S{F{P#+AHAeKH|%KtZN~bI=XfM zJ0R!ldN1wj|)>c2PppN0hMAo?+v}L8O1q$y3Ev>cqvb83IY(v5XX2JSy>y?1-HVrGJNMcm@%A5S?wTbD})wP9Ufj1zo*uqH1h zg8n))7h4*_hYgp|a;!O_!8~Xa(WZsZfQ#DCHk&3d z(xew@=05m1VJZ3F`~VVgqQw-+tq0aYONL+`Whm|iaxfC(^tooqK4Y_S`SG9sm*z6p zL2^gE2bb=}OluL4-%OY?TiJR6LUvVuzUVXRc~zF+zaUF-AYA5PtPd?|4YZCZ;v+Tc z3#-Jl>|Mg`TY2VjK=Fjeg9P{)z#>!Cwam5->zq91d3|+&cnxSKtQo)zmNRO;w=~pj zTU3mywr|Nxq=}_hVgm_D2&B@hU`sL)y!-tfQG#DcG76W#kaDHTPD$vZzck`0IpC^LSwS zL1#wOG+J^VgtV0RE)uhUK`^yYHPy-f+YREQIcCJwrqco&OA|=ZwgXgv647 zL^G|nwV3Wh+@&R2H3eqA6)XCkSQQ6*lnIxI2KbLlWPP%uxGu%$vk3agw=G7L)aT-^ z1zSY9L(|-hHP0t6K-*G0@#4R?X6y1Z#{m|G!cTb|kmfq{2i5mUYM|vOVt4)?RK=<5 zZ>eew?IRfHhsgY{Y|td@w0Ug~En!6^F!)I_*iTBPk?U`&Xfp(A)jXEZt$Npl1B<&RM~__RLKKF@igwg@ zYTBP)OYu~<=r&PKkrpD3XE>lRzbkm<9+_UTs)esrMlj%iVAouO`lo;o5K|ndvwk8> zfKzu;`Vo849N)z25&$<-j8t^Gh=ivqeHcwGtfqqfo`%Vp6})X?fQ0V;FW~LtAAg~C zc@j#0c3Pl1t8vn8bsiv+ZX@ihuj;{Ns6J5D3-(6}fYrF<%e~YtD>w^ zdcg4jlwoxIq>+i2`lGAH(MVEUm!e*FWa392*Q0Fql)9i3n~xNh#|WxYgKDgmJeqvj zQ_5Ebwk|6&hT%T6&6*lzej$D(hfM`$UuM(?Z&=VPrCA;;oK^=e z52ln}<4Ds74Wm{fH62*={%#%a)S5#p?5*P+YH&%&P<49>bzqPNY)`7@Ot0U-=!%lO zxFN1j^rdsvD0lh+fzt3&MWFu8oDyF*FiAh`>nPO&-KNdz6t?OC$9bP4C+kw%>$M-@ z7w^McGZ#5fR5K>z?ar>T)-cAZk`70d=+wwqQ8Rd*b^iF(o&8HF#4juL64c0oP92_-x0qRyBdx+u;iRj50-YP5A3aY4$EBvx~nQGLxbl*({ z*53^&rRNZ-KJ;{6Af^s{o!gk)D4oRL^1)&IpfoCg+IE_O^M`!V-{Ufve`d~Eip}1H z0Gij1oO%T5ah3Kik@^n338%;TRd&!~qXGjleHpQVEizmx@w|$cPA4E-oS)7=rv{&L zaRty?+Py%bqiLG$e@@mhP&y1%M0U%WCF}6l8zu7$WqZHN7nBDd{max$mAAOipe_y( zSKD-Y>Gok+juW|~HQVAyJJ8xlmL!^ox_aPqEe!jDHIwD%$%>=I-D&FRVW#PP3NiPU zP@_nlkZ2i^WsL$SEyKt;T5f@2(68L3Ovk3c5v#03oSyRm>-AvRmXNGsvNj%p&@~(K zN60>Us@_utb!Q*~fq@}DCAnx++zbYUX=eS#3~mN0r^D4 zs=$TfPGiD#cA&+)Hyf_z^~vPgO>K5`BbqxH z;wAV|kMhHYWX**;U#HNL{vxER(^uX_#m}^rR=o&X+DJSK_d-eW@%)OqRN|jIZ?4o0 z*u1$-MY$jwkB3S+subWIcCLB`k|n0H>a02Q#%i_diOqXUm(BB>{#pq z))ok6+n#cKh6V(!yO(mMQR+pqc~4Kem~9y}lo_N#o~2}QXV)o~?EzfGh7CSFQHa=L z_)yLB37-5c8>ew%l;@agTt_az((R3cX8d7Qj3C9kMhV$;iQf=efP?0tAK!dN@lNF; z9m=ku{qRKcepzKZycAKt6?u>>=B_j4Qv(6!K~FOp5P3?dfuZ`Iuf7sH&&AI{;aH**ajpe@YGt-{9<954S>UTC!5afIr*|1#UWV}VO7i!rR@4CjEt^cp zrqSfnDDup4r_aLYfWw~xmY|0Kj3u5-!4@6Se&d2=2@3^JLM7dCfW&$SpW_USbM29){_HtHr$_`&qg=DPJ;BlSd|E<o4f+YFJ5@(E+NWh?Nq zj0X$?RW?Mo=G7OdodgZyf`G%jITK;x){eL$)D+vPJHHuJJ;1!vnlqmE2JPI(s*cBf z*(H04f5C=|DJ=17gNG?)nHNx6S8a>^;gfaoiSww^jk@)l__9z3r@on88>;qtt6&^% z9E@H3u+c7Dt(PNR{)0{ISwOhpN;UwAl49Ye&$66-TI=iF)lZttid zO8x$i5DY@3qF7c!$$i?|&JC}9?}>XM#_e}-FC07?`$jdk(M{`6rdT&Z5`bt9 zj}G8d5^wD}wC2B;W8ya#NSP)61hX4J8i@aix{e{t;rOt?n5@R7@r=*$gE9 zmUwKz6V23LmP1nssXS5D{sm_Cv6@X3(*dG7Djj^m>fHVj6ATW7jRRsP=^OcRRu06F zK4=ho@(#6nS7*F3{srb;I?AHz+pt-FSa5SAutd%R#P|DR(sayY)0wje4A3<-xZQnz z>E^wN$zvl5UspcUmT3s;)NPSM&0RWqCVL8md!A)qZED^h+IpU}aFv8Wc*LsdN+k-7 zU16)cg72G^O_K3+gUWi?_(zWHoNGam8+~fOMXDnyKz9ePWjr`=hq@jn|4NM+e5Y!Jyv`tiEo>VWiIzT~el%{6RocALc_~(l4Ell6JF+PigK(&Z!@IrW+0`Pw+Ew^7GVp#c=&*&H) z-)@ihq0=M&VyBUgO%~n7m7mX}iYekAH6=T236HI8k<8Eu>-`-<+U>_y=<zv$~5Zla7t}G^2n_Ubdp>>st>;yxy|;k(s>%Wj&5>3)d$bY%Tole65G#F zOItIo!-)pUZy(?d($E1ySFCH+ygS8q_$}+pmGQ%|L@apC#rijx3#! zC(Sa}mWBfAPZOu#y?5HBekB*>oED$`W!Uv2+gGQ4v$4#<4!7jv`R0xjUHEWPN>V5_ z{#(GlkIXjT*=GZ_@)*sfcf@KA%mmiWoq#h6y@`|5zU$UT>od2qcN1(CXcLE-djMcxp6r2N4WRyho($Vs|^rd zmO*~4P!-eNN4?g`T@<(^_!c?NUyXgcEK?=xSl^Y-#3hTZWXV$0XSdmPXhnG6Eoc$?dZXgls`=QjUh%wR z*pla@y&=XOMvA8t9tH}_JV-oD#AnM}78_Dx&-e_;Rg2)ACBG=cy)-A0uh3cSJ@DRG zdUNEli&Vi=AC*BJUuNX_+lnEz5COoRTJRtK!cQUv=z9Hca8mMJhJk%M=1gfMF_}gLlYQC^FFl*%6GjcxgSFwhF zs^Z7*B8%-LNmFEjcQhRdJ(CNe}K(?*W%)aRoW_x0@IHlV$^&-^f+3h zH&!Cx*3T=B{$VI&=j)aD0yRFfbRu?YyebB5EG&GGb~ZKB*wt}DeyJ|33FI`{99fie z?GvZ<48S;fa-em-o*&(!TmM5}{qo&W*IBW)80ZW>ep=$J{yi|XWuFw*q>PV#YXjt-l^QD ztpQReJ#Nd{1|$u1*=>6~%UnpoPC)I{&Y<@rB2bv>3vO?AKIM#?%%LHMJmx>JnxFPM zC|^Jny9GgNSq>iAhPkqkfD;3yjUX3I!+dxrv&2kS-YR$;RILP1trb-`Go!3;A{qH) z1OJGhB%}(E5HWocY4EfULP|+)_VF#W?uATg>-6e8*IP@Wyxeop{nqsSZrdwm^0Ik{ z(-JOD)N8Ap3#LhGVcHGfBy9dU%j~;=484wSg$p%fz#*=MAIbWoBBwGXZ|h@J^dp^y z-)f54T6TveK0T6P4#Vd<-1?v%bWx3^cAnl(>pbnBpX(%DFKhe#0`SBR4Mar>TESUu zZ#@@gS>;3Izmn|kA~&}D|IycMibjs=vSfP=;qncmUsU%GPw&e#CM*__Unk$e&(yqw z&O4gF0BjKP=jK3DHu2L)79@w^fyNcEV&3$y&Eh2s-(iB4X!EOJAmTv=t^EhdGSYYhvw3(|9yaaUbvn0K(yQ z!X;QAn`ZN>xYzl>&>vBc)+Csz*`{N_4^Jn=I*yt%a)Rl7>5J#IKBX5gLVVf-y{F53 zJYsM8FS<$59jtOj(1*3b+61Ql%LSc-_fli-6xHFJkzmnNBRi{>(_ ze9U6m>J`+^9s2e6sNrFXjH8+2!VN<8iW#mRtV~~W{XFsP--`Gb;$LYRPY*^tQ%}A8 z^g`L2m6G9^VIlbzH1dX_CW}LITvW$w9}KTmD|jgn=%roaqW-XHjUoo|>(8pP${v^2 z6)Ac^u9SKs2p%<$T>5tOK%_!T1@PZ=l6qxe%L2&(Rx*`VbM4fT+0hvfyLS@RCa{Kh zY9D{pZ!Ed0rFiokJg1dVOdzR=gm}3$lc{=O&?$90%#)NyEX-eoc%{VI_u~}z9vo^+ zo=E(+h=S9!n(MRlMozETF2w`bQisCe#u{f^inQOLvlnDhuvFX7q+2iS&d?}k^$1O9 z5B>uIk<`Nt)ItL&pn$6#4J-|3z9M3Ur8%mYH}Vo-ySv*Aen+%ov);hA@sgk{>t#T1 zB(}e4irniA1O1RbP_dChx9gOFXmjjXlp}^sIN{HLDF4G4jY-!&Fu`v~+%-{!5UNH% zq`mvR_>N#ZGMl)7OM!HC?NXqzq-zFV`3)SvciqWk-V{ zrF{lGwFp_e#oJiEcN!UFE?YQMwP6ODL0c@Fl=cZ#!FB5OZ1*Xs7l-eTj#Ng{T;W?k zX5J$oG)0rG(PTq_=9sm#g9_EtAJ6onvbde`y2h5*?X?y0iC~V7;LG4dpdt&TU~ni7i>iR1qfj;LUFNP+o`eN7VZ(; zZt%%a?zQ#_vX@c`Ic{wl?~PK_ol8_}v=QLf%~;To0v5IocJ9R}87S)#`>d5RVyT(9 zdZjfClynn=RaW?jB=AZ~hr%vz%_p72wq>juPW;Jp7O&07ssr;ill*2oz_OdIyTIeA+gn*Ht=PFL`9( zaLA5kC2t-l%o8uMk~7V5-@Vk{Eq%Zad~l~FyZmQX2pj9VK+q3~l~2|F^M}Zmq}|p$ zl=L34)KIKd8=g+61Z>;s{vm|2uc9+YdW4O0!{TTIV!!G-<&A2e{b*d>sU|Vo*30Z=bGw z2C6`s!vl!Gh8R*dQV-OBc;wdzU_I|ymA+}jEGo$9Sf*t)4smZbZ}*xSND=MUlSVP6 zmnPk*)lpw(6#O$r`T4z@?myyJT#$Mks25Pe?@bni&G2rP&x2OuG3;#lwU%?oST!k> zj?-~Ir4eIa1EI4HTVrbtF#w{gNwi_Jt2WeN9(u$(s7STA#_f(VlD##{dU zXV$HUw5IPUL+?f=6K7V-<+uCrX>_1-3C@Q##)04_)e&V?CCY7WgJv2>1IdqT`XUZj z7QjE_YVNuGV+Lj5b)2N*z~q1b{72*s!`B6MBQaIRpYCc6BaKog2TK+>L z-9#5T^R+pOWauk_yl!}xuJdNF{r&KBB($;!oN`wdN$9wJV=Y5 z7Ud8g@z}rf$fjU2BMOa9-MbQmABnzVwf}Fk@S-)!rq^YgG&X58^UrjOt$}z3of(x)741#$T;DCOTy6;t_dS{# zW94sD8U^iv(&}>}$PMUA-@ctnj@wKgYeQ^M=}ej?;hQR|94SD{z5d}6zp9dP|3gzv zy@OazQ!$SNu=O{ydW#*}^m1M#=0Pm0p@fn#DTKowLSd7(&a`bSv(JDfa9@igm54n1 zOYa@Ktnq!%ec(0lcuS!#wnJoOGKQe~LTq?+x2<=6FI96sfLJAnozy-hJxyX|4Y)`I zx_EDIJdo=wI0EMCCurMA>-G^>-y4RqlO9T4Q09=!@r z7or(!L59$@}jdSxsdoZcrS* z1n68&6>qfa0c3MJ_1`Rniw!4McJL(mjc)k!3Xm#@d6D8{I^@mKu(Vh}3qIkHF^7ny z|KVX-q&p_I|43Aqye=yogBN8M4d#|iyQ!rR|8-Zq#_hqXiF)`vT}@8uRaoC~7Vll2 zljV%GsE={rmR6C<0qob;mcp=o2HR}NDmoR`iJ z)%cTsIe}sLdak%+tufi^R7yW`M*vA<~nll8+fNc`0*KOz&9C! z6^?bHuRxtFup3`|5_?;^;yL!gkySH&4qW_{-ivY(ZD6II%8n}9U?f|3x30w~Doy8? zDxeKI;o|^DZzp-RugGJ0+iFqmI^v>1=k`jDYdJRJjQyP*wb{Vh0QLGSQRDeuvXhw{ z7}wMs{##eJK{8Ymy9umYa$zB)Npw7Q2S)${-CUZyHxBSwVT+hlqU)Oojuz%UDF5tU z=TjEW314CZxos$7#d4bJtl>-Sk*m%l$@ zNSn^+s5cu5FSyt5(O)3RZQ{PsqOvHZa_*%sd!POrFY&{%IEv=y%m^?9C9&;br&&%( z$Yn#Qul;I04_xDB2Xs62Jgn+uipbHnAoMPJrhIrOM!c2rFq%?&AJB~yLB786%?47r zUi|Bj76#JAc59P}DQ!dm)Qa*ERe8*+ZJwrA<0e?zfwhZ#1#0M#%-$avvjY0J|I_VB zh`XXX54lyF8Rd*FTIwOi>d}9(E_lPwr7&Aw&vM@U=|Y}xE);^q8sPkLWgSj%obIVQ z#^9P)a=v{D!wOASh}{|C;w5F`^1vMluji8qm#2YGK0tP?;m=h*n}b(6Ao^PM{NhfQ z&C9d{=z1MYkeKhRH&Y?7N;|^kXo%olrc=kJPHbyCYOYmNCaMntn z?+Mp_Q2A?!V$>sjSzsMQN&GGsZ6(^>EFtQda@t}4z(-EKfV^RaU+)Br7L&B~sy9yj zA}(D=x({*CC(~QQ5s>0^^F-C~6l<;2wkr0uYAmQ~5ec>0_+OeC8BL9{ z)Z*PEi)1hVTva0G2@OPbL=#dvPSv}56Zx@&wA)dF-Cx& zE0IHOGDK8Dr$fH2P|WOdvex#DN5S+z1qeS{J@AD)qNAxj_5fj=@(X*T4Eb4B`8oag zq>74-0G4;Hm8WC?cZmg>?4dhGf)L)Ec`;fq7V4BTzh zm4Am0tfqW#pv!)o(GuXjGjhE@f|B~v9zoqpO|o}X3H|}LQn6mi1n0^Z=fjBG!^ozh znAFrx$#m0DD6dviuw;g0o+2{Z7|^zcFjPn@EoD|MaH?fVqthS?96(|J&lr>9Y#n)L zJV8w%Ups1==8c-1wa3s^bc@apM8~tV^Bk)E3tvuiIV(RtiQ0Vc)`KQm(wkwaQY_Q! z%zfX6c!#MRp_DBOy@rGox>NR9q_109U~Qr8s5hM@8k;e$ExFP&ZLL-K=wvk78uco8 zhjM~A?t%e+bU!LM2Kf6VvU;>^*^(fEkl=KF2(4~kRlwpEPDLVpA!JM}tUM9$&1cV> zS+_;`V+rbwL^9G|vvPC3IUBrlGo|}E^(6`aIuWHa^ZzGaa0*=iVQhA!7t~ket&Xl6 zDAIs7*szm&osN~6g7WxXU^s;oqHvNrT9?9~zXfhPc6lqvU{RI3@pB*kz6_n`;Q1cR zr_6{VprY^(PY9-Ue@=`r~F$|C?VhMMk z$?&jfitOH2YE&|_*Mu8cam$Xm}ldc5) z7xrhkZ(uUP#Mg(Ub1m7egV=%y1mOlYX zXm`lR6im+nSV#GEI;&?v+BuuHqqOD>q4KlgK;15VR6txa`azn5!L5UYUi4xaP)4*& zJ0J*!el6kY+Up|ARuuUipu&X)7V!<9^JB$Zjb65kP07&va6aUNBbD(J50`e^7x-(j}(vm8M9bX zxpdckSmiL_ZGU~^Nb$BsM6H3W=`>Syl@;+jT)4i?Ne_B_H-HiGZ95c;24|xqRh0G2 z{5I=+;Fn?e+Yy=#mT8<@ioxUc$YhF6r{7}{ZeJI+^FWEKE4K-50l&2WSPyOa>(a@f zzu3Hu*qz#h_98})137KT{orV}L4b|2lSX(U02uCPtjeV%x=6b0Z9T-<)J=#(1;m33 z=jfw4xU!a*6iUvWrgj=5?%F4wy)eBKC(?G#spRUXs+}3kDbM{OV4y_R(4}0=#aqGu zKr~*%SbAaYJiO7cz~}8cme6U)F-Z9+rBgR-ko`4_D3`Uli2z4Wo5XNk!K~SIxcn=@ zn>cE~*)wP34btM#SJGk*>7FF@3NSTE>wMCcX}8vC1NcqGxSP4`Lje9U-)s|_fJuFwjLjRn^%Ny7 zXfi?(Sa8n1VvgOVaa#Sc( zSsQtHh)wk+@`|UV!V)!ZMMo{GMb3KZP3y_pSH%Dv4d+C-=cYd#3PiBu5!lx?^}XCW zBjm`P?1NtTxbD!KR9~siFq}dc&hr{J{nU{NTi%FOWrESD8m}GVYW0|5moPIcTazlSiMZkFiGT7E#;v1^Hc2uf$GJeG`8T zRqrts&SOf?v$m~D+&4b)DaoOd)*lcOLS3I|T<{R{Uhb-VxFpD_h!?%dD|acH6q14QoQ#<$Y*)`$pAXVw?#g=@~n;*A3S+j%dCz>zYrti6`-yCA{Dz zsIO3%Tq;k@PWT_go`k4nhM$l(ZIpgDQNMIW)jq;ygci3e(^H@!F%<9s5@PZg^*IMx z0rQM_UJcX)?k#>dLOgrKXmE^_a|w=tg-ltL9_&H;JCb z>ZVtkJX*6VooR(tFS#}Dhk5TN2Xy*PCle0))T_rk{rv#hO6F+lgl~_W4sNrf5Om+4TFx6*2?%QCCQ|L)ER zT24?47cBJ4XCAwl;PX*W`qMyUu(&&P#%Z;)NyARx$7~JTK{I+8={aA$(i(sJ3Bgn) zK?iU@CIO^sj_iUfjo>fVFN5xfEIilQD#MNv0L{yUXei=g_wW53ie7nKt%&s8T)^O} z+)=eLN;B?tAHW`lB#s=rD?eINd4n!|4pKy;f9N&QIH`4cku%V$4Y515G!F6)$T)alibRi%Fsv4^_3 z-%WU#^E1UF)po`Il+3vk2_;oLq~uz{uxX~apB~;ifqsMwaYhsri>~bR|HNNPKU6lTR3Bl3&k^@Gd&X{;fXY@De?3-?vfHJw?Dn82LwSI zu7xB3rmhV`5D!EEE!FUEGo8xe&aCRW@5Bw~w*g0Mddc*UQ z;`5gImW8nmE}psx3(H4Q1wBAbA=*=R!v%XCLz84eTf@-Cc4yo1`{9$C3I7zW8?H23 z!KAEY1bypDpB}{IGUU8QTDQm6V;OuP72y}0+l+m<#AvQt>^W5QWjsLl6w$N66Z}f& z1;675yf;`{kfX;d(_Sjd=phe~5K5cevhX6SzLzaqb|YA$`!d|!Y|&kWb3w%pbWFRO ztEa!3Zm+tSUaFe{^M903D~U3LH{AhatrgQRwYixcv^WV@?&en@e7hjjXe8omT7!aY zrAWMl7HWJn*SZNiy^3(xIN>MLt^t<{}r^R#VfXH3-#zt*oQb2V?P%pIsvvFEE$QHVV1AJ?j2)}Kv`Dqte z*);RcJfhe@@`|P2oIG^kbxLA!?joLgg-%I#7gpIv=|^@1sY;MZ*c10Ay8r|$TL+Km ztXa$L0s5K&d|2eoX%J;hK!;ShcTRvhoF!esNL=vV0-nKrZ+2b>xyprusJ7S5RHv_bls;=8l+O2Z{=88?ZGSu&--i)QYa@^xR*qKh}S&v)dCGGwnA~P17%l zs3=@;If&&MGP{&?&R`upPkfwC7_VDXCF?o>_<7P=^h4j+QU})8 zewjXH~%NJ-EJZCBdMJdHCQs0}7IM@Hqto`|57iJH z_-Ixd$R4sa@>R3=Uw7j@T*lHc1 zDk z(#wu)Plf>v@uNq?od=l)$*&c4{$$z-t6SrNe-k*`=^BD;sim6?W4NilzyuqGUjY5u zgmu|t{~t|P9uC$1|7Ra$hHNpig%Xh%)Rde<+0!UXjjJye4y9D1g_ap3+LQ{Fq9ZMX zXq!~38)+pvwien;4W&hLZ)y3xKkoDU!}HwdHq1Gn<-NY%uh-ciEOi92-QQh$UIWl6 z2RQ)PY2}K%i0RN5v*VqtO|VhNRK0+Mo6$V!`iW&>%QAtBxgu0YdGh$n@&)1zw3=`m zWNMia+?~00W_iytt0bInd%?acT62h^6EdE;Y9`t!QpG;?A1uh!q4=xaNDEMMLqh%{Ve%8dv(AWh;0=GSKSl^o_uNj zJNUwha4*jy^WiWO`+l%Mt|QT;iGq`=Afy=W=qTXF`$Qg>T^}KBI;>d~AAltyW#xA) zR`Cn_tBYDe1X7`fAmbu>?+(Ol)m80$Av zpfYHOwiCWLt5oIuE<=!ohB3X=>R|eWFy9_46ZC$q$mSf&HbL8Y@jNr~;uQ$t?Kr$n zUcr(@BoI25c9M=k1CRJLNi)BTk9}(9SFJS(dqp)H6LDIErjuP|YyAe&Wh1=buH0J- zxdWLWPQV{~OC1!QRvy`^OLWoIoz0uTR_{X{_nOvyV~uhIB4nLkX-HGvv*0|L3u=to zzc6`Fz%k`jnz*GoLy~rwW&agR@5Q^E4{*<<;|c>Z;Gw?d8l8n}_;$u-G#Td)x~PW3 zqac4A)YNoJ+c>Ns$-u6jy8hQoG+;&kqU8bS(c7G?jE7j$NP4CQuPq%;*i1AiBpc({XaIK=r$ws|ps6_j@rZi6{c|%c3oSW_Ui43fO_1wY zuT56JDB9aJhl04x}*m9#cA8N4|BBJ-chNR+}Z!1_^_t5CdC@Q z$fIa9KZyce?H+?ik51Bg!6i1vU@CqQ{}$xBsSM)0`c+-$YSUoZf}GyE zHwoU$)@fXQJ>X`wSrKgB?mQakzR&ubr1E>f;(eGn%u>^I*uH3Ru41%S@6W@s;%EGt zw;FjTuvZE_YaZidNt>k%mZ+Wq$sX09z)i*utb{=-mUJ^}wlkHkzB(0n&q(QSCb47` zG2aQ14KiI>SOp8uuF{MRYzb$nDs`o{Jt`Qwt;rgaNjPSsxgEQ3;Ym|Gj;CCJGVc$& z=-)moyFpC{i!6DI)}+~1FySK;SUW?0elnjB<<6aI{FEUBE#+Th(7tzHvp`k-$X_!1 z`ND9;&Jp$}LGn)FB=I$yku;p{6oevBn=IY~0vcewuJY`;cigrV z|3LRKfg$_2@%Zi4Kzc%Rg{%(2+&*OmP7ZYl!N%31PD)h{JNhQ5>y|vU6xnU4f{^e| zwmB!jabixPk2i?NF2G%b`N9wDcfT0J0UeW6xPYkp;e!A;-rL@Wp7)u^g4;5z*Ki^5 zOUs>aq&$U6)`z?)UNGM^=>v@GiLdJPjgxa|*gG+mZfcN5$$wyE-3kiNCx86`Eb#gX zu$`kOMCdFiLB?AU6$G#Uwk0+`r&UI?T@Q+Cs|Hj-fr^!3f3W|cpcAdt1v^%XCRVZ? zO_@z^GpepID`|o|F_w>)5!O7RKu07u4>QkQ%Fz^HX8a&^uePUpC84L%i9SZ@U-(th zH3y5dl3&j-H)kBXe+jOB8q00jRMPd-3S`<2t-IMrd*VW_9<7$d0NI8yNYs=g^w0c`aQFym zTRHGo>Q@w(=G_m11b=FK^{-l=Q6i086l8(8{3Y7HQaZE!3;XFBo${ZK_!mFsR8IbG z>cIafx2h4aj_P%eV~Fp`;8}eh!+n0PU5=To+ezpBkPZH7ThhoKZ>62o2n49dfx+vj z+AMr3Yj`ME`fLW2G887fq7j8H?5EYMHfOEgAwWzTC|8N{$GS=$po(9_PO2+`tZsH! z%R1CK2{sJzG5kou?$Y5hZ-|?k)m}GQPb=_WFg&~Wj?O+dyW~WoB0d~9)F6N@e^tQ5 zYZ<=Vk(xM`ertML;~dFjpLaMd*8>aMg})PC#1j1Qh4p-&QzeI>t4R%0L&aTqbe$)C zq^B0XHd5CGA>3z+6$*cEqFv!dPZG`Zt1=`94^32ew!*z!sYprbRTP{$0}C1;yy7be z<7RYT&PMe|-J(l%CjXXJUH^|TC3zpGWA3}p_DBD=vCH{5ToMRh=eyx`wihkjxc>RR zyzjcw);J(xu8--A;v&L7&dm8wcJ`Xr>dKnSjZmp#a4zUa8HTNRl36@(%|NuxQ)Y#G zR+LnL?+3WaS8`=WTGk>DO@rmA`^SKX?zyy*d3lM_PD}C_vfiaIHAT}3qDrC$p1jjY z0_Nc%S3e!$k%dS1#O9%Xey69HIZE|yv$npvoZWsLG}Oo?xoregkbO#k*XPwt1#(_I7Vd*VQUcL01A4fC|NHOI2C{F|ryfx?}6bw~5~x##va|y5Ui-D8H{K8OyRGQI51r&^%=$BDn81fXh{A9o=^!GKEt;CLKmNl_J&HNZJ()Q9eb&cO)Qk31b;SN*$WY%O zzev}H6LX>8{J-hs{IR0r^uP_=q=)j>kLuO5K%bQ)jafB6H~anNf_+V%h9I^HZ(UH9$`9I(`dwhg_ (|N$JpKmbZon0$1_%5y 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 v^Qn7J>b{>$CZ6p(OiHG<5 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

VM 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

-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


47ImW-$xus{f#I`_Q8r*kcl1PFG_Fo&{Rv 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 literal 0 HcmV?d00001 diff --git a/art/exported/items/equipment/net.glb.import b/art/exported/items/equipment/net.glb.import new file mode 100644 index 0000000..28667d6 --- /dev/null +++ b/art/exported/items/equipment/net.glb.import @@ -0,0 +1,45 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://dsa6yss1sxfcy" +path="res://.godot/imported/net.glb-cbbc53905aec6a50c4a3322ca7a93b1e.scn" + +[deps] + +source_file="res://art/exported/items/equipment/net.glb" +dest_files=["res://.godot/imported/net.glb-cbbc53905aec6a50c4a3322ca7a93b1e.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 +gltf/texture_map_mode=1 diff --git a/art/exported/items/equipment/net_Material.png b/art/exported/items/equipment/net_Material.png new file mode 100644 index 0000000000000000000000000000000000000000..bd5eff22d270c53600250bb2eed8ef0ca47811da GIT binary patch literal 282926 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
kSnh|GCSrQXU2hXwRXEFcjo@)kxUy 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%0AaDz@yC0ng|iYhig<A^YS8;CCn8Wi{+ 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 Lyft*YIezvRgthE| literal 0 HcmV?d00001 diff --git a/art/exported/items/equipment/net_Plane Base Color.png.import b/art/exported/items/equipment/net_Plane Base Color.png.import new file mode 100644 index 0000000..7f40afc --- /dev/null +++ b/art/exported/items/equipment/net_Plane Base Color.png.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://seq5b31mwcqr" +path="res://.godot/imported/net_Plane Base Color.png-3875ae3dd186ddf319c55aabb13e663f.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "a6001c381d4c8e16bd2d64ea74ccff82" +} + +[deps] + +source_file="res://art/exported/items/equipment/net_Plane Base Color.png" +dest_files=["res://.godot/imported/net_Plane Base Color.png-3875ae3dd186ddf319c55aabb13e663f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 diff --git a/art/source/items/equipment/net.blend b/art/source/items/equipment/net.blend new file mode 100644 index 0000000000000000000000000000000000000000..0a7ba4c468a0dd609840eecfe0aabe38b463def3 GIT binary patch literal 388516 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

82?l4t(T}--a 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

=K~hmOku>d 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

#rtWf#}!`Iyh5A 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�iXOER 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 literal 0 HcmV?d00001 diff --git a/player/net_attachment.gd b/player/net_attachment.gd index 8938a13..3c7843a 100644 --- a/player/net_attachment.gd +++ b/player/net_attachment.gd @@ -1,7 +1,88 @@ extends "res://player/tool_socket_attachment.gd" -@onready var _impact_marker: Marker3D = %ImpactMarker +const TextureSamplingPolicyScript := preload( + "res://main/texture_sampling_policy.gd" +) +const SPRING_ROOT_BONE: StringName = &"net_mid" +const SPRING_END_BONE: StringName = &"net_tip" +const IMPACT_BONE: StringName = &"net_rim" + +@export_range(0.0, 10.0, 0.05) var spring_stiffness: float = 1.8 +@export_range(0.0, 1.0, 0.01) var spring_drag: float = 0.68 +@export_range(0.0, 10.0, 0.05) var spring_gravity: float = 0.3 +@export_range(0.01, 0.5, 0.01) var spring_end_length: float = 0.1 + +@onready var _catching_net: Node3D = %CatchingNet +@onready var _net_model: Node3D = %NetModel + +var _spring: SpringBoneSimulator3D +var _spring_was_visible: bool = false +var _net_skeleton: Skeleton3D + + +func _ready() -> void: + super._ready() + TextureSamplingPolicyScript.enforce_subtree(_net_model) + _configure_spring() + _sync_spring_activity() + + +func _process(_delta: float) -> void: + _sync_spring_activity() + + +func _configure_spring() -> void: + _net_skeleton = _net_model.find_child( + "Skeleton3D", true, false + ) as Skeleton3D + if _net_skeleton == null: + push_error("Imported net model is missing its Skeleton3D.") + return + if _net_skeleton.find_bone(SPRING_ROOT_BONE) < 0: + push_error("Imported net model is missing bone %s." % SPRING_ROOT_BONE) + return + if _net_skeleton.find_bone(SPRING_END_BONE) < 0: + push_error("Imported net model is missing bone %s." % SPRING_END_BONE) + return + if _net_skeleton.find_bone(IMPACT_BONE) < 0: + push_error("Imported net model is missing bone %s." % IMPACT_BONE) + return + + _spring = SpringBoneSimulator3D.new() + _spring.name = "NetSpring" + _spring.set_setting_count(1) + _spring.set_root_bone_name(0, SPRING_ROOT_BONE) + _spring.set_end_bone_name(0, SPRING_END_BONE) + _spring.set_extend_end_bone(0, true) + _spring.set_end_bone_direction( + 0, SkeletonModifier3D.BONE_DIRECTION_FROM_PARENT + ) + _spring.set_end_bone_length(0, spring_end_length) + _spring.set_stiffness(0, spring_stiffness) + _spring.set_drag(0, spring_drag) + _spring.set_gravity(0, spring_gravity) + _spring.set_gravity_direction(0, Vector3.DOWN) + _net_skeleton.add_child(_spring) func get_impact_world_position() -> Vector3: - return _impact_marker.global_position + if _net_skeleton == null: + return _catching_net.global_position + var impact_bone_index := _net_skeleton.find_bone(IMPACT_BONE) + if impact_bone_index < 0: + return _catching_net.global_position + return _net_skeleton.global_transform * ( + _net_skeleton.get_bone_global_pose(impact_bone_index).origin + ) + + +func _sync_spring_activity() -> void: + if _spring == null: + return + var is_visible := _catching_net.is_visible_in_tree() + if is_visible and not _spring_was_visible: + _spring.active = true + _spring.reset() + elif not is_visible: + _spring.active = false + _spring_was_visible = is_visible diff --git a/player/net_attachment.tscn b/player/net_attachment.tscn index 246e71c..da49a88 100644 --- a/player/net_attachment.tscn +++ b/player/net_attachment.tscn @@ -1,42 +1,7 @@ -[gd_scene load_steps=8 format=3] +[gd_scene load_steps=3 format=3] [ext_resource type="Script" path="res://player/net_attachment.gd" id="1_script"] - -[sub_resource type="StandardMaterial3D" id="HandleMaterial"] -albedo_color = Color(0.25, 0.13, 0.055, 1) -roughness = 0.9 - -[sub_resource type="CylinderMesh" id="HandleMesh"] -material = SubResource("HandleMaterial") -top_radius = 0.025 -bottom_radius = 0.035 -height = 1.25 - -[sub_resource type="StandardMaterial3D" id="HoopMaterial"] -albedo_color = Color(0.34, 0.39, 0.4, 1) -metallic = 0.25 -roughness = 0.65 - -[sub_resource type="TorusMesh" id="HoopMesh"] -material = SubResource("HoopMaterial") -inner_radius = 0.24 -outer_radius = 0.29 -rings = 12 -ring_segments = 18 - -[sub_resource type="StandardMaterial3D" id="NetMaterial"] -transparency = 1 -albedo_color = Color(0.65, 0.78, 0.75, 0.42) -shading_mode = 0 -cull_mode = 2 - -[sub_resource type="CylinderMesh" id="NetMesh"] -material = SubResource("NetMaterial") -top_radius = 0.24 -bottom_radius = 0.08 -height = 0.34 -radial_segments = 12 -rings = 1 +[ext_resource type="PackedScene" path="res://art/exported/items/equipment/net.glb" id="2_model"] [node name="NetAttachment" type="BoneAttachment3D"] bone_name = "rod_socket" @@ -47,18 +12,9 @@ aligned_mount_path = NodePath("CatchingNet") unique_name_in_owner = true visible = false -[node name="Handle" type="MeshInstance3D" parent="CatchingNet"] -position = Vector3(0, 0.55, 0) -mesh = SubResource("HandleMesh") +[node name="ModelMount" type="Node3D" parent="CatchingNet"] +position = Vector3(-0.000217, -0.098636, -0.020218) +rotation = Vector3(0, 3.1415927, 0) -[node name="Hoop" type="MeshInstance3D" parent="CatchingNet"] -position = Vector3(0, 1.17, 0) -mesh = SubResource("HoopMesh") - -[node name="Bag" type="MeshInstance3D" parent="CatchingNet"] -position = Vector3(0, 1, 0) -mesh = SubResource("NetMesh") - -[node name="ImpactMarker" type="Marker3D" parent="CatchingNet"] +[node name="NetModel" parent="CatchingNet/ModelMount" unique_id=1627767240 instance=ExtResource("2_model")] unique_name_in_owner = true -position = Vector3(0, 1.17, 0) diff --git a/tests/net_attachment_validation.gd b/tests/net_attachment_validation.gd index 15b8b7d..6b53c08 100644 --- a/tests/net_attachment_validation.gd +++ b/tests/net_attachment_validation.gd @@ -57,23 +57,73 @@ func _run() -> void: "Net rear face did not follow the socket direction guide.", ) - var handle := catching_net.get_node_or_null("Handle") as MeshInstance3D - var hoop := catching_net.get_node_or_null("Hoop") as MeshInstance3D - var bag := catching_net.get_node_or_null("Bag") as MeshInstance3D - var impact_marker := ( - catching_net.get_node_or_null("ImpactMarker") as Marker3D + var model := catching_net.get_node_or_null("ModelMount/NetModel") as Node3D + _check(model != null, "Imported net model is missing.") + if model == null: + _finish(host_skeleton) + return + var skeleton := model.find_child("Skeleton3D", true, false) as Skeleton3D + _check(skeleton != null, "Imported net Skeleton3D is missing.") + if skeleton == null: + _finish(host_skeleton) + return + _check( + skeleton.find_bone("net_root") >= 0, + "Imported net_root bone is missing.", ) - _check(handle != null and handle.mesh != null, "Placeholder handle is missing.") - _check(hoop != null and hoop.mesh != null, "Placeholder hoop is missing.") - _check(bag != null and bag.mesh != null, "Placeholder net bag is missing.") - _check(impact_marker != null, "Net impact marker is missing.") - if impact_marker != null: + _check( + skeleton.find_bone("net_rim") >= 0, + "Imported net_rim bone is missing.", + ) + _check( + skeleton.find_bone("net_mid") >= 0, + "Imported net_mid bone is missing.", + ) + _check( + skeleton.find_bone("net_tip") >= 0, + "Imported net_tip bone is missing.", + ) + + var spring := skeleton.get_node_or_null("NetSpring") as SpringBoneSimulator3D + _check(spring != null, "Net spring simulator was not created.") + if spring != null: + _check(spring.get_setting_count() == 1, "Net spring settings changed.") _check( - attachment.get_impact_world_position().is_equal_approx( - impact_marker.global_position - ), - "Net impact position moved away from its marker.", + spring.get_root_bone_name(0) == &"net_mid", + "Net spring root must remain net_mid.", ) + _check( + spring.get_end_bone_name(0) == &"net_tip", + "Net spring end must remain net_tip.", + ) + _check(not spring.active, "Hidden net spring must be suspended.") + catching_net.visible = true + await process_frame + await process_frame + _check(spring.active, "Visible net spring must be active.") + _check(spring.get_joint_count(0) == 2, "Net spring chain is incomplete.") + _check( + not attachment.get_impact_world_position().is_equal_approx( + catching_net.global_position + ), + "Net impact position did not follow the authored rim bone.", + ) + catching_net.visible = false + await process_frame + _check(not spring.active, "Hidden net spring did not suspend.") + + for child: Node in model.find_children("*", "MeshInstance3D", true, false): + var mesh_instance := child as MeshInstance3D + if mesh_instance.mesh == null: + continue + for surface_index: int in mesh_instance.mesh.get_surface_count(): + var material := mesh_instance.mesh.surface_get_material(surface_index) + if material is BaseMaterial3D: + _check( + (material as BaseMaterial3D).texture_filter + == BaseMaterial3D.TEXTURE_FILTER_NEAREST, + "Net material does not use nearest texture sampling.", + ) var rod_attachment := ( FishingRodAttachmentScene.instantiate() as BoneAttachment3D From 98a27e2f53d1e2e2a7730b49cb30d6b1c727864e Mon Sep 17 00:00:00 2001 From: Voyager Date: Tue, 25 Aug 2026 22:18:20 -0400 Subject: [PATCH 71/90] Preserve data across the Straywild transition --- README.md | 4 +- docs/PORTMASTER.md | 10 +- docs/README.md | 4 +- export_presets.cfg | 4 +- main/main.gd | 19 ++- main/runtime_performance_profile.gd | 18 ++- network/discovery_client.gd | 5 + network/host_ban_store.gd | 4 + network/identity_backup_service.gd | 27 ++-- network/known_player_store.gd | 4 + network/network_identity_crypto.gd | 42 ++++++- network/network_profile_preferences.gd | 2 + network/network_profile_service.gd | 11 ++ network/player_data_root.gd | 157 +++++++++++++++++++++--- network/player_relationship_store.gd | 4 + network/portable_data_migration.gd | 12 +- network/saved_server_store.gd | 6 + network/server_trust_store.gd | 4 + progression/player_appearance_store.gd | 4 + save/progression_save_codec.gd | 32 +++-- scripts/build_playtest.sh | 2 +- scripts/build_portmaster.sh | 6 +- scripts/portmaster/straywild.sh | 25 +++- server/dedicated_server_config.gd | 78 ++++++++---- tests/progression_archive_validation.gd | 153 ++++++++++++++++++++++- ui/game_ui.gd | 3 + ui/settings_panel.gd | 26 +++- ui/title_screen.gd | 5 + 28 files changed, 577 insertions(+), 94 deletions(-) diff --git a/README.md b/README.md index e228e7b..536afab 100644 --- a/README.md +++ b/README.md @@ -22,9 +22,9 @@ Discord: https://discord.gg/5gP22447kc Matrix: https://matrix.to/#/#straywild:matrix.makearmy.io -Repo: https://forge.makearmy.io/woofmeow/straywild +Repo: https://forge.makearmy.io/woofmeow/netfishing -Releases: https://forge.makearmy.io/woofmeow/straywild/releases +Releases: https://forge.makearmy.io/woofmeow/netfishing/releases ## Installing release builds diff --git a/docs/PORTMASTER.md b/docs/PORTMASTER.md index 3c75a80..803f72f 100644 --- a/docs/PORTMASTER.md +++ b/docs/PORTMASTER.md @@ -47,6 +47,10 @@ directory. The templates in `scripts/portmaster/` are authoritative. upgraded. Device-local data, configuration, and cache remain under `straywild/conf/data`, `straywild/conf/config`, and `straywild/conf/cache`. +- A rebrand upgrade copies an existing `netfishing/conf/` tree into the new + `straywild/conf/` tree when the latter does not exist. It also reuses an + existing `ports/saves/netfishing/` data root rather than creating an empty + replacement. New installations use straywild paths exclusively. - The archive must not contain `conf/`, saves, identities, logs, source files, `.git`, or `.godot` content. - Release downloads must publish only the canonical `straywild.zip` for this @@ -101,9 +105,9 @@ device directory and run: --offline --no-check install ./straywild.zip ``` -Before upgrading an existing installation, preserve -`/mnt/mmc/ports/straywild/conf/` and `/mnt/mmc/ports/saves/straywild/` on the -device. After installation: +Before upgrading an existing installation, preserve either the current +`/mnt/mmc/ports/straywild/` paths or the former `/mnt/mmc/ports/netfishing/` +paths on the device. After installation: 1. Confirm the installed executable and PCK hashes match the staged release. 2. Confirm HarbourMaster added its `# PORTMASTER:` installation signature to diff --git a/docs/README.md b/docs/README.md index 444ebc7..5327b30 100644 --- a/docs/README.md +++ b/docs/README.md @@ -17,10 +17,10 @@ for local README files. ## Related repositories -- [Discovery service API](https://forge.makearmy.io/woofmeow/straywild-discovery-server/src/branch/main/docs/API.md) +- [Discovery service API](https://forge.makearmy.io/woofmeow/netfishing-discovery-server/src/branch/main/docs/API.md) stays with the service implementation and defines its versioned HTTP contract. -- [Dedicated-server packaging](https://forge.makearmy.io/woofmeow/straywild-dedicated-server/src/branch/main/README.md) +- [Dedicated-server packaging](https://forge.makearmy.io/woofmeow/netfishing-dedicated-server/src/branch/main/README.md) stays with its installer and update scripts. It consumes this repository's attribution and legal notices from the exact pinned game commit instead of maintaining copies. diff --git a/export_presets.cfg b/export_presets.cfg index 9ae60f2..f16af2d 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -105,7 +105,7 @@ script_export_mode=2 custom_template/debug="" custom_template/release="" -application/bundle_identifier="io.woofmeow.straywild" +application/bundle_identifier="io.woofmeow.netfishing" application/icon="res://art/exported/system_icons/straywild_1024.png" application/icon_interpolation=0 application/short_version="0.18.1" @@ -178,7 +178,7 @@ architectures/x86=false architectures/x86_64=false version/code=180100 version/name="v0.18.1-alpha" -package/unique_name="io.woofmeow.straywild" +package/unique_name="io.woofmeow.netfishing" package/name="straywild" package/signed=true package/app_category=0 diff --git a/main/main.gd b/main/main.gd index 460eb9e..442c97c 100644 --- a/main/main.gd +++ b/main/main.gd @@ -277,6 +277,7 @@ var _rain_ambience: RainAmbienceType func _ready() -> void: + _data_root.prepare_legacy_user_data() _performance_profile = RuntimePerformanceProfileType.from_environment() _dedicated_runtime = _is_dedicated_server_runtime() if _dedicated_runtime: @@ -471,10 +472,7 @@ func _start_dedicated_server() -> void: _fail_dedicated_server(config.error_message) return var data_path: String = config.data_directory - var manifest_path: String = data_path.path_join( - PlayerDataRoot.MANIFEST_FILENAME - ) - if not FileAccess.file_exists(manifest_path): + if not _data_root.has_data_manifest(data_path): var created: Dictionary = _data_root.create_unbound_root(data_path) if not bool(created.get("ok", false)): _fail_dedicated_server(str(created.get( @@ -973,6 +971,7 @@ func _initialize_application(dedicated: bool) -> void: _network_session, _interface_fonts, ) + _game_ui.data_root_changed.connect(_on_data_root_changed) _game_ui.setup_controller_mapping(_controller_mapping_manager) _ui_pixelation.setup_controller_mapping(_controller_mapping_manager) _game_ui.setup_keyboard_mouse_mapping(_keyboard_mouse_mapping_manager) @@ -1344,6 +1343,18 @@ func _on_data_root_status(message: String) -> void: _configure_popup_dialog.call_deferred(dialog, dialog.get_ok_button()) +func _on_data_root_changed() -> void: + _save_manager.set_autosave_enabled(false) + _save_manager.cancel_pending_autosave() + _configure_portable_stores() + if not _network_profile_service.reload_persisted_profile(): + push_warning("The selected data folder's player profile could not be loaded.") + _network_session.set_local_appearance_snapshot( + _appearance_store.get_snapshot() + ) + _game_ui.get_title_screen().refresh_after_data_root_change() + + func _on_server_trust_required( endpoint: String, expected_fingerprint: String, diff --git a/main/runtime_performance_profile.gd b/main/runtime_performance_profile.gd index 8cc1ea6..f18e63a 100644 --- a/main/runtime_performance_profile.gd +++ b/main/runtime_performance_profile.gd @@ -5,6 +5,10 @@ const PROFILE_ENVIRONMENT_VARIABLE: String = ( "straywild_PERFORMANCE_PROFILE" ) const LEGACY_LIGHT_ENVIRONMENT_VARIABLE: String = "straywild_LOW_END" +const NETFISHING_PROFILE_ENVIRONMENT_VARIABLE := ( + "NETFISHING_PERFORMANCE_PROFILE" +) +const NETFISHING_LIGHT_ENVIRONMENT_VARIABLE := "NETFISHING_LOW_END" const NORMAL_PROFILE: StringName = &"normal" const LIGHT_PROFILE: StringName = &"light" const NORMAL_WORLD_RENDER_SCALE: float = 1.0 @@ -14,9 +18,19 @@ var _profile_name: StringName = NORMAL_PROFILE static func from_environment() -> RuntimePerformanceProfile: + var profile_name: String = OS.get_environment( + PROFILE_ENVIRONMENT_VARIABLE + ) + if profile_name.is_empty(): + profile_name = OS.get_environment( + NETFISHING_PROFILE_ENVIRONMENT_VARIABLE + ) return from_name( - StringName(OS.get_environment(PROFILE_ENVIRONMENT_VARIABLE)), - OS.get_environment(LEGACY_LIGHT_ENVIRONMENT_VARIABLE) == "1", + StringName(profile_name), + ( + OS.get_environment(LEGACY_LIGHT_ENVIRONMENT_VARIABLE) == "1" + or OS.get_environment(NETFISHING_LIGHT_ENVIRONMENT_VARIABLE) == "1" + ), ) diff --git a/network/discovery_client.gd b/network/discovery_client.gd index a3d983f..d8e602a 100644 --- a/network/discovery_client.gd +++ b/network/discovery_client.gd @@ -21,6 +21,7 @@ signal friend_invite_finished(success: bool, message: String) const BASE_URL_SETTING: String = "network/discovery/base_url" const BASE_URL_ENVIRONMENT: String = "straywild_DISCOVERY_URL" +const LEGACY_BASE_URL_ENVIRONMENT: String = "NETFISHING_DISCOVERY_URL" const SETTINGS_PATH: String = "user://network_discovery.cfg" const DEFAULT_ROOM_NAME: String = "Player's Server" const LEGACY_DEFAULT_ROOM_NAME: String = "straywild Room" @@ -553,6 +554,10 @@ func is_own_room(room: Dictionary) -> bool: func _configured_base_url() -> String: var value: String = OS.get_environment(BASE_URL_ENVIRONMENT).strip_edges() + if value.is_empty(): + value = OS.get_environment( + LEGACY_BASE_URL_ENVIRONMENT + ).strip_edges() if value.is_empty(): value = str(ProjectSettings.get_setting(BASE_URL_SETTING, "")).strip_edges() while value.ends_with("/"): diff --git a/network/host_ban_store.gd b/network/host_ban_store.gd index f8c4bf9..1251846 100644 --- a/network/host_ban_store.gd +++ b/network/host_ban_store.gd @@ -17,6 +17,10 @@ var _data_root: PlayerDataRoot func configure_storage(path: String, data_root: PlayerDataRoot) -> void: _store_path = path _data_root = data_root + _namespaces.clear() + _loaded = false + _write_blocked = false + _expected_hash = "" func is_banned(host_fingerprint: String, target_fingerprint: String) -> bool: diff --git a/network/identity_backup_service.gd b/network/identity_backup_service.gd index 53cf718..c383e7b 100644 --- a/network/identity_backup_service.gd +++ b/network/identity_backup_service.gd @@ -4,6 +4,7 @@ extends Node signal operation_finished(success: bool, message: String) const MAGIC := "straywild_IDENTITY_BACKUP" +const LEGACY_MAGIC := "NETFISHING_IDENTITY_BACKUP" const FORMAT_VERSION := 1 const MAX_BACKUP_BYTES := 256 * 1024 const MIN_PASSPHRASE_LENGTH := 12 @@ -110,8 +111,9 @@ func inspect_backup( if json.parse(text) != OK or typeof(json.data) != TYPE_DICTIONARY: return {"ok": false} var data: Dictionary = json.data + var legacy_backup: bool = data.get("magic") == LEGACY_MAGIC if ( - data.get("magic") != MAGIC + data.get("magic") not in [MAGIC, LEGACY_MAGIC] or data.get("format_version") != FORMAT_VERSION or data.get("identity_type") != expected_type or data.get("algorithm") != NetworkIdentityCrypto.ALGORITHM @@ -134,12 +136,23 @@ func inspect_backup( var signature: PackedByteArray = Marshalls.base64_to_raw( str(data.get("self_signature", "")) ) - if not NetworkIdentityCrypto.verify_fields( - NetworkIdentityCrypto.load_public_key(public_pem), - "identity_backup_self_test", - [expected_type, fingerprint], - signature, - ): + var public_key: CryptoKey = NetworkIdentityCrypto.load_public_key(public_pem) + var backup_signature_valid: bool = ( + NetworkIdentityCrypto.verify_legacy_fields( + public_key, + "identity_backup_self_test", + [expected_type, fingerprint], + signature, + ) + if legacy_backup + else NetworkIdentityCrypto.verify_fields( + public_key, + "identity_backup_self_test", + [expected_type, fingerprint], + signature, + ) + ) + if not backup_signature_valid: return {"ok": false} var fresh: PackedByteArray = NetworkIdentityCrypto.sign_fields( key, "identity_import_self_test", [fingerprint] diff --git a/network/known_player_store.gd b/network/known_player_store.gd index 0c6b859..1118656 100644 --- a/network/known_player_store.gd +++ b/network/known_player_store.gd @@ -15,6 +15,10 @@ var _data_root: PlayerDataRoot func configure_storage(path: String, data_root: PlayerDataRoot) -> void: _store_path = path _data_root = data_root + _records.clear() + _loaded = false + _write_blocked = false + _expected_hash = "" func observe(fingerprint: String, display_name: String) -> String: diff --git a/network/network_identity_crypto.gd b/network/network_identity_crypto.gd index d3f9983..9d4f09c 100644 --- a/network/network_identity_crypto.gd +++ b/network/network_identity_crypto.gd @@ -6,6 +6,7 @@ const FINGERPRINT_LENGTH: int = 64 const MAX_PUBLIC_KEY_BYTES: int = 8192 const MAX_SIGNATURE_BYTES: int = 1024 const DOMAIN_PREFIX: String = "straywild" +const LEGACY_DOMAIN_PREFIX: String = "NETFISHING" const IDENTITY_VERSION: String = "identity_v1" @@ -50,8 +51,16 @@ static func secure_id(byte_count: int = 16) -> String: static func canonical_bytes(domain: String, fields: Array) -> PackedByteArray: + return canonical_bytes_for_prefix(DOMAIN_PREFIX, domain, fields) + + +static func canonical_bytes_for_prefix( + prefix: String, + domain: String, + fields: Array, +) -> PackedByteArray: var output := PackedByteArray() - _append_string(output, DOMAIN_PREFIX) + _append_string(output, prefix) _append_string(output, IDENTITY_VERSION) _append_string(output, domain) for value: Variant in fields: @@ -117,6 +126,37 @@ static func verify_fields( ) +static func verify_legacy_fields( + public_key: CryptoKey, + domain: String, + fields: Array, + signature: PackedByteArray, +) -> bool: + if ( + public_key == null + or signature.is_empty() + or signature.size() > MAX_SIGNATURE_BYTES + ): + return false + var bytes: PackedByteArray = canonical_bytes_for_prefix( + LEGACY_DOMAIN_PREFIX, + domain, + fields, + ) + if bytes.is_empty(): + return false + var context := HashingContext.new() + if context.start(HashingContext.HASH_SHA256) != OK: + return false + context.update(bytes) + return Crypto.new().verify( + HashingContext.HASH_SHA256, + context.finish(), + signature, + public_key, + ) + + static func load_public_key(public_pem: String) -> CryptoKey: var normalized := normalize_public_pem(public_pem) if normalized.is_empty() or normalized.to_utf8_buffer().size() > MAX_PUBLIC_KEY_BYTES: diff --git a/network/network_profile_preferences.gd b/network/network_profile_preferences.gd index 3c4996b..b6cac63 100644 --- a/network/network_profile_preferences.gd +++ b/network/network_profile_preferences.gd @@ -21,6 +21,8 @@ var _future_version := false func configure_storage(path: String, data_root: PlayerDataRoot) -> void: _profile_path = path _data_root = data_root + _expected_hash = "" + _future_version = false func _temp_path() -> String: diff --git a/network/network_profile_service.gd b/network/network_profile_service.gd index e4732a9..ff967f1 100644 --- a/network/network_profile_service.gd +++ b/network/network_profile_service.gd @@ -51,6 +51,17 @@ func setup( _apply_local_voice_to_avatar() +func reload_persisted_profile() -> bool: + if ( + not _preferences.load_or_create() + or not _appearance_store.load_preferences() + ): + return false + _apply_to_avatar(1, _appearance_store.get_snapshot()) + _apply_local_voice_to_avatar() + return true + + func get_persisted_name() -> String: return _preferences.display_name diff --git a/network/player_data_root.gd b/network/player_data_root.gd index d6153ff..e173577 100644 --- a/network/player_data_root.gd +++ b/network/player_data_root.gd @@ -10,11 +10,41 @@ const BOOTSTRAP_VERSION := 1 const MANIFEST_VERSION := 1 const LAYOUT_VERSION := 1 const MANIFEST_FILENAME := "straywild_data.json" +const LEGACY_MANIFEST_FILENAME := "netfishing_data.json" const README_FILENAME := "README.txt" const ENVIRONMENT_VARIABLE := "straywild_DATA_DIR" const CREATE_ENVIRONMENT_VARIABLE := "straywild_CREATE_DATA_DIR" +const LEGACY_ENVIRONMENT_VARIABLE := "NETFISHING_DATA_DIR" +const LEGACY_CREATE_ENVIRONMENT_VARIABLE := "NETFISHING_CREATE_DATA_DIR" const APPLICATION_ID := "straywild" +const LEGACY_APPLICATION_ID := "netfishing" const APP_DATA_PORTABLE_PATH := "user://portable-data" +const LEGACY_USER_DIRECTORY_NAME := "NETFISHING" +const LEGACY_USER_FILES := [ + "data_root_bootstrap.json", + "data_root_bootstrap.json.backup", + "network_discovery.cfg", + "player_settings.json", + "player_settings.json.backup", + "controller_mappings.json", + "controller_mappings.json.backup", + "keyboard_mouse_bindings.json", + "keyboard_mouse_bindings.json.backup", + "player_save.json", + "network_profile.json", + "player_appearance.json", + "saved_servers.json", + "known_players.json", + "player_relationships.json", + "server_trust.json", + "host_bans.json", + "player_identity.key", + "player_identity.pub", + "player_identity.json", + "host_identity.key", + "host_identity.pub", + "host_identity.json", +] const PATH_ALLOWED: StringName = &"allowed" const PATH_SOURCE_PROJECT: StringName = &"source_project" const PATH_INSTALLATION: StringName = &"installation" @@ -37,23 +67,29 @@ var override_active := false func resolve() -> bool: + prepare_legacy_user_data() _load_bootstrap_identity() var command_line: String = _command_line_override() if not command_line.is_empty(): override_active = true mode = Mode.COMMAND_LINE_OVERRIDE return _activate_existing(command_line, "", false) - if OS.has_environment(ENVIRONMENT_VARIABLE): + var environment_variable: String = _available_environment_variable( + ENVIRONMENT_VARIABLE, + LEGACY_ENVIRONMENT_VARIABLE, + ) + if not environment_variable.is_empty(): override_active = true mode = Mode.ENVIRONMENT_OVERRIDE - var environment_path: String = OS.get_environment(ENVIRONMENT_VARIABLE) + var environment_path: String = OS.get_environment(environment_variable) if not environment_path.is_absolute_path(): return _fail("straywild_DATA_DIR must be an absolute path.") if ( - OS.get_environment(CREATE_ENVIRONMENT_VARIABLE) == "1" - and not FileAccess.file_exists( - environment_path.path_join(MANIFEST_FILENAME) + _environment_flag( + CREATE_ENVIRONMENT_VARIABLE, + LEGACY_CREATE_ENVIRONMENT_VARIABLE, ) + and not has_data_manifest(environment_path) ): var created: Dictionary = create_unbound_root(environment_path) if not bool(created.get("ok", false)): @@ -80,6 +116,30 @@ func resolve() -> bool: return false +func prepare_legacy_user_data() -> void: + var current_root: String = _normalize( + ProjectSettings.globalize_path("user://") + ) + if current_root.is_empty(): + return + var legacy_root: String = _normalize( + current_root.get_base_dir().path_join(LEGACY_USER_DIRECTORY_NAME) + ) + if legacy_root == current_root or not DirAccess.dir_exists_absolute(legacy_root): + return + for filename: String in LEGACY_USER_FILES: + var destination: String = current_root.path_join(filename) + if FileAccess.file_exists(destination): + continue + var source: String = legacy_root.path_join(filename) + if FileAccess.file_exists(source): + _copy_legacy_user_file(source, destination) + + +func has_data_manifest(path: String) -> bool: + return not _existing_manifest_path(_normalize(path)).is_empty() + + func default_visible_path() -> String: var documents: String = OS.get_system_dir(OS.SYSTEM_DIR_DOCUMENTS) if documents.is_empty(): @@ -105,12 +165,14 @@ func select_new_root(path: String, app_data: bool = false) -> bool: normalized = ProjectSettings.globalize_path(APP_DATA_PORTABLE_PATH) if not _validate_candidate(normalized, true): return false - var manifest_path: String = normalized.path_join(MANIFEST_FILENAME) - if FileAccess.file_exists(manifest_path): + var manifest_path: String = _existing_manifest_path(normalized) + if not manifest_path.is_empty(): var manifest: Dictionary = _read_json(manifest_path) if not _valid_manifest(manifest): return _fail("The selected folder has a malformed straywild manifest.") root_id = str(manifest["root_id"]) + if not _upgrade_legacy_manifest(normalized, manifest, manifest_path): + return _fail("The legacy data-folder manifest could not be upgraded.") else: if not _directory_is_empty(normalized) and not app_data: return _fail( @@ -145,14 +207,14 @@ func create_app_data_layout_for_migration(path: String) -> Dictionary: var normalized: String = _normalize(path) if not _validate_candidate(normalized, false): return {"ok": false, "message": error_message} - var manifest_path: String = normalized.path_join(MANIFEST_FILENAME) - if FileAccess.file_exists(manifest_path): + var manifest_path: String = _existing_manifest_path(normalized) + if not manifest_path.is_empty(): var manifest: Dictionary = _read_json(manifest_path) - return ( - {"ok": true, "root_id": str(manifest.get("root_id", ""))} - if _valid_manifest(manifest) - else {"ok": false, "message": "The app-data manifest is malformed."} - ) + if not _valid_manifest(manifest): + return {"ok": false, "message": "The app-data manifest is malformed."} + if not _upgrade_legacy_manifest(normalized, manifest, manifest_path): + return {"ok": false, "message": "The app-data manifest could not be upgraded."} + return {"ok": true, "root_id": str(manifest.get("root_id", ""))} var id: String = Crypto.new().generate_random_bytes(16).hex_encode() if not _create_layout(normalized, id): return {"ok": false, "message": "The app-data layout could not be created."} @@ -236,12 +298,14 @@ func _activate_existing(path: String, expected_id: String, permit_creation: bool var normalized: String = _normalize(path) if not _validate_candidate(normalized, permit_creation): return false - var manifest_path: String = normalized.path_join(MANIFEST_FILENAME) - if not FileAccess.file_exists(manifest_path): + var manifest_path: String = _existing_manifest_path(normalized) + if manifest_path.is_empty(): return _fail("The selected folder is not a straywild data folder.") var manifest: Dictionary = _read_json(manifest_path) if not _valid_manifest(manifest): return _fail("The straywild data-folder manifest is malformed.") + if not _upgrade_legacy_manifest(normalized, manifest, manifest_path): + return _fail("The legacy data-folder manifest could not be upgraded.") var found_id: String = str(manifest["root_id"]) if not expected_id.is_empty() and expected_id != found_id: return _fail("The selected data folder does not match this device pointer.") @@ -422,12 +486,71 @@ func _valid_manifest(data: Dictionary) -> bool: return ( data.get("format_version") == MANIFEST_VERSION and data.get("layout_version") == LAYOUT_VERSION - and data.get("application") == APPLICATION_ID + and data.get("application") in [APPLICATION_ID, LEGACY_APPLICATION_ID] and typeof(data.get("root_id")) == TYPE_STRING and str(data["root_id"]).length() == 32 ) +func _existing_manifest_path(path: String) -> String: + var current: String = path.path_join(MANIFEST_FILENAME) + if FileAccess.file_exists(current): + return current + var legacy: String = path.path_join(LEGACY_MANIFEST_FILENAME) + return legacy if FileAccess.file_exists(legacy) else "" + + +func _upgrade_legacy_manifest( + path: String, + manifest: Dictionary, + manifest_path: String, +) -> bool: + if ( + manifest_path.get_file() == MANIFEST_FILENAME + and manifest.get("application") == APPLICATION_ID + ): + return true + var upgraded: Dictionary = manifest.duplicate(true) + upgraded["application"] = APPLICATION_ID + upgraded["last_opened_at_unix"] = int(Time.get_unix_time_from_system()) + return _write_text_atomic( + path.path_join(MANIFEST_FILENAME), + JSON.stringify(upgraded, "\t"), + ) + + +func _available_environment_variable(primary: String, legacy: String) -> String: + if OS.has_environment(primary): + return primary + return legacy if OS.has_environment(legacy) else "" + + +func _environment_flag(primary: String, legacy: String) -> bool: + var variable: String = _available_environment_variable(primary, legacy) + return not variable.is_empty() and OS.get_environment(variable) == "1" + + +func _copy_legacy_user_file(source: String, destination: String) -> bool: + var bytes: PackedByteArray = PortableFileGuard.read_bytes( + source, + 16 * 1024 * 1024, + ) + if bytes.is_empty() and FileAccess.get_open_error() != OK: + return false + if DirAccess.make_dir_recursive_absolute(destination.get_base_dir()) != OK: + return false + var file: FileAccess = FileAccess.open(destination, FileAccess.WRITE) + if file == null: + return false + file.store_buffer(bytes) + file.flush() + var copied: bool = file.get_error() == OK + file.close() + if copied and source.ends_with(".key"): + FileAccess.set_unix_permissions(destination, 384) + return copied + + func _directory_is_empty(path: String) -> bool: var access: DirAccess = DirAccess.open(path) if access == null: diff --git a/network/player_relationship_store.gd b/network/player_relationship_store.gd index 0f4b6f1..de04d49 100644 --- a/network/player_relationship_store.gd +++ b/network/player_relationship_store.gd @@ -21,6 +21,10 @@ var _data_root: PlayerDataRoot func configure_storage(path: String, data_root: PlayerDataRoot) -> void: _store_path = path _data_root = data_root + _records.clear() + _loaded = false + _write_blocked = false + _expected_hash = "" func is_muted(fingerprint: String) -> bool: diff --git a/network/portable_data_migration.gd b/network/portable_data_migration.gd index e95d883..2de0acb 100644 --- a/network/portable_data_migration.gd +++ b/network/portable_data_migration.gd @@ -26,10 +26,7 @@ static func migrate_legacy_to( ) -> Dictionary: var normalized: String = destination.simplify_path().trim_suffix("/") if DirAccess.dir_exists_absolute(normalized): - var existing_manifest: String = normalized.path_join( - PlayerDataRoot.MANIFEST_FILENAME - ) - if FileAccess.file_exists(existing_manifest): + if data_root.has_data_manifest(normalized): return { "ok": false, "requires_existing_root_decision": true, @@ -106,7 +103,7 @@ static func migrate_active_to( "message": "This data folder is already active.", } if DirAccess.dir_exists_absolute(normalized) and not _directory_empty(normalized): - if FileAccess.file_exists(normalized.path_join(PlayerDataRoot.MANIFEST_FILENAME)): + if data_root.has_data_manifest(normalized): return { "ok": false, "requires_existing_root_decision": true, @@ -207,8 +204,7 @@ static func replace_existing_with_legacy( destination: String, ) -> Dictionary: var normalized: String = destination.simplify_path().trim_suffix("/") - var manifest: String = normalized.path_join(PlayerDataRoot.MANIFEST_FILENAME) - if not FileAccess.file_exists(manifest): + if not data_root.has_data_manifest(normalized): return {"ok": false, "message": "The selected folder is not a straywild data root."} var recovery: String = ProjectSettings.globalize_path( "user://migration-recovery" @@ -229,7 +225,7 @@ static func replace_existing_with_active( destination: String, ) -> Dictionary: var normalized: String = destination.simplify_path().trim_suffix("/") - if not FileAccess.file_exists(normalized.path_join(PlayerDataRoot.MANIFEST_FILENAME)): + if not data_root.has_data_manifest(normalized): return {"ok": false, "message": "The selected folder is not a straywild data root."} var recovery: String = ProjectSettings.globalize_path( "user://migration-recovery" diff --git a/network/saved_server_store.gd b/network/saved_server_store.gd index de48c2c..4e00259 100644 --- a/network/saved_server_store.gd +++ b/network/saved_server_store.gd @@ -22,6 +22,12 @@ var _data_root: PlayerDataRoot func configure_storage(path: String, data_root: PlayerDataRoot) -> void: _store_path = path _data_root = data_root + _saved_entries.clear() + _recent_entries.clear() + _loaded = false + _recovery_warning = "" + _write_blocked = false + _expected_hash = "" func _temp_path() -> String: diff --git a/network/server_trust_store.gd b/network/server_trust_store.gd index fda774b..1d4dd29 100644 --- a/network/server_trust_store.gd +++ b/network/server_trust_store.gd @@ -19,6 +19,10 @@ var _data_root: PlayerDataRoot func configure_storage(path: String, data_root: PlayerDataRoot) -> void: _store_path = path _data_root = data_root + _records.clear() + _loaded = false + _write_blocked = false + _expected_hash = "" func verify(endpoint: ConnectionEndpoint, fingerprint: String) -> Verification: diff --git a/progression/player_appearance_store.gd b/progression/player_appearance_store.gd index 7ac8767..febe43d 100644 --- a/progression/player_appearance_store.gd +++ b/progression/player_appearance_store.gd @@ -13,6 +13,10 @@ var _data_root: PlayerDataRoot func configure_storage(path: String, data_root: PlayerDataRoot) -> void: _profile_path = path _data_root = data_root + _snapshot = CharacterCustomizationCatalog.default_snapshot() + _loaded = false + _future_version = false + _expected_hash = "" func _temp_path() -> String: diff --git a/save/progression_save_codec.gd b/save/progression_save_codec.gd index a006773..4d0ba33 100644 --- a/save/progression_save_codec.gd +++ b/save/progression_save_codec.gd @@ -2,6 +2,7 @@ class_name ProgressionSaveCodec extends RefCounted const MAGIC := "straywild_PROGRESSION_CONTAINER" +const LEGACY_MAGIC := "NETFISHING_PROGRESSION_CONTAINER" const FORMAT_VERSION := 1 const LOCAL_KIND := "local_save" const ARCHIVE_KIND := "portable_archive" @@ -9,8 +10,10 @@ const MAX_CONTAINER_BYTES := 16 * 1024 * 1024 # This key keeps routine progression files opaque to casual editing. Since the # client is open source, it is intentionally not treated as a security secret. +# Its original value is a stable file-format detail so released saves remain +# readable after the Straywild rebrand. const CONTAINER_PASSPHRASE := ( - "straywild progression container v1 / not an identity credential" + "NETfishing progression container v1 / not an identity credential" ) @@ -102,15 +105,9 @@ static func _read_container(path: String, expected_kind: String) -> Dictionary: or FileAccess.get_size(path) > MAX_CONTAINER_BYTES ): return {"ok": false, "message": "progression file is unavailable."} - var file: FileAccess = FileAccess.open_encrypted_with_pass( - path, - FileAccess.READ, - CONTAINER_PASSPHRASE, - ) - if file == null: + var envelope_text: String = _read_encrypted_text(path) + if envelope_text.is_empty(): return {"ok": false, "message": "progression file could not be opened."} - var envelope_text: String = file.get_as_text() - file.close() var envelope_json := JSON.new() if ( envelope_json.parse(envelope_text) != OK @@ -118,8 +115,9 @@ static func _read_container(path: String, expected_kind: String) -> Dictionary: ): return {"ok": false, "message": "progression container is malformed."} var envelope: Dictionary = envelope_json.data + var legacy_container: bool = envelope.get("magic") == LEGACY_MAGIC if ( - envelope.get("magic") != MAGIC + envelope.get("magic") not in [MAGIC, LEGACY_MAGIC] or int(envelope.get("format_version", -1)) != FORMAT_VERSION or str(envelope.get("kind", "")) != expected_kind ): @@ -144,9 +142,23 @@ static func _read_container(path: String, expected_kind: String) -> Dictionary: "game_version": str(envelope.get("game_version", "")), "created_at_unix": int(envelope.get("created_at_unix", 0)), "legacy_plaintext": false, + "legacy_container": legacy_container, } +static func _read_encrypted_text(path: String) -> String: + var file: FileAccess = FileAccess.open_encrypted_with_pass( + path, + FileAccess.READ, + CONTAINER_PASSPHRASE, + ) + if file == null: + return "" + var text: String = file.get_as_text() + file.close() + return text + + static func _read_plaintext_dictionary(path: String) -> Dictionary: var bytes: PackedByteArray = PortableFileGuard.read_bytes( path, diff --git a/scripts/build_playtest.sh b/scripts/build_playtest.sh index c18f277..9489af2 100755 --- a/scripts/build_playtest.sh +++ b/scripts/build_playtest.sh @@ -9,7 +9,7 @@ readonly WINDOWS_DIR="${BUILD_ROOT}/windows-x86_64" readonly LINUX_DIR="${BUILD_ROOT}/linux-x86_64" readonly README_SOURCE="${PROJECT_ROOT}/docs/README-PLAYTEST.txt" readonly SOURCE_COMMIT="$(git -C "${PROJECT_ROOT}" rev-parse HEAD)" -readonly SOURCE_URL="https://forge.makearmy.io/woofmeow/straywild" +readonly SOURCE_URL="https://forge.makearmy.io/woofmeow/netfishing" readonly WINDOWS_ZIP="${BUILD_ROOT}/straywild-v0.18.1-alpha-windows-x86_64.zip" readonly LINUX_ZIP="${BUILD_ROOT}/straywild-v0.18.1-alpha-linux-x86_64.zip" readonly GODOT_BIN="${GODOT_BIN:-godot}" diff --git a/scripts/build_portmaster.sh b/scripts/build_portmaster.sh index 286a743..0487b5b 100755 --- a/scripts/build_portmaster.sh +++ b/scripts/build_portmaster.sh @@ -193,7 +193,7 @@ cat >"${GAME_ROOT}/licenses/SOURCE-CODE.md" < DedicatedServerConfig: result.discovery_url = str(ProjectSettings.get_setting( "network/discovery/base_url", "" )).strip_edges() - var config_path: String = OS.get_environment( - "straywild_SERVER_CONFIG" + var config_path: String = _environment_string( + "straywild_SERVER_CONFIG", + "NETFISHING_SERVER_CONFIG", + "", ).strip_edges() for argument: String in OS.get_cmdline_user_args(): if argument.begins_with("--config="): @@ -87,36 +89,44 @@ func _load_file(path: String) -> bool: func _apply_environment() -> void: server_name = _environment_string( - "straywild_SERVER_NAME", server_name + "straywild_SERVER_NAME", "NETFISHING_SERVER_NAME", server_name ) bind_address = _environment_string( - "straywild_SERVER_BIND", bind_address + "straywild_SERVER_BIND", "NETFISHING_SERVER_BIND", bind_address + ) + port = _environment_int( + "straywild_SERVER_PORT", "NETFISHING_SERVER_PORT", port ) - port = _environment_int("straywild_SERVER_PORT", port) max_players = _environment_int( - "straywild_SERVER_MAX_PLAYERS", max_players + "straywild_SERVER_MAX_PLAYERS", + "NETFISHING_SERVER_MAX_PLAYERS", + max_players, ) world_seed = _environment_int( - "straywild_WORLD_SEED", world_seed + "straywild_WORLD_SEED", "NETFISHING_WORLD_SEED", world_seed ) public_listing = _environment_bool( - "straywild_SERVER_PUBLIC", public_listing + "straywild_SERVER_PUBLIC", "NETFISHING_SERVER_PUBLIC", public_listing ) discovery_url = _environment_string( - "straywild_DISCOVERY_URL", discovery_url + "straywild_DISCOVERY_URL", "NETFISHING_DISCOVERY_URL", discovery_url ) data_directory = _environment_string( - "straywild_DATA_DIR", data_directory + "straywild_DATA_DIR", "NETFISHING_DATA_DIR", data_directory ) chat_logging = _environment_bool( - "straywild_CHAT_LOGGING", chat_logging + "straywild_CHAT_LOGGING", "NETFISHING_CHAT_LOGGING", chat_logging ) chat_log_path = _environment_string( - "straywild_CHAT_LOG_PATH", chat_log_path + "straywild_CHAT_LOG_PATH", "NETFISHING_CHAT_LOG_PATH", chat_log_path ) - if OS.has_environment("straywild_SERVER_OPERATORS"): + var operators_variable: String = _available_environment_variable( + "straywild_SERVER_OPERATORS", + "NETFISHING_SERVER_OPERATORS", + ) + if not operators_variable.is_empty(): operator_fingerprints = _parse_fingerprint_list( - OS.get_environment("straywild_SERVER_OPERATORS") + OS.get_environment(operators_variable) ) @@ -211,21 +221,45 @@ static func _safe_text(value: String) -> bool: return true -static func _environment_string(name: String, fallback: String) -> String: - return OS.get_environment(name) if OS.has_environment(name) else fallback +static func _available_environment_variable( + name: String, + legacy_name: String, +) -> String: + if OS.has_environment(name): + return name + return legacy_name if OS.has_environment(legacy_name) else "" -static func _environment_int(name: String, fallback: int) -> int: +static func _environment_string( + name: String, + legacy_name: String, + fallback: String, +) -> String: + var variable: String = _available_environment_variable(name, legacy_name) + return OS.get_environment(variable) if not variable.is_empty() else fallback + + +static func _environment_int( + name: String, + legacy_name: String, + fallback: int, +) -> int: + var variable: String = _available_environment_variable(name, legacy_name) return ( - _parse_int(OS.get_environment(name), fallback) - if OS.has_environment(name) else fallback + _parse_int(OS.get_environment(variable), fallback) + if not variable.is_empty() else fallback ) -static func _environment_bool(name: String, fallback: bool) -> bool: - if not OS.has_environment(name): +static func _environment_bool( + name: String, + legacy_name: String, + fallback: bool, +) -> bool: + var variable: String = _available_environment_variable(name, legacy_name) + if variable.is_empty(): return fallback - var value: String = OS.get_environment(name).strip_edges().to_lower() + var value: String = OS.get_environment(variable).strip_edges().to_lower() return value in ["1", "true", "yes", "on"] diff --git a/tests/progression_archive_validation.gd b/tests/progression_archive_validation.gd index 7f98066..c3f9569 100644 --- a/tests/progression_archive_validation.gd +++ b/tests/progression_archive_validation.gd @@ -39,6 +39,15 @@ func _run() -> void: var decoded: Dictionary = ProgressionSaveCodec.read_local_save(save_path) assert(bool(decoded.get("ok", false))) assert(int((decoded["data"] as Dictionary)["save_version"]) == 10) + var legacy_container_path: String = data_root.progression_backup_directory().path_join( + "netfishing-container.nfsave" + ) + _assert_legacy_progression_container( + legacy_container_path, + decoded["data"] as Dictionary, + ) + _assert_legacy_data_manifest(data_root.root_path.get_base_dir()) + _assert_legacy_identity_backup(main, data_root) var archive_path: String = data_root.progression_backup_directory().path_join( "progression-test.nfsave" @@ -135,6 +144,9 @@ func _run() -> void: assert(settings_panel.get_node_or_null("%ExportProgression") == null) assert(settings_panel.get_node_or_null("%ImportProgression") == null) var settings_panel: SettingsPanel = settings_panels.front() as SettingsPanel + settings_panel.set( + "_presentation_mode", SettingsPanel.PresentationMode.TITLE_EMBEDDED + ) var unchanged_root: String = data_root.root_path settings_panel.call("_choose_data_folder") var data_folder_dialog := ( @@ -169,11 +181,14 @@ func _run() -> void: var migrated_root: String = data_root.root_path.get_base_dir().path_join( "progression-migrated-data" ) - var data_migration: Dictionary = PortableDataMigration.migrate_active_to( - data_root, migrated_root + settings_panel.call("_change_data_folder", migrated_root) + for _frame: int in 4: + await process_frame + assert(data_root.root_path == migrated_root) + assert( + (settings_panel.get_node("%SettingsFeedback") as Label).text + == "data folder changed." ) - assert(bool(data_migration.get("ok", false))) - assert(bool(data_migration.get("changed", false))) var migrated_save: String = migrated_root.path_join( "player/player_save.nfsave" ) @@ -193,6 +208,18 @@ func _run() -> void: "ok", false ) )) + var live_slots: Array[Dictionary] = save_slots.list_slots() + assert(live_slots.size() == 2) + var live_created: Dictionary = save_slots.create_empty_slot( + "live root switch" + ) + assert(bool(live_created.get("ok", false))) + var live_slot_id: String = str(live_created.get("slot_id", "")) + assert(save_slots.rename_slot(live_slot_id, "live root ready")) + assert( + str(save_slots.get_slot(live_slot_id).get("display_name", "")) + == "live root ready" + ) main.queue_free() for _frame: int in 4: @@ -202,6 +229,124 @@ func _run() -> void: quit() +func _assert_legacy_progression_container( + path: String, + payload: Dictionary, +) -> void: + var payload_json: String = JSON.stringify(payload) + var envelope: Dictionary = { + "magic": ProgressionSaveCodec.LEGACY_MAGIC, + "format_version": ProgressionSaveCodec.FORMAT_VERSION, + "kind": ProgressionSaveCodec.LOCAL_KIND, + "game_version": "0.18.1-alpha", + "created_at_unix": 1, + "payload_sha256": PortableFileGuard.hash_bytes( + payload_json.to_utf8_buffer() + ), + "payload_json": payload_json, + } + var file: FileAccess = FileAccess.open_encrypted_with_pass( + path, + FileAccess.WRITE, + ProgressionSaveCodec.CONTAINER_PASSPHRASE, + ) + assert(file != null) + file.store_string(JSON.stringify(envelope)) + file.close() + var decoded: Dictionary = ProgressionSaveCodec.read_local_save(path) + assert(bool(decoded.get("ok", false))) + assert(bool(decoded.get("legacy_container", false))) + + +func _assert_legacy_data_manifest(parent: String) -> void: + var legacy_root: String = parent.path_join("netfishing-manifest-root") + assert(DirAccess.make_dir_recursive_absolute(legacy_root) == OK) + var legacy_id: String = "0123456789abcdef0123456789abcdef" + var legacy_manifest: Dictionary = { + "format_version": PlayerDataRoot.MANIFEST_VERSION, + "layout_version": PlayerDataRoot.LAYOUT_VERSION, + "application": PlayerDataRoot.LEGACY_APPLICATION_ID, + "root_id": legacy_id, + "created_at_unix": 1, + "last_opened_at_unix": 1, + } + var legacy_path: String = legacy_root.path_join( + PlayerDataRoot.LEGACY_MANIFEST_FILENAME + ) + var file := FileAccess.open(legacy_path, FileAccess.WRITE) + assert(file != null) + file.store_string(JSON.stringify(legacy_manifest, "\t")) + file.close() + var legacy_data_root := PlayerDataRoot.new() + root.add_child(legacy_data_root) + assert(legacy_data_root.use_existing_root(legacy_root)) + assert(legacy_data_root.root_id == legacy_id) + assert(FileAccess.file_exists(legacy_path)) + var canonical_path: String = legacy_root.path_join( + PlayerDataRoot.MANIFEST_FILENAME + ) + assert(FileAccess.file_exists(canonical_path)) + var parser := JSON.new() + assert(parser.parse(FileAccess.get_file_as_string(canonical_path)) == OK) + assert((parser.data as Dictionary).get("application") == PlayerDataRoot.APPLICATION_ID) + legacy_data_root.queue_free() + + +func _assert_legacy_identity_backup(main: Node, data_root: PlayerDataRoot) -> void: + var player_identity := main.get("_player_identity") as PlayerIdentityStore + var identity_backups := main.get("_identity_backups") as IdentityBackupService + assert(player_identity != null and player_identity.is_ready()) + assert(identity_backups != null) + var material: Dictionary = player_identity.export_identity_material() + var fingerprint: String = str(material.get("fingerprint", "")) + var private_key := CryptoKey.new() + assert(private_key.load_from_string(str(material.get("private_pem", ""))) == OK) + var canonical: PackedByteArray = NetworkIdentityCrypto.canonical_bytes_for_prefix( + NetworkIdentityCrypto.LEGACY_DOMAIN_PREFIX, + "identity_backup_self_test", + ["player", fingerprint], + ) + var context := HashingContext.new() + assert(context.start(HashingContext.HASH_SHA256) == OK) + context.update(canonical) + var signature: PackedByteArray = Crypto.new().sign( + HashingContext.HASH_SHA256, + context.finish(), + private_key, + ) + var envelope: Dictionary = { + "magic": IdentityBackupService.LEGACY_MAGIC, + "format_version": IdentityBackupService.FORMAT_VERSION, + "identity_type": "player", + "algorithm": NetworkIdentityCrypto.ALGORITHM, + "private_pem": material.get("private_pem", ""), + "public_pem": material.get("public_pem", ""), + "fingerprint": fingerprint, + "created_at_unix": 1, + "source_device_id": data_root.device_id, + "self_signature": Marshalls.raw_to_base64(signature), + } + var backup_path: String = data_root.identity_backup_directory().path_join( + "netfishing-player.nfidentity" + ) + var passphrase := "legacy-test-passphrase" + var file: FileAccess = FileAccess.open_encrypted_with_pass( + backup_path, + FileAccess.WRITE, + passphrase, + ) + assert(file != null) + file.store_string(JSON.stringify(envelope)) + file.close() + var inspected: Dictionary = identity_backups.inspect_backup( + backup_path, + passphrase, + "player", + ) + assert(bool(inspected.get("ok", false))) + assert(str(inspected.get("fingerprint", "")) == fingerprint) + + func _assert_opaque(path: String) -> void: var bytes: PackedByteArray = PortableFileGuard.read_bytes(path) assert(not bytes.is_empty()) diff --git a/ui/game_ui.gd b/ui/game_ui.gd index 6efea59..6e4241b 100644 --- a/ui/game_ui.gd +++ b/ui/game_ui.gd @@ -81,6 +81,7 @@ signal shop_backdrop_visibility_changed(is_visible: bool) signal virtual_pointer_mode_changed(is_active: bool) signal social_prompt_accepted signal social_prompt_declined +signal data_root_changed const VIRTUAL_MOUSE_INPUT_OWNER: StringName = &"controller_virtual_mouse" const EMOTE_RADIAL_CAMERA_OWNER: StringName = &"emote_radial_menu" @@ -271,6 +272,8 @@ func _ready() -> void: _pause_settings_panel.crisp_reset_focus_requested.connect( crisp_reset_focus_requested.emit ) + _title_settings_panel.data_root_changed.connect(data_root_changed.emit) + _pause_settings_panel.data_root_changed.connect(data_root_changed.emit) if not Input.joy_connection_changed.is_connected( _on_controller_connection_changed ): diff --git a/ui/settings_panel.gd b/ui/settings_panel.gd index 159b3c0..7055d96 100644 --- a/ui/settings_panel.gd +++ b/ui/settings_panel.gd @@ -40,6 +40,7 @@ signal opened signal crisp_reset_focus_requested signal panel_visibility_changed(is_visible: bool) signal navigation_transition_started +signal data_root_changed enum PresentationMode { TITLE_EMBEDDED, @@ -612,6 +613,7 @@ func _refresh_data_page() -> void: %DataStorageMode.text = "storage mode: " + _data_root.storage_mode_text() %ChangeDataFolder.disabled = ( _data_root.override_active + or _presentation_mode != PresentationMode.TITLE_EMBEDDED or (_network_session != null and _network_session.is_session_active()) ) var fingerprint: String = ( @@ -668,6 +670,9 @@ func _choose_data_folder() -> void: if _data_root == null or _data_root.override_active: _feedback.text = "the data folder is externally managed." return + if _presentation_mode != PresentationMode.TITLE_EMBEDDED: + _feedback.text = "return to title to change the data folder." + return if _network_session != null and _network_session.is_session_active(): _feedback.text = "return to title to change the data folder." return @@ -684,6 +689,12 @@ func _choose_data_folder() -> void: func _change_data_folder(path: String) -> void: + if ( + _presentation_mode != PresentationMode.TITLE_EMBEDDED + or (_network_session != null and _network_session.is_session_active()) + ): + _feedback.text = "return to title to change the data folder." + return var result: Dictionary = PortableDataMigration.migrate_active_to( _data_root, path ) @@ -697,9 +708,7 @@ func _change_data_folder(path: String) -> void: ).to_lower() _refresh_data_page() return - _feedback.text = "data folder changed. straywild will close safely." - _refresh_data_page() - get_tree().call_deferred("quit") + _complete_data_root_change("data folder changed.") else: _feedback.text = str( result.get("message", "could not change the data folder.") @@ -717,8 +726,7 @@ func _show_existing_data_folder_choice(path: String) -> void: dialog.add_button("replace selected data", false, "replace") dialog.confirmed.connect(func() -> void: if _data_root.use_existing_root(path): - _feedback.text = "data folder changed. straywild will close safely." - get_tree().call_deferred("quit") + _complete_data_root_change("data folder changed.") else: _feedback.text = _data_root.error_message dialog.queue_free() @@ -733,7 +741,7 @@ func _show_existing_data_folder_choice(path: String) -> void: result.get("message", "could not replace selected data.") ) if bool(result.get("ok", false)): - get_tree().call_deferred("quit") + _complete_data_root_change(_feedback.text.to_lower()) dialog.queue_free() ) _interface_fonts.apply_utility_theme(dialog) @@ -744,6 +752,12 @@ func _show_existing_data_folder_choice(path: String) -> void: ) +func _complete_data_root_change(message: String) -> void: + _feedback.text = message + _refresh_data_page() + data_root_changed.emit() + + func _choose_identity_export(identity_type: String) -> void: if not _identity_operation_allowed(): return diff --git a/ui/title_screen.gd b/ui/title_screen.gd index 3055e15..0a80f63 100644 --- a/ui/title_screen.gd +++ b/ui/title_screen.gd @@ -243,6 +243,11 @@ func reopen_to_menu() -> void: _set_title_bubbles_interactive(true) +func refresh_after_data_root_change() -> void: + _save_slots_page.refresh_page() + _refresh_save_inspection() + + func open_join_game_page(endpoint: String = "") -> void: _cancel_title_entry_transition() _awaiting_start_input = false From 2b06b79bbfac1dac4b0e69e521a2ca23c767ff05 Mon Sep 17 00:00:00 2001 From: Voyager Date: Tue, 25 Aug 2026 22:18:30 -0400 Subject: [PATCH 72/90] Repair restored hand-net texture imports --- .../items/equipment/net_Material.png.import | 16 +++++++++------- .../equipment/net_Plane Base Color.png.import | 16 +++++++++------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/art/exported/items/equipment/net_Material.png.import b/art/exported/items/equipment/net_Material.png.import index 531b99b..0723973 100644 --- a/art/exported/items/equipment/net_Material.png.import +++ b/art/exported/items/equipment/net_Material.png.import @@ -2,10 +2,12 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dprm50tbiulog" -path="res://.godot/imported/net_Material.png-f4c4b0400561bc2751fe719b6b1a1e1a.ctex" +uid="uid://binoqhg45vgbs" +path.s3tc="res://.godot/imported/net_Material.png-f4c4b0400561bc2751fe719b6b1a1e1a.s3tc.ctex" +path.etc2="res://.godot/imported/net_Material.png-f4c4b0400561bc2751fe719b6b1a1e1a.etc2.ctex" metadata={ -"vram_texture": false +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true } generator_parameters={ "md5": "ef2c2ae657c9460c90eb808ba5217f39" @@ -14,11 +16,11 @@ generator_parameters={ [deps] source_file="res://art/exported/items/equipment/net_Material.png" -dest_files=["res://.godot/imported/net_Material.png-f4c4b0400561bc2751fe719b6b1a1e1a.ctex"] +dest_files=["res://.godot/imported/net_Material.png-f4c4b0400561bc2751fe719b6b1a1e1a.s3tc.ctex", "res://.godot/imported/net_Material.png-f4c4b0400561bc2751fe719b6b1a1e1a.etc2.ctex"] [params] -compress/mode=0 +compress/mode=2 compress/high_quality=false compress/lossy_quality=0.7 compress/uastc_level=0 @@ -26,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" @@ -40,4 +42,4 @@ 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 +detect_3d/compress_to=0 diff --git a/art/exported/items/equipment/net_Plane Base Color.png.import b/art/exported/items/equipment/net_Plane Base Color.png.import index 7f40afc..61077be 100644 --- a/art/exported/items/equipment/net_Plane Base Color.png.import +++ b/art/exported/items/equipment/net_Plane Base Color.png.import @@ -2,10 +2,12 @@ importer="texture" type="CompressedTexture2D" -uid="uid://seq5b31mwcqr" -path="res://.godot/imported/net_Plane Base Color.png-3875ae3dd186ddf319c55aabb13e663f.ctex" +uid="uid://cdsabucjy5rpk" +path.s3tc="res://.godot/imported/net_Plane Base Color.png-3875ae3dd186ddf319c55aabb13e663f.s3tc.ctex" +path.etc2="res://.godot/imported/net_Plane Base Color.png-3875ae3dd186ddf319c55aabb13e663f.etc2.ctex" metadata={ -"vram_texture": false +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true } generator_parameters={ "md5": "a6001c381d4c8e16bd2d64ea74ccff82" @@ -14,11 +16,11 @@ generator_parameters={ [deps] source_file="res://art/exported/items/equipment/net_Plane Base Color.png" -dest_files=["res://.godot/imported/net_Plane Base Color.png-3875ae3dd186ddf319c55aabb13e663f.ctex"] +dest_files=["res://.godot/imported/net_Plane Base Color.png-3875ae3dd186ddf319c55aabb13e663f.s3tc.ctex", "res://.godot/imported/net_Plane Base Color.png-3875ae3dd186ddf319c55aabb13e663f.etc2.ctex"] [params] -compress/mode=0 +compress/mode=2 compress/high_quality=false compress/lossy_quality=0.7 compress/uastc_level=0 @@ -26,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" @@ -40,4 +42,4 @@ 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 +detect_3d/compress_to=0 From ed2f3f7abcc67348bd0def840e57b1304f2eafed Mon Sep 17 00:00:00 2001 From: Voyager Date: Tue, 25 Aug 2026 22:22:18 -0400 Subject: [PATCH 73/90] chore: prepare v0.19.0-alpha release --- docs/README-PLAYTEST.txt | 4 ++-- export_presets.cfg | 26 +++++++++++++------------- project.godot | 2 +- scripts/build_playtest.sh | 6 +++--- ui/title_screen.tscn | 2 +- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/README-PLAYTEST.txt b/docs/README-PLAYTEST.txt index fb08636..15e3698 100644 --- a/docs/README-PLAYTEST.txt +++ b/docs/README-PLAYTEST.txt @@ -1,6 +1,6 @@ straywild -v0.18.1-alpha -Alpha 0.18.1 +v0.19.0-alpha +Alpha 0.19.0 Thank you for trying this early private playtest. diff --git a/export_presets.cfg b/export_presets.cfg index f16af2d..05b0918 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -9,7 +9,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.18.1-alpha/windows-x86_64/straywild.exe" +export_path="builds/v0.19.0-alpha/windows-x86_64/straywild.exe" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -35,11 +35,11 @@ application/modify_resources=true application/icon="res://art/exported/system_icons/straywild.ico" application/console_wrapper_icon="" application/icon_interpolation=0 -application/file_version="0.18.1.0" -application/product_version="0.18.1.0" +application/file_version="0.19.0.0" +application/product_version="0.19.0.0" application/company_name="Woofmeow" application/product_name="straywild" -application/file_description="straywild v0.18.1-alpha" +application/file_description="straywild v0.19.0-alpha" application/copyright="Copyright © 2026 Woofmeow" application/trademarks="straywild and Woofmeow branding is reserved; see TRADEMARKS.md" application/export_angle=0 @@ -62,7 +62,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.18.1-alpha/linux-arm64/straywild.arm64" +export_path="builds/v0.19.0-alpha/linux-arm64/straywild.arm64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -92,7 +92,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.18.1-alpha/macos/straywild.zip" +export_path="builds/v0.19.0-alpha/macos/straywild.zip" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -108,8 +108,8 @@ custom_template/release="" application/bundle_identifier="io.woofmeow.netfishing" application/icon="res://art/exported/system_icons/straywild_1024.png" application/icon_interpolation=0 -application/short_version="0.18.1" -application/version="0.18.1" +application/short_version="0.19.0" +application/version="0.19.0" application/architecture="universal" codesign/enable=false notarization/enable=false @@ -125,7 +125,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*,tests/*" -export_path="builds/v0.18.1-alpha/server-linux-x86_64/straywildServer.x86_64" +export_path="builds/v0.19.0-alpha/server-linux-x86_64/straywildServer.x86_64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -155,7 +155,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.18.1-alpha/android/straywild.apk" +export_path="builds/v0.19.0-alpha/android/straywild.apk" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -176,8 +176,8 @@ architectures/armeabi-v7a=false architectures/arm64-v8a=true architectures/x86=false architectures/x86_64=false -version/code=180100 -version/name="v0.18.1-alpha" +version/code=190000 +version/name="v0.19.0-alpha" package/unique_name="io.woofmeow.netfishing" package/name="straywild" package/signed=true @@ -214,7 +214,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.18.1-alpha/linux-x86_64/straywild.x86_64" +export_path="builds/v0.19.0-alpha/linux-x86_64/straywild.x86_64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" diff --git a/project.godot b/project.godot index db06b66..d202817 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="straywild" -config/version="0.18.1-alpha" +config/version="0.19.0-alpha" run/main_scene="res://main/main.tscn" config/features=PackedStringArray("4.7", "GL Compatibility") config/icon="res://art/exported/system_icons/straywild_256.png" diff --git a/scripts/build_playtest.sh b/scripts/build_playtest.sh index 9489af2..1c74943 100755 --- a/scripts/build_playtest.sh +++ b/scripts/build_playtest.sh @@ -4,14 +4,14 @@ 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.18.1-alpha" +readonly BUILD_ROOT="${PROJECT_ROOT}/builds/v0.19.0-alpha" readonly WINDOWS_DIR="${BUILD_ROOT}/windows-x86_64" readonly LINUX_DIR="${BUILD_ROOT}/linux-x86_64" readonly README_SOURCE="${PROJECT_ROOT}/docs/README-PLAYTEST.txt" readonly SOURCE_COMMIT="$(git -C "${PROJECT_ROOT}" rev-parse HEAD)" readonly SOURCE_URL="https://forge.makearmy.io/woofmeow/netfishing" -readonly WINDOWS_ZIP="${BUILD_ROOT}/straywild-v0.18.1-alpha-windows-x86_64.zip" -readonly LINUX_ZIP="${BUILD_ROOT}/straywild-v0.18.1-alpha-linux-x86_64.zip" +readonly WINDOWS_ZIP="${BUILD_ROOT}/straywild-v0.19.0-alpha-windows-x86_64.zip" +readonly LINUX_ZIP="${BUILD_ROOT}/straywild-v0.19.0-alpha-linux-x86_64.zip" readonly GODOT_BIN="${GODOT_BIN:-godot}" if [[ ! -f "${PROJECT_ROOT}/project.godot" ]]; then diff --git a/ui/title_screen.tscn b/ui/title_screen.tscn index 1888db9..d1fc210 100644 --- a/ui/title_screen.tscn +++ b/ui/title_screen.tscn @@ -213,7 +213,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.18.1-alpha" +text = "v0.19.0-alpha" horizontal_alignment = 1 [node name="Spacer" type="Control" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent"] From f910e6bdbbecad3fd1dd50218ecf6e04cd3d8601 Mon Sep 17 00:00:00 2001 From: Voyager Date: Wed, 26 Aug 2026 00:05:51 -0400 Subject: [PATCH 74/90] Update Forgejo links for Straywild rename --- README.md | 4 ++-- docs/README.md | 4 ++-- scripts/build_playtest.sh | 2 +- scripts/build_portmaster.sh | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 536afab..e228e7b 100644 --- a/README.md +++ b/README.md @@ -22,9 +22,9 @@ Discord: https://discord.gg/5gP22447kc Matrix: https://matrix.to/#/#straywild:matrix.makearmy.io -Repo: https://forge.makearmy.io/woofmeow/netfishing +Repo: https://forge.makearmy.io/woofmeow/straywild -Releases: https://forge.makearmy.io/woofmeow/netfishing/releases +Releases: https://forge.makearmy.io/woofmeow/straywild/releases ## Installing release builds diff --git a/docs/README.md b/docs/README.md index 5327b30..444ebc7 100644 --- a/docs/README.md +++ b/docs/README.md @@ -17,10 +17,10 @@ for local README files. ## Related repositories -- [Discovery service API](https://forge.makearmy.io/woofmeow/netfishing-discovery-server/src/branch/main/docs/API.md) +- [Discovery service API](https://forge.makearmy.io/woofmeow/straywild-discovery-server/src/branch/main/docs/API.md) stays with the service implementation and defines its versioned HTTP contract. -- [Dedicated-server packaging](https://forge.makearmy.io/woofmeow/netfishing-dedicated-server/src/branch/main/README.md) +- [Dedicated-server packaging](https://forge.makearmy.io/woofmeow/straywild-dedicated-server/src/branch/main/README.md) stays with its installer and update scripts. It consumes this repository's attribution and legal notices from the exact pinned game commit instead of maintaining copies. diff --git a/scripts/build_playtest.sh b/scripts/build_playtest.sh index 1c74943..2347d3d 100755 --- a/scripts/build_playtest.sh +++ b/scripts/build_playtest.sh @@ -9,7 +9,7 @@ readonly WINDOWS_DIR="${BUILD_ROOT}/windows-x86_64" readonly LINUX_DIR="${BUILD_ROOT}/linux-x86_64" readonly README_SOURCE="${PROJECT_ROOT}/docs/README-PLAYTEST.txt" readonly SOURCE_COMMIT="$(git -C "${PROJECT_ROOT}" rev-parse HEAD)" -readonly SOURCE_URL="https://forge.makearmy.io/woofmeow/netfishing" +readonly SOURCE_URL="https://forge.makearmy.io/woofmeow/straywild" readonly WINDOWS_ZIP="${BUILD_ROOT}/straywild-v0.19.0-alpha-windows-x86_64.zip" readonly LINUX_ZIP="${BUILD_ROOT}/straywild-v0.19.0-alpha-linux-x86_64.zip" readonly GODOT_BIN="${GODOT_BIN:-godot}" diff --git a/scripts/build_portmaster.sh b/scripts/build_portmaster.sh index 0487b5b..a40e0cd 100755 --- a/scripts/build_portmaster.sh +++ b/scripts/build_portmaster.sh @@ -193,7 +193,7 @@ cat >"${GAME_ROOT}/licenses/SOURCE-CODE.md" < Date: Sat, 29 Aug 2026 17:41:10 -0400 Subject: [PATCH 75/90] Fix clam spurt origin artifact (#118) --- gathering/world_gatherable.gd | 7 +++-- tests/world_spawn_protocol_validation.gd | 39 ++++++++++++++++++++++-- 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/gathering/world_gatherable.gd b/gathering/world_gatherable.gd index 8a07ba0..1a71477 100644 --- a/gathering/world_gatherable.gd +++ b/gathering/world_gatherable.gd @@ -29,12 +29,16 @@ func configure( entity_id = configured_entity_id data = configured_data type_id = data.type_id if data != null else StringName() + # Establish the authoritative transform before constructing transient visuals. + # Effects emitted before this point would begin at the default world origin. + apply_network_state(position, yaw, true) if data != null and data.is_stationary_hotspot(): _ensure_water_spurt_visual() _water_spurt_elapsed = ( float(abs(hash(entity_id)) % 1000) / 1000.0 * WATER_SPURT_INTERVAL_SECONDS ) + _emit_water_spurt() else: _ensure_visual() if data != null and data.catch_data != null and _sprite != null: @@ -50,7 +54,6 @@ func configure( ) ) _sprite.rotation_degrees.x = data.sprite_tilt_degrees - apply_network_state(position, yaw, true) func apply_network_state( @@ -147,7 +150,6 @@ func _ensure_water_spurt_visual() -> void: hole.mesh = hole_mesh hole.cast_shadow = GeometryInstance3D.SHADOW_CASTING_SETTING_OFF _water_spurt_root.add_child(hole) - _emit_water_spurt() func _emit_water_spurt() -> void: @@ -159,6 +161,7 @@ func _emit_water_spurt() -> void: particles.amount = 6 particles.lifetime = 0.42 particles.one_shot = true + particles.local_coords = true particles.explosiveness = 1.0 particles.direction = Vector3.UP particles.spread = 32.0 diff --git a/tests/world_spawn_protocol_validation.gd b/tests/world_spawn_protocol_validation.gd index a8365a1..d100260 100644 --- a/tests/world_spawn_protocol_validation.gd +++ b/tests/world_spawn_protocol_validation.gd @@ -16,6 +16,10 @@ const CalendarSeasonType = preload("res://world/calendar_season.gd") func _initialize() -> void: + call_deferred(&"_run") + + +func _run() -> void: assert(NetworkProtocol.PROTOCOL_VERSION == 11) assert( NetworkWorldSpawnProtocol.CAPABILITY @@ -23,7 +27,7 @@ func _initialize() -> void: ) assert(NetworkWorldSpawnProtocol.SNAPSHOT_ENTITIES_PER_ENVELOPE <= 4) _validate_catalog_statuses() - _validate_billboard_presentation() + await _validate_billboard_presentation() _validate_envelopes() print("World spawn protocol validation: PASS") quit() @@ -148,8 +152,27 @@ func _validate_billboard_presentation() -> void: assert(not sprite.shaded) gatherable.free() + var unconfigured_hotspot := WorldGatherableType.new() + unconfigured_hotspot.call("_ensure_water_spurt_visual") + assert( + unconfigured_hotspot.get_node_or_null( + "WaterSpurt/WaterDroplets" + ) == null + ) + unconfigured_hotspot.free() + + var clam: GatherableData = Gatherables.get_entry(&"clam_manila") + assert(clam != null) var hotspot := WorldGatherableType.new() - hotspot.call("_ensure_water_spurt_visual") + root.add_child(hotspot) + var configured_position := Vector3(24.0, 0.3, -11.0) + hotspot.configure( + "world:clam-presentation-regression", + clam, + configured_position, + 0.0, + ) + assert(hotspot.global_position.is_equal_approx(configured_position)) var hole := hotspot.get_node("WaterSpurt/BurrowMark") as MeshInstance3D assert(hole != null) assert(hole.cast_shadow == GeometryInstance3D.SHADOW_CASTING_SETTING_OFF) @@ -158,6 +181,18 @@ func _validate_billboard_presentation() -> void: assert(hole_material.shading_mode == BaseMaterial3D.SHADING_MODE_UNSHADED) assert(hole_material.transparency == BaseMaterial3D.TRANSPARENCY_DISABLED) assert(is_equal_approx(hole_material.albedo_color.a, 1.0)) + var particles := hotspot.get_node( + "WaterSpurt/WaterDroplets" + ) as CPUParticles3D + assert(particles != null and particles.emitting) + assert(particles.local_coords) + assert(particles.global_position.is_equal_approx( + configured_position + Vector3.UP * 0.035 + )) + hotspot.set_process(false) + await create_timer(0.6).timeout + await process_frame + assert(hotspot.get_node_or_null("WaterSpurt/WaterDroplets") == null) hotspot.queue_free() From 4575830857c18dd6d9a3b4761c0df7c19cacf18c Mon Sep 17 00:00:00 2001 From: Voyager Date: Sat, 29 Aug 2026 17:43:11 -0400 Subject: [PATCH 76/90] Improve nearby water recovery and camera prompts Recover players on generated worlds to the nearest safe grass or sand surface. Use the active gameplay camera when positioning shop and storage prompts. --- main/main.gd | 18 +- tests/art_tools_validation.gd | 6 + tests/fishing_authority_validation.gd | 9 + tests/generated_world_runtime_validation.gd | 75 ++++++ tests/world_layout_validation.gd | 8 + ui/game_ui.gd | 4 +- world/generation/generated_world_region.gd | 239 ++++++++++++++++++++ world/regions/world_region.gd | 18 ++ world/test_world.gd | 10 + world/water_recovery_controller.gd | 34 ++- 10 files changed, 396 insertions(+), 25 deletions(-) diff --git a/main/main.gd b/main/main.gd index 442c97c..7fae866 100644 --- a/main/main.gd +++ b/main/main.gd @@ -1006,7 +1006,8 @@ func _initialize_application(dedicated: bool) -> void: _game_ui, _game_ui.get_screen_fade(), _test_world.get_player_water_triggers(), - _test_world.get_safe_respawn_points() + _test_world.get_safe_respawn_points(), + Callable(_test_world, "get_water_recovery_position"), ) _ui_pixelation.effective_pixel_size_changed.connect( _on_effective_ui_pixel_size_changed @@ -2344,17 +2345,9 @@ func _on_remote_recovery_requested( peer_id, "Fishing attempt ended." ) - var target_position: Vector3 = _test_world.get_player_spawn_transform().origin - var nearest_distance: float = INF - for point: SafeRespawnPoint in _test_world.get_safe_respawn_points(): - if point == null or not point.enabled: - continue - var distance: float = point.get_horizontal_distance_squared( - entry_position - ) - if distance < nearest_distance: - nearest_distance = distance - target_position = point.global_position + var target_position := _test_world.get_water_recovery_position( + entry_position + ) target_position.y += _water_recovery.respawn_height_offset avatar.global_position = target_position avatar.velocity = Vector3.ZERO @@ -2432,6 +2425,7 @@ func _apply_world( spawn_transform, _test_world.get_player_water_triggers(), _test_world.get_safe_respawn_points(), + Callable(_test_world, "get_water_recovery_position"), ) _shoreline_ambience.configure( _player, diff --git a/tests/art_tools_validation.gd b/tests/art_tools_validation.gd index 3b9d6a3..4bfab98 100644 --- a/tests/art_tools_validation.gd +++ b/tests/art_tools_validation.gd @@ -416,6 +416,12 @@ func _run() -> void: ) assert(normal_camera.is_position_behind(chat_anchor)) assert(not free_camera.is_position_behind(chat_anchor)) + var shop_prompt := game_ui.get_node("%ShopPrompt") as Control + var storage_prompt := game_ui.get_node("%StoragePrompt") as Control + game_ui.set_shop_prompt_visible(true, chat_anchor) + game_ui.set_storage_prompt_visible(true, chat_anchor) + assert(shop_prompt.visible) + assert(storage_prompt.visible) chat_ui.show_local_speech("hello there friend") await process_frame assert(bool(player.get("_speech_mouth_active"))) diff --git a/tests/fishing_authority_validation.gd b/tests/fishing_authority_validation.gd index e7c87bb..b3c17dd 100644 --- a/tests/fishing_authority_validation.gd +++ b/tests/fishing_authority_validation.gd @@ -265,6 +265,15 @@ func _run() -> void: assert(bool(water_recovery.get("_prior_movement_enabled"))) assert(bool(water_recovery.get("_prior_camera_input_enabled"))) assert(not pause_menu.visible) + var test_world := main.get_node("TestWorld") as TestWorld + assert(test_world != null) + var recovery_entry := water_recovery.get("_entry_position") as Vector3 + var resolved_recovery := water_recovery.call( + "_resolve_recovery_position" + ) as Vector3 + assert(resolved_recovery.is_equal_approx( + test_world.get_water_recovery_position(recovery_entry) + )) water_recovery.call("_finish_recovery") assert(player.is_movement_enabled()) diff --git a/tests/generated_world_runtime_validation.gd b/tests/generated_world_runtime_validation.gd index f487ae7..6a3f6c8 100644 --- a/tests/generated_world_runtime_validation.gd +++ b/tests/generated_world_runtime_validation.gd @@ -536,6 +536,11 @@ func _validate_generated_region( -INF, 0.35, ) + _validate_water_recovery_positions( + region, + grass_prop_surface_triangles, + sand_prop_surface_triangles, + ) var anchors := region.get_node( "GatherableAnchors/ReachableTreeTrunks" ) as GatherableAnchorSet3D @@ -1268,6 +1273,76 @@ func _triangle_surface_height_at( return highest +func _validate_water_recovery_positions( + region: GeneratedWorldRegion, + grass_triangles: Array[PackedVector3Array], + sand_triangles: Array[PackedVector3Array], +) -> void: + var fresh_water_root := region.get_node( + "WaterBodies/FreshWaterBodies" + ) as Node3D + assert(fresh_water_root != null and fresh_water_root.get_child_count() > 0) + var fresh_water := fresh_water_root.get_child(0) as WaterBodyAuthoring + assert(fresh_water != null) + var entry_position := fresh_water.global_position + var fallback_position := region.get_player_spawn_transform().origin + var recovery_position := region.get_water_recovery_position( + entry_position, + fallback_position, + ) + assert(recovery_position.is_finite()) + assert( + _horizontal_distance_squared(entry_position, recovery_position) + < _horizontal_distance_squared(entry_position, fallback_position), + "Fresh-water recovery returned the distant generated-world spawn.", + ) + assert( + recovery_position.y + > GeneratedWorldRegion.WATER_HEIGHT + + GeneratedWorldRegion.WATER_RECOVERY_MINIMUM_GROUND_CLEARANCE + ) + var recovery_triangles: Array[PackedVector3Array] = [] + recovery_triangles.append_array(grass_triangles) + recovery_triangles.append_array(sand_triangles) + var center_height := _triangle_surface_height_at( + recovery_position, + recovery_triangles, + ) + assert(center_height > -INF) + assert(absf(center_height - recovery_position.y) <= 0.01) + for direction: Vector2 in GeneratedWorldRegion.PROP_SURFACE_SAMPLE_DIRECTIONS: + var footprint_position := recovery_position + Vector3( + direction.x * GeneratedWorldRegion.WATER_RECOVERY_FOOTPRINT_RADIUS, + 0.0, + direction.y * GeneratedWorldRegion.WATER_RECOVERY_FOOTPRINT_RADIUS, + ) + var footprint_height := _triangle_surface_height_at( + footprint_position, + recovery_triangles, + ) + assert(footprint_height > -INF) + assert( + absf(footprint_height - recovery_position.y) + <= GeneratedWorldRegion.PROP_MAXIMUM_SUPPORT_HEIGHT_DIFFERENCE + ) + assert( + region.get_water_recovery_position( + entry_position, + fallback_position, + ).is_equal_approx(recovery_position) + ) + assert( + region.get_water_recovery_position( + Vector3(INF, 0.0, 0.0), + fallback_position, + ).is_equal_approx(fallback_position) + ) + + +func _horizontal_distance_squared(a: Vector3, b: Vector3) -> float: + return Vector2(a.x - b.x, a.z - b.z).length_squared() + + func _validate_tree_gatherable_anchors( region: GeneratedWorldRegion, decorations: Node3D, diff --git a/tests/world_layout_validation.gd b/tests/world_layout_validation.gd index dd40fcf..e6eec39 100644 --- a/tests/world_layout_validation.gd +++ b/tests/world_layout_validation.gd @@ -100,6 +100,14 @@ func _validate_world_switching() -> void: assert(world.get_fishing_shop() != null) assert(world.get_player_storage() != null) assert(not world.get_fishable_water_regions().is_empty()) + var starter_safe_points := world.get_safe_respawn_points() + assert(not starter_safe_points.is_empty()) + var authored_safe_point: SafeRespawnPoint = starter_safe_points.back() + assert( + world.get_water_recovery_position( + authored_safe_point.global_position + ).is_equal_approx(authored_safe_point.global_position) + ) assert(world.activate_world(WorldLayout.GENERATED, 24680)) assert(world.get_world_layout() == WorldLayout.GENERATED) assert(world.get_generation_seed() == 24680) diff --git a/ui/game_ui.gd b/ui/game_ui.gd index 6e4241b..7f8f0a6 100644 --- a/ui/game_ui.gd +++ b/ui/game_ui.gd @@ -1892,7 +1892,7 @@ func _position_storage_prompt(world_anchor: Vector3) -> void: if _player == null: _storage_prompt.hide() return - var camera := _player.get_gameplay_camera() + var camera := _player.get_active_gameplay_camera() if camera == null or camera.is_position_behind(world_anchor): _storage_prompt.hide() return @@ -2006,7 +2006,7 @@ func _position_shop_prompt(world_anchor: Vector3) -> void: if _player == null: _shop_prompt.hide() return - var camera: Camera3D = _player.get_gameplay_camera() + var camera: Camera3D = _player.get_active_gameplay_camera() if camera == null or camera.is_position_behind(world_anchor): _shop_prompt.hide() return diff --git a/world/generation/generated_world_region.gd b/world/generation/generated_world_region.gd index aa27a65..780ddb8 100644 --- a/world/generation/generated_world_region.gd +++ b/world/generation/generated_world_region.gd @@ -43,6 +43,12 @@ const PROP_MINIMUM_GROUND_CLEARANCE := 0.05 const PROP_MAXIMUM_SUPPORT_HEIGHT_DIFFERENCE := 0.35 const PROP_CHANCE_SCALE := 10000 const PROP_SELECTION_WEIGHT_SCALE := 1000 +const WATER_RECOVERY_MINIMUM_GROUND_CLEARANCE := 0.05 +const WATER_RECOVERY_MINIMUM_UP_DOT := 0.6 +const WATER_RECOVERY_FOOTPRINT_RADIUS := 0.6 +const WATER_RECOVERY_INSET_STEP := 0.25 +const WATER_RECOVERY_MAXIMUM_INSET := 1.5 +const WATER_RECOVERY_SEARCH_EXPANSIONS: Array[float] = [1.5, 4.0, 12.0] const PROP_SURFACE_SAMPLE_DIRECTIONS: Array[Vector2] = [ Vector2(1.0, 0.0), Vector2(0.70710678, 0.70710678), @@ -90,6 +96,7 @@ var _placed_prop_clearance_radii: Array[float] = [] var _placed_prop_groups: Array[StringName] = [] var _placed_group_coordinates: Dictionary[StringName, Array] = {} var _biome_assignments: Dictionary[Vector2i, StringName] = {} +var _water_recovery_triangles_by_coordinate: Dictionary[Vector2i, Array] = {} func _ready() -> void: @@ -190,6 +197,37 @@ func get_spawn_surface_triangles( return triangles +func get_water_recovery_position( + entry_position: Vector3, + fallback_position: Vector3, +) -> Vector3: + if ( + not entry_position.is_finite() + or _water_recovery_triangles_by_coordinate.is_empty() + ): + return super(entry_position, fallback_position) + var nearest_surface_distance := _nearest_recovery_surface_distance( + entry_position + ) + if not is_finite(nearest_surface_distance): + return super(entry_position, fallback_position) + for expansion: float in WATER_RECOVERY_SEARCH_EXPANSIONS: + var maximum_distance := nearest_surface_distance + expansion + var result: Variant = _nearest_safe_recovery_surface_position( + entry_position, + maximum_distance, + ) + if result is Vector3: + return result as Vector3 + var map_wide_result: Variant = _nearest_safe_recovery_surface_position( + entry_position, + get_playable_half_extents().length() * 2.0, + ) + if map_wide_result is Vector3: + return map_wide_result as Vector3 + return super(entry_position, fallback_position) + + func _on_generation_completed(summary: Dictionary) -> void: _diggable_beach.invalidate_surface_cache() var records: Array[Dictionary] = _generator.placement_records() @@ -325,6 +363,10 @@ func _on_generation_completed(summary: Dictionary) -> void: grass_surface_triangles_by_coordinate, sand_surface_triangles_by_coordinate, ) + _cache_water_recovery_surfaces( + grass_surface_triangles_by_coordinate, + sand_surface_triangles_by_coordinate, + ) _place_spawn_amenities(spawn_position) _configure_fresh_water(records) _configure_diggable_area() @@ -1261,6 +1303,203 @@ func _terrain_surface_triangles_by_coordinate( return triangles_by_coordinate +func _cache_water_recovery_surfaces( + grass_triangles: Dictionary[Vector2i, Array], + sand_triangles: Dictionary[Vector2i, Array], +) -> void: + _water_recovery_triangles_by_coordinate.clear() + _append_water_recovery_surfaces(grass_triangles) + _append_water_recovery_surfaces(sand_triangles) + + +func _append_water_recovery_surfaces( + source: Dictionary[Vector2i, Array], +) -> void: + for coordinate: Vector2i in source: + var eligible: Array = _water_recovery_triangles_by_coordinate.get( + coordinate, + [], + ) + for triangle: PackedVector3Array in source[coordinate]: + if triangle.size() != 3: + continue + if minf( + triangle[0].y, + minf(triangle[1].y, triangle[2].y), + ) <= WATER_HEIGHT + WATER_RECOVERY_MINIMUM_GROUND_CLEARANCE: + continue + var cross := (triangle[1] - triangle[0]).cross( + triangle[2] - triangle[0] + ) + if ( + cross.length_squared() <= 0.0000001 + or absf(cross.normalized().dot(Vector3.UP)) + < WATER_RECOVERY_MINIMUM_UP_DOT + ): + continue + eligible.append(triangle) + if not eligible.is_empty(): + _water_recovery_triangles_by_coordinate[coordinate] = eligible + + +func _nearest_recovery_surface_distance(entry_position: Vector3) -> float: + var entry_horizontal := Vector2(entry_position.x, entry_position.z) + var nearest_distance_squared := INF + for coordinate: Vector2i in _water_recovery_triangles_by_coordinate: + for triangle: PackedVector3Array in ( + _water_recovery_triangles_by_coordinate[coordinate] + ): + var closest := _closest_horizontal_point_on_triangle( + entry_horizontal, + triangle, + ) + nearest_distance_squared = minf( + nearest_distance_squared, + entry_horizontal.distance_squared_to(closest), + ) + return sqrt(nearest_distance_squared) + + +func _nearest_safe_recovery_surface_position( + entry_position: Vector3, + maximum_distance: float, +) -> Variant: + var entry_horizontal := Vector2(entry_position.x, entry_position.z) + var maximum_distance_squared := maximum_distance * maximum_distance + var best_distance_squared := INF + var best_position: Variant = null + for coordinate: Vector2i in _water_recovery_triangles_by_coordinate: + for triangle: PackedVector3Array in ( + _water_recovery_triangles_by_coordinate[coordinate] + ): + var closest := _closest_horizontal_point_on_triangle( + entry_horizontal, + triangle, + ) + if ( + entry_horizontal.distance_squared_to(closest) + > maximum_distance_squared + ): + continue + var centroid := Vector2( + (triangle[0].x + triangle[1].x + triangle[2].x) / 3.0, + (triangle[0].z + triangle[1].z + triangle[2].z) / 3.0, + ) + var inset_distance := minf( + closest.distance_to(centroid), + WATER_RECOVERY_MAXIMUM_INSET, + ) + var inset_steps := ceili( + inset_distance / WATER_RECOVERY_INSET_STEP + ) + for inset_index: int in inset_steps + 1: + var candidate_horizontal := closest.move_toward( + centroid, + minf( + float(inset_index) * WATER_RECOVERY_INSET_STEP, + inset_distance, + ), + ) + var distance_squared := entry_horizontal.distance_squared_to( + candidate_horizontal + ) + if ( + distance_squared > maximum_distance_squared + or distance_squared >= best_distance_squared + ): + continue + var candidate := Vector3( + candidate_horizontal.x, + entry_position.y, + candidate_horizontal.y, + ) + var safe_position: Variant = _safe_recovery_surface_position( + candidate + ) + if safe_position is Vector3: + best_distance_squared = distance_squared + best_position = safe_position + return best_position + + +func _safe_recovery_surface_position(candidate: Vector3) -> Variant: + var nearby_triangles := _water_recovery_surface_triangles_near(candidate) + var surface_height := _surface_height_at(candidate, nearby_triangles) + if ( + surface_height <= WATER_HEIGHT + WATER_RECOVERY_MINIMUM_GROUND_CLEARANCE + or not _surface_supports_prop_footprint( + candidate, + surface_height, + WATER_RECOVERY_FOOTPRINT_RADIUS, + nearby_triangles, + ) + or not _has_prop_clearance( + candidate, + WATER_RECOVERY_FOOTPRINT_RADIUS, + ) + ): + return null + candidate.y = surface_height + return candidate + + +func _water_recovery_surface_triangles_near( + position: Vector3, +) -> Array[PackedVector3Array]: + var result: Array[PackedVector3Array] = [] + if _generator.catalog == null or _generator.catalog.chunk_size <= 0.0: + return result + var local_position := _generator.to_local(position) + var half_grid := Vector2( + float(_generator.grid_size.x - 1) * 0.5, + float(_generator.grid_size.y - 1) * 0.5, + ) + var coordinate := Vector2i( + roundi(local_position.x / _generator.catalog.chunk_size + half_grid.x), + roundi(local_position.z / _generator.catalog.chunk_size + half_grid.y), + ) + for offset_x: int in range(-1, 2): + for offset_y: int in range(-1, 2): + var nearby_coordinate := coordinate + Vector2i(offset_x, offset_y) + result.append_array( + _water_recovery_triangles_by_coordinate.get( + nearby_coordinate, + [], + ) + ) + return result + + +func _closest_horizontal_point_on_triangle( + point: Vector2, + triangle: PackedVector3Array, +) -> Vector2: + var polygon := PackedVector2Array([ + Vector2(triangle[0].x, triangle[0].z), + Vector2(triangle[1].x, triangle[1].z), + Vector2(triangle[2].x, triangle[2].z), + ]) + if Geometry2D.is_point_in_polygon(point, polygon): + return point + var closest := Geometry2D.get_closest_point_to_segment( + point, + polygon[0], + polygon[1], + ) + var nearest_distance_squared := point.distance_squared_to(closest) + for edge_index: int in range(1, 3): + var edge_closest := Geometry2D.get_closest_point_to_segment( + point, + polygon[edge_index], + polygon[(edge_index + 1) % 3], + ) + var distance_squared := point.distance_squared_to(edge_closest) + if distance_squared < nearest_distance_squared: + nearest_distance_squared = distance_squared + closest = edge_closest + return closest + + func _terrain_coordinate_for(mesh_instance: MeshInstance3D) -> Vector2i: var current: Node = mesh_instance while current != null and current != _generator: diff --git a/world/regions/world_region.gd b/world/regions/world_region.gd index a0730e4..792e4ed 100644 --- a/world/regions/world_region.gd +++ b/world/regions/world_region.gd @@ -72,6 +72,24 @@ func get_safe_respawn_points() -> Array[SafeRespawnPoint]: return points +func get_water_recovery_position( + entry_position: Vector3, + fallback_position: Vector3, +) -> Vector3: + if not entry_position.is_finite(): + return fallback_position + var target_position := fallback_position + var nearest_distance := INF + for point: SafeRespawnPoint in get_safe_respawn_points(): + if point == null or not is_instance_valid(point) or not point.enabled: + continue + var distance := point.get_horizontal_distance_squared(entry_position) + if distance < nearest_distance: + nearest_distance = distance + target_position = point.global_position + return target_position + + func get_diggable_areas() -> Array[DiggableArea3D]: var areas: Array[DiggableArea3D] = [] var root: Node = get_node_or_null(diggable_area_root) diff --git a/world/test_world.gd b/world/test_world.gd index d9d18dc..9f4da5e 100644 --- a/world/test_world.gd +++ b/world/test_world.gd @@ -49,6 +49,16 @@ func get_safe_respawn_points() -> Array[SafeRespawnPoint]: ) +func get_water_recovery_position(entry_position: Vector3) -> Vector3: + if _active_region == null: + return global_position + var fallback_position := get_player_spawn_transform().origin + return _active_region.get_water_recovery_position( + entry_position, + fallback_position, + ) + + func get_fishing_shop() -> FishingShopInteractionType: return _active_region.get_fishing_shop() diff --git a/world/water_recovery_controller.gd b/world/water_recovery_controller.gd index 9626881..0d0c5aa 100644 --- a/world/water_recovery_controller.gd +++ b/world/water_recovery_controller.gd @@ -25,6 +25,7 @@ var _game_ui: GameUI var _screen_fade: ScreenFade var _water_triggers: Array[PlayerWaterTrigger] = [] var _safe_points: Array[SafeRespawnPoint] = [] +var _recovery_position_resolver := Callable() var _initial_spawn_transform: Transform3D var _entry_position: Vector3 var _bob_base_position: Vector3 @@ -43,6 +44,7 @@ func setup( screen_fade: ScreenFade, water_triggers: Array[PlayerWaterTrigger], safe_points: Array[SafeRespawnPoint], + recovery_position_resolver: Callable = Callable(), ) -> void: _player = player _fishing_spot = fishing_spot @@ -50,6 +52,7 @@ func setup( _screen_fade = screen_fade _water_triggers = water_triggers _safe_points = safe_points + _recovery_position_resolver = recovery_position_resolver _initial_spawn_transform = player.global_transform for water_trigger: PlayerWaterTrigger in _water_triggers: if ( @@ -73,6 +76,7 @@ func update_world_context( initial_spawn_transform: Transform3D, water_triggers: Array[PlayerWaterTrigger], safe_points: Array[SafeRespawnPoint], + recovery_position_resolver: Callable = Callable(), ) -> void: for water_trigger: PlayerWaterTrigger in _water_triggers: if ( @@ -88,6 +92,7 @@ func update_world_context( _initial_spawn_transform = initial_spawn_transform _water_triggers = water_triggers _safe_points = safe_points + _recovery_position_resolver = recovery_position_resolver for water_trigger: PlayerWaterTrigger in _water_triggers: if ( water_trigger != null @@ -183,17 +188,7 @@ func _on_fade_transition_completed( func _respawn_player() -> void: - var target_position: Vector3 = _initial_spawn_transform.origin - var nearest_distance: float = INF - for point: SafeRespawnPoint in _safe_points: - if point == null or not is_instance_valid(point) or not point.enabled: - continue - var distance: float = point.get_horizontal_distance_squared( - _entry_position - ) - if distance < nearest_distance: - nearest_distance = distance - target_position = point.global_position + var target_position := _resolve_recovery_position() target_position.y += respawn_height_offset var respawn_transform: Transform3D = _player.global_transform respawn_transform.basis = _recovery_root_basis @@ -204,6 +199,23 @@ func _respawn_player() -> void: local_respawn_completed.emit(_entry_position) +func _resolve_recovery_position() -> Vector3: + if _recovery_position_resolver.is_valid(): + var resolved: Variant = _recovery_position_resolver.call(_entry_position) + if resolved is Vector3 and (resolved as Vector3).is_finite(): + return resolved as Vector3 + var target_position := _initial_spawn_transform.origin + var nearest_distance := INF + for point: SafeRespawnPoint in _safe_points: + if point == null or not is_instance_valid(point) or not point.enabled: + continue + var distance := point.get_horizontal_distance_squared(_entry_position) + if distance < nearest_distance: + nearest_distance = distance + target_position = point.global_position + return target_position + + func _finish_recovery() -> void: _player.restore_gameplay_orientation_after_recovery() _player.set_water_recovery_active(false) From 81decf2b719c975332f0653e94be7511a1adfbc9 Mon Sep 17 00:00:00 2001 From: Voyager Date: Sat, 29 Aug 2026 20:19:47 -0400 Subject: [PATCH 77/90] Add logbook catalog index filters --- fishing/fishing_spot.gd | 44 ++ main/main.gd | 1 + ...ontroller_menu_accessibility_validation.gd | 18 + tests/logbook_runtime_validation.gd | 39 +- tests/logbook_validation.gd | 441 ++++++++++++ ui/game_ui.gd | 4 + ui/logbook_catalog.gd | 338 +++++++++ ui/logbook_page.gd | 649 +++++++++++++++++- ui/player_menu.gd | 16 +- 9 files changed, 1540 insertions(+), 10 deletions(-) diff --git a/fishing/fishing_spot.gd b/fishing/fishing_spot.gd index 2559af5..8e3e169 100644 --- a/fishing/fishing_spot.gd +++ b/fishing/fishing_spot.gd @@ -150,6 +150,7 @@ var _network_session: NetworkSessionType var _network_fishing: NetworkFishingServiceType var _world_time: WorldTimeServiceType var _world_weather: WorldWeatherServiceType +var _fishable_water_regions_resolver := Callable() var _active_player: PlayerType var _state_time_remaining: float = 0.0 var _cast_charge: float = 0.0 @@ -222,6 +223,7 @@ func setup( network_fishing: NetworkFishingServiceType = null, world_time: WorldTimeServiceType = null, world_weather: WorldWeatherServiceType = null, + fishable_water_regions_resolver: Callable = Callable(), ) -> void: _local_player = local_player _local_inventory = local_inventory @@ -242,6 +244,7 @@ func setup( _network_fishing = network_fishing _world_time = world_time _world_weather = world_weather + _fishable_water_regions_resolver = fishable_water_regions_resolver if ( _network_session != null and not _network_session.state_changed.is_connected( @@ -1664,6 +1667,47 @@ func build_network_context( return _build_fishing_context(region) +func is_species_available_now(fish: FishDataType) -> bool: + if fish == null or not fish.is_selectable(): + return false + var season := ( + _world_time.get_season() + if _world_time != null + else CalendarSeason.UNKNOWN + ) + if not fish.is_available_in_season(season): + return false + if fish.collection_method != FishDataType.CollectionMethod.FISHING: + return true + for region: FishableWaterRegionType in _get_logbook_water_regions(): + if ( + region == null + or region.fish_pool == null + or region.fish_pool.get_fish_by_id(fish.id) == null + ): + continue + var context := _build_fishing_context(region) + if not fish.is_allowed_in_water(context.water_type): + continue + if fish.availability == null or fish.availability.is_available(context): + return true + return false + + +func _get_logbook_water_regions() -> Array[FishableWaterRegionType]: + var regions: Array[FishableWaterRegionType] = [] + if not _fishable_water_regions_resolver.is_valid(): + return regions + var resolved: Variant = _fishable_water_regions_resolver.call() + if resolved is not Array: + return regions + for value: Variant in resolved: + var region := value as FishableWaterRegionType + if region != null and is_instance_valid(region): + regions.append(region) + return regions + + func _get_active_bait_tags() -> Array[StringName]: if _local_player == null or _item_catalog == null: return [] diff --git a/main/main.gd b/main/main.gd index 7fae866..e9dc78f 100644 --- a/main/main.gd +++ b/main/main.gd @@ -920,6 +920,7 @@ func _initialize_application(dedicated: bool) -> void: _network_fishing, _world_time, _world_weather, + Callable(_test_world, "get_fishable_water_regions"), ) if dedicated: return diff --git a/tests/controller_menu_accessibility_validation.gd b/tests/controller_menu_accessibility_validation.gd index aa2f9e2..37e43d5 100644 --- a/tests/controller_menu_accessibility_validation.gd +++ b/tests/controller_menu_accessibility_validation.gd @@ -1356,6 +1356,24 @@ func _validate_player_menu_nested_controller_back() -> void: == LogbookPageType.ControllerZone.ENTRIES, "Global player-menu Back did not return Logbook to creature selection.", ) + logbook_page.call("_set_index_open", true, false) + logbook_page.set( + "_controller_zone", + LogbookPageType.ControllerZone.INDEX, + ) + _expect( + bool(menu.call("consume_escape")), + "Global player-menu Back did not consume the Logbook index zone.", + ) + _expect( + menu.visible and not bool(logbook_page.get("_index_open")), + "Global player-menu Back did not return from the Logbook index page.", + ) + _expect( + int(logbook_page.get("_controller_zone")) + == LogbookPageType.ControllerZone.TABS, + "Global player-menu Back did not return Logbook index focus to tabs.", + ) var net_page := menu.get("_the_net_page") as Control net_page.set("_active", true) diff --git a/tests/logbook_runtime_validation.gd b/tests/logbook_runtime_validation.gd index 75fc47f..47e795d 100644 --- a/tests/logbook_runtime_validation.gd +++ b/tests/logbook_runtime_validation.gd @@ -2,6 +2,7 @@ extends SceneTree const MainScene = preload("res://main/main.tscn") const FishCatchType = preload("res://fish/fish_catch.gd") +const MENU_TRANSITION_SETTLE_SECONDS := 3.0 func _initialize() -> void: @@ -36,12 +37,16 @@ func _run() -> void: var logbook := player_menu.get_node("%CatalogLogbook") as LogbookPage var backdrop := main.get_node("%PlayerMenuBackdrop") as ColorRect var hotbar := game_ui.get_node("%Hotbar") as Control + var fishing_spot := main.get("_fishing_spot") as FishingSpot + assert(logbook.get("_fishing_spot") == fishing_spot) + assert(logbook.get("_world_time") == main.get("_world_time")) + assert(logbook.get("_world_weather") == main.get("_world_weather")) var shortcut := InputEventKey.new() shortcut.pressed = true shortcut.physical_keycode = KEY_L assert(bool(player_menu.call("_handle_direct_page_shortcut", shortcut))) - await create_timer(2.2).timeout + await create_timer(MENU_TRANSITION_SETTLE_SECONDS).timeout assert(player_menu.visible) assert(logbook.visible) assert(backdrop.visible) @@ -51,6 +56,18 @@ func _run() -> void: var entry_buttons: Dictionary = logbook.get("_entry_buttons") assert(entry_buttons.size() == 108) await _capture_if_requested("-unknown") + logbook.call("_set_index_open", true, false) + await process_frame + assert(bool(logbook.get("_index_open"))) + assert((logbook.get("_index_body") as Control).visible) + await _capture_if_requested("-index") + logbook.set_compact_presentation(true) + await process_frame + await _capture_if_requested("-index-compact") + logbook.set_compact_presentation(false) + await process_frame + logbook.call("_set_index_open", false, false) + await process_frame logbook.call( "_select_category", WaterType.Type.FRESH_WATER ) @@ -68,13 +85,29 @@ func _run() -> void: logbook.call("_select_entry", &"bluegill", &"bluegill") await create_timer(0.2).timeout await _capture_if_requested("-known") + var bluegill := ( + main.get("fish_catalog") as FishPool + ).get_fish_by_id(&"bluegill") + var bluegill_available_now := fishing_spot.is_species_available_now(bluegill) + var index_options := logbook.get("_index_options") as Dictionary + index_options["availability"] = ( + LogbookCatalog.AvailabilityFilter.AVAILABLE_NOW + ) + logbook.notify_availability_context_changed() + await process_frame + assert( + (logbook.get("_entry_buttons") as Dictionary).has(&"bluegill") + == bluegill_available_now + ) + logbook.call("_reset_index") + await process_frame assert(bool(player_menu.call("_handle_direct_page_shortcut", shortcut))) - await create_timer(2.2).timeout + await create_timer(MENU_TRANSITION_SETTLE_SECONDS).timeout assert(not player_menu.visible) assert(bool(player_menu.call("_handle_direct_page_shortcut", shortcut))) - await create_timer(2.2).timeout + await create_timer(MENU_TRANSITION_SETTLE_SECONDS).timeout player_menu.call( "_show_section_immediate", PlayerMenu.Section.PROFILE ) diff --git a/tests/logbook_validation.gd b/tests/logbook_validation.gd index 4810e0a..431ed2e 100644 --- a/tests/logbook_validation.gd +++ b/tests/logbook_validation.gd @@ -17,6 +17,8 @@ const CatalogResource: FishPoolType = preload( "res://fish/pools/fish_catalog.tres" ) +var _query_available_id: StringName + func _initialize() -> void: call_deferred("_run") @@ -35,6 +37,7 @@ func _run() -> void: quit() return _validate_catalog() + _validate_catalog_query() await _validate_page() print("Logbook validation: PASS") quit() @@ -68,6 +71,348 @@ func _validate_catalog() -> void: ) +func _validate_catalog_query() -> void: + var collection := CollectionLogType.new() + var inventory := FishInventoryType.new() + var fresh_species: Array[FishDataType] = [] + for fish: FishDataType in LogbookCatalog.ordered_species( + CatalogResource.candidates + ): + if LogbookCatalog.category_for(fish) == LogbookCatalog.Category.FRESH_WATER: + fresh_species.append(fish) + assert(fresh_species.size() == 108) + var first := fresh_species[0] + var second := fresh_species[1] + var unknown := fresh_species[2] + for quality: int in FishQualityType.TIER_COUNT: + collection.record_catch(first.id, quality) + collection.record_catch(second.id, FishQualityType.Tier.BORING) + var held := _make_test_catch(first, true) + assert(inventory.add_catch(held)) + + var options := _default_query_options() + options["show"] = LogbookCatalog.DiscoveryFilter.CAUGHT + var filtered := LogbookCatalog.filtered_species( + CatalogResource.candidates, + LogbookCatalog.Category.FRESH_WATER, + collection, + inventory, + options, + ) + assert(filtered.size() == 2) + assert(first in filtered and second in filtered) + + options["show"] = LogbookCatalog.DiscoveryFilter.MISSING + filtered = LogbookCatalog.filtered_species( + CatalogResource.candidates, + LogbookCatalog.Category.FRESH_WATER, + collection, + inventory, + options, + ) + assert(filtered.size() == fresh_species.size() - 2) + options["sort"] = LogbookCatalog.SortMode.CATALOG_NUMBER + options["descending"] = true + filtered = LogbookCatalog.filtered_species( + CatalogResource.candidates, + LogbookCatalog.Category.FRESH_WATER, + collection, + inventory, + options, + ) + assert(filtered.front() == fresh_species.back()) + assert(filtered.back() == unknown) + + options["show"] = LogbookCatalog.DiscoveryFilter.INCOMPLETE + options["descending"] = false + filtered = LogbookCatalog.filtered_species( + CatalogResource.candidates, + LogbookCatalog.Category.FRESH_WATER, + collection, + inventory, + options, + ) + assert(filtered == [second]) + + options = _default_query_options() + options["show"] = LogbookCatalog.DiscoveryFilter.CAUGHT + options["sort"] = LogbookCatalog.SortMode.CATCH_COUNT + options["descending"] = true + filtered = LogbookCatalog.filtered_species( + CatalogResource.candidates, + LogbookCatalog.Category.FRESH_WATER, + collection, + inventory, + options, + ) + assert(filtered == [first, second]) + + options = _default_query_options() + options["search"] = unknown.display_name + filtered = LogbookCatalog.filtered_species( + CatalogResource.candidates, + LogbookCatalog.Category.FRESH_WATER, + collection, + inventory, + options, + ) + assert(filtered.is_empty()) + options["search"] = str(unknown.catalog_number) + filtered = LogbookCatalog.filtered_species( + CatalogResource.candidates, + LogbookCatalog.Category.FRESH_WATER, + collection, + inventory, + options, + ) + assert(filtered == [unknown]) + + options = _default_query_options() + options["holding"] = LogbookCatalog.HoldingFilter.FAVORITED + filtered = LogbookCatalog.filtered_species( + CatalogResource.candidates, + LogbookCatalog.Category.FRESH_WATER, + collection, + inventory, + options, + ) + assert(filtered == [first]) + options["holding"] = LogbookCatalog.HoldingFilter.IN_COOLER + filtered = LogbookCatalog.filtered_species( + CatalogResource.candidates, + LogbookCatalog.Category.FRESH_WATER, + collection, + inventory, + options, + ) + assert(filtered == [first]) + + options = _default_query_options() + options["show"] = LogbookCatalog.DiscoveryFilter.CAUGHT + options["group"] = String(first.collection_group) + filtered = LogbookCatalog.filtered_species( + CatalogResource.candidates, + LogbookCatalog.Category.FRESH_WATER, + collection, + inventory, + options, + ) + assert(first in filtered) + for fish: FishDataType in filtered: + assert(fish.collection_group == first.collection_group) + + options = _default_query_options() + options["show"] = LogbookCatalog.DiscoveryFilter.CAUGHT + options["rarity"] = ( + int(first.rarity) + LogbookCatalog.RarityFilter.COMMON + ) + filtered = LogbookCatalog.filtered_species( + CatalogResource.candidates, + LogbookCatalog.Category.FRESH_WATER, + collection, + inventory, + options, + ) + assert(first in filtered) + for fish: FishDataType in filtered: + assert(fish.rarity == first.rarity) + + options = _default_query_options() + options["show"] = LogbookCatalog.DiscoveryFilter.CAUGHT + options["method"] = ( + int(first.collection_method) + LogbookCatalog.MethodFilter.FISHING + ) + filtered = LogbookCatalog.filtered_species( + CatalogResource.candidates, + LogbookCatalog.Category.FRESH_WATER, + collection, + inventory, + options, + ) + assert(first in filtered) + for fish: FishDataType in filtered: + assert(fish.collection_method == first.collection_method) + + var first_season := -1 + for season: int in 4: + if first.is_available_in_season(season): + first_season = season + break + assert(first_season >= 0) + options = _default_query_options() + options["show"] = LogbookCatalog.DiscoveryFilter.CAUGHT + options["season"] = ( + first_season + LogbookCatalog.SeasonFilter.SPRING + ) + filtered = LogbookCatalog.filtered_species( + CatalogResource.candidates, + LogbookCatalog.Category.FRESH_WATER, + collection, + inventory, + options, + ) + assert(first in filtered) + for fish: FishDataType in filtered: + assert(fish.is_available_in_season(first_season)) + + var first_is_available_by_day := ( + first.availability == null or first.availability.allow_day + ) + options = _default_query_options() + options["show"] = LogbookCatalog.DiscoveryFilter.CAUGHT + options["time"] = ( + LogbookCatalog.TimeFilter.DAY + if first_is_available_by_day + else LogbookCatalog.TimeFilter.NIGHT + ) + filtered = LogbookCatalog.filtered_species( + CatalogResource.candidates, + LogbookCatalog.Category.FRESH_WATER, + collection, + inventory, + options, + ) + assert(first in filtered) + + options = _default_query_options() + options["show"] = LogbookCatalog.DiscoveryFilter.CAUGHT + options["sort"] = LogbookCatalog.SortMode.QUALITY_PROGRESS + options["descending"] = true + filtered = LogbookCatalog.filtered_species( + CatalogResource.candidates, + LogbookCatalog.Category.FRESH_WATER, + collection, + inventory, + options, + ) + assert(filtered == [first, second]) + for sort_mode: LogbookCatalog.SortMode in [ + LogbookCatalog.SortMode.NAME, + LogbookCatalog.SortMode.RARITY, + LogbookCatalog.SortMode.VALUE, + LogbookCatalog.SortMode.WEIGHT, + ]: + options = _default_query_options() + options["sort"] = sort_mode + filtered = LogbookCatalog.filtered_species( + CatalogResource.candidates, + LogbookCatalog.Category.FRESH_WATER, + collection, + inventory, + options, + ) + assert(filtered[0] in [first, second]) + assert(filtered[1] in [first, second]) + assert(filtered[0] != filtered[1]) + assert(filtered[2] == unknown) + + _query_available_id = second.id + options = _default_query_options() + options["availability"] = ( + LogbookCatalog.AvailabilityFilter.AVAILABLE_NOW + ) + filtered = LogbookCatalog.filtered_species( + CatalogResource.candidates, + LogbookCatalog.Category.FRESH_WATER, + collection, + inventory, + options, + Callable(self, "_query_species_available_now"), + ) + assert(filtered == [second]) + + _query_available_id = unknown.id + options["show"] = LogbookCatalog.DiscoveryFilter.MISSING + options["rarity"] = ( + int(unknown.rarity) + LogbookCatalog.RarityFilter.COMMON + ) + filtered = LogbookCatalog.filtered_species( + CatalogResource.candidates, + LogbookCatalog.Category.FRESH_WATER, + collection, + inventory, + options, + Callable(self, "_query_species_available_now"), + ) + assert(filtered == [unknown]) + + options = _default_query_options() + options["show"] = LogbookCatalog.DiscoveryFilter.MISSING + options["group"] = String(unknown.collection_group) + filtered = LogbookCatalog.filtered_species( + CatalogResource.candidates, + LogbookCatalog.Category.FRESH_WATER, + collection, + inventory, + options, + ) + assert(unknown in filtered) + assert( + String(unknown.collection_group) + in LogbookCatalog.available_groups( + CatalogResource.candidates, + LogbookCatalog.Category.FRESH_WATER, + collection, + ) + ) + + var unknown_is_available_by_day := ( + unknown.availability == null or unknown.availability.allow_day + ) + options = _default_query_options() + options["show"] = LogbookCatalog.DiscoveryFilter.MISSING + options["time"] = ( + LogbookCatalog.TimeFilter.DAY + if unknown_is_available_by_day + else LogbookCatalog.TimeFilter.NIGHT + ) + filtered = LogbookCatalog.filtered_species( + CatalogResource.candidates, + LogbookCatalog.Category.FRESH_WATER, + collection, + inventory, + options, + ) + assert(unknown in filtered) + inventory.free() + collection.free() + + +func _default_query_options() -> Dictionary: + return { + "search": "", + "show": LogbookCatalog.DiscoveryFilter.ALL, + "sort": LogbookCatalog.SortMode.CATALOG_NUMBER, + "descending": false, + "availability": LogbookCatalog.AvailabilityFilter.ANY, + "season": LogbookCatalog.SeasonFilter.ANY, + "time": LogbookCatalog.TimeFilter.ANY, + "rarity": LogbookCatalog.RarityFilter.ANY, + "method": LogbookCatalog.MethodFilter.ANY, + "holding": LogbookCatalog.HoldingFilter.ANY, + "group": "", + } + + +func _make_test_catch(fish: FishDataType, favorited: bool) -> FishCatchType: + var fish_catch := FishCatchType.new() + fish_catch.fish = fish + fish_catch.fish_id = fish.id + fish_catch.weight_lb = fish.get_minimum_weight() + fish_catch.display_scale = fish.get_display_scale_for_weight( + fish_catch.weight_lb + ) + fish_catch.quality = FishQualityType.Tier.BORING + fish_catch.sale_value = fish.get_sale_value_for_weight(fish_catch.weight_lb) + fish_catch.is_favorited = favorited + fish_catch.ensure_identity() + return fish_catch + + +func _query_species_available_now(fish: FishDataType) -> bool: + return fish != null and fish.id == _query_available_id + + func _validate_page() -> void: var collection := CollectionLogType.new() var inventory := FishInventoryType.new() @@ -91,6 +436,10 @@ func _validate_page() -> void: assert(outer_margin.get_theme_constant("margin_right") == 160) assert(outer_margin.get_theme_constant("margin_bottom") == 106) assert(is_equal_approx(book.offset_top, 65.0)) + page.call("_set_index_open", true, false) + await process_frame + _validate_index_content_bounds(page) + page.call("_set_index_open", false, false) page.set_compact_presentation(false) await process_frame assert(outer_margin.get_theme_constant("margin_left") == 52) @@ -158,6 +507,39 @@ func _validate_page() -> void: ) var initial_detail_body := page.get("_detail_body") as VBoxContainer assert(not initial_detail_body.get_parent() is ScrollContainer) + var index_tab := page.get("_index_tab") as Button + var index_body := page.get("_index_body") as VBoxContainer + assert(index_tab != null and index_body != null) + assert(index_tab.size == LogbookPage.INDEX_TAB_SIZE) + assert( + not index_tab.get_global_rect().intersects( + (category_tabs.back() as Button).get_global_rect() + ) + ) + page.call("_set_index_open", true, false) + await process_frame + assert(index_body.visible) + assert(not initial_detail_body.visible) + assert((page.get("_index_option_buttons") as Dictionary).size() == 10) + _validate_index_content_bounds(page) + page.call( + "_cycle_index_option", + &"show", + 1, + ) + await process_frame + assert((page.get("_entry_buttons") as Dictionary).is_empty()) + assert( + (page.get("_empty_state") as Label).text + == "No entries match this index." + ) + page.call("_reset_index") + await process_frame + assert((page.get("_entry_buttons") as Dictionary).size() == 108) + page.call("_set_index_open", false, false) + await process_frame + assert(not index_body.visible) + assert(initial_detail_body.visible) assert( page.call("_entry_label_text", "flathead catfish") == "flathead\ncatfish" @@ -458,8 +840,19 @@ func _validate_page() -> void: (page.get("_portrait_overlay_backdrop") as Button).pressed.emit() await process_frame + var live_index_options := page.get("_index_options") as Dictionary + live_index_options["holding"] = LogbookCatalog.HoldingFilter.IN_COOLER + page.call("_refresh_catalog") + await process_frame + assert( + (page.get("_entry_buttons") as Dictionary).keys() + == [&"bluegill"] + ) inventory.remove_catch_by_id(fish_catch.catch_id) await process_frame + assert((page.get("_entry_buttons") as Dictionary).is_empty()) + page.call("_reset_index") + await process_frame assert(not _detail_text(page).contains("number owned")) page.queue_free() collection.queue_free() @@ -474,6 +867,54 @@ func _detail_text(page: LogbookPage) -> String: return "\n".join(values) +func _validate_index_content_bounds(page: LogbookPage) -> void: + var body := page.get("_index_body") as VBoxContainer + assert(body != null and body.visible) + var right_page := body.get_parent() as Control + assert(right_page != null) + var page_rect := right_page.get_global_rect() + var body_rect := body.get_global_rect() + var protected_rect := Rect2( + page_rect.position + Vector2( + LogbookPage.INDEX_CONTENT_LEFT_INSET, + LogbookPage.INDEX_CONTENT_TOP_INSET, + ), + page_rect.size - Vector2( + LogbookPage.INDEX_CONTENT_LEFT_INSET + + LogbookPage.INDEX_CONTENT_RIGHT_INSET, + LogbookPage.INDEX_CONTENT_TOP_INSET + + LogbookPage.INDEX_CONTENT_BOTTOM_INSET, + ), + ) + assert( + body_rect.position.x + >= page_rect.position.x + LogbookPage.INDEX_CONTENT_LEFT_INSET - 1.0 + ) + assert( + body_rect.end.x + <= page_rect.end.x - LogbookPage.INDEX_CONTENT_RIGHT_INSET + 1.0 + ) + assert( + body_rect.position.y >= page_rect.position.y, + "Index starts above the authored page: body=%s page=%s" + % [body_rect, page_rect], + ) + assert( + body_rect.end.y <= page_rect.end.y, + "Index extends below the authored page: body=%s page=%s" + % [body_rect, page_rect], + ) + var controls: Array = page.get("_index_controls") as Array + for value: Variant in controls: + var control := value as Control + if control != null and control.visible: + assert( + protected_rect.grow(2.0).encloses(control.get_global_rect()), + "Index control crossed the authored right-page boundary: %s" + % control.name, + ) + + func _descendant_label_text(parent: Node) -> String: var values: PackedStringArray = [] for node: Node in parent.find_children("*", "Label", true, false): diff --git a/ui/game_ui.gd b/ui/game_ui.gd index 7f8f0a6..3ce0d17 100644 --- a/ui/game_ui.gd +++ b/ui/game_ui.gd @@ -260,6 +260,9 @@ func _ready() -> void: _player_menu.controller_hotbar_management_ended.connect( _on_controller_hotbar_management_ended ) + _player_menu.controller_text_entry_requested.connect( + request_controller_text_entry_for + ) _title_settings_panel.panel_visibility_changed.connect( _on_settings_visibility_changed ) @@ -459,6 +462,7 @@ func setup( discovery, player_jobs, world_time, + world_weather, world_environment, world_sun, ) diff --git a/ui/logbook_catalog.gd b/ui/logbook_catalog.gd index d5dc639..ac7a910 100644 --- a/ui/logbook_catalog.gd +++ b/ui/logbook_catalog.gd @@ -2,6 +2,9 @@ class_name LogbookCatalog extends RefCounted const FishDataType = preload("res://fish/fish_data.gd") +const FishInventoryType = preload("res://inventory/fish_inventory.gd") +const CollectionLogType = preload("res://collection/collection_log.gd") +const CalendarSeasonType = preload("res://world/calendar_season.gd") enum Category { FRESH_WATER, @@ -10,6 +13,66 @@ enum Category { SHELLFISH, } +enum DiscoveryFilter { + ALL, + CAUGHT, + MISSING, + INCOMPLETE, +} + +enum SortMode { + CATALOG_NUMBER, + NAME, + RARITY, + CATCH_COUNT, + QUALITY_PROGRESS, + VALUE, + WEIGHT, +} + +enum AvailabilityFilter { + ANY, + AVAILABLE_NOW, +} + +enum SeasonFilter { + ANY, + CURRENT, + SPRING, + SUMMER, + FALL, + WINTER, +} + +enum TimeFilter { + ANY, + CURRENT, + DAY, + NIGHT, +} + +enum RarityFilter { + ANY, + COMMON, + UNCOMMON, + RARE, + EPIC, + LEGENDARY, +} + +enum MethodFilter { + ANY, + FISHING, + NET, + DIGGING, +} + +enum HoldingFilter { + ANY, + IN_COOLER, + FAVORITED, +} + static func category_for(fish: FishDataType) -> Category: if fish == null: @@ -73,3 +136,278 @@ static func ordered_species( return a.catalog_number < b.catalog_number ) return ordered + + +static func filtered_species( + candidates: Array[FishDataType], + category: Category, + collection_log: CollectionLogType, + inventory: FishInventoryType, + options: Dictionary, + available_now_resolver: Callable = Callable(), + current_season: int = CalendarSeasonType.UNKNOWN, + current_is_night: bool = false, +) -> Array[FishDataType]: + var filtered: Array[FishDataType] = [] + for fish: FishDataType in ordered_species(candidates): + if category_for(fish) != category: + continue + if not _matches_filters( + fish, + collection_log, + inventory, + options, + available_now_resolver, + current_season, + current_is_night, + ): + continue + filtered.append(fish) + var sort_mode := int(options.get("sort", SortMode.CATALOG_NUMBER)) + var descending := bool(options.get("descending", false)) + filtered.sort_custom( + func(first: FishDataType, second: FishDataType) -> bool: + return _species_less_than( + first, + second, + collection_log, + sort_mode, + descending, + ) + ) + return filtered + + +static func available_groups( + candidates: Array[FishDataType], + category: Category, + _collection_log: CollectionLogType, +) -> Array[String]: + var groups: Array[String] = [] + for fish: FishDataType in ordered_species(candidates): + if category_for(fish) != category: + continue + var group := _group_label(fish) + if not group.is_empty() and group not in groups: + groups.append(group) + groups.sort_custom( + func(first: String, second: String) -> bool: + return first.naturalnocasecmp_to(second) < 0 + ) + return groups + + +static func quality_progress( + collection_log: CollectionLogType, + fish_id: StringName, +) -> int: + if collection_log == null: + return 0 + var mask: int = collection_log.get_quality_mask(fish_id) + var count: int = 0 + while mask > 0: + count += mask & 1 + mask >>= 1 + return count + + +static func _matches_filters( + fish: FishDataType, + collection_log: CollectionLogType, + inventory: FishInventoryType, + options: Dictionary, + available_now_resolver: Callable, + current_season: int, + current_is_night: bool, +) -> bool: + var discovered := ( + collection_log != null and collection_log.has_discovered(fish.id) + ) + match int(options.get("show", DiscoveryFilter.ALL)): + DiscoveryFilter.CAUGHT: + if not discovered: + return false + DiscoveryFilter.MISSING: + if discovered: + return false + DiscoveryFilter.INCOMPLETE: + if ( + not discovered + or collection_log.has_mastered(fish.id) + ): + return false + + var search_text := str(options.get("search", "")).strip_edges().to_lower() + if not search_text.is_empty(): + var number_text := str(catalog_number(fish)) + var number_query := search_text.trim_prefix("#") + var number_matches := ( + number_query.is_valid_int() + and number_text == number_query + ) + var identity_matches := false + if discovered: + identity_matches = " ".join([ + fish.display_name, + _group_label(fish), + fish.get_habitat_label(), + ]).to_lower().contains(search_text) + if not number_matches and not identity_matches: + return false + + if ( + int(options.get("availability", AvailabilityFilter.ANY)) + == AvailabilityFilter.AVAILABLE_NOW + ): + if available_now_resolver.is_valid(): + var resolved: Variant = available_now_resolver.call(fish) + if typeof(resolved) != TYPE_BOOL or not bool(resolved): + return false + elif not _matches_season(fish, current_season): + return false + + var season_filter := int(options.get("season", SeasonFilter.ANY)) + if season_filter != SeasonFilter.ANY: + var requested_season := current_season + if season_filter >= SeasonFilter.SPRING: + requested_season = season_filter - SeasonFilter.SPRING + if not _matches_season(fish, requested_season): + return false + + var time_filter := int(options.get("time", TimeFilter.ANY)) + if time_filter != TimeFilter.ANY: + var requested_night := current_is_night + if time_filter == TimeFilter.DAY: + requested_night = false + elif time_filter == TimeFilter.NIGHT: + requested_night = true + if not _matches_time(fish, requested_night): + return false + + var rarity_filter := int(options.get("rarity", RarityFilter.ANY)) + if ( + rarity_filter != RarityFilter.ANY + and fish.rarity != rarity_filter - RarityFilter.COMMON + ): + return false + + var method_filter := int(options.get("method", MethodFilter.ANY)) + if ( + method_filter != MethodFilter.ANY + and fish.collection_method != method_filter - MethodFilter.FISHING + ): + return false + + var holding_filter := int(options.get("holding", HoldingFilter.ANY)) + if holding_filter != HoldingFilter.ANY: + var favorites_only := holding_filter == HoldingFilter.FAVORITED + if not _has_current_catch(inventory, fish.id, favorites_only): + return false + + var requested_group := str(options.get("group", "")) + if ( + not requested_group.is_empty() + and _group_label(fish).nocasecmp_to(requested_group) != 0 + ): + return false + return true + + +static func _species_less_than( + first: FishDataType, + second: FishDataType, + collection_log: CollectionLogType, + sort_mode: int, + descending: bool, +) -> bool: + var first_discovered := ( + collection_log != null and collection_log.has_discovered(first.id) + ) + var second_discovered := ( + collection_log != null and collection_log.has_discovered(second.id) + ) + if sort_mode != SortMode.CATALOG_NUMBER: + if first_discovered != second_discovered: + return first_discovered + if not first_discovered and not second_discovered: + return _catalog_less_than(first, second) + + var comparison: int = 0 + match sort_mode: + SortMode.NAME: + comparison = first.display_name.naturalnocasecmp_to( + second.display_name + ) + SortMode.RARITY: + comparison = first.rarity - second.rarity + SortMode.CATCH_COUNT: + comparison = ( + collection_log.get_catch_count(first.id) + - collection_log.get_catch_count(second.id) + ) + SortMode.QUALITY_PROGRESS: + comparison = ( + quality_progress(collection_log, first.id) + - quality_progress(collection_log, second.id) + ) + SortMode.VALUE: + comparison = first.sell_value_max - second.sell_value_max + SortMode.WEIGHT: + comparison = _compare_floats( + first.get_maximum_weight(), + second.get_maximum_weight(), + ) + _: + comparison = first.catalog_number - second.catalog_number + if comparison != 0: + return comparison > 0 if descending else comparison < 0 + return _catalog_less_than(first, second) + + +static func _catalog_less_than(first: FishDataType, second: FishDataType) -> bool: + if first.catalog_number == second.catalog_number: + return String(first.id) < String(second.id) + return first.catalog_number < second.catalog_number + + +static func _compare_floats(first: float, second: float) -> int: + if is_equal_approx(first, second): + return 0 + return -1 if first < second else 1 + + +static func _matches_season(fish: FishDataType, season: int) -> bool: + return fish.is_available_in_season(season) + + +static func _matches_time(fish: FishDataType, requested_night: bool) -> bool: + if ( + fish.collection_method != FishDataType.CollectionMethod.FISHING + or fish.availability == null + ): + return true + return ( + fish.availability.allow_night + if requested_night + else fish.availability.allow_day + ) + + +static func _has_current_catch( + inventory: FishInventoryType, + fish_id: StringName, + favorites_only: bool, +) -> bool: + if inventory == null: + return false + for fish_catch in inventory.get_catches_by_fish_id(fish_id): + if fish_catch != null and (not favorites_only or fish_catch.is_favorited): + return true + return false + + +static func _group_label(fish: FishDataType) -> String: + if fish == null: + return "" + var group := String(fish.collection_group).strip_edges() + return group if not group.is_empty() else fish.get_habitat_label() diff --git a/ui/logbook_page.gd b/ui/logbook_page.gd index 6319dd6..cc490a0 100644 --- a/ui/logbook_page.gd +++ b/ui/logbook_page.gd @@ -6,10 +6,21 @@ const FishDataType = preload("res://fish/fish_data.gd") const FishQualityType = preload("res://fish/fish_quality.gd") const FishInventoryType = preload("res://inventory/fish_inventory.gd") const FishPoolType = preload("res://fish/fish_pool.gd") +const FishingSpotType = preload("res://fishing/fishing_spot.gd") +const WorldTimeServiceType = preload("res://world/world_time_service.gd") +const WorldWeatherServiceType = preload( + "res://world/world_weather_service.gd" +) const SILHOUETTE_SHADER: Shader = preload( "res://ui/logbook_silhouette.gdshader" ) const OrganizerTabType = preload("res://ui/components/organizer_tab.gd") +const ControllerFocusNavigationType = preload( + "res://ui/controller_focus_navigation.gd" +) +const NOTEPAD_INK_ACTION_SCENE: PackedScene = preload( + "res://ui/components/bubble_menu/notepad_ink_action.tscn" +) const InventoryNotepadType = preload( "res://ui/components/inventory_notepad.gd" ) @@ -48,6 +59,8 @@ const LOGBOOK_TAB_LEFT_INSET: float = 92.0 const LOGBOOK_TAB_SIZE := Vector2(108.0, 38.0) const LOGBOOK_TAB_SEPARATION: float = 6.0 const LOGBOOK_TAB_TEXT_SIDE_INSET: float = 10.0 +const INDEX_TAB_SIZE := Vector2(88.0, 38.0) +const INDEX_TAB_RIGHT_INSET: float = 72.0 const PAGE_CONTENT_SCALE: float = 0.97 const WIDE_OUTER_MARGINS := Rect2(52.0, 85.0, 52.0, 18.0) const COMPACT_OUTER_MARGINS := Rect2(160.0, 85.0, 160.0, 106.0) @@ -61,17 +74,53 @@ const DETAIL_SECTION_SEPARATION: int = 10 const DETAIL_QUALITY_SECTION_SIZE := Vector2(300.0, 104.0) const DETAIL_STATS_SECTION_SIZE := Vector2(400.0, 160.0) const DETAIL_STATS_ROW_SEPARATION: int = 8 +const INDEX_OPTION_HEIGHT: float = 34.0 +const INDEX_CONTENT_LEFT_INSET: float = 44.0 +const INDEX_CONTENT_TOP_INSET: float = 4.0 +const INDEX_CONTENT_RIGHT_INSET: float = 22.0 +const INDEX_CONTENT_BOTTOM_INSET: float = 10.0 +const INDEX_SHOW_LABELS := [ + "all entries", "caught", "missing", "needs quality", +] +const INDEX_SORT_LABELS := [ + "catalog no.", "name", "rarity", "number caught", + "quality progress", "value", "weight", +] +const INDEX_AVAILABILITY_LABELS := [ + "any time", "available now", +] +const INDEX_SEASON_LABELS := [ + "any season", "current season", "spring", "summer", "fall", "winter", +] +const INDEX_TIME_LABELS := [ + "any time", "current time", "day", "night", +] +const INDEX_RARITY_LABELS := [ + "any rarity", "common", "uncommon", "rare", "epic", "legendary", +] +const INDEX_METHOD_LABELS := [ + "any method", "fishing", "netting", "digging", +] +const INDEX_HOLDING_LABELS := [ + "any ownership", "in cooler", "favorited", +] + +signal controller_text_entry_requested(control: Control) enum ControllerZone { TABS, ENTRIES, DETAILS, + INDEX, OVERLAY, } var _collection_log: CollectionLogType var _inventory: FishInventoryType var _catalog: FishPoolType +var _fishing_spot: FishingSpotType +var _world_time: WorldTimeServiceType +var _world_weather: WorldWeatherServiceType var _category: LogbookCatalog.Category = ( LogbookCatalog.Category.FRESH_WATER ) @@ -111,6 +160,31 @@ var _portrait_overlay_stats_view: Control var _portrait_overlay_stats: GridContainer var _overlay_return_focus: Control var _controller_zone: ControllerZone = ControllerZone.TABS +var _index_tab: OrganizerTabType +var _index_body: VBoxContainer +var _index_search: LineEdit +var _index_summary: Label +var _index_note: Label +var _index_reset: Button +var _index_option_buttons: Dictionary[StringName, Button] = {} +var _index_controls: Array[Control] = [] +var _index_open: bool = false +var _index_update_in_progress: bool = false +var _index_visible_count: int = 0 +var _index_category_total: int = 0 +var _index_options: Dictionary = { + "search": "", + "show": LogbookCatalog.DiscoveryFilter.ALL, + "sort": LogbookCatalog.SortMode.CATALOG_NUMBER, + "descending": false, + "availability": LogbookCatalog.AvailabilityFilter.ANY, + "season": LogbookCatalog.SeasonFilter.ANY, + "time": LogbookCatalog.TimeFilter.ANY, + "rarity": LogbookCatalog.RarityFilter.ANY, + "method": LogbookCatalog.MethodFilter.ANY, + "holding": LogbookCatalog.HoldingFilter.ANY, + "group": "", +} func _ready() -> void: @@ -124,10 +198,16 @@ func setup( collection_log: CollectionLogType, inventory: FishInventoryType, catalog: FishPoolType, + fishing_spot: FishingSpotType = null, + world_time: WorldTimeServiceType = null, + world_weather: WorldWeatherServiceType = null, ) -> void: _collection_log = collection_log _inventory = inventory _catalog = catalog + _fishing_spot = fishing_spot + _world_time = world_time + _world_weather = world_weather if not _collection_log.fish_discovered.is_connected( _on_fish_discovered ): @@ -138,12 +218,28 @@ func setup( _collection_log.collection_changed.connect(_on_collection_changed) if not _inventory.catches_changed.is_connected(_on_inventory_changed): _inventory.catches_changed.connect(_on_inventory_changed) + if ( + _world_time != null + and not _world_time.time_changed.is_connected( + _on_logbook_context_changed + ) + ): + _world_time.time_changed.connect(_on_logbook_context_changed) + _world_time.calendar_date_changed.connect(_on_logbook_context_changed) + if ( + _world_weather != null + and not _world_weather.weather_changed.is_connected( + _on_logbook_context_changed + ) + ): + _world_weather.weather_changed.connect(_on_logbook_context_changed) _refresh_catalog() func set_compact_presentation(compact: bool) -> void: _compact_presentation = compact _apply_presentation_margins() + _apply_index_presentation() func activate() -> void: @@ -180,6 +276,17 @@ func set_interactive(value: bool) -> void: if _interactive and not tab.button_pressed else Control.MOUSE_FILTER_IGNORE ) + if _index_tab != null: + _index_tab.focus_mode = ( + Control.FOCUS_ALL + if _interactive and _controller_zone == ControllerZone.TABS + else Control.FOCUS_NONE + ) + _index_tab.mouse_filter = ( + Control.MOUSE_FILTER_STOP + if _interactive + else Control.MOUSE_FILTER_IGNORE + ) for entry: Button in _entry_buttons.values(): entry.focus_mode = ( Control.FOCUS_ALL @@ -199,6 +306,19 @@ func set_interactive(value: bool) -> void: if _interactive and _controller_zone == ControllerZone.DETAILS else Control.FOCUS_NONE ) + for index_control: Control in _index_controls: + if not is_instance_valid(index_control): + continue + index_control.focus_mode = ( + Control.FOCUS_ALL + if _interactive and _controller_zone == ControllerZone.INDEX + else Control.FOCUS_NONE + ) + index_control.mouse_filter = ( + Control.MOUSE_FILTER_STOP + if _interactive and _index_open + else Control.MOUSE_FILTER_IGNORE + ) if _portrait_overlay_backdrop != null: _portrait_overlay_backdrop.focus_mode = ( Control.FOCUS_ALL @@ -214,6 +334,9 @@ func focus_initial() -> void: _portrait_overlay_backdrop.grab_focus() return if _controller_zone == ControllerZone.TABS: + if _index_open and _index_tab != null: + _index_tab.grab_focus() + return var category_tab_index: int = _category_tab_categories.find(_category) if category_tab_index >= 0: _category_tabs[category_tab_index].grab_focus() @@ -222,6 +345,10 @@ func focus_initial() -> void: if not _detail_buttons.is_empty(): _detail_buttons.front().grab_focus() return + if _controller_zone == ControllerZone.INDEX: + if _index_search != null: + _index_search.grab_focus() + return var selected := _entry_buttons.get(_selected_entry_key) as Button if selected != null: selected.grab_focus() @@ -247,6 +374,8 @@ func handle_controller_input(event: InputEvent) -> bool: _hide_portrait_overlay() ControllerZone.DETAILS: _set_controller_zone(ControllerZone.ENTRIES) + ControllerZone.INDEX: + _set_index_open(false) ControllerZone.ENTRIES: _set_controller_zone(ControllerZone.TABS) ControllerZone.TABS: @@ -254,15 +383,43 @@ func handle_controller_input(event: InputEvent) -> bool: return true if _controller_zone == ControllerZone.TABS: if event.is_action_pressed("ui_left"): + if _index_open: + _set_index_open(false, false) + _category_tabs.back().grab_focus() + return true _select_adjacent_controller_category(-1) return true if event.is_action_pressed("ui_right"): + if ( + _category_tab_categories.find(_category) + == _category_tab_categories.size() - 1 + ): + _set_index_open(true, false) + _index_tab.grab_focus() + return true _select_adjacent_controller_category(1) return true if accept_pressed: - if not _entry_buttons.is_empty(): + if _index_open: + _set_controller_zone(ControllerZone.INDEX) + elif not _entry_buttons.is_empty(): _set_controller_zone(ControllerZone.ENTRIES) return true + if _controller_zone == ControllerZone.INDEX: + var focus_owner := get_viewport().gui_get_focus_owner() + if accept_pressed and focus_owner == _index_search: + controller_text_entry_requested.emit(_index_search) + return true + if event.is_action_pressed("ui_left"): + var previous_key := _index_key_for_control(focus_owner) + if not previous_key.is_empty(): + _cycle_index_option(previous_key, -1) + return true + if event.is_action_pressed("ui_right") or accept_pressed: + var next_key := _index_key_for_control(focus_owner) + if not next_key.is_empty(): + _cycle_index_option(next_key, 1) + return true if _controller_zone == ControllerZone.ENTRIES and accept_pressed: if not _selected_entry_key.is_empty() and not _detail_buttons.is_empty(): _set_controller_zone(ControllerZone.DETAILS) @@ -329,6 +486,20 @@ func _build_interface() -> void: tabs.add_child(tab) _category_tabs.append(tab) _category_tab_categories.append(category) + _index_tab = OrganizerTabType.new() + _index_tab.name = "CatalogIndexTab" + _index_tab.anchor_left = 1.0 + _index_tab.anchor_right = 1.0 + _index_tab.offset_left = -INDEX_TAB_RIGHT_INSET - INDEX_TAB_SIZE.x + _index_tab.offset_top = 37.0 + _index_tab.offset_right = -INDEX_TAB_RIGHT_INSET + _index_tab.offset_bottom = 37.0 + INDEX_TAB_SIZE.y + _index_tab.text = "index" + _index_tab.palette_index = 0 + _index_tab.tooltip_text = "Open catalog index" + _index_tab.accessibility_name = "Catalog index" + _index_tab.pressed.connect(_toggle_index_page) + stack.add_child(_index_tab) _configure_category_focus() var book := Control.new() @@ -418,9 +589,176 @@ func _build_interface() -> void: right_page.add_child(_detail_body) _apply_page_content_scale(_detail_body) _show_no_selection() + _build_index_page(right_page) _build_portrait_overlay() +func _build_index_page(right_page: Control) -> void: + _index_body = VBoxContainer.new() + _index_body.name = "CatalogIndex" + _index_body.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT) + _index_body.offset_left = INDEX_CONTENT_LEFT_INSET + _index_body.offset_top = INDEX_CONTENT_TOP_INSET + _index_body.offset_right = -INDEX_CONTENT_RIGHT_INSET + _index_body.offset_bottom = -INDEX_CONTENT_BOTTOM_INSET + _index_body.add_theme_constant_override("separation", 4) + _index_body.visible = false + right_page.add_child(_index_body) + _apply_page_content_scale(_index_body) + _apply_index_presentation() + + var heading := _label("catalog index", 28) + heading.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + _index_body.add_child(heading) + _index_summary = _field_label("", 14) + _index_summary.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + _index_summary.add_theme_color_override("font_color", MUTED_INK) + _index_body.add_child(_index_summary) + + var search_stack := VBoxContainer.new() + search_stack.add_theme_constant_override("separation", 0) + _index_body.add_child(search_stack) + var search_label := _field_label("find by name, group, or catalog no.", 13) + search_label.add_theme_color_override("font_color", MUTED_INK) + search_stack.add_child(search_label) + _index_search = LineEdit.new() + _index_search.name = "CatalogIndexSearch" + _index_search.custom_minimum_size.y = 34.0 + _index_search.placeholder_text = "write here..." + _index_search.max_length = 48 + _index_search.add_theme_font_override( + "font", InventoryNotepadType.HANDWRITTEN_FONT + ) + _index_search.add_theme_font_size_override("font_size", 18) + _index_search.add_theme_color_override("font_color", INK) + _index_search.add_theme_color_override("caret_color", INK) + _index_search.add_theme_color_override( + "font_placeholder_color", Color(MUTED_INK, 0.72) + ) + for style_name: StringName in [ + &"normal", &"focus", &"read_only", + ]: + _index_search.add_theme_stylebox_override( + style_name, + _index_search_style(style_name == &"focus"), + ) + _index_search.text_changed.connect(_on_index_search_changed) + search_stack.add_child(_index_search) + _index_controls.append(_index_search) + + var options_grid := GridContainer.new() + options_grid.columns = 2 + options_grid.size_flags_horizontal = Control.SIZE_EXPAND_FILL + options_grid.add_theme_constant_override("h_separation", 18) + options_grid.add_theme_constant_override("v_separation", 2) + _index_body.add_child(options_grid) + for descriptor: Dictionary in [ + {"key": &"show", "label": "show"}, + {"key": &"rarity", "label": "rarity"}, + {"key": &"sort", "label": "sort by"}, + {"key": &"availability", "label": "availability"}, + {"key": &"descending", "label": "order"}, + {"key": &"season", "label": "season"}, + {"key": &"method", "label": "method"}, + {"key": &"time", "label": "time of day"}, + {"key": &"holding", "label": "ownership"}, + {"key": &"group", "label": "collection group"}, + ]: + options_grid.add_child(_make_index_option( + descriptor["key"], + str(descriptor["label"]), + )) + + var footer := HBoxContainer.new() + footer.alignment = BoxContainer.ALIGNMENT_CENTER + _index_body.add_child(footer) + _index_reset = NOTEPAD_INK_ACTION_SCENE.instantiate() as Button + _index_reset.name = "CatalogIndexReset" + _index_reset.custom_minimum_size = Vector2(126.0, 34.0) + _index_reset.text = "clear index" + _apply_index_value_font(_index_reset) + _index_reset.tooltip_text = "Clear every catalog filter" + _index_reset.accessibility_name = "Clear catalog index filters" + _index_reset.pressed.connect(_reset_index) + footer.add_child(_index_reset) + _index_controls.append(_index_reset) + + _index_note = _field_label( + "silhouettes keep names hidden in filtered results", + 12, + ) + _index_note.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + _index_note.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART + _index_note.add_theme_color_override("font_color", Color(MUTED_INK, 0.82)) + _index_body.add_child(_index_note) + _update_index_controls() + _configure_index_focus.call_deferred() + + +func _make_index_option(key: StringName, label_text: String) -> Control: + var stack := VBoxContainer.new() + stack.size_flags_horizontal = Control.SIZE_EXPAND_FILL + stack.add_theme_constant_override("separation", -3) + var label := _field_label(label_text, 12) + label.add_theme_color_override("font_color", MUTED_INK) + stack.add_child(label) + var button := NOTEPAD_INK_ACTION_SCENE.instantiate() as Button + button.name = "CatalogIndex%s" % String(key).capitalize().replace(" ", "") + button.custom_minimum_size = Vector2(0.0, INDEX_OPTION_HEIGHT) + button.size_flags_horizontal = Control.SIZE_EXPAND_FILL + button.clip_text = true + _apply_index_value_font(button) + button.tooltip_text = "Change %s; use left or right on a controller" % label_text + button.pressed.connect(_cycle_index_option.bind(key, 1)) + button.gui_input.connect(_on_index_option_gui_input.bind(key)) + stack.add_child(button) + _index_option_buttons[key] = button + _index_controls.append(button) + return stack + + +func _apply_index_value_font(button: Button) -> void: + button.add_theme_font_override( + "font", InventoryNotepadType.HANDWRITTEN_FONT + ) + button.add_theme_font_size_override("font_size", 18) + for color_name: StringName in [ + &"font_color", + &"font_hover_color", + &"font_focus_color", + &"font_pressed_color", + ]: + button.add_theme_color_override(color_name, INK) + + +func _index_search_style(focused: bool) -> StyleBoxFlat: + var style := StyleBoxFlat.new() + style.bg_color = Color(1.0, 0.97, 0.82, 0.12 if focused else 0.0) + style.border_color = Color(INK, 0.72 if focused else 0.42) + style.border_width_bottom = 2 + style.content_margin_left = 6 + style.content_margin_right = 22 + style.content_margin_top = 2 + style.content_margin_bottom = 3 + return style + + +func _configure_index_focus() -> void: + var controls: Array[Control] = [] + for control: Control in _index_controls: + if control != null and is_instance_valid(control): + controls.append(control) + if not controls.is_empty(): + ControllerFocusNavigationType.configure_spatial_neighbors(controls) + + +func _apply_index_presentation() -> void: + if _index_body == null: + return + var scale_value := 0.82 if _compact_presentation else PAGE_CONTENT_SCALE + _index_body.scale = Vector2.ONE * scale_value + + func _apply_presentation_margins() -> void: if _outer_margin == null: return @@ -548,11 +886,30 @@ func _refresh_catalog() -> void: var preserved_entry_key: StringName = _selected_entry_key _clear_entries() var species: Array[FishDataType] = [] + var category_total: int = 0 if _catalog != null: - species = LogbookCatalog.ordered_species(_catalog.candidates) + for fish: FishDataType in LogbookCatalog.ordered_species( + _catalog.candidates + ): + if LogbookCatalog.category_for(fish) == _category: + category_total += 1 + var available_now_resolver := Callable() + if _fishing_spot != null and is_instance_valid(_fishing_spot): + available_now_resolver = Callable( + _fishing_spot, + "is_species_available_now", + ) + species = LogbookCatalog.filtered_species( + _catalog.candidates, + _category, + _collection_log, + _inventory, + _index_options, + available_now_resolver, + _current_season(), + _current_is_night(), + ) for fish: FishDataType in species: - if LogbookCatalog.category_for(fish) != _category: - continue var discovered: bool = _collection_log.has_discovered(fish.id) var entry: Button = _make_entry(fish, discovered) var selection_key: StringName = ( @@ -572,7 +929,11 @@ func _refresh_catalog() -> void: ) ) _catalog_grid.add_child(entry) - _empty_state.text = LogbookCatalog.empty_state(_category) + _empty_state.text = ( + "No entries match this index." + if _index_has_active_criteria() + else LogbookCatalog.empty_state(_category) + ) _empty_state.visible = _entry_buttons.is_empty() _catalog_scroll.visible = not _entry_buttons.is_empty() if ( @@ -589,10 +950,269 @@ func _refresh_catalog() -> void: _selected_entry_key = StringName() _refresh_selection_styles() _refresh_details(false) + _update_index_controls(species.size(), category_total) set_interactive(_interactive) _refresh_catalog_scroll_indicators.call_deferred() +func _toggle_index_page() -> void: + _set_index_open(not _index_open) + + +func _set_index_open(open: bool, restore_focus: bool = true) -> void: + _index_open = open + if _index_tab != null: + _index_tab.set_selected(open) + _index_tab.tooltip_text = ( + "Return to catch record" if open else "Open catalog index" + ) + if _index_body != null: + _index_body.visible = open + if _detail_body != null: + _detail_body.visible = not open + if not open: + _refresh_details(false) + _update_index_controls() + if restore_focus and _active and _interactive: + if open: + _controller_zone = ControllerZone.INDEX + set_interactive(true) + _index_search.grab_focus() + elif _controller_zone == ControllerZone.INDEX: + _controller_zone = ControllerZone.TABS + set_interactive(true) + _index_tab.grab_focus() + + +func _on_index_search_changed(value: String) -> void: + if _index_update_in_progress: + return + _index_options["search"] = value + _refresh_catalog() + + +func _cycle_index_option(key: StringName, direction: int = 1) -> void: + if not _index_options.has(key): + return + if key == &"descending": + _index_options[key] = not bool(_index_options[key]) + elif key == &"group": + var groups: Array[String] = [""] + if _catalog != null: + groups.append_array(LogbookCatalog.available_groups( + _catalog.candidates, + _category, + _collection_log, + )) + var current_index := groups.find(str(_index_options[key])) + if current_index < 0: + current_index = 0 + _index_options[key] = groups[wrapi( + current_index + direction, + 0, + groups.size(), + )] + else: + var option_count := _index_option_count(key) + if option_count <= 0: + return + _index_options[key] = wrapi( + int(_index_options[key]) + direction, + 0, + option_count, + ) + _refresh_catalog() + + +func _on_index_option_gui_input( + event: InputEvent, + key: StringName, +) -> void: + var mouse_event := event as InputEventMouseButton + if mouse_event == null or not mouse_event.pressed: + return + if mouse_event.button_index in [MOUSE_BUTTON_RIGHT, MOUSE_BUTTON_WHEEL_UP]: + _cycle_index_option(key, -1) + get_viewport().set_input_as_handled() + elif mouse_event.button_index == MOUSE_BUTTON_WHEEL_DOWN: + _cycle_index_option(key, 1) + get_viewport().set_input_as_handled() + + +func _index_key_for_control(control: Control) -> StringName: + for key: StringName in _index_option_buttons: + if _index_option_buttons[key] == control: + return key + return StringName() + + +func _reset_index() -> void: + _index_options = { + "search": "", + "show": LogbookCatalog.DiscoveryFilter.ALL, + "sort": LogbookCatalog.SortMode.CATALOG_NUMBER, + "descending": false, + "availability": LogbookCatalog.AvailabilityFilter.ANY, + "season": LogbookCatalog.SeasonFilter.ANY, + "time": LogbookCatalog.TimeFilter.ANY, + "rarity": LogbookCatalog.RarityFilter.ANY, + "method": LogbookCatalog.MethodFilter.ANY, + "holding": LogbookCatalog.HoldingFilter.ANY, + "group": "", + } + _index_update_in_progress = true + _index_search.text = "" + _index_update_in_progress = false + _refresh_catalog() + + +func _update_index_controls( + visible_count: int = -1, + category_total: int = -1, +) -> void: + if visible_count >= 0: + _index_visible_count = visible_count + if category_total >= 0: + _index_category_total = category_total + if _index_summary != null: + _index_summary.text = "%d shown of %d" % [ + _index_visible_count, + _index_category_total, + ] + for key: StringName in _index_option_buttons: + var button := _index_option_buttons[key] + if button == null: + continue + button.text = _index_option_label(key) + button.accessibility_name = "%s: %s" % [ + String(key).replace("_", " "), + button.text, + ] + if _index_tab != null: + var marked := _index_has_active_criteria() + _index_tab.text = "index •" if marked else "index" + _index_tab.accessibility_name = ( + "Catalog index, filters active" if marked else "Catalog index" + ) + if _index_reset != null: + _index_reset.disabled = not _index_has_active_criteria() + + +func _index_option_label(key: StringName) -> String: + match key: + &"show": + return INDEX_SHOW_LABELS[int(_index_options[key])] + &"sort": + return INDEX_SORT_LABELS[int(_index_options[key])] + &"availability": + return INDEX_AVAILABILITY_LABELS[int(_index_options[key])] + &"season": + return INDEX_SEASON_LABELS[int(_index_options[key])] + &"time": + return INDEX_TIME_LABELS[int(_index_options[key])] + &"rarity": + return INDEX_RARITY_LABELS[int(_index_options[key])] + &"method": + return INDEX_METHOD_LABELS[int(_index_options[key])] + &"holding": + return INDEX_HOLDING_LABELS[int(_index_options[key])] + &"group": + var group := str(_index_options[key]) + return group if not group.is_empty() else "any group" + &"descending": + var descending := bool(_index_options[key]) + match int(_index_options["sort"]): + LogbookCatalog.SortMode.NAME: + return "z–a" if descending else "a–z" + LogbookCatalog.SortMode.CATALOG_NUMBER: + return "high–low" if descending else "low–high" + LogbookCatalog.SortMode.RARITY: + return ( + "rare–common" if descending else "common–rare" + ) + LogbookCatalog.SortMode.VALUE, LogbookCatalog.SortMode.WEIGHT: + return "high–low" if descending else "low–high" + _: + return "most first" if descending else "least first" + return "any" + + +func _index_option_count(key: StringName) -> int: + match key: + &"show": + return INDEX_SHOW_LABELS.size() + &"sort": + return INDEX_SORT_LABELS.size() + &"availability": + return INDEX_AVAILABILITY_LABELS.size() + &"season": + return INDEX_SEASON_LABELS.size() + &"time": + return INDEX_TIME_LABELS.size() + &"rarity": + return INDEX_RARITY_LABELS.size() + &"method": + return INDEX_METHOD_LABELS.size() + &"holding": + return INDEX_HOLDING_LABELS.size() + return 0 + + +func _index_has_active_criteria() -> bool: + return ( + not str(_index_options["search"]).is_empty() + or int(_index_options["show"]) + != LogbookCatalog.DiscoveryFilter.ALL + or int(_index_options["sort"]) + != LogbookCatalog.SortMode.CATALOG_NUMBER + or bool(_index_options["descending"]) + or int(_index_options["availability"]) + != LogbookCatalog.AvailabilityFilter.ANY + or int(_index_options["season"]) + != LogbookCatalog.SeasonFilter.ANY + or int(_index_options["time"]) + != LogbookCatalog.TimeFilter.ANY + or int(_index_options["rarity"]) + != LogbookCatalog.RarityFilter.ANY + or int(_index_options["method"]) + != LogbookCatalog.MethodFilter.ANY + or int(_index_options["holding"]) + != LogbookCatalog.HoldingFilter.ANY + or not str(_index_options["group"]).is_empty() + ) + + +func _current_season() -> int: + return ( + _world_time.get_season() + if _world_time != null + else CalendarSeason.UNKNOWN + ) + + +func _current_is_night() -> bool: + return _world_time != null and _world_time.is_night_period() + + +func notify_availability_context_changed() -> void: + _on_logbook_context_changed() + + +func _on_logbook_context_changed( + _first: Variant = null, + _second: Variant = null, +) -> void: + if ( + int(_index_options["availability"]) + == LogbookCatalog.AvailabilityFilter.AVAILABLE_NOW + or int(_index_options["season"]) + == LogbookCatalog.SeasonFilter.CURRENT + or int(_index_options["time"]) + == LogbookCatalog.TimeFilter.CURRENT + ): + _refresh_catalog() + + func _make_entry(fish: FishDataType, discovered: bool) -> Button: var entry := Button.new() entry.custom_minimum_size = CATALOG_ENTRY_SIZE @@ -663,8 +1283,11 @@ func _add_entry_content( func _select_category(category: LogbookCatalog.Category) -> void: if category == _category: + if _index_open: + _set_index_open(false) return _category = category + _set_index_open(false, false) _selected_id = StringName() _selected_entry_key = StringName() for index: int in _category_tabs.size(): @@ -683,6 +1306,11 @@ func _configure_category_focus() -> void: tab.focus_neighbor_right = tab.get_path_to( _category_tabs[mini(index + 1, _category_tabs.size() - 1)] ) + if not _category_tabs.is_empty() and _index_tab != null: + var final_tab: Button = _category_tabs.back() + final_tab.focus_neighbor_right = final_tab.get_path_to(_index_tab) + _index_tab.focus_neighbor_left = _index_tab.get_path_to(final_tab) + _index_tab.focus_neighbor_right = _index_tab.get_path_to(_index_tab) func _animate_tab_entry() -> void: @@ -690,11 +1318,15 @@ func _animate_tab_entry() -> void: (_category_tabs[index] as OrganizerTabType).animate_entrance( float(index) * 0.025 ) + if _index_tab != null: + _index_tab.animate_entrance(float(_category_tabs.size()) * 0.025) func _settle_tabs_for_close() -> void: for tab: OrganizerTabType in _category_tabs: tab.settle_for_close() + if _index_tab != null: + _index_tab.settle_for_close() func _begin_category_transition() -> void: @@ -750,9 +1382,12 @@ func _set_category_content_alpha(alpha: float) -> void: _empty_state.modulate.a = alpha if _detail_body != null: _detail_body.modulate.a = alpha + if _index_body != null: + _index_body.modulate.a = alpha func _select_entry(entry_key: StringName, fish_id: StringName) -> void: + _set_index_open(false, false) if fish_id.is_empty(): _selected_id = StringName() _selected_entry_key = entry_key @@ -1284,7 +1919,9 @@ func _on_collection_changed() -> void: func _on_inventory_changed() -> void: - _refresh_details(false) + # Ownership filters and favorite-backed views depend on the live cooler, + # while rebuilding the catalog also keeps the selected detail current. + _refresh_catalog() func _unknown_selection_key(fish: FishDataType) -> StringName: diff --git a/ui/player_menu.gd b/ui/player_menu.gd index 3c5dc77..2f9f96f 100644 --- a/ui/player_menu.gd +++ b/ui/player_menu.gd @@ -105,6 +105,7 @@ signal controller_hotbar_management_requested(initial_slot: int) signal controller_hotbar_management_ended signal menu_exit_started signal shop_cooler_modal_changed(is_open: bool) +signal controller_text_entry_requested(control: Control) enum Section { COOLER, @@ -409,6 +410,9 @@ func _ready() -> void: _logbook_tab.pressed.connect( _show_section.bind(Section.LOGBOOK) ) + _catalog_logbook.controller_text_entry_requested.connect( + controller_text_entry_requested.emit + ) _the_net_tab.pressed.connect(_show_section.bind(Section.NET)) _mail_tab.pressed.connect(_show_section.bind(Section.MAIL)) _profile_tab.pressed.connect(_show_section.bind(Section.PROFILE)) @@ -556,6 +560,7 @@ func setup( discovery: DiscoveryClient, player_jobs: PlayerJobService, world_time: WorldTimeService, + world_weather: WorldWeatherService, world_environment: WorldEnvironment, world_sun: DirectionalLight3D, ) -> void: @@ -589,7 +594,14 @@ func setup( world_sun, ) _players_page.setup(network_player_list, discovery) - _catalog_logbook.setup(collection_log, inventory, catalog) + _catalog_logbook.setup( + collection_log, + inventory, + catalog, + fishing_spot, + world_time, + world_weather, + ) _the_net_page.setup(player_jobs, world_time) _network_mail_service.unread_count_changed.connect( _on_mail_unread_count_changed @@ -2779,6 +2791,7 @@ func _toggle_active_tackle() -> void: func _on_active_bait_changed(_item_id: StringName) -> void: _update_tackle_detail() + _catalog_logbook.notify_availability_context_changed() func _on_active_lure_changed(_item_id: StringName) -> void: @@ -3733,6 +3746,7 @@ func _refresh_all() -> void: func _on_bag_changed() -> void: _refresh_bag() _refresh_tackle_box() + _catalog_logbook.notify_availability_context_changed() func _on_hotbar_changed() -> void: From fe099f47dd4e5be4f18387c592c8a0cb5715ee1a Mon Sep 17 00:00:00 2001 From: Voyager Date: Sun, 30 Aug 2026 21:37:26 -0400 Subject: [PATCH 78/90] Add portable RV homes and decor prototype --- fishing/fishing_spot.gd | 88 +- homes/decor_catalog.gd | 59 + homes/decor_catalog.gd.uid | 1 + homes/home_decor_controller.gd | 457 +++++++ homes/home_decor_controller.gd.uid | 1 + homes/home_world_service.gd | 1183 +++++++++++++++++ homes/home_world_service.gd.uid | 1 + homes/player_home_state.gd | 786 +++++++++++ homes/player_home_state.gd.uid | 1 + inventory/player_bag.gd | 22 + inventory/player_hotbar.gd | 19 + inventory/player_inventory_layout.gd | 84 +- items/catalog/basic_cube.tres | 17 + items/catalog/item_catalog.tres | 5 +- main/main.gd | 267 +++- main/main.tscn | 20 + network/network_home_protocol.gd | 176 +++ network/network_home_protocol.gd.uid | 1 + network/network_home_service.gd | 956 +++++++++++++ network/network_home_service.gd.uid | 1 + network/network_item_use_service.gd | 5 + network/network_protocol.gd | 14 +- network/network_session.gd | 38 +- network/network_shop_protocol.gd | 2 + network/network_shop_service.gd | 156 ++- player/player.gd | 135 +- save/player_save_manager.gd | 36 +- tests/art_tools_validation.gd | 13 +- tests/fish_hotbar_showcase_validation.gd | 5 +- tests/fish_quality_validation.gd | 5 +- tests/home_spawn_multiplayer_validation.gd | 178 +++ .../home_spawn_multiplayer_validation.gd.uid | 1 + tests/job_system_validation.gd | 5 +- tests/player_experience_validation.gd | 5 +- tests/progression_archive_validation.gd | 26 +- tests/unified_inventory_validation.gd | 35 + ui/decor_shop.gd | 323 +++++ ui/decor_shop.gd.uid | 1 + ui/decor_shop.tscn | 14 + ui/game_ui.gd | 97 ++ ui/game_ui.tscn | 32 +- ui/home_decor_toolbar.gd | 126 ++ ui/home_decor_toolbar.gd.uid | 1 + ui/home_decor_toolbar.tscn | 8 + ui/hotbar.gd | 11 +- ui/player_storage.gd | 57 +- world/decor_shop_interaction.gd | 2 + world/decor_shop_interaction.gd.uid | 1 + world/generation/generated_world_region.gd | 13 + world/generation/generated_world_region.tscn | 6 +- world/interactables/decor_shop_world.tscn | 35 + world/interactables/player_storage_box.tscn | 4 + world/regions/starter_island_region.gd | 11 + world/regions/starter_island_region.tscn | 5 + world/regions/world_region.gd | 4 + world/test_world.gd | 16 + 56 files changed, 5459 insertions(+), 112 deletions(-) create mode 100644 homes/decor_catalog.gd create mode 100644 homes/decor_catalog.gd.uid create mode 100644 homes/home_decor_controller.gd create mode 100644 homes/home_decor_controller.gd.uid create mode 100644 homes/home_world_service.gd create mode 100644 homes/home_world_service.gd.uid create mode 100644 homes/player_home_state.gd create mode 100644 homes/player_home_state.gd.uid create mode 100644 items/catalog/basic_cube.tres create mode 100644 network/network_home_protocol.gd create mode 100644 network/network_home_protocol.gd.uid create mode 100644 network/network_home_service.gd create mode 100644 network/network_home_service.gd.uid create mode 100644 tests/home_spawn_multiplayer_validation.gd create mode 100644 tests/home_spawn_multiplayer_validation.gd.uid create mode 100644 ui/decor_shop.gd create mode 100644 ui/decor_shop.gd.uid create mode 100644 ui/decor_shop.tscn create mode 100644 ui/home_decor_toolbar.gd create mode 100644 ui/home_decor_toolbar.gd.uid create mode 100644 ui/home_decor_toolbar.tscn create mode 100644 world/decor_shop_interaction.gd create mode 100644 world/decor_shop_interaction.gd.uid create mode 100644 world/interactables/decor_shop_world.tscn diff --git a/fishing/fishing_spot.gd b/fishing/fishing_spot.gd index 8e3e169..8160eec 100644 --- a/fishing/fishing_spot.gd +++ b/fishing/fishing_spot.gd @@ -41,8 +41,6 @@ const FishingSurfaceSampleType = preload( const FishingSurfaceResolverType = preload( "res://fishing/fishing_surface_resolver.gd" ) -const ArtShopStockType = preload("res://economy/art_shop_stock.gd") -const FishingShopStockType = preload("res://economy/fishing_shop_stock.gd") const WorldTimeServiceType = preload("res://world/world_time_service.gd") const WorldWeatherServiceType = preload( "res://world/world_weather_service.gd" @@ -134,6 +132,7 @@ const ALTERNATE_REEL_ACTION: StringName = &"reel_alternate" var state: FishingState = FishingState.READY var _external_input_blocked: bool = false var _gameplay_input_enabled: bool = false +var _fishing_environment_enabled: bool = true var _local_menu_input_owners: Dictionary[StringName, bool] = {} var _local_player: PlayerType var _local_inventory: FishInventoryType @@ -399,6 +398,22 @@ func set_gameplay_input_enabled(enabled: bool) -> void: reset_transient_state() +func set_fishing_environment_enabled(enabled: bool) -> void: + if _fishing_environment_enabled == enabled: + return + _fishing_environment_enabled = enabled + if enabled: + _new_cast_press_armed = not Input.is_action_pressed("fish_primary") + return + if _network_fishing != null and _network_fishing.has_local_attempt(): + _network_fishing.cancel_local_attempt("") + reset_transient_state() + + +func is_fishing_environment_enabled() -> bool: + return _fishing_environment_enabled + + func reset_transient_state(restore_movement: bool = true) -> void: var local_state_was_active: bool = ( state != FishingState.READY or _active_player != null @@ -533,6 +548,7 @@ func _process(delta: float) -> void: func _unhandled_input(event: InputEvent) -> void: if ( not _gameplay_input_enabled + or not _fishing_environment_enabled or _external_input_blocked or not _local_menu_input_owners.is_empty() ): @@ -545,51 +561,23 @@ func _unhandled_input(event: InputEvent) -> void: alternate_reel and state == FishingState.FIGHTING ): return + # Fishing owns the primary action only after a rod starts a cast, or while + # completing an already-active fishing sequence. An empty hand, decor, + # gathering tools, and other items must remain available to their own world + # interaction controllers. + if state == FishingState.READY and not has_active_fishing_rod(): + return # A held keyboard key emits echo events. Treat the alternate reel exactly # like a mouse button: one barrier hit per physical press, while the normal # held-input path continues driving free reeling between barriers. if event is InputEventKey and event.echo: get_viewport().set_input_as_handled() return - var selected_item: ItemDataType = _get_active_item() - if ( - state == FishingState.READY - and selected_item != null - and FishingShopStockType.is_gathering_tool(selected_item.item_id) - ): - return if event.is_pressed(): match state: FishingState.READY: if not _new_cast_press_armed: return - var active_item: ItemDataType = _get_active_item() - if ( - active_item != null - and ( - active_item.category == ItemDataType.Category.CONSUMABLE - or ( - active_item.item_id == PlayerItemEffectsType.FISH_FINDER_ID - ) - ) - ): - if _network_item_use != null: - _network_item_use.request_use(active_item.item_id) - elif _item_effects.use_item(active_item, _local_bag): - status_changed.emit(_item_effects.get_feedback( - active_item.item_id - )) - elif ( - active_item.item_id == PlayerItemEffectsType.FISH_FINDER_ID - ): - local_speech_requested.emit( - PlayerItemEffectsType.FISH_FINDER_DEAD_MESSAGE - ) - get_viewport().set_input_as_handled() - return - if not has_active_fishing_rod(): - get_viewport().set_input_as_handled() - return if ( _is_inventory_full() ): @@ -661,6 +649,34 @@ func _unhandled_input(event: InputEvent) -> void: get_viewport().set_input_as_handled() +func try_use_active_non_fishing_item() -> bool: + if ( + not _gameplay_input_enabled + or _external_input_blocked + or not _local_menu_input_owners.is_empty() + or state != FishingState.READY + ): + return false + var active_item: ItemDataType = _get_active_item() + if ( + active_item == null + or ( + active_item.category != ItemDataType.Category.CONSUMABLE + and active_item.item_id != PlayerItemEffectsType.FISH_FINDER_ID + ) + ): + return false + if _network_item_use != null: + _network_item_use.request_use(active_item.item_id) + elif _item_effects.use_item(active_item, _local_bag): + status_changed.emit(_item_effects.get_feedback(active_item.item_id)) + elif active_item.item_id == PlayerItemEffectsType.FISH_FINDER_ID: + local_speech_requested.emit( + PlayerItemEffectsType.FISH_FINDER_DEAD_MESSAGE + ) + return true + + func _is_reel_input_pressed() -> bool: return ( Input.is_action_pressed("fish_primary") diff --git a/homes/decor_catalog.gd b/homes/decor_catalog.gd new file mode 100644 index 0000000..14e5e29 --- /dev/null +++ b/homes/decor_catalog.gd @@ -0,0 +1,59 @@ +class_name DecorCatalog +extends RefCounted + +const BASIC_CUBE_ID: StringName = &"basic_cube" +const MAX_OWNED_PER_PRODUCT: int = 32 + +const _PRODUCTS: Dictionary = { + BASIC_CUBE_ID: { + "display_name": "basic cube", + "description": "a simple piece of decor for testing your RV layout.", + "price": 1, + "footprint": Vector2(1.0, 0.8), + "height": 0.8, + }, +} + + +static func get_product_ids() -> Array[StringName]: + var ids: Array[StringName] = [] + for value: Variant in _PRODUCTS.keys(): + ids.append(StringName(str(value))) + ids.sort_custom(func(first: StringName, second: StringName) -> bool: + return String(first) < String(second) + ) + return ids + + +static func has_product(product_id: StringName) -> bool: + return _PRODUCTS.has(product_id) + + +static func get_product(product_id: StringName) -> Dictionary: + var value: Variant = _PRODUCTS.get(product_id) + return ( + (value as Dictionary).duplicate(true) + if typeof(value) == TYPE_DICTIONARY + else {} + ) + + +static func get_display_name(product_id: StringName) -> String: + return str(get_product(product_id).get("display_name", product_id)) + + +static func get_description(product_id: StringName) -> String: + return str(get_product(product_id).get("description", "")) + + +static func get_price(product_id: StringName) -> int: + return int(get_product(product_id).get("price", -1)) + + +static func get_footprint(product_id: StringName) -> Vector2: + var value: Variant = get_product(product_id).get("footprint", Vector2.ZERO) + return value as Vector2 if value is Vector2 else Vector2.ZERO + + +static func get_height(product_id: StringName) -> float: + return float(get_product(product_id).get("height", 0.0)) diff --git a/homes/decor_catalog.gd.uid b/homes/decor_catalog.gd.uid new file mode 100644 index 0000000..10d2530 --- /dev/null +++ b/homes/decor_catalog.gd.uid @@ -0,0 +1 @@ +uid://bvgwmexas2gps diff --git a/homes/home_decor_controller.gd b/homes/home_decor_controller.gd new file mode 100644 index 0000000..1a97a5d --- /dev/null +++ b/homes/home_decor_controller.gd @@ -0,0 +1,457 @@ +class_name HomeDecorController +extends Node + +const DecorCatalogType = preload("res://homes/decor_catalog.gd") +const DRAG_RESPONSE: float = 22.0 +const DRAG_POSITION_EPSILON: float = 0.005 + +var _player: Player +var _hotbar: PlayerHotbar +var _bag: PlayerBag +var _home_state: PlayerHomeState +var _network_home: NetworkHomeService +var _home_world: HomeWorldService +var _fishing_spot: FishingSpot +var _toolbar: HomeDecorToolbar +var _mode: PlayerHomeState.PlacementMode = PlayerHomeState.PlacementMode.GRID +var _selected_instance_id: String = "" +var _drag_instance_id: String = "" +var _drag_owner_fingerprint: String = "" +var _drag_pointer_offset: Vector3 = Vector3.ZERO +var _drag_original_position: Vector3 = Vector3.ZERO +var _drag_original_yaw: float = 0.0 +var _drag_target_position: Vector3 = Vector3.ZERO +var _drag_target_yaw: float = 0.0 +var _drag_target_valid: bool = false + + +func setup( + player: Player, + hotbar: PlayerHotbar, + bag: PlayerBag, + home_state: PlayerHomeState, + network_home: NetworkHomeService, + home_world: HomeWorldService, + fishing_spot: FishingSpot, + toolbar: HomeDecorToolbar, +) -> void: + _player = player + _hotbar = hotbar + _bag = bag + _home_state = home_state + _network_home = network_home + _home_world = home_world + _fishing_spot = fishing_spot + _toolbar = toolbar + if not _network_home.local_space_changed.is_connected( + _on_local_space_changed + ): + _network_home.local_space_changed.connect(_on_local_space_changed) + if not _home_state.changed.is_connected(_on_home_changed): + _home_state.changed.connect(_on_home_changed) + if not _toolbar.placement_mode_requested.is_connected( + _on_placement_mode_requested + ): + _toolbar.placement_mode_requested.connect( + _on_placement_mode_requested + ) + _toolbar.rotate_requested.connect(_rotate_selected) + _toolbar.store_requested.connect(_store_selected) + _toolbar.cancel_requested.connect(_clear_selection) + _toolbar.set_mode(_mode) + _refresh_toolbar() + + +func begin_decorating() -> void: + _refresh_toolbar() + if _toolbar.visible: + _toolbar.report_status( + "use held decor to place it; click or drag placed decor" + ) + + +func _input(event: InputEvent) -> void: + if _drag_instance_id.is_empty(): + return + var pointer_motion := event as InputEventMouseMotion + if pointer_motion != null: + _update_drag(pointer_motion.position) + get_viewport().set_input_as_handled() + return + var pointer_button := event as InputEventMouseButton + if ( + pointer_button != null + and pointer_button.button_index == MOUSE_BUTTON_LEFT + and not pointer_button.pressed + ): + _finish_drag() + get_viewport().set_input_as_handled() + + +func _unhandled_input(event: InputEvent) -> void: + var pointer_button := event as InputEventMouseButton + if ( + pointer_button != null + and pointer_button.button_index == MOUSE_BUTTON_LEFT + ): + if not pointer_button.pressed or not _can_decorate(): + return + if _begin_drag(pointer_button.position): + get_viewport().set_input_as_handled() + return + var pointer_decor_id: StringName = _get_selected_decor_id() + if ( + not pointer_decor_id.is_empty() + and _bag.get_quantity(pointer_decor_id) > 0 + ): + _place_carried_decor(pointer_decor_id) + get_viewport().set_input_as_handled() + return + if not _can_decorate() or not event.is_action_pressed("fish_primary"): + return + if event is InputEventKey and event.echo: + return + var decor_id: StringName = _get_selected_decor_id() + if not decor_id.is_empty() and _bag.get_quantity(decor_id) > 0: + _place_carried_decor(decor_id) + get_viewport().set_input_as_handled() + + +func _process(delta: float) -> void: + if _drag_instance_id.is_empty(): + return + if not Input.is_mouse_button_pressed(MOUSE_BUTTON_LEFT): + _finish_drag() + return + if not _drag_target_valid: + return + if not _can_decorate(): + _cancel_drag() + return + var current: Dictionary = _home_world.get_decor_preview_transform( + _drag_owner_fingerprint, _drag_instance_id + ) + if current.is_empty(): + _cancel_drag() + return + var current_position: Vector3 = current["position"] + var current_yaw: float = float(current["yaw"]) + var blend: float = 1.0 - exp(-DRAG_RESPONSE * delta) + _home_world.set_decor_preview_transform( + _drag_owner_fingerprint, + _drag_instance_id, + current_position.lerp(_drag_target_position, blend), + lerp_angle(current_yaw, _drag_target_yaw, blend), + ) + + +func _begin_drag(screen_position: Vector2) -> bool: + var owner_fingerprint: String = ( + _network_home.get_local_home_owner_fingerprint() + ) + var camera: Camera3D = _player.get_active_gameplay_camera() + var clicked_instance: String = _home_world.find_decor_instance_at_screen( + owner_fingerprint, camera, screen_position + ) + if clicked_instance.is_empty(): + return false + var placement: Dictionary = _home_state.get_placement(clicked_instance) + if placement.is_empty(): + return false + var original_position: Vector3 = _placement_position(placement) + if not original_position.is_finite(): + return false + if not _home_world.set_decor_manipulation_active( + owner_fingerprint, clicked_instance, true + ): + return false + var pointer_position: Vector3 = _home_world.get_floor_position_from_screen( + owner_fingerprint, camera, screen_position + ) + _drag_instance_id = clicked_instance + _drag_owner_fingerprint = owner_fingerprint + _drag_original_position = original_position + _drag_original_yaw = float(placement.get("yaw", 0.0)) + _drag_target_position = original_position + _drag_target_yaw = _drag_original_yaw + _drag_target_valid = true + _drag_pointer_offset = ( + original_position - pointer_position + if pointer_position.is_finite() + else Vector3.ZERO + ) + _drag_pointer_offset.y = 0.0 + _select_instance(clicked_instance) + _toolbar.report_status("drag decor, then release to place it") + return true + + +func _update_drag(screen_position: Vector2) -> void: + if not _can_decorate(): + _cancel_drag() + return + var camera: Camera3D = _player.get_active_gameplay_camera() + var pointer_position: Vector3 = _home_world.get_floor_position_from_screen( + _drag_owner_fingerprint, camera, screen_position + ) + if not pointer_position.is_finite(): + # Keep the most recent valid target when the pointer briefly leaves the + # RV floor. Releasing there should place at that target, not throw the + # decor all the way back to where the drag began. + _toolbar.report_status("keep the pointer over the RV floor") + return + var placement: Dictionary = _home_state.get_placement(_drag_instance_id) + if placement.is_empty(): + _clear_selection() + return + var candidate: Vector3 = pointer_position + _drag_pointer_offset + candidate.y = 0.0 + var normalized: Dictionary = _network_home.get_valid_local_decor_transform( + _drag_instance_id, + candidate, + float(placement.get("yaw", _drag_original_yaw)), + _mode, + ) + if normalized.is_empty(): + # A densely furnished area may have no nearby solution. Preserve the + # last valid preview so the interaction remains stable while the player + # moves the pointer toward open space. + _toolbar.report_status("holding at the nearest available position") + return + _drag_target_position = normalized["position"] + _drag_target_yaw = float(normalized["yaw"]) + _drag_target_valid = true + _toolbar.report_status("release to place decor") + + +func _finish_drag() -> void: + var instance_id: String = _drag_instance_id + var owner_fingerprint: String = _drag_owner_fingerprint + var original_position: Vector3 = _drag_original_position + var original_yaw: float = _drag_original_yaw + var target_position: Vector3 = _drag_target_position + var target_yaw: float = _drag_target_yaw + var target_valid: bool = _drag_target_valid + var placement: Dictionary = _home_state.get_placement(instance_id) + var decor_id := StringName(str(placement.get("decor_id", ""))) + if ( + not target_valid + or decor_id.is_empty() + or not _home_world.is_decor_placement_clear_of_players( + owner_fingerprint, decor_id, target_position, target_yaw + ) + ): + _home_world.set_decor_preview_transform( + owner_fingerprint, + instance_id, + original_position, + original_yaw, + ) + _home_world.set_decor_manipulation_active( + owner_fingerprint, instance_id, false + ) + _reset_drag_state() + _toolbar.report_status( + "a player is in the way" + if target_valid + else "that space is not available" + ) + return + _home_world.set_decor_preview_transform( + owner_fingerprint, instance_id, target_position, target_yaw + ) + if ( + original_position.distance_to(target_position) + <= DRAG_POSITION_EPSILON + and is_zero_approx(angle_difference(original_yaw, target_yaw)) + ): + _home_world.set_decor_manipulation_active( + owner_fingerprint, instance_id, false + ) + _reset_drag_state() + _select_instance(instance_id) + return + if _network_home.update_local_decor( + instance_id, target_position, target_yaw, _mode + ): + _home_world.set_decor_manipulation_active( + owner_fingerprint, instance_id, false + ) + _reset_drag_state() + _toolbar.report_status("decor moved") + return + _home_world.set_decor_preview_transform( + owner_fingerprint, + instance_id, + original_position, + original_yaw, + ) + _home_world.set_decor_manipulation_active( + owner_fingerprint, instance_id, false + ) + _reset_drag_state() + _toolbar.report_status("that space is not available") + + +func _cancel_drag() -> void: + if _drag_instance_id.is_empty(): + return + _home_world.set_decor_preview_transform( + _drag_owner_fingerprint, + _drag_instance_id, + _drag_original_position, + _drag_original_yaw, + ) + _home_world.set_decor_manipulation_active( + _drag_owner_fingerprint, _drag_instance_id, false + ) + _reset_drag_state() + + +func _reset_drag_state() -> void: + _drag_instance_id = "" + _drag_owner_fingerprint = "" + _drag_pointer_offset = Vector3.ZERO + _drag_original_position = Vector3.ZERO + _drag_original_yaw = 0.0 + _drag_target_position = Vector3.ZERO + _drag_target_yaw = 0.0 + _drag_target_valid = false + + +static func _placement_position(placement: Dictionary) -> Vector3: + if placement.is_empty(): + return Vector3.INF + var values: Array = placement.get("position", []) + if values.size() != 3: + return Vector3.INF + return Vector3( + float(values[0]), float(values[1]), float(values[2]) + ) + + +func _place_carried_decor(decor_id: StringName) -> void: + var owner_fingerprint: String = ( + _network_home.get_local_home_owner_fingerprint() + ) + var forward: Vector3 = -_player.global_basis.z + forward.y = 0.0 + forward = forward.normalized() + var global_position: Vector3 = _player.global_position + forward * 1.45 + var local_position: Vector3 = _home_world.interior_global_to_local( + owner_fingerprint, global_position + ) + var instance_id: String = _network_home.place_local_decor( + decor_id, local_position, _player.global_rotation.y, _mode + ) + if instance_id.is_empty(): + _toolbar.report_status("make room in front of you to place this decor") + return + _select_instance(instance_id) + _toolbar.report_status("decor placed") + + +func _select_instance(instance_id: String) -> void: + var placement: Dictionary = _home_state.get_placement(instance_id) + if placement.is_empty(): + _clear_selection() + return + _selected_instance_id = instance_id + var decor_id := StringName(str(placement.get("decor_id", ""))) + _toolbar.set_selection( + instance_id, DecorCatalogType.get_display_name(decor_id) + ) + + +func _rotate_selected() -> void: + if not _can_decorate() or _selected_instance_id.is_empty(): + return + var placement: Dictionary = _home_state.get_placement( + _selected_instance_id + ) + if placement.is_empty(): + _clear_selection() + return + var values: Array = placement.get("position", []) + if values.size() != 3: + return + var position := Vector3( + float(values[0]), float(values[1]), float(values[2]) + ) + if _network_home.update_local_decor( + _selected_instance_id, + position, + float(placement.get("yaw", 0.0)) + PI * 0.5, + _mode, + ): + _toolbar.report_status("decor rotated") + else: + _toolbar.report_status("not enough room to rotate here") + + +func _store_selected() -> void: + if _selected_instance_id.is_empty(): + return + if _network_home.remove_local_decor(_selected_instance_id): + _clear_selection() + _toolbar.report_status("decor packed into storage") + else: + _toolbar.report_status("inventory and storage are full") + + +func _clear_selection() -> void: + _cancel_drag() + _selected_instance_id = "" + if _toolbar != null: + _toolbar.set_selection("") + + +func _on_placement_mode_requested(mode: int) -> void: + _mode = mode as PlayerHomeState.PlacementMode + + +func _on_local_space_changed( + _space_id: StringName, + _owner_fingerprint: String, +) -> void: + _clear_selection() + _refresh_toolbar() + + +func _on_home_changed() -> void: + if ( + not _selected_instance_id.is_empty() + and _home_state.get_placement(_selected_instance_id).is_empty() + ): + _clear_selection() + _refresh_toolbar() + + +func _refresh_toolbar() -> void: + if _toolbar == null: + return + _toolbar.set_active(_can_decorate()) + if not _toolbar.visible: + _clear_selection() + + +func _can_decorate() -> bool: + return ( + _player != null + and _network_home != null + and _network_home.can_local_decorate() + and _fishing_spot != null + and _fishing_spot.can_open_fishing_shop() + and _player.is_movement_enabled() + ) + + +func _get_selected_decor_id() -> StringName: + if ( + _hotbar == null + or _hotbar.get_selected_assignment_kind() + != PlayerHotbar.AssignmentKind.ITEM + ): + return StringName() + var item_id: StringName = _hotbar.get_selected_item_id() + return item_id if DecorCatalogType.has_product(item_id) else StringName() diff --git a/homes/home_decor_controller.gd.uid b/homes/home_decor_controller.gd.uid new file mode 100644 index 0000000..1778125 --- /dev/null +++ b/homes/home_decor_controller.gd.uid @@ -0,0 +1 @@ +uid://b5j0mqcvhmi54 diff --git a/homes/home_world_service.gd b/homes/home_world_service.gd new file mode 100644 index 0000000..4e1b422 --- /dev/null +++ b/homes/home_world_service.gd @@ -0,0 +1,1183 @@ +class_name HomeWorldService +extends Node3D + +const NetworkHomeProtocolType = preload( + "res://network/network_home_protocol.gd" +) +const PlayerHomeStateType = preload("res://homes/player_home_state.gd") +const DecorCatalogType = preload("res://homes/decor_catalog.gd") + +const EXTERIOR_BODY_SIZE := Vector3(5.6, 2.5, 2.35) +const EXTERIOR_DOOR_LOCAL := Vector3(-1.45, 0.85, 1.48) +const EXTERIOR_SPAWN_LOCAL := Vector3(-1.45, 0.25, 2.45) +const EXTERIOR_INTERACTION_DISTANCE: float = 2.7 +const INTERIOR_EXIT_DISTANCE: float = 2.1 +const INTERIOR_ORIGIN := Vector3(1000.0, 300.0, 1000.0) +const INTERIOR_SPACING: float = 14.0 +const INTERIOR_FLOOR_SIZE := Vector3(8.0, 0.18, 4.5) +const INTERIOR_WALL_HEIGHT: float = 2.7 +const MIN_EXTERIOR_TRIANGLE_AREA: float = 1.0 +const MIN_EXTERIOR_SEPARATION: float = 9.0 +const EXTERIOR_FOOTPRINT_HALF_EXTENTS := Vector2(3.85, 2.55) +const EXTERIOR_SURFACE_INDEX_CELL_SIZE: float = 5.0 +const EXTERIOR_MAX_SURFACE_HEIGHT_DELTA: float = 0.24 +const EXTERIOR_CLEARANCE_HEIGHT: float = 2.7 +const WORLD_GEOMETRY_COLLISION_LAYER: int = 1 +const DECOR_SELECTION_COLLISION_LAYER: int = 1 << 8 +# Includes the player's 0.45 m capsule radius plus enough movement margin for +# a full low-tick-rate frame before a newly solid placement can be reached. +const PLAYER_DECOR_CLEARANCE_RADIUS: float = 0.8 +const BASIC_CUBE_SIZE := Vector3(1.0, 0.8, 0.8) + +var _world: TestWorld +var _spawn_service: PlayerSpawnService +var _session: NetworkSession +var _dedicated_runtime: bool = false +var _exteriors_root: Node3D +var _interiors_root: Node3D +var _presentations_by_fingerprint: Dictionary[String, Dictionary] = {} +var _local_space: StringName = NetworkHomeProtocolType.WORLD_SPACE +var _decor_under_manipulation: Dictionary[String, bool] = {} +var _pending_solid_decor: Dictionary[String, Dictionary] = {} + + +func setup( + world: TestWorld, + spawn_service: PlayerSpawnService, + session: NetworkSession, + dedicated_runtime: bool, +) -> void: + _world = world + _spawn_service = spawn_service + _session = session + _dedicated_runtime = dedicated_runtime + _ensure_roots() + set_process(true) + + +func is_world_ready() -> bool: + return _world != null and _world.is_world_ready() + + +func clear_presentations() -> void: + _presentations_by_fingerprint.clear() + _decor_under_manipulation.clear() + _pending_solid_decor.clear() + if is_instance_valid(_exteriors_root): + for child: Node in _exteriors_root.get_children(): + child.queue_free() + if is_instance_valid(_interiors_root): + for child: Node in _interiors_root.get_children(): + child.queue_free() + + +func remove_presentation(owner_fingerprint: String) -> void: + var presentation: Dictionary = _presentations_by_fingerprint.get( + owner_fingerprint, {} + ) + if presentation.is_empty(): + return + _clear_decor_collision_tracking(owner_fingerprint) + _free_presentation_nodes(presentation) + _presentations_by_fingerprint.erase(owner_fingerprint) + + +func apply_manifest(data: Dictionary) -> bool: + if ( + not is_world_ready() + or not NetworkHomeProtocolType.validate_manifest_broadcast(data) + ): + return false + _ensure_roots() + var fingerprint: String = str(data["owner_fingerprint"]) + var prior: Dictionary = _presentations_by_fingerprint.get(fingerprint, {}) + var prior_instance_ids: Dictionary[String, bool] = {} + if not prior.is_empty(): + var prior_home: Dictionary = prior.get("home", {}) + for value: Variant in prior_home.get("placements", []): + if typeof(value) == TYPE_DICTIONARY: + prior_instance_ids[str( + (value as Dictionary).get("instance_id", "") + )] = true + if not prior.is_empty(): + _clear_decor_collision_tracking(fingerprint) + _free_presentation_nodes(prior) + var exterior_transform := NetworkHomeProtocolType.array_to_transform( + data["exterior_transform"] + ) + var interior_index: int = int(data["interior_index"]) + var home_data: Dictionary = PlayerHomeStateType.sanitize_save_data( + data["home"] + ) + var exterior := _build_exterior(fingerprint, exterior_transform) + var interior := _build_interior(fingerprint, interior_index, home_data) + var presentation: Dictionary = { + "owner_peer_id": int(data["owner_peer_id"]), + "fingerprint": fingerprint, + "home": home_data, + "exterior_transform": exterior_transform, + "interior_index": interior_index, + "exterior": exterior, + "interior": interior, + } + _presentations_by_fingerprint[fingerprint] = presentation + _refresh_local_visibility() + if not prior.is_empty(): + for value: Variant in home_data.get("placements", []): + if typeof(value) != TYPE_DICTIONARY: + continue + var instance_id: String = str( + (value as Dictionary).get("instance_id", "") + ) + if not instance_id.is_empty() and not prior_instance_ids.has( + instance_id + ): + call_deferred( + "_spawn_decor_poof", fingerprint, instance_id + ) + return true + + +func choose_exterior_transform( + owner_peer_id: int, + reserved_transforms: Array[Transform3D], +) -> Transform3D: + var spawn_transform: Transform3D = ( + _world.get_player_spawn_transform() + if _world != null else Transform3D.IDENTITY + ) + var triangles: Array[PackedVector3Array] = ( + _world.get_spawn_surface_triangles( + [&"grass_lite", &"grass", &"sand"], -0.5 + ) + if _world != null else [] + ) + if not triangles.is_empty(): + var surface_index: Dictionary = _build_surface_index(triangles) + var strict_result: Transform3D = _find_exterior_transform( + owner_peer_id, + triangles, + surface_index, + spawn_transform, + reserved_transforms, + true, + true, + ) + if strict_result != Transform3D.IDENTITY: + return strict_result + var relaxed_result: Transform3D = _find_exterior_transform( + owner_peer_id, + triangles, + surface_index, + spawn_transform, + reserved_transforms, + false, + true, + ) + if relaxed_result != Transform3D.IDENTITY: + return relaxed_result + var dry_result: Transform3D = _find_exterior_transform( + owner_peer_id, + triangles, + surface_index, + spawn_transform, + reserved_transforms, + false, + false, + ) + if dry_result != Transform3D.IDENTITY: + push_warning( + "RV exterior used a dry fallback with obstructed clearance." + ) + return dry_result + push_error("No dry, level RV exterior footprint was available.") + var fallback: Transform3D = spawn_transform + var column: int = posmod(owner_peer_id - 1, 4) + var row: int = maxi(floori(float(owner_peer_id - 1) / 4.0), 0) + fallback.origin += Vector3( + -12.0 + float(column) * 8.0, + 0.0, + 8.0 + float(row) * 7.0, + ) + return fallback + + +func _find_exterior_transform( + owner_peer_id: int, + triangles: Array[PackedVector3Array], + surface_index: Dictionary, + spawn_transform: Transform3D, + reserved_transforms: Array[Transform3D], + require_spawn_clearance: bool, + require_obstacle_clearance: bool, +) -> Transform3D: + var triangle_count: int = triangles.size() + var start: int = posmod(owner_peer_id * 37, triangle_count) + var step: int = _coprime_step(triangle_count, 29) + for offset: int in triangle_count: + var triangle: PackedVector3Array = triangles[ + (start + offset * step) % triangle_count + ] + if not _is_exterior_candidate_triangle(triangle): + continue + var position: Vector3 = ( + triangle[0] + triangle[1] + triangle[2] + ) / 3.0 + if ( + require_spawn_clearance + and position.distance_to(spawn_transform.origin) < 6.0 + ): + continue + if _too_close_to_reserved(position, reserved_transforms): + continue + var yaw: float = float(posmod(owner_peer_id + offset, 4)) * PI * 0.5 + var grounded_position: Vector3 = _ground_exterior_footprint( + position, yaw, triangles, surface_index + ) + if not grounded_position.is_finite(): + continue + if ( + require_obstacle_clearance + and not _exterior_volume_is_clear(grounded_position, yaw) + ): + continue + return Transform3D(Basis(Vector3.UP, yaw), grounded_position) + return Transform3D.IDENTITY + + +func _is_exterior_candidate_triangle(triangle: PackedVector3Array) -> bool: + if triangle.size() != 3: + return false + var normal: Vector3 = (triangle[1] - triangle[0]).cross( + triangle[2] - triangle[0] + ) + var area: float = normal.length() * 0.5 + return ( + area >= MIN_EXTERIOR_TRIANGLE_AREA + and absf(normal.normalized().y) >= 0.94 + ) + + +func _ground_exterior_footprint( + position: Vector3, + yaw: float, + triangles: Array[PackedVector3Array], + surface_index: Dictionary, +) -> Vector3: + var heights: Array[float] = [] + for local_sample: Vector2 in _exterior_footprint_samples(): + var rotated_sample: Vector3 = Vector3( + local_sample.x, 0.0, local_sample.y + ).rotated(Vector3.UP, yaw) + var sample := Vector2( + position.x + rotated_sample.x, + position.z + rotated_sample.z, + ) + var height: float = _surface_height_at( + sample, position.y, triangles, surface_index + ) + if not is_finite(height): + return Vector3.INF + heights.append(height) + var minimum_height: float = heights.min() + var maximum_height: float = heights.max() + if maximum_height - minimum_height > EXTERIOR_MAX_SURFACE_HEIGHT_DELTA: + return Vector3.INF + return Vector3(position.x, maximum_height, position.z) + + +func _exterior_footprint_samples() -> Array[Vector2]: + var samples: Array[Vector2] = [] + for x_factor: float in [-1.0, -0.5, 0.0, 0.5, 1.0]: + for z_factor: float in [-1.0, 0.0, 1.0]: + samples.append(Vector2( + EXTERIOR_FOOTPRINT_HALF_EXTENTS.x * x_factor, + EXTERIOR_FOOTPRINT_HALF_EXTENTS.y * z_factor, + )) + return samples + + +func _build_surface_index( + triangles: Array[PackedVector3Array], +) -> Dictionary: + var result: Dictionary = {} + for triangle_index: int in triangles.size(): + var triangle: PackedVector3Array = triangles[triangle_index] + if triangle.size() != 3: + continue + var minimum_x: float = minf( + triangle[0].x, minf(triangle[1].x, triangle[2].x) + ) + var maximum_x: float = maxf( + triangle[0].x, maxf(triangle[1].x, triangle[2].x) + ) + var minimum_z: float = minf( + triangle[0].z, minf(triangle[1].z, triangle[2].z) + ) + var maximum_z: float = maxf( + triangle[0].z, maxf(triangle[1].z, triangle[2].z) + ) + var minimum_cell := Vector2i( + floori(minimum_x / EXTERIOR_SURFACE_INDEX_CELL_SIZE), + floori(minimum_z / EXTERIOR_SURFACE_INDEX_CELL_SIZE), + ) + var maximum_cell := Vector2i( + floori(maximum_x / EXTERIOR_SURFACE_INDEX_CELL_SIZE), + floori(maximum_z / EXTERIOR_SURFACE_INDEX_CELL_SIZE), + ) + for cell_x: int in range(minimum_cell.x, maximum_cell.x + 1): + for cell_y: int in range(minimum_cell.y, maximum_cell.y + 1): + var cell := Vector2i(cell_x, cell_y) + var bucket: Array = result.get(cell, []) + bucket.append(triangle_index) + result[cell] = bucket + return result + + +func _surface_height_at( + point: Vector2, + preferred_height: float, + triangles: Array[PackedVector3Array], + surface_index: Dictionary, +) -> float: + var cell := Vector2i( + floori(point.x / EXTERIOR_SURFACE_INDEX_CELL_SIZE), + floori(point.y / EXTERIOR_SURFACE_INDEX_CELL_SIZE), + ) + var best_height: float = INF + var best_delta: float = INF + for value: Variant in surface_index.get(cell, []): + var triangle: PackedVector3Array = triangles[int(value)] + var height: float = _triangle_height_at(point, triangle) + if not is_finite(height): + continue + var delta: float = absf(height - preferred_height) + if delta < best_delta: + best_delta = delta + best_height = height + return best_height + + +func _triangle_height_at( + point: Vector2, + triangle: PackedVector3Array, +) -> float: + var a := Vector2(triangle[0].x, triangle[0].z) + var b := Vector2(triangle[1].x, triangle[1].z) + var c := Vector2(triangle[2].x, triangle[2].z) + var denominator: float = ( + (b.y - c.y) * (a.x - c.x) + + (c.x - b.x) * (a.y - c.y) + ) + if absf(denominator) <= 0.000001: + return INF + var weight_a: float = ( + (b.y - c.y) * (point.x - c.x) + + (c.x - b.x) * (point.y - c.y) + ) / denominator + var weight_b: float = ( + (c.y - a.y) * (point.x - c.x) + + (a.x - c.x) * (point.y - c.y) + ) / denominator + var weight_c: float = 1.0 - weight_a - weight_b + const EDGE_EPSILON: float = 0.001 + if ( + weight_a < -EDGE_EPSILON + or weight_b < -EDGE_EPSILON + or weight_c < -EDGE_EPSILON + ): + return INF + return ( + weight_a * triangle[0].y + + weight_b * triangle[1].y + + weight_c * triangle[2].y + ) + + +func _exterior_volume_is_clear(position: Vector3, yaw: float) -> bool: + if not is_inside_tree() or get_world_3d() == null: + return true + var shape := BoxShape3D.new() + shape.size = Vector3( + EXTERIOR_FOOTPRINT_HALF_EXTENTS.x * 2.0, + EXTERIOR_CLEARANCE_HEIGHT, + EXTERIOR_FOOTPRINT_HALF_EXTENTS.y * 2.0, + ) + var query := PhysicsShapeQueryParameters3D.new() + query.shape = shape + query.transform = Transform3D( + Basis(Vector3.UP, yaw), + position + Vector3.UP * (EXTERIOR_CLEARANCE_HEIGHT * 0.5 + 0.2), + ) + query.collision_mask = 1 + query.collide_with_areas = false + query.collide_with_bodies = true + return get_world_3d().direct_space_state.intersect_shape(query, 1).is_empty() + + +func _coprime_step(value: int, preferred_step: int) -> int: + var step: int = mini(preferred_step, maxi(value - 1, 1)) + while step > 1 and _greatest_common_divisor(step, value) != 1: + step -= 1 + return step + + +func _greatest_common_divisor(first: int, second: int) -> int: + var a: int = absi(first) + var b: int = absi(second) + while b != 0: + var remainder: int = a % b + a = b + b = remainder + return a + + +func get_exterior_transform(owner_fingerprint: String) -> Transform3D: + var presentation: Dictionary = _presentations_by_fingerprint.get( + owner_fingerprint, {} + ) + return presentation.get("exterior_transform", Transform3D.IDENTITY) + + +func get_exterior_prompt_position(owner_fingerprint: String) -> Vector3: + return get_exterior_transform(owner_fingerprint) * EXTERIOR_DOOR_LOCAL + + +func get_exterior_spawn_transform(owner_fingerprint: String) -> Transform3D: + var exterior_transform: Transform3D = get_exterior_transform( + owner_fingerprint + ) + return Transform3D( + exterior_transform.basis, + exterior_transform * EXTERIOR_SPAWN_LOCAL, + ) + + +func get_interior_spawn_transform( + owner_fingerprint: String, + visitor_offset: int = 0, +) -> Transform3D: + var anchor: Vector3 = get_interior_anchor(owner_fingerprint) + var result := Transform3D(Basis.IDENTITY, anchor) + result.origin += Vector3( + -1.0 + float(posmod(visitor_offset, 4)) * 0.65, + 0.25, + 0.4 + float(floori(float(visitor_offset) / 4.0)) * 0.55, + ) + return result + + +func get_interior_anchor(owner_fingerprint: String) -> Vector3: + var presentation: Dictionary = _presentations_by_fingerprint.get( + owner_fingerprint, {} + ) + var index: int = int(presentation.get("interior_index", 0)) + return INTERIOR_ORIGIN + Vector3(float(index) * INTERIOR_SPACING, 0.0, 0.0) + + +func is_avatar_near_exterior(avatar: Player, owner_fingerprint: String) -> bool: + if avatar == null or not _presentations_by_fingerprint.has(owner_fingerprint): + return false + var transform: Transform3D = get_exterior_transform(owner_fingerprint) + var door_position: Vector3 = transform * EXTERIOR_DOOR_LOCAL + return avatar.global_position.distance_to(door_position) <= ( + EXTERIOR_INTERACTION_DISTANCE + ) + + +func is_avatar_near_interior_exit( + avatar: Player, + owner_fingerprint: String, +) -> bool: + if avatar == null: + return false + return avatar.global_position.distance_to( + get_interior_exit_position(owner_fingerprint) + ) <= INTERIOR_EXIT_DISTANCE + + +func get_interior_exit_position(owner_fingerprint: String) -> Vector3: + return get_interior_anchor(owner_fingerprint) + Vector3( + -INTERIOR_FLOOR_SIZE.x * 0.5 + 0.6, + 0.35, + 0.0, + ) + + +func get_interior_prompt_position(owner_fingerprint: String) -> Vector3: + return get_interior_exit_position(owner_fingerprint) + Vector3.UP * 1.2 + + +func interior_local_to_global( + owner_fingerprint: String, + local_position: Vector3, +) -> Vector3: + return get_interior_anchor(owner_fingerprint) + local_position + + +func interior_global_to_local( + owner_fingerprint: String, + global_position: Vector3, +) -> Vector3: + return global_position - get_interior_anchor(owner_fingerprint) + + +func get_floor_position_from_screen( + owner_fingerprint: String, + camera: Camera3D, + screen_position: Vector2, +) -> Vector3: + if camera == null or owner_fingerprint.is_empty(): + return Vector3.INF + var ray_origin: Vector3 = camera.project_ray_origin(screen_position) + var ray_direction: Vector3 = camera.project_ray_normal(screen_position) + if absf(ray_direction.y) <= 0.0001: + return Vector3.INF + var floor_y: float = get_interior_anchor(owner_fingerprint).y + 0.1 + var distance: float = (floor_y - ray_origin.y) / ray_direction.y + if distance <= 0.0: + return Vector3.INF + return interior_global_to_local( + owner_fingerprint, + ray_origin + ray_direction * distance, + ) + + +func find_decor_instance_at_screen( + owner_fingerprint: String, + camera: Camera3D, + screen_position: Vector2, +) -> String: + if camera == null or owner_fingerprint.is_empty(): + return "" + var ray_origin: Vector3 = camera.project_ray_origin(screen_position) + var ray_end: Vector3 = ray_origin + camera.project_ray_normal( + screen_position + ) * 50.0 + var query := PhysicsRayQueryParameters3D.create(ray_origin, ray_end) + query.collision_mask = DECOR_SELECTION_COLLISION_LAYER + query.collide_with_areas = false + var result: Dictionary = camera.get_world_3d().direct_space_state.intersect_ray( + query + ) + var collider: Object = result.get("collider") + if collider is Node and (collider as Node).has_meta(&"decor_instance_id"): + if str((collider as Node).get_meta(&"decor_owner_fingerprint")) == ( + owner_fingerprint + ): + return str((collider as Node).get_meta(&"decor_instance_id")) + return "" + + +func get_decor_preview_transform( + owner_fingerprint: String, + instance_id: String, +) -> Dictionary: + var decor: Node3D = _get_decor_presentation( + owner_fingerprint, instance_id + ) + if decor == null: + return {} + return { + "position": Vector3(decor.position.x, 0.0, decor.position.z), + "yaw": decor.rotation.y, + } + + +func set_decor_preview_transform( + owner_fingerprint: String, + instance_id: String, + position: Vector3, + yaw_radians: float, +) -> bool: + var decor: Node3D = _get_decor_presentation( + owner_fingerprint, instance_id + ) + if decor == null or not position.is_finite() or not is_finite(yaw_radians): + return false + decor.position = Vector3(position.x, 0.18, position.z) + decor.rotation.y = yaw_radians + return true + + +func set_decor_manipulation_active( + owner_fingerprint: String, + instance_id: String, + active: bool, +) -> bool: + var decor: Node3D = _get_decor_presentation( + owner_fingerprint, instance_id + ) + if decor == null: + return false + var body: StaticBody3D = decor.get_node_or_null( + "BasicCubeCollision" + ) as StaticBody3D + if body == null: + return false + var key: String = _decor_collision_key( + owner_fingerprint, instance_id + ) + if active: + _decor_under_manipulation[key] = true + _pending_solid_decor.erase(key) + body.collision_layer = DECOR_SELECTION_COLLISION_LAYER + return true + _decor_under_manipulation.erase(key) + _queue_decor_world_collision( + owner_fingerprint, + instance_id, + StringName(str(decor.get_meta(&"decor_id", ""))), + body, + ) + return true + + +func is_decor_placement_clear_of_players( + owner_fingerprint: String, + decor_id: StringName, + local_position: Vector3, + yaw_radians: float, +) -> bool: + if ( + owner_fingerprint.is_empty() + or not DecorCatalogType.has_product(decor_id) + or not local_position.is_finite() + or not is_finite(yaw_radians) + ): + return false + if _spawn_service == null: + return true + var global_center: Vector3 = interior_local_to_global( + owner_fingerprint, local_position + ) + var half_size: Vector2 = DecorCatalogType.get_footprint(decor_id) * 0.5 + for peer_id: int in _spawn_service.get_peer_ids(): + var avatar: Player = _spawn_service.get_avatar(peer_id) + if avatar == null or not is_instance_valid(avatar): + continue + var offset := Vector2( + avatar.global_position.x - global_center.x, + avatar.global_position.z - global_center.z, + ).rotated(-yaw_radians) + var nearest := Vector2( + clampf(offset.x, -half_size.x, half_size.x), + clampf(offset.y, -half_size.y, half_size.y), + ) + if offset.distance_squared_to(nearest) < ( + PLAYER_DECOR_CLEARANCE_RADIUS + * PLAYER_DECOR_CLEARANCE_RADIUS + ): + return false + return true + + +func _get_decor_presentation( + owner_fingerprint: String, + instance_id: String, +) -> Node3D: + if owner_fingerprint.is_empty() or instance_id.is_empty(): + return null + var presentation: Dictionary = _presentations_by_fingerprint.get( + owner_fingerprint, {} + ) + var interior: Node3D = presentation.get("interior") + if not is_instance_valid(interior): + return null + return interior.get_node_or_null( + "Decor/%s" % instance_id + ) as Node3D + + +func find_nearby_exterior_owner(avatar: Player) -> String: + if avatar == null: + return "" + var closest: String = "" + var closest_distance: float = EXTERIOR_INTERACTION_DISTANCE + for fingerprint: String in _presentations_by_fingerprint: + var transform: Transform3D = get_exterior_transform(fingerprint) + var distance: float = avatar.global_position.distance_to( + transform * EXTERIOR_DOOR_LOCAL + ) + if distance <= closest_distance: + closest = fingerprint + closest_distance = distance + return closest + + +func set_local_space(space_id: StringName) -> void: + _local_space = space_id + _refresh_local_visibility() + + +func get_manifest(owner_fingerprint: String) -> Dictionary: + var presentation: Dictionary = _presentations_by_fingerprint.get( + owner_fingerprint, {} + ) + return (presentation.get("home", {}) as Dictionary).duplicate(true) + + +func _process(_delta: float) -> void: + _refresh_pending_decor_collisions() + if not _dedicated_runtime: + _refresh_nearest_wall() + + +func _queue_decor_world_collision( + owner_fingerprint: String, + instance_id: String, + decor_id: StringName, + body: StaticBody3D, +) -> void: + if ( + owner_fingerprint.is_empty() + or instance_id.is_empty() + or not DecorCatalogType.has_product(decor_id) + or body == null + ): + return + var key: String = _decor_collision_key( + owner_fingerprint, instance_id + ) + body.collision_layer = DECOR_SELECTION_COLLISION_LAYER + _pending_solid_decor[key] = { + "owner_fingerprint": owner_fingerprint, + "instance_id": instance_id, + "decor_id": decor_id, + "body": body, + } + + +func _refresh_pending_decor_collisions() -> void: + if _pending_solid_decor.is_empty(): + return + var keys: Array[String] = [] + keys.assign(_pending_solid_decor.keys()) + for key: String in keys: + if _decor_under_manipulation.has(key): + continue + var pending: Dictionary = _pending_solid_decor.get(key, {}) + var body: StaticBody3D = pending.get("body") as StaticBody3D + var owner_fingerprint: String = str( + pending.get("owner_fingerprint", "") + ) + var instance_id: String = str(pending.get("instance_id", "")) + var decor_id := StringName(str(pending.get("decor_id", ""))) + var decor: Node3D = _get_decor_presentation( + owner_fingerprint, instance_id + ) + if body == null or decor == null or not is_instance_valid(body): + _pending_solid_decor.erase(key) + continue + if not is_decor_placement_clear_of_players( + owner_fingerprint, + decor_id, + Vector3(decor.position.x, 0.0, decor.position.z), + decor.rotation.y, + ): + continue + body.collision_layer = ( + WORLD_GEOMETRY_COLLISION_LAYER + | DECOR_SELECTION_COLLISION_LAYER + ) + _pending_solid_decor.erase(key) + + +func _clear_decor_collision_tracking(owner_fingerprint: String) -> void: + var prefix: String = "%s/" % owner_fingerprint + for key: String in _decor_under_manipulation.keys(): + if key.begins_with(prefix): + _decor_under_manipulation.erase(key) + for key: String in _pending_solid_decor.keys(): + if key.begins_with(prefix): + _pending_solid_decor.erase(key) + + +static func _decor_collision_key( + owner_fingerprint: String, + instance_id: String, +) -> String: + return "%s/%s" % [owner_fingerprint, instance_id] + + +func _ensure_roots() -> void: + if not is_instance_valid(_exteriors_root): + _exteriors_root = Node3D.new() + _exteriors_root.name = "RVExteriors" + add_child(_exteriors_root) + if not is_instance_valid(_interiors_root): + _interiors_root = Node3D.new() + _interiors_root.name = "RVInteriors" + add_child(_interiors_root) + + +func _build_exterior( + fingerprint: String, + world_transform: Transform3D, +) -> Node3D: + var root := Node3D.new() + root.name = "RV_%s" % fingerprint.left(8) + _exteriors_root.add_child(root) + root.global_transform = world_transform + _add_box( + root, "Body", EXTERIOR_BODY_SIZE, Vector3(0.0, 1.35, 0.0), + Color("d8d2bd"), true, + ) + root.visible = not _dedicated_runtime + return root + + +func _build_interior( + fingerprint: String, + interior_index: int, + home_data: Dictionary, +) -> Node3D: + var root := Node3D.new() + root.name = "RVInterior_%s" % fingerprint.left(8) + root.position = INTERIOR_ORIGIN + Vector3( + float(interior_index) * INTERIOR_SPACING, 0.0, 0.0 + ) + var half_width: float = INTERIOR_FLOOR_SIZE.x * 0.5 + var half_depth: float = INTERIOR_FLOOR_SIZE.z * 0.5 + var wall_center_y: float = INTERIOR_WALL_HEIGHT * 0.5 + _interiors_root.add_child(root) + _add_box( + root, "Floor", INTERIOR_FLOOR_SIZE, Vector3.ZERO, + Color("a6754e"), true, + ) + _add_wall( + root, "WallNorth", + Vector3(INTERIOR_FLOOR_SIZE.x, INTERIOR_WALL_HEIGHT, 0.18), + Vector3(0.0, wall_center_y, -half_depth), + ) + _add_wall( + root, "WallSouth", + Vector3(INTERIOR_FLOOR_SIZE.x, INTERIOR_WALL_HEIGHT, 0.18), + Vector3(0.0, wall_center_y, half_depth), + ) + _add_wall( + root, "WallWest", + Vector3(0.18, INTERIOR_WALL_HEIGHT, INTERIOR_FLOOR_SIZE.z), + Vector3(-half_width, wall_center_y, 0.0), + ) + _add_wall( + root, "WallEast", + Vector3(0.18, INTERIOR_WALL_HEIGHT, INTERIOR_FLOOR_SIZE.z), + Vector3(half_width, wall_center_y, 0.0), + ) + for x_position: float in [-1.75, 1.75]: + _add_box( + root, "WallNorthWindow%s" % ("Left" if x_position < 0.0 else "Right"), + Vector3(1.65, 0.95, 0.04), + Vector3(x_position, 1.55, -half_depth + 0.11), + Color("153640"), false, + ) + _add_box( + root, "WallSouthWindow%s" % ("Left" if x_position < 0.0 else "Right"), + Vector3(1.65, 0.95, 0.04), + Vector3(x_position, 1.55, half_depth - 0.11), + Color("153640"), false, + ) + _add_box( + root, "WallEastWindow", Vector3(0.04, 0.95, 1.55), + Vector3(half_width - 0.11, 1.55, 0.0), Color("153640"), false, + ) + _add_box( + root, "WallWestDoor", Vector3(0.04, 1.9, 1.25), + Vector3(-half_width + 0.11, 1.0, 0.0), Color("2897a8"), false, + ) + var decor := Node3D.new() + decor.name = "Decor" + root.add_child(decor) + _rebuild_decor(decor, home_data, fingerprint) + root.visible = false + if _dedicated_runtime: + _set_geometry_visible(root, false) + return root + + +func _rebuild_decor( + parent: Node3D, + home_data: Dictionary, + owner_fingerprint: String, +) -> void: + for value: Variant in home_data.get("placements", []): + if typeof(value) != TYPE_DICTIONARY: + continue + var placement: Dictionary = value + var decor_id := StringName(str(placement["decor_id"])) + if decor_id != DecorCatalogType.BASIC_CUBE_ID: + continue + var position_values: Array = placement["position"] + var placement_root := Node3D.new() + placement_root.name = str(placement["instance_id"]) + placement_root.position = Vector3( + float(position_values[0]), 0.18, float(position_values[2]) + ) + placement_root.rotation.y = float(placement["yaw"]) + placement_root.set_meta( + &"decor_instance_id", str(placement["instance_id"]) + ) + placement_root.set_meta( + &"decor_owner_fingerprint", owner_fingerprint + ) + placement_root.set_meta(&"decor_id", String(decor_id)) + parent.add_child(placement_root) + var body := _add_box( + placement_root, "BasicCube", BASIC_CUBE_SIZE, + Vector3(0.0, BASIC_CUBE_SIZE.y * 0.5, 0.0), + Color("b77a55"), true, + ) + if body != null: + body.collision_layer = DECOR_SELECTION_COLLISION_LAYER + body.set_meta( + &"decor_instance_id", str(placement["instance_id"]) + ) + body.set_meta( + &"decor_owner_fingerprint", owner_fingerprint + ) + body.set_meta(&"decor_id", String(decor_id)) + _queue_decor_world_collision( + owner_fingerprint, + str(placement["instance_id"]), + decor_id, + body, + ) + _add_box( + placement_root, + "BasicCubeFront", + Vector3(BASIC_CUBE_SIZE.x * 0.82, BASIC_CUBE_SIZE.y * 0.68, 0.025), + Vector3( + 0.0, + BASIC_CUBE_SIZE.y * 0.5, + -BASIC_CUBE_SIZE.z * 0.5 - 0.013, + ), + Color("2897a8"), + false, + ) + + +func _add_wall( + parent: Node3D, + node_name: String, + size: Vector3, + position: Vector3, +) -> void: + _add_box(parent, node_name, size, position, Color("d6caaa"), true) + + +func _add_box( + parent: Node3D, + node_name: String, + size: Vector3, + position: Vector3, + color: Color, + with_collision: bool, + invert_faces: bool = false, +) -> StaticBody3D: + var mesh_instance := MeshInstance3D.new() + mesh_instance.name = node_name + var mesh := BoxMesh.new() + mesh.size = size + mesh.material = _material(color) + if invert_faces: + mesh.flip_faces = true + mesh_instance.mesh = mesh + mesh_instance.position = position + parent.add_child(mesh_instance) + if with_collision: + var body := StaticBody3D.new() + body.name = "%sCollision" % node_name + body.position = position + var collision := CollisionShape3D.new() + var shape := BoxShape3D.new() + shape.size = size + collision.shape = shape + body.add_child(collision) + parent.add_child(body) + return body + return null + + +func _spawn_decor_poof( + owner_fingerprint: String, + instance_id: String, +) -> void: + var presentation: Dictionary = _presentations_by_fingerprint.get( + owner_fingerprint, {} + ) + var interior: Node3D = presentation.get("interior") + if not is_instance_valid(interior): + return + var placement_root: Node3D = interior.get_node_or_null( + "Decor/%s" % instance_id + ) + if placement_root == null: + return + var poof := CPUParticles3D.new() + poof.name = "DecorPoof" + poof.amount = 12 + poof.lifetime = 0.45 + poof.one_shot = true + poof.explosiveness = 0.9 + poof.direction = Vector3.UP + poof.spread = 80.0 + poof.initial_velocity_min = 0.7 + poof.initial_velocity_max = 1.5 + poof.scale_amount_min = 0.08 + poof.scale_amount_max = 0.16 + var particle_mesh := SphereMesh.new() + particle_mesh.radius = 0.06 + particle_mesh.height = 0.12 + particle_mesh.material = _material(Color("d9c5a3")) + poof.mesh = particle_mesh + placement_root.add_child(poof) + poof.emitting = true + get_tree().create_timer(poof.lifetime + 0.1).timeout.connect( + poof.queue_free + ) + + +func _material(color: Color) -> StandardMaterial3D: + var material := StandardMaterial3D.new() + material.albedo_color = color + material.roughness = 1.0 + material.shading_mode = BaseMaterial3D.SHADING_MODE_PER_VERTEX + return material + + +func _free_presentation_nodes(presentation: Dictionary) -> void: + for key: String in ["exterior", "interior"]: + var node: Node = presentation.get(key) + if is_instance_valid(node): + node.queue_free() + + +func _refresh_local_visibility() -> void: + var active_fingerprint: String = "" + if String(_local_space).begins_with("rv:"): + active_fingerprint = String(_local_space).trim_prefix("rv:") + if _world != null: + _world.set_local_home_interior_presentation_active( + not active_fingerprint.is_empty() + ) + for fingerprint: String in _presentations_by_fingerprint: + var presentation: Dictionary = _presentations_by_fingerprint[fingerprint] + var interior: Node3D = presentation.get("interior") + if is_instance_valid(interior): + interior.visible = ( + not _dedicated_runtime and fingerprint == active_fingerprint + ) + var exterior: Node3D = presentation.get("exterior") + if is_instance_valid(exterior): + exterior.visible = ( + not _dedicated_runtime and active_fingerprint.is_empty() + ) + var local_player: Player = ( + _spawn_service.get_local_player() + if _spawn_service != null else null + ) + if local_player == null: + return + var excluded_wall_rids: Array[RID] = [] + if not active_fingerprint.is_empty(): + var active: Dictionary = _presentations_by_fingerprint.get( + active_fingerprint, {} + ) + var active_interior: Node3D = active.get("interior") + if is_instance_valid(active_interior): + for wall_name: String in [ + "WallNorth", "WallSouth", "WallWest", "WallEast", + ]: + var body: StaticBody3D = active_interior.get_node_or_null( + "%sCollision" % wall_name + ) + if body != null: + excluded_wall_rids.append(body.get_rid()) + local_player.set_rv_interior_camera_mode( + not active_fingerprint.is_empty(), excluded_wall_rids + ) + + +func _refresh_nearest_wall() -> void: + if not String(_local_space).begins_with("rv:") or _spawn_service == null: + return + var fingerprint: String = String(_local_space).trim_prefix("rv:") + var presentation: Dictionary = _presentations_by_fingerprint.get( + fingerprint, {} + ) + var interior: Node3D = presentation.get("interior") + var player: Player = _spawn_service.get_local_player() + if not is_instance_valid(interior) or player == null: + return + var camera: Camera3D = player.get_active_gameplay_camera() + if camera == null: + return + var local_camera: Vector3 = interior.to_local(camera.global_position) + var local_view_direction: Vector3 = ( + interior.global_basis.inverse() * -camera.global_basis.z + ).normalized() + var horizontal_view_weight: float = absf(local_view_direction.x) + var depth_view_weight: float = absf(local_view_direction.z) + var hidden_walls: Dictionary[String, bool] = {} + var outside_horizontal_wall: bool = ( + absf(local_camera.x) >= INTERIOR_FLOOR_SIZE.x * 0.5 - 0.05 + ) + var outside_depth_wall: bool = ( + absf(local_camera.z) >= INTERIOR_FLOOR_SIZE.z * 0.5 - 0.05 + ) + # At a diagonal, both near walls occupy the view. Use the camera's viewing + # direction to hide both instead of choosing only the dominant position + # axis and leaving the adjacent wall across the screen. + if ( + outside_horizontal_wall + and horizontal_view_weight >= depth_view_weight * 0.35 + ): + hidden_walls[ + "WallEast" if local_camera.x >= 0.0 else "WallWest" + ] = true + if ( + outside_depth_wall + and depth_view_weight >= horizontal_view_weight * 0.35 + ): + hidden_walls[ + "WallSouth" if local_camera.z >= 0.0 else "WallNorth" + ] = true + if hidden_walls.is_empty(): + var fallback_wall: String = ( + "WallEast" if local_camera.x >= 0.0 else "WallWest" + ) + if depth_view_weight > horizontal_view_weight: + fallback_wall = ( + "WallSouth" if local_camera.z >= 0.0 else "WallNorth" + ) + hidden_walls[fallback_wall] = true + for wall_name: String in [ + "WallNorth", "WallSouth", "WallWest", "WallEast", + ]: + var wall: MeshInstance3D = interior.get_node_or_null(wall_name) + if wall != null: + wall.visible = not hidden_walls.has(wall_name) + for child: Node in interior.get_children(): + if ( + child is GeometryInstance3D + and String(child.name).begins_with(wall_name) + ): + (child as GeometryInstance3D).visible = ( + not hidden_walls.has(wall_name) + ) + + +func _too_close_to_reserved( + position: Vector3, + reserved_transforms: Array[Transform3D], +) -> bool: + for transform: Transform3D in reserved_transforms: + if position.distance_to(transform.origin) < MIN_EXTERIOR_SEPARATION: + return true + return false + + +func _set_geometry_visible(root: Node, visible: bool) -> void: + for node: Node in root.find_children("*", "GeometryInstance3D", true, false): + (node as GeometryInstance3D).visible = visible diff --git a/homes/home_world_service.gd.uid b/homes/home_world_service.gd.uid new file mode 100644 index 0000000..5505d06 --- /dev/null +++ b/homes/home_world_service.gd.uid @@ -0,0 +1 @@ +uid://cy2kjoxhwxujd diff --git a/homes/player_home_state.gd b/homes/player_home_state.gd new file mode 100644 index 0000000..decd34a --- /dev/null +++ b/homes/player_home_state.gd @@ -0,0 +1,786 @@ +class_name PlayerHomeState +extends Node + +signal changed + +const DecorCatalogType = preload("res://homes/decor_catalog.gd") + +const HOME_SCHEMA_VERSION: int = 1 +const STARTER_TIER: int = 0 +const STARTER_EXTERIOR_ID: StringName = &"starter_motorcoach" +const MAX_TIER: int = 8 +const MAX_PLACEMENTS: int = 128 +const MAX_INSTANCE_ID_LENGTH: int = 96 +const MAX_REVISION: int = 2147483647 +const GRID_SIZE: float = 0.5 +const FREE_PLACEMENT_SEARCH_STEP: float = 0.1 +const FREE_PLACEMENT_SEARCH_ANGLES: int = 24 +const NEAREST_PLACEMENT_SEARCH_DISTANCE: float = 2.0 +# The starter RV is intentionally cramped. Later RV tiers can replace these +# bounds with larger layouts when tiered interiors are introduced. +# The starter interior is 8.0 m by 4.5 m with 0.18 m walls. These bounds +# follow the walls' inner faces, with a small visual gap to avoid z-fighting. +const INTERIOR_HALF_EXTENTS := Vector2(3.91, 2.16) +const PLACEMENT_EDGE_PADDING: float = 0.02 + +enum Privacy { + OPEN, + CLOSED, +} + +enum PlacementMode { + GRID, + FREE, +} + +var _tier: int = STARTER_TIER +var _exterior_id: StringName = STARTER_EXTERIOR_ID +var _privacy: Privacy = Privacy.OPEN +var _owned_decor: Dictionary[StringName, int] = {} +var _placements: Array[Dictionary] = [] +var _revision: int = 0 +var _next_instance_sequence: int = 1 + + +func get_tier() -> int: + return _tier + + +func get_exterior_id() -> StringName: + return _exterior_id + + +func get_privacy() -> Privacy: + return _privacy + + +func get_revision() -> int: + return _revision + + +func get_owned_count(decor_id: StringName) -> int: + return int(_owned_decor.get(decor_id, 0)) + + +func get_placed_count(decor_id: StringName) -> int: + var count: int = 0 + for placement: Dictionary in _placements: + if StringName(str(placement.get("decor_id", ""))) == decor_id: + count += 1 + return count + + +func get_available_count(decor_id: StringName) -> int: + return maxi( + get_owned_count(decor_id) - get_placed_count(decor_id), + 0, + ) + + +func get_owned_decor() -> Dictionary[StringName, int]: + return _owned_decor.duplicate() + + +func get_placements() -> Array[Dictionary]: + var result: Array[Dictionary] = [] + for placement: Dictionary in _placements: + result.append(placement.duplicate(true)) + return result + + +func get_placement(instance_id: String) -> Dictionary: + var index: int = _placement_index(instance_id) + return _placements[index].duplicate(true) if index >= 0 else {} + + +func can_place_decor( + decor_id: StringName, + position: Vector3, + yaw_radians: float, + mode: PlacementMode, +) -> bool: + if ( + get_available_count(decor_id) <= 0 + or _placements.size() >= MAX_PLACEMENTS + or not _valid_mode(mode) + ): + return false + return not get_nearest_valid_placement_transform( + decor_id, + position, + yaw_radians, + mode, + "", + ).is_empty() + + +func set_privacy(value: Privacy) -> bool: + if value < Privacy.OPEN or value > Privacy.CLOSED: + return false + if _privacy == value: + return true + _privacy = value + _touch() + return true + + +func add_owned_decor( + decor_id: StringName, + quantity: int = 1, +) -> bool: + if ( + not DecorCatalogType.has_product(decor_id) + or quantity <= 0 + ): + return false + var current: int = get_owned_count(decor_id) + if current + quantity > DecorCatalogType.MAX_OWNED_PER_PRODUCT: + return false + _owned_decor[decor_id] = current + quantity + _touch() + return true + + +func remove_owned_decor( + decor_id: StringName, + quantity: int = 1, +) -> bool: + if quantity <= 0: + return false + var current: int = get_owned_count(decor_id) + if current - quantity < get_placed_count(decor_id): + return false + var remaining: int = current - quantity + if remaining < 0: + return false + if remaining == 0: + _owned_decor.erase(decor_id) + else: + _owned_decor[decor_id] = remaining + _touch() + return true + + +func place_decor( + decor_id: StringName, + position: Vector3, + yaw_radians: float, + mode: PlacementMode, +) -> String: + if ( + get_available_count(decor_id) <= 0 + or _placements.size() >= MAX_PLACEMENTS + or not _valid_mode(mode) + ): + return "" + var normalized := get_nearest_valid_placement_transform( + decor_id, + position, + yaw_radians, + mode, + "", + ) + if normalized.is_empty(): + return "" + var instance_id := _make_instance_id() + var placement: Dictionary = { + "instance_id": instance_id, + "decor_id": String(decor_id), + "mode": int(mode), + "position": _vector3_to_array(normalized["position"]), + "yaw": float(normalized["yaw"]), + } + _placements.append(placement) + _touch() + return instance_id + + +func update_placement( + instance_id: String, + position: Vector3, + yaw_radians: float, + mode: PlacementMode, +) -> bool: + var index: int = _placement_index(instance_id) + var normalized: Dictionary = get_valid_update_transform( + instance_id, position, yaw_radians, mode + ) + if index < 0 or normalized.is_empty(): + return false + var placement: Dictionary = _placements[index].duplicate(true) + placement["mode"] = int(mode) + placement["position"] = _vector3_to_array(normalized["position"]) + placement["yaw"] = float(normalized["yaw"]) + _placements[index] = placement + _touch() + return true + + +func get_valid_update_transform( + instance_id: String, + position: Vector3, + yaw_radians: float, + mode: PlacementMode, + candidate_validator: Callable = Callable(), +) -> Dictionary: + var index: int = _placement_index(instance_id) + if index < 0 or not _valid_mode(mode): + return {} + var decor_id := StringName( + str(_placements[index].get("decor_id", "")) + ) + return get_nearest_valid_placement_transform( + decor_id, + position, + yaw_radians, + mode, + instance_id, + candidate_validator, + ) + + +func get_nearest_valid_placement_transform( + decor_id: StringName, + position: Vector3, + yaw_radians: float, + mode: PlacementMode, + ignored_instance_id: String = "", + candidate_validator: Callable = Callable(), +) -> Dictionary: + var normalized: Dictionary = normalized_placement_transform( + decor_id, position, yaw_radians, mode + ) + if normalized.is_empty(): + return {} + if ( + not _overlaps_existing( + decor_id, normalized, ignored_instance_id + ) + and _candidate_is_accepted(normalized, candidate_validator) + ): + return normalized + return ( + _find_nearest_grid_transform( + decor_id, + normalized, + ignored_instance_id, + candidate_validator, + ) + if mode == PlacementMode.GRID + else _find_nearest_free_transform( + decor_id, + normalized, + ignored_instance_id, + candidate_validator, + ) + ) + + +func remove_placement(instance_id: String) -> bool: + var index: int = _placement_index(instance_id) + if index < 0: + return false + _placements.remove_at(index) + _touch() + return true + + +func reset_to_defaults() -> void: + _tier = STARTER_TIER + _exterior_id = STARTER_EXTERIOR_ID + _privacy = Privacy.OPEN + _owned_decor.clear() + _placements.clear() + _revision = 0 + _next_instance_sequence = 1 + changed.emit() + + +func to_save_data() -> Dictionary: + var owned: Dictionary = {} + var ids: Array[StringName] = [] + ids.assign(_owned_decor.keys()) + ids.sort_custom(func(first: StringName, second: StringName) -> bool: + return String(first) < String(second) + ) + for decor_id: StringName in ids: + owned[String(decor_id)] = _owned_decor[decor_id] + return { + "schema_version": HOME_SCHEMA_VERSION, + "tier": _tier, + "exterior_id": String(_exterior_id), + "privacy": int(_privacy), + "owned_decor": owned, + "placements": get_placements(), + "revision": _revision, + "next_instance_sequence": _next_instance_sequence, + } + + +func restore_from_save_data(data: Dictionary) -> bool: + var sanitized: Dictionary = sanitize_save_data(data) + if sanitized.is_empty(): + return false + _tier = int(sanitized["tier"]) + _exterior_id = StringName(str(sanitized["exterior_id"])) + _privacy = int(sanitized["privacy"]) + _owned_decor.clear() + for key: Variant in (sanitized["owned_decor"] as Dictionary): + _owned_decor[StringName(str(key))] = int( + (sanitized["owned_decor"] as Dictionary)[key] + ) + _placements.clear() + for value: Variant in sanitized["placements"] as Array: + _placements.append((value as Dictionary).duplicate(true)) + _revision = int(sanitized["revision"]) + _next_instance_sequence = int(sanitized["next_instance_sequence"]) + changed.emit() + return true + + +static func default_save_data() -> Dictionary: + return { + "schema_version": HOME_SCHEMA_VERSION, + "tier": STARTER_TIER, + "exterior_id": String(STARTER_EXTERIOR_ID), + "privacy": int(Privacy.OPEN), + "owned_decor": {}, + "placements": [], + "revision": 0, + "next_instance_sequence": 1, + } + + +static func sanitize_save_data(data: Dictionary) -> Dictionary: + if ( + not _is_integer_value(data.get("schema_version")) + or int(data.get("schema_version", -1)) != HOME_SCHEMA_VERSION + or not _is_integer_value(data.get("tier")) + or typeof(data.get("exterior_id")) not in [ + TYPE_STRING, TYPE_STRING_NAME, + ] + or not _is_integer_value(data.get("privacy")) + or typeof(data.get("owned_decor")) != TYPE_DICTIONARY + or typeof(data.get("placements")) != TYPE_ARRAY + or not _is_integer_value(data.get("revision")) + or not _is_integer_value(data.get("next_instance_sequence")) + ): + return {} + var tier: int = int(data["tier"]) + var exterior_id: String = str(data["exterior_id"]) + var privacy: int = int(data["privacy"]) + var revision: int = int(data["revision"]) + var next_sequence: int = int(data["next_instance_sequence"]) + if ( + tier < STARTER_TIER + or tier > MAX_TIER + or exterior_id.is_empty() + or exterior_id.length() > 96 + or privacy < Privacy.OPEN + or privacy > Privacy.CLOSED + or revision < 0 + or revision > MAX_REVISION + or next_sequence < 1 + or next_sequence > MAX_REVISION + ): + return {} + var sanitized_owned: Dictionary = {} + var owned: Dictionary = data["owned_decor"] + for key: Variant in owned: + if typeof(key) not in [TYPE_STRING, TYPE_STRING_NAME]: + return {} + var decor_id := StringName(str(key)) + var quantity_value: Variant = owned[key] + if ( + not DecorCatalogType.has_product(decor_id) + or not _is_integer_value(quantity_value) + or int(quantity_value) <= 0 + or int(quantity_value) > DecorCatalogType.MAX_OWNED_PER_PRODUCT + ): + return {} + sanitized_owned[String(decor_id)] = int(quantity_value) + var values: Array = data["placements"] + if values.size() > MAX_PLACEMENTS: + return {} + var sanitized_placements: Array[Dictionary] = [] + var seen_instance_ids: Dictionary[String, bool] = {} + var placed_counts: Dictionary[StringName, int] = {} + for value: Variant in values: + if typeof(value) != TYPE_DICTIONARY: + return {} + var sanitized: Dictionary = sanitize_placement(value) + if sanitized.is_empty(): + return {} + var instance_id: String = str(sanitized["instance_id"]) + var decor_id := StringName(str(sanitized["decor_id"])) + if seen_instance_ids.has(instance_id): + return {} + seen_instance_ids[instance_id] = true + placed_counts[decor_id] = int( + placed_counts.get(decor_id, 0) + ) + 1 + if ( + int(placed_counts[decor_id]) + > int(sanitized_owned.get(String(decor_id), 0)) + ): + return {} + for previous: Dictionary in sanitized_placements: + if placements_overlap(previous, sanitized): + return {} + sanitized_placements.append(sanitized) + return { + "schema_version": HOME_SCHEMA_VERSION, + "tier": tier, + "exterior_id": exterior_id, + "privacy": privacy, + "owned_decor": sanitized_owned, + "placements": sanitized_placements, + "revision": revision, + "next_instance_sequence": next_sequence, + } + + +static func sanitize_placement(value: Dictionary) -> Dictionary: + for key: String in [ + "instance_id", "decor_id", "mode", "position", "yaw", + ]: + if not value.has(key): + return {} + if ( + typeof(value["instance_id"]) != TYPE_STRING + or typeof(value["decor_id"]) not in [ + TYPE_STRING, TYPE_STRING_NAME, + ] + or not _is_integer_value(value["mode"]) + or typeof(value["position"]) != TYPE_ARRAY + or typeof(value["yaw"]) not in [TYPE_FLOAT, TYPE_INT] + ): + return {} + var instance_id: String = value["instance_id"] + var decor_id := StringName(str(value["decor_id"])) + var mode: int = int(value["mode"]) + var position_values: Array = value["position"] + var yaw: float = float(value["yaw"]) + if ( + instance_id.is_empty() + or instance_id.length() > MAX_INSTANCE_ID_LENGTH + or not DecorCatalogType.has_product(decor_id) + or not _valid_mode(mode) + or position_values.size() != 3 + or not is_finite(yaw) + ): + return {} + for component: Variant in position_values: + if typeof(component) not in [TYPE_FLOAT, TYPE_INT]: + return {} + var position := Vector3( + float(position_values[0]), + float(position_values[1]), + float(position_values[2]), + ) + var normalized := normalized_placement_transform( + decor_id, + position, + yaw, + mode as PlacementMode, + ) + if normalized.is_empty(): + return {} + return { + "instance_id": instance_id, + "decor_id": String(decor_id), + "mode": mode, + "position": _vector3_to_array(normalized["position"]), + "yaw": float(normalized["yaw"]), + } + + +static func _is_integer_value(value: Variant) -> bool: + if typeof(value) == TYPE_INT: + return true + if typeof(value) != TYPE_FLOAT: + return false + var number: float = float(value) + return is_finite(number) and is_equal_approx(number, roundf(number)) + + +static func normalized_placement_transform( + decor_id: StringName, + position: Vector3, + yaw_radians: float, + mode: PlacementMode, +) -> Dictionary: + if ( + not DecorCatalogType.has_product(decor_id) + or not position.is_finite() + or not is_finite(yaw_radians) + or not _valid_mode(mode) + ): + return {} + var normalized_position := Vector3(position.x, 0.0, position.z) + var normalized_yaw: float = wrapf(yaw_radians, -PI, PI) + if mode == PlacementMode.GRID: + normalized_position.x = snappedf(normalized_position.x, GRID_SIZE) + normalized_position.z = snappedf(normalized_position.z, GRID_SIZE) + normalized_yaw = snappedf(normalized_yaw, PI * 0.5) + var footprint: Vector2 = DecorCatalogType.get_footprint(decor_id) + var cosine: float = absf(cos(normalized_yaw)) + var sine: float = absf(sin(normalized_yaw)) + var half_size := Vector2( + (footprint.x * cosine + footprint.y * sine) * 0.5, + (footprint.x * sine + footprint.y * cosine) * 0.5, + ) + var maximum_x: float = ( + INTERIOR_HALF_EXTENTS.x - half_size.x - PLACEMENT_EDGE_PADDING + ) + var maximum_z: float = ( + INTERIOR_HALF_EXTENTS.y - half_size.y - PLACEMENT_EDGE_PADDING + ) + if maximum_x < 0.0 or maximum_z < 0.0: + return {} + # Clamp after grid snapping so a grid-placed item can still sit flush at a + # wall even when the wall itself is not on an exact grid interval. + normalized_position.x = clampf( + normalized_position.x, -maximum_x, maximum_x + ) + normalized_position.z = clampf( + normalized_position.z, -maximum_z, maximum_z + ) + return { + "position": normalized_position, + "yaw": normalized_yaw, + } + + +func _find_nearest_grid_transform( + decor_id: StringName, + origin: Dictionary, + ignored_instance_id: String, + candidate_validator: Callable, +) -> Dictionary: + var origin_position: Vector3 = origin["position"] + var yaw: float = float(origin["yaw"]) + var maximum_ring: int = ceili( + NEAREST_PLACEMENT_SEARCH_DISTANCE / GRID_SIZE + ) + var seen: Dictionary[String, bool] = {} + for ring: int in range(1, maximum_ring + 1): + var nearest: Dictionary = {} + var nearest_distance_squared: float = INF + for x_offset: int in range(-ring, ring + 1): + for z_offset: int in range(-ring, ring + 1): + if maxi(absi(x_offset), absi(z_offset)) != ring: + continue + var candidate: Dictionary = normalized_placement_transform( + decor_id, + origin_position + Vector3( + float(x_offset) * GRID_SIZE, + 0.0, + float(z_offset) * GRID_SIZE, + ), + yaw, + PlacementMode.GRID, + ) + if candidate.is_empty() or not _mark_candidate_unseen( + candidate, seen + ): + continue + if _overlaps_existing( + decor_id, candidate, ignored_instance_id + ) or not _candidate_is_accepted( + candidate, candidate_validator + ): + continue + var candidate_position: Vector3 = candidate["position"] + var distance_squared: float = origin_position.distance_squared_to( + candidate_position + ) + if distance_squared < nearest_distance_squared: + nearest = candidate + nearest_distance_squared = distance_squared + if not nearest.is_empty(): + return nearest + return {} + + +func _find_nearest_free_transform( + decor_id: StringName, + origin: Dictionary, + ignored_instance_id: String, + candidate_validator: Callable, +) -> Dictionary: + var origin_position: Vector3 = origin["position"] + var yaw: float = float(origin["yaw"]) + var maximum_ring: int = ceili( + NEAREST_PLACEMENT_SEARCH_DISTANCE / FREE_PLACEMENT_SEARCH_STEP + ) + var seen: Dictionary[String, bool] = {} + for ring: int in range(1, maximum_ring + 1): + var radius: float = float(ring) * FREE_PLACEMENT_SEARCH_STEP + var nearest: Dictionary = {} + var nearest_distance_squared: float = INF + for angle_index: int in FREE_PLACEMENT_SEARCH_ANGLES: + var angle: float = ( + TAU * float(angle_index) / float(FREE_PLACEMENT_SEARCH_ANGLES) + ) + var candidate: Dictionary = normalized_placement_transform( + decor_id, + origin_position + Vector3( + cos(angle) * radius, 0.0, sin(angle) * radius + ), + yaw, + PlacementMode.FREE, + ) + if candidate.is_empty() or not _mark_candidate_unseen( + candidate, seen + ): + continue + if _overlaps_existing( + decor_id, candidate, ignored_instance_id + ) or not _candidate_is_accepted( + candidate, candidate_validator + ): + continue + var candidate_position: Vector3 = candidate["position"] + var distance_squared: float = origin_position.distance_squared_to( + candidate_position + ) + if distance_squared < nearest_distance_squared: + nearest = candidate + nearest_distance_squared = distance_squared + if not nearest.is_empty(): + return nearest + return {} + + +static func _mark_candidate_unseen( + candidate: Dictionary, + seen: Dictionary[String, bool], +) -> bool: + var position: Vector3 = candidate["position"] + var key := "%d:%d" % [ + roundi(position.x * 10000.0), + roundi(position.z * 10000.0), + ] + if seen.has(key): + return false + seen[key] = true + return true + + +static func _candidate_is_accepted( + candidate: Dictionary, + validator: Callable, +) -> bool: + return not validator.is_valid() or bool(validator.call(candidate)) + + +static func placements_overlap(first: Dictionary, second: Dictionary) -> bool: + var first_id := StringName(str(first.get("decor_id", ""))) + var second_id := StringName(str(second.get("decor_id", ""))) + if ( + not DecorCatalogType.has_product(first_id) + or not DecorCatalogType.has_product(second_id) + ): + return true + var first_position: Vector3 = _array_to_vector3(first.get("position", [])) + var second_position: Vector3 = _array_to_vector3(second.get("position", [])) + var first_yaw: float = float(first.get("yaw", 0.0)) + var second_yaw: float = float(second.get("yaw", 0.0)) + var first_half: Vector2 = ( + DecorCatalogType.get_footprint(first_id) * 0.5 + ) + var second_half: Vector2 = ( + DecorCatalogType.get_footprint(second_id) * 0.5 + ) + var first_axes: Array[Vector2] = _placement_axes(first_yaw) + var second_axes: Array[Vector2] = _placement_axes(second_yaw) + var delta := Vector2( + second_position.x - first_position.x, + second_position.z - first_position.z, + ) + for axis: Vector2 in [ + first_axes[0], first_axes[1], second_axes[0], second_axes[1], + ]: + var first_radius: float = ( + absf(axis.dot(first_axes[0])) * first_half.x + + absf(axis.dot(first_axes[1])) * first_half.y + ) + var second_radius: float = ( + absf(axis.dot(second_axes[0])) * second_half.x + + absf(axis.dot(second_axes[1])) * second_half.y + ) + if absf(delta.dot(axis)) >= ( + first_radius + second_radius - 0.001 + ): + return false + return true + + +func _make_instance_id() -> String: + var result := "decor-%d-%d" % [ + Time.get_ticks_usec(), + _next_instance_sequence, + ] + _next_instance_sequence = mini( + _next_instance_sequence + 1, + MAX_REVISION, + ) + return result + + +func _placement_index(instance_id: String) -> int: + if instance_id.is_empty(): + return -1 + for index: int in _placements.size(): + if str(_placements[index].get("instance_id", "")) == instance_id: + return index + return -1 + + +func _overlaps_existing( + decor_id: StringName, + normalized: Dictionary, + ignored_instance_id: String, +) -> bool: + var candidate: Dictionary = { + "decor_id": String(decor_id), + "position": _vector3_to_array(normalized["position"]), + "yaw": float(normalized["yaw"]), + } + for placement: Dictionary in _placements: + if str(placement.get("instance_id", "")) == ignored_instance_id: + continue + if placements_overlap(candidate, placement): + return true + return false + + +func _touch() -> void: + _revision = mini(_revision + 1, MAX_REVISION) + changed.emit() + + +static func _valid_mode(value: int) -> bool: + return value >= PlacementMode.GRID and value <= PlacementMode.FREE + + +static func _vector3_to_array(value: Vector3) -> Array[float]: + return [value.x, value.y, value.z] + + +static func _array_to_vector3(value: Variant) -> Vector3: + if typeof(value) != TYPE_ARRAY or (value as Array).size() != 3: + return Vector3.INF + var components: Array = value + return Vector3( + float(components[0]), + float(components[1]), + float(components[2]), + ) + + +static func _placement_axes(yaw: float) -> Array[Vector2]: + var cosine: float = cos(yaw) + var sine: float = sin(yaw) + return [Vector2(cosine, sine), Vector2(-sine, cosine)] diff --git a/homes/player_home_state.gd.uid b/homes/player_home_state.gd.uid new file mode 100644 index 0000000..37836c6 --- /dev/null +++ b/homes/player_home_state.gd.uid @@ -0,0 +1 @@ +uid://ggfdoak2ixxx diff --git a/inventory/player_bag.gd b/inventory/player_bag.gd index e33f1e4..d94845d 100644 --- a/inventory/player_bag.gd +++ b/inventory/player_bag.gd @@ -60,6 +60,28 @@ func add_item(item_id: StringName, quantity: int = 1) -> bool: return true +func add_item_to_storage(item_id: StringName, quantity: int = 1) -> bool: + var existing: OwnedItemType = get_owned_item(item_id) + if existing != null: + return add_item(item_id, quantity) + var item: ItemDataType = _resolve_available_item(item_id) + if ( + item == null + or quantity <= 0 + or quantity > (item.max_stack if item.stackable else 1) + or _inventory_layout == null + or not _inventory_layout.can_accept_item_in_storage(item_id) + ): + return false + var owned := OwnedItemType.new() + owned.item_id = item_id + owned.quantity = quantity + owned.storage_slot = _first_available_storage_slot(item, _items) + _items.append(owned) + contents_changed.emit() + return true + + func can_add_item(item_id: StringName, quantity: int = 1) -> bool: var item: ItemDataType = _resolve_available_item(item_id) if item == null or quantity <= 0: diff --git a/inventory/player_hotbar.gd b/inventory/player_hotbar.gd index b7d5197..36068ea 100644 --- a/inventory/player_hotbar.gd +++ b/inventory/player_hotbar.gd @@ -314,6 +314,25 @@ func get_fish_slots() -> Array[StringName]: return _fish_slots.duplicate() +func find_item_slot(item_id: StringName) -> int: + return _slots.find(item_id) + + +func find_first_empty_slot() -> int: + for slot_index: int in SLOT_COUNT: + if get_assignment_kind(slot_index) != AssignmentKind.EMPTY: + continue + if ( + _inventory_layout == null + or _inventory_layout.get_key_at( + PlayerInventoryLayout.InventoryContainer.HOTBAR, + slot_index, + ).is_empty() + ): + return slot_index + return -1 + + func replace_state( slots: Array[StringName], selected_slot: int, diff --git a/inventory/player_inventory_layout.gd b/inventory/player_inventory_layout.gd index 244e10b..bce726e 100644 --- a/inventory/player_inventory_layout.gd +++ b/inventory/player_inventory_layout.gd @@ -37,6 +37,7 @@ var _fish_inventory: FishInventoryType var _item_catalog: ItemCatalogType var _storage_capacity: PlayerCoolerCapacityType var _placements: Dictionary[String, Dictionary] = {} +var _prepared_item_placements: Dictionary[String, Dictionary] = {} var _reconciling: bool = false var _backpack_level: int = 0 @@ -72,7 +73,44 @@ func can_accept_item(item_id: StringName) -> bool: if not is_managed_item(item_id): return true var key := item_key(item_id) - return _placements.has(key) or _first_free_slot(InventoryContainer.INVENTORY) >= 0 + return ( + _placements.has(key) + or _is_prepared_item_placement_available(key) + or _first_free_slot(InventoryContainer.INVENTORY) >= 0 + ) + + +func prepare_new_item_placement( + item_id: StringName, + target_container: InventoryContainer, + target_slot: int, +) -> bool: + if not is_managed_item(item_id): + return false + var key := item_key(item_id) + if ( + _placements.has(key) + or not _is_slot_valid(target_container, target_slot) + or not _key_at(target_container, target_slot).is_empty() + or _prepared_slot_is_occupied(target_container, target_slot) + ): + return false + _prepared_item_placements[key] = { + "container": int(target_container), + "slot": target_slot, + } + return true + + +func cancel_prepared_item_placement(item_id: StringName) -> void: + _prepared_item_placements.erase(item_key(item_id)) + + +func can_accept_item_in_storage(item_id: StringName) -> bool: + if not is_managed_item(item_id): + return true + var key := item_key(item_id) + return _placements.has(key) or _first_free_slot(InventoryContainer.STORAGE) >= 0 func can_accept_catch(catch_id: StringName = StringName()) -> bool: @@ -332,6 +370,7 @@ func restore_from_save_data(data: Dictionary) -> bool: "container": container, "slot": slot, } + _prepared_item_placements.clear() _placements = restored _reconcile(true) return true @@ -340,6 +379,7 @@ func restore_from_save_data(data: Dictionary) -> bool: func reset_to_defaults() -> void: var capacity_changed := _backpack_level != 0 _backpack_level = 0 + _prepared_item_placements.clear() _placements.clear() _reconcile(true) if capacity_changed: @@ -402,8 +442,17 @@ func _reconcile(force_signal: bool) -> void: for key: String in expected: if _placements.has(key): continue + var prepared: Dictionary = _prepared_item_placements.get(key, {}) var target_container := InventoryContainer.INVENTORY - var target_slot := _first_free_slot(target_container) + var target_slot: int = -1 + if _is_prepared_item_placement_available(key): + target_container = int( + prepared["container"] + ) as InventoryContainer + target_slot = int(prepared["slot"]) + _prepared_item_placements.erase(key) + if target_slot < 0: + target_slot = _first_free_slot(target_container) if target_slot < 0: target_container = InventoryContainer.STORAGE target_slot = _first_free_slot(target_container) @@ -484,6 +533,37 @@ func _first_free_slot(container: InventoryContainer) -> int: return -1 +func _is_prepared_item_placement_available(key: String) -> bool: + var placement: Dictionary = _prepared_item_placements.get(key, {}) + if placement.is_empty(): + return false + var container: int = int(placement.get("container", -1)) + var slot: int = int(placement.get("slot", -1)) + if ( + container not in [ + InventoryContainer.INVENTORY, + InventoryContainer.STORAGE, + InventoryContainer.HOTBAR, + ] + or not _is_slot_valid(container as InventoryContainer, slot) + ): + return false + return _key_at(container as InventoryContainer, slot).is_empty() + + +func _prepared_slot_is_occupied( + container: InventoryContainer, + slot: int, +) -> bool: + for placement: Dictionary in _prepared_item_placements.values(): + if ( + int(placement.get("container", -1)) == int(container) + and int(placement.get("slot", -1)) == slot + ): + return true + return false + + func _key_at(container: InventoryContainer, slot: int) -> String: for key: String in _placements: var placement: Dictionary = _placements[key] diff --git a/items/catalog/basic_cube.tres b/items/catalog/basic_cube.tres new file mode 100644 index 0000000..86a2cf9 --- /dev/null +++ b/items/catalog/basic_cube.tres @@ -0,0 +1,17 @@ +[gd_resource type="Resource" script_class="ItemData" load_steps=3 format=3] + +[ext_resource type="Script" path="res://items/item_data.gd" id="1_item"] +[ext_resource type="Texture2D" path="res://ui/icons/pictograms/x_light.png" id="2_icon"] + +[resource] +script = ExtResource("1_item") +item_id = &"basic_cube" +display_name = "basic cube" +description = "a simple piece of decor for testing your RV layout." +category = 6 +icon = ExtResource("2_icon") +stackable = true +max_stack = 32 +usable = false +equippable = true +hotbar_allowed = true diff --git a/items/catalog/item_catalog.tres b/items/catalog/item_catalog.tres index 63ef3ea..2f15e0a 100644 --- a/items/catalog/item_catalog.tres +++ b/items/catalog/item_catalog.tres @@ -1,4 +1,4 @@ -[gd_resource type="Resource" script_class="ItemCatalog" load_steps=41 format=3] +[gd_resource type="Resource" script_class="ItemCatalog" load_steps=42 format=3] [ext_resource type="Script" path="res://items/item_catalog.gd" id="1_script"] [ext_resource type="Resource" path="res://items/catalog/basic_fishing_rod.tres" id="2_rod"] @@ -40,7 +40,8 @@ [ext_resource type="Resource" path="res://items/catalog/crab_net.tres" id="39_crab_net"] [ext_resource type="Resource" path="res://items/catalog/standard_shovel.tres" id="40_shovel"] [ext_resource type="Resource" path="res://items/catalog/fishing_net.tres" id="41_fishing_net"] +[ext_resource type="Resource" path="res://items/catalog/basic_cube.tres" id="42_basic_cube"] [resource] script = ExtResource("1_script") -items = [ExtResource("2_rod"), ExtResource("3_coffee"), ExtResource("4_energy"), ExtResource("5_snack"), ExtResource("6_finder"), ExtResource("8_art_kit"), ExtResource("9_worms"), ExtResource("10_snails"), ExtResource("11_shrimp"), ExtResource("12_squid"), ExtResource("14_sardine"), ExtResource("13_anchovy"), ExtResource("15_roe"), ExtResource("16_standby"), ExtResource("17_batteries"), ExtResource("18_cardboard"), ExtResource("19_pond"), ExtResource("20_river"), ExtResource("21_lake"), ExtResource("22_salt"), ExtResource("23_whisker"), ExtResource("24_reef"), ExtResource("25_moonbeam"), ExtResource("26_sun"), ExtResource("27_rain"), ExtResource("28_fog"), ExtResource("29_guide"), ExtResource("30_small"), ExtResource("31_heavy"), ExtResource("32_rocket"), ExtResource("33_lucky"), ExtResource("34_showboat"), ExtResource("35_deep"), ExtResource("36_oddity"), ExtResource("37_aurora"), ExtResource("38_magnet"), ExtResource("39_crab_net"), ExtResource("40_shovel"), ExtResource("41_fishing_net")] +items = [ExtResource("2_rod"), ExtResource("3_coffee"), ExtResource("4_energy"), ExtResource("5_snack"), ExtResource("6_finder"), ExtResource("8_art_kit"), ExtResource("9_worms"), ExtResource("10_snails"), ExtResource("11_shrimp"), ExtResource("12_squid"), ExtResource("14_sardine"), ExtResource("13_anchovy"), ExtResource("15_roe"), ExtResource("16_standby"), ExtResource("17_batteries"), ExtResource("18_cardboard"), ExtResource("19_pond"), ExtResource("20_river"), ExtResource("21_lake"), ExtResource("22_salt"), ExtResource("23_whisker"), ExtResource("24_reef"), ExtResource("25_moonbeam"), ExtResource("26_sun"), ExtResource("27_rain"), ExtResource("28_fog"), ExtResource("29_guide"), ExtResource("30_small"), ExtResource("31_heavy"), ExtResource("32_rocket"), ExtResource("33_lucky"), ExtResource("34_showboat"), ExtResource("35_deep"), ExtResource("36_oddity"), ExtResource("37_aurora"), ExtResource("38_magnet"), ExtResource("39_crab_net"), ExtResource("40_shovel"), ExtResource("41_fishing_net"), ExtResource("42_basic_cube")] diff --git a/main/main.gd b/main/main.gd index e9dc78f..8335c69 100644 --- a/main/main.gd +++ b/main/main.gd @@ -37,6 +37,9 @@ const FishingShopType = preload("res://ui/fishing_shop.gd") const FishingShopInteractionType = preload( "res://world/fishing_shop_interaction.gd" ) +const DecorShopInteractionType = preload( + "res://world/decor_shop_interaction.gd" +) const PlayerStorageInteractionType = preload( "res://world/player_storage_interaction.gd" ) @@ -70,6 +73,7 @@ const NetworkFishingServiceType = preload( "res://network/network_fishing_service.gd" ) const PlayerHotbarType = preload("res://inventory/player_hotbar.gd") +const DecorCatalogType = preload("res://homes/decor_catalog.gd") const NetworkSaleServiceType = preload( "res://network/network_sale_service.gd" ) @@ -123,6 +127,14 @@ const GatheringControllerType = preload( const NetworkWorldSpawnServiceType = preload( "res://network/network_world_spawn_service.gd" ) +const PlayerHomeStateType = preload("res://homes/player_home_state.gd") +const HomeWorldServiceType = preload("res://homes/home_world_service.gd") +const NetworkHomeServiceType = preload( + "res://network/network_home_service.gd" +) +const HomeDecorControllerType = preload( + "res://homes/home_decor_controller.gd" +) const TITLE_MUSIC_SILENCE_DB: float = -80.0 const TITLE_MUSIC_PATH: String = ( @@ -153,6 +165,7 @@ const DEDICATED_ACTIVE_PHYSICS_TICKS_PER_SECOND: int = 30 @onready var _game_ui: GameUIType = %GameUI @onready var _water_recovery: WaterRecoveryControllerType = %WaterRecovery @onready var _save_manager: PlayerSaveManagerType = %PlayerSaveManager +@onready var _home_state: PlayerHomeStateType = %PlayerHomeState @onready var _settings_manager: PlayerSettingsManagerType = %PlayerSettingsManager @onready var _controller_mapping_manager: ControllerMappingManagerType = ( %ControllerMappingManager @@ -212,6 +225,10 @@ const DEDICATED_ACTIVE_PHYSICS_TICKS_PER_SECOND: int = 30 ) @onready var _network_sale: NetworkSaleServiceType = %NetworkSaleService @onready var _network_shop: NetworkShopServiceType = %NetworkShopService +@onready var _network_home: NetworkHomeServiceType = %NetworkHomeService +@onready var _home_decor_controller: HomeDecorControllerType = ( + %HomeDecorController +) @onready var _network_item_use: NetworkItemUseServiceType = ( %NetworkItemUseService ) @@ -234,6 +251,7 @@ const DEDICATED_ACTIVE_PHYSICS_TICKS_PER_SECOND: int = 30 @onready var _players_root: Node3D = $Players @onready var _surface_drawings_root: Node3D = $SurfaceDrawings @onready var _world_gatherables_root: Node3D = $WorldGatherables +@onready var _home_world: HomeWorldServiceType = %HomeWorldService @onready var _title_background: ColorRect = %TitleBackground @onready var _player_menu_backdrop: ColorRect = %PlayerMenuBackdrop @onready var _shop_backdrop: ColorRect = %ShopBackdrop @@ -241,6 +259,7 @@ const DEDICATED_ACTIVE_PHYSICS_TICKS_PER_SECOND: int = 30 var _gameplay_started: bool = false var _save_slots := PlayerSaveSlotCatalogType.new() var _shop_interaction: FishingShopInteractionType +var _decor_shop_interaction: DecorShopInteractionType var _storage_interaction: PlayerStorageInteractionType var _title_music_tween: Tween var _title_music_transition_generation: int = 0 @@ -740,6 +759,7 @@ func _initialize_application(dedicated: bool) -> void: _player.inventory_layout, ) _shop_interaction = _test_world.get_fishing_shop() + _decor_shop_interaction = _test_world.get_decor_shop() _storage_interaction = _test_world.get_player_storage() if not dedicated: _shop_interaction.setup_local_player(_player) @@ -749,6 +769,10 @@ func _initialize_application(dedicated: bool) -> void: _game_ui.set_shop_npc_player_in_range( _shop_interaction.is_local_player_in_range() ) + _decor_shop_interaction.setup_local_player(_player) + _decor_shop_interaction.local_player_range_changed.connect( + _on_decor_shop_range_changed + ) _storage_interaction.setup_local_player(_player) _storage_interaction.local_player_range_changed.connect( _on_storage_range_changed @@ -770,6 +794,23 @@ func _initialize_application(dedicated: bool) -> void: _world_weather, _player_jobs, _player, + _home_state, + ) + _home_world.setup( + _test_world, + _player_spawn_service, + _network_session, + dedicated, + ) + _network_home.setup( + _network_session, + _player_spawn_service, + _home_state, + _save_manager, + _home_world, + _player.bag, + _player.inventory_layout, + _player.hotbar, ) _player_jobs.set_save_manager(_save_manager) _save_manager.set_autosave_enabled(false) @@ -903,6 +944,9 @@ func _initialize_application(dedicated: bool) -> void: _save_manager, _asset_reservations, _player.inventory_layout, + _home_state, + _network_home, + _decor_shop_interaction, ) _fishing_spot.setup( _player, @@ -942,11 +986,13 @@ func _initialize_application(dedicated: bool) -> void: _player.fishing_upgrades, _shop_interaction, _storage_interaction, + _decor_shop_interaction, _player.item_effects, _player.cooler_capacity, _network_session, _network_sale, _network_shop, + _home_state, _network_chat, _network_profile, _player_spawn_service, @@ -964,6 +1010,21 @@ func _initialize_application(dedicated: bool) -> void: _test_world.get_world_environment(), _test_world.get_sun(), ) + _home_decor_controller.setup( + _player, + _player.hotbar, + _player.bag, + _home_state, + _network_home, + _home_world, + _fishing_spot, + _game_ui.get_home_decor_toolbar(), + ) + _game_ui.get_player_storage().decorate_requested.connect( + _home_decor_controller.begin_decorating + ) + _network_home.local_space_changed.connect(_on_local_home_space_changed) + _game_ui.rv_storage_requested.connect(_on_rv_storage_requested) _game_ui.setup_data_and_identity( _data_root, _identity_backups, @@ -1475,6 +1536,9 @@ func _input(event: InputEvent) -> void: if _game_ui.get_player_storage().consume_escape(): get_viewport().set_input_as_handled() return + if _game_ui.get_decor_shop().consume_escape(): + get_viewport().set_input_as_handled() + return if fishing_shop.consume_escape(): get_viewport().set_input_as_handled() return @@ -1573,19 +1637,50 @@ func _is_pause_open_request(event: InputEvent) -> bool: func _unhandled_input(event: InputEvent) -> void: + if ( + _gameplay_started + and event.is_action_pressed("fish_primary") + and not (event is InputEventKey and event.echo) + and _fishing_spot.try_use_active_non_fishing_item() + ): + get_viewport().set_input_as_handled() + return if ( not _gameplay_started or not event.is_action_pressed("interact") or (event is InputEventKey and event.echo) ): return + var home_owner: String = _network_home.get_local_home_owner_fingerprint() + if not home_owner.is_empty(): + if _home_world.is_avatar_near_interior_exit(_player, home_owner): + if _network_home.request_exit(): + _game_ui.set_storage_prompt_visible(false) + get_viewport().set_input_as_handled() + return + if ( + _network_home.can_local_decorate() + and _fishing_spot.can_open_fishing_shop() + and _game_ui.get_player_storage().open_storage_from_home(true) + ): + _game_ui.set_storage_prompt_visible(false) + get_viewport().set_input_as_handled() + return + var nearby_home_owner: String = _home_world.find_nearby_exterior_owner( + _player + ) + if not nearby_home_owner.is_empty(): + if _network_home.request_enter(nearby_home_owner): + _game_ui.set_storage_prompt_visible(false) + get_viewport().set_input_as_handled() + return if ( - _storage_interaction != null - and _storage_interaction.is_local_player_in_range() + _decor_shop_interaction != null + and _decor_shop_interaction.is_local_player_in_range() and _fishing_spot.can_open_fishing_shop() - and _game_ui.get_player_storage().open_storage() + and _game_ui.get_decor_shop().open_shop() ): - _game_ui.set_storage_prompt_visible(false) + _game_ui.set_shop_prompt_visible(false) get_viewport().set_input_as_handled() return if ( @@ -1608,25 +1703,28 @@ func _process(delta: float) -> void: ) _print_dedicated_metrics() return - var show_shop_prompt := _can_show_shop_prompt() + var show_decor_shop_prompt := _can_show_decor_shop_prompt() + var show_shop_prompt := show_decor_shop_prompt or _can_show_shop_prompt() var shop_prompt_anchor := ( - _shop_interaction.get_prompt_anchor_position() - if _shop_interaction != null - else Vector3.ZERO + _decor_shop_interaction.get_prompt_anchor_position() + if show_decor_shop_prompt + else ( + _shop_interaction.get_prompt_anchor_position() + if _shop_interaction != null else Vector3.ZERO + ) ) _game_ui.set_shop_prompt_visible( show_shop_prompt, shop_prompt_anchor, ) - var show_storage_prompt := _can_show_storage_prompt() - var storage_prompt_anchor := ( - _storage_interaction.get_prompt_anchor_position() - if _storage_interaction != null - else Vector3.ZERO - ) + var home_prompt := _get_home_prompt() _game_ui.set_storage_prompt_visible( - show_storage_prompt, - storage_prompt_anchor, + not home_prompt.is_empty(), + home_prompt.get("anchor", Vector3.ZERO), + str(home_prompt.get("label", "enter RV")), + ) + _game_ui.set_rv_storage_button_visible( + _can_show_rv_storage_button() ) @@ -2421,6 +2519,7 @@ func _apply_world( if _application_initialized: _refresh_active_world_bindings() _network_world_spawns.refresh_world_context() + _network_home.refresh_world_presentations() if _application_initialized and not _dedicated_runtime: _water_recovery.update_world_context( spawn_transform, @@ -2450,10 +2549,19 @@ func _refresh_active_world_bindings() -> void: _storage_interaction.local_player_range_changed.disconnect( _on_storage_range_changed ) + if is_instance_valid(_decor_shop_interaction): + if _decor_shop_interaction.local_player_range_changed.is_connected( + _on_decor_shop_range_changed + ): + _decor_shop_interaction.local_player_range_changed.disconnect( + _on_decor_shop_range_changed + ) _shop_interaction = _test_world.get_fishing_shop() + _decor_shop_interaction = _test_world.get_decor_shop() _storage_interaction = _test_world.get_player_storage() _network_sale.set_shop_interaction(_shop_interaction) _network_shop.set_shop_interaction(_shop_interaction) + _network_shop.set_decor_shop_interaction(_decor_shop_interaction) if _dedicated_runtime: return if _shop_interaction != null: @@ -2466,9 +2574,15 @@ func _refresh_active_world_bindings() -> void: _storage_interaction.local_player_range_changed.connect( _on_storage_range_changed ) + if _decor_shop_interaction != null: + _decor_shop_interaction.setup_local_player(_player) + _decor_shop_interaction.local_player_range_changed.connect( + _on_decor_shop_range_changed + ) _game_ui.set_world_interactions( _shop_interaction, _storage_interaction, + _decor_shop_interaction, ) _on_shop_range_changed( _shop_interaction != null @@ -2478,6 +2592,10 @@ func _refresh_active_world_bindings() -> void: _storage_interaction != null and _storage_interaction.is_local_player_in_range() ) + _on_decor_shop_range_changed( + _decor_shop_interaction != null + and _decor_shop_interaction.is_local_player_in_range() + ) func _on_water_recovery_starting() -> void: @@ -2491,6 +2609,7 @@ func _on_water_recovery_starting() -> void: _game_ui.close_player_menu_for_water_recovery() _game_ui.get_pause_menu().close_for_water_recovery() _game_ui.get_fishing_shop().close_for_water_recovery() + _game_ui.get_decor_shop().close_for_water_recovery() _game_ui.get_player_storage().close_for_water_recovery() @@ -2552,6 +2671,12 @@ func _on_active_hotbar_item_changed( and item.is_available() and _player.bag.owns_item(item_id) ) + var active_is_decor: bool = ( + DecorCatalogType.has_product(item_id) + and item != null + and item.is_available() + and _player.bag.owns_item(item_id) + ) _player.set_active_fishing_rod( item as FishingRodDataType if active_is_rod else null, true, @@ -2562,6 +2687,7 @@ func _on_active_hotbar_item_changed( ) _player.set_active_catching_net(active_is_catching_net) _player.set_active_shovel(active_is_shovel) + _player.set_active_decor_package(active_is_decor) _game_ui.set_surface_drawing_hotbar_selected(active_is_art_kit) _network_item_use.submit_local_equipped(item_id, active_is_rod or ( item != null and _player.bag.owns_item(item_id) @@ -2698,7 +2824,13 @@ func _exit_tree() -> void: func _on_shop_range_changed(in_range: bool) -> void: - _game_ui.set_shop_npc_player_in_range(in_range) + _game_ui.set_shop_npc_player_in_range( + in_range + or ( + _decor_shop_interaction != null + and _decor_shop_interaction.is_local_player_in_range() + ) + ) if not in_range: _game_ui.get_fishing_shop().close_for_range_exit() _game_ui.set_shop_prompt_visible(_can_show_shop_prompt()) @@ -2707,7 +2839,50 @@ func _on_shop_range_changed(in_range: bool) -> void: func _on_storage_range_changed(in_range: bool) -> void: if not in_range: _game_ui.get_player_storage().close_for_range_exit() - _game_ui.set_storage_prompt_visible(_can_show_storage_prompt()) + var prompt := _get_home_prompt() + _game_ui.set_storage_prompt_visible( + not prompt.is_empty(), + prompt.get("anchor", Vector3.ZERO), + str(prompt.get("label", "enter RV")), + ) + _game_ui.set_rv_storage_button_visible( + _can_show_rv_storage_button() + ) + + +func _on_decor_shop_range_changed(in_range: bool) -> void: + _game_ui.set_shop_npc_player_in_range( + in_range + or ( + _shop_interaction != null + and _shop_interaction.is_local_player_in_range() + ) + ) + if not in_range: + _game_ui.get_decor_shop().close_for_range_exit() + _game_ui.set_shop_prompt_visible( + _can_show_shop_prompt() or _can_show_decor_shop_prompt() + ) + + +func _on_local_home_space_changed( + space_id: StringName, + _owner_fingerprint: String, +) -> void: + var inside_rv: bool = String(space_id).begins_with("rv:") + _fishing_spot.set_fishing_environment_enabled(not inside_rv) + _game_ui.set_rv_interior_camera_mode( + inside_rv + ) + _game_ui.set_rv_storage_button_visible( + _can_show_rv_storage_button() + ) + + +func _on_rv_storage_requested() -> void: + if not _can_show_rv_storage_button(): + return + _game_ui.get_player_storage().open_storage_from_home(true) func _can_show_shop_prompt() -> bool: @@ -2716,18 +2891,66 @@ func _can_show_shop_prompt() -> bool: and _shop_interaction != null and _shop_interaction.is_local_player_in_range() and not _game_ui.get_fishing_shop().visible + and not _game_ui.get_decor_shop().visible + and not _water_recovery.is_recovery_active() + and _fishing_spot.can_open_fishing_shop() + ) + + +func _can_show_decor_shop_prompt() -> bool: + return ( + _gameplay_started + and _decor_shop_interaction != null + and _decor_shop_interaction.is_local_player_in_range() + and not _game_ui.get_decor_shop().visible + and not _game_ui.get_fishing_shop().visible and not _water_recovery.is_recovery_active() and _fishing_spot.can_open_fishing_shop() ) func _can_show_storage_prompt() -> bool: + return not _get_home_prompt().is_empty() + + +func _can_show_rv_storage_button() -> bool: return ( _gameplay_started - and _storage_interaction != null - and _storage_interaction.is_local_player_in_range() - and not _game_ui.get_player_storage().visible - and not _game_ui.get_fishing_shop().visible + and not _network_home.get_local_home_owner_fingerprint().is_empty() + and _network_home.can_local_decorate() and not _water_recovery.is_recovery_active() and _fishing_spot.can_open_fishing_shop() ) + + +func _get_home_prompt() -> Dictionary: + if ( + not _gameplay_started + or _game_ui.get_player_storage().visible + or _game_ui.get_fishing_shop().visible + or _game_ui.get_decor_shop().visible + or _water_recovery.is_recovery_active() + or not _fishing_spot.can_open_fishing_shop() + ): + return {} + var owner_fingerprint: String = ( + _network_home.get_local_home_owner_fingerprint() + ) + if not owner_fingerprint.is_empty(): + if _home_world.is_avatar_near_interior_exit( + _player, owner_fingerprint + ): + return { + "label": "leave RV", + "anchor": _home_world.get_interior_prompt_position( + owner_fingerprint + ), + } + return {} + var nearby_owner: String = _home_world.find_nearby_exterior_owner(_player) + if nearby_owner.is_empty(): + return {} + return { + "label": "enter RV", + "anchor": _home_world.get_exterior_prompt_position(nearby_owner), + } diff --git a/main/main.tscn b/main/main.tscn index c1380d6..778a1d4 100644 --- a/main/main.tscn +++ b/main/main.tscn @@ -58,6 +58,10 @@ [ext_resource type="Resource" path="res://gathering/catalog/gatherable_catalog.tres" id="58_gatherable_catalog"] [ext_resource type="Script" path="res://network/network_world_spawn_service.gd" id="59_world_spawns"] [ext_resource type="Script" path="res://gathering/gathering_controller.gd" id="60_gathering_controller"] +[ext_resource type="Script" path="res://homes/player_home_state.gd" id="61_home_state"] +[ext_resource type="Script" path="res://homes/home_world_service.gd" id="62_home_world"] +[ext_resource type="Script" path="res://network/network_home_service.gd" id="63_network_home"] +[ext_resource type="Script" path="res://homes/home_decor_controller.gd" id="64_home_decor_controller"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_title_grass_native"] shader = ExtResource("42_menu_pattern") @@ -259,6 +263,14 @@ script = ExtResource("22_network_sale") unique_name_in_owner = true script = ExtResource("23_network_shop") +[node name="NetworkHomeService" type="Node" parent="."] +unique_name_in_owner = true +script = ExtResource("63_network_home") + +[node name="HomeDecorController" type="Node" parent="."] +unique_name_in_owner = true +script = ExtResource("64_home_decor_controller") + [node name="NetworkItemUseService" type="Node" parent="." unique_id=255154670] unique_name_in_owner = true script = ExtResource("24_network_item") @@ -322,6 +334,10 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.3999481, 12.07081) [node name="WorldGatherables" type="Node3D" parent="."] +[node name="HomeWorldService" type="Node3D" parent="."] +unique_name_in_owner = true +script = ExtResource("62_home_world") + [node name="GatheringController" type="Node3D" parent="."] unique_name_in_owner = true script = ExtResource("60_gathering_controller") @@ -338,6 +354,10 @@ script = ExtResource("8_recovery") unique_name_in_owner = true script = ExtResource("9_save") +[node name="PlayerHomeState" type="Node" parent="."] +unique_name_in_owner = true +script = ExtResource("61_home_state") + [node name="PlayerSettingsManager" type="Node" parent="." unique_id=906991991] unique_name_in_owner = true script = ExtResource("10_settings") diff --git a/network/network_home_protocol.gd b/network/network_home_protocol.gd new file mode 100644 index 0000000..62b8488 --- /dev/null +++ b/network/network_home_protocol.gd @@ -0,0 +1,176 @@ +class_name NetworkHomeProtocol +extends RefCounted + +const PlayerHomeStateType = preload("res://homes/player_home_state.gd") + +const CAPABILITY: StringName = &"portable_home_v1" +const RELIABLE_CHANNEL: int = NetworkProtocol.HOME_RELIABLE_CHANNEL +const MAX_ID_LENGTH: int = 96 +const MAX_MESSAGE_LENGTH: int = 160 +const WORLD_SPACE: StringName = &"world" + +enum TransitionAction { + ENTER, + EXIT, +} + + +static func make_space_id(owner_fingerprint: String) -> StringName: + return StringName("rv:%s" % owner_fingerprint) + + +static func manifest_digest(home_data: Dictionary) -> String: + var sanitized: Dictionary = PlayerHomeStateType.sanitize_save_data(home_data) + if sanitized.is_empty(): + return "" + var canonical_owned: Array[Dictionary] = [] + var owned: Dictionary = sanitized["owned_decor"] + var owned_ids: Array[String] = [] + for value: Variant in owned.keys(): + owned_ids.append(str(value)) + owned_ids.sort() + for decor_id: String in owned_ids: + canonical_owned.append({ + "id": decor_id, + "quantity": int(owned[decor_id]), + }) + var placements: Array[Dictionary] = [] + for value: Variant in sanitized["placements"]: + placements.append((value as Dictionary).duplicate(true)) + placements.sort_custom(func(first: Dictionary, second: Dictionary) -> bool: + return str(first["instance_id"]) < str(second["instance_id"]) + ) + var canonical: Dictionary = { + "schema_version": int(sanitized["schema_version"]), + "tier": int(sanitized["tier"]), + "exterior_id": str(sanitized["exterior_id"]), + "privacy": int(sanitized["privacy"]), + "owned": canonical_owned, + "placements": placements, + "revision": int(sanitized["revision"]), + "next_instance_sequence": int(sanitized["next_instance_sequence"]), + } + return JSON.stringify(canonical).sha256_text() + + +static func manifest_signature_fields(data: Dictionary) -> Array: + return [ + str(data.get("session_id", "")), + str(data.get("request_id", "")), + str(data.get("owner_fingerprint", "")), + int((data.get("home", {}) as Dictionary).get("revision", -1)), + str(data.get("digest", "")), + ] + + +static func validate_manifest_request(value: Variant) -> bool: + if typeof(value) != TYPE_DICTIONARY: + return false + var data: Dictionary = value + if ( + not _valid_id(data.get("request_id")) + or not _valid_id(data.get("session_id")) + or not NetworkIdentityCrypto.valid_fingerprint( + data.get("owner_fingerprint") + ) + or typeof(data.get("home")) != TYPE_DICTIONARY + or typeof(data.get("digest")) != TYPE_STRING + or str(data["digest"]).length() != 64 + or typeof(data.get("sender_signature")) != TYPE_PACKED_BYTE_ARRAY + ): + return false + var sanitized: Dictionary = PlayerHomeStateType.sanitize_save_data( + data["home"] + ) + return ( + not sanitized.is_empty() + and manifest_digest(sanitized) == str(data["digest"]) + ) + + +static func validate_manifest_broadcast(value: Variant) -> bool: + if typeof(value) != TYPE_DICTIONARY: + return false + var data: Dictionary = value + return ( + typeof(data.get("owner_peer_id")) == TYPE_INT + and int(data["owner_peer_id"]) > 0 + and NetworkIdentityCrypto.valid_fingerprint( + data.get("owner_fingerprint") + ) + and typeof(data.get("home")) == TYPE_DICTIONARY + and not PlayerHomeStateType.sanitize_save_data(data["home"]).is_empty() + and _valid_transform(data.get("exterior_transform")) + and typeof(data.get("interior_index")) == TYPE_INT + and int(data["interior_index"]) >= 0 + and int(data["interior_index"]) < 128 + ) + + +static func transition_signature_fields(data: Dictionary) -> Array: + return [ + str(data.get("session_id", "")), + str(data.get("request_id", "")), + int(data.get("action", -1)), + str(data.get("owner_fingerprint", "")), + ] + + +static func validate_transition_request(value: Variant) -> bool: + if typeof(value) != TYPE_DICTIONARY: + return false + var data: Dictionary = value + return ( + _valid_id(data.get("request_id")) + and _valid_id(data.get("session_id")) + and typeof(data.get("action")) == TYPE_INT + and int(data["action"]) >= TransitionAction.ENTER + and int(data["action"]) <= TransitionAction.EXIT + and NetworkIdentityCrypto.valid_fingerprint( + data.get("owner_fingerprint") + ) + and typeof(data.get("sender_signature")) == TYPE_PACKED_BYTE_ARRAY + ) + + +static func transform_to_array(value: Transform3D) -> Array[float]: + return [ + value.basis.x.x, value.basis.x.y, value.basis.x.z, + value.basis.y.x, value.basis.y.y, value.basis.y.z, + value.basis.z.x, value.basis.z.y, value.basis.z.z, + value.origin.x, value.origin.y, value.origin.z, + ] + + +static func array_to_transform(value: Variant) -> Transform3D: + if not _valid_transform(value): + return Transform3D() + var fields: Array = value + return Transform3D( + Basis( + Vector3(float(fields[0]), float(fields[1]), float(fields[2])), + Vector3(float(fields[3]), float(fields[4]), float(fields[5])), + Vector3(float(fields[6]), float(fields[7]), float(fields[8])), + ), + Vector3(float(fields[9]), float(fields[10]), float(fields[11])), + ) + + +static func _valid_transform(value: Variant) -> bool: + if typeof(value) != TYPE_ARRAY or (value as Array).size() != 12: + return false + for component: Variant in value: + if ( + typeof(component) not in [TYPE_FLOAT, TYPE_INT] + or not is_finite(float(component)) + ): + return false + return true + + +static func _valid_id(value: Variant) -> bool: + return ( + typeof(value) == TYPE_STRING + and not str(value).is_empty() + and str(value).length() <= MAX_ID_LENGTH + ) diff --git a/network/network_home_protocol.gd.uid b/network/network_home_protocol.gd.uid new file mode 100644 index 0000000..24b6aae --- /dev/null +++ b/network/network_home_protocol.gd.uid @@ -0,0 +1 @@ +uid://fl3qwiluejhm diff --git a/network/network_home_service.gd b/network/network_home_service.gd new file mode 100644 index 0000000..df4fcde --- /dev/null +++ b/network/network_home_service.gd @@ -0,0 +1,956 @@ +class_name NetworkHomeService +extends Node + +const NetworkHomeProtocolType = preload( + "res://network/network_home_protocol.gd" +) +const PlayerHomeStateType = preload("res://homes/player_home_state.gd") + +signal local_transition_finished(accepted: bool, message: String) +signal local_space_changed(space_id: StringName, owner_fingerprint: String) +signal local_manifest_rejected(message: String) + +const MAX_MANIFESTS: int = 128 + +var _session: NetworkSession +var _spawn_service: PlayerSpawnService +var _local_home: PlayerHomeStateType +var _save_manager: PlayerSaveManager +var _world_service: HomeWorldService +var _bag: PlayerBag +var _inventory_layout: PlayerInventoryLayout +var _hotbar: PlayerHotbar +var _manifests_by_fingerprint: Dictionary[String, Dictionary] = {} +var _fingerprint_by_peer: Dictionary[int, String] = {} +var _authorized_owned_counts: Dictionary[int, Dictionary] = {} +var _authorization_result_owner: Dictionary[String, int] = {} +var _next_interior_index: int = 0 +var _suppress_local_submission: bool = false +var _publish_queued: bool = false + + +func setup( + session: NetworkSession, + spawn_service: PlayerSpawnService, + local_home: PlayerHomeStateType, + save_manager: PlayerSaveManager, + world_service: HomeWorldService, + bag: PlayerBag, + inventory_layout: PlayerInventoryLayout, + hotbar: PlayerHotbar, +) -> void: + _session = session + _spawn_service = spawn_service + _local_home = local_home + _save_manager = save_manager + _world_service = world_service + _bag = bag + _inventory_layout = inventory_layout + _hotbar = hotbar + if not _session.state_changed.is_connected(_on_session_state_changed): + _session.state_changed.connect(_on_session_state_changed) + if not _session.join_authenticated.is_connected(_on_join_authenticated): + _session.join_authenticated.connect(_on_join_authenticated) + if not _session.peer_authenticated.is_connected(_on_peer_authenticated): + _session.peer_authenticated.connect(_on_peer_authenticated) + if not _session.peer_removed.is_connected(_on_peer_removed): + _session.peer_removed.connect(_on_peer_removed) + if not _local_home.changed.is_connected(_on_local_home_changed): + _local_home.changed.connect(_on_local_home_changed) + + +func get_local_space() -> StringName: + if _session == null or not _session.is_gameplay_session_active(): + return NetworkHomeProtocolType.WORLD_SPACE + return _session.get_peer_space(_session.get_local_peer_id()) + + +func get_local_home_owner_fingerprint() -> String: + var space_id: String = String(get_local_space()) + return space_id.trim_prefix("rv:") if space_id.begins_with("rv:") else "" + + +func can_local_decorate() -> bool: + return ( + get_local_home_owner_fingerprint() + == _session.get_local_identity_fingerprint() + ) + + +func get_authoritative_owned_count( + peer_id: int, + decor_id: StringName, +) -> int: + var authorized: Dictionary = _authorized_owned_counts.get(peer_id, {}) + if authorized.has(String(decor_id)): + return int(authorized[String(decor_id)]) + var fingerprint: String = _fingerprint_for_peer(peer_id) + var manifest: Dictionary = _manifests_by_fingerprint.get(fingerprint, {}) + if manifest.is_empty(): + return -1 + var home: Dictionary = manifest.get("home", {}) + var owned: Dictionary = home.get("owned_decor", {}) + return int(owned.get(String(decor_id), 0)) + + +func place_local_decor( + decor_id: StringName, + position: Vector3, + yaw_radians: float, + mode: PlayerHomeStateType.PlacementMode, +) -> String: + if ( + not can_local_decorate() + or _bag == null + or _bag.get_quantity(decor_id) <= 0 + or _world_service == null + ): + return "" + var owner_fingerprint: String = ( + _session.get_local_identity_fingerprint() + ) + var normalized: Dictionary = ( + _local_home.get_nearest_valid_placement_transform( + decor_id, + position, + yaw_radians, + mode, + "", + Callable( + self, "_candidate_clear_of_players" + ).bind(owner_fingerprint, decor_id), + ) + ) + if normalized.is_empty(): + return "" + var instance_id: String = _local_home.place_decor( + decor_id, + normalized["position"], + float(normalized["yaw"]), + mode, + ) + if instance_id.is_empty(): + return "" + if not _bag.remove_item(decor_id, 1): + _local_home.remove_placement(instance_id) + return "" + _save_manager.save_if_dirty() + return instance_id + + +func remove_local_decor(instance_id: String) -> bool: + if ( + not can_local_decorate() + or _bag == null + or _inventory_layout == null + or _hotbar == null + ): + return false + var placement: Dictionary = _local_home.get_placement(instance_id) + if placement.is_empty(): + return false + var decor_id := StringName(str(placement["decor_id"])) + var target_hotbar_slot: int = _hotbar.find_item_slot(decor_id) + if target_hotbar_slot < 0: + target_hotbar_slot = _hotbar.find_first_empty_slot() + var prepared_hotbar_placement: bool = false + if ( + target_hotbar_slot >= 0 + and _inventory_layout.get_container( + PlayerInventoryLayout.EntryKind.ITEM, + decor_id, + ) < 0 + ): + prepared_hotbar_placement = ( + _inventory_layout.prepare_new_item_placement( + decor_id, + PlayerInventoryLayout.InventoryContainer.HOTBAR, + target_hotbar_slot, + ) + ) + var returned_to_inventory: bool = _bag.add_item(decor_id, 1) + if not returned_to_inventory: + if prepared_hotbar_placement: + _inventory_layout.cancel_prepared_item_placement(decor_id) + returned_to_inventory = _bag.add_item_to_storage(decor_id, 1) + if not returned_to_inventory: + return false + if target_hotbar_slot >= 0: + _hotbar.assign_item(target_hotbar_slot, decor_id) + _hotbar.select_slot(target_hotbar_slot) + if not _local_home.remove_placement(instance_id): + _bag.remove_item(decor_id, 1) + return false + _save_manager.save_if_dirty() + return true + + +func update_local_decor( + instance_id: String, + position: Vector3, + yaw_radians: float, + mode: PlayerHomeStateType.PlacementMode, +) -> bool: + var normalized: Dictionary = get_valid_local_decor_transform( + instance_id, position, yaw_radians, mode + ) + if normalized.is_empty(): + return false + if not _local_home.update_placement( + instance_id, + normalized["position"], + float(normalized["yaw"]), + mode, + ): + return false + _save_manager.save_if_dirty() + return true + + +func get_valid_local_decor_transform( + instance_id: String, + position: Vector3, + yaw_radians: float, + mode: PlayerHomeStateType.PlacementMode, +) -> Dictionary: + if not can_local_decorate() or _world_service == null: + return {} + var placement: Dictionary = _local_home.get_placement(instance_id) + if placement.is_empty(): + return {} + var decor_id := StringName(str(placement.get("decor_id", ""))) + return _local_home.get_valid_update_transform( + instance_id, + position, + yaw_radians, + mode, + Callable( + self, "_candidate_clear_of_players" + ).bind( + _session.get_local_identity_fingerprint(), decor_id + ), + ) + + +func _candidate_clear_of_players( + candidate: Dictionary, + owner_fingerprint: String, + decor_id: StringName, +) -> bool: + return ( + _world_service != null + and _world_service.is_decor_placement_clear_of_players( + owner_fingerprint, + decor_id, + candidate["position"], + float(candidate["yaw"]), + ) + ) + + +func request_enter(owner_fingerprint: String) -> bool: + if ( + _session == null + or not _session.is_gameplay_session_active() + or not _manifests_by_fingerprint.has(owner_fingerprint) + or get_local_space() != NetworkHomeProtocolType.WORLD_SPACE + ): + return false + return _submit_transition( + NetworkHomeProtocolType.TransitionAction.ENTER, + owner_fingerprint, + ) + + +func request_exit() -> bool: + var owner_fingerprint: String = get_local_home_owner_fingerprint() + if owner_fingerprint.is_empty(): + return false + return _submit_transition( + NetworkHomeProtocolType.TransitionAction.EXIT, + owner_fingerprint, + ) + + +func authorize_decor_purchase( + peer_id: int, + product_id: StringName, + resulting_count: int, + result_id: String, +) -> void: + if not _session.is_host() or peer_id <= 0 or result_id.is_empty(): + return + var counts: Dictionary = _authorized_owned_counts.get(peer_id, {}) + counts[String(product_id)] = resulting_count + _authorized_owned_counts[peer_id] = counts + _authorization_result_owner[result_id] = peer_id + + +func finalize_decor_purchase( + peer_id: int, + result_id: String, + applied: bool, +) -> void: + if _authorization_result_owner.get(result_id, 0) != peer_id: + return + _authorization_result_owner.erase(result_id) + if applied: + return + _authorized_owned_counts.erase(peer_id) + + +func refresh_world_presentations() -> void: + if _world_service == null: + return + _world_service.clear_presentations() + if not _world_service.is_world_ready(): + return + if not _session.is_host(): + for manifest: Dictionary in _manifests_by_fingerprint.values(): + _world_service.apply_manifest(manifest) + return + var local_fingerprint: String = _session.get_local_identity_fingerprint() + if ( + not _session.is_dedicated_host() + and not _manifests_by_fingerprint.has(local_fingerprint) + ): + publish_local_home() + var fingerprints: Array[String] = [] + fingerprints.assign(_manifests_by_fingerprint.keys()) + fingerprints.sort() + var reserved: Array[Transform3D] = [] + for fingerprint: String in fingerprints: + var manifest: Dictionary = _manifests_by_fingerprint[fingerprint] + var transform: Transform3D = _world_service.choose_exterior_transform( + int(manifest["owner_peer_id"]), reserved + ) + reserved.append(transform) + manifest["exterior_transform"] = ( + NetworkHomeProtocolType.transform_to_array(transform) + ) + _manifests_by_fingerprint[fingerprint] = manifest + _broadcast_manifest(manifest) + for fingerprint: String in fingerprints: + var manifest: Dictionary = _manifests_by_fingerprint[fingerprint] + _spawn_peer_at_exterior( + int(manifest["owner_peer_id"]), fingerprint + ) + + +func publish_local_home() -> bool: + if ( + _session == null + or not _session.is_gameplay_session_active() + or _session.is_dedicated_host() + or _local_home == null + ): + return false + if _session.is_host() and ( + _world_service == null or not _world_service.is_world_ready() + ): + return false + var home_data: Dictionary = _local_home.to_save_data() + var request: Dictionary = { + "request_id": _new_id("home"), + "session_id": _session.get_session_id(), + "owner_fingerprint": _session.get_local_identity_fingerprint(), + "home": home_data, + "digest": NetworkHomeProtocolType.manifest_digest(home_data), + } + request["sender_signature"] = _session.sign_local_action( + "portable_home_manifest", + NetworkHomeProtocolType.manifest_signature_fields(request), + ) + if _session.is_host(): + _process_manifest_request(_session.get_local_peer_id(), request) + else: + submit_home_manifest.rpc_id(1, request) + return true + + +@rpc( + "any_peer", "call_remote", "reliable", + NetworkHomeProtocolType.RELIABLE_CHANNEL, +) +func submit_home_manifest(data: Dictionary) -> void: + var sender_id: int = multiplayer.get_remote_sender_id() + if ( + _session == null + or not _session.is_host() + or not _session.is_authenticated_peer(sender_id) + ): + return + _process_manifest_request(sender_id, data) + + +func _process_manifest_request(peer_id: int, data: Dictionary) -> void: + if ( + not NetworkHomeProtocolType.validate_manifest_request(data) + or str(data["session_id"]) != _session.get_session_id() + ): + _reject_manifest(peer_id, "The RV update was invalid.") + return + var record := _session.get_peer_record(peer_id) + var fingerprint: String = str(data["owner_fingerprint"]) + if ( + record == null + or record.identity_fingerprint != fingerprint + or not _session.verify_peer_action( + peer_id, + "portable_home_manifest", + NetworkHomeProtocolType.manifest_signature_fields(data), + data["sender_signature"], + ) + ): + _reject_manifest(peer_id, "The RV owner could not be verified.") + return + var home_data: Dictionary = PlayerHomeStateType.sanitize_save_data( + data["home"] + ) + var prior: Dictionary = _manifests_by_fingerprint.get(fingerprint, {}) + var is_first_manifest: bool = prior.is_empty() + if not _valid_manifest_revision(peer_id, prior, home_data): + _reject_manifest(peer_id, "The RV update was rejected by the host.") + return + if not _moved_decor_clear_of_players(fingerprint, prior, home_data): + _reject_manifest(peer_id, "A player is in the way of that decor.") + return + var manifest: Dictionary + if prior.is_empty(): + if _manifests_by_fingerprint.size() >= MAX_MANIFESTS: + _reject_manifest(peer_id, "This room cannot place another RV.") + return + var reserved: Array[Transform3D] = [] + for existing: Dictionary in _manifests_by_fingerprint.values(): + reserved.append(NetworkHomeProtocolType.array_to_transform( + existing["exterior_transform"] + )) + var exterior_transform: Transform3D = ( + _world_service.choose_exterior_transform(peer_id, reserved) + ) + manifest = { + "owner_peer_id": peer_id, + "owner_fingerprint": fingerprint, + "home": home_data, + "exterior_transform": ( + NetworkHomeProtocolType.transform_to_array(exterior_transform) + ), + "interior_index": _next_interior_index, + } + _next_interior_index += 1 + else: + manifest = prior.duplicate(true) + manifest["home"] = home_data + manifest["owner_peer_id"] = peer_id + _manifests_by_fingerprint[fingerprint] = manifest + _fingerprint_by_peer[peer_id] = fingerprint + _consume_owned_authorizations(peer_id, home_data) + _broadcast_manifest(manifest) + if is_first_manifest: + _spawn_peer_at_exterior(peer_id, fingerprint) + + +func _valid_manifest_revision( + peer_id: int, + prior_manifest: Dictionary, + home_data: Dictionary, +) -> bool: + if prior_manifest.is_empty(): + # A portable RV is owned by the player's signed local save. A new host has + # no prior room ledger with which to compare its first manifest. + return true + var prior_home: Dictionary = prior_manifest["home"] + if ( + int(home_data["revision"]) <= int(prior_home["revision"]) + or int(home_data["tier"]) != int(prior_home["tier"]) + or str(home_data["exterior_id"]) != str(prior_home["exterior_id"]) + ): + return false + var prior_owned: Dictionary = prior_home["owned_decor"] + var next_owned: Dictionary = home_data["owned_decor"] + var all_ids: Dictionary[String, bool] = {} + for value: Variant in prior_owned.keys(): + all_ids[str(value)] = true + for value: Variant in next_owned.keys(): + all_ids[str(value)] = true + var authorized: Dictionary = _authorized_owned_counts.get(peer_id, {}) + for product_id: String in all_ids: + var prior_count: int = int(prior_owned.get(product_id, 0)) + var next_count: int = int(next_owned.get(product_id, 0)) + if prior_count == next_count: + continue + if next_count < prior_count or int(authorized.get(product_id, -1)) != next_count: + return false + return true + + +func _moved_decor_clear_of_players( + owner_fingerprint: String, + prior_manifest: Dictionary, + home_data: Dictionary, +) -> bool: + if _world_service == null: + return false + var prior_by_instance: Dictionary[String, Dictionary] = {} + if not prior_manifest.is_empty(): + var prior_home: Dictionary = prior_manifest.get("home", {}) + for value: Variant in prior_home.get("placements", []): + if typeof(value) != TYPE_DICTIONARY: + continue + var prior_placement: Dictionary = value + prior_by_instance[str( + prior_placement.get("instance_id", "") + )] = prior_placement + for value: Variant in home_data.get("placements", []): + if typeof(value) != TYPE_DICTIONARY: + return false + var placement: Dictionary = value + var instance_id: String = str(placement.get("instance_id", "")) + var prior_placement: Dictionary = prior_by_instance.get( + instance_id, {} + ) + if ( + not prior_placement.is_empty() + and _same_decor_transform(prior_placement, placement) + ): + continue + var decor_id := StringName(str(placement.get("decor_id", ""))) + var position: Vector3 = _placement_position(placement) + if ( + not position.is_finite() + or not _world_service.is_decor_placement_clear_of_players( + owner_fingerprint, + decor_id, + position, + float(placement.get("yaw", 0.0)), + ) + ): + return false + return true + + +static func _same_decor_transform( + first: Dictionary, + second: Dictionary, +) -> bool: + if str(first.get("decor_id", "")) != str(second.get("decor_id", "")): + return false + var first_position: Vector3 = _placement_position(first) + var second_position: Vector3 = _placement_position(second) + return ( + first_position.is_equal_approx(second_position) + and is_equal_approx( + float(first.get("yaw", 0.0)), + float(second.get("yaw", 0.0)), + ) + ) + + +static func _placement_position(placement: Dictionary) -> Vector3: + var values: Array = placement.get("position", []) + if values.size() != 3: + return Vector3.INF + return Vector3( + float(values[0]), float(values[1]), float(values[2]) + ) + + +func _consume_owned_authorizations(peer_id: int, home_data: Dictionary) -> void: + var authorized: Dictionary = _authorized_owned_counts.get(peer_id, {}) + if authorized.is_empty(): + return + var owned: Dictionary = home_data["owned_decor"] + for product_id: String in authorized.keys(): + if int(owned.get(product_id, -1)) == int(authorized[product_id]): + authorized.erase(product_id) + if authorized.is_empty(): + _authorized_owned_counts.erase(peer_id) + else: + _authorized_owned_counts[peer_id] = authorized + + +func _broadcast_manifest(manifest: Dictionary) -> void: + if _world_service != null and _world_service.is_world_ready(): + _world_service.apply_manifest(manifest) + for peer_id: int in _session.get_authenticated_peer_ids(): + if peer_id == 1: + continue + receive_home_manifest.rpc_id(peer_id, manifest) + + +@rpc( + "authority", "call_remote", "reliable", + NetworkHomeProtocolType.RELIABLE_CHANNEL, +) +func receive_home_manifest(data: Dictionary) -> void: + if not NetworkHomeProtocolType.validate_manifest_broadcast(data): + return + var fingerprint: String = str(data["owner_fingerprint"]) + _manifests_by_fingerprint[fingerprint] = data.duplicate(true) + _fingerprint_by_peer[int(data["owner_peer_id"])] = fingerprint + if _world_service != null and _world_service.is_world_ready(): + _world_service.apply_manifest(data) + + +func _reject_manifest(peer_id: int, message: String) -> void: + var fingerprint: String = _fingerprint_for_peer(peer_id) + var canonical: Dictionary = _manifests_by_fingerprint.get(fingerprint, {}) + if peer_id == _session.get_local_peer_id(): + _apply_manifest_rejection(message, canonical) + else: + receive_home_manifest_rejection.rpc_id(peer_id, message, canonical) + + +@rpc( + "authority", "call_remote", "reliable", + NetworkHomeProtocolType.RELIABLE_CHANNEL, +) +func receive_home_manifest_rejection( + message: String, + canonical: Dictionary, +) -> void: + _apply_manifest_rejection(message, canonical) + + +func _apply_manifest_rejection(message: String, canonical: Dictionary) -> void: + if ( + canonical.is_empty() + or not NetworkHomeProtocolType.validate_manifest_broadcast(canonical) + ): + local_manifest_rejected.emit(message) + return + _suppress_local_submission = true + _local_home.restore_from_save_data(canonical["home"]) + _suppress_local_submission = false + _save_manager.save_if_dirty() + receive_home_manifest(canonical) + local_manifest_rejected.emit(message) + + +func _submit_transition(action: int, owner_fingerprint: String) -> bool: + var request: Dictionary = { + "request_id": _new_id("home_transition"), + "session_id": _session.get_session_id(), + "action": action, + "owner_fingerprint": owner_fingerprint, + } + request["sender_signature"] = _session.sign_local_action( + "portable_home_transition", + NetworkHomeProtocolType.transition_signature_fields(request), + ) + if _session.is_host(): + _process_transition_request(_session.get_local_peer_id(), request) + else: + submit_home_transition.rpc_id(1, request) + return true + + +@rpc( + "any_peer", "call_remote", "reliable", + NetworkHomeProtocolType.RELIABLE_CHANNEL, +) +func submit_home_transition(data: Dictionary) -> void: + var sender_id: int = multiplayer.get_remote_sender_id() + if ( + not _session.is_host() + or not _session.is_authenticated_peer(sender_id) + ): + return + _process_transition_request(sender_id, data) + + +func _process_transition_request(peer_id: int, data: Dictionary) -> void: + if ( + not NetworkHomeProtocolType.validate_transition_request(data) + or str(data["session_id"]) != _session.get_session_id() + or not _session.verify_peer_action( + peer_id, + "portable_home_transition", + NetworkHomeProtocolType.transition_signature_fields(data), + data["sender_signature"], + ) + ): + _send_transition_rejection(peer_id, "The RV transition was invalid.") + return + var owner_fingerprint: String = str(data["owner_fingerprint"]) + var action: int = int(data["action"]) + var avatar: Player = _spawn_service.get_avatar(peer_id) + var manifest: Dictionary = _manifests_by_fingerprint.get( + owner_fingerprint, {} + ) + if avatar == null or manifest.is_empty(): + _send_transition_rejection(peer_id, "That RV is unavailable.") + return + if action == NetworkHomeProtocolType.TransitionAction.ENTER: + var record := _session.get_peer_record(peer_id) + var owner_is_local: bool = ( + record != null and record.identity_fingerprint == owner_fingerprint + ) + var privacy: int = int((manifest["home"] as Dictionary)["privacy"]) + if ( + (not owner_is_local and privacy != PlayerHomeStateType.Privacy.OPEN) + or _session.get_peer_space(peer_id) + != NetworkHomeProtocolType.WORLD_SPACE + or not _world_service.is_avatar_near_exterior( + avatar, owner_fingerprint + ) + ): + _send_transition_rejection(peer_id, "You cannot enter that RV.") + return + _apply_host_transition( + peer_id, + NetworkHomeProtocolType.make_space_id(owner_fingerprint), + owner_fingerprint, + _world_service.get_interior_spawn_transform( + owner_fingerprint, peer_id + ), + ) + return + if ( + _session.get_peer_space(peer_id) + != NetworkHomeProtocolType.make_space_id(owner_fingerprint) + or not _world_service.is_avatar_near_interior_exit( + avatar, owner_fingerprint + ) + ): + _send_transition_rejection(peer_id, "Move closer to the RV door.") + return + _apply_host_transition( + peer_id, + NetworkHomeProtocolType.WORLD_SPACE, + owner_fingerprint, + _world_service.get_exterior_spawn_transform(owner_fingerprint), + ) + + +func _spawn_peer_at_exterior( + peer_id: int, + owner_fingerprint: String, +) -> void: + if ( + not _session.is_host() + or _session.get_peer_space(peer_id) + != NetworkHomeProtocolType.WORLD_SPACE + or _spawn_service.get_avatar(peer_id) == null + ): + return + _apply_host_transition( + peer_id, + NetworkHomeProtocolType.WORLD_SPACE, + owner_fingerprint, + _world_service.get_exterior_spawn_transform(owner_fingerprint), + ) + + +func _apply_host_transition( + peer_id: int, + space_id: StringName, + owner_fingerprint: String, + transform: Transform3D, +) -> void: + var result: Dictionary = { + "peer_id": peer_id, + "space_id": String(space_id), + "owner_fingerprint": owner_fingerprint, + "transform": NetworkHomeProtocolType.transform_to_array(transform), + } + _apply_transition_result(result) + for recipient_id: int in _session.get_authenticated_peer_ids(): + if recipient_id == 1: + continue + receive_home_transition.rpc_id(recipient_id, result) + _session.publish_authoritative_teleport(peer_id) + + +@rpc( + "authority", "call_remote", "reliable", + NetworkHomeProtocolType.RELIABLE_CHANNEL, +) +func receive_home_transition(data: Dictionary) -> void: + if ( + typeof(data.get("peer_id")) != TYPE_INT + or typeof(data.get("space_id")) not in [TYPE_STRING, TYPE_STRING_NAME] + or not NetworkIdentityCrypto.valid_fingerprint( + data.get("owner_fingerprint") + ) + ): + return + var transform: Transform3D = NetworkHomeProtocolType.array_to_transform( + data.get("transform") + ) + if transform == Transform3D(): + return + _apply_transition_result(data) + + +func _apply_transition_result(data: Dictionary) -> void: + var peer_id: int = int(data["peer_id"]) + var space_id := StringName(str(data["space_id"])) + if not _session.set_peer_space(peer_id, space_id): + return + var avatar: Player = _spawn_service.get_avatar(peer_id) + if avatar != null: + avatar.global_transform = NetworkHomeProtocolType.array_to_transform( + data["transform"] + ) + avatar.velocity = Vector3.ZERO + if peer_id == _session.get_local_peer_id(): + _world_service.set_local_space(space_id) + local_space_changed.emit( + space_id, str(data["owner_fingerprint"]) + ) + local_transition_finished.emit(true, "") + _refresh_peer_visibility() + + +func _send_transition_rejection(peer_id: int, message: String) -> void: + if peer_id == _session.get_local_peer_id(): + local_transition_finished.emit(false, message) + else: + receive_home_transition_rejection.rpc_id(peer_id, message) + + +@rpc( + "authority", "call_remote", "reliable", + NetworkHomeProtocolType.RELIABLE_CHANNEL, +) +func receive_home_transition_rejection(message: String) -> void: + local_transition_finished.emit( + false, message.left(NetworkHomeProtocolType.MAX_MESSAGE_LENGTH) + ) + + +func _refresh_peer_visibility() -> void: + var local_peer_id: int = _session.get_local_peer_id() + if local_peer_id <= 0: + return + for peer_id: int in _spawn_service.get_peer_ids(): + if peer_id == local_peer_id: + continue + _spawn_service.set_peer_presentation_visible( + peer_id, _session.peers_share_space(local_peer_id, peer_id) + ) + + +func _on_local_home_changed() -> void: + if _suppress_local_submission or _publish_queued: + return + _publish_queued = true + call_deferred("_publish_queued_home") + + +func _publish_queued_home() -> void: + _publish_queued = false + if _save_manager != null: + _save_manager.save_if_dirty() + publish_local_home() + + +func _on_join_authenticated() -> void: + publish_local_home() + + +func _on_peer_authenticated(peer_id: int, _display_name: String) -> void: + if not _session.is_host(): + return + for manifest: Dictionary in _manifests_by_fingerprint.values(): + receive_home_manifest.rpc_id(peer_id, manifest) + for existing_peer_id: int in _session.get_authenticated_peer_ids(): + if existing_peer_id == peer_id: + continue + var avatar: Player = _spawn_service.get_avatar(existing_peer_id) + if avatar == null: + continue + var space_id: StringName = _session.get_peer_space(existing_peer_id) + var owner_fingerprint: String = ( + String(space_id).trim_prefix("rv:") + if String(space_id).begins_with("rv:") + else _fingerprint_for_peer(existing_peer_id) + ) + if owner_fingerprint.is_empty(): + continue + receive_home_transition.rpc_id(peer_id, { + "peer_id": existing_peer_id, + "space_id": String(space_id), + "owner_fingerprint": owner_fingerprint, + "transform": NetworkHomeProtocolType.transform_to_array( + avatar.global_transform + ), + }) + + +func _on_peer_removed(peer_id: int) -> void: + var fingerprint: String = _fingerprint_by_peer.get(peer_id, "") + _fingerprint_by_peer.erase(peer_id) + _authorized_owned_counts.erase(peer_id) + if fingerprint.is_empty(): + return + if _session.is_host(): + for occupant_id: int in _session.get_authenticated_peer_ids(): + if ( + occupant_id == peer_id + or _session.get_peer_space(occupant_id) + != NetworkHomeProtocolType.make_space_id(fingerprint) + ): + continue + _apply_host_transition( + occupant_id, + NetworkHomeProtocolType.WORLD_SPACE, + fingerprint, + _world_service.get_exterior_spawn_transform(fingerprint), + ) + _manifests_by_fingerprint.erase(fingerprint) + _world_service.remove_presentation(fingerprint) + if _session.is_host(): + for recipient_id: int in _session.get_authenticated_peer_ids(): + if recipient_id != 1: + receive_home_removed.rpc_id(recipient_id, fingerprint) + + +@rpc( + "authority", "call_remote", "reliable", + NetworkHomeProtocolType.RELIABLE_CHANNEL, +) +func receive_home_removed(owner_fingerprint: String) -> void: + if not NetworkIdentityCrypto.valid_fingerprint(owner_fingerprint): + return + _manifests_by_fingerprint.erase(owner_fingerprint) + _world_service.remove_presentation(owner_fingerprint) + + +func _on_session_state_changed(state: NetworkSession.State) -> void: + if state in [NetworkSession.State.PRIVATE_HOST, NetworkSession.State.OPEN_HOST]: + if ( + not _session.is_dedicated_host() + and _world_service != null + and _world_service.is_world_ready() + ): + publish_local_home() + return + if state in [ + NetworkSession.State.INACTIVE, + NetworkSession.State.DISCONNECTING, + NetworkSession.State.CONNECTION_FAILED, + NetworkSession.State.SERVER_LOST, + ]: + _manifests_by_fingerprint.clear() + _fingerprint_by_peer.clear() + _authorized_owned_counts.clear() + _authorization_result_owner.clear() + _next_interior_index = 0 + _world_service.clear_presentations() + _world_service.set_local_space(NetworkHomeProtocolType.WORLD_SPACE) + local_space_changed.emit(NetworkHomeProtocolType.WORLD_SPACE, "") + + +func _fingerprint_for_peer(peer_id: int) -> String: + if _fingerprint_by_peer.has(peer_id): + return _fingerprint_by_peer[peer_id] + var record := _session.get_peer_record(peer_id) + return record.identity_fingerprint if record != null else "" + + +func _new_id(prefix: String) -> String: + return "%s:%s" % [ + prefix, Crypto.new().generate_random_bytes(16).hex_encode(), + ] diff --git a/network/network_home_service.gd.uid b/network/network_home_service.gd.uid new file mode 100644 index 0000000..be233ed --- /dev/null +++ b/network/network_home_service.gd.uid @@ -0,0 +1 @@ +uid://ong8kug36ku7 diff --git a/network/network_item_use_service.gd b/network/network_item_use_service.gd index cf2d5f9..024eca9 100644 --- a/network/network_item_use_service.gd +++ b/network/network_item_use_service.gd @@ -5,6 +5,7 @@ const FishingRodDataType = preload("res://items/fishing_rod_data.gd") const ArtShopStockType = preload("res://economy/art_shop_stock.gd") const FishingShopStockType = preload("res://economy/fishing_shop_stock.gd") +const DecorCatalogType = preload("res://homes/decor_catalog.gd") const MAX_LEDGER_ENTRIES: int = 64 @@ -394,6 +395,10 @@ func _apply_equipped(data: Dictionary) -> void: item_id == FishingShopStockType.STANDARD_SHOVEL_ID and bool(data["owns_item"]), ) + avatar.set_active_decor_package( + DecorCatalogType.has_product(item_id) + and bool(data["owns_item"]), + ) equipped_state_changed.emit( peer_id, StringName(str(data["item_id"])), int(data["category"]) ) diff --git a/network/network_protocol.gd b/network/network_protocol.gd index 20be022..49aca95 100644 --- a/network/network_protocol.gd +++ b/network/network_protocol.gd @@ -3,7 +3,7 @@ extends RefCounted const WorldLayoutType = preload("res://world/world_layout.gd") -const PROTOCOL_VERSION: int = 11 +const PROTOCOL_VERSION: int = 12 const GAME_BUILD: String = "prealpha" const MAX_GAME_VERSION_LENGTH: int = 64 const MAX_DISPLAY_NAME_LENGTH: int = 24 @@ -17,9 +17,9 @@ const MAX_SIGNATURE_LENGTH: int = 2048 # 8 reliable ordered session chat, 9 reliable private session mail, # 10 observer-only fishing summaries, 11 reliable movement animation state, # 12 reliable fish showcase state, 13 reliable world-spawn events, -# 14 reliable artwork state, 15 world-spawn snapshots, and 16 reliable -# fishing lifecycle. Bulk world/art payloads must not head-of-line block held -# items, fishing, or animation presentation. +# 14 reliable artwork state, 15 world-spawn snapshots, 16 reliable fishing +# lifecycle, and 17 reliable portable-home state. Bulk world/art payloads must +# not head-of-line block held items, fishing, animation, or home transitions. const SALE_RELIABLE_CHANNEL: int = 5 const SHOP_RELIABLE_CHANNEL: int = 6 const ITEM_RELIABLE_CHANNEL: int = 7 @@ -30,7 +30,8 @@ const SHOWCASE_RELIABLE_CHANNEL: int = 12 const WORLD_SPAWN_RELIABLE_CHANNEL: int = 13 const DRAWING_RELIABLE_CHANNEL: int = 14 const FISHING_RELIABLE_CHANNEL: int = 16 -const ENET_CHANNEL_COUNT: int = 17 +const HOME_RELIABLE_CHANNEL: int = 17 +const ENET_CHANNEL_COUNT: int = 18 const SURFACE_DRAWING_CAPABILITY: String = "surface_drawing_v2" const ART_SHOP_CAPABILITY: String = "art_shop_v1" const BACKPACK_SHOP_CAPABILITY: String = "backpack_shop_v1" @@ -45,6 +46,7 @@ const WORLD_LAYOUT_CAPABILITY: String = "world_layout_v1" const FRIENDS_CAPABILITY: String = "friends_v1" const MOVEMENT_RECONCILIATION_CAPABILITY: String = "movement_reconciliation_v2" const FISHING_REPLICATION_CAPABILITY: String = "fishing_replication_v2" +const HOME_CAPABILITY: String = "portable_home_v1" const DEFAULT_WORLD_SEED: int = 13001 const MAX_WORLD_SEED: int = 2147483646 @@ -202,6 +204,7 @@ static func make_client_hello( FRIENDS_CAPABILITY, MOVEMENT_RECONCILIATION_CAPABILITY, FISHING_REPLICATION_CAPABILITY, + HOME_CAPABILITY, ]), "cosmetic_snapshot": cosmetic_snapshot, "identity_fingerprint": identity_fingerprint, @@ -342,6 +345,7 @@ static func make_server_hello( FRIENDS_CAPABILITY, MOVEMENT_RECONCILIATION_CAPABILITY, FISHING_REPLICATION_CAPABILITY, + HOME_CAPABILITY, "chat_v1", "mail_v1", "profile_v1", diff --git a/network/network_session.gd b/network/network_session.gd index 8b99fd6..8add90f 100644 --- a/network/network_session.gd +++ b/network/network_session.gd @@ -141,6 +141,7 @@ var _last_server_protocol_version: int = 0 var _last_server_world_seed: int = NetworkProtocol.DEFAULT_WORLD_SEED var _last_server_world_layout: StringName = WorldLayout.GENERATED var _server_capabilities: PackedStringArray = PackedStringArray() +var _peer_space_ids: Dictionary[int, StringName] = {} var _profile_ready: bool = false var _player_identity: PlayerIdentityStore var _host_identity: HostIdentityStore @@ -334,6 +335,7 @@ func _register_player_host() -> void: NetworkProtocol.FRIENDS_CAPABILITY, NetworkProtocol.MOVEMENT_RECONCILIATION_CAPABILITY, NetworkProtocol.FISHING_REPLICATION_CAPABILITY, + NetworkProtocol.HOME_CAPABILITY, ]), ) _registry.update_appearance(1, _local_appearance_snapshot) @@ -661,6 +663,7 @@ func supports_server_capability(capability: StringName) -> bool: NetworkProtocol.FRIENDS_CAPABILITY, NetworkProtocol.MOVEMENT_RECONCILIATION_CAPABILITY, NetworkProtocol.FISHING_REPLICATION_CAPABILITY, + NetworkProtocol.HOME_CAPABILITY, "chat_v1", "mail_v1", "profile_v1", @@ -685,6 +688,21 @@ func get_authenticated_peer_ids() -> Array[int]: return _registry.get_peer_ids() +func set_peer_space(peer_id: int, space_id: StringName) -> bool: + if not _registry.has_peer(peer_id) or space_id.is_empty(): + return false + _peer_space_ids[peer_id] = space_id + return true + + +func get_peer_space(peer_id: int) -> StringName: + return _peer_space_ids.get(peer_id, &"world") + + +func peers_share_space(first_peer_id: int, second_peer_id: int) -> bool: + return get_peer_space(first_peer_id) == get_peer_space(second_peer_id) + + func get_peer_rtt_ms(peer_id: int) -> int: if peer_id == 1: return 0 @@ -1030,6 +1048,7 @@ func _on_peer_disconnected(peer_id: int) -> void: _pending_identity_challenges.erase(peer_id) _authenticated_identity_cache.erase(peer_id) _operator_peer_ids.erase(peer_id) + _peer_space_ids.erase(peer_id) _last_animation_state_by_peer.erase(peer_id) _pending_animation_state_by_peer.erase(peer_id) var recovery_attempt: String = _recovery_attempts.get(peer_id, "") @@ -1313,6 +1332,7 @@ func submit_client_hello(data: Dictionary) -> void: for required_capability: String in [ NetworkProtocol.MOVEMENT_RECONCILIATION_CAPABILITY, NetworkProtocol.FISHING_REPLICATION_CAPABILITY, + NetworkProtocol.HOME_CAPABILITY, ]: if required_capability not in client_capabilities: _reject_peer( @@ -1546,6 +1566,7 @@ func receive_server_hello(data: Dictionary) -> void: for required_capability: String in [ NetworkProtocol.MOVEMENT_RECONCILIATION_CAPABILITY, NetworkProtocol.FISHING_REPLICATION_CAPABILITY, + NetworkProtocol.HOME_CAPABILITY, ]: if required_capability not in _server_capabilities: _teardown_peer() @@ -1578,6 +1599,7 @@ func receive_server_hello(data: Dictionary) -> void: NetworkProtocol.FRIENDS_CAPABILITY, NetworkProtocol.MOVEMENT_RECONCILIATION_CAPABILITY, NetworkProtocol.FISHING_REPLICATION_CAPABILITY, + NetworkProtocol.HOME_CAPABILITY, ]), ) _registry.update_appearance(local_peer_id, _local_appearance_snapshot) @@ -1623,6 +1645,7 @@ func receive_peer_despawn(peer_id: int) -> void: if state != State.JOINED_CLIENT: return _operator_peer_ids.erase(peer_id) + _peer_space_ids.erase(peer_id) _last_animation_state_by_peer.erase(peer_id) _pending_animation_state_by_peer.erase(peer_id) _registry.remove_peer(peer_id) @@ -2247,6 +2270,8 @@ func _broadcast_movement_snapshots() -> void: continue var snapshots: Array = [] for subject_id: int in peer_ids: + if not peers_share_space(recipient_id, subject_id): + continue var subject_avatar: Player = _spawn_service.get_avatar(subject_id) if subject_avatar == null: continue @@ -2315,7 +2340,7 @@ func _broadcast_movement_animation_updates(peer_ids: Array[int]) -> void: _animation_refresh_accumulator, ANIMATION_REFRESH_INTERVAL, ) - var updates: Array = [] + var updates_by_subject: Dictionary[int, Array] = {} for subject_id: int in peer_ids: var avatar: Player = _spawn_service.get_avatar(subject_id) if avatar == null: @@ -2333,12 +2358,18 @@ func _broadcast_movement_animation_updates(peer_ids: Array[int]) -> void: _last_animation_state_by_peer[subject_id] = state.duplicate(true) var encoded: Array = _encode_movement_animation(subject_id, state) if not encoded.is_empty(): - updates.append(encoded) - if updates.is_empty(): + updates_by_subject[subject_id] = encoded + if updates_by_subject.is_empty(): return for recipient_id: int in peer_ids: if recipient_id == 1: continue + var updates: Array = [] + for subject_id: int in updates_by_subject: + if peers_share_space(recipient_id, subject_id): + updates.append(updates_by_subject[subject_id]) + if updates.is_empty(): + continue receive_movement_animations.rpc_id(recipient_id, updates) _movement_animation_packets_sent += 1 _movement_animation_states_sent += updates.size() @@ -2888,6 +2919,7 @@ func _teardown_peer() -> void: _pending_animation_state_by_peer.clear() _last_local_animation_action_signature.clear() _server_capabilities = PackedStringArray() + _peer_space_ids.clear() _server_identity_fingerprint = "" _server_identity_public_key = "" _session_identity_keys.clear() diff --git a/network/network_shop_protocol.gd b/network/network_shop_protocol.gd index 2de9cc1..da9419a 100644 --- a/network/network_shop_protocol.gd +++ b/network/network_shop_protocol.gd @@ -4,6 +4,7 @@ extends RefCounted const CAPABILITY: StringName = &"shop_v1" const ART_CAPABILITY: StringName = &"art_shop_v1" const BACKPACK_CAPABILITY: StringName = &"backpack_shop_v1" +const DECOR_CAPABILITY: StringName = &"portable_home_v1" const RELIABLE_CHANNEL: int = NetworkProtocol.SHOP_RELIABLE_CHANNEL const MAX_ID_LENGTH: int = 96 const MAX_MESSAGE_LENGTH: int = 160 @@ -18,6 +19,7 @@ enum ProductCategory { ART_KIT, ART_UPGRADE, BACKPACK_CAPACITY_UPGRADE, + DECOR, } diff --git a/network/network_shop_service.gd b/network/network_shop_service.gd index 6f31c40..8294b53 100644 --- a/network/network_shop_service.gd +++ b/network/network_shop_service.gd @@ -8,8 +8,10 @@ const ItemDataType = preload("res://items/item_data.gd") const FishingRodDataType = preload("res://items/fishing_rod_data.gd") const OwnedItemType = preload("res://items/owned_item.gd") const ArtShopStockType = preload("res://economy/art_shop_stock.gd") +const DecorCatalogType = preload("res://homes/decor_catalog.gd") -const SHOP_ID: StringName = &"main_fishing_shop" +const FISHING_SHOP_ID: StringName = &"main_fishing_shop" +const DECOR_SHOP_ID: StringName = &"rv_decor_shop" const REEL_PRODUCT_ID: StringName = &"reel_speed_upgrade" const BARRIER_PRODUCT_ID: StringName = &"barrier_power_upgrade" const COOLER_PRODUCT_ID: StringName = &"cooler_capacity_upgrade" @@ -31,6 +33,7 @@ var _session: NetworkSession var _spawn_service: PlayerSpawnService var _network_fishing: NetworkFishingService var _interaction: FishingShopInteraction +var _decor_interaction: DecorShopInteraction var _wallet: PlayerWallet var _bag: PlayerBag var _item_catalog: ItemCatalog @@ -47,6 +50,8 @@ var _received_results: Dictionary[String, bool] = {} var _applied_results: Dictionary[String, bool] = {} var _pending_local_request: Dictionary = {} var _reservations: PlayerAssetReservationService +var _home_state: PlayerHomeState +var _network_home: NetworkHomeService func setup( @@ -63,6 +68,9 @@ func setup( save_manager: PlayerSaveManager, reservations: PlayerAssetReservationService, inventory_layout: PlayerInventoryLayout = null, + home_state: PlayerHomeState = null, + network_home: NetworkHomeService = null, + decor_interaction: DecorShopInteraction = null, ) -> void: _session = session _spawn_service = spawn_service @@ -77,6 +85,9 @@ func setup( _save_manager = save_manager _reservations = reservations _inventory_layout = inventory_layout + _home_state = home_state + _network_home = network_home + _decor_interaction = decor_interaction if not _session.peer_removed.is_connected(_on_peer_removed): _session.peer_removed.connect(_on_peer_removed) if not _session.state_changed.is_connected(_on_session_state_changed): @@ -87,6 +98,12 @@ func set_shop_interaction(interaction: FishingShopInteraction) -> void: _interaction = interaction +func set_decor_shop_interaction( + interaction: DecorShopInteraction, +) -> void: + _decor_interaction = interaction + + func can_request_purchase() -> bool: return ( _session != null @@ -124,6 +141,19 @@ func can_request_backpack_purchase() -> bool: ) +func can_request_decor_purchase() -> bool: + return ( + can_request_purchase() + and _home_state != null + and ( + _session.is_host() + or _session.supports_server_capability( + NetworkShopProtocol.DECOR_CAPABILITY + ) + ) + ) + + func is_local_purchase_pending() -> bool: return not _pending_local_request.is_empty() @@ -193,6 +223,15 @@ func request_backpack_capacity_upgrade() -> String: ) +func request_decor(product_id: StringName) -> String: + return _request_purchase( + product_id, + NetworkShopProtocol.ProductCategory.DECOR, + 1, + _home_state.get_owned_count(product_id) if _home_state != null else 0, + ) + + func request_art_kit() -> String: return _request_purchase( ArtShopStockType.ART_KIT_ITEM_ID, @@ -269,11 +308,25 @@ func _request_purchase( product_id, category, 0, 0, ) return "" + if ( + category == NetworkShopProtocol.ProductCategory.DECOR + and not can_request_decor_purchase() + ): + local_purchase_finished.emit( + "", false, "Decor require a newer server.", + product_id, category, 0, 0, + ) + return "" var request_id: String = _new_id("shop") + var shop_id: StringName = ( + DECOR_SHOP_ID + if category == NetworkShopProtocol.ProductCategory.DECOR + else FISHING_SHOP_ID + ) var request: Dictionary = { "request_id": request_id, "session_id": _session.get_session_id(), - "shop_id": str(SHOP_ID), + "shop_id": str(shop_id), "product_id": str(product_id), "category": category, "quantity": quantity, @@ -345,16 +398,34 @@ func _handle_purchase_request(peer_id: int, data: Dictionary) -> void: _rejected_result(data, "A purchase is already pending.") ) return - if not _is_shop_available_for_peer(peer_id): + var requested_shop_id := StringName(str(data["shop_id"])) + if not _is_shop_available_for_peer(peer_id, requested_shop_id): var avatar: Player = _spawn_service.get_avatar(peer_id) + var requested_interaction: FishingShopInteraction = ( + _decor_interaction + if requested_shop_id == DECOR_SHOP_ID + else _interaction + ) var message: String = ( "The shop is unavailable." - if avatar == null or _interaction == null + if avatar == null or requested_interaction == null else "Move closer to the shop." ) _record_and_send(peer_id, _rejected_result(data, message)) return var result: Dictionary = _build_authoritative_result(peer_id, data) + if ( + bool(result.get("accepted", false)) + and int(result.get("category", -1)) + == NetworkShopProtocol.ProductCategory.DECOR + and _network_home != null + ): + _network_home.authorize_decor_purchase( + peer_id, + StringName(str(result["product_id"])), + int(result["resulting_state"]), + str(result["result_id"]), + ) _pending_by_peer[peer_id] = request_id _record_and_send(peer_id, result) @@ -368,10 +439,24 @@ func _build_authoritative_result( var quantity: int = request["quantity"] var wallet_balance: int = request["wallet_balance"] var current_state: int = request["current_state"] + if ( + category == NetworkShopProtocol.ProductCategory.DECOR + and _network_home != null + ): + var authoritative_count: int = ( + _network_home.get_authoritative_owned_count(peer_id, product_id) + ) + if authoritative_count >= 0: + current_state = authoritative_count var cost: int = -1 var resulting_state: int = current_state var rejection: String = "" - if StringName(str(request["shop_id"])) != SHOP_ID: + var expected_shop_id: StringName = ( + DECOR_SHOP_ID + if category == NetworkShopProtocol.ProductCategory.DECOR + else FISHING_SHOP_ID + ) + if StringName(str(request["shop_id"])) != expected_shop_id: rejection = "The shop is unavailable." elif quantity < 1: rejection = "Purchase could not be completed." @@ -545,6 +630,19 @@ func _build_authoritative_result( resulting_state = PlayerArtUnlocks.resulting_mask( current_state, product_id ) + NetworkShopProtocol.ProductCategory.DECOR: + cost = DecorCatalogType.get_price(product_id) + if ( + not DecorCatalogType.has_product(product_id) + or quantity != 1 + or current_state < 0 + or current_state + >= DecorCatalogType.MAX_OWNED_PER_PRODUCT + or cost < 0 + ): + rejection = "Decor is unavailable." + else: + resulting_state = current_state + 1 if rejection.is_empty() and (cost < 0 or wallet_balance < cost): rejection = "Insufficient funds." if not rejection.is_empty(): @@ -667,6 +765,9 @@ func _apply_purchase_result(data: Dictionary) -> void: if _inventory_layout != null else 0 ) var art_snapshot: int = _art_unlocks.get_unlock_mask() + var home_snapshot: Dictionary = ( + _home_state.to_save_data() if _home_state != null else {} + ) var applied: bool = _apply_local_product(data) if not applied or not _save_manager.save_if_dirty(): _bag.replace_all_items(bag_snapshot) @@ -676,6 +777,8 @@ func _apply_purchase_result(data: Dictionary) -> void: if _inventory_layout != null: _inventory_layout.restore_backpack_level(backpack_snapshot) _art_unlocks.restore_mask(art_snapshot) + if _home_state != null and not home_snapshot.is_empty(): + _home_state.restore_from_save_data(home_snapshot) _wallet.restore_balance(wallet_snapshot) _save_manager.save_if_dirty() _fail_local_apply(data, "Purchase could not be completed.") @@ -696,6 +799,7 @@ func _validate_local_result(data: Dictionary) -> String: or _cooler_capacity == null or _art_unlocks == null or _save_manager == null + or _home_state == null or _wallet.get_balance() != int(data["expected_wallet"]) or str(data["product_id"]) != str(_pending_local_request.get("product_id", "")) @@ -806,6 +910,20 @@ func _validate_local_result(data: Dictionary) -> String: or cost != ArtShopStockType.UPGRADE_PRICE ): return "Purchase could not be completed." + NetworkShopProtocol.ProductCategory.DECOR: + if ( + not DecorCatalogType.has_product(product_id) + or _home_state.get_owned_count(product_id) != expected_state + or resulting_state != expected_state + 1 + or cost != DecorCatalogType.get_price(product_id) + or expected_state >= DecorCatalogType.MAX_OWNED_PER_PRODUCT + or not _bag.can_add_item(product_id, 1) + ): + return ( + "Your inventory is full." + if not _bag.can_add_item(product_id, 1) + else "Purchase could not be completed." + ) _: return "Purchase could not be completed." return "" @@ -845,6 +963,12 @@ func _apply_local_product(data: Dictionary) -> bool: return _art_unlocks.purchase_product( product_id, _wallet, int(data["total_cost"]) ) + NetworkShopProtocol.ProductCategory.DECOR: + return ( + _wallet.debit(int(data["total_cost"])) + and _bag.add_item(product_id, 1) + and _home_state.add_owned_decor(product_id, 1) + ) return false @@ -921,7 +1045,7 @@ func _handle_acknowledgement( peer_id: int, result_id: String, request_id: String, - _applied: bool, + applied: bool, message: String, ) -> void: if ( @@ -933,20 +1057,32 @@ func _handle_acknowledgement( or _result_owners.get(result_id, 0) != peer_id ): return + if _network_home != null: + _network_home.finalize_decor_purchase( + peer_id, result_id, applied + ) _acknowledged_results[result_id] = true _bound_dictionary(_acknowledged_results) if _pending_by_peer.get(peer_id, "") == request_id: _pending_by_peer.erase(peer_id) -func _is_shop_available_for_peer(peer_id: int) -> bool: +func _is_shop_available_for_peer( + peer_id: int, + shop_id: StringName, +) -> bool: + var interaction: FishingShopInteraction = ( + _decor_interaction + if shop_id == DECOR_SHOP_ID + else _interaction + ) if ( _session == null or not _session.is_host() or not _session.is_gameplay_session_active() or _spawn_service == null - or _interaction == null - or not is_instance_valid(_interaction) + or interaction == null + or not is_instance_valid(interaction) ): return false var avatar: Player = _spawn_service.get_avatar(peer_id) @@ -957,7 +1093,7 @@ func _is_shop_available_for_peer(peer_id: int) -> bool: _network_fishing == null or not _network_fishing.has_peer_attempt(peer_id) ) - and _interaction.is_avatar_in_range(avatar) + and interaction.is_avatar_in_range(avatar) ) diff --git a/player/player.gd b/player/player.gd index 64d4ffe..30807be 100644 --- a/player/player.gd +++ b/player/player.gd @@ -427,6 +427,9 @@ class ShowcaseCameraSnapshot: @export_range(0.0, 1.0, 0.01) var controller_camera_deadzone: float = 0.2 @export var invert_camera_y: bool = false var _swap_hotbar_camera_scroll: bool = false +var _rv_interior_camera_mode: bool = false +var _rv_interior_environment: Environment +var _rv_previous_camera_environment: Environment @export_range(-89.0, 0.0, 0.5) var minimum_pitch_degrees: float = -65.0 @export_range(0.0, 89.0, 0.5) var maximum_pitch_degrees: float = 45.0 @export var minimum_zoom: float = 2.0 @@ -471,6 +474,8 @@ var _held_fish_attachment_offset: Vector3 = Vector3(0.0, 0.08, 0.04) var _held_fish_sprite: Sprite3D var _held_art_kit_display: Node3D var _held_art_kit_sprite: Sprite3D +var _held_decor_package_display: Node3D +var _held_decor_package_visible: bool = false var _catch_attachment_offset: Vector3 = Vector3(0.0, 0.08, 0.04) var _gravity: float = float(ProjectSettings.get_setting("physics/3d/default_gravity")) @@ -992,6 +997,7 @@ func _initialize_held_item_attachment() -> void: _held_art_kit_sprite = attachment.get_node( "HeldArtKitDisplay/HeldArtKitSprite" ) as Sprite3D + _held_decor_package_display = _build_decor_package_display(attachment) _catch_display = attachment.get_node("CatchDisplay") as Node3D _catch_attachment_offset = _catch_display.position _catch_sprite = attachment.get_node("CatchDisplay/CatchSprite") as Sprite3D @@ -1322,9 +1328,7 @@ func _update_character_animation() -> void: and supports_network_animation_action(animation_action_id) and _character_animation_player.has_animation(animation_action_id) ) - var held_show_item_visible: bool = ( - _held_fish_visible or _held_art_kit_visible - ) + var held_show_item_visible: bool = _has_held_show_item() var requested_animation: Array[StringName] = [] if _pocket_visual_active: requested_animation = [_pocket_visual_animation] @@ -1766,7 +1770,11 @@ func _unhandled_input(event: InputEvent) -> void: var mouse_zoom_in: bool = ( event is InputEventMouseButton - and event.shift_pressed != _swap_hotbar_camera_scroll + and ( + (not event.shift_pressed) + if _rv_interior_camera_mode + else event.shift_pressed != _swap_hotbar_camera_scroll + ) and event.is_action_pressed("camera_zoom_in") ) var controller_zoom_in: bool = ( @@ -1775,7 +1783,11 @@ func _unhandled_input(event: InputEvent) -> void: ) var mouse_zoom_out: bool = ( event is InputEventMouseButton - and event.shift_pressed != _swap_hotbar_camera_scroll + and ( + (not event.shift_pressed) + if _rv_interior_camera_mode + else event.shift_pressed != _swap_hotbar_camera_scroll + ) and event.is_action_pressed("camera_zoom_out") ) var controller_zoom_out: bool = ( @@ -1963,7 +1975,11 @@ func get_active_gameplay_camera() -> Camera3D: func _set_target_zoom(value: float) -> void: - _target_zoom = clampf(value, minimum_zoom, maximum_zoom) + _target_zoom = clampf( + value, + 1.25 if _rv_interior_camera_mode else minimum_zoom, + 16.0 if _rv_interior_camera_mode else maximum_zoom, + ) func _apply_axis_deadzone(value: float) -> float: @@ -3021,6 +3037,49 @@ func apply_camera_settings( _swap_hotbar_camera_scroll = swap_hotbar_camera_scroll +func set_rv_interior_camera_mode( + enabled: bool, + excluded_wall_rids: Array[RID] = [], +) -> void: + if enabled != _rv_interior_camera_mode: + if enabled: + _rv_previous_camera_environment = _camera.environment + _camera.environment = _get_rv_interior_environment() + if _free_camera != null: + _free_camera.environment = _camera.environment + else: + _camera.environment = _rv_previous_camera_environment + if _free_camera != null: + _free_camera.environment = _camera.environment + _rv_previous_camera_environment = null + _rv_interior_camera_mode = enabled + if _spring_arm == null: + return + _spring_arm.clear_excluded_objects() + if enabled: + for collider_rid: RID in excluded_wall_rids: + if collider_rid.is_valid(): + _spring_arm.add_excluded_object(collider_rid) + _set_target_zoom(_target_zoom) + + +func _get_rv_interior_environment() -> Environment: + if _rv_interior_environment != null: + return _rv_interior_environment + _rv_interior_environment = Environment.new() + _rv_interior_environment.background_mode = Environment.BG_COLOR + _rv_interior_environment.background_color = Color("020506") + _rv_interior_environment.ambient_light_source = ( + Environment.AMBIENT_SOURCE_COLOR + ) + _rv_interior_environment.ambient_light_color = Color("d6caaa") + _rv_interior_environment.ambient_light_energy = 1.0 + _rv_interior_environment.reflected_light_source = ( + Environment.REFLECTION_SOURCE_DISABLED + ) + return _rv_interior_environment + + func is_camera_input_enabled() -> bool: return _camera_input_enabled @@ -3147,6 +3206,23 @@ func set_active_shovel(should_show: bool) -> void: ) +func set_active_decor_package(should_show: bool) -> void: + var changed: bool = _held_decor_package_visible != should_show + _held_decor_package_visible = should_show + if _held_decor_package_display != null: + _held_decor_package_display.visible = should_show + if should_show: + _fishing_rod.visible = false + if _catching_net != null: + _catching_net.visible = false + if _shovel != null: + _shovel.visible = false + elif changed: + _apply_active_rod_visibility() + if changed: + _update_character_animation() + + func _apply_fishing_rod_model(rod: FishingRodDataType) -> void: var next_id: StringName = rod.item_id if rod != null else StringName() if next_id == _active_fishing_rod_id: @@ -3319,7 +3395,52 @@ func set_held_fish( func _has_held_show_item() -> bool: - return _held_fish_visible or _held_art_kit_visible + return ( + _held_fish_visible + or _held_art_kit_visible + or _held_decor_package_visible + ) + + +func _build_decor_package_display(parent: Node3D) -> Node3D: + var display := Node3D.new() + display.name = "HeldDecorPackageDisplay" + display.position = Vector3(0.0, 0.1, 0.04) + display.rotation = Vector3(0.15, 0.0, -0.55) + display.visible = false + parent.add_child(display) + + var sack := MeshInstance3D.new() + sack.name = "Sack" + var sack_mesh := SphereMesh.new() + sack_mesh.radius = 0.22 + sack_mesh.height = 0.48 + sack_mesh.radial_segments = 8 + sack_mesh.rings = 4 + sack_mesh.material = _decor_package_material(Color("a87843")) + sack.mesh = sack_mesh + display.add_child(sack) + + var tie := MeshInstance3D.new() + tie.name = "Tie" + var tie_mesh := CylinderMesh.new() + tie_mesh.top_radius = 0.1 + tie_mesh.bottom_radius = 0.12 + tie_mesh.height = 0.08 + tie_mesh.radial_segments = 8 + tie_mesh.material = _decor_package_material(Color("513829")) + tie.mesh = tie_mesh + tie.position = Vector3(0.0, 0.22, 0.0) + display.add_child(tie) + return display + + +func _decor_package_material(color: Color) -> StandardMaterial3D: + var material := StandardMaterial3D.new() + material.albedo_color = color + material.roughness = 1.0 + material.shading_mode = BaseMaterial3D.SHADING_MODE_PER_VERTEX + return material func _clear_held_fish() -> void: diff --git a/save/player_save_manager.gd b/save/player_save_manager.gd index 1ad74a1..56fd49c 100644 --- a/save/player_save_manager.gd +++ b/save/player_save_manager.gd @@ -34,8 +34,9 @@ const WorldWeatherServiceType = preload( const WorldLayoutType = preload("res://world/world_layout.gd") const PlayerJobServiceType = preload("res://jobs/player_job_service.gd") const PlayerType = preload("res://player/player.gd") +const PlayerHomeStateType = preload("res://homes/player_home_state.gd") -const SAVE_VERSION: int = 10 +const SAVE_VERSION: int = 11 const LEGACY_SAVE_FILENAME := "player_save.json" const ARCHIVE_EXTENSION := ".nfsave" const BASIC_ROD_ID: StringName = &"basic_fishing_rod" @@ -76,6 +77,7 @@ class LoadSnapshot: WorldWeatherServiceType.SUNNY_DURATION_RANGE.x ) var jobs_data: Dictionary = PlayerJobServiceType.default_save_data() + var home_data: Dictionary = PlayerHomeStateType.default_save_data() @export_range(0.05, 5.0, 0.05) var autosave_delay: float = 0.5 @@ -96,6 +98,7 @@ var _world_time: WorldTimeServiceType var _world_weather: WorldWeatherServiceType var _jobs: PlayerJobServiceType var _player: PlayerType +var _home_state: PlayerHomeStateType var _autosave_timer: Timer var _is_configured: bool = false var _is_restoring: bool = false @@ -175,6 +178,7 @@ func setup( world_weather: WorldWeatherServiceType, jobs: PlayerJobServiceType, player: PlayerType, + home_state: PlayerHomeStateType, ) -> void: _inventory = inventory _collection_log = collection_log @@ -192,6 +196,7 @@ func setup( _world_weather = world_weather _jobs = jobs _player = player + _home_state = home_state _is_configured = ( _inventory != null and _collection_log != null @@ -209,6 +214,7 @@ func setup( and _world_weather != null and _jobs != null and _player != null + and _home_state != null ) if not _is_configured: push_error("PlayerSaveManager setup is missing required references.") @@ -255,6 +261,8 @@ func setup( _player.active_bait_changed.connect(_on_active_tackle_changed) if not _player.active_lure_changed.is_connected(_on_active_tackle_changed): _player.active_lure_changed.connect(_on_active_tackle_changed) + if not _home_state.changed.is_connected(_mark_dirty): + _home_state.changed.connect(_mark_dirty) func load_player_data() -> bool: @@ -360,6 +368,9 @@ func load_player_data() -> bool: snapshot.world_weather_seconds_remaining, ) var jobs_restored: bool = _jobs.restore_from_save_data(snapshot.jobs_data) + var home_restored: bool = _home_state.restore_from_save_data( + snapshot.home_data + ) _is_restoring = false if ( not inventory_restored @@ -376,13 +387,14 @@ func load_player_data() -> bool: or not world_time_restored or not world_weather_restored or not jobs_restored + or not home_restored ): push_error( ( "Validated player save could not be restored: " + "inventory=%s collection=%s wallet=%s bag=%s tackle=%s hotbar=%s " + "upgrades=%s cooler=%s layout=%s art=%s experience=%s " - + "time=%s weather=%s jobs=%s" + + "time=%s weather=%s jobs=%s home=%s" ) % [ inventory_restored, @@ -399,6 +411,7 @@ func load_player_data() -> bool: world_time_restored, world_weather_restored, jobs_restored, + home_restored, ] ) return false @@ -899,6 +912,7 @@ func _build_save_dictionary() -> Dictionary: ), }, "jobs": _jobs.to_save_data(), + "home": _home_state.to_save_data(), } @@ -913,6 +927,7 @@ func _build_load_snapshot(save_data: Dictionary) -> LoadSnapshot: or typeof(save_data.get("inventory_layout")) != TYPE_DICTIONARY or typeof(save_data.get("experience")) != TYPE_DICTIONARY or typeof(save_data.get("jobs")) != TYPE_DICTIONARY + or typeof(save_data.get("home")) != TYPE_DICTIONARY ): return null var wallet_data: Dictionary = save_data["wallet"] @@ -924,6 +939,7 @@ func _build_load_snapshot(save_data: Dictionary) -> LoadSnapshot: var inventory_layout_data: Dictionary = save_data["inventory_layout"] var experience_data: Dictionary = save_data["experience"] var jobs_data: Dictionary = save_data["jobs"] + var home_data: Dictionary = save_data["home"] var world_data: Dictionary = {} if typeof(save_data.get("world")) == TYPE_DICTIONARY: world_data = save_data["world"] @@ -1006,6 +1022,12 @@ func _build_load_snapshot(save_data: Dictionary) -> LoadSnapshot: if not PlayerJobServiceType.validate_save_data(jobs_data): return null snapshot.jobs_data = jobs_data.duplicate(true) + var sanitized_home: Dictionary = PlayerHomeStateType.sanitize_save_data( + home_data + ) + if sanitized_home.is_empty(): + return null + snapshot.home_data = sanitized_home if world_data.has("time_hours"): snapshot.world_time_hours = _read_world_time_hours( world_data["time_hours"] @@ -1340,6 +1362,8 @@ func _migrate_save( migrated = _migrate_version_8_to_9(migrated) 9: migrated = _migrate_version_9_to_10(migrated) + 10: + migrated = _migrate_version_10_to_11(migrated) _: return {} if migrated.is_empty(): @@ -1597,6 +1621,13 @@ func _migrate_version_9_to_10(data: Dictionary) -> Dictionary: return migrated +func _migrate_version_10_to_11(data: Dictionary) -> Dictionary: + var migrated: Dictionary = data.duplicate(true) + migrated["home"] = PlayerHomeStateType.default_save_data() + migrated["save_version"] = 11 + return migrated + + func _mark_dirty() -> void: if ( _is_restoring @@ -1866,6 +1897,7 @@ func _restore_defaults() -> void: _world_layout = WorldLayoutType.GENERATED _world_seed = DEFAULT_WORLD_SEED _jobs.reset_to_defaults() + _home_state.reset_to_defaults() _is_restoring = false _is_dirty = false diff --git a/tests/art_tools_validation.gd b/tests/art_tools_validation.gd index 4bfab98..146fb4e 100644 --- a/tests/art_tools_validation.gd +++ b/tests/art_tools_validation.gd @@ -19,9 +19,15 @@ func _run() -> void: for _frame: int in 8: await process_frame assert(bool(main.get("_application_initialized"))) + assert(bool(main.call( + "_apply_world", WorldLayout.STARTER_ISLAND, 1, true + ))) + assert(bool(main.call( + "_prepare_host_world", WorldLayout.STARTER_ISLAND, 1 + ))) assert(bool(main.call("_prepare_private_host"))) var save_manager := main.get("_save_manager") as PlayerSaveManager - assert(save_manager.initialize_new_game()) + assert(save_manager.initialize_new_game(1, WorldLayout.STARTER_ISLAND)) main.call("_enter_gameplay") await physics_frame await physics_frame @@ -94,11 +100,7 @@ func _run() -> void: assert(keyboard_mapping.reset_mapping()) await process_frame var shop_prompt_key := game_ui.get_node("%ShopPromptKey") as Label - var storage_prompt_message := game_ui.get_node( - "%StoragePromptMessage" - ) as Label assert(shop_prompt_key.text == "E") - assert(storage_prompt_message.text == "E open storage") var remapped_interact := InputEventKey.new() remapped_interact.physical_keycode = KEY_F remapped_interact.pressed = true @@ -108,7 +110,6 @@ func _run() -> void: )) await process_frame assert(shop_prompt_key.text == "F") - assert(storage_prompt_message.text == "F open storage") assert(keyboard_mapping.reset_mapping()) await process_frame assert(toolbar.get_parent() == chat_ui.get_parent()) diff --git a/tests/fish_hotbar_showcase_validation.gd b/tests/fish_hotbar_showcase_validation.gd index 753f480..9f4623a 100644 --- a/tests/fish_hotbar_showcase_validation.gd +++ b/tests/fish_hotbar_showcase_validation.gd @@ -104,7 +104,10 @@ func _run() -> void: var hotbar_data: Dictionary = parsed["hotbar"] assert(typeof(hotbar_data.get("fish_slots")) == TYPE_ARRAY) assert(str((hotbar_data["fish_slots"] as Array)[1]) == fish_catch.catch_id) - assert(int(parsed["save_version"]) == 10) + assert(int(parsed["save_version"]) == 11) + assert(not PlayerHomeState.sanitize_save_data( + parsed.get("home", {}) + ).is_empty()) assert( int(parsed["experience"]["total_experience"]) == 125 diff --git a/tests/fish_quality_validation.gd b/tests/fish_quality_validation.gd index b6e6bfd..d8e482b 100644 --- a/tests/fish_quality_validation.gd +++ b/tests/fish_quality_validation.gd @@ -485,7 +485,7 @@ func _validate_version_four_migration() -> void: version_four, 4, ) - assert(int(migrated.get("save_version", -1)) == 10) + assert(int(migrated.get("save_version", -1)) == 11) assert(int((migrated["experience"] as Dictionary)["total_experience"]) == 0) assert( is_equal_approx( @@ -509,4 +509,7 @@ func _validate_version_four_migration() -> void: assert( PlayerJobService.validate_save_data(migrated.get("jobs", {})) ) + assert(not PlayerHomeState.sanitize_save_data( + migrated.get("home", {}) + ).is_empty()) manager.queue_free() diff --git a/tests/home_spawn_multiplayer_validation.gd b/tests/home_spawn_multiplayer_validation.gd new file mode 100644 index 0000000..1f16147 --- /dev/null +++ b/tests/home_spawn_multiplayer_validation.gd @@ -0,0 +1,178 @@ +extends SceneTree + +const MainScene: PackedScene = preload("res://main/main.tscn") +const TEST_PORT: int = 18222 + + +func _initialize() -> void: + call_deferred("_run") + + +func _run() -> void: + var arguments: PackedStringArray = OS.get_cmdline_user_args() + if arguments.has("host"): + await _run_host() + return + if arguments.has("client"): + await _run_client() + return + push_error("Home spawn validation needs host or client mode.") + quit(1) + + +func _run_host() -> void: + var main: Node = await _create_initialized_main() + var session := main.get_node("%NetworkSession") as NetworkSession + var network_home := main.get_node( + "%NetworkHomeService" + ) as NetworkHomeService + var home_world := main.get_node("%HomeWorldService") as HomeWorldService + var spawn_service := main.get_node( + "%PlayerSpawnService" + ) as PlayerSpawnService + var save_manager := main.get("_save_manager") as PlayerSaveManager + assert(bool(main.call( + "_apply_world", WorldLayout.STARTER_ISLAND, 1, true + ))) + assert(bool(main.call( + "_prepare_host_world", WorldLayout.STARTER_ISLAND, 1 + ))) + assert(save_manager.initialize_new_game(1, WorldLayout.STARTER_ISLAND)) + assert(session.start_private_host(TEST_PORT)) + main.call("_enter_gameplay") + assert(session.set_host_open(true)) + + var host_fingerprint: String = session.get_local_identity_fingerprint() + assert(await _wait_for_home(network_home, host_fingerprint)) + var host_avatar: Player = spawn_service.get_avatar(1) + var host_spawn: Transform3D = home_world.get_exterior_spawn_transform( + host_fingerprint + ) + assert(_same_door_position(host_avatar.global_position, host_spawn.origin)) + assert(network_home.request_enter(host_fingerprint)) + await physics_frame + host_avatar.global_position = home_world.get_interior_exit_position( + host_fingerprint + ) + assert(network_home.request_exit()) + await physics_frame + assert(_same_door_position(host_avatar.global_position, host_spawn.origin)) + + var remote_peer_id: int = await _wait_for_remote_peer(session) + assert(remote_peer_id > 1) + var remote_record := session.get_peer_record(remote_peer_id) + var remote_fingerprint: String = remote_record.identity_fingerprint + assert(await _wait_for_home(network_home, remote_fingerprint)) + var remote_avatar: Player = spawn_service.get_avatar(remote_peer_id) + var remote_spawn: Transform3D = home_world.get_exterior_spawn_transform( + remote_fingerprint + ) + assert(_same_door_position( + remote_avatar.global_position, remote_spawn.origin + )) + + var disconnect_deadline: int = Time.get_ticks_msec() + 12000 + while ( + Time.get_ticks_msec() < disconnect_deadline + and session.is_authenticated_peer(remote_peer_id) + ): + await process_frame + assert(not session.is_authenticated_peer(remote_peer_id)) + print("Home spawn multiplayer host validation: PASS") + await _cleanup(main, session) + + +func _run_client() -> void: + var main: Node = await _create_initialized_main() + main.call( + "_on_title_join_game_requested", + "127.0.0.1:%d" % TEST_PORT, + ) + var session := main.get_node("%NetworkSession") as NetworkSession + var network_home := main.get_node( + "%NetworkHomeService" + ) as NetworkHomeService + var home_world := main.get_node("%HomeWorldService") as HomeWorldService + var deadline: int = Time.get_ticks_msec() + 20000 + while Time.get_ticks_msec() < deadline: + await process_frame + if session.state == NetworkSession.State.VERIFYING_SERVER_IDENTITY: + main.call("_confirm_server_trust") + if session.is_joined_client() and bool(main.get("_gameplay_started")): + break + assert(session.is_joined_client()) + var fingerprint: String = session.get_local_identity_fingerprint() + assert(await _wait_for_home(network_home, fingerprint)) + var player := main.get("_player") as Player + var exterior_spawn: Transform3D = ( + home_world.get_exterior_spawn_transform(fingerprint) + ) + deadline = Time.get_ticks_msec() + 5000 + while ( + Time.get_ticks_msec() < deadline + and not _same_door_position( + player.global_position, exterior_spawn.origin + ) + ): + await physics_frame + assert(_same_door_position( + player.global_position, exterior_spawn.origin + )) + print("Home spawn multiplayer client validation: PASS") + await _cleanup(main, session) + + +func _create_initialized_main() -> Node: + root.size = Vector2i(1280, 720) + var main: Node = MainScene.instantiate() + root.add_child(main) + for _frame: int in 4: + await process_frame + if not bool(main.get("_application_initialized")): + main.call("_activate_selected_data_path", "", true) + for _frame: int in 8: + await process_frame + assert(bool(main.get("_application_initialized"))) + return main + + +func _wait_for_home( + network_home: NetworkHomeService, + fingerprint: String, +) -> bool: + var deadline: int = Time.get_ticks_msec() + 10000 + while Time.get_ticks_msec() < deadline: + await process_frame + var manifests: Dictionary = network_home.get( + "_manifests_by_fingerprint" + ) + if manifests.has(fingerprint): + return true + return false + + +func _wait_for_remote_peer(session: NetworkSession) -> int: + var deadline: int = Time.get_ticks_msec() + 20000 + while Time.get_ticks_msec() < deadline: + await process_frame + for peer_id: int in session.get_authenticated_peer_ids(): + if peer_id != session.get_local_peer_id(): + return peer_id + return 0 + + +func _same_door_position(first: Vector3, second: Vector3) -> bool: + return ( + Vector2(first.x, first.z).distance_to(Vector2(second.x, second.z)) + < 0.08 + and absf(first.y - second.y) < 0.3 + ) + + +func _cleanup(main: Node, session: NetworkSession) -> void: + session.disconnect_session("") + main.queue_free() + for _frame: int in 4: + await process_frame + await create_timer(0.1).timeout + quit() diff --git a/tests/home_spawn_multiplayer_validation.gd.uid b/tests/home_spawn_multiplayer_validation.gd.uid new file mode 100644 index 0000000..06150f2 --- /dev/null +++ b/tests/home_spawn_multiplayer_validation.gd.uid @@ -0,0 +1 @@ +uid://bndtkip5p6xma diff --git a/tests/job_system_validation.gd b/tests/job_system_validation.gd index 1fe5ceb..89e46f6 100644 --- a/tests/job_system_validation.gd +++ b/tests/job_system_validation.gd @@ -205,8 +205,11 @@ func _run() -> void: ) assert(bool(decoded.get("ok", false))) var save_data: Dictionary = decoded["data"] - assert(int(save_data.get("save_version", -1)) == 10) + assert(int(save_data.get("save_version", -1)) == 11) assert(PlayerJobService.validate_save_data(save_data.get("jobs", {}))) + assert(not PlayerHomeState.sanitize_save_data( + save_data.get("home", {}) + ).is_empty()) _validate_pause_session_switch(main, session) main.queue_free() diff --git a/tests/player_experience_validation.gd b/tests/player_experience_validation.gd index 5e9dbef..a76a3dd 100644 --- a/tests/player_experience_validation.gd +++ b/tests/player_experience_validation.gd @@ -143,7 +143,7 @@ func _validate_save_migration() -> void: version_five, 5, ) - assert(int(migrated.get("save_version", -1)) == 10) + assert(int(migrated.get("save_version", -1)) == 11) var experience_data: Dictionary = migrated.get("experience", {}) assert(int(experience_data.get("total_experience", -1)) == 0) var world_data: Dictionary = migrated.get("world", {}) @@ -155,6 +155,9 @@ func _validate_save_migration() -> void: assert( PlayerJobService.validate_save_data(migrated.get("jobs", {})) ) + assert(not PlayerHomeState.sanitize_save_data( + migrated.get("home", {}) + ).is_empty()) manager.queue_free() diff --git a/tests/progression_archive_validation.gd b/tests/progression_archive_validation.gd index c3f9569..30f0df6 100644 --- a/tests/progression_archive_validation.gd +++ b/tests/progression_archive_validation.gd @@ -22,11 +22,24 @@ func _run() -> void: var save_manager := main.get("_save_manager") as PlayerSaveManager var player := main.get("_player") as Player var data_root := main.get("_data_root") as PlayerDataRoot - assert(save_manager != null and player != null and data_root != null) + var home_state := main.get("_home_state") as PlayerHomeState + assert( + save_manager != null + and player != null + and data_root != null + and home_state != null + ) assert(save_manager.initialize_new_game(864209)) save_manager.set_autosave_enabled(true) assert(player.wallet.restore_balance(4321)) assert(player.bag.add_item(&"coffee")) + assert(home_state.add_owned_decor(&"basic_cube")) + assert(not home_state.place_decor( + &"basic_cube", + Vector3.ZERO, + 0.0, + PlayerHomeState.PlacementMode.GRID, + ).is_empty()) assert(save_manager.save_now()) var save_path: String = str(save_manager.get("_save_path")) @@ -38,7 +51,14 @@ func _run() -> void: _assert_opaque(save_path) var decoded: Dictionary = ProgressionSaveCodec.read_local_save(save_path) assert(bool(decoded.get("ok", false))) - assert(int((decoded["data"] as Dictionary)["save_version"]) == 10) + assert(int((decoded["data"] as Dictionary)["save_version"]) == 11) + assert(not PlayerHomeState.sanitize_save_data( + (decoded["data"] as Dictionary).get("home", {}) + ).is_empty()) + assert( + ((decoded["data"] as Dictionary)["home"] as Dictionary) + .get("placements", []).size() == 1 + ) var legacy_container_path: String = data_root.progression_backup_directory().path_join( "netfishing-container.nfsave" ) @@ -74,6 +94,8 @@ func _run() -> void: assert(save_manager.load_player_data()) assert(player.wallet.get_balance() == 4321) assert(save_manager.get_world_seed() == 864209) + assert(home_state.get_owned_count(&"basic_cube") == 1) + assert(home_state.get_placed_count(&"basic_cube") == 1) var legacy_data: Dictionary = ( ProgressionSaveCodec.read_local_save(save_path)["data"] diff --git a/tests/unified_inventory_validation.gd b/tests/unified_inventory_validation.gd index e9a0d85..6928969 100644 --- a/tests/unified_inventory_validation.gd +++ b/tests/unified_inventory_validation.gd @@ -35,6 +35,41 @@ func _run() -> void: hotbar.setup(bag, ItemCatalogResource, catches, layout) assert(PlayerInventoryLayout.INVENTORY_CAPACITIES == [9, 18, 27, 36]) assert(PlayerCoolerCapacity.CAPACITIES == [9, 18, 27, 36, 45, 54, 63, 72]) + var basic_cube: ItemData = ItemCatalogResource.get_item_by_id(&"basic_cube") + assert(basic_cube != null) + assert(basic_cube.icon != null) + assert(basic_cube.hotbar_allowed) + assert(bag.add_item(&"basic_cube")) + assert(layout.is_item_in_inventory(&"basic_cube")) + assert(hotbar.assign_item(0, &"basic_cube")) + assert(hotbar.get_item_id(0) == &"basic_cube") + assert( + layout.get_container( + PlayerInventoryLayout.EntryKind.ITEM, + &"basic_cube", + ) == PlayerInventoryLayout.InventoryContainer.HOTBAR + ) + assert(hotbar.clear_slot(0)) + assert(layout.is_item_in_inventory(&"basic_cube")) + assert(bag.remove_item(&"basic_cube")) + var packed_decor_slot: int = hotbar.find_first_empty_slot() + assert(packed_decor_slot == 0) + assert(layout.prepare_new_item_placement( + &"basic_cube", + PlayerInventoryLayout.InventoryContainer.HOTBAR, + packed_decor_slot, + )) + assert(bag.add_item(&"basic_cube")) + assert( + layout.get_container( + PlayerInventoryLayout.EntryKind.ITEM, + &"basic_cube", + ) == PlayerInventoryLayout.InventoryContainer.HOTBAR + ) + assert(hotbar.assign_item(packed_decor_slot, &"basic_cube")) + assert(hotbar.select_slot(packed_decor_slot)) + assert(hotbar.get_selected_item_id() == &"basic_cube") + assert(bag.remove_item(&"basic_cube")) assert(bag.add_item(&"coffee", 3)) assert(layout.get_inventory_count() == 1) diff --git a/ui/decor_shop.gd b/ui/decor_shop.gd new file mode 100644 index 0000000..9292806 --- /dev/null +++ b/ui/decor_shop.gd @@ -0,0 +1,323 @@ +class_name DecorShop +extends Control + +const INPUT_OWNER: StringName = &"decor_shop" +const DecorCatalogType = preload("res://homes/decor_catalog.gd") +const UtilityPageStyleType = preload("res://ui/utility_page_style.gd") + +signal menu_visibility_changed(is_open: bool) +signal menu_exit_started + +var _player: Player +var _wallet: PlayerWallet +var _fishing_spot: FishingSpot +var _interaction: DecorShopInteraction +var _bag: PlayerBag +var _home_state: PlayerHomeState +var _network_shop: NetworkShopService +var _wallet_label: Label +var _owned_label: Label +var _feedback: Label +var _buy_button: Button +var _close_button: Button +var _transaction_pending: bool = false +var _prior_movement_enabled: bool = true +var _prior_camera_enabled: bool = true +var _prior_mouse_mode: Input.MouseMode = Input.MOUSE_MODE_VISIBLE + + +func _ready() -> void: + UtilityPageStyleType.apply_page(self) + _build_ui() + hide() + + +func setup( + player: Player, + wallet: PlayerWallet, + fishing_spot: FishingSpot, + interaction: DecorShopInteraction, + bag: PlayerBag, + home_state: PlayerHomeState, + network_shop: NetworkShopService, +) -> void: + _player = player + _wallet = wallet + _fishing_spot = fishing_spot + _interaction = interaction + _bag = bag + _home_state = home_state + _network_shop = network_shop + if not _wallet.balance_changed.is_connected(_on_wallet_changed): + _wallet.balance_changed.connect(_on_wallet_changed) + if not _bag.contents_changed.is_connected(_refresh): + _bag.contents_changed.connect(_refresh) + if not _home_state.changed.is_connected(_refresh): + _home_state.changed.connect(_refresh) + if ( + _network_shop != null + and not _network_shop.local_purchase_pending.is_connected( + _on_purchase_pending + ) + ): + _network_shop.local_purchase_pending.connect(_on_purchase_pending) + _network_shop.local_purchase_finished.connect(_on_purchase_finished) + _refresh() + + +func set_world_interaction(interaction: DecorShopInteraction) -> void: + _interaction = interaction + + +func open_shop() -> bool: + if ( + visible + or _player == null + or _wallet == null + or _fishing_spot == null + or _interaction == null + or not _interaction.is_local_player_in_range() + or not _fishing_spot.can_open_fishing_shop() + ): + return false + _prior_movement_enabled = _player.is_movement_enabled() + _prior_camera_enabled = _player.is_camera_input_enabled() + _prior_mouse_mode = Input.mouse_mode + _player.set_movement_enabled(false) + _player.set_camera_input_enabled(false) + _fishing_spot.set_local_menu_input_suppressed(INPUT_OWNER, true) + Input.mouse_mode = Input.MOUSE_MODE_VISIBLE + _transaction_pending = ( + _network_shop != null + and _network_shop.is_local_purchase_pending() + ) + _feedback.text = "" + _refresh() + show() + _buy_button.call_deferred("grab_focus") + menu_visibility_changed.emit(true) + return true + + +func close_shop(restore_controls: bool = true) -> void: + if not visible: + return + menu_exit_started.emit() + get_viewport().gui_release_focus() + hide() + if _fishing_spot != null: + _fishing_spot.set_local_menu_input_suppressed(INPUT_OWNER, false) + if restore_controls and _player != null: + _player.set_movement_enabled(_prior_movement_enabled) + _player.set_camera_input_enabled(_prior_camera_enabled) + Input.mouse_mode = _prior_mouse_mode + menu_visibility_changed.emit(false) + + +func consume_escape() -> bool: + if not visible: + return false + close_shop() + return true + + +func close_for_range_exit() -> void: + close_shop() + + +func close_for_water_recovery() -> void: + close_shop(false) + + +func close_for_session_end() -> void: + close_shop(false) + + +func _unhandled_input(event: InputEvent) -> void: + if not visible or not event.is_action_pressed("ui_cancel"): + return + close_shop() + get_viewport().set_input_as_handled() + + +func _purchase_cube() -> void: + if _network_shop == null or _transaction_pending: + return + var request_id: String = _network_shop.request_decor( + DecorCatalogType.BASIC_CUBE_ID + ) + if request_id.is_empty(): + _refresh() + + +func _on_purchase_pending(_request_id: String) -> void: + _transaction_pending = true + _feedback.text = "purchasing…" + _refresh() + + +func _on_purchase_finished( + _request_id: String, + accepted: bool, + message: String, + product_id: StringName, + category: int, + _quantity: int, + total_cost: int, +) -> void: + if ( + category != NetworkShopProtocol.ProductCategory.DECOR + or product_id != DecorCatalogType.BASIC_CUBE_ID + ): + return + _transaction_pending = false + _feedback.text = ( + "basic cube purchased · %d fishcoin spent" % total_cost + if accepted + else message.to_lower() + ) + _refresh() + + +func _on_wallet_changed(_balance: int, _delta: int) -> void: + _refresh() + + +func _refresh() -> void: + if _wallet_label == null: + return + var balance: int = _wallet.get_balance() if _wallet != null else 0 + var owned: int = ( + _home_state.get_owned_count(DecorCatalogType.BASIC_CUBE_ID) + if _home_state != null else 0 + ) + var carried: int = ( + _bag.get_quantity(DecorCatalogType.BASIC_CUBE_ID) + if _bag != null else 0 + ) + _wallet_label.text = "%d fishcoins" % balance + _owned_label.text = "owned %d · packed %d" % [owned, carried] + _buy_button.disabled = ( + _transaction_pending + or _wallet == null + or not _wallet.can_afford( + DecorCatalogType.get_price(DecorCatalogType.BASIC_CUBE_ID) + ) + or _bag == null + or not _bag.can_add_item(DecorCatalogType.BASIC_CUBE_ID, 1) + or owned >= DecorCatalogType.MAX_OWNED_PER_PRODUCT + ) + + +func _build_ui() -> void: + set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT) + z_index = 83 + mouse_filter = Control.MOUSE_FILTER_STOP + var blocker := ColorRect.new() + blocker.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT) + blocker.color = Color(0.02, 0.08, 0.10, 0.55) + blocker.mouse_filter = Control.MOUSE_FILTER_STOP + add_child(blocker) + + var panel := PanelContainer.new() + panel.set_anchors_preset(Control.PRESET_CENTER) + panel.position = Vector2(-440.0, -250.0) + panel.size = Vector2(880.0, 500.0) + panel.add_theme_stylebox_override( + "panel", + UtilityPageStyleType.rounded_style( + UtilityPageStyleType.OCEAN_PANEL_DEEP, 24 + ), + ) + add_child(panel) + var margin := MarginContainer.new() + for side: StringName in [ + &"margin_left", &"margin_top", &"margin_right", &"margin_bottom", + ]: + margin.add_theme_constant_override(side, 28) + panel.add_child(margin) + var layout := VBoxContainer.new() + layout.add_theme_constant_override("separation", 18) + margin.add_child(layout) + + var header := HBoxContainer.new() + header.add_theme_constant_override("separation", 12) + layout.add_child(header) + var title := Label.new() + title.text = "decor" + title.add_theme_font_size_override("font_size", 38) + title.size_flags_horizontal = Control.SIZE_EXPAND_FILL + header.add_child(title) + _wallet_label = Label.new() + _wallet_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_RIGHT + _wallet_label.add_theme_font_size_override("font_size", 22) + header.add_child(_wallet_label) + + var item_panel := PanelContainer.new() + item_panel.size_flags_vertical = Control.SIZE_EXPAND_FILL + item_panel.add_theme_stylebox_override( + "panel", + UtilityPageStyleType.rounded_style( + UtilityPageStyleType.OCEAN_FIELD, 18 + ), + ) + layout.add_child(item_panel) + var item_margin := MarginContainer.new() + for side: StringName in [ + &"margin_left", &"margin_top", &"margin_right", &"margin_bottom", + ]: + item_margin.add_theme_constant_override(side, 24) + item_panel.add_child(item_margin) + var item_row := HBoxContainer.new() + item_row.add_theme_constant_override("separation", 28) + item_margin.add_child(item_row) + var preview := Panel.new() + preview.custom_minimum_size = Vector2(150.0, 150.0) + preview.add_theme_stylebox_override( + "panel", + UtilityPageStyleType.rounded_style(Color("b77a55"), 12), + ) + item_row.add_child(preview) + var details := VBoxContainer.new() + details.size_flags_horizontal = Control.SIZE_EXPAND_FILL + details.add_theme_constant_override("separation", 10) + item_row.add_child(details) + var item_name := Label.new() + item_name.text = DecorCatalogType.get_display_name( + DecorCatalogType.BASIC_CUBE_ID + ) + item_name.add_theme_font_size_override("font_size", 32) + details.add_child(item_name) + var description := Label.new() + description.text = DecorCatalogType.get_description( + DecorCatalogType.BASIC_CUBE_ID + ) + description.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART + description.add_theme_font_size_override("font_size", 20) + description.size_flags_vertical = Control.SIZE_EXPAND_FILL + details.add_child(description) + _owned_label = Label.new() + _owned_label.add_theme_font_size_override("font_size", 18) + details.add_child(_owned_label) + _buy_button = Button.new() + _buy_button.text = "buy · 1 fishcoin" + _buy_button.custom_minimum_size = Vector2(260.0, 58.0) + UtilityPageStyleType.apply_ocean_button(_buy_button) + _buy_button.pressed.connect(_purchase_cube) + details.add_child(_buy_button) + + var footer := HBoxContainer.new() + footer.add_theme_constant_override("separation", 12) + layout.add_child(footer) + _feedback = Label.new() + _feedback.size_flags_horizontal = Control.SIZE_EXPAND_FILL + _feedback.add_theme_font_size_override("font_size", 18) + footer.add_child(_feedback) + _close_button = Button.new() + _close_button.text = "close" + _close_button.custom_minimum_size = Vector2(150.0, 50.0) + UtilityPageStyleType.apply_ocean_button(_close_button) + _close_button.pressed.connect(close_shop) + footer.add_child(_close_button) + _buy_button.focus_neighbor_bottom = _buy_button.get_path_to(_close_button) + _close_button.focus_neighbor_top = _close_button.get_path_to(_buy_button) diff --git a/ui/decor_shop.gd.uid b/ui/decor_shop.gd.uid new file mode 100644 index 0000000..ed65203 --- /dev/null +++ b/ui/decor_shop.gd.uid @@ -0,0 +1 @@ +uid://810ck3mvbn5v diff --git a/ui/decor_shop.tscn b/ui/decor_shop.tscn new file mode 100644 index 0000000..2b26f04 --- /dev/null +++ b/ui/decor_shop.tscn @@ -0,0 +1,14 @@ +[gd_scene load_steps=2 format=3] + +[ext_resource type="Script" path="res://ui/decor_shop.gd" id="1_script"] + +[node name="DecorShop" type="Control"] +unique_name_in_owner = true +visible = false +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_script") diff --git a/ui/game_ui.gd b/ui/game_ui.gd index 3ce0d17..585efc9 100644 --- a/ui/game_ui.gd +++ b/ui/game_ui.gd @@ -20,6 +20,7 @@ const TitleScreenType = preload("res://ui/title_screen.gd") const PauseMenuType = preload("res://ui/pause_menu.gd") const NetworkSessionType = preload("res://network/network_session.gd") const FishingShopType = preload("res://ui/fishing_shop.gd") +const DecorShopType = preload("res://ui/decor_shop.gd") const SettingsPanelType = preload("res://ui/settings_panel.gd") const PlayerFishingUpgradesType = preload( "res://progression/player_fishing_upgrades.gd" @@ -27,7 +28,11 @@ const PlayerFishingUpgradesType = preload( const ShopInteractionType = preload( "res://world/fishing_shop_interaction.gd" ) +const DecorShopInteractionType = preload( + "res://world/decor_shop_interaction.gd" +) const PlayerStorageType = preload("res://ui/player_storage.gd") +const HomeDecorToolbarType = preload("res://ui/home_decor_toolbar.gd") const PlayerStorageInteractionType = preload( "res://world/player_storage_interaction.gd" ) @@ -71,6 +76,9 @@ const MAIN_BUBBLE_PROFILE: BubbleMenuProfile = preload( const ACTIVE_BAIT_EMPTY_ICON: Texture2D = preload( "res://ui/icons/pictograms/x_dark.png" ) +const RV_STORAGE_ICON: Texture2D = preload( + "res://ui/icons/tab_menu/inventory_simple.png" +) signal pixelation_settings_visibility_changed(is_visible: bool) signal crisp_reset_focus_requested @@ -82,6 +90,7 @@ signal virtual_pointer_mode_changed(is_active: bool) signal social_prompt_accepted signal social_prompt_declined signal data_root_changed +signal rv_storage_requested const VIRTUAL_MOUSE_INPUT_OWNER: StringName = &"controller_virtual_mouse" const EMOTE_RADIAL_CAMERA_OWNER: StringName = &"emote_radial_menu" @@ -145,7 +154,10 @@ const SHOP_NPC_SPEECH_COOLDOWN_MILLISECONDS: int = 5000 @onready var _social_prompt: BubbleConfirmationPage = %SocialPrompt @onready var _hotbar_ui: HotbarUIType = %Hotbar @onready var _fishing_shop: FishingShopType = %FishingShop +@onready var _decor_shop: DecorShopType = %DecorShop @onready var _player_storage: PlayerStorageType = %PlayerStorage +@onready var _home_decor_toolbar: HomeDecorToolbarType = %HomeDecorToolbar +@onready var _rv_storage_button: Button = %RVStorageButton @onready var _storage_prompt: PanelContainer = %StoragePrompt @onready var _storage_prompt_message: Label = %StoragePromptMessage @onready var _shop_prompt: Control = %ShopPrompt @@ -195,6 +207,7 @@ var _chat_input_open: bool = false var _player_menu_hotbar_visible: bool = false var _main_shop_buyer: FishBuyerProfileType var _shop_interaction: ShopInteractionType +var _decor_shop_interaction: DecorShopInteractionType var _storage_interaction: PlayerStorageInteractionType var _surface_drawing: NetworkSurfaceDrawingService var _surface_drawing_hotbar_selected: bool = false @@ -221,14 +234,17 @@ var _controller_text_entry_request: Callable var _controller_text_entry_is_open: Callable var _controller_text_entry_close: Callable var _restore_chat_keyboard_after_fishing: bool = false +var _rv_storage_button_requested_visible: bool = false func _ready() -> void: _prioritize_surface_drawing_pointer_input() _bite_prompt_button.pressed.connect(_on_bite_prompt_pressed) + _rv_storage_button.pressed.connect(_on_rv_storage_button_pressed) _social_prompt.confirmed.connect(_accept_social_prompt) _social_prompt.cancelled.connect(_decline_social_prompt) _apply_active_bait_indicator_style() + _apply_rv_storage_button_style() _refresh_active_bait_indicator() _refresh_interaction_prompt_bindings() # Reward feedback must remain above full-screen canonical menus. Keeping the @@ -346,11 +362,13 @@ func setup( fishing_upgrades: PlayerFishingUpgradesType, shop_interaction: ShopInteractionType, storage_interaction: PlayerStorageInteractionType, + decor_shop_interaction: DecorShopInteractionType, item_effects: PlayerItemEffectsType, cooler_capacity: PlayerCoolerCapacityType, network_session: NetworkSessionType, network_sale_service: NetworkSaleService, network_shop_service: NetworkShopService, + home_state: PlayerHomeState, network_chat_service: NetworkChatService, network_profile: NetworkProfilePreferences, spawn_service: PlayerSpawnService, @@ -494,6 +512,15 @@ func setup( network_sale_service, reservations, ) + _decor_shop.setup( + player, + wallet, + fishing_spot, + decor_shop_interaction, + bag, + home_state, + network_shop_service, + ) _player_storage.setup( player, fishing_spot, @@ -509,6 +536,8 @@ func setup( ) _fishing_shop.menu_visibility_changed.connect(_on_shop_visibility_changed) _fishing_shop.menu_exit_started.connect(_on_shop_exit_started) + _decor_shop.menu_visibility_changed.connect(_on_shop_visibility_changed) + _decor_shop.menu_exit_started.connect(_on_shop_exit_started) _fishing_shop.sell_fish_requested.connect(_on_shop_sell_fish_requested) _fishing_shop.shop_cooler_return_requested.connect( _on_shop_cooler_return_requested @@ -518,6 +547,7 @@ func setup( ) _main_shop_buyer = main_shop_buyer _shop_interaction = shop_interaction + _decor_shop_interaction = decor_shop_interaction _storage_interaction = storage_interaction _surface_drawing = surface_drawing if ( @@ -540,11 +570,14 @@ func setup( func set_world_interactions( shop_interaction: ShopInteractionType, storage_interaction: PlayerStorageInteractionType, + decor_shop_interaction: DecorShopInteractionType, ) -> void: _shop_interaction = shop_interaction _storage_interaction = storage_interaction + _decor_shop_interaction = decor_shop_interaction _fishing_shop.set_world_interaction(shop_interaction) _player_storage.set_world_interaction(storage_interaction) + _decor_shop.set_world_interaction(decor_shop_interaction) func _prioritize_surface_drawing_pointer_input() -> void: @@ -1655,6 +1688,34 @@ func _apply_active_bait_indicator_style() -> void: _active_bait_button.add_theme_color_override(state, Color.WHITE) +func _apply_rv_storage_button_style() -> void: + var normal_style: StyleBoxFlat = MAIN_BUBBLE_PROFILE.make_normal_style() + var hover_style: StyleBoxFlat = MAIN_BUBBLE_PROFILE.make_hover_style() + var pressed_style: StyleBoxFlat = MAIN_BUBBLE_PROFILE.make_pressed_style() + for style: StyleBoxFlat in [normal_style, hover_style, pressed_style]: + style.set_corner_radius_all(29) + style.content_margin_left = 9.0 + style.content_margin_top = 9.0 + style.content_margin_right = 9.0 + style.content_margin_bottom = 9.0 + _rv_storage_button.icon = RV_STORAGE_ICON + _rv_storage_button.add_theme_stylebox_override("normal", normal_style) + _rv_storage_button.add_theme_stylebox_override("hover", hover_style) + _rv_storage_button.add_theme_stylebox_override("focus", hover_style) + _rv_storage_button.add_theme_stylebox_override("pressed", pressed_style) + for state: StringName in [ + &"icon_normal_color", + &"icon_hover_color", + &"icon_focus_color", + &"icon_pressed_color", + ]: + _rv_storage_button.add_theme_color_override(state, Color.WHITE) + + +func _on_rv_storage_button_pressed() -> void: + rv_storage_requested.emit() + + func _refresh_active_bait_indicator() -> void: _refresh_active_bait_indicator_visibility() if not is_node_ready(): @@ -1718,17 +1779,20 @@ func set_gameplay_ui_enabled(enabled: bool) -> void: if not enabled: _gameplay_hud_hidden = false _refresh_active_bait_indicator_visibility() + _refresh_rv_storage_button_visibility() if enabled: _try_start_shop_npc_speech() _refresh_gameplay_hud_visibility() _refresh_chat_availability() if not enabled: + _home_decor_toolbar.set_active(false) _end_virtual_mouse() _close_radial_menus() if _surface_drawing != null: _surface_drawing.deactivate() close_player_menu_for_session_end() _fishing_shop.close_for_session_end() + _decor_shop.close_for_session_end() _player_storage.close_for_session_end() _fishing_panel.visible = false _shop_prompt.hide() @@ -1749,6 +1813,7 @@ func set_gameplay_hud_hidden(hidden: bool) -> void: _quick_radial_menu.set_hud_hidden(hidden) _refresh_gameplay_hud_visibility() _refresh_active_bait_indicator_visibility() + _refresh_rv_storage_button_visibility() _refresh_hotbar_visibility() _refresh_chat_availability() @@ -1864,13 +1929,43 @@ func get_fishing_shop() -> FishingShopType: return _fishing_shop +func get_decor_shop() -> DecorShopType: + return _decor_shop + + func get_player_storage() -> PlayerStorageType: return _player_storage +func get_home_decor_toolbar() -> HomeDecorToolbarType: + return _home_decor_toolbar + + +func set_rv_interior_camera_mode(enabled: bool) -> void: + _hotbar_ui.set_rv_interior_camera_mode(enabled) + + +func set_rv_storage_button_visible(requested_visible: bool) -> void: + _rv_storage_button_requested_visible = requested_visible + _refresh_rv_storage_button_visibility() + + +func _refresh_rv_storage_button_visibility() -> void: + _rv_storage_button.visible = ( + _rv_storage_button_requested_visible + and _gameplay_ui_enabled + and not _gameplay_hud_hidden + and not _system_menu_open + and not _player_menu_open + and not _shop_open + and not _storage_open + ) + + func set_storage_prompt_visible( requested_visible: bool, world_anchor: Vector3 = Vector3(0.0, INF, 0.0), + action_text: String = "open storage", ) -> void: if not _storage_prompt.has_meta(&"styled"): _storage_prompt.set_meta(&"styled", true) @@ -1879,6 +1974,7 @@ func set_storage_prompt_visible( ) style.anti_aliasing = false _storage_prompt.add_theme_stylebox_override("panel", style) + _storage_prompt_message.text = action_text _storage_prompt.visible = ( requested_visible and _gameplay_ui_enabled @@ -2762,6 +2858,7 @@ func _refresh_hotbar_visibility() -> void: func _emit_interactive_pointer_ui_changed() -> void: _refresh_active_bait_indicator_visibility() + _refresh_rv_storage_button_visibility() interactive_pointer_ui_changed.emit( _system_menu_open or _player_menu_open diff --git a/ui/game_ui.tscn b/ui/game_ui.tscn index 483433a..c219c84 100644 --- a/ui/game_ui.tscn +++ b/ui/game_ui.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=22 format=3] +[gd_scene load_steps=24 format=3] [ext_resource type="Script" path="res://ui/game_ui.gd" id="1_ui"] [ext_resource type="PackedScene" path="res://ui/player_menu.tscn" id="2_menu"] @@ -15,6 +15,8 @@ [ext_resource type="Script" path="res://ui/controller_virtual_cursor.gd" id="13_cursor"] [ext_resource type="PackedScene" path="res://ui/player_storage.tscn" id="14_storage"] [ext_resource type="PackedScene" path="res://ui/components/bubble_menu/bubble_confirmation_page.tscn" id="15_social_prompt"] +[ext_resource type="PackedScene" path="res://ui/decor_shop.tscn" id="16_decor_shop"] +[ext_resource type="PackedScene" path="res://ui/home_decor_toolbar.tscn" id="17_decor_toolbar"] [sub_resource type="StyleBoxFlat" id="StyleBox_chase_background"] bg_color = Color(0.032, 0.118, 0.15, 1) @@ -472,9 +474,37 @@ polygon = PackedVector2Array(-8, 0, 8, 0, 0, 10) [node name="FishingShop" parent="UIRoot/CanonicalStage" instance=ExtResource("8_shop")] unique_name_in_owner = true +[node name="DecorShop" parent="UIRoot/CanonicalStage" instance=ExtResource("16_decor_shop")] +unique_name_in_owner = true + +[node name="HomeDecorToolbar" parent="UIRoot/CanonicalStage" instance=ExtResource("17_decor_toolbar")] +unique_name_in_owner = true + [node name="PlayerStorage" parent="UIRoot/CanonicalStage" instance=ExtResource("14_storage")] unique_name_in_owner = true +[node name="RVStorageButton" type="Button" parent="UIRoot/CanonicalStage/GameplayTransientHUD"] +unique_name_in_owner = true +visible = false +z_index = 57 +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -74.0 +offset_top = 16.0 +offset_right = -16.0 +offset_bottom = 74.0 +grow_horizontal = 0 +mouse_default_cursor_shape = 2 +focus_mode = 0 +tooltip_text = "open RV storage" +theme = ExtResource("3_theme") +texture_filter = 1 +expand_icon = true +icon_alignment = 1 +vertical_icon_alignment = 1 + [node name="StoragePrompt" type="PanelContainer" parent="UIRoot/CanonicalStage/GameplayTransientHUD"] unique_name_in_owner = true visible = false diff --git a/ui/home_decor_toolbar.gd b/ui/home_decor_toolbar.gd new file mode 100644 index 0000000..6f73219 --- /dev/null +++ b/ui/home_decor_toolbar.gd @@ -0,0 +1,126 @@ +class_name HomeDecorToolbar +extends PanelContainer + +signal placement_mode_requested(mode: int) +signal rotate_requested +signal store_requested +signal cancel_requested + +var _mode_button: Button +var _selection_label: Label +var _rotate_button: Button +var _store_button: Button +var _mode: PlayerHomeState.PlacementMode = PlayerHomeState.PlacementMode.GRID + + +func _ready() -> void: + _build_ui() + hide() + + +func set_active(active: bool) -> void: + if visible == active: + return + visible = active + if active and _mode_button != null: + _mode_button.call_deferred("grab_focus") + + +func set_mode(mode: PlayerHomeState.PlacementMode) -> void: + _mode = mode + if _mode_button != null: + _mode_button.text = ( + "placement: grid" + if mode == PlayerHomeState.PlacementMode.GRID + else "placement: free" + ) + + +func set_selection(instance_id: String, display_name: String = "") -> void: + var selected: bool = not instance_id.is_empty() + if _selection_label != null: + _selection_label.text = ( + "selected: %s" % display_name + if selected else "click decor to select; drag to move" + ) + if _rotate_button != null: + _rotate_button.disabled = not selected + if _store_button != null: + _store_button.disabled = not selected + + +func report_status(message: String) -> void: + if _selection_label != null: + _selection_label.text = message + + +func _build_ui() -> void: + custom_minimum_size = Vector2(330.0, 0.0) + position = Vector2(925.0, 540.0) + z_index = 58 + mouse_filter = Control.MOUSE_FILTER_STOP + add_theme_stylebox_override( + "panel", + UtilityPageStyle.rounded_style( + Color(UtilityPageStyle.OCEAN_PANEL_DEEP, 0.96), 16 + ), + ) + var margin := MarginContainer.new() + for side: StringName in [ + &"margin_left", &"margin_top", &"margin_right", &"margin_bottom", + ]: + margin.add_theme_constant_override(side, 12) + add_child(margin) + var layout := VBoxContainer.new() + layout.add_theme_constant_override("separation", 8) + margin.add_child(layout) + var title := Label.new() + title.text = "RV decor" + title.add_theme_font_size_override("font_size", 24) + layout.add_child(title) + _selection_label = Label.new() + _selection_label.text = "click decor to select; drag to move" + _selection_label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART + _selection_label.add_theme_font_size_override("font_size", 17) + layout.add_child(_selection_label) + var row := HBoxContainer.new() + row.add_theme_constant_override("separation", 8) + layout.add_child(row) + _mode_button = Button.new() + _mode_button.text = "placement: grid" + _mode_button.size_flags_horizontal = Control.SIZE_EXPAND_FILL + UtilityPageStyle.apply_ocean_button(_mode_button) + _mode_button.pressed.connect(_toggle_mode) + row.add_child(_mode_button) + _rotate_button = Button.new() + _rotate_button.text = "rotate" + _rotate_button.disabled = true + UtilityPageStyle.apply_ocean_button(_rotate_button) + _rotate_button.pressed.connect(rotate_requested.emit) + row.add_child(_rotate_button) + var action_row := HBoxContainer.new() + action_row.add_theme_constant_override("separation", 8) + layout.add_child(action_row) + _store_button = Button.new() + _store_button.text = "pack up" + _store_button.disabled = true + _store_button.size_flags_horizontal = Control.SIZE_EXPAND_FILL + UtilityPageStyle.apply_ocean_button(_store_button) + _store_button.pressed.connect(store_requested.emit) + action_row.add_child(_store_button) + var cancel_button := Button.new() + cancel_button.text = "clear selection" + cancel_button.size_flags_horizontal = Control.SIZE_EXPAND_FILL + UtilityPageStyle.apply_ocean_button(cancel_button) + cancel_button.pressed.connect(cancel_requested.emit) + action_row.add_child(cancel_button) + + +func _toggle_mode() -> void: + _mode = ( + PlayerHomeState.PlacementMode.FREE + if _mode == PlayerHomeState.PlacementMode.GRID + else PlayerHomeState.PlacementMode.GRID + ) + set_mode(_mode) + placement_mode_requested.emit(int(_mode)) diff --git a/ui/home_decor_toolbar.gd.uid b/ui/home_decor_toolbar.gd.uid new file mode 100644 index 0000000..b1bb23b --- /dev/null +++ b/ui/home_decor_toolbar.gd.uid @@ -0,0 +1 @@ +uid://bmtlixw3wief3 diff --git a/ui/home_decor_toolbar.tscn b/ui/home_decor_toolbar.tscn new file mode 100644 index 0000000..671308d --- /dev/null +++ b/ui/home_decor_toolbar.tscn @@ -0,0 +1,8 @@ +[gd_scene load_steps=2 format=3] + +[ext_resource type="Script" path="res://ui/home_decor_toolbar.gd" id="1_script"] + +[node name="HomeDecorToolbar" type="PanelContainer"] +unique_name_in_owner = true +visible = false +script = ExtResource("1_script") diff --git a/ui/hotbar.gd b/ui/hotbar.gd index 24a9aa8..5f54217 100644 --- a/ui/hotbar.gd +++ b/ui/hotbar.gd @@ -37,6 +37,7 @@ var _slots: Array[BubbleHotbarSlotType] = [] var _gameplay_input_enabled: bool = false var _drag_enabled: bool = false var _swap_hotbar_camera_scroll: bool = false +var _rv_interior_camera_mode: bool = false var _motion_elapsed: float = 0.0 var _compact_layout: bool = false var _player_menu_context: bool = false @@ -99,6 +100,10 @@ func set_swap_hotbar_camera_scroll(enabled: bool) -> void: _swap_hotbar_camera_scroll = enabled +func set_rv_interior_camera_mode(enabled: bool) -> void: + _rv_interior_camera_mode = enabled + + func set_drag_enabled(enabled: bool) -> void: _drag_enabled = enabled for slot: BubbleHotbarSlotType in _slots: @@ -308,7 +313,11 @@ func _unhandled_input(event: InputEvent) -> void: if ( event is InputEventMouseButton and event.pressed - and event.shift_pressed == _swap_hotbar_camera_scroll + and ( + event.shift_pressed + if _rv_interior_camera_mode + else event.shift_pressed == _swap_hotbar_camera_scroll + ) ): if event.button_index == MOUSE_BUTTON_WHEEL_UP: _hotbar.cycle_selection(-1) diff --git a/ui/player_storage.gd b/ui/player_storage.gd index 25eb0d4..1f553ea 100644 --- a/ui/player_storage.gd +++ b/ui/player_storage.gd @@ -4,6 +4,7 @@ extends Control const INPUT_OWNER: StringName = &"player_storage" signal menu_visibility_changed(is_open: bool) +signal decorate_requested var _player: Player var _fishing_spot: FishingSpot @@ -14,6 +15,9 @@ var _storage_grid: GeneralInventoryGrid var _inventory_count: Label var _storage_count: Label var _feedback: Label +var _title: Label +var _decorate_button: Button +var _home_access: bool = false var _prior_movement_enabled: bool = true var _prior_camera_enabled: bool = true var _prior_mouse_mode: Input.MouseMode = Input.MOUSE_MODE_VISIBLE @@ -75,15 +79,34 @@ func set_world_interaction(interaction: PlayerStorageInteraction) -> void: func open_storage() -> bool: + return _open_storage(false) + + +func open_storage_from_home(allow_decorating: bool = true) -> bool: + return _open_storage(true, allow_decorating) + + +func _open_storage( + home_access: bool, + allow_decorating: bool = false, +) -> bool: if ( visible or _player == null - or _interaction == null - or not _interaction.is_local_player_in_range() or _fishing_spot == null or not _fishing_spot.can_open_fishing_shop() + or ( + not home_access + and ( + _interaction == null + or not _interaction.is_local_player_in_range() + ) + ) ): return false + _home_access = home_access + _title.text = "RV storage" if home_access else "private storage" + _decorate_button.visible = home_access and allow_decorating _prior_movement_enabled = _player.is_movement_enabled() _prior_camera_enabled = _player.is_camera_input_enabled() _prior_mouse_mode = Input.mouse_mode @@ -112,10 +135,13 @@ func close_storage(restore_controls: bool = true) -> void: _player.set_movement_enabled(_prior_movement_enabled) _player.set_camera_input_enabled(_prior_camera_enabled) Input.mouse_mode = _prior_mouse_mode + _home_access = false menu_visibility_changed.emit(false) func close_for_range_exit() -> void: + if _home_access: + return close_storage() @@ -248,12 +274,20 @@ func _build_ui() -> void: var header := HBoxContainer.new() layout.add_child(header) - var title := Label.new() - title.text = "private storage" - title.add_theme_font_size_override("font_size", 32) - title.add_theme_color_override("font_color", UtilityPageStyle.OCEAN_TEXT_PRIMARY) - title.size_flags_horizontal = Control.SIZE_EXPAND_FILL - header.add_child(title) + _title = Label.new() + _title.text = "private storage" + _title.add_theme_font_size_override("font_size", 32) + _title.add_theme_color_override("font_color", UtilityPageStyle.OCEAN_TEXT_PRIMARY) + _title.size_flags_horizontal = Control.SIZE_EXPAND_FILL + header.add_child(_title) + _decorate_button = Button.new() + _decorate_button.text = "decorate RV" + _decorate_button.tooltip_text = "Place decor inside your RV" + _decorate_button.custom_minimum_size = Vector2(160.0, 48.0) + UtilityPageStyle.apply_ocean_button(_decorate_button) + _decorate_button.hide() + _decorate_button.pressed.connect(_request_decorating) + header.add_child(_decorate_button) var close := Button.new() close.text = "×" close.tooltip_text = "Close storage" @@ -285,6 +319,13 @@ func _build_ui() -> void: layout.add_child(_feedback) +func _request_decorating() -> void: + if not _home_access: + return + close_storage() + decorate_requested.emit() + + func _build_column(parent: HBoxContainer, title_text: String) -> Dictionary: var panel := PanelContainer.new() panel.custom_minimum_size = Vector2(550.0, 0.0) diff --git a/world/decor_shop_interaction.gd b/world/decor_shop_interaction.gd new file mode 100644 index 0000000..049bfbe --- /dev/null +++ b/world/decor_shop_interaction.gd @@ -0,0 +1,2 @@ +class_name DecorShopInteraction +extends FishingShopInteraction diff --git a/world/decor_shop_interaction.gd.uid b/world/decor_shop_interaction.gd.uid new file mode 100644 index 0000000..955738c --- /dev/null +++ b/world/decor_shop_interaction.gd.uid @@ -0,0 +1 @@ +uid://u70jgwedk7ym diff --git a/world/generation/generated_world_region.gd b/world/generation/generated_world_region.gd index 780ddb8..4e15251 100644 --- a/world/generation/generated_world_region.gd +++ b/world/generation/generated_world_region.gd @@ -9,6 +9,9 @@ const FishingShopInteractionType = preload( const PlayerStorageInteractionType = preload( "res://world/player_storage_interaction.gd" ) +const DecorShopInteractionType = preload( + "res://world/decor_shop_interaction.gd" +) const PrecipitationOcclusionType = preload( "res://world/environment/precipitation_occlusion.gd" ) @@ -80,8 +83,12 @@ const PROCEDURAL_PROP_GROUPS: Array[StringName] = [ @onready var _player_storage: PlayerStorageInteractionType = ( $Interactables/PlayerStorageBox/InteractionArea ) +@onready var _decor_shop: DecorShopInteractionType = ( + $Interactables/DecorShopWorld/InteractionArea +) @onready var _shop_root: Node3D = %FishingShopWorld @onready var _storage_root: Node3D = %PlayerStorageBox +@onready var _decor_shop_root: Node3D = %DecorShopWorld @onready var _decorations: Node3D = %Decorations @onready var _tree_anchors: GatherableAnchorSet3D = %ReachableTreeTrunks @onready var _diggable_beach: DiggableArea3D = %DiggableBeach @@ -148,6 +155,10 @@ func get_player_storage() -> PlayerStorageInteractionType: return _player_storage +func get_decor_shop() -> DecorShopInteractionType: + return _decor_shop + + func get_saltwater_shoreline_mesh() -> MeshInstance3D: return _shoreline_reference @@ -428,6 +439,8 @@ func _place_spawn_amenities(center: Vector3) -> void: _shop_root.rotation.y = PI _storage_root.position = center + Vector3(-2.4, 0.0, 1.2) _storage_root.rotation.y = PI * 0.5 + _decor_shop_root.position = center + Vector3(-2.4, 0.0, 1.2) + _decor_shop_root.rotation.y = PI * 0.5 func _configure_static_water() -> void: diff --git a/world/generation/generated_world_region.tscn b/world/generation/generated_world_region.tscn index 47ee6bc..04602e1 100644 --- a/world/generation/generated_world_region.tscn +++ b/world/generation/generated_world_region.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=14 format=3] +[gd_scene load_steps=15 format=3] [ext_resource type="Script" path="res://world/generation/generated_world_region.gd" id="1_region"] [ext_resource type="Script" path="res://world/generation/terrain_chunk_generator.gd" id="2_generator"] @@ -13,6 +13,7 @@ [ext_resource type="Resource" path="res://fish/pools/starter_pond_pool.tres" id="11_pond_pool"] [ext_resource type="Resource" path="res://world/generation/props/terrain_prop_catalog.tres" id="12_prop_catalog"] [ext_resource type="Resource" path="res://world/generation/biomes/terrain_biome_catalog.tres" id="13_biome_catalog"] +[ext_resource type="PackedScene" path="res://world/interactables/decor_shop_world.tscn" id="14_decor_shop"] [node name="GeneratedWorldRegion" type="Node3D"] script = ExtResource("1_region") @@ -98,6 +99,9 @@ unique_name_in_owner = true [node name="PlayerStorageBox" parent="Interactables" instance=ExtResource("6_storage")] unique_name_in_owner = true +[node name="DecorShopWorld" parent="Interactables" instance=ExtResource("14_decor_shop")] +unique_name_in_owner = true + [node name="Decorations" type="Node3D" parent="."] unique_name_in_owner = true diff --git a/world/interactables/decor_shop_world.tscn b/world/interactables/decor_shop_world.tscn new file mode 100644 index 0000000..6b735e2 --- /dev/null +++ b/world/interactables/decor_shop_world.tscn @@ -0,0 +1,35 @@ +[gd_scene load_steps=5 format=3] + +[ext_resource type="Script" path="res://world/decor_shop_interaction.gd" id="1_shop"] +[ext_resource type="PackedScene" path="res://art/exported/characters/base/straywild_base_character.glb" id="2_character"] +[ext_resource type="Script" path="res://world/world_character_display.gd" id="3_display"] + +[sub_resource type="SphereShape3D" id="InteractionShape"] +resource_local_to_scene = true +radius = 3.0 + +[node name="DecorShopWorld" type="Node3D"] + +[node name="Shopkeeper" parent="." instance=ExtResource("2_character")] +script = ExtResource("3_display") +species_id = "round" +fur_color_id = "orange" +ears_id = "pointy_short" +tail_id = "cat" +eyes_id = "simple_shine" +nose_id = "dog_round" +mouth_id = "three" +head_look_enabled = true + +[node name="AnimationPlayer" parent="Shopkeeper"] +autoplay = "idle" + +[node name="InteractionArea" type="Area3D" parent="."] +unique_name_in_owner = true +position = Vector3(0, 1, -0.3) +collision_layer = 0 +collision_mask = 2 +script = ExtResource("1_shop") + +[node name="InteractionShape" type="CollisionShape3D" parent="InteractionArea"] +shape = SubResource("InteractionShape") diff --git a/world/interactables/player_storage_box.tscn b/world/interactables/player_storage_box.tscn index 4bf9a8e..008f0ac 100644 --- a/world/interactables/player_storage_box.tscn +++ b/world/interactables/player_storage_box.tscn @@ -27,6 +27,8 @@ size = Vector3(1.62, 0.86, 1.02) radius = 2.3 [node name="PlayerStorageBox" type="Node3D"] +process_mode = 4 +visible = false [node name="Body" type="MeshInstance3D" parent="."] position = Vector3(0, 0.35, 0) @@ -44,6 +46,7 @@ collision_mask = 0 [node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D"] position = Vector3(0, 0.43, 0) +disabled = true shape = SubResource("CollisionShape") [node name="InteractionArea" type="Area3D" parent="."] @@ -54,6 +57,7 @@ collision_mask = 2 script = ExtResource("1_interaction") [node name="CollisionShape3D" type="CollisionShape3D" parent="InteractionArea"] +disabled = true shape = SubResource("InteractionShape") [node name="PromptAnchor" type="Marker3D" parent="."] diff --git a/world/regions/starter_island_region.gd b/world/regions/starter_island_region.gd index 3af3010..b418292 100644 --- a/world/regions/starter_island_region.gd +++ b/world/regions/starter_island_region.gd @@ -8,6 +8,9 @@ const FishingShopInteractionType = preload( const PlayerStorageInteractionType = preload( "res://world/player_storage_interaction.gd" ) +const DecorShopInteractionType = preload( + "res://world/decor_shop_interaction.gd" +) const FOLIAGE_WIND_SHADER: Shader = preload( "res://world/materials/foliage_wind.gdshader" ) @@ -49,6 +52,10 @@ var fishing_shop_path: NodePath = ( var player_storage_path: NodePath = ( ^"Interactables/PlayerStorageBox/InteractionArea" ) +@export_node_path("Area3D") +var decor_shop_path: NodePath = ( + ^"Interactables/DecorShopWorld/InteractionArea" +) @export_group("Terrain Collision") # The imported GLB is the collision authority. Rebuild once per region load so # newly authored terrain and props cannot retain a stale saved fallback shape. @@ -84,6 +91,10 @@ func get_player_storage() -> PlayerStorageInteractionType: return get_node_or_null(player_storage_path) as PlayerStorageInteractionType +func get_decor_shop() -> DecorShopInteractionType: + return get_node_or_null(decor_shop_path) as DecorShopInteractionType + + func get_saltwater_shoreline_mesh() -> MeshInstance3D: return get_node_or_null(^"ShorelineRibbons/Ocean") as MeshInstance3D diff --git a/world/regions/starter_island_region.tscn b/world/regions/starter_island_region.tscn index 8f4bc4b..9b95dfa 100644 --- a/world/regions/starter_island_region.tscn +++ b/world/regions/starter_island_region.tscn @@ -18,6 +18,7 @@ [ext_resource type="Script" path="res://world/water/shoreline_ribbon_config.gd" id="22_shoreline_config"] [ext_resource type="Script" path="res://world/digging/diggable_area_3d.gd" id="23_diggable_area"] [ext_resource type="Script" path="res://world/gathering/gatherable_anchor_set_3d.gd" id="24_gatherable_anchors"] +[ext_resource type="PackedScene" path="res://world/interactables/decor_shop_world.tscn" id="25_decor_shop"] [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_4e4k5"] data = PackedVector3Array(10.033899, 3.3913999, 3.3446, 13.3786, 3.3913999, 0, 13.3786, 3.3913999, 3.3446, 10.033899, 3.3913999, 3.3446, 10.033899, 3.3913999, 0, 13.3786, 3.3913999, 0, 6.6893, 3.3913999, 3.3446, 10.033899, 3.3913999, 0, 10.033899, 3.3913999, 3.3446, 6.6893, 3.3913999, 3.3446, 6.6893, 3.3913999, 0, 10.033899, 3.3913999, 0, 6.6893, 3.3913999, 0, 10.033899, 3.3913999, -3.3446, 10.033899, 3.3913999, 0, 6.6893, 3.3913999, 6.6893, 6.6893, 3.3913999, 3.3446, 10.033899, 3.3913999, 3.3446, 6.6893, 3.3913999, 6.6893, 10.033899, 3.3913999, 3.3446, 10.033899, 3.3913999, 6.6893, 3.3446, 3.3913999, 3.3446, 6.6893, 3.3913999, 0, 6.6893, 3.3913999, 3.3446, 6.6893, 3.3913999, 10.033899, 6.6893, 3.3913999, 6.6893, 10.033899, 3.3913999, 6.6893, 6.6893, 3.3913999, 10.033899, 10.033899, 3.3913999, 6.6893, 10.033899, 3.3913999, 10.033899, 3.3446, 3.3913999, 6.6893, 6.6893, 3.3913999, 3.3446, 6.6893, 3.3913999, 6.6893, 3.3446, 3.3913999, 6.6893, 3.3446, 3.3913999, 3.3446, 6.6893, 3.3913999, 3.3446, 3.3446, 3.3913999, 10.033899, 6.6893, 3.3913999, 6.6893, 6.6893, 3.3913999, 10.033899, 3.3446, 3.3913999, 10.033899, 3.3446, 3.3913999, 6.6893, 6.6893, 3.3913999, 6.6893, 0, 3.3913999, 6.6893, 3.3446, 3.3913999, 3.3446, 3.3446, 3.3913999, 6.6893, 0, 3.3913999, 6.6893, 0, 3.3913999, 3.3446, 3.3446, 3.3913999, 3.3446, 0, 3.3913999, 10.033899, 0, 3.3913999, 6.6893, 3.3446, 3.3913999, 6.6893, 0, 3.3913999, 10.033899, 3.3446, 3.3913999, 6.6893, 3.3446, 3.3913999, 10.033899, -3.3446, 3.3913999, 13.3786, -3.3446, 3.3913999, 10.033899, 0, 3.3913999, 10.033899, -3.3446, 3.3913999, 13.3786, 0, 3.3913999, 10.033899, 0, 3.3913999, 13.3786, 0, 3.3913999, 13.3786, 0, 3.3913999, 10.033899, 3.3446, 3.3913999, 10.033899, 0, 3.3913999, 13.3786, 3.3446, 3.3913999, 10.033899, 3.3446, 3.3913999, 13.3786, 3.3446, 3.3913999, 13.3786, 3.3446, 3.3913999, 10.033899, 6.6893, 3.3913999, 10.033899, 3.3446, 3.3913999, 13.3786, 6.6893, 3.3913999, 10.033899, 6.6893, 3.3913999, 13.3786, 3.9148, 3.3913999, 16.514599, 3.3446, 3.3913999, 13.3786, 6.6893, 3.3913999, 13.3786, 3.3446, 3.3913999, 13.3786, 3.9148, 3.3913999, 16.514599, 3.6399, 3.3913999, 16.2405, 3.9148, 3.3913999, 16.514599, 6.6893, 3.3913999, 13.3786, 6.6893, 3.3913999, 16.7232, 6.6893, 3.3913999, 16.7232, 6.6949, 3.3913999, 18.9914, 6.6893, 3.3913999, 18.9861, 6.6949, 3.3913999, 18.9914, 6.6893, 3.3913999, 16.7232, 10.3743, 3.3913999, 16.7232, 6.6949, 3.3913999, 18.9914, 10.3743, 3.3913999, 16.7232, 9.1275, 3.3913999, 18.830599, 10.033899, 3.3913999, -10.033899, 13.3786, 3.3913999, -13.3786, 13.3786, 3.3913999, -10.033899, 13.3786, 3.3913999, -13.3786, 16.7232, 3.3913999, -10.033899, 13.3786, 3.3913999, -10.033899, 16.7232, 3.3913999, -10.033899, 19.798899, 3.3913999, -13.1096, 19.798899, 3.3913999, -10.033899, 16.7232, 3.3913999, -10.033899, 16.7232, 3.3913999, -13.1096, 19.798899, 3.3913999, -13.1096, 16.7232, 3.3913999, -10.033899, 16.4543, 3.3913999, -13.3786, 16.7232, 3.3913999, -13.1096, 16.7232, 3.3913999, -10.033899, 13.3786, 3.3913999, -13.3786, 16.4543, 3.3913999, -13.3786, 13.3786, 3.3913999, -6.6893, 13.3786, 3.3913999, -10.033899, 16.7232, 3.3913999, -10.033899, 13.3786, 3.3913999, -6.6893, 16.7232, 3.3913999, -10.033899, 16.7232, 3.3913999, -6.6893, 10.033899, 3.3913999, -6.6893, 13.3786, 3.3913999, -10.033899, 13.3786, 3.3913999, -6.6893, 10.033899, 3.3913999, -6.6893, 10.033899, 3.3913999, -10.033899, 13.3786, 3.3913999, -10.033899, 16.4543, 3.3913999, -13.3786, 16.495699, 3.3913999, -16.459, 16.495699, 3.3913999, -13.42, 16.4543, 3.3913999, -13.3786, 12.738999, 3.3913999, -15.894899, 16.495699, 3.3913999, -16.459, 12.738999, 3.3913999, -15.894899, 16.4543, 3.3913999, -13.3786, 13.3786, 3.3913999, -13.3786, 13.3786, 3.3913999, -13.3786, 12.460899, 3.3913999, -16.1674, 12.738999, 3.3913999, -15.894899, 13.3786, 3.3913999, -13.3786, 10.033899, 3.3913999, -16.7232, 12.460899, 3.3913999, -16.1674, 10.033899, 3.3913999, -10.033899, 10.033899, 3.3913999, -13.3786, 13.3786, 3.3913999, -13.3786, 10.033899, 3.3913999, -16.7232, 13.3786, 3.3913999, -13.3786, 10.033899, 3.3913999, -13.3786, 6.6893, 3.3913999, -13.3786, 10.033899, 3.3913999, -16.7232, 10.033899, 3.3913999, -13.3786, 6.6893, 3.3913999, -13.3786, 6.6893, 3.3913999, -16.7232, 10.033899, 3.3913999, -16.7232, 6.6893, 3.3913999, -10.033899, 10.033899, 3.3913999, -13.3786, 10.033899, 3.3913999, -10.033899, 6.6893, 3.3913999, -10.033899, 6.6893, 3.3913999, -13.3786, 10.033899, 3.3913999, -13.3786, 6.6893, 3.3913999, -6.6893, 6.6893, 3.3913999, -10.033899, 10.033899, 3.3913999, -10.033899, 6.6893, 3.3913999, -6.6893, 10.033899, 3.3913999, -10.033899, 10.033899, 3.3913999, -6.6893, 4.0225, 3.3913999, -8.7143, 6.6893, 3.3913999, -13.3786, 6.6893, 3.3913999, -10.033899, 4.6821, 3.3913999, -13.3786, 6.6893, 3.3913999, -16.7232, 6.6893, 3.3913999, -13.3786, 4.0225, 3.3913999, -8.7143, 4.6821, 3.3913999, -13.3786, 6.6893, 3.3913999, -13.3786, 4.6821, 3.3913999, -13.3786, 3.8388, 3.3913999, -16.7232, 6.6893, 3.3913999, -16.7232, 4.6821, 3.3913999, -13.3786, 4.0225, 3.3913999, -8.7143, 4.6821, 3.3913999, -13.3786, 4.6821, 3.3913999, -13.3786, 4.6821, 3.3913999, -13.3786, 4.4131, 3.2091, -13.357699, 4.6821, 3.3913999, -13.3786, 4.4131, 3.2091, -13.357699, 4.4131, 3.2091, -13.357699, 3.3446, 3.3913999, -6.6893, 4.0225, 3.3913999, -8.7143, 6.6893, 3.3913999, -10.033899, 3.3446, 3.3913999, -6.6893, 6.6893, 3.3913999, -10.033899, 6.6893, 3.3913999, -6.6893, 0, 3.3913999, -6.6893, 4.0225, 3.3913999, -8.7143, 3.3446, 3.3913999, -6.6893, 0, 3.3913999, -6.6893, 0, 3.3913999, -8.7143, 4.0225, 3.3913999, -8.7143, 3.3446, 3.3913999, -3.3446, 3.3446, 3.3913999, -6.6893, 6.6893, 3.3913999, -6.6893, 0, 3.3913999, -6.6893, -3.9101999, 3.3913999, -9.8592, 0, 3.3913999, -8.7143, 0, 3.3913999, -8.7143, -3.9101999, 3.3913999, -9.8592, 0, 3.3913999, -8.7143, 0, 3.3913999, -3.3446, 0, 3.3913999, -6.6893, 3.3446, 3.3913999, -6.6893, 0, 3.3913999, -3.3446, 3.3446, 3.3913999, -6.6893, 3.3446, 3.3913999, -3.3446, -3.6378, 3.3913999, -2.0792, 0, 3.3913999, -6.6893, 0, 3.3913999, -3.3446, -2.9566998, 3.3913999, 0, -3.6378, 3.3913999, -2.0792, 0, 3.3913999, -3.3446, -3.6378, 3.3913999, -2.0792, -3.3446, 3.3913999, -6.6893, 0, 3.3913999, -6.6893, -3.9101999, 3.3913999, -9.8592, 0, 3.3913999, -6.6893, -3.3446, 3.3913999, -6.6893, -6.6893, 3.3913999, -3.7326, -3.3446, 3.3913999, -6.6893, -3.6378, 3.3913999, -2.0792, -2.9566998, 3.3913999, 0, 0, 3.3913999, -3.3446, 0, 3.3913999, 0, 0, 3.3913999, 0, 0, 3.3913999, -3.3446, 3.3446, 3.3913999, -3.3446, -2.9566998, 3.3913999, 3.3446, -2.9566998, 3.3913999, 0, 0, 3.3913999, 0, -2.9566998, 3.3913999, 3.3446, 0, 3.3913999, 0, 0, 3.3913999, 3.3446, -6.6893, 3.3913999, -3.7326, -6.6893, 3.3913999, -6.6893, -3.3446, 3.3913999, -6.6893, -6.6893, 3.3913999, -6.6893, -3.9101999, 3.3913999, -9.8592, -3.3446, 3.3913999, -6.6893, -10.033899, 3.3913999, -3.7326, -6.6893, 3.3913999, -6.6893, -6.6893, 3.3913999, -3.7326, 0, 3.3913999, 3.3446, 0, 3.3913999, 0, 3.3446, 3.3913999, 0, 0, 3.3913999, 0, 3.3446, 3.3913999, -3.3446, 3.3446, 3.3913999, 0, 0, 3.3913999, 3.3446, 3.3446, 3.3913999, 0, 3.3446, 3.3913999, 3.3446, 3.3446, 3.3913999, 3.3446, 3.3446, 3.3913999, 0, 6.6893, 3.3913999, 0, 3.3446, 3.3913999, 0, 3.3446, 3.3913999, -3.3446, 6.6893, 3.3913999, -3.3446, 3.3446, 3.3913999, 0, 6.6893, 3.3913999, -3.3446, 6.6893, 3.3913999, 0, 3.3446, 3.3913999, -3.3446, 6.6893, 3.3913999, -6.6893, 6.6893, 3.3913999, -3.3446, 6.6893, 3.3913999, 0, 6.6893, 3.3913999, -3.3446, 10.033899, 3.3913999, -3.3446, 6.6893, 3.3913999, -3.3446, 6.6893, 3.3913999, -6.6893, 10.033899, 3.3913999, -6.6893, 6.6893, 3.3913999, -3.3446, 10.033899, 3.3913999, -6.6893, 10.033899, 3.3913999, -3.3446, -6.6893, 3.3913999, -6.6893, -6.6893, 3.3913999, -10.033899, -3.9101999, 3.3913999, -9.8592, -6.6893, 3.3913999, -10.033899, -3.9101999, 3.3913999, -12.538199, -3.9101999, 3.3913999, -9.8592, -10.033899, 3.3913999, -3.7326, -10.033899, 3.3913999, -6.6893, -6.6893, 3.3913999, -6.6893, -10.033899, 3.3913999, -6.6893, -6.6893, 3.3913999, -10.033899, -6.6893, 3.3913999, -6.6893, -13.3786, 3.3913999, -3.7326, -10.033899, 3.3913999, -6.6893, -10.033899, 3.3913999, -3.7326, -6.6893, 3.3913999, -10.033899, -6.6893, 3.3913999, -12.538199, -3.9101999, 3.3913999, -12.538199, -13.3786, 3.3913999, -3.7326, -13.3786, 3.3913999, -6.6893, -10.033899, 3.3913999, -6.6893, -16.191599, 3.3913999, -3.0971, -13.3786, 3.3913999, -6.6893, -13.3786, 3.3913999, -3.7326, -10.033899, 3.3913999, -6.6893, -10.033899, 3.3913999, -10.033899, -6.6893, 3.3913999, -10.033899, -13.3786, 3.3913999, -6.6893, -10.033899, 3.3913999, -10.033899, -10.033899, 3.3913999, -6.6893, -16.191599, 3.3913999, -3.0971, -16.7232, 3.3913999, -6.6893, -13.3786, 3.3913999, -6.6893, -13.3786, 3.3913999, -6.6893, -13.3786, 3.3913999, -10.033899, -10.033899, 3.3913999, -10.033899, -19.7545, 3.3913999, -2.7851999, -16.7232, 3.3913999, -6.6893, -16.191599, 3.3913999, -3.0971, -19.7545, 3.3913999, -2.7851999, -19.280699, 3.3913999, -6.6893, -16.7232, 3.3913999, -6.6893, -17.1112, 3.3913999, 0, -19.7545, 3.3913999, -2.7851999, -16.191599, 3.3913999, -3.0971, -17.1112, 3.3913999, 0, -19.9511, 3.3913999, -2.5834, -19.7545, 3.3913999, -2.7851999, -19.9511, 3.3913999, -2.5834, -17.1112, 3.3913999, 0, -20.0679, 3.3913999, 0, -20.0679, 3.3913999, 3.3446, -20.0679, 3.3913999, 0, -17.1112, 3.3913999, 0, -20.0679, 3.3913999, 3.3446, -17.1112, 3.3913999, 0, -17.1112, 3.3913999, 3.3044999, -13.3786, 3.3913999, -10.033899, -10.699599, 3.3913999, -13.175799, -10.033899, 3.3913999, -10.033899, -10.699599, 3.3913999, -13.175799, -6.6893, 3.3913999, -10.033899, -10.033899, 3.3913999, -10.033899, -13.3786, 3.3913999, -10.033899, -13.3786, 3.3913999, -13.3786, -10.699599, 3.3913999, -13.175799, -6.6893, 3.3913999, -10.033899, -10.699599, 3.3913999, -13.175799, -6.6893, 3.3913999, -12.538199, -13.3786, 3.3913999, -13.3786, -10.699599, 3.3913999, -15.835, -10.699599, 3.3913999, -13.175799, -13.3786, 3.3913999, -13.3786, -13.3786, 3.3913999, -15.4154, -10.699599, 3.3913999, -15.835, -6.6893, 3.3913999, -12.538199, -10.699599, 3.3913999, -13.175799, -6.6893, 3.3913999, -12.538199, -6.6893, 3.3913999, -12.538199, -6.6893, 3.3913999, -12.538199, -6.6893, 3.175, -12.867, -6.6893, 3.3913999, -12.538199, -6.6893, 3.175, -12.867, -6.6893, 3.175, -12.867, -20.0679, 3.3913999, 6.6893, -20.0679, 3.3913999, 3.3446, -17.1112, 3.3913999, 3.3044999, -22.5541, 3.3913999, 9.2058, -22.3151, 3.3913999, 6.6893, -20.0679, 3.3913999, 6.6893, -22.5541, 3.3913999, 9.2058, -20.0679, 3.3913999, 6.6893, -20.0679, 3.3913999, 9.167399, -20.0679, 3.3913999, 9.167399, -20.0679, 3.3913999, 6.6893, -16.7232, 3.3913999, 6.6893, -20.0679, 3.3913999, 6.6893, -17.1112, 3.3913999, 3.3044999, -16.7232, 3.3913999, 6.6893, -20.0679, 3.3913999, 9.167399, -16.7232, 3.3913999, 6.6893, -16.285099, 3.3913999, 9.5865, -16.7232, 3.3913999, 6.6893, -16.053999, 3.3913999, 9.8082, -16.285099, 3.3913999, 9.5865, -16.053999, 3.3913999, 9.8082, -16.7232, 3.3913999, 6.6893, -13.1355, 3.3913999, 6.7549996, -17.1112, 3.3913999, 3.3044999, -13.1355, 3.3913999, 6.7549996, -16.7232, 3.3913999, 6.6893, -16.053999, 3.3913999, 9.8082, -13.1355, 3.3913999, 6.7549996, -13.3786, 3.3913999, 10.033899, -13.1355, 3.3913999, 6.7549996, -17.1112, 3.3913999, 3.3044999, -14.877199, 3.3913999, 4.6657, -14.877199, 3.3913999, 4.6657, -17.1112, 3.3913999, 3.3044999, -15.582299, 3.3913999, 4.0366, -13.1355, 3.3913999, 6.7549996, -14.877199, 3.3913999, 4.6657, -14.0948, 3.3913999, 5.5073, -13.3786, 3.3913999, 10.033899, -13.1355, 3.3913999, 6.7549996, -10.033899, 3.3913999, 7.0772, -13.3786, 3.3913999, 10.033899, -10.033899, 3.3913999, 7.0772, -10.033899, 3.3913999, 10.033899, -10.033899, 3.3913999, 10.033899, -10.033899, 3.3913999, 7.0772, -6.6893, 3.3913999, 7.0772, -10.033899, 3.3913999, 10.033899, -6.6893, 3.3913999, 7.0772, -6.6893, 3.3913999, 10.033899, -10.033899, 3.0033998, 6.6893, -13.1355, 3.3913999, 6.7549996, -12.747499, 3.0033998, 6.3671, -10.033899, 3.0033998, 6.6893, -10.033899, 3.3913999, 7.0772, -13.1355, 3.3913999, 6.7549996, -2.5674999, 2.4164, 7.6215, -6.6893, 3.3913999, 7.0772, -6.6893, 3.0033998, 6.6893, -2.5674999, 2.4164, 7.6215, -2.1794999, 2.8042998, 8.009399, -6.6893, 3.3913999, 7.0772, -12.747499, 3.0033998, 6.3671, -14.0948, 3.3913999, 5.5073, -13.6942, 3.0033998, 5.1798, -12.747499, 3.0033998, 6.3671, -13.1355, 3.3913999, 6.7549996, -14.0948, 3.3913999, 5.5073, -6.6893, 3.0033998, 6.6893, -10.033899, 3.3913999, 7.0772, -10.033899, 3.0033998, 6.6893, -6.6893, 3.0033998, 6.6893, -6.6893, 3.3913999, 7.0772, -10.033899, 3.3913999, 7.0772, -16.7232, 3.0033998, 0, -16.191599, 3.3913999, -3.0971, -15.8036995, 3.0033998, -2.7091, -16.7232, 3.0033998, 0, -17.1112, 3.3913999, 0, -16.191599, 3.3913999, -3.0971, -13.3786, 3.3913999, -3.7326, -15.8036995, 3.0033998, -2.7091, -16.191599, 3.3913999, -3.0971, -13.3786, 3.3913999, -3.7326, -13.3786, 3.0033998, -3.3446, -15.8036995, 3.0033998, -2.7091, -2.9566998, 3.3913999, 0, -4.0257998, 3.0033998, -1.6911999, -3.6378, 3.3913999, -2.0792, -2.9566998, 3.3913999, 0, -3.3446, 3.0033998, 0, -4.0257998, 3.0033998, -1.6911999, -3.6378, 3.3913999, -2.0792, -6.6893, 3.0033998, -3.3446, -6.6893, 3.3913999, -3.7326, -3.6378, 3.3913999, -2.0792, -4.0257998, 3.0033998, -1.6911999, -6.6893, 3.0033998, -3.3446, -10.033899, 3.3913999, -3.7326, -13.3786, 3.0033998, -3.3446, -13.3786, 3.3913999, -3.7326, -10.033899, 3.3913999, -3.7326, -10.033899, 3.0033998, -3.3446, -13.3786, 3.0033998, -3.3446, -6.6893, 3.3913999, -3.7326, -10.033899, 3.0033998, -3.3446, -10.033899, 3.3913999, -3.7326, -6.6893, 3.3913999, -3.7326, -6.6893, 3.0033998, -3.3446, -10.033899, 3.0033998, -3.3446, -16.7232, 3.0033998, 2.9166, -17.1112, 3.3913999, 0, -16.7232, 3.0033998, 0, -16.7232, 3.0033998, 2.9166, -17.1112, 3.3913999, 3.3044999, -17.1112, 3.3913999, 0, -14.4892, 3.0033998, 4.2778, -15.582299, 3.3913999, 4.0366, -15.372, 3.0033998, 3.6132998, -14.4892, 3.0033998, 4.2778, -14.877199, 3.3913999, 4.6657, -15.582299, 3.3913999, 4.0366, -2.9566998, 3.3913999, 3.3446, -3.3446, 3.0033998, 0, -2.9566998, 3.3913999, 0, -2.9566998, 3.3913999, 3.3446, -3.3446, 3.0033998, 3.3446, -3.3446, 3.0033998, 0, -2.1794999, 2.8042998, 8.009399, -2.1397, 3.0033998, 5.1795, -1.7832999, 3.3913999, 5.2162, -2.1794999, 2.8042998, 8.009399, -2.5674999, 2.4164, 7.6215, -2.1397, 3.0033998, 5.1795, -6.6893, 3.3913999, 10.033899, -2.1794999, 2.8042998, 8.009399, -3.3446, 3.3913999, 10.033899, -6.6893, 3.3913999, 10.033899, -6.6893, 3.3913999, 7.0772, -2.1794999, 2.8042998, 8.009399, -1.7832999, 3.3913999, 5.2162, 0, 3.3913999, 6.6893, -2.1794999, 2.8042998, 8.009399, 0, 3.3913999, 6.6893, -1.7832999, 3.3913999, 5.2162, -2.9566998, 3.3913999, 3.3446, 0, 3.3913999, 6.6893, -2.9566998, 3.3913999, 3.3446, 0, 3.3913999, 3.3446, -3.3446, 3.3913999, 10.033899, 0, 3.3913999, 6.6893, 0, 3.3913999, 10.033899, -3.3446, 3.3913999, 10.033899, -2.1794999, 2.8042998, 8.009399, 0, 3.3913999, 6.6893, -2.1397, 3.0033998, 5.1795, -2.9566998, 3.3913999, 3.3446, -1.7832999, 3.3913999, 5.2162, -2.1397, 3.0033998, 5.1795, -3.3446, 3.0033998, 3.3446, -2.9566998, 3.3913999, 3.3446, -14.0948, 3.3913999, 5.5073, -14.4892, 3.0033998, 4.2778, -13.6942, 3.0033998, 5.1798, -14.0948, 3.3913999, 5.5073, -14.877199, 3.3913999, 4.6657, -14.4892, 3.0033998, 4.2778, -15.582299, 3.3913999, 4.0366, -16.7232, 3.0033998, 2.9166, -15.372, 3.0033998, 3.6132998, -15.582299, 3.3913999, 4.0366, -17.1112, 3.3913999, 3.3044999, -16.7232, 3.0033998, 2.9166, 20.198, 3.1490998, -10.033899, 19.798899, 3.3913999, -13.1096, 20.1539, 3.1299, -13.399799, 20.198, 3.1490998, -10.033899, 19.798899, 3.3913999, -10.033899, 19.798899, 3.3913999, -13.1096, 20.1539, 3.1299, -13.399799, 16.7232, 3.3913999, -13.1096, 16.8204, 3.138, -13.447599, 20.1539, 3.1299, -13.399799, 19.798899, 3.3913999, -13.1096, 16.7232, 3.3913999, -13.1096, 16.756899, 3.1650999, -16.7286, 12.738999, 3.3913999, -15.894899, 12.7471, 3.1766999, -16.1988, 16.756899, 3.1650999, -16.7286, 16.495699, 3.3913999, -16.459, 12.738999, 3.3913999, -15.894899, 16.8051, 3.1778, -13.479, 16.495699, 3.3913999, -16.459, 16.756899, 3.1650999, -16.7286, 16.8051, 3.1778, -13.479, 16.495699, 3.3913999, -13.42, 16.495699, 3.3913999, -16.459, 16.4543, 3.3913999, -13.3786, 16.8204, 3.138, -13.447599, 16.7232, 3.3913999, -13.1096, 16.8204, 3.138, -13.447599, 16.4543, 3.3913999, -13.3786, 16.495699, 3.3913999, -13.42, 16.8204, 3.138, -13.447599, 16.495699, 3.3913999, -13.42, 16.8051, 3.1778, -13.479, 10.033899, 3.0523999, -19.0294, 6.6893, 3.2782998, -18.727999, 6.6893, 3.0440998, -19.036999, 10.033899, 3.0523999, -19.0294, 10.033899, 3.2784998, -18.6997, 6.6893, 3.2782998, -18.727999, 12.723599, 2.9213, -19.2902, 10.033899, 3.2784998, -18.6997, 10.033899, 3.0523999, -19.0294, 12.723599, 2.9213, -19.2902, 12.446099, 3.1699998, -18.9401, 10.033899, 3.2784998, -18.6997, 12.446099, 3.1699998, -18.9401, 12.747, 3.1771, -16.1991, 12.460899, 3.3913999, -16.1674, 12.446099, 3.1699998, -18.9401, 12.723599, 2.9213, -19.2902, 12.747, 3.1771, -16.1991, 12.460899, 3.3913999, -16.1674, 10.033899, 3.2784998, -18.6997, 12.446099, 3.1699998, -18.9401, 10.033899, 3.3913999, -16.7232, 10.033899, 3.2784998, -18.6997, 12.460899, 3.3913999, -16.1674, 10.033899, 3.3913999, -16.7232, 12.460899, 3.3913999, -16.1674, 12.460899, 3.3913999, -16.1674, 6.6893, 3.3913999, -16.7232, 10.033899, 3.2784998, -18.6997, 10.033899, 3.3913999, -16.7232, 6.6893, 3.3913999, -16.7232, 6.6893, 3.2782998, -18.727999, 10.033899, 3.2784998, -18.6997, 12.738999, 3.3913999, -15.894899, 12.747, 3.1771, -16.1991, 12.7471, 3.1766999, -16.1988, 12.738999, 3.3913999, -15.894899, 12.460899, 3.3913999, -16.1674, 12.747, 3.1771, -16.1991, 12.460899, 3.3913999, -16.1674, 12.738999, 3.3913999, -15.894899, 12.460899, 3.3913999, -16.1674, 3.8388, 3.3913999, -16.7232, 4.4783998, 3.1067, -18.2665, 4.6443, 3.2897, -17.9799, 3.8388, 3.3913999, -16.7232, 3.5895, 3.2033, -16.7232, 4.4783998, 3.1067, -18.2665, 4.6821, 3.3913999, -13.3786, 3.5895, 3.2033, -16.7232, 3.8388, 3.3913999, -16.7232, 4.6821, 3.3913999, -13.3786, 4.4131, 3.2091, -13.357699, 3.5895, 3.2033, -16.7232, 6.6640997, 3.0702, -19.018099, 4.6443, 3.2897, -17.9799, 4.4783998, 3.1067, -18.2665, 6.6640997, 3.0702, -19.018099, 6.6705, 3.2772, -18.741, 4.6443, 3.2897, -17.9799, 4.6443, 3.2897, -17.9799, 6.6893, 3.3913999, -16.7232, 3.8388, 3.3913999, -16.7232, 6.6893, 3.3913999, -16.7232, 4.6443, 3.2897, -17.9799, 6.6705, 3.2772, -18.741, 6.6893, 3.3913999, -16.7232, 6.6705, 3.2772, -18.741, 6.6893, 3.2782998, -18.727999, 6.6893, 3.2782998, -18.727999, 6.6640997, 3.0702, -19.018099, 6.6893, 3.0440998, -19.036999, 6.6893, 3.2782998, -18.727999, 6.6705, 3.2772, -18.741, 6.6640997, 3.0702, -19.018099, 3.7529, 3.1712, -9.0494995, 0, 3.3913999, -8.7143, 0, 3.179, -9.0652, 3.7529, 3.1712, -9.0494995, 4.0225, 3.3913999, -8.7143, 0, 3.3913999, -8.7143, 4.0225, 3.3913999, -8.7143, 4.4131, 3.2091, -13.357699, 4.6821, 3.3913999, -13.3786, 4.0225, 3.3913999, -8.7143, 3.7529, 3.1712, -9.0494995, 4.4131, 3.2091, -13.357699, -3.6538, 3.1585999, -12.813399, -6.6893, 3.3913999, -12.538199, -6.6893, 3.175, -12.867, -3.6538, 3.1585999, -12.813399, -3.9101999, 3.3913999, -12.538199, -6.6893, 3.3913999, -12.538199, -3.6076, 3.1676, -10.0696, -3.9101999, 3.3913999, -12.538199, -3.6538, 3.1585999, -12.813399, -3.6076, 3.1676, -10.0696, -3.9101999, 3.3913999, -9.8592, -3.9101999, 3.3913999, -12.538199, -0.0081, 3.1864998, -9.063499, -3.9101999, 3.3913999, -9.8592, -3.6076, 3.1676, -10.0696, -0.0081, 3.1864998, -9.063499, 0, 3.3913999, -8.7143, -3.9101999, 3.3913999, -9.8592, 0, 3.3913999, -8.7143, -0.0081, 3.1864998, -9.063499, 0, 3.179, -9.0652, 0, 3.3913999, -8.7143, 0, 3.3913999, -8.7143, -0.0081, 3.1864998, -9.063499, -10.4043, 3.1608999, -13.4295, -10.699599, 3.3913999, -15.835, -10.4319, 3.1557999, -16.1556, -10.4043, 3.1608999, -13.4295, -10.699599, 3.3913999, -13.175799, -10.699599, 3.3913999, -15.835, -10.4319, 3.1557999, -16.1556, -13.3786, 3.3913999, -15.4154, -13.3786, 3.1771998, -15.7625, -10.4319, 3.1557999, -16.1556, -10.699599, 3.3913999, -15.835, -13.3786, 3.3913999, -15.4154, -10.699599, 3.3913999, -13.175799, -6.6893, 3.175, -12.867, -6.6893, 3.3913999, -12.538199, -10.699599, 3.3913999, -13.175799, -10.4043, 3.1608999, -13.4295, -6.6893, 3.175, -12.867, -16.130499, 3.6227, -13.623799, -16.0243, 3.3509998, -15.752, -15.7941, 3.5591, -15.4641, -16.130499, 3.6227, -13.623799, -16.3753, 3.4225, -13.6277, -16.0243, 3.3509998, -15.752, -13.3911, 3.1892, -15.757, -15.7941, 3.5591, -15.4641, -16.0243, 3.3509998, -15.752, -13.3911, 3.1892, -15.757, -13.396, 3.3925, -15.4333, -15.7941, 3.5591, -15.4641, -15.7941, 3.5591, -15.4641, -13.3786, 3.3913999, -13.3786, -16.130499, 3.6227, -13.623799, -13.3786, 3.3913999, -13.3786, -15.7941, 3.5591, -15.4641, -13.396, 3.3925, -15.4333, -13.3786, 3.3913999, -13.3786, -13.396, 3.3925, -15.4333, -13.3786, 3.3913999, -15.4154, -13.3786, 3.3913999, -15.4154, -13.3911, 3.1892, -15.757, -13.3786, 3.1771998, -15.7625, -13.3786, 3.3913999, -15.4154, -13.396, 3.3925, -15.4333, -13.3911, 3.1892, -15.757, -16.3753, 3.4225, -13.6277, -16.1241, 3.3832998, -9.5097, -16.4131, 3.1706, -9.788899, -16.3753, 3.4225, -13.6277, -16.130499, 3.6227, -13.623799, -16.1241, 3.3832998, -9.5097, -16.7232, 3.3913999, -6.6893, -13.3786, 3.3913999, -10.033899, -13.3786, 3.3913999, -6.6893, -16.7232, 3.3913999, -6.6893, -16.1241, 3.3832998, -9.5097, -13.3786, 3.3913999, -10.033899, -16.1241, 3.3832998, -9.5097, -13.3786, 3.3913999, -13.3786, -13.3786, 3.3913999, -10.033899, -16.1241, 3.3832998, -9.5097, -16.130499, 3.6227, -13.623799, -13.3786, 3.3913999, -13.3786, -16.130499, 3.6227, -13.623799, -16.1241, 3.3832998, -9.5097, -16.130499, 3.6227, -13.623799, -16.130499, 3.6227, -13.623799, -16.3753, 3.4225, -13.6277, -16.3753, 3.4225, -13.6277, -16.130499, 3.6227, -13.623799, -16.130499, 3.6227, -13.623799, -16.3753, 3.4225, -13.6277, -19.7545, 3.3913999, -2.7851999, -19.515, 3.2122, -6.6893, -19.280699, 3.3913999, -6.6893, -19.7545, 3.3913999, -2.7851999, -19.9489, 3.2063, -2.8082, -19.515, 3.2122, -6.6893, -19.280699, 3.3913999, -6.6893, -19.6161, 3.2075999, -9.7116995, -19.3965, 3.3909, -9.5092, -19.280699, 3.3913999, -6.6893, -19.515, 3.2122, -6.6893, -19.6161, 3.2075999, -9.7116995, -19.280699, 3.3913999, -6.6893, -16.1241, 3.3832998, -9.5097, -16.7232, 3.3913999, -6.6893, -19.280699, 3.3913999, -6.6893, -19.3965, 3.3909, -9.5092, -16.1241, 3.3832998, -9.5097, -16.1241, 3.3832998, -9.5097, -19.6237, 3.1655998, -9.757899, -16.4131, 3.1706, -9.788899, -19.6237, 3.1655998, -9.757899, -16.1241, 3.3832998, -9.5097, -19.3965, 3.3909, -9.5092, -19.6237, 3.1655998, -9.757899, -19.3965, 3.3909, -9.5092, -19.6161, 3.2075999, -9.7116995, -22.8657, 3.4937, 3.3613, -23.3676, 3.4459999, 0.1372, -23.170399, 3.6251, 0.122999996, -22.8657, 3.4937, 3.3613, -23.0809, 3.3083, 3.3615, -23.3676, 3.4459999, 0.1372, -23.170399, 3.6251, 0.122999996, -23.390299, 3.3349998, -2.6938999, -23.192099, 3.5300999, -2.4668999, -23.170399, 3.6251, 0.122999996, -23.3676, 3.4459999, 0.1372, -23.390299, 3.3349998, -2.6938999, -23.192099, 3.5300999, -2.4668999, -19.9489, 3.2063, -2.8082, -19.9511, 3.3913999, -2.5834, -23.192099, 3.5300999, -2.4668999, -23.390299, 3.3349998, -2.6938999, -19.9489, 3.2063, -2.8082, -23.192099, 3.5300999, -2.4668999, -20.0679, 3.3913999, 0, -23.170399, 3.6251, 0.122999996, -20.0679, 3.3913999, 0, -23.192099, 3.5300999, -2.4668999, -19.9511, 3.3913999, -2.5834, -19.9511, 3.3913999, -2.5834, -23.192099, 3.5300999, -2.4668999, -19.9511, 3.3913999, -2.5834, -22.8657, 3.4937, 3.3613, -20.0679, 3.3913999, 0, -20.0679, 3.3913999, 3.3446, -22.8657, 3.4937, 3.3613, -23.170399, 3.6251, 0.122999996, -20.0679, 3.3913999, 0, -19.7545, 3.3913999, -2.7851999, -19.9489, 3.2063, -2.8082, -19.9489, 3.2063, -2.8082, -19.7545, 3.3913999, -2.7851999, -19.9511, 3.3913999, -2.5834, -19.9489, 3.2063, -2.8082, -19.9511, 3.3913999, -2.5834, -19.7545, 3.3913999, -2.7851999, -19.9511, 3.3913999, -2.5834, -23.0777, 3.3197, 3.3734, -22.3151, 3.3913999, 6.6893, -22.563799, 3.2219, 6.6893, -23.0777, 3.3197, 3.3734, -22.8764, 3.4937, 3.3741, -22.3151, 3.3913999, 6.6893, -22.8764, 3.4937, 3.3741, -20.0679, 3.3913999, 6.6893, -22.3151, 3.3913999, 6.6893, -20.0679, 3.3913999, 6.6893, -22.8764, 3.4937, 3.3741, -22.8657, 3.4937, 3.3613, -20.0679, 3.3913999, 6.6893, -22.8657, 3.4937, 3.3613, -20.0679, 3.3913999, 3.3446, -22.8657, 3.4937, 3.3613, -23.0777, 3.3197, 3.3734, -23.0809, 3.3083, 3.3615, -22.8657, 3.4937, 3.3613, -22.8764, 3.4937, 3.3741, -23.0777, 3.3197, 3.3734, -16.285099, 3.3913999, 9.5865, -20.0679, 3.1943, 9.407499, -20.0679, 3.3913999, 9.167399, -16.285099, 3.3913999, 9.5865, -16.2818, 3.1913998, 9.8056, -20.0679, 3.1943, 9.407499, -22.791399, 3.2124999, 9.4432, -20.0679, 3.3913999, 9.167399, -20.0679, 3.1943, 9.407499, -22.791399, 3.2124999, 9.4432, -22.5541, 3.3913999, 9.2058, -20.0679, 3.3913999, 9.167399, -22.5541, 3.3913999, 9.2058, -22.563799, 3.2219, 6.6893, -22.3151, 3.3913999, 6.6893, -22.5541, 3.3913999, 9.2058, -22.791399, 3.2124999, 9.4432, -22.563799, 3.2219, 6.6893, -22.791399, 3.2124999, 9.4432, -22.5541, 3.3913999, 9.2058, -22.791399, 3.2124999, 9.4432, -13.3786, 3.3922, 12.571899, -16.076399, 3.04, 12.735, -15.847199, 3.2614, 12.4973, -13.3786, 3.3922, 12.571899, -13.3786, 3.194, 12.8089, -16.076399, 3.04, 12.735, -15.847199, 3.2614, 12.4973, -16.2818, 3.1913998, 9.8056, -16.053999, 3.3913999, 9.8082, -15.847199, 3.2614, 12.4973, -16.076399, 3.04, 12.735, -16.2818, 3.1913998, 9.8056, -15.847199, 3.2614, 12.4973, -13.3786, 3.3913999, 10.033899, -13.3786, 3.3922, 12.571899, -15.847199, 3.2614, 12.4973, -16.053999, 3.3913999, 9.8082, -13.3786, 3.3913999, 10.033899, -16.053999, 3.3913999, 9.8082, -15.847199, 3.2614, 12.4973, -16.053999, 3.3913999, 9.8082, -16.285099, 3.3913999, 9.5865, -16.2818, 3.1913998, 9.8056, -16.2818, 3.1913998, 9.8056, -16.285099, 3.3913999, 9.5865, -16.053999, 3.3913999, 9.8082, -16.2818, 3.1913998, 9.8056, -16.053999, 3.3913999, 9.8082, -16.285099, 3.3913999, 9.5865, -16.053999, 3.3913999, 9.8082, -5.9742, 3.3994, 12.8817, -10.033899, 2.9384, 12.4537, -10.033899, 3.2142, 12.1061, -5.9742, 3.3994, 12.8817, -6.2748, 3.126, 13.122, -10.033899, 2.9384, 12.4537, -10.033899, 3.2142, 12.1061, -13.3786, 3.194, 12.8089, -13.3786, 3.3922, 12.571899, -10.033899, 3.2142, 12.1061, -10.033899, 2.9384, 12.4537, -13.3786, 3.194, 12.8089, -10.033899, 3.2142, 12.1061, -6.6893, 3.3913999, 10.033899, -5.9742, 3.3994, 12.8817, -10.033899, 3.2142, 12.1061, -10.033899, 3.3913999, 10.033899, -6.6893, 3.3913999, 10.033899, -13.3786, 3.3922, 12.571899, -10.033899, 3.3913999, 10.033899, -10.033899, 3.2142, 12.1061, -13.3786, 3.3922, 12.571899, -13.3786, 3.3913999, 10.033899, -10.033899, 3.3913999, 10.033899, -13.3786, 3.3913999, 10.033899, -13.3786, 3.3922, 12.571899, -13.3786, 3.3922, 12.571899, -5.9742, 3.3994, 12.8817, -3.3446, 3.3913999, 10.033899, -3.3446, 3.3913999, 13.3786, -5.9742, 3.3994, 12.8817, -6.6893, 3.3913999, 10.033899, -3.3446, 3.3913999, 10.033899, -13.3786, 3.3922, 12.571899, -13.3786, 3.194, 12.8089, -13.3786, 3.194, 12.8089, -13.3786, 3.3922, 12.571899, -13.3786, 3.3922, 12.571899, -13.3786, 3.194, 12.8089, 3.6399, 3.3913999, 16.2405, 0, 2.9636998, 16.0179, 0, 3.2243998, 15.7093, 3.6399, 3.3913999, 16.2405, 3.6425998, 3.1413999, 16.5127, 0, 2.9636998, 16.0179, 0, 3.2243998, 15.7093, -3.3446, 3.1497998, 15.914599, -3.3446, 3.3913999, 15.6011, 0, 3.2243998, 15.7093, 0, 2.9636998, 16.0179, -3.3446, 3.1497998, 15.914599, -6.2558, 3.1427999, 16.4098, -3.3446, 3.3913999, 15.6011, -3.3446, 3.1497998, 15.914599, -6.2558, 3.1427999, 16.4098, -5.9737997, 3.392, 16.087599, -3.3446, 3.3913999, 15.6011, -3.3446, 3.3913999, 15.6011, 0, 3.3913999, 13.3786, 0, 3.2243998, 15.7093, -3.3446, 3.3913999, 15.6011, -3.3446, 3.3913999, 13.3786, 0, 3.3913999, 13.3786, 0, 3.2243998, 15.7093, 3.3446, 3.3913999, 13.3786, 3.6399, 3.3913999, 16.2405, 0, 3.2243998, 15.7093, 0, 3.3913999, 13.3786, 3.3446, 3.3913999, 13.3786, -5.9737997, 3.392, 16.087599, -3.3446, 3.3913999, 13.3786, -3.3446, 3.3913999, 15.6011, -5.9737997, 3.392, 16.087599, -5.9742, 3.3994, 12.8817, -3.3446, 3.3913999, 13.3786, -6.2748, 3.1260998, 16.4145, -5.9737997, 3.392, 16.087599, -6.2558, 3.1427999, 16.4098, -5.9737997, 3.392, 16.087599, -6.2748, 3.1260998, 16.4145, -6.2748, 3.126, 13.122, -5.9737997, 3.392, 16.087599, -6.2748, 3.126, 13.122, -5.9742, 3.3994, 12.8817, 6.6893, 3.3913999, 18.9861, 3.9266999, 3.5967, 19.6223, 4.1273, 3.7335, 19.3804, 6.6893, 3.3913999, 18.9861, 6.6893, 3.2050998, 19.228699, 3.9266999, 3.5967, 19.6223, 4.1273, 3.7335, 19.3804, 3.6536, 3.2078998, 16.5669, 3.8651, 3.3981998, 16.5647, 4.1273, 3.7335, 19.3804, 3.9266999, 3.5967, 19.6223, 3.6536, 3.2078998, 16.5669, 3.8651, 3.3981998, 16.5647, 6.6893, 3.3913999, 18.9861, 4.1273, 3.7335, 19.3804, 6.6893, 3.3913999, 18.9861, 3.8651, 3.3981998, 16.5647, 3.9148, 3.3913999, 16.514599, 6.6893, 3.3913999, 18.9861, 3.9148, 3.3913999, 16.514599, 6.6893, 3.3913999, 16.7232, 3.9148, 3.3913999, 16.514599, 3.6425998, 3.1413999, 16.5127, 3.6399, 3.3913999, 16.2405, 3.6425998, 3.1413999, 16.5127, 3.9148, 3.3913999, 16.514599, 3.8651, 3.3981998, 16.5647, 3.6425998, 3.1413999, 16.5127, 3.8651, 3.3981998, 16.5647, 3.6536, 3.2078998, 16.5669, 9.3066, 3.2186, 19.0653, 10.3743, 3.3913999, 16.7232, 10.5913, 3.1985998, 16.7232, 9.3066, 3.2186, 19.0653, 9.1275, 3.3913999, 18.830599, 10.3743, 3.3913999, 16.7232, 9.1275, 3.3913999, 18.830599, 6.6991997, 3.2148, 19.2255, 6.6949, 3.3913999, 18.9914, 9.1275, 3.3913999, 18.830599, 9.3066, 3.2186, 19.0653, 6.6991997, 3.2148, 19.2255, 6.6893, 3.3913999, 18.9861, 6.6991997, 3.2148, 19.2255, 6.6893, 3.2050998, 19.228699, 6.6893, 3.3913999, 18.9861, 6.6949, 3.3913999, 18.9914, 6.6991997, 3.2148, 19.2255, 9.8131, 3.3546, 13.1979, 10.5893, 3.2117, 16.7106, 10.403999, 3.3911998, 16.6938, 9.8131, 3.3546, 13.1979, 10.0546, 3.1885, 13.4071, 10.5893, 3.2117, 16.7106, 6.6893, 3.3913999, 13.3786, 10.3743, 3.3913999, 16.7232, 6.6893, 3.3913999, 16.7232, 10.3743, 3.3913999, 16.7232, 6.6893, 3.3913999, 13.3786, 9.8131, 3.3546, 13.1979, 10.3743, 3.3913999, 16.7232, 9.8131, 3.3546, 13.1979, 10.403999, 3.3911998, 16.6938, 6.6893, 3.3913999, 13.3786, 10.033899, 3.3913999, 10.033899, 9.8131, 3.3546, 13.1979, 6.6893, 3.3913999, 13.3786, 6.6893, 3.3913999, 10.033899, 10.033899, 3.3913999, 10.033899, 10.3743, 3.3913999, 16.7232, 10.5893, 3.2117, 16.7106, 10.5913, 3.1985998, 16.7232, 10.3743, 3.3913999, 16.7232, 10.403999, 3.3911998, 16.6938, 10.5893, 3.2117, 16.7106, 13.1839, 3.2744, 6.6893, 13.5511, 3.1797, 6.6893, 13.4036, 3.0749998, 6.6893, 13.1839, 3.2744, 6.6893, 13.3786, 3.2744, 6.496, 13.5511, 3.1797, 6.6893, 12.9758, 3.2036, 10.033899, 13.1839, 3.2744, 6.6893, 13.4036, 3.0749998, 6.6893, 12.9758, 3.2036, 10.033899, 12.7325, 3.3913999, 10.033899, 13.1839, 3.2744, 6.6893, 13.2631, 3.5611, 13.4043, 12.7325, 3.3913999, 10.033899, 12.9758, 3.2036, 10.033899, 13.2631, 3.5611, 13.4043, 13.025499, 3.6999, 13.1985, 12.7325, 3.3913999, 10.033899, 10.033899, 3.3913999, 10.033899, 13.1839, 3.2744, 6.6893, 12.7325, 3.3913999, 10.033899, 10.033899, 3.3913999, 10.033899, 10.033899, 3.3913999, 6.6893, 13.1839, 3.2744, 6.6893, 9.8131, 3.3546, 13.1979, 12.7325, 3.3913999, 10.033899, 13.025499, 3.6999, 13.1985, 9.8131, 3.3546, 13.1979, 10.033899, 3.3913999, 10.033899, 12.7325, 3.3913999, 10.033899, 10.033899, 3.3913999, 3.3446, 13.1839, 3.2744, 6.6893, 10.033899, 3.3913999, 6.6893, 13.1839, 3.2744, 6.6893, 10.033899, 3.3913999, 3.3446, 13.3786, 3.3913999, 3.3446, 13.1839, 3.2744, 6.6893, 13.3786, 3.3913999, 3.3446, 13.3786, 3.2744, 6.496, 13.025499, 3.6999, 13.1985, 10.0546, 3.1885, 13.4071, 9.8131, 3.3546, 13.1979, 13.025499, 3.6999, 13.1985, 13.2631, 3.5611, 13.4043, 10.0546, 3.1885, 13.4071, 13.2631, 3.5611, 13.4043, 13.2631, 3.5611, 13.4043, 13.025499, 3.6999, 13.1985, 14.0489, 3.0042, -3.3446, 13.1206, 3.3028998, -3.3446, 13.3786, 3.3028998, -3.6027, 14.0489, 3.0042, -3.3446, 13.3786, 3.3028998, -3.0865998, 13.1206, 3.3028998, -3.3446, 16.7232, 3.1513, -3.602, 14.0489, 3.0042, -3.3446, 13.3786, 3.3028998, -3.6027, 16.7232, 3.1513, -3.602, 16.7127, 2.8734, -3.3446, 14.0489, 3.0042, -3.3446, 13.3786, 3.3028998, -3.6027, 16.7232, 3.3913999, -6.6893, 16.7232, 3.1513, -3.602, 13.3786, 3.3028998, -3.6027, 13.3786, 3.3913999, -6.6893, 16.7232, 3.3913999, -6.6893, 10.033899, 3.3913999, -6.6893, 13.1206, 3.3028998, -3.3446, 10.033899, 3.3913999, -3.3446, 13.1206, 3.3028998, -3.3446, 10.033899, 3.3913999, -6.6893, 13.3786, 3.3913999, -6.6893, 13.1206, 3.3028998, -3.3446, 13.3786, 3.3913999, -6.6893, 13.3786, 3.3028998, -3.6027, 20.0679, 0, 0, 14.0489, 3.0042, -3.3446, 20.961199, 0, -3.3446, 20.0679, 0, 3.3446, 14.0489, 3.0042, -3.3446, 20.0679, 0, 0, 14.0489, 3.0042, -3.3446, 13.3786, 3.3913999, 0, 13.3786, 3.3028998, -3.0865998, 14.0489, 3.0042, -3.3446, 13.3786, 3.2744, 6.496, 13.3786, 3.3913999, 0, 14.0489, 3.0042, -3.3446, 20.0679, 0, 3.3446, 13.3786, 3.2744, 6.496, 13.3786, 3.3913999, 0, 13.3786, 3.2744, 6.496, 13.3786, 3.3913999, 3.3446, 13.3786, 3.2744, 6.496, 20.0679, 0, 3.3446, 16.7232, 1.5715, 6.6893, 16.7232, 1.5715, 6.6893, 20.0679, 0, 3.3446, 20.0679, -0.124199994, 6.6893, 13.3786, 3.2744, 6.496, 16.7232, 1.5715, 6.6893, 13.5511, 3.1797, 6.6893, 10.033899, 3.3913999, -3.3446, 13.3786, 3.3913999, 0, 10.033899, 3.3913999, 0, 13.3786, 3.3913999, 0, 10.033899, 3.3913999, -3.3446, 13.1206, 3.3028998, -3.3446, 13.3786, 3.3913999, 0, 13.1206, 3.3028998, -3.3446, 13.3786, 3.3028998, -3.0865998, 19.831999, 3.3902998, -10.0008, 20.147, 3.0588999, -6.6893, 19.8322, 3.2891998, -6.6893, 19.831999, 3.3902998, -10.0008, 20.1796, 3.182, -9.995999, 20.147, 3.0588999, -6.6893, 19.8322, 3.2891998, -6.6893, 20.1349, 2.7974, -3.3783998, 19.8322, 3.0491, -3.602, 19.8322, 3.2891998, -6.6893, 20.147, 3.0588999, -6.6893, 20.1349, 2.7974, -3.3783998, 16.7232, 3.1513, -3.602, 19.8322, 3.2891998, -6.6893, 19.8322, 3.0491, -3.602, 16.7232, 3.1513, -3.602, 16.7232, 3.3913999, -6.6893, 19.8322, 3.2891998, -6.6893, 16.7232, 3.3913999, -10.033899, 19.8322, 3.2891998, -6.6893, 16.7232, 3.3913999, -6.6893, 19.8322, 3.2891998, -6.6893, 16.7232, 3.3913999, -10.033899, 19.798899, 3.3913999, -10.033899, 19.8322, 3.2891998, -6.6893, 19.798899, 3.3913999, -10.033899, 19.831999, 3.3902998, -10.0008, 20.198, 3.1490998, -10.033899, 19.831999, 3.3902998, -10.0008, 19.798899, 3.3913999, -10.033899, 20.198, 3.1490998, -10.033899, 20.1796, 3.182, -9.995999, 19.831999, 3.3902998, -10.0008, 20.144999, 2.7605999, -3.3446, 19.8322, 3.0491, -3.602, 20.1349, 2.7974, -3.3783998, 19.8322, 3.0491, -3.602, 20.144999, 2.7605999, -3.3446, 16.7127, 2.8734, -3.3446, 19.8322, 3.0491, -3.602, 16.7127, 2.8734, -3.3446, 16.7232, 3.1513, -3.602, 15.0508995, 0, 6.6893, 16.7232, 1.5715, 6.6893, 16.7232, 0, 6.6893, 16.7232, 0, 6.6893, 16.7232, 1.5715, 6.6893, 20.0679, -0.124199994, 6.6893, 15.0508995, 0, 6.6893, 13.5511, 3.1797, 6.6893, 16.7232, 1.5715, 6.6893, 15.0508995, 0, 6.6893, 13.4036, 3.0749998, 6.6893, 13.5511, 3.1797, 6.6893, 13.4036, 3.0749998, 6.6893, 15.0508995, 0, 6.6893, 13.8046, 0, 6.6893, -16.7232, 0.6137, 0, -15.7546, 0.6137, 3.5372, -16.7232, 0.6137, 2.9166, -15.7546, 0.6137, 3.5372, -16.7232, 0.6137, 0, -13.3786, 0.6137, 0, -16.7232, 0.6137, 0, -15.8036995, 0.6137, -2.7091, -13.3786, 0.6137, -3.3446, -16.7232, 0.6137, 0, -13.3786, 0.6137, -3.3446, -13.3786, 0.6137, 0, -13.3786, 0.6137, 0, -13.3786, 0.6137, -3.3446, -10.033899, 0.6137, -3.3446, -15.7546, 0.6137, 3.5372, -13.3786, 0.6137, 0, -14.4892, 0.6137, 4.2778, -13.3786, 0.6137, 0, -10.033899, 0.6137, -3.3446, -10.033899, 0.6137, 0, -14.4892, 0.6137, 4.2778, -13.3786, 0.6137, 0, -10.033899, 0.6137, 0, -10.033899, 0.6137, 0, -10.033899, 0.6137, -3.3446, -6.6893, 0.6137, -3.3446, -10.033899, 0.6137, 0, -6.6893, 0.6137, -3.3446, -6.6893, 0.6137, 0, -6.6893, 0.6137, 0, -6.6893, 0.6137, -3.3446, -4.0257998, 0.6137, -1.6911999, -6.6893, 0.6137, 0, -4.0257998, 0.6137, -1.6911999, -3.3446, 0.6137, 0, -10.033899, 0.6137, 3.3446, -10.033899, 0.6137, 0, -6.6893, 0.6137, 0, -14.4892, 0.6137, 4.2778, -10.033899, 0.6137, 0, -10.033899, 0.6137, 3.3446, -6.6893, 0.6137, 3.3446, -6.6893, 0.6137, 0, -3.3446, 0.6137, 0, -10.033899, 0.6137, 3.3446, -6.6893, 0.6137, 0, -6.6893, 0.6137, 3.3446, -6.6893, 0.6137, 3.3446, -3.3446, 0.6137, 0, -3.3446, 0.6137, 3.3446, -10.033899, 0.6137, 6.6893, -14.4892, 0.6137, 4.2778, -10.033899, 0.6137, 3.3446, -10.033899, 0.6137, 6.6893, -10.033899, 0.6137, 3.3446, -6.6893, 0.6137, 3.3446, -10.033899, 0.6137, 6.6893, -6.6893, 0.6137, 3.3446, -6.6893, 0.6137, 6.6893, -10.033899, 0.6137, 6.6893, -13.677099, 0.6137, 5.2616, -14.4892, 0.6137, 4.2778, -13.677099, 0.6137, 5.2616, -10.033899, 0.6137, 6.6893, -12.747499, 0.6137, 6.3671, -6.6893, 0.6137, 3.3446, -2.5674999, 0.0266, 7.6215, -6.6893, 0.6137, 6.6893, -2.5674999, 0.0266, 7.6215, -6.6893, 0.6137, 3.3446, -3.3446, 0.6137, 3.3446, -2.5674999, 0.0266, 7.6215, -3.3446, 0.6137, 3.3446, -2.1193, 0.6137, 5.2736998, -16.7232, 3.0033998, 2.9166, -15.7546, 0.6137, 3.5372, -15.372, 3.0033998, 3.6132998, -16.7232, 3.0033998, 2.9166, -16.7232, 0.6137, 2.9166, -15.7546, 0.6137, 3.5372, -14.4892, 3.0033998, 4.2778, -13.677099, 0.6137, 5.2616, -13.6942, 3.0033998, 5.1798, -14.4892, 3.0033998, 4.2778, -14.4892, 0.6137, 4.2778, -13.677099, 0.6137, 5.2616, -15.8036995, 3.0033998, -2.7091, -16.7232, 0.6137, 0, -16.7232, 3.0033998, 0, -15.8036995, 3.0033998, -2.7091, -15.8036995, 0.6137, -2.7091, -16.7232, 0.6137, 0, -16.7232, 3.0033998, 0, -16.7232, 0.6137, 2.9166, -16.7232, 3.0033998, 2.9166, -16.7232, 3.0033998, 0, -16.7232, 0.6137, 0, -16.7232, 0.6137, 2.9166, -3.3446, 3.0033998, 0, -4.0257998, 0.6137, -1.6911999, -4.0257998, 3.0033998, -1.6911999, -3.3446, 3.0033998, 0, -3.3446, 0.6137, 0, -4.0257998, 0.6137, -1.6911999, -3.3446, 3.0033998, 3.3446, -3.3446, 0.6137, 0, -3.3446, 3.0033998, 0, -3.3446, 3.0033998, 3.3446, -3.3446, 0.6137, 3.3446, -3.3446, 0.6137, 0, -12.747499, 3.0033998, 6.3671, -10.033899, 0.6137, 6.6893, -10.033899, 3.0033998, 6.6893, -12.747499, 3.0033998, 6.3671, -12.747499, 0.6137, 6.3671, -10.033899, 0.6137, 6.6893, -10.033899, 3.0033998, -3.3446, -13.3786, 0.6137, -3.3446, -13.3786, 3.0033998, -3.3446, -10.033899, 3.0033998, -3.3446, -10.033899, 0.6137, -3.3446, -13.3786, 0.6137, -3.3446, -6.6893, 3.0033998, -3.3446, -10.033899, 0.6137, -3.3446, -10.033899, 3.0033998, -3.3446, -6.6893, 3.0033998, -3.3446, -6.6893, 0.6137, -3.3446, -10.033899, 0.6137, -3.3446, -13.3786, 3.0033998, -3.3446, -15.8036995, 0.6137, -2.7091, -15.8036995, 3.0033998, -2.7091, -13.3786, 3.0033998, -3.3446, -13.3786, 0.6137, -3.3446, -15.8036995, 0.6137, -2.7091, -4.0257998, 3.0033998, -1.6911999, -6.6893, 0.6137, -3.3446, -6.6893, 3.0033998, -3.3446, -4.0257998, 3.0033998, -1.6911999, -4.0257998, 0.6137, -1.6911999, -6.6893, 0.6137, -3.3446, -6.6893, 3.0033998, 6.6893, -2.5674999, 0.0266, 7.6215, -2.5674999, 2.4164, 7.6215, -6.6893, 3.0033998, 6.6893, -6.6893, 0.6137, 6.6893, -2.5674999, 0.0266, 7.6215, -10.033899, 3.0033998, 6.6893, -6.6893, 0.6137, 6.6893, -6.6893, 3.0033998, 6.6893, -10.033899, 3.0033998, 6.6893, -10.033899, 0.6137, 6.6893, -6.6893, 0.6137, 6.6893, -2.5674999, 2.4164, 7.6215, -2.1193, 0.6137, 5.2736998, -2.1397, 3.0033998, 5.1795, -2.5674999, 2.4164, 7.6215, -2.5674999, 0.0266, 7.6215, -2.1193, 0.6137, 5.2736998, -2.1193, 0.6137, 5.2736998, -3.3446, 3.0033998, 3.3446, -2.1397, 3.0033998, 5.1795, -2.1193, 0.6137, 5.2736998, -3.3446, 0.6137, 3.3446, -3.3446, 3.0033998, 3.3446, -13.677099, 0.6137, 5.2616, -12.747499, 3.0033998, 6.3671, -13.6942, 3.0033998, 5.1798, -13.677099, 0.6137, 5.2616, -12.747499, 0.6137, 6.3671, -12.747499, 3.0033998, 6.3671, -15.7546, 0.6137, 3.5372, -14.4892, 3.0033998, 4.2778, -15.372, 3.0033998, 3.6132998, -15.7546, 0.6137, 3.5372, -14.4892, 0.6137, 4.2778, -14.4892, 3.0033998, 4.2778, 21.1831, 0, -13.6544, 16.8204, 3.138, -13.447599, 18.0241, 0, -14.3019, 21.1831, 0, -13.6544, 20.1539, 3.1299, -13.399799, 16.8204, 3.138, -13.447599, 21.8888, 0, -10.033899, 20.1539, 3.1299, -13.399799, 21.1831, 0, -13.6544, 21.8888, 0, -10.033899, 20.198, 3.1490998, -10.033899, 20.1539, 3.1299, -13.399799, 17.2285, 0, -16.8036, 12.7471, 3.1766999, -16.1988, 13.7014, 0, -17.416399, 17.2285, 0, -16.8036, 16.756899, 3.1650999, -16.7286, 12.7471, 3.1766999, -16.1988, 16.8204, 3.138, -13.447599, 17.2285, 0, -16.8036, 18.0241, 0, -14.3019, 17.2285, 0, -16.8036, 16.8204, 3.138, -13.447599, 16.8051, 3.1778, -13.479, 17.2285, 0, -16.8036, 16.8051, 3.1778, -13.479, 16.756899, 3.1650999, -16.7286, 12.7471, 3.1766999, -16.1988, 13.3786, 0, -20.5992, 13.7014, 0, -17.416399, 13.3786, 0, -20.5992, 12.7471, 3.1766999, -16.1988, 12.747, 3.1771, -16.1991, 13.3786, 0, -20.5992, 12.747, 3.1771, -16.1991, 12.723599, 2.9213, -19.2902, 13.3786, 0, -20.5992, 10.033899, 3.0523999, -19.0294, 10.033899, 0, -20.467, 13.3786, 0, -20.5992, 12.723599, 2.9213, -19.2902, 10.033899, 3.0523999, -19.0294, 10.033899, 0, -20.467, 6.6893, 3.0440998, -19.036999, 6.6893, 0, -20.1318, 10.033899, 0, -20.467, 10.033899, 3.0523999, -19.0294, 6.6893, 3.0440998, -19.036999, 3.0140998, 0, -16.7232, 4.4131, 3.2091, -13.357699, 3.3446, -0.3989, -12.9443, 3.0140998, 0, -16.7232, 3.5895, 3.2033, -16.7232, 4.4131, 3.2091, -13.357699, 6.6893, 3.0440998, -19.036999, 3.3446, 0, -20.5992, 6.6893, 0, -20.1318, 3.3446, 0, -20.5992, 6.6893, 3.0440998, -19.036999, 6.6640997, 3.0702, -19.018099, 3.3446, 0, -20.5992, 6.6640997, 3.0702, -19.018099, 4.4783998, 3.1067, -18.2665, 3.3446, 0, -20.5992, 3.5895, 3.2033, -16.7232, 3.0140998, 0, -16.7232, 3.3446, 0, -20.5992, 4.4783998, 3.1067, -18.2665, 3.5895, 3.2033, -16.7232, 2.8241, 0, -10.4594, 0, 3.179, -9.0652, 0, 0, -10.7654, 2.8241, 0, -10.4594, 3.7529, 3.1712, -9.0494995, 0, 3.179, -9.0652, 3.3446, -0.3989, -12.9443, 3.7529, 3.1712, -9.0494995, 2.8241, 0, -10.4594, 3.3446, -0.3989, -12.9443, 4.4131, 3.2091, -13.357699, 3.7529, 3.1712, -9.0494995, 4.4131, 3.2091, -13.357699, 3.3446, -0.3989, -12.9443, 4.4131, 3.2091, -13.357699, -2.6297, 0, -10.5745, -3.6538, 3.1585999, -12.813399, -3.3446, 0, -13.3786, -2.6297, 0, -10.5745, -3.6076, 3.1676, -10.0696, -3.6538, 3.1585999, -12.813399, -3.3446, 0, -13.3786, -6.6893, 3.175, -12.867, -6.6893, 0, -14.2637, -3.3446, 0, -13.3786, -3.6538, 3.1585999, -12.813399, -6.6893, 3.175, -12.867, 0, 3.179, -9.0652, -2.6297, 0, -10.5745, 0, 0, -10.7654, -2.6297, 0, -10.5745, 0, 3.179, -9.0652, -0.0081, 3.1864998, -9.063499, -2.6297, 0, -10.5745, -0.0081, 3.1864998, -9.063499, -3.6076, 3.1676, -10.0696, -6.6893, 0, -14.2637, -10.4043, 3.1608999, -13.4295, -9.6168995, 0, -14.127899, -6.6893, 0, -14.2637, -6.6893, 3.175, -12.867, -10.4043, 3.1608999, -13.4295, -6.6893, 3.175, -12.867, -6.6893, 0, -14.2637, -6.6893, 3.175, -12.867, -9.6168995, 0, -14.127899, -10.4319, 3.1557999, -16.1556, -10.033899, 0, -16.7232, -9.6168995, 0, -14.127899, -10.4043, 3.1608999, -13.4295, -10.4319, 3.1557999, -16.1556, -10.033899, 0, -16.7232, -13.3786, 3.1771998, -15.7625, -13.3786, 0, -17.3364, -10.033899, 0, -16.7232, -10.4319, 3.1557999, -16.1556, -13.3786, 3.1771998, -15.7625, -16.7232, 0, -16.7232, -16.3753, 3.4225, -13.6277, -16.7232, 0, -13.3786, -16.7232, 0, -16.7232, -16.0243, 3.3509998, -15.752, -16.3753, 3.4225, -13.6277, -13.3786, 3.1771998, -15.7625, -16.7232, 0, -16.7232, -13.3786, 0, -17.3364, -16.7232, 0, -16.7232, -13.3786, 3.1771998, -15.7625, -13.3911, 3.1892, -15.757, -16.7232, 0, -16.7232, -13.3911, 3.1892, -15.757, -16.0243, 3.3509998, -15.752, -17.275, 0, -10.5169, -19.6237, 3.1655998, -9.757899, -20.0679, 0, -10.033899, -17.275, 0, -10.5169, -16.4131, 3.1706, -9.788899, -19.6237, 3.1655998, -9.757899, -16.7232, 0, -13.3786, -16.4131, 3.1706, -9.788899, -17.275, 0, -10.5169, -16.7232, 0, -13.3786, -16.3753, 3.4225, -13.6277, -16.4131, 3.1706, -9.788899, -16.3753, 3.4225, -13.6277, -16.7232, 0, -13.3786, -16.3753, 3.4225, -13.6277, -20.3764, 0, -6.6893, -19.9489, 3.2063, -2.8082, -20.0679, -0.3484, -3.5669, -20.3764, 0, -6.6893, -19.515, 3.2122, -6.6893, -19.9489, 3.2063, -2.8082, -19.6237, 3.1655998, -9.757899, -20.3764, 0, -6.6893, -20.0679, 0, -10.033899, -20.3764, 0, -6.6893, -19.6237, 3.1655998, -9.757899, -19.6161, 3.2075999, -9.7116995, -20.3764, 0, -6.6893, -19.6161, 3.2075999, -9.7116995, -19.515, 3.2122, -6.6893, -23.412498, -0.2913, 0.26119998, -23.0809, 3.3083, 3.3615, -23.412498, 0, 3.3446, -23.412498, -0.2913, 0.26119998, -23.3676, 3.4459999, 0.1372, -23.0809, 3.3083, 3.3615, -23.412498, 0, -3.3446, -23.3676, 3.4459999, 0.1372, -23.412498, -0.2913, 0.26119998, -23.412498, 0, -3.3446, -23.390299, 3.3349998, -2.6938999, -23.3676, 3.4459999, 0.1372, -20.0679, -0.3484, -3.5669, -23.390299, 3.3349998, -2.6938999, -23.412498, 0, -3.3446, -20.0679, -0.3484, -3.5669, -19.9489, 3.2063, -2.8082, -23.390299, 3.3349998, -2.6938999, -19.9489, 3.2063, -2.8082, -20.0679, -0.3484, -3.5669, -19.9489, 3.2063, -2.8082, -23.0809, 3.3083, 3.3615, -23.8078, 0, 6.6893, -23.412498, 0, 3.3446, -23.8078, 0, 6.6893, -23.0809, 3.3083, 3.3615, -23.0777, 3.3197, 3.3734, -23.8078, 0, 6.6893, -23.0777, 3.3197, 3.3734, -22.563799, 3.2219, 6.6893, -23.8078, 0, 6.6893, -22.791399, 3.2124999, 9.4432, -23.412498, 0, 10.033899, -23.8078, 0, 6.6893, -22.563799, 3.2219, 6.6893, -22.791399, 3.2124999, 9.4432, -23.412498, 0, 10.033899, -20.0679, 3.1943, 9.407499, -20.0679, 0, 10.033899, -23.412498, 0, 10.033899, -22.791399, 3.2124999, 9.4432, -20.0679, 3.1943, 9.407499, -22.791399, 3.2124999, 9.4432, -23.412498, 0, 10.033899, -22.791399, 3.2124999, 9.4432, -20.0679, 0, 10.033899, -16.2818, 3.1913998, 9.8056, -16.7232, 0, 10.033899, -20.0679, 0, 10.033899, -20.0679, 3.1943, 9.407499, -16.2818, 3.1913998, 9.8056, -16.7232, 0, 13.3786, -13.3786, 3.194, 12.8089, -13.3786, 0, 13.3786, -16.7232, 0, 13.3786, -16.076399, 3.04, 12.735, -13.3786, 3.194, 12.8089, -16.7232, 0, 10.033899, -16.076399, 3.04, 12.735, -16.7232, 0, 13.3786, -16.7232, 0, 10.033899, -16.2818, 3.1913998, 9.8056, -16.076399, 3.04, 12.735, -16.2818, 3.1913998, 9.8056, -16.7232, 0, 10.033899, -16.2818, 3.1913998, 9.8056, -13.3786, 0, 13.3786, -10.033899, 2.9384, 12.4537, -10.033899, 0, 13.3786, -13.3786, 0, 13.3786, -13.3786, 3.194, 12.8089, -10.033899, 2.9384, 12.4537, -13.3786, 3.194, 12.8089, -13.3786, 0, 13.3786, -13.3786, 3.194, 12.8089, -10.033899, 0, 13.3786, -6.2748, 3.126, 13.122, -6.6893, 0, 13.3786, -10.033899, 0, 13.3786, -10.033899, 2.9384, 12.4537, -6.2748, 3.126, 13.122, -6.6893, 0, 13.3786, -6.2748, 3.1260998, 16.4145, -6.6893, 0, 16.7232, -6.6893, 0, 13.3786, -6.2748, 3.126, 13.122, -6.2748, 3.1260998, 16.4145, -3.3446, 0, 16.7232, 0, 2.9636998, 16.0179, 0, 0, 16.7232, -3.3446, 0, 16.7232, -3.3446, 3.1497998, 15.914599, 0, 2.9636998, 16.0179, 0, 0, 16.7232, 3.6425998, 3.1413999, 16.5127, 3.3446, 0, 16.7232, 0, 0, 16.7232, 0, 2.9636998, 16.0179, 3.6425998, 3.1413999, 16.5127, -6.2748, 3.1260998, 16.4145, -3.3446, 0, 16.7232, -6.6893, 0, 16.7232, -3.3446, 0, 16.7232, -6.2748, 3.1260998, 16.4145, -6.2558, 3.1427999, 16.4098, -3.3446, 0, 16.7232, -6.2558, 3.1427999, 16.4098, -3.3446, 3.1497998, 15.914599, 3.3446, 0, 20.0679, 6.6893, 3.2050998, 19.228699, 6.6893, 0, 20.0679, 3.3446, 0, 20.0679, 3.9266999, 3.5967, 19.6223, 6.6893, 3.2050998, 19.228699, 3.6425998, 3.1413999, 16.5127, 3.3446, 0, 20.0679, 3.3446, 0, 16.7232, 3.3446, 0, 20.0679, 3.6425998, 3.1413999, 16.5127, 3.6536, 3.2078998, 16.5669, 3.3446, 0, 20.0679, 3.6536, 3.2078998, 16.5669, 3.9266999, 3.5967, 19.6223, 6.6893, 3.2050998, 19.228699, 10.572599, 0, 20.0679, 6.6893, 0, 20.0679, 10.572599, 0, 20.0679, 6.6893, 3.2050998, 19.228699, 6.6991997, 3.2148, 19.2255, 10.572599, 0, 20.0679, 6.6991997, 3.2148, 19.2255, 9.3066, 3.2186, 19.0653, 10.572599, 0, 20.0679, 10.5913, 3.1985998, 16.7232, 10.572599, 0, 16.7232, 10.572599, 0, 20.0679, 9.3066, 3.2186, 19.0653, 10.5913, 3.1985998, 16.7232, 10.5913, 3.1985998, 16.7232, 10.572599, 0, 13.918799, 10.572599, 0, 16.7232, 10.572599, 0, 13.918799, 10.5913, 3.1985998, 16.7232, 10.5893, 3.2117, 16.7106, 10.572599, 0, 13.918799, 10.5893, 3.2117, 16.7106, 10.0546, 3.1885, 13.4071, 10.572599, 0, 13.918799, 13.2631, 3.5611, 13.4043, 13.8046, 0, 13.918799, 10.572599, 0, 13.918799, 10.0546, 3.1885, 13.4071, 13.2631, 3.5611, 13.4043, 13.8046, 0, 13.918799, 12.9758, 3.2036, 10.033899, 13.8046, 0, 10.033899, 13.8046, 0, 13.918799, 13.2631, 3.5611, 13.4043, 12.9758, 3.2036, 10.033899, 13.8046, 0, 13.918799, 13.2631, 3.5611, 13.4043, 13.2631, 3.5611, 13.4043, 13.8046, 0, 10.033899, 13.4036, 3.0749998, 6.6893, 13.8046, 0, 6.6893, 13.8046, 0, 10.033899, 12.9758, 3.2036, 10.033899, 13.4036, 3.0749998, 6.6893, 20.961199, 0, -3.3446, 16.7127, 2.8734, -3.3446, 20.144999, 2.7605999, -3.3446, 20.961199, 0, -3.3446, 14.0489, 3.0042, -3.3446, 16.7127, 2.8734, -3.3446, 20.144999, 2.7605999, -3.3446, 21.2349, 0, -6.6893, 20.961199, 0, -3.3446, 21.2349, 0, -6.6893, 20.144999, 2.7605999, -3.3446, 20.1349, 2.7974, -3.3783998, 21.2349, 0, -6.6893, 20.1349, 2.7974, -3.3783998, 20.147, 3.0588999, -6.6893, 20.147, 3.0588999, -6.6893, 21.8888, 0, -10.033899, 21.2349, 0, -6.6893, 21.8888, 0, -10.033899, 20.147, 3.0588999, -6.6893, 20.1796, 3.182, -9.995999, 21.8888, 0, -10.033899, 20.1796, 3.182, -9.995999, 20.198, 3.1490998, -10.033899, 23.412498, 0, -26.7572, 26.7572, -0.2593, -23.412498, 23.412498, 0, -23.412498, 26.7572, -0.2593, -23.412498, 23.412498, 0, -26.7572, 26.7572, -0.2593, -25.084799, 26.7572, -0.2593, -25.084799, 23.412498, 0, -26.7572, 26.7572, -0.2593, -26.7572, 26.7572, -0.2593, -21.7402, 23.412498, 0, -23.412498, 26.7572, -0.2593, -23.412498, 26.7572, -0.2593, -20.0679, 23.412498, 0, -23.412498, 26.7572, -0.2593, -21.7402, 23.412498, 0, -23.412498, 26.7572, -0.2593, -20.0679, 23.412498, 0, -20.0679, 26.7572, -0.2593, -18.3955, 23.412498, 0, -20.0679, 26.7572, -0.2593, -20.0679, 26.7572, -0.2593, -16.7232, 23.412498, 0, -20.0679, 26.7572, -0.2593, -18.3955, 23.412498, 0, -20.0679, 26.7572, -0.2593, -16.7232, 23.412498, 0, -16.7232, 26.7572, -0.2593, -15.0508995, 23.412498, 0, -16.7232, 26.7572, -0.2593, -16.7232, 26.7572, -0.2593, -13.3786, 23.412498, 0, -16.7232, 26.7572, -0.2593, -15.0508995, 23.412498, 0, -16.7232, 26.7572, -0.2593, -13.3786, 23.412498, 0, -13.3786, 26.7572, -0.2593, -11.7063, 23.412498, 0, -13.3786, 26.7572, -0.2593, -13.3786, 26.7572, -0.2593, -10.033899, 23.412498, 0, -13.3786, 26.7572, -0.2593, -11.7063, 23.412498, 0, -13.3786, 26.7572, -0.2593, -10.033899, 23.412498, 0, -10.033899, 26.7572, -0.2593, -8.3616, 23.412498, 0, -10.033899, 26.7572, -0.2593, -10.033899, 26.7572, -0.2593, -6.6893, 23.412498, 0, -10.033899, 26.7572, -0.2593, -8.3616, 23.412498, 0, -10.033899, 26.7572, -0.2593, -6.6893, 23.412498, 0, -6.6893, 26.7572, -0.2593, -5.0169997, 23.412498, 0, -6.6893, 26.7572, -0.2593, -6.6893, 26.7572, -0.2593, -3.3446, 23.412498, 0, -6.6893, 26.7572, -0.2593, -5.0169997, 23.412498, 0, -6.6893, 26.7572, -0.2593, -3.3446, 23.412498, 0, -3.3446, 26.7572, -0.2593, -1.6723, 23.412498, 0, -3.3446, 26.7572, -0.2593, -3.3446, 26.7572, -0.2593, 0, 23.412498, 0, -3.3446, 26.7572, -0.2593, -1.6723, 23.412498, 0, -3.3446, 26.7572, -0.2593, 0, 23.412498, 0, 0, 26.7572, -0.2593, 1.6723, 23.412498, 0, 0, 26.7572, -0.2593, 0, 26.7572, -0.2593, 3.3446, 23.412498, 0, 0, 26.7572, -0.2593, 1.6723, 23.412498, 0, 0, 26.7572, -0.2593, 3.3446, 23.412498, 0, 3.3446, 26.7572, -0.2593, 5.0169997, 23.412498, 0, 3.3446, 26.7572, -0.2593, 3.3446, 26.7572, -0.2593, 6.6893, 23.412498, 0, 3.3446, 26.7572, -0.2593, 5.0169997, 23.412498, 0, 3.3446, 26.7572, -0.2593, 6.6893, 23.412498, 0, 6.6893, 26.7572, -0.2593, 8.3616, 23.412498, 0, 6.6893, 26.7572, -0.2593, 6.6893, 26.7572, -0.2593, 10.033899, 23.412498, 0, 6.6893, 26.7572, -0.2593, 8.3616, 23.412498, 0, 6.6893, 26.7572, -0.2593, 10.033899, 23.412498, 0, 10.033899, 26.7572, -0.2593, 11.7063, 23.412498, 0, 10.033899, 26.7572, -0.2593, 10.033899, 26.7572, -0.2593, 13.3786, 23.412498, 0, 10.033899, 26.7572, -0.2593, 11.7063, 23.412498, 0, 10.033899, 26.7572, -0.2593, 13.3786, 23.412498, 0, 13.3786, 26.7572, -0.2593, 15.0508995, 23.412498, 0, 13.3786, 26.7572, -0.2593, 13.3786, 26.7572, -0.2593, 16.7232, 23.412498, 0, 13.3786, 26.7572, -0.2593, 15.0508995, 23.412498, 0, 13.3786, 26.7572, -0.2593, 16.7232, 23.412498, 0, 16.7232, 26.7572, -0.2593, 18.3955, 23.412498, 0, 16.7232, 26.7572, -0.2593, 16.7232, 26.7572, -0.2593, 20.0679, 23.412498, 0, 16.7232, 26.7572, -0.2593, 18.3955, 23.412498, 0, 16.7232, 26.7572, -0.2593, 20.0679, 23.412498, 0, 20.0679, 26.7572, -0.2593, 21.7402, 23.412498, 0, 20.0679, 26.7572, -0.2593, 20.0679, 26.7572, -0.2593, 23.412498, 23.412498, 0, 20.0679, 26.7572, -0.2593, 21.7402, 23.412498, 0, 20.0679, 26.7572, -0.2593, 23.412498, 23.412498, 0, 23.412498, 26.7572, -0.2593, 25.084799, 23.412498, 0, 23.412498, 26.7572, -0.2593, 23.412498, 26.7572, -0.2593, 26.7572, 23.412498, 0, 23.412498, 26.7572, -0.2593, 25.084799, 23.412498, 0, 23.412498, 26.7572, -0.2593, 26.7572, 23.412498, 0, 26.7572, -3.3446, 0, -23.412498, 0, 0, -26.7572, 0, 0, -23.412498, 0, 0, -23.412498, 0, 0, -26.7572, 3.3446, 0, -26.7572, -3.3446, 0, -23.412498, -3.3446, 0, -26.7572, 0, 0, -26.7572, 0, 0, -23.412498, 3.3446, 0, -26.7572, 3.3446, 0, -23.412498, 3.3446, 0, -23.412498, 3.3446, 0, -26.7572, 6.6893, 0, -26.7572, -3.3446, 0, -20.0679, -3.3446, 0, -23.412498, 0, 0, -23.412498, 3.3446, 0, -23.412498, 6.6893, 0, -26.7572, 6.6893, 0, -23.412498, 6.6893, 0, -23.412498, 6.6893, 0, -26.7572, 10.033899, 0, -26.7572, 0, 0, -20.0679, 0, 0, -23.412498, 3.3446, 0, -23.412498, -3.3446, 0, -20.0679, 0, 0, -23.412498, 0, 0, -20.0679, 3.3446, 0, -20.5992, 3.3446, 0, -23.412498, 6.6893, 0, -23.412498, 0, 0, -20.0679, 3.3446, 0, -23.412498, 3.3446, 0, -20.5992, 3.3446, 0, -20.5992, 6.6893, 0, -23.412498, 6.6893, 0, -20.1318, 6.6893, 0, -23.412498, 10.033899, 0, -26.7572, 10.033899, 0, -23.412498, 6.6893, 0, -20.1318, 6.6893, 0, -23.412498, 10.033899, 0, -23.412498, 10.033899, 0, -23.412498, 10.033899, 0, -26.7572, 13.3786, 0, -26.7572, 6.6893, 0, -20.1318, 10.033899, 0, -23.412498, 10.033899, 0, -20.467, 10.033899, 0, -23.412498, 13.3786, 0, -26.7572, 13.3786, 0, -23.412498, 10.033899, 0, -20.467, 10.033899, 0, -23.412498, 13.3786, 0, -23.412498, 13.3786, 0, -23.412498, 13.3786, 0, -26.7572, 16.7232, 0, -26.7572, 10.033899, 0, -20.467, 13.3786, 0, -23.412498, 13.3786, 0, -20.5992, 13.3786, 0, -23.412498, 16.7232, 0, -26.7572, 16.7232, 0, -23.412498, 13.3786, 0, -20.5992, 13.3786, 0, -23.412498, 16.7232, 0, -23.412498, 16.7232, 0, -23.412498, 16.7232, 0, -26.7572, 20.0679, 0, -26.7572, 13.3786, 0, -20.5992, 16.7232, 0, -23.412498, 16.7232, 0, -20.0679, 13.7014, 0, -17.416399, 13.3786, 0, -20.5992, 16.7232, 0, -20.0679, 13.7014, 0, -17.416399, 16.7232, 0, -20.0679, 17.2285, 0, -16.8036, 16.7232, 0, -23.412498, 20.0679, 0, -26.7572, 20.0679, 0, -23.412498, 16.7232, 0, -20.0679, 16.7232, 0, -23.412498, 20.0679, 0, -23.412498, 20.0679, 0, -23.412498, 20.0679, 0, -26.7572, 23.412498, 0, -26.7572, 20.0679, 0, -23.412498, 23.412498, 0, -26.7572, 23.412498, 0, -23.412498, 16.7232, 0, -20.0679, 20.0679, 0, -23.412498, 20.0679, 0, -20.0679, 20.0679, 0, -20.0679, 20.0679, 0, -23.412498, 23.412498, 0, -23.412498, 17.2285, 0, -16.8036, 16.7232, 0, -20.0679, 20.0679, 0, -20.0679, 20.0679, 0, -20.0679, 23.412498, 0, -23.412498, 23.412498, 0, -20.0679, 17.2285, 0, -16.8036, 20.0679, 0, -20.0679, 20.0679, 0, -16.7232, 20.0679, 0, -16.7232, 20.0679, 0, -20.0679, 23.412498, 0, -20.0679, 18.0241, 0, -14.3019, 17.2285, 0, -16.8036, 20.0679, 0, -16.7232, 20.0679, 0, -16.7232, 23.412498, 0, -20.0679, 23.412498, 0, -16.7232, 18.0241, 0, -14.3019, 20.0679, 0, -16.7232, 21.1831, 0, -13.6544, 21.1831, 0, -13.6544, 20.0679, 0, -16.7232, 23.412498, 0, -16.7232, 21.1831, 0, -13.6544, 23.412498, 0, -16.7232, 23.412498, 0, -13.3786, 21.8888, 0, -10.033899, 21.1831, 0, -13.6544, 23.412498, 0, -13.3786, 21.8888, 0, -10.033899, 23.412498, 0, -13.3786, 23.412498, 0, -10.033899, 21.2349, 0, -6.6893, 21.8888, 0, -10.033899, 23.412498, 0, -10.033899, 21.2349, 0, -6.6893, 23.412498, 0, -10.033899, 23.412498, 0, -6.6893, 20.961199, 0, -3.3446, 21.2349, 0, -6.6893, 23.412498, 0, -6.6893, 20.961199, 0, -3.3446, 23.412498, 0, -6.6893, 23.412498, 0, -3.3446, 20.0679, 0, 0, 20.961199, 0, -3.3446, 23.412498, 0, -3.3446, 20.0679, 0, 0, 23.412498, 0, -3.3446, 23.412498, 0, 0, 20.0679, 0, 3.3446, 20.0679, 0, 0, 23.412498, 0, 0, 20.0679, 0, 3.3446, 23.412498, 0, 0, 23.412498, 0, 3.3446, 10.572599, 0, 16.7232, 13.8046, 0, 13.918799, 13.3786, 0, 16.7232, 10.572599, 0, 16.7232, 10.572599, 0, 13.918799, 13.8046, 0, 13.918799, 10.572599, 0, 20.0679, 10.572599, 0, 16.7232, 13.3786, 0, 16.7232, 13.3786, 0, 16.7232, 13.8046, 0, 13.918799, 15.0508995, 0, 13.3786, 10.572599, 0, 20.0679, 13.3786, 0, 16.7232, 13.3786, 0, 20.0679, 13.8046, 0, 13.918799, 15.0508995, 0, 10.033899, 15.0508995, 0, 13.3786, 13.8046, 0, 13.918799, 13.8046, 0, 10.033899, 15.0508995, 0, 10.033899, 13.8046, 0, 10.033899, 15.0508995, 0, 6.6893, 15.0508995, 0, 10.033899, 13.8046, 0, 10.033899, 13.8046, 0, 6.6893, 15.0508995, 0, 6.6893, 15.0508995, 0, 10.033899, 15.0508995, 0, 6.6893, 16.7232, 0, 6.6893, 15.0508995, 0, 10.033899, 16.7232, 0, 6.6893, 16.7232, 0, 10.033899, 15.0508995, 0, 13.3786, 15.0508995, 0, 10.033899, 16.7232, 0, 10.033899, 13.3786, 0, 16.7232, 15.0508995, 0, 13.3786, 15.0508995, 0, 16.7232, 13.3786, 0, 20.0679, 13.3786, 0, 16.7232, 15.0508995, 0, 16.7232, 15.0508995, 0, 13.3786, 16.7232, 0, 10.033899, 16.7232, 0, 13.3786, 15.0508995, 0, 16.7232, 15.0508995, 0, 13.3786, 16.7232, 0, 13.3786, 16.7232, 0, 13.3786, 16.7232, 0, 10.033899, 20.0679, 0, 10.033899, 16.7232, 0, 13.3786, 20.0679, 0, 10.033899, 20.0679, 0, 13.3786, 20.0679, 0, 13.3786, 20.0679, 0, 10.033899, 23.412498, 0, 10.033899, 20.0679, 0, 13.3786, 23.412498, 0, 10.033899, 23.412498, 0, 13.3786, 16.7232, 0, 16.7232, 16.7232, 0, 13.3786, 20.0679, 0, 13.3786, 15.0508995, 0, 16.7232, 16.7232, 0, 13.3786, 16.7232, 0, 16.7232, 20.0679, 0, 16.7232, 20.0679, 0, 13.3786, 23.412498, 0, 13.3786, 16.7232, 0, 16.7232, 20.0679, 0, 13.3786, 20.0679, 0, 16.7232, 20.0679, 0, 16.7232, 23.412498, 0, 13.3786, 23.412498, 0, 16.7232, 15.0508995, 0, 20.0679, 15.0508995, 0, 16.7232, 16.7232, 0, 16.7232, 13.3786, 0, 20.0679, 15.0508995, 0, 16.7232, 15.0508995, 0, 20.0679, 16.7232, 0, 20.0679, 16.7232, 0, 16.7232, 20.0679, 0, 16.7232, 15.0508995, 0, 20.0679, 16.7232, 0, 16.7232, 16.7232, 0, 20.0679, 20.0679, 0, 20.0679, 20.0679, 0, 16.7232, 23.412498, 0, 16.7232, 16.7232, 0, 20.0679, 20.0679, 0, 16.7232, 20.0679, 0, 20.0679, 20.0679, 0, 20.0679, 23.412498, 0, 16.7232, 23.412498, 0, 20.0679, 20.0679, 0, 23.412498, 20.0679, 0, 20.0679, 23.412498, 0, 20.0679, 20.0679, 0, 23.412498, 23.412498, 0, 20.0679, 23.412498, 0, 23.412498, 20.0679, 0, 26.7572, 20.0679, 0, 23.412498, 23.412498, 0, 23.412498, 20.0679, 0, 26.7572, 23.412498, 0, 23.412498, 23.412498, 0, 26.7572, 16.7232, 0, 26.7572, 20.0679, 0, 23.412498, 20.0679, 0, 26.7572, 16.7232, 0, 23.412498, 20.0679, 0, 20.0679, 20.0679, 0, 23.412498, 16.7232, 0, 26.7572, 16.7232, 0, 23.412498, 20.0679, 0, 23.412498, 16.7232, 0, 23.412498, 16.7232, 0, 20.0679, 20.0679, 0, 20.0679, 15.0508995, 0, 26.7572, 16.7232, 0, 23.412498, 16.7232, 0, 26.7572, 15.0508995, 0, 23.412498, 16.7232, 0, 20.0679, 16.7232, 0, 23.412498, 15.0508995, 0, 26.7572, 15.0508995, 0, 23.412498, 16.7232, 0, 23.412498, 15.0508995, 0, 23.412498, 15.0508995, 0, 20.0679, 16.7232, 0, 20.0679, 13.3786, 0, 26.7572, 15.0508995, 0, 23.412498, 15.0508995, 0, 26.7572, 13.3786, 0, 23.412498, 15.0508995, 0, 20.0679, 15.0508995, 0, 23.412498, 13.3786, 0, 26.7572, 13.3786, 0, 23.412498, 15.0508995, 0, 23.412498, 13.3786, 0, 23.412498, 13.3786, 0, 20.0679, 15.0508995, 0, 20.0679, 10.033899, 0, 26.7572, 13.3786, 0, 23.412498, 13.3786, 0, 26.7572, 10.033899, 0, 23.412498, 13.3786, 0, 20.0679, 13.3786, 0, 23.412498, 10.033899, 0, 26.7572, 10.033899, 0, 23.412498, 13.3786, 0, 23.412498, 10.033899, 0, 23.412498, 10.572599, 0, 20.0679, 13.3786, 0, 20.0679, 6.6893, 0, 26.7572, 10.033899, 0, 23.412498, 10.033899, 0, 26.7572, 6.6893, 0, 23.412498, 10.572599, 0, 20.0679, 10.033899, 0, 23.412498, 6.6893, 0, 26.7572, 6.6893, 0, 23.412498, 10.033899, 0, 23.412498, 6.6893, 0, 23.412498, 6.6893, 0, 20.0679, 10.572599, 0, 20.0679, 3.3446, 0, 26.7572, 6.6893, 0, 23.412498, 6.6893, 0, 26.7572, 3.3446, 0, 23.412498, 6.6893, 0, 20.0679, 6.6893, 0, 23.412498, 3.3446, 0, 26.7572, 3.3446, 0, 23.412498, 6.6893, 0, 23.412498, 3.3446, 0, 23.412498, 3.3446, 0, 20.0679, 6.6893, 0, 20.0679, 0, 0, 26.7572, 3.3446, 0, 23.412498, 3.3446, 0, 26.7572, 0, 0, 26.7572, 0, 0, 23.412498, 3.3446, 0, 23.412498, 0, 0, 23.412498, 3.3446, 0, 20.0679, 3.3446, 0, 23.412498, -3.3446, 0, 26.7572, 0, 0, 23.412498, 0, 0, 26.7572, 0, 0, 23.412498, 0, 0, 20.0679, 3.3446, 0, 20.0679, 0, 0, 20.0679, 3.3446, 0, 16.7232, 3.3446, 0, 20.0679, 0, 0, 20.0679, 0, 0, 16.7232, 3.3446, 0, 16.7232, -3.3446, 0, 26.7572, -3.3446, 0, 23.412498, 0, 0, 23.412498, -3.3446, 0, 23.412498, 0, 0, 20.0679, 0, 0, 23.412498, -6.6893, 0, 26.7572, -3.3446, 0, 23.412498, -3.3446, 0, 26.7572, -3.3446, 0, 20.0679, 0, 0, 16.7232, 0, 0, 20.0679, -3.3446, 0, 23.412498, -3.3446, 0, 20.0679, 0, 0, 20.0679, -3.3446, 0, 20.0679, -3.3446, 0, 16.7232, 0, 0, 16.7232, -6.6893, 0, 26.7572, -6.6893, 0, 23.412498, -3.3446, 0, 23.412498, -6.6893, 0, 23.412498, -3.3446, 0, 20.0679, -3.3446, 0, 23.412498, -10.033899, 0, 26.7572, -6.6893, 0, 23.412498, -6.6893, 0, 26.7572, -6.6893, 0, 20.0679, -3.3446, 0, 16.7232, -3.3446, 0, 20.0679, -6.6893, 0, 23.412498, -6.6893, 0, 20.0679, -3.3446, 0, 20.0679, -6.6893, 0, 20.0679, -6.6893, 0, 16.7232, -3.3446, 0, 16.7232, -10.033899, 0, 26.7572, -10.033899, 0, 23.412498, -6.6893, 0, 23.412498, -10.033899, 0, 23.412498, -6.6893, 0, 20.0679, -6.6893, 0, 23.412498, -13.3786, 0, 26.7572, -10.033899, 0, 23.412498, -10.033899, 0, 26.7572, -10.033899, 0, 20.0679, -6.6893, 0, 16.7232, -6.6893, 0, 20.0679, -10.033899, 0, 23.412498, -10.033899, 0, 20.0679, -6.6893, 0, 20.0679, -13.3786, 0, 26.7572, -13.3786, 0, 23.412498, -10.033899, 0, 23.412498, -13.3786, 0, 23.412498, -10.033899, 0, 20.0679, -10.033899, 0, 23.412498, -16.7232, 0, 26.7572, -13.3786, 0, 23.412498, -13.3786, 0, 26.7572, -10.033899, 0, 20.0679, -10.033899, 0, 16.7232, -6.6893, 0, 16.7232, -10.033899, 0, 16.7232, -6.6893, 0, 13.3786, -6.6893, 0, 16.7232, -10.033899, 0, 16.7232, -10.033899, 0, 13.3786, -6.6893, 0, 13.3786, -13.3786, 0, 20.0679, -10.033899, 0, 16.7232, -10.033899, 0, 20.0679, -13.3786, 0, 23.412498, -13.3786, 0, 20.0679, -10.033899, 0, 20.0679, -13.3786, 0, 16.7232, -10.033899, 0, 13.3786, -10.033899, 0, 16.7232, -13.3786, 0, 20.0679, -13.3786, 0, 16.7232, -10.033899, 0, 16.7232, -13.3786, 0, 16.7232, -13.3786, 0, 13.3786, -10.033899, 0, 13.3786, -16.7232, 0, 26.7572, -16.7232, 0, 23.412498, -13.3786, 0, 23.412498, -16.7232, 0, 23.412498, -13.3786, 0, 20.0679, -13.3786, 0, 23.412498, -20.0679, 0, 26.7572, -16.7232, 0, 23.412498, -16.7232, 0, 26.7572, -16.7232, 0, 20.0679, -13.3786, 0, 16.7232, -13.3786, 0, 20.0679, -16.7232, 0, 23.412498, -16.7232, 0, 20.0679, -13.3786, 0, 20.0679, -16.7232, 0, 16.7232, -13.3786, 0, 13.3786, -13.3786, 0, 16.7232, -16.7232, 0, 20.0679, -16.7232, 0, 16.7232, -13.3786, 0, 16.7232, -16.7232, 0, 16.7232, -16.7232, 0, 13.3786, -13.3786, 0, 13.3786, -20.0679, 0, 26.7572, -20.0679, 0, 23.412498, -16.7232, 0, 23.412498, -20.0679, 0, 23.412498, -16.7232, 0, 20.0679, -16.7232, 0, 23.412498, -23.412498, 0, 26.7572, -20.0679, 0, 23.412498, -20.0679, 0, 26.7572, -20.0679, 0, 20.0679, -16.7232, 0, 16.7232, -16.7232, 0, 20.0679, -20.0679, 0, 23.412498, -20.0679, 0, 20.0679, -16.7232, 0, 20.0679, -23.412498, 0, 26.7572, -23.412498, 0, 23.412498, -20.0679, 0, 23.412498, -23.412498, 0, 23.412498, -20.0679, 0, 20.0679, -20.0679, 0, 23.412498, -26.7572, 0, 26.7572, -23.412498, 0, 23.412498, -23.412498, 0, 26.7572, -26.7572, 0, 26.7572, -26.7572, 0, 23.412498, -23.412498, 0, 23.412498, -26.7572, 0, 23.412498, -23.412498, 0, 20.0679, -23.412498, 0, 23.412498, -23.412498, 0, 23.412498, -23.412498, 0, 20.0679, -20.0679, 0, 20.0679, -26.7572, 0, 23.412498, -26.7572, 0, 20.0679, -23.412498, 0, 20.0679, -20.0679, 0, 20.0679, -20.0679, 0, 16.7232, -16.7232, 0, 16.7232, -23.412498, 0, 20.0679, -20.0679, 0, 16.7232, -20.0679, 0, 20.0679, -20.0679, 0, 16.7232, -16.7232, 0, 13.3786, -16.7232, 0, 16.7232, -26.7572, 0, 20.0679, -23.412498, 0, 16.7232, -23.412498, 0, 20.0679, -23.412498, 0, 20.0679, -23.412498, 0, 16.7232, -20.0679, 0, 16.7232, -26.7572, 0, 20.0679, -26.7572, 0, 16.7232, -23.412498, 0, 16.7232, -20.0679, 0, 16.7232, -20.0679, 0, 13.3786, -16.7232, 0, 13.3786, -23.412498, 0, 16.7232, -20.0679, 0, 13.3786, -20.0679, 0, 16.7232, -20.0679, 0, 13.3786, -16.7232, 0, 10.033899, -16.7232, 0, 13.3786, -20.0679, 0, 13.3786, -20.0679, 0, 10.033899, -16.7232, 0, 10.033899, -23.412498, 0, 16.7232, -23.412498, 0, 13.3786, -20.0679, 0, 13.3786, -23.412498, 0, 13.3786, -20.0679, 0, 10.033899, -20.0679, 0, 13.3786, -26.7572, 0, 16.7232, -23.412498, 0, 13.3786, -23.412498, 0, 16.7232, -23.412498, 0, 13.3786, -23.412498, 0, 10.033899, -20.0679, 0, 10.033899, -26.7572, 0, 16.7232, -26.7572, 0, 13.3786, -23.412498, 0, 13.3786, -26.7572, 0, 13.3786, -23.412498, 0, 10.033899, -23.412498, 0, 13.3786, -26.7572, 0, 13.3786, -26.7572, 0, 10.033899, -23.412498, 0, 10.033899, -26.7572, 0, 10.033899, -23.8078, 0, 6.6893, -23.412498, 0, 10.033899, -26.7572, 0, 10.033899, -26.7572, 0, 6.6893, -23.8078, 0, 6.6893, -26.7572, 0, 6.6893, -23.412498, 0, 3.3446, -23.8078, 0, 6.6893, -26.7572, 0, 6.6893, -26.7572, 0, 3.3446, -23.412498, 0, 3.3446, -16.7232, 0, -23.412498, -13.3786, 0, -26.7572, -13.3786, 0, -23.412498, -13.3786, 0, -23.412498, -13.3786, 0, -26.7572, -10.033899, 0, -26.7572, -16.7232, 0, -23.412498, -16.7232, 0, -26.7572, -13.3786, 0, -26.7572, -13.3786, 0, -23.412498, -10.033899, 0, -26.7572, -10.033899, 0, -23.412498, -10.033899, 0, -23.412498, -10.033899, 0, -26.7572, -6.6893, 0, -26.7572, -16.7232, 0, -20.0679, -16.7232, 0, -23.412498, -13.3786, 0, -23.412498, -10.033899, 0, -23.412498, -6.6893, 0, -26.7572, -6.6893, 0, -23.412498, -6.6893, 0, -23.412498, -6.6893, 0, -26.7572, -3.3446, 0, -26.7572, -6.6893, 0, -23.412498, -3.3446, 0, -26.7572, -3.3446, 0, -23.412498, -13.3786, 0, -20.0679, -13.3786, 0, -23.412498, -10.033899, 0, -23.412498, -16.7232, 0, -20.0679, -13.3786, 0, -23.412498, -13.3786, 0, -20.0679, -10.033899, 0, -20.0679, -10.033899, 0, -23.412498, -6.6893, 0, -23.412498, -13.3786, 0, -20.0679, -10.033899, 0, -23.412498, -10.033899, 0, -20.0679, -6.6893, 0, -20.0679, -6.6893, 0, -23.412498, -3.3446, 0, -23.412498, -10.033899, 0, -20.0679, -6.6893, 0, -23.412498, -6.6893, 0, -20.0679, -6.6893, 0, -20.0679, -3.3446, 0, -23.412498, -3.3446, 0, -20.0679, -13.3786, 0, -17.3364, -13.3786, 0, -20.0679, -10.033899, 0, -20.0679, -13.3786, 0, -17.3364, -10.033899, 0, -20.0679, -10.033899, 0, -16.7232, -10.033899, 0, -16.7232, -10.033899, 0, -20.0679, -6.6893, 0, -20.0679, -16.7232, 0, -16.7232, -13.3786, 0, -20.0679, -13.3786, 0, -17.3364, -16.7232, 0, -16.7232, -16.7232, 0, -20.0679, -13.3786, 0, -20.0679, -10.033899, 0, -16.7232, -6.6893, 0, -20.0679, -6.6893, 0, -16.7232, -6.6893, 0, -16.7232, -6.6893, 0, -20.0679, -3.3446, 0, -20.0679, -9.6168995, 0, -14.127899, -10.033899, 0, -16.7232, -6.6893, 0, -16.7232, -9.6168995, 0, -14.127899, -6.6893, 0, -16.7232, -6.6893, 0, -14.2637, -6.6893, 0, -16.7232, -3.3446, 0, -20.0679, -3.3446, 0, -16.7232, -6.6893, 0, -14.2637, -6.6893, 0, -16.7232, -3.3446, 0, -16.7232, -3.3446, 0, -16.7232, -3.3446, 0, -20.0679, 0, 0, -20.0679, -6.6893, 0, -14.2637, -3.3446, 0, -16.7232, -3.3446, 0, -13.3786, -3.3446, 0, -16.7232, 0, 0, -20.0679, 0, 0, -16.7232, -3.3446, 0, -13.3786, -3.3446, 0, -16.7232, 0, 0, -16.7232, 0, 0, -16.7232, 0, 0, -20.0679, 3.3446, 0, -20.5992, 0, 0, -16.7232, 3.3446, 0, -20.5992, 3.0140998, 0, -16.7232, -3.3446, 0, -13.3786, 0, 0, -16.7232, 0, 0, -13.3786, -2.6297, 0, -10.5745, -3.3446, 0, -13.3786, 0, 0, -13.3786, -2.6297, 0, -10.5745, 0, 0, -13.3786, 0, 0, -10.7654, -20.0679, 0, -16.7232, -16.7232, 0, -20.0679, -16.7232, 0, -16.7232, -20.0679, 0, -16.7232, -20.0679, 0, -20.0679, -16.7232, 0, -20.0679, -20.0679, 0, -20.0679, -16.7232, 0, -23.412498, -16.7232, 0, -20.0679, -20.0679, 0, -13.3786, -20.0679, 0, -16.7232, -16.7232, 0, -16.7232, -20.0679, 0, -13.3786, -16.7232, 0, -16.7232, -16.7232, 0, -13.3786, -23.412498, 0, -16.7232, -20.0679, 0, -20.0679, -20.0679, 0, -16.7232, -20.0679, 0, -10.033899, -20.0679, 0, -13.3786, -16.7232, 0, -13.3786, -20.0679, 0, -10.033899, -16.7232, 0, -13.3786, -17.275, 0, -10.5169, -23.412498, 0, -13.3786, -20.0679, 0, -16.7232, -20.0679, 0, -13.3786, -23.412498, 0, -13.3786, -23.412498, 0, -16.7232, -20.0679, 0, -16.7232, -23.412498, 0, -10.033899, -20.0679, 0, -13.3786, -20.0679, 0, -10.033899, -23.412498, 0, -10.033899, -23.412498, 0, -13.3786, -20.0679, 0, -13.3786, -26.7572, 0, -10.033899, -23.412498, 0, -13.3786, -23.412498, 0, -10.033899, -26.7572, 0, -10.033899, -26.7572, 0, -13.3786, -23.412498, 0, -13.3786, -26.7572, 0, -13.3786, -23.412498, 0, -16.7232, -23.412498, 0, -13.3786, -26.7572, 0, -6.6893, -26.7572, 0, -10.033899, -23.412498, 0, -10.033899, -26.7572, 0, -13.3786, -26.7572, 0, -16.7232, -23.412498, 0, -16.7232, -26.7572, 0, -6.6893, -23.412498, 0, -10.033899, -23.412498, 0, -6.6893, -23.412498, 0, -6.6893, -23.412498, 0, -10.033899, -20.0679, 0, -10.033899, -23.412498, 0, -6.6893, -20.0679, 0, -10.033899, -20.3764, 0, -6.6893, -26.7572, 0, -3.3446, -26.7572, 0, -6.6893, -23.412498, 0, -6.6893, -26.7572, 0, -3.3446, -23.412498, 0, -6.6893, -23.412498, 0, -3.3446, -26.7572, 0, -16.7232, -23.412498, 0, -20.0679, -23.412498, 0, -16.7232, -23.412498, 0, -16.7232, -23.412498, 0, -20.0679, -20.0679, 0, -20.0679, -26.7572, 0, -16.7232, -26.7572, 0, -20.0679, -23.412498, 0, -20.0679, -23.412498, 0, -20.0679, -20.0679, 0, -23.412498, -20.0679, 0, -20.0679, -20.0679, 0, -20.0679, -20.0679, 0, -23.412498, -16.7232, 0, -23.412498, -20.0679, 0, -23.412498, -16.7232, 0, -26.7572, -16.7232, 0, -23.412498, -20.0679, 0, -23.412498, -20.0679, 0, -26.7572, -16.7232, 0, -26.7572, -23.412498, 0, -20.0679, -23.412498, 0, -23.412498, -20.0679, 0, -23.412498, -23.412498, 0, -23.412498, -20.0679, 0, -26.7572, -20.0679, 0, -23.412498, -26.7572, 0, -20.0679, -23.412498, 0, -23.412498, -23.412498, 0, -20.0679, -23.412498, 0, -23.412498, -23.412498, 0, -26.7572, -20.0679, 0, -26.7572, -26.7572, 0, -20.0679, -26.7572, 0, -23.412498, -23.412498, 0, -23.412498, -26.7572, 0, -23.412498, -23.412498, 0, -26.7572, -23.412498, 0, -23.412498, -26.7572, 0, -23.412498, -26.7572, 0, -26.7572, -23.412498, 0, -26.7572, -23.412498, 0, -3.3446, -20.3764, 0, -6.6893, -20.0679, -0.3484, -3.5669, -23.412498, 0, -3.3446, -23.412498, 0, -6.6893, -20.3764, 0, -6.6893, 16.7232, 0, 10.033899, 20.0679, -0.124199994, 6.6893, 20.0679, 0, 10.033899, 16.7232, 0, 10.033899, 16.7232, 0, 6.6893, 20.0679, -0.124199994, 6.6893, 20.0679, 0, 10.033899, 23.412498, 0, 6.6893, 23.412498, 0, 10.033899, 20.0679, 0, 10.033899, 20.0679, -0.124199994, 6.6893, 23.412498, 0, 6.6893, -26.7572, 0, 3.3446, -23.412498, -0.2913, 0.26119998, -23.412498, 0, 3.3446, -26.7572, 0, 3.3446, -26.7572, 0, 0, -23.412498, -0.2913, 0.26119998, -26.7572, 0, 0, -23.412498, 0, -3.3446, -23.412498, -0.2913, 0.26119998, -26.7572, 0, 0, -26.7572, 0, -3.3446, -23.412498, 0, -3.3446, 0, 0, -13.3786, 3.0140998, 0, -16.7232, 3.3446, -0.3989, -12.9443, 0, 0, -13.3786, 0, 0, -16.7232, 3.0140998, 0, -16.7232, 0, 0, -10.7654, 3.3446, -0.3989, -12.9443, 2.8241, 0, -10.4594, 0, 0, -10.7654, 0, 0, -13.3786, 3.3446, -0.3989, -12.9443, 20.0679, -0.124199994, 6.6893, 23.412498, 0, 3.3446, 23.412498, 0, 6.6893, 20.0679, -0.124199994, 6.6893, 20.0679, 0, 3.3446, 23.412498, 0, 3.3446, 51.2184, -3.9413, -15.0508995, 54.072197, -3.9413, -13.3786, 51.2184, -3.9413, -13.3786, 51.2184, -3.9413, -13.3786, 54.072197, -3.9413, -13.3786, 54.072197, -3.9413, -11.7063, 51.2184, -3.9413, -15.0508995, 54.072197, -3.9413, -15.0508995, 54.072197, -3.9413, -13.3786, 51.2184, -3.9413, -13.3786, 54.072197, -3.9413, -11.7063, 51.2184, -3.9413, -11.7063, 51.2184, -3.9413, -11.7063, 54.072197, -3.9413, -11.7063, 54.072197, -3.9413, -10.033899, 48.3645, -3.9413, -15.0508995, 51.2184, -3.9413, -15.0508995, 51.2184, -3.9413, -13.3786, 51.2184, -3.9413, -11.7063, 54.072197, -3.9413, -10.033899, 51.2184, -3.9413, -10.033899, 51.2184, -3.9413, -10.033899, 54.072197, -3.9413, -10.033899, 54.072197, -3.9413, -8.3616, 48.3645, -3.9413, -13.3786, 51.2184, -3.9413, -13.3786, 51.2184, -3.9413, -11.7063, 48.3645, -3.9413, -15.0508995, 51.2184, -3.9413, -13.3786, 48.3645, -3.9413, -13.3786, 48.3645, -3.9413, -11.7063, 51.2184, -3.9413, -11.7063, 51.2184, -3.9413, -10.033899, 48.3645, -3.9413, -13.3786, 51.2184, -3.9413, -11.7063, 48.3645, -3.9413, -11.7063, 51.2184, -3.9413, -10.033899, 54.072197, -3.9413, -8.3616, 51.2184, -3.9413, -8.3616, 51.2184, -3.9413, -8.3616, 54.072197, -3.9413, -8.3616, 54.072197, -3.9413, -6.6893, 48.3645, -3.9413, -11.7063, 51.2184, -3.9413, -10.033899, 48.3645, -3.9413, -10.033899, 48.3645, -3.9413, -10.033899, 51.2184, -3.9413, -10.033899, 51.2184, -3.9413, -8.3616, 45.5107, -3.9413, -13.3786, 48.3645, -3.9413, -13.3786, 48.3645, -3.9413, -11.7063, 45.5107, -3.9413, -11.7063, 48.3645, -3.9413, -11.7063, 48.3645, -3.9413, -10.033899, 45.5107, -3.9413, -13.3786, 48.3645, -3.9413, -11.7063, 45.5107, -3.9413, -11.7063, 51.2184, -3.9413, -8.3616, 54.072197, -3.9413, -6.6893, 51.2184, -3.9413, -6.6893, 51.2184, -3.9413, -6.6893, 54.072197, -3.9413, -6.6893, 54.072197, -3.9413, -5.0169997, 48.3645, -3.9413, -10.033899, 51.2184, -3.9413, -8.3616, 48.3645, -3.9413, -8.3616, 48.3645, -3.9413, -8.3616, 51.2184, -3.9413, -8.3616, 51.2184, -3.9413, -6.6893, 45.5107, -3.9413, -11.7063, 48.3645, -3.9413, -10.033899, 45.5107, -3.9413, -10.033899, 45.5107, -3.9413, -10.033899, 48.3645, -3.9413, -10.033899, 48.3645, -3.9413, -8.3616, 51.2184, -3.9413, -6.6893, 54.072197, -3.9413, -5.0169997, 51.2184, -3.9413, -5.0169997, 51.2184, -3.9413, -5.0169997, 54.072197, -3.9413, -5.0169997, 54.072197, -3.9413, -3.3446, 48.3645, -3.9413, -8.3616, 51.2184, -3.9413, -6.6893, 48.3645, -3.9413, -6.6893, 48.3645, -3.9413, -6.6893, 51.2184, -3.9413, -6.6893, 51.2184, -3.9413, -5.0169997, 45.5107, -3.9413, -10.033899, 48.3645, -3.9413, -8.3616, 45.5107, -3.9413, -8.3616, 45.5107, -3.9413, -8.3616, 48.3645, -3.9413, -8.3616, 48.3645, -3.9413, -6.6893, 51.2184, -3.9413, -5.0169997, 54.072197, -3.9413, -3.3446, 51.2184, -3.9413, -3.3446, 51.2184, -3.9413, -3.3446, 54.072197, -3.9413, -3.3446, 54.072197, -3.9413, -1.6723, 48.3645, -3.9413, -6.6893, 51.2184, -3.9413, -5.0169997, 48.3645, -3.9413, -5.0169997, 48.3645, -3.9413, -5.0169997, 51.2184, -3.9413, -5.0169997, 51.2184, -3.9413, -3.3446, 45.5107, -3.9413, -8.3616, 48.3645, -3.9413, -6.6893, 45.5107, -3.9413, -6.6893, 45.5107, -3.9413, -6.6893, 48.3645, -3.9413, -6.6893, 48.3645, -3.9413, -5.0169997, 51.2184, -3.9413, -3.3446, 54.072197, -3.9413, -1.6723, 51.2184, -3.9413, -1.6723, 51.2184, -3.9413, -1.6723, 54.072197, -3.9413, -1.6723, 54.072197, -3.9413, 0, 48.3645, -3.9413, -5.0169997, 51.2184, -3.9413, -3.3446, 48.3645, -3.9413, -3.3446, 48.3645, -3.9413, -3.3446, 51.2184, -3.9413, -3.3446, 51.2184, -3.9413, -1.6723, 45.5107, -3.9413, -6.6893, 48.3645, -3.9413, -5.0169997, 45.5107, -3.9413, -5.0169997, 45.5107, -3.9413, -5.0169997, 48.3645, -3.9413, -5.0169997, 48.3645, -3.9413, -3.3446, 51.2184, -3.9413, -1.6723, 54.072197, -3.9413, 0, 51.2184, -3.9413, 0, 51.2184, -3.9413, 0, 54.072197, -3.9413, 0, 54.072197, -3.9413, 1.6723, 48.3645, -3.9413, -3.3446, 51.2184, -3.9413, -1.6723, 48.3645, -3.9413, -1.6723, 48.3645, -3.9413, -1.6723, 51.2184, -3.9413, -1.6723, 51.2184, -3.9413, 0, 45.5107, -3.9413, -5.0169997, 48.3645, -3.9413, -3.3446, 45.5107, -3.9413, -3.3446, 45.5107, -3.9413, -3.3446, 48.3645, -3.9413, -3.3446, 48.3645, -3.9413, -1.6723, 51.2184, -3.9413, 0, 54.072197, -3.9413, 1.6723, 51.2184, -3.9413, 1.6723, 51.2184, -3.9413, 1.6723, 54.072197, -3.9413, 1.6723, 54.072197, -3.9413, 3.3446, 48.3645, -3.9413, -1.6723, 51.2184, -3.9413, 0, 48.3645, -3.9413, 0, 48.3645, -3.9413, 0, 51.2184, -3.9413, 0, 51.2184, -3.9413, 1.6723, 45.5107, -3.9413, -3.3446, 48.3645, -3.9413, -1.6723, 45.5107, -3.9413, -1.6723, 45.5107, -3.9413, -1.6723, 48.3645, -3.9413, -1.6723, 48.3645, -3.9413, 0, 51.2184, -3.9413, 1.6723, 54.072197, -3.9413, 3.3446, 51.2184, -3.9413, 3.3446, 51.2184, -3.9413, 3.3446, 54.072197, -3.9413, 3.3446, 54.072197, -3.9413, 5.0169997, 48.3645, -3.9413, 0, 51.2184, -3.9413, 1.6723, 48.3645, -3.9413, 1.6723, 48.3645, -3.9413, 1.6723, 51.2184, -3.9413, 1.6723, 51.2184, -3.9413, 3.3446, 45.5107, -3.9413, -1.6723, 48.3645, -3.9413, 0, 45.5107, -3.9413, 0, 45.5107, -3.9413, 0, 48.3645, -3.9413, 0, 48.3645, -3.9413, 1.6723, 51.2184, -3.9413, 3.3446, 54.072197, -3.9413, 5.0169997, 51.2184, -3.9413, 5.0169997, 51.2184, -3.9413, 5.0169997, 54.072197, -3.9413, 5.0169997, 54.072197, -3.9413, 6.6893, 48.3645, -3.9413, 1.6723, 51.2184, -3.9413, 3.3446, 48.3645, -3.9413, 3.3446, 48.3645, -3.9413, 3.3446, 51.2184, -3.9413, 3.3446, 51.2184, -3.9413, 5.0169997, 45.5107, -3.9413, 0, 48.3645, -3.9413, 1.6723, 45.5107, -3.9413, 1.6723, 45.5107, -3.9413, 1.6723, 48.3645, -3.9413, 1.6723, 48.3645, -3.9413, 3.3446, 51.2184, -3.9413, 5.0169997, 54.072197, -3.9413, 6.6893, 51.2184, -3.9413, 6.6893, 51.2184, -3.9413, 6.6893, 54.072197, -3.9413, 6.6893, 54.072197, -3.9413, 8.3616, 48.3645, -3.9413, 3.3446, 51.2184, -3.9413, 5.0169997, 48.3645, -3.9413, 5.0169997, 48.3645, -3.9413, 5.0169997, 51.2184, -3.9413, 5.0169997, 51.2184, -3.9413, 6.6893, 45.5107, -3.9413, 1.6723, 48.3645, -3.9413, 3.3446, 45.5107, -3.9413, 3.3446, 45.5107, -3.9413, 3.3446, 48.3645, -3.9413, 3.3446, 48.3645, -3.9413, 5.0169997, 51.2184, -3.9413, 6.6893, 54.072197, -3.9413, 8.3616, 51.2184, -3.9413, 8.3616, 51.2184, -3.9413, 8.3616, 54.072197, -3.9413, 8.3616, 54.072197, -3.9413, 10.033899, 48.3645, -3.9413, 5.0169997, 51.2184, -3.9413, 6.6893, 48.3645, -3.9413, 6.6893, 48.3645, -3.9413, 6.6893, 51.2184, -3.9413, 6.6893, 51.2184, -3.9413, 8.3616, 45.5107, -3.9413, 3.3446, 48.3645, -3.9413, 5.0169997, 45.5107, -3.9413, 5.0169997, 45.5107, -3.9413, 5.0169997, 48.3645, -3.9413, 5.0169997, 48.3645, -3.9413, 6.6893, 51.2184, -3.9413, 8.3616, 54.072197, -3.9413, 10.033899, 51.2184, -3.9413, 10.033899, 51.2184, -3.9413, 10.033899, 54.072197, -3.9413, 10.033899, 54.072197, -3.9413, 11.7063, 48.3645, -3.9413, 6.6893, 51.2184, -3.9413, 8.3616, 48.3645, -3.9413, 8.3616, 48.3645, -3.9413, 8.3616, 51.2184, -3.9413, 8.3616, 51.2184, -3.9413, 10.033899, 45.5107, -3.9413, 5.0169997, 48.3645, -3.9413, 6.6893, 45.5107, -3.9413, 6.6893, 45.5107, -3.9413, 6.6893, 48.3645, -3.9413, 6.6893, 48.3645, -3.9413, 8.3616, 51.2184, -3.9413, 10.033899, 54.072197, -3.9413, 11.7063, 51.2184, -3.9413, 11.7063, 51.2184, -3.9413, 11.7063, 54.072197, -3.9413, 11.7063, 54.072197, -3.9413, 13.3786, 48.3645, -3.9413, 8.3616, 51.2184, -3.9413, 10.033899, 48.3645, -3.9413, 10.033899, 48.3645, -3.9413, 10.033899, 51.2184, -3.9413, 10.033899, 51.2184, -3.9413, 11.7063, 45.5107, -3.9413, 6.6893, 48.3645, -3.9413, 8.3616, 45.5107, -3.9413, 8.3616, 45.5107, -3.9413, 8.3616, 48.3645, -3.9413, 8.3616, 48.3645, -3.9413, 10.033899, 51.2184, -3.9413, 11.7063, 54.072197, -3.9413, 13.3786, 51.2184, -3.9413, 13.3786, 51.2184, -3.9413, 13.3786, 54.072197, -3.9413, 13.3786, 54.072197, -3.9413, 15.0508995, 48.3645, -3.9413, 10.033899, 51.2184, -3.9413, 11.7063, 48.3645, -3.9413, 11.7063, 48.3645, -3.9413, 11.7063, 51.2184, -3.9413, 11.7063, 51.2184, -3.9413, 13.3786, 45.5107, -3.9413, 8.3616, 48.3645, -3.9413, 10.033899, 45.5107, -3.9413, 10.033899, 45.5107, -3.9413, 10.033899, 48.3645, -3.9413, 10.033899, 48.3645, -3.9413, 11.7063, 51.2184, -3.9413, 13.3786, 54.072197, -3.9413, 15.0508995, 51.2184, -3.9413, 15.0508995, 51.2184, -3.9413, 15.0508995, 54.072197, -3.9413, 15.0508995, 54.072197, -3.9413, 16.7232, 48.3645, -3.9413, 11.7063, 51.2184, -3.9413, 13.3786, 48.3645, -3.9413, 13.3786, 48.3645, -3.9413, 13.3786, 51.2184, -3.9413, 13.3786, 51.2184, -3.9413, 15.0508995, 45.5107, -3.9413, 10.033899, 48.3645, -3.9413, 11.7063, 45.5107, -3.9413, 11.7063, 45.5107, -3.9413, 11.7063, 48.3645, -3.9413, 11.7063, 48.3645, -3.9413, 13.3786, 51.2184, -3.9413, 15.0508995, 54.072197, -3.9413, 16.7232, 51.2184, -3.9413, 16.7232, 51.2184, -3.9413, 16.7232, 54.072197, -3.9413, 16.7232, 54.072197, -3.9413, 18.3955, 48.3645, -3.9413, 13.3786, 51.2184, -3.9413, 15.0508995, 48.3645, -3.9413, 15.0508995, 48.3645, -3.9413, 15.0508995, 51.2184, -3.9413, 15.0508995, 51.2184, -3.9413, 16.7232, 45.5107, -3.9413, 11.7063, 48.3645, -3.9413, 13.3786, 45.5107, -3.9413, 13.3786, 45.5107, -3.9413, 13.3786, 48.3645, -3.9413, 13.3786, 48.3645, -3.9413, 15.0508995, 51.2184, -3.9413, 16.7232, 54.072197, -3.9413, 18.3955, 51.2184, -3.9413, 18.3955, 51.2184, -3.9413, 18.3955, 54.072197, -3.9413, 18.3955, 54.072197, -3.9413, 20.0679, 48.3645, -3.9413, 15.0508995, 51.2184, -3.9413, 16.7232, 48.3645, -3.9413, 16.7232, 48.3645, -3.9413, 16.7232, 51.2184, -3.9413, 16.7232, 51.2184, -3.9413, 18.3955, 45.5107, -3.9413, 13.3786, 48.3645, -3.9413, 15.0508995, 45.5107, -3.9413, 15.0508995, 45.5107, -3.9413, 15.0508995, 48.3645, -3.9413, 15.0508995, 48.3645, -3.9413, 16.7232, 51.2184, -3.9413, 18.3955, 54.072197, -3.9413, 20.0679, 51.2184, -3.9413, 20.0679, 51.2184, -3.9413, 20.0679, 54.072197, -3.9413, 20.0679, 54.072197, -3.9413, 21.7402, 48.3645, -3.9413, 16.7232, 51.2184, -3.9413, 18.3955, 48.3645, -3.9413, 18.3955, 48.3645, -3.9413, 18.3955, 51.2184, -3.9413, 18.3955, 51.2184, -3.9413, 20.0679, 45.5107, -3.9413, 15.0508995, 48.3645, -3.9413, 16.7232, 45.5107, -3.9413, 16.7232, 45.5107, -3.9413, 16.7232, 48.3645, -3.9413, 16.7232, 48.3645, -3.9413, 18.3955, 51.2184, -3.9413, 20.0679, 54.072197, -3.9413, 21.7402, 51.2184, -3.9413, 21.7402, 51.2184, -3.9413, 21.7402, 54.072197, -3.9413, 21.7402, 54.072197, -3.9413, 23.412498, 48.3645, -3.9413, 18.3955, 51.2184, -3.9413, 20.0679, 48.3645, -3.9413, 20.0679, 48.3645, -3.9413, 20.0679, 51.2184, -3.9413, 20.0679, 51.2184, -3.9413, 21.7402, 45.5107, -3.9413, 16.7232, 48.3645, -3.9413, 18.3955, 45.5107, -3.9413, 18.3955, 45.5107, -3.9413, 18.3955, 48.3645, -3.9413, 18.3955, 48.3645, -3.9413, 20.0679, 51.2184, -3.9413, 21.7402, 54.072197, -3.9413, 23.412498, 51.2184, -3.9413, 23.412498, 51.2184, -3.9413, 23.412498, 54.072197, -3.9413, 23.412498, 54.072197, -3.9413, 25.084799, 48.3645, -3.9413, 20.0679, 51.2184, -3.9413, 21.7402, 48.3645, -3.9413, 21.7402, 48.3645, -3.9413, 21.7402, 51.2184, -3.9413, 21.7402, 51.2184, -3.9413, 23.412498, 45.5107, -3.9413, 18.3955, 48.3645, -3.9413, 20.0679, 45.5107, -3.9413, 20.0679, 45.5107, -3.9413, 20.0679, 48.3645, -3.9413, 20.0679, 48.3645, -3.9413, 21.7402, 51.2184, -3.9413, 23.412498, 54.072197, -3.9413, 25.084799, 51.2184, -3.9413, 25.084799, 51.2184, -3.9413, 25.084799, 54.072197, -3.9413, 25.084799, 54.072197, -3.9413, 26.7572, 51.2184, -3.9413, 25.084799, 54.072197, -3.9413, 26.7572, 51.2184, -3.9413, 26.7572, 48.3645, -3.9413, 23.412498, 51.2184, -3.9413, 23.412498, 51.2184, -3.9413, 25.084799, 48.3645, -3.9413, 21.7402, 51.2184, -3.9413, 23.412498, 48.3645, -3.9413, 23.412498, 48.3645, -3.9413, 25.084799, 51.2184, -3.9413, 25.084799, 51.2184, -3.9413, 26.7572, 48.3645, -3.9413, 23.412498, 51.2184, -3.9413, 25.084799, 48.3645, -3.9413, 25.084799, 48.3645, -3.9413, 25.084799, 51.2184, -3.9413, 26.7572, 48.3645, -3.9413, 26.7572, 45.5107, -3.9413, 21.7402, 48.3645, -3.9413, 21.7402, 48.3645, -3.9413, 23.412498, 45.5107, -3.9413, 20.0679, 48.3645, -3.9413, 21.7402, 45.5107, -3.9413, 21.7402, 45.5107, -3.9413, 23.412498, 48.3645, -3.9413, 23.412498, 48.3645, -3.9413, 25.084799, 45.5107, -3.9413, 21.7402, 48.3645, -3.9413, 23.412498, 45.5107, -3.9413, 23.412498, 45.5107, -3.9413, 25.084799, 48.3645, -3.9413, 25.084799, 48.3645, -3.9413, 26.7572, 45.5107, -3.9413, 23.412498, 48.3645, -3.9413, 25.084799, 45.5107, -3.9413, 25.084799, 45.5107, -3.9413, 25.084799, 48.3645, -3.9413, 26.7572, 45.5107, -3.9413, 26.7572, 42.6568, -3.9413, 25.084799, 45.5107, -3.9413, 25.084799, 45.5107, -3.9413, 26.7572, 42.6568, -3.9413, 25.084799, 45.5107, -3.9413, 26.7572, 42.6568, -3.9413, 26.7572, 39.7973, -3.9413, 25.084799, 42.6568, -3.9413, 25.084799, 42.6568, -3.9413, 26.7572, 39.7973, -3.9413, 25.084799, 42.6568, -3.9413, 26.7572, 39.7973, -3.9413, 26.7572, 39.7973, -3.9413, 23.412498, 42.6568, -3.9413, 25.084799, 39.7973, -3.9413, 25.084799, 42.6568, -3.9413, 23.412498, 45.5107, -3.9413, 25.084799, 42.6568, -3.9413, 25.084799, 39.7973, -3.9413, 23.412498, 42.6568, -3.9413, 23.412498, 42.6568, -3.9413, 25.084799, 42.6568, -3.9413, 23.412498, 45.5107, -3.9413, 23.412498, 45.5107, -3.9413, 25.084799, 39.7973, -3.9413, 21.7402, 42.6568, -3.9413, 23.412498, 39.7973, -3.9413, 23.412498, 42.6568, -3.9413, 21.7402, 45.5107, -3.9413, 23.412498, 42.6568, -3.9413, 23.412498, 39.7973, -3.9413, 21.7402, 42.6568, -3.9413, 21.7402, 42.6568, -3.9413, 23.412498, 42.6568, -3.9413, 21.7402, 45.5107, -3.9413, 21.7402, 45.5107, -3.9413, 23.412498, 39.7973, -3.9413, 20.0679, 42.6568, -3.9413, 21.7402, 39.7973, -3.9413, 21.7402, 42.6568, -3.9413, 20.0679, 45.5107, -3.9413, 21.7402, 42.6568, -3.9413, 21.7402, 39.7973, -3.9413, 20.0679, 42.6568, -3.9413, 20.0679, 42.6568, -3.9413, 21.7402, 42.6568, -3.9413, 20.0679, 45.5107, -3.9413, 20.0679, 45.5107, -3.9413, 21.7402, 39.7973, -3.9413, 18.3955, 42.6568, -3.9413, 20.0679, 39.7973, -3.9413, 20.0679, 42.6568, -3.9413, 18.3955, 45.5107, -3.9413, 20.0679, 42.6568, -3.9413, 20.0679, 39.7973, -3.9413, 18.3955, 42.6568, -3.9413, 18.3955, 42.6568, -3.9413, 20.0679, 42.6568, -3.9413, 18.3955, 45.5107, -3.9413, 18.3955, 45.5107, -3.9413, 20.0679, 39.7973, -3.9413, 16.7232, 42.6568, -3.9413, 18.3955, 39.7973, -3.9413, 18.3955, 42.6568, -3.9413, 16.7232, 45.5107, -3.9413, 18.3955, 42.6568, -3.9413, 18.3955, 39.7973, -3.9413, 16.7232, 42.6568, -3.9413, 16.7232, 42.6568, -3.9413, 18.3955, 42.6568, -3.9413, 16.7232, 45.5107, -3.9413, 16.7232, 45.5107, -3.9413, 18.3955, 39.7973, -3.9413, 15.0508995, 42.6568, -3.9413, 16.7232, 39.7973, -3.9413, 16.7232, 42.6568, -3.9413, 15.0508995, 45.5107, -3.9413, 16.7232, 42.6568, -3.9413, 16.7232, 39.7973, -3.9413, 15.0508995, 42.6568, -3.9413, 15.0508995, 42.6568, -3.9413, 16.7232, 42.6568, -3.9413, 15.0508995, 45.5107, -3.9413, 15.0508995, 45.5107, -3.9413, 16.7232, 39.7973, -3.9413, 13.3786, 42.6568, -3.9413, 15.0508995, 39.7973, -3.9413, 15.0508995, 42.6568, -3.9413, 13.3786, 45.5107, -3.9413, 15.0508995, 42.6568, -3.9413, 15.0508995, 39.7973, -3.9413, 13.3786, 42.6568, -3.9413, 13.3786, 42.6568, -3.9413, 15.0508995, 42.6568, -3.9413, 13.3786, 45.5107, -3.9413, 13.3786, 45.5107, -3.9413, 15.0508995, 39.7973, -3.9413, 11.7063, 42.6568, -3.9413, 13.3786, 39.7973, -3.9413, 13.3786, 42.6568, -3.9413, 11.7063, 45.5107, -3.9413, 13.3786, 42.6568, -3.9413, 13.3786, 39.7973, -3.9413, 11.7063, 42.6568, -3.9413, 11.7063, 42.6568, -3.9413, 13.3786, 42.6568, -3.9413, 11.7063, 45.5107, -3.9413, 11.7063, 45.5107, -3.9413, 13.3786, 39.7973, -3.9413, 10.033899, 42.6568, -3.9413, 11.7063, 39.7973, -3.9413, 11.7063, 42.6568, -3.9413, 10.033899, 45.5107, -3.9413, 11.7063, 42.6568, -3.9413, 11.7063, 39.7973, -3.9413, 10.033899, 42.6568, -3.9413, 10.033899, 42.6568, -3.9413, 11.7063, 42.6568, -3.9413, 10.033899, 45.5107, -3.9413, 10.033899, 45.5107, -3.9413, 11.7063, 39.7973, -3.9413, 8.3616, 42.6568, -3.9413, 10.033899, 39.7973, -3.9413, 10.033899, 42.6568, -3.9413, 8.3616, 45.5107, -3.9413, 10.033899, 42.6568, -3.9413, 10.033899, 39.7973, -3.9413, 8.3616, 42.6568, -3.9413, 8.3616, 42.6568, -3.9413, 10.033899, 42.6568, -3.9413, 8.3616, 45.5107, -3.9413, 8.3616, 45.5107, -3.9413, 10.033899, 39.7973, -3.9413, 6.6893, 42.6568, -3.9413, 8.3616, 39.7973, -3.9413, 8.3616, 42.6568, -3.9413, 6.6893, 45.5107, -3.9413, 8.3616, 42.6568, -3.9413, 8.3616, 39.7973, -3.9413, 6.6893, 42.6568, -3.9413, 6.6893, 42.6568, -3.9413, 8.3616, 42.6568, -3.9413, 6.6893, 45.5107, -3.9413, 6.6893, 45.5107, -3.9413, 8.3616, 39.7973, -3.9413, 5.0169997, 42.6568, -3.9413, 6.6893, 39.7973, -3.9413, 6.6893, 42.6568, -3.9413, 5.0169997, 45.5107, -3.9413, 6.6893, 42.6568, -3.9413, 6.6893, 39.7973, -3.9413, 5.0169997, 42.6568, -3.9413, 5.0169997, 42.6568, -3.9413, 6.6893, 42.6568, -3.9413, 5.0169997, 45.5107, -3.9413, 5.0169997, 45.5107, -3.9413, 6.6893, 39.7973, -3.9413, 3.3446, 42.6568, -3.9413, 5.0169997, 39.7973, -3.9413, 5.0169997, 42.6568, -3.9413, 3.3446, 45.5107, -3.9413, 5.0169997, 42.6568, -3.9413, 5.0169997, 39.7973, -3.9413, 3.3446, 42.6568, -3.9413, 3.3446, 42.6568, -3.9413, 5.0169997, 42.6568, -3.9413, 3.3446, 45.5107, -3.9413, 3.3446, 45.5107, -3.9413, 5.0169997, 39.7973, -3.9413, 1.6723, 42.6568, -3.9413, 3.3446, 39.7973, -3.9413, 3.3446, 42.6568, -3.9413, 1.6723, 45.5107, -3.9413, 3.3446, 42.6568, -3.9413, 3.3446, 39.7973, -3.9413, 1.6723, 42.6568, -3.9413, 1.6723, 42.6568, -3.9413, 3.3446, 42.6568, -3.9413, 1.6723, 45.5107, -3.9413, 1.6723, 45.5107, -3.9413, 3.3446, 39.7973, -3.9413, 0, 42.6568, -3.9413, 1.6723, 39.7973, -3.9413, 1.6723, 42.6568, -3.9413, 0, 45.5107, -3.9413, 1.6723, 42.6568, -3.9413, 1.6723, 39.7973, -3.9413, 0, 42.6568, -3.9413, 0, 42.6568, -3.9413, 1.6723, 42.6568, -3.9413, 0, 45.5107, -3.9413, 0, 45.5107, -3.9413, 1.6723, 39.7973, -3.9413, -1.6723, 42.6568, -3.9413, 0, 39.7973, -3.9413, 0, 42.6568, -3.9413, -1.6723, 45.5107, -3.9413, 0, 42.6568, -3.9413, 0, 39.7973, -3.9413, -1.6723, 42.6568, -3.9413, -1.6723, 42.6568, -3.9413, 0, 42.6568, -3.9413, -1.6723, 45.5107, -3.9413, -1.6723, 45.5107, -3.9413, 0, 39.7973, -3.9413, -3.3446, 42.6568, -3.9413, -1.6723, 39.7973, -3.9413, -1.6723, 42.6568, -3.9413, -3.3446, 45.5107, -3.9413, -1.6723, 42.6568, -3.9413, -1.6723, 39.7973, -3.9413, -3.3446, 42.6568, -3.9413, -3.3446, 42.6568, -3.9413, -1.6723, 42.6568, -3.9413, -3.3446, 45.5107, -3.9413, -3.3446, 45.5107, -3.9413, -1.6723, 39.7973, -3.9413, -5.0169997, 42.6568, -3.9413, -3.3446, 39.7973, -3.9413, -3.3446, 42.6568, -3.9413, -5.0169997, 45.5107, -3.9413, -3.3446, 42.6568, -3.9413, -3.3446, 39.7973, -3.9413, -5.0169997, 42.6568, -3.9413, -5.0169997, 42.6568, -3.9413, -3.3446, 42.6568, -3.9413, -5.0169997, 45.5107, -3.9413, -5.0169997, 45.5107, -3.9413, -3.3446, 39.7973, -3.9413, -6.6893, 42.6568, -3.9413, -5.0169997, 39.7973, -3.9413, -5.0169997, 42.6568, -3.9413, -6.6893, 45.5107, -3.9413, -5.0169997, 42.6568, -3.9413, -5.0169997, 39.7973, -3.9413, -6.6893, 42.6568, -3.9413, -6.6893, 42.6568, -3.9413, -5.0169997, 42.6568, -3.9413, -6.6893, 45.5107, -3.9413, -6.6893, 45.5107, -3.9413, -5.0169997, 39.7973, -3.9413, -8.3616, 42.6568, -3.9413, -6.6893, 39.7973, -3.9413, -6.6893, 42.6568, -3.9413, -8.3616, 45.5107, -3.9413, -6.6893, 42.6568, -3.9413, -6.6893, 39.7973, -3.9413, -8.3616, 42.6568, -3.9413, -8.3616, 42.6568, -3.9413, -6.6893, 42.6568, -3.9413, -8.3616, 45.5107, -3.9413, -8.3616, 45.5107, -3.9413, -6.6893, 39.7973, -3.9413, -10.033899, 42.6568, -3.9413, -8.3616, 39.7973, -3.9413, -8.3616, 42.6568, -3.9413, -10.033899, 45.5107, -3.9413, -8.3616, 42.6568, -3.9413, -8.3616, 39.7973, -3.9413, -10.033899, 42.6568, -3.9413, -10.033899, 42.6568, -3.9413, -8.3616, 42.6568, -3.9413, -10.033899, 45.5107, -3.9413, -10.033899, 45.5107, -3.9413, -8.3616, 39.7973, -3.9413, -11.7063, 42.6568, -3.9413, -10.033899, 39.7973, -3.9413, -10.033899, 42.6568, -3.9413, -11.7063, 45.5107, -3.9413, -10.033899, 42.6568, -3.9413, -10.033899, 39.7973, -3.9413, -11.7063, 42.6568, -3.9413, -11.7063, 42.6568, -3.9413, -10.033899, 42.6568, -3.9413, -11.7063, 45.5107, -3.9413, -11.7063, 45.5107, -3.9413, -10.033899, 39.7973, -3.9413, -13.3786, 42.6568, -3.9413, -11.7063, 39.7973, -3.9413, -11.7063, 42.6568, -3.9413, -13.3786, 45.5107, -3.9413, -11.7063, 42.6568, -3.9413, -11.7063, 39.7973, -3.9413, -13.3786, 42.6568, -3.9413, -13.3786, 42.6568, -3.9413, -11.7063, 42.6568, -3.9413, -13.3786, 45.5107, -3.9413, -13.3786, 45.5107, -3.9413, -11.7063, 39.7973, -3.9413, -15.0508995, 42.6568, -3.9413, -13.3786, 39.7973, -3.9413, -13.3786, 39.7973, -3.9413, -15.0508995, 42.6568, -3.9413, -15.0508995, 42.6568, -3.9413, -13.3786, 42.6568, -3.9413, -15.0508995, 45.5107, -3.9413, -13.3786, 42.6568, -3.9413, -13.3786, 39.7973, -3.9413, -16.7232, 42.6568, -3.9413, -15.0508995, 39.7973, -3.9413, -15.0508995, 42.6568, -3.9413, -15.0508995, 45.5107, -3.9413, -15.0508995, 45.5107, -3.9413, -13.3786, 45.5107, -3.9413, -15.0508995, 48.3645, -3.9413, -13.3786, 45.5107, -3.9413, -13.3786, 39.7973, -3.9413, -16.7232, 42.6568, -3.9413, -16.7232, 42.6568, -3.9413, -15.0508995, 42.6568, -3.9413, -16.7232, 45.5107, -3.9413, -15.0508995, 42.6568, -3.9413, -15.0508995, 39.7973, -3.9413, -18.3955, 42.6568, -3.9413, -16.7232, 39.7973, -3.9413, -16.7232, 45.5107, -3.9413, -15.0508995, 48.3645, -3.9413, -15.0508995, 48.3645, -3.9413, -13.3786, 39.7973, -3.9413, -18.3955, 42.6568, -3.9413, -18.3955, 42.6568, -3.9413, -16.7232, 42.6568, -3.9413, -16.7232, 45.5107, -3.9413, -16.7232, 45.5107, -3.9413, -15.0508995, 45.5107, -3.9413, -16.7232, 48.3645, -3.9413, -15.0508995, 45.5107, -3.9413, -15.0508995, 42.6568, -3.9413, -18.3955, 45.5107, -3.9413, -16.7232, 42.6568, -3.9413, -16.7232, 39.7973, -3.9413, -20.0679, 42.6568, -3.9413, -18.3955, 39.7973, -3.9413, -18.3955, 45.5107, -3.9413, -16.7232, 48.3645, -3.9413, -16.7232, 48.3645, -3.9413, -15.0508995, 48.3645, -3.9413, -16.7232, 51.2184, -3.9413, -15.0508995, 48.3645, -3.9413, -15.0508995, 42.6568, -3.9413, -18.3955, 45.5107, -3.9413, -18.3955, 45.5107, -3.9413, -16.7232, 45.5107, -3.9413, -18.3955, 48.3645, -3.9413, -16.7232, 45.5107, -3.9413, -16.7232, 39.7973, -3.9413, -20.0679, 42.6568, -3.9413, -20.0679, 42.6568, -3.9413, -18.3955, 42.6568, -3.9413, -20.0679, 45.5107, -3.9413, -18.3955, 42.6568, -3.9413, -18.3955, 39.7973, -3.9413, -21.7402, 42.6568, -3.9413, -20.0679, 39.7973, -3.9413, -20.0679, 48.3645, -3.9413, -16.7232, 51.2184, -3.9413, -16.7232, 51.2184, -3.9413, -15.0508995, 51.2184, -3.9413, -16.7232, 54.072197, -3.9413, -15.0508995, 51.2184, -3.9413, -15.0508995, 51.2184, -3.9413, -16.7232, 54.072197, -3.9413, -16.7232, 54.072197, -3.9413, -15.0508995, 48.3645, -3.9413, -18.3955, 51.2184, -3.9413, -16.7232, 48.3645, -3.9413, -16.7232, 45.5107, -3.9413, -18.3955, 48.3645, -3.9413, -18.3955, 48.3645, -3.9413, -16.7232, 51.2184, -3.9413, -18.3955, 54.072197, -3.9413, -16.7232, 51.2184, -3.9413, -16.7232, 48.3645, -3.9413, -18.3955, 51.2184, -3.9413, -18.3955, 51.2184, -3.9413, -16.7232, 51.2184, -3.9413, -18.3955, 54.072197, -3.9413, -18.3955, 54.072197, -3.9413, -16.7232, 45.5107, -3.9413, -20.0679, 48.3645, -3.9413, -18.3955, 45.5107, -3.9413, -18.3955, 42.6568, -3.9413, -20.0679, 45.5107, -3.9413, -20.0679, 45.5107, -3.9413, -18.3955, 48.3645, -3.9413, -20.0679, 51.2184, -3.9413, -18.3955, 48.3645, -3.9413, -18.3955, 45.5107, -3.9413, -20.0679, 48.3645, -3.9413, -20.0679, 48.3645, -3.9413, -18.3955, 51.2184, -3.9413, -20.0679, 54.072197, -3.9413, -18.3955, 51.2184, -3.9413, -18.3955, 48.3645, -3.9413, -20.0679, 51.2184, -3.9413, -20.0679, 51.2184, -3.9413, -18.3955, 51.2184, -3.9413, -20.0679, 54.072197, -3.9413, -20.0679, 54.072197, -3.9413, -18.3955, 39.7973, -3.9413, -21.7402, 42.6568, -3.9413, -21.7402, 42.6568, -3.9413, -20.0679, 42.6568, -3.9413, -21.7402, 45.5107, -3.9413, -20.0679, 42.6568, -3.9413, -20.0679, 39.7973, -3.9413, -23.412498, 42.6568, -3.9413, -21.7402, 39.7973, -3.9413, -21.7402, 45.5107, -3.9413, -21.7402, 48.3645, -3.9413, -20.0679, 45.5107, -3.9413, -20.0679, 42.6568, -3.9413, -21.7402, 45.5107, -3.9413, -21.7402, 45.5107, -3.9413, -20.0679, 39.7973, -3.9413, -23.412498, 42.6568, -3.9413, -23.412498, 42.6568, -3.9413, -21.7402, 42.6568, -3.9413, -23.412498, 45.5107, -3.9413, -21.7402, 42.6568, -3.9413, -21.7402, 39.7973, -3.9413, -25.084799, 42.6568, -3.9413, -23.412498, 39.7973, -3.9413, -23.412498, 45.5107, -3.9413, -21.7402, 48.3645, -3.9413, -21.7402, 48.3645, -3.9413, -20.0679, 48.3645, -3.9413, -21.7402, 51.2184, -3.9413, -20.0679, 48.3645, -3.9413, -20.0679, 42.6568, -3.9413, -23.412498, 45.5107, -3.9413, -23.412498, 45.5107, -3.9413, -21.7402, 45.5107, -3.9413, -23.412498, 48.3645, -3.9413, -21.7402, 45.5107, -3.9413, -21.7402, 39.7973, -3.9413, -25.084799, 42.6568, -3.9413, -25.084799, 42.6568, -3.9413, -23.412498, 42.6568, -3.9413, -25.084799, 45.5107, -3.9413, -23.412498, 42.6568, -3.9413, -23.412498, 39.7973, -3.9413, -26.7572, 42.6568, -3.9413, -25.084799, 39.7973, -3.9413, -25.084799, 39.7973, -3.9413, -26.7572, 42.6568, -3.9413, -26.7572, 42.6568, -3.9413, -25.084799, 42.6568, -3.9413, -26.7572, 45.5107, -3.9413, -25.084799, 42.6568, -3.9413, -25.084799, 42.6568, -3.9413, -25.084799, 45.5107, -3.9413, -25.084799, 45.5107, -3.9413, -23.412498, 42.6568, -3.9413, -26.7572, 45.5107, -3.9413, -26.7572, 45.5107, -3.9413, -25.084799, 45.5107, -3.9413, -23.412498, 48.3645, -3.9413, -23.412498, 48.3645, -3.9413, -21.7402, 45.5107, -3.9413, -25.084799, 48.3645, -3.9413, -23.412498, 45.5107, -3.9413, -23.412498, 45.5107, -3.9413, -26.7572, 48.3645, -3.9413, -25.084799, 45.5107, -3.9413, -25.084799, 45.5107, -3.9413, -25.084799, 48.3645, -3.9413, -25.084799, 48.3645, -3.9413, -23.412498, 45.5107, -3.9413, -26.7572, 48.3645, -3.9413, -26.7572, 48.3645, -3.9413, -25.084799, 48.3645, -3.9413, -21.7402, 51.2184, -3.9413, -21.7402, 51.2184, -3.9413, -20.0679, 48.3645, -3.9413, -23.412498, 51.2184, -3.9413, -21.7402, 48.3645, -3.9413, -21.7402, 51.2184, -3.9413, -21.7402, 54.072197, -3.9413, -20.0679, 51.2184, -3.9413, -20.0679, 51.2184, -3.9413, -21.7402, 54.072197, -3.9413, -21.7402, 54.072197, -3.9413, -20.0679, 48.3645, -3.9413, -23.412498, 51.2184, -3.9413, -23.412498, 51.2184, -3.9413, -21.7402, 51.2184, -3.9413, -23.412498, 54.072197, -3.9413, -21.7402, 51.2184, -3.9413, -21.7402, 48.3645, -3.9413, -25.084799, 51.2184, -3.9413, -23.412498, 48.3645, -3.9413, -23.412498, 51.2184, -3.9413, -23.412498, 54.072197, -3.9413, -23.412498, 54.072197, -3.9413, -21.7402, 48.3645, -3.9413, -26.7572, 51.2184, -3.9413, -25.084799, 48.3645, -3.9413, -25.084799, 48.3645, -3.9413, -25.084799, 51.2184, -3.9413, -25.084799, 51.2184, -3.9413, -23.412498, 51.2184, -3.9413, -25.084799, 54.072197, -3.9413, -23.412498, 51.2184, -3.9413, -23.412498, 48.3645, -3.9413, -26.7572, 51.2184, -3.9413, -26.7572, 51.2184, -3.9413, -25.084799, 51.2184, -3.9413, -25.084799, 54.072197, -3.9413, -25.084799, 54.072197, -3.9413, -23.412498, 51.2184, -3.9413, -26.7572, 54.072197, -3.9413, -25.084799, 51.2184, -3.9413, -25.084799, 51.2184, -3.9413, -26.7572, 54.072197, -3.9413, -26.7572, 54.072197, -3.9413, -25.084799, 29.679499, -0.6044, -15.0508995, 32.4649, -1.1213, -13.3786, 29.679499, -0.6044, -13.3786, 29.679499, -0.6044, -13.3786, 32.4649, -1.1213, -13.3786, 32.4649, -1.1213, -11.7063, 29.679499, -0.6044, -15.0508995, 32.4649, -1.1213, -15.0508995, 32.4649, -1.1213, -13.3786, 29.679499, -0.6044, -13.3786, 32.4649, -1.1213, -11.7063, 29.679499, -0.6044, -11.7063, 29.679499, -0.6044, -16.7232, 32.4649, -1.1213, -15.0508995, 29.679499, -0.6044, -15.0508995, 29.679499, -0.6044, -11.7063, 32.4649, -1.1213, -11.7063, 32.4649, -1.1213, -10.033899, 29.679499, -0.6044, -16.7232, 32.4649, -1.1213, -16.7232, 32.4649, -1.1213, -15.0508995, 29.679499, -0.6044, -11.7063, 32.4649, -1.1213, -10.033899, 29.679499, -0.6044, -10.033899, 29.679499, -0.6044, -18.3955, 32.4649, -1.1213, -16.7232, 29.679499, -0.6044, -16.7232, 29.679499, -0.6044, -10.033899, 32.4649, -1.1213, -10.033899, 32.4649, -1.1213, -8.3616, 29.679499, -0.6044, -18.3955, 32.4649, -1.1213, -18.3955, 32.4649, -1.1213, -16.7232, 29.679499, -0.6044, -10.033899, 32.4649, -1.1213, -8.3616, 29.679499, -0.6044, -8.3616, 29.679499, -0.6044, -20.0679, 32.4649, -1.1213, -18.3955, 29.679499, -0.6044, -18.3955, 29.679499, -0.6044, -8.3616, 32.4649, -1.1213, -8.3616, 32.4649, -1.1213, -6.6893, 29.679499, -0.6044, -20.0679, 32.4649, -1.1213, -20.0679, 32.4649, -1.1213, -18.3955, 29.679499, -0.6044, -8.3616, 32.4649, -1.1213, -6.6893, 29.679499, -0.6044, -6.6893, 29.679499, -0.6044, -21.7402, 32.4649, -1.1213, -20.0679, 29.679499, -0.6044, -20.0679, 29.679499, -0.6044, -6.6893, 32.4649, -1.1213, -6.6893, 32.4649, -1.1213, -5.0169997, 29.679499, -0.6044, -21.7402, 32.4649, -1.1213, -21.7402, 32.4649, -1.1213, -20.0679, 29.679499, -0.6044, -6.6893, 32.4649, -1.1213, -5.0169997, 29.679499, -0.6044, -5.0169997, 29.679499, -0.6044, -23.412498, 32.4649, -1.1213, -21.7402, 29.679499, -0.6044, -21.7402, 29.679499, -0.6044, -5.0169997, 32.4649, -1.1213, -5.0169997, 32.4649, -1.1213, -3.3446, 29.679499, -0.6044, -23.412498, 32.4649, -1.1213, -23.412498, 32.4649, -1.1213, -21.7402, 29.679499, -0.6044, -5.0169997, 32.4649, -1.1213, -3.3446, 29.679499, -0.6044, -3.3446, 29.679499, -0.6044, -25.084799, 32.4649, -1.1213, -23.412498, 29.679499, -0.6044, -23.412498, 29.679499, -0.6044, -3.3446, 32.4649, -1.1213, -3.3446, 32.4649, -1.1213, -1.6723, 29.679499, -0.6044, -25.084799, 32.4649, -1.1213, -25.084799, 32.4649, -1.1213, -23.412498, 29.679499, -0.6044, -26.7572, 32.4649, -1.1213, -25.084799, 29.679499, -0.6044, -25.084799, 29.679499, -0.6044, -26.7572, 32.4649, -1.1213, -26.7572, 32.4649, -1.1213, -25.084799, 29.679499, -0.6044, -3.3446, 32.4649, -1.1213, -1.6723, 29.679499, -0.6044, -1.6723, 29.679499, -0.6044, -1.6723, 32.4649, -1.1213, -1.6723, 32.4649, -1.1213, 0, 29.679499, -0.6044, -1.6723, 32.4649, -1.1213, 0, 29.679499, -0.6044, 0, 29.679499, -0.6044, 0, 32.4649, -1.1213, 0, 32.4649, -1.1213, 1.6723, 29.679499, -0.6044, 0, 32.4649, -1.1213, 1.6723, 29.679499, -0.6044, 1.6723, 29.679499, -0.6044, 1.6723, 32.4649, -1.1213, 1.6723, 32.4649, -1.1213, 3.3446, 29.679499, -0.6044, 1.6723, 32.4649, -1.1213, 3.3446, 29.679499, -0.6044, 3.3446, 29.679499, -0.6044, 3.3446, 32.4649, -1.1213, 3.3446, 32.4649, -1.1213, 5.0169997, 29.679499, -0.6044, 3.3446, 32.4649, -1.1213, 5.0169997, 29.679499, -0.6044, 5.0169997, 29.679499, -0.6044, 5.0169997, 32.4649, -1.1213, 5.0169997, 32.4649, -1.1213, 6.6893, 29.679499, -0.6044, 5.0169997, 32.4649, -1.1213, 6.6893, 29.679499, -0.6044, 6.6893, 29.679499, -0.6044, 6.6893, 32.4649, -1.1213, 6.6893, 32.4649, -1.1213, 8.3616, 29.679499, -0.6044, 6.6893, 32.4649, -1.1213, 8.3616, 29.679499, -0.6044, 8.3616, 29.679499, -0.6044, 8.3616, 32.4649, -1.1213, 8.3616, 32.4649, -1.1213, 10.033899, 29.679499, -0.6044, 8.3616, 32.4649, -1.1213, 10.033899, 29.679499, -0.6044, 10.033899, 29.679499, -0.6044, 10.033899, 32.4649, -1.1213, 10.033899, 32.4649, -1.1213, 11.7063, 29.679499, -0.6044, 10.033899, 32.4649, -1.1213, 11.7063, 29.679499, -0.6044, 11.7063, 29.679499, -0.6044, 11.7063, 32.4649, -1.1213, 11.7063, 32.4649, -1.1213, 13.3786, 29.679499, -0.6044, 11.7063, 32.4649, -1.1213, 13.3786, 29.679499, -0.6044, 13.3786, 29.679499, -0.6044, 13.3786, 32.4649, -1.1213, 13.3786, 32.4649, -1.1213, 15.0508995, 29.679499, -0.6044, 13.3786, 32.4649, -1.1213, 15.0508995, 29.679499, -0.6044, 15.0508995, 29.679499, -0.6044, 15.0508995, 32.4649, -1.1213, 15.0508995, 32.4649, -1.1213, 16.7232, 29.679499, -0.6044, 15.0508995, 32.4649, -1.1213, 16.7232, 29.679499, -0.6044, 16.7232, 29.679499, -0.6044, 16.7232, 32.4649, -1.1213, 16.7232, 32.4649, -1.1213, 18.3955, 29.679499, -0.6044, 16.7232, 32.4649, -1.1213, 18.3955, 29.679499, -0.6044, 18.3955, 29.679499, -0.6044, 18.3955, 32.4649, -1.1213, 18.3955, 32.4649, -1.1213, 20.0679, 29.679499, -0.6044, 18.3955, 32.4649, -1.1213, 20.0679, 29.679499, -0.6044, 20.0679, 29.679499, -0.6044, 20.0679, 32.4649, -1.1213, 20.0679, 32.4649, -1.1213, 21.7402, 29.679499, -0.6044, 20.0679, 32.4649, -1.1213, 21.7402, 29.679499, -0.6044, 21.7402, 29.679499, -0.6044, 21.7402, 32.4649, -1.1213, 21.7402, 32.4649, -1.1213, 23.412498, 29.679499, -0.6044, 21.7402, 32.4649, -1.1213, 23.412498, 29.679499, -0.6044, 23.412498, 29.679499, -0.6044, 23.412498, 32.4649, -1.1213, 23.412498, 32.4649, -1.1213, 25.084799, 29.679499, -0.6044, 23.412498, 32.4649, -1.1213, 25.084799, 29.679499, -0.6044, 25.084799, 29.679499, -0.6044, 25.084799, 32.4649, -1.1213, 25.084799, 32.4649, -1.1213, 26.7572, 29.679499, -0.6044, 25.084799, 32.4649, -1.1213, 26.7572, 29.679499, -0.6044, 26.7572, 32.4649, -1.1213, -15.0508995, 39.7973, -3.9413, -13.3786, 32.4649, -1.1213, -13.3786, 32.4649, -1.1213, -13.3786, 39.7973, -3.9413, -13.3786, 39.7973, -3.9413, -11.7063, 32.4649, -1.1213, -15.0508995, 39.7973, -3.9413, -15.0508995, 39.7973, -3.9413, -13.3786, 32.4649, -1.1213, -13.3786, 39.7973, -3.9413, -11.7063, 32.4649, -1.1213, -11.7063, 32.4649, -1.1213, -16.7232, 39.7973, -3.9413, -15.0508995, 32.4649, -1.1213, -15.0508995, 32.4649, -1.1213, -11.7063, 39.7973, -3.9413, -11.7063, 39.7973, -3.9413, -10.033899, 32.4649, -1.1213, -16.7232, 39.7973, -3.9413, -16.7232, 39.7973, -3.9413, -15.0508995, 32.4649, -1.1213, -11.7063, 39.7973, -3.9413, -10.033899, 32.4649, -1.1213, -10.033899, 32.4649, -1.1213, -18.3955, 39.7973, -3.9413, -16.7232, 32.4649, -1.1213, -16.7232, 32.4649, -1.1213, -10.033899, 39.7973, -3.9413, -10.033899, 39.7973, -3.9413, -8.3616, 32.4649, -1.1213, -18.3955, 39.7973, -3.9413, -18.3955, 39.7973, -3.9413, -16.7232, 32.4649, -1.1213, -10.033899, 39.7973, -3.9413, -8.3616, 32.4649, -1.1213, -8.3616, 32.4649, -1.1213, -20.0679, 39.7973, -3.9413, -18.3955, 32.4649, -1.1213, -18.3955, 32.4649, -1.1213, -8.3616, 39.7973, -3.9413, -8.3616, 39.7973, -3.9413, -6.6893, 32.4649, -1.1213, -20.0679, 39.7973, -3.9413, -20.0679, 39.7973, -3.9413, -18.3955, 32.4649, -1.1213, -8.3616, 39.7973, -3.9413, -6.6893, 32.4649, -1.1213, -6.6893, 32.4649, -1.1213, -21.7402, 39.7973, -3.9413, -20.0679, 32.4649, -1.1213, -20.0679, 32.4649, -1.1213, -6.6893, 39.7973, -3.9413, -6.6893, 39.7973, -3.9413, -5.0169997, 32.4649, -1.1213, -21.7402, 39.7973, -3.9413, -21.7402, 39.7973, -3.9413, -20.0679, 32.4649, -1.1213, -6.6893, 39.7973, -3.9413, -5.0169997, 32.4649, -1.1213, -5.0169997, 32.4649, -1.1213, -23.412498, 39.7973, -3.9413, -21.7402, 32.4649, -1.1213, -21.7402, 32.4649, -1.1213, -5.0169997, 39.7973, -3.9413, -5.0169997, 39.7973, -3.9413, -3.3446, 32.4649, -1.1213, -23.412498, 39.7973, -3.9413, -23.412498, 39.7973, -3.9413, -21.7402, 32.4649, -1.1213, -5.0169997, 39.7973, -3.9413, -3.3446, 32.4649, -1.1213, -3.3446, 32.4649, -1.1213, -25.084799, 39.7973, -3.9413, -23.412498, 32.4649, -1.1213, -23.412498, 32.4649, -1.1213, -3.3446, 39.7973, -3.9413, -3.3446, 39.7973, -3.9413, -1.6723, 32.4649, -1.1213, -25.084799, 39.7973, -3.9413, -25.084799, 39.7973, -3.9413, -23.412498, 32.4649, -1.1213, -26.7572, 39.7973, -3.9413, -25.084799, 32.4649, -1.1213, -25.084799, 32.4649, -1.1213, -26.7572, 39.7973, -3.9413, -26.7572, 39.7973, -3.9413, -25.084799, 32.4649, -1.1213, -3.3446, 39.7973, -3.9413, -1.6723, 32.4649, -1.1213, -1.6723, 32.4649, -1.1213, -1.6723, 39.7973, -3.9413, -1.6723, 39.7973, -3.9413, 0, 32.4649, -1.1213, -1.6723, 39.7973, -3.9413, 0, 32.4649, -1.1213, 0, 32.4649, -1.1213, 0, 39.7973, -3.9413, 0, 39.7973, -3.9413, 1.6723, 32.4649, -1.1213, 0, 39.7973, -3.9413, 1.6723, 32.4649, -1.1213, 1.6723, 32.4649, -1.1213, 1.6723, 39.7973, -3.9413, 1.6723, 39.7973, -3.9413, 3.3446, 32.4649, -1.1213, 1.6723, 39.7973, -3.9413, 3.3446, 32.4649, -1.1213, 3.3446, 32.4649, -1.1213, 3.3446, 39.7973, -3.9413, 3.3446, 39.7973, -3.9413, 5.0169997, 32.4649, -1.1213, 3.3446, 39.7973, -3.9413, 5.0169997, 32.4649, -1.1213, 5.0169997, 32.4649, -1.1213, 5.0169997, 39.7973, -3.9413, 5.0169997, 39.7973, -3.9413, 6.6893, 32.4649, -1.1213, 5.0169997, 39.7973, -3.9413, 6.6893, 32.4649, -1.1213, 6.6893, 32.4649, -1.1213, 6.6893, 39.7973, -3.9413, 6.6893, 39.7973, -3.9413, 8.3616, 32.4649, -1.1213, 6.6893, 39.7973, -3.9413, 8.3616, 32.4649, -1.1213, 8.3616, 32.4649, -1.1213, 8.3616, 39.7973, -3.9413, 8.3616, 39.7973, -3.9413, 10.033899, 32.4649, -1.1213, 8.3616, 39.7973, -3.9413, 10.033899, 32.4649, -1.1213, 10.033899, 32.4649, -1.1213, 10.033899, 39.7973, -3.9413, 10.033899, 39.7973, -3.9413, 11.7063, 32.4649, -1.1213, 10.033899, 39.7973, -3.9413, 11.7063, 32.4649, -1.1213, 11.7063, 32.4649, -1.1213, 11.7063, 39.7973, -3.9413, 11.7063, 39.7973, -3.9413, 13.3786, 32.4649, -1.1213, 11.7063, 39.7973, -3.9413, 13.3786, 32.4649, -1.1213, 13.3786, 32.4649, -1.1213, 13.3786, 39.7973, -3.9413, 13.3786, 39.7973, -3.9413, 15.0508995, 32.4649, -1.1213, 13.3786, 39.7973, -3.9413, 15.0508995, 32.4649, -1.1213, 15.0508995, 32.4649, -1.1213, 15.0508995, 39.7973, -3.9413, 15.0508995, 39.7973, -3.9413, 16.7232, 32.4649, -1.1213, 15.0508995, 39.7973, -3.9413, 16.7232, 32.4649, -1.1213, 16.7232, 32.4649, -1.1213, 16.7232, 39.7973, -3.9413, 16.7232, 39.7973, -3.9413, 18.3955, 32.4649, -1.1213, 16.7232, 39.7973, -3.9413, 18.3955, 32.4649, -1.1213, 18.3955, 32.4649, -1.1213, 18.3955, 39.7973, -3.9413, 18.3955, 39.7973, -3.9413, 20.0679, 32.4649, -1.1213, 18.3955, 39.7973, -3.9413, 20.0679, 32.4649, -1.1213, 20.0679, 32.4649, -1.1213, 20.0679, 39.7973, -3.9413, 20.0679, 39.7973, -3.9413, 21.7402, 32.4649, -1.1213, 20.0679, 39.7973, -3.9413, 21.7402, 32.4649, -1.1213, 21.7402, 32.4649, -1.1213, 21.7402, 39.7973, -3.9413, 21.7402, 39.7973, -3.9413, 23.412498, 32.4649, -1.1213, 21.7402, 39.7973, -3.9413, 23.412498, 32.4649, -1.1213, 23.412498, 32.4649, -1.1213, 23.412498, 39.7973, -3.9413, 23.412498, 39.7973, -3.9413, 25.084799, 32.4649, -1.1213, 23.412498, 39.7973, -3.9413, 25.084799, 32.4649, -1.1213, 25.084799, 32.4649, -1.1213, 25.084799, 39.7973, -3.9413, 25.084799, 39.7973, -3.9413, 26.7572, 32.4649, -1.1213, 25.084799, 39.7973, -3.9413, 26.7572, 32.4649, -1.1213, 26.7572, 26.7572, -0.2593, 16.7232, 29.679499, -0.6044, 18.3955, 26.7572, -0.2593, 18.3955, 26.7572, -0.2593, 18.3955, 29.679499, -0.6044, 18.3955, 29.679499, -0.6044, 20.0679, 26.7572, -0.2593, 16.7232, 29.679499, -0.6044, 16.7232, 29.679499, -0.6044, 18.3955, 26.7572, -0.2593, 18.3955, 29.679499, -0.6044, 20.0679, 26.7572, -0.2593, 20.0679, 26.7572, -0.2593, 15.0508995, 29.679499, -0.6044, 16.7232, 26.7572, -0.2593, 16.7232, 26.7572, -0.2593, 20.0679, 29.679499, -0.6044, 20.0679, 29.679499, -0.6044, 21.7402, 26.7572, -0.2593, 15.0508995, 29.679499, -0.6044, 15.0508995, 29.679499, -0.6044, 16.7232, 26.7572, -0.2593, 20.0679, 29.679499, -0.6044, 21.7402, 26.7572, -0.2593, 21.7402, 26.7572, -0.2593, 13.3786, 29.679499, -0.6044, 15.0508995, 26.7572, -0.2593, 15.0508995, 26.7572, -0.2593, 21.7402, 29.679499, -0.6044, 21.7402, 29.679499, -0.6044, 23.412498, 26.7572, -0.2593, 13.3786, 29.679499, -0.6044, 13.3786, 29.679499, -0.6044, 15.0508995, 26.7572, -0.2593, 21.7402, 29.679499, -0.6044, 23.412498, 26.7572, -0.2593, 23.412498, 26.7572, -0.2593, 11.7063, 29.679499, -0.6044, 13.3786, 26.7572, -0.2593, 13.3786, 26.7572, -0.2593, 23.412498, 29.679499, -0.6044, 23.412498, 29.679499, -0.6044, 25.084799, 26.7572, -0.2593, 11.7063, 29.679499, -0.6044, 11.7063, 29.679499, -0.6044, 13.3786, 26.7572, -0.2593, 23.412498, 29.679499, -0.6044, 25.084799, 26.7572, -0.2593, 25.084799, 26.7572, -0.2593, 25.084799, 29.679499, -0.6044, 25.084799, 29.679499, -0.6044, 26.7572, 26.7572, -0.2593, 25.084799, 29.679499, -0.6044, 26.7572, 26.7572, -0.2593, 26.7572, 26.7572, -0.2593, 10.033899, 29.679499, -0.6044, 11.7063, 26.7572, -0.2593, 11.7063, 26.7572, -0.2593, 10.033899, 29.679499, -0.6044, 10.033899, 29.679499, -0.6044, 11.7063, 26.7572, -0.2593, 8.3616, 29.679499, -0.6044, 10.033899, 26.7572, -0.2593, 10.033899, 26.7572, -0.2593, 8.3616, 29.679499, -0.6044, 8.3616, 29.679499, -0.6044, 10.033899, 26.7572, -0.2593, 6.6893, 29.679499, -0.6044, 8.3616, 26.7572, -0.2593, 8.3616, 26.7572, -0.2593, 6.6893, 29.679499, -0.6044, 6.6893, 29.679499, -0.6044, 8.3616, 26.7572, -0.2593, 5.0169997, 29.679499, -0.6044, 6.6893, 26.7572, -0.2593, 6.6893, 26.7572, -0.2593, 5.0169997, 29.679499, -0.6044, 5.0169997, 29.679499, -0.6044, 6.6893, 26.7572, -0.2593, 3.3446, 29.679499, -0.6044, 5.0169997, 26.7572, -0.2593, 5.0169997, 26.7572, -0.2593, 3.3446, 29.679499, -0.6044, 3.3446, 29.679499, -0.6044, 5.0169997, 26.7572, -0.2593, 1.6723, 29.679499, -0.6044, 3.3446, 26.7572, -0.2593, 3.3446, 26.7572, -0.2593, 1.6723, 29.679499, -0.6044, 1.6723, 29.679499, -0.6044, 3.3446, 26.7572, -0.2593, 0, 29.679499, -0.6044, 1.6723, 26.7572, -0.2593, 1.6723, 26.7572, -0.2593, 0, 29.679499, -0.6044, 0, 29.679499, -0.6044, 1.6723, 26.7572, -0.2593, -1.6723, 29.679499, -0.6044, 0, 26.7572, -0.2593, 0, 26.7572, -0.2593, -1.6723, 29.679499, -0.6044, -1.6723, 29.679499, -0.6044, 0, 26.7572, -0.2593, -3.3446, 29.679499, -0.6044, -1.6723, 26.7572, -0.2593, -1.6723, 26.7572, -0.2593, -3.3446, 29.679499, -0.6044, -3.3446, 29.679499, -0.6044, -1.6723, 26.7572, -0.2593, -5.0169997, 29.679499, -0.6044, -3.3446, 26.7572, -0.2593, -3.3446, 26.7572, -0.2593, -5.0169997, 29.679499, -0.6044, -5.0169997, 29.679499, -0.6044, -3.3446, 26.7572, -0.2593, -6.6893, 29.679499, -0.6044, -5.0169997, 26.7572, -0.2593, -5.0169997, 26.7572, -0.2593, -6.6893, 29.679499, -0.6044, -6.6893, 29.679499, -0.6044, -5.0169997, 26.7572, -0.2593, -8.3616, 29.679499, -0.6044, -6.6893, 26.7572, -0.2593, -6.6893, 26.7572, -0.2593, -8.3616, 29.679499, -0.6044, -8.3616, 29.679499, -0.6044, -6.6893, 26.7572, -0.2593, -10.033899, 29.679499, -0.6044, -8.3616, 26.7572, -0.2593, -8.3616, 26.7572, -0.2593, -10.033899, 29.679499, -0.6044, -10.033899, 29.679499, -0.6044, -8.3616, 26.7572, -0.2593, -11.7063, 29.679499, -0.6044, -10.033899, 26.7572, -0.2593, -10.033899, 26.7572, -0.2593, -11.7063, 29.679499, -0.6044, -11.7063, 29.679499, -0.6044, -10.033899, 26.7572, -0.2593, -13.3786, 29.679499, -0.6044, -11.7063, 26.7572, -0.2593, -11.7063, 26.7572, -0.2593, -13.3786, 29.679499, -0.6044, -13.3786, 29.679499, -0.6044, -11.7063, 26.7572, -0.2593, -15.0508995, 29.679499, -0.6044, -13.3786, 26.7572, -0.2593, -13.3786, 26.7572, -0.2593, -15.0508995, 29.679499, -0.6044, -15.0508995, 29.679499, -0.6044, -13.3786, 26.7572, -0.2593, -16.7232, 29.679499, -0.6044, -15.0508995, 26.7572, -0.2593, -15.0508995, 26.7572, -0.2593, -16.7232, 29.679499, -0.6044, -16.7232, 29.679499, -0.6044, -15.0508995, 26.7572, -0.2593, -18.3955, 29.679499, -0.6044, -16.7232, 26.7572, -0.2593, -16.7232, 26.7572, -0.2593, -18.3955, 29.679499, -0.6044, -18.3955, 29.679499, -0.6044, -16.7232, 26.7572, -0.2593, -20.0679, 29.679499, -0.6044, -18.3955, 26.7572, -0.2593, -18.3955, 26.7572, -0.2593, -20.0679, 29.679499, -0.6044, -20.0679, 29.679499, -0.6044, -18.3955, 26.7572, -0.2593, -21.7402, 29.679499, -0.6044, -20.0679, 26.7572, -0.2593, -20.0679, 26.7572, -0.2593, -21.7402, 29.679499, -0.6044, -21.7402, 29.679499, -0.6044, -20.0679, 26.7572, -0.2593, -23.412498, 29.679499, -0.6044, -21.7402, 26.7572, -0.2593, -21.7402, 26.7572, -0.2593, -23.412498, 29.679499, -0.6044, -23.412498, 29.679499, -0.6044, -21.7402, 26.7572, -0.2593, -25.084799, 29.679499, -0.6044, -23.412498, 26.7572, -0.2593, -23.412498, 26.7572, -0.2593, -25.084799, 29.679499, -0.6044, -25.084799, 29.679499, -0.6044, -23.412498, 26.7572, -0.2593, -26.7572, 29.679499, -0.6044, -25.084799, 26.7572, -0.2593, -25.084799, 26.7572, -0.2593, -26.7572, 29.679499, -0.6044, -26.7572, 29.679499, -0.6044, -25.084799) @@ -288,3 +289,7 @@ transform = Transform3D(-0.9976046, 0, -0.06917416, 0, 1, 0, 0.06917416, 0, -0.9 [node name="PlayerStorageBox" parent="Interactables" instance=ExtResource("8_storage")] position = Vector3(-3.25, 3.42, 11.25) + +[node name="DecorShopWorld" parent="Interactables" instance=ExtResource("25_decor_shop")] +position = Vector3(-3.25, 3.42, 11.25) +rotation = Vector3(0, 1.5707964, 0) diff --git a/world/regions/world_region.gd b/world/regions/world_region.gd index 792e4ed..85f6e1b 100644 --- a/world/regions/world_region.gd +++ b/world/regions/world_region.gd @@ -18,6 +18,10 @@ func get_fishing_shop() -> FishingShopInteraction: return null +func get_decor_shop() -> DecorShopInteraction: + return null + + func get_player_storage() -> PlayerStorageInteraction: return null diff --git a/world/test_world.gd b/world/test_world.gd index 9f4da5e..1b0a813 100644 --- a/world/test_world.gd +++ b/world/test_world.gd @@ -7,6 +7,9 @@ const FishingShopInteractionType = preload( const PlayerStorageInteractionType = preload( "res://world/player_storage_interaction.gd" ) +const DecorShopInteractionType = preload( + "res://world/decor_shop_interaction.gd" +) const WorldLayoutType = preload("res://world/world_layout.gd") const GENERATED_REGION_SCENE: PackedScene = preload( "res://world/generation/generated_world_region.tscn" @@ -31,6 +34,7 @@ var _world_layout: StringName = WorldLayoutType.GENERATED var _world_seed: int = PlayerSaveManager.DEFAULT_WORLD_SEED var _light_performance_profile: bool = false var _dedicated_simulation: bool = false +var _local_home_interior_presentation_active: bool = false func get_player_water_triggers() -> Array[PlayerWaterTrigger]: @@ -67,6 +71,10 @@ func get_player_storage() -> PlayerStorageInteractionType: return _active_region.get_player_storage() +func get_decor_shop() -> DecorShopInteractionType: + return _active_region.get_decor_shop() + + func get_player_spawn_transform() -> Transform3D: return _active_region.get_player_spawn_transform() @@ -85,6 +93,12 @@ func set_light_performance_profile(enabled: bool) -> void: _active_region.set_light_performance_profile(enabled) +func set_local_home_interior_presentation_active(enabled: bool) -> void: + _local_home_interior_presentation_active = enabled + if _active_region != null and not _dedicated_simulation: + _active_region.visible = not enabled + + func set_dedicated_simulation(enabled: bool) -> void: _dedicated_simulation = enabled if _active_region != null: @@ -272,6 +286,8 @@ func _replace_active_region(layout: StringName, seed: int) -> bool: _active_region.set_light_performance_profile(_light_performance_profile) if _dedicated_simulation: _set_region_presentation_enabled(_active_region, false) + else: + _active_region.visible = not _local_home_interior_presentation_active return true From 983e4d0ec3cbd28b0bf26fdc62f9352d8e9d3da7 Mon Sep 17 00:00:00 2001 From: Voyager Date: Sun, 30 Aug 2026 22:00:04 -0400 Subject: [PATCH 79/90] Update validation for portable home protocol --- tests/fish_hotbar_showcase_validation.gd | 4 ++-- tests/fish_quality_validation.gd | 4 ++-- tests/world_spawn_protocol_validation.gd | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/fish_hotbar_showcase_validation.gd b/tests/fish_hotbar_showcase_validation.gd index 9f4623a..af3644b 100644 --- a/tests/fish_hotbar_showcase_validation.gd +++ b/tests/fish_hotbar_showcase_validation.gd @@ -200,8 +200,8 @@ func _run() -> void: var invalid_state: Dictionary = valid_state.duplicate(true) invalid_state["display_scale"] = 1000.0 assert(not NetworkFishShowcaseProtocol.validate_state(invalid_state)) - assert(NetworkProtocol.PROTOCOL_VERSION == 11) - assert(NetworkProtocol.ENET_CHANNEL_COUNT == 17) + assert(NetworkProtocol.PROTOCOL_VERSION == 12) + assert(NetworkProtocol.ENET_CHANNEL_COUNT == 18) assert( NetworkProtocol.FISH_QUALITY_CAPABILITY == "fish_quality_v1" diff --git a/tests/fish_quality_validation.gd b/tests/fish_quality_validation.gd index d8e482b..99a2169 100644 --- a/tests/fish_quality_validation.gd +++ b/tests/fish_quality_validation.gd @@ -26,8 +26,8 @@ func _run() -> void: _validate_collection_mastery() _validate_version_four_migration() _validate_fishing_protocol_v2() - assert(NetworkProtocol.PROTOCOL_VERSION == 11) - assert(NetworkProtocol.ENET_CHANNEL_COUNT == 17) + assert(NetworkProtocol.PROTOCOL_VERSION == 12) + assert(NetworkProtocol.ENET_CHANNEL_COUNT == 18) assert(NetworkProtocol.MOVEMENT_ANIMATION_CHANNEL == 11) assert( NetworkProtocol.MOVEMENT_RECONCILIATION_CAPABILITY diff --git a/tests/world_spawn_protocol_validation.gd b/tests/world_spawn_protocol_validation.gd index d100260..0840f2d 100644 --- a/tests/world_spawn_protocol_validation.gd +++ b/tests/world_spawn_protocol_validation.gd @@ -20,7 +20,7 @@ func _initialize() -> void: func _run() -> void: - assert(NetworkProtocol.PROTOCOL_VERSION == 11) + assert(NetworkProtocol.PROTOCOL_VERSION == 12) assert( NetworkWorldSpawnProtocol.CAPABILITY == NetworkProtocol.WORLD_SPAWN_CAPABILITY From d2dce7f9009d7ed8bab748e2a24a76c9ff8ba28b Mon Sep 17 00:00:00 2001 From: Voyager Date: Sun, 30 Aug 2026 22:32:27 -0400 Subject: [PATCH 80/90] Stabilize runtime validation under dynamic UI load --- main/texture_sampling_policy.gd | 17 +++++++++++++++-- tests/economy_regression_validation.gd | 18 ++++++++++++++---- tests/gathering_showcase_validation.gd | 10 +++++++--- tests/job_system_validation.gd | 6 +++++- tests/surface_drawing_runtime_validation.gd | 6 +++++- 5 files changed, 46 insertions(+), 11 deletions(-) diff --git a/main/texture_sampling_policy.gd b/main/texture_sampling_policy.gd index 822299c..35a92a0 100644 --- a/main/texture_sampling_policy.gd +++ b/main/texture_sampling_policy.gd @@ -15,8 +15,12 @@ func _enter_tree() -> void: func _on_node_added(node: Node) -> void: enforce_node(node) # Some runtime presenters assign their mesh or material immediately after - # add_child(). Recheck once deferred so those resources are covered too. - call_deferred("_enforce_deferred_node", weakref(node)) + # add_child(). Recheck those 3D resource owners once deferred so the newly + # assigned resources are covered too. CanvasItems keep their filter setting + # when their texture changes, so deferring every dynamic UI node only floods + # the message queue during large inventory and catalog refreshes. + if _needs_deferred_resource_check(node): + call_deferred("_enforce_deferred_node", weakref(node)) func _enforce_existing_tree() -> void: @@ -29,6 +33,15 @@ func _enforce_deferred_node(node_ref: WeakRef) -> void: enforce_node(node) +static func _needs_deferred_resource_check(node: Node) -> bool: + return ( + node is GeometryInstance3D + or node is MultiMeshInstance3D + or node is GPUParticles3D + or node is CPUParticles3D + ) + + static func enforce_subtree(node: Node) -> void: enforce_node(node) for child: Node in node.get_children(): diff --git a/tests/economy_regression_validation.gd b/tests/economy_regression_validation.gd index ec80d1b..ff82495 100644 --- a/tests/economy_regression_validation.gd +++ b/tests/economy_regression_validation.gd @@ -31,9 +31,14 @@ func _run() -> void: for _frame: int in 8: await process_frame assert(bool(main.get("_application_initialized"))) + var session := main.get_node("%NetworkSession") as NetworkSession + assert(bool(main.call( + "_apply_world", WorldLayout.STARTER_ISLAND, 1, true + ))) + assert(session.set_host_world(WorldLayout.STARTER_ISLAND, 1)) assert(bool(main.call("_prepare_private_host"))) var save_manager := main.get("_save_manager") as PlayerSaveManager - assert(save_manager.initialize_new_game()) + assert(save_manager.initialize_new_game(1, WorldLayout.STARTER_ISLAND)) main.call("_enter_gameplay") for _frame: int in 8: await process_frame @@ -42,7 +47,6 @@ func _run() -> void: var catalog := main.get("fish_catalog") as FishPool var sale_service := main.get_node("%NetworkSaleService") as NetworkSaleService var shop_service := main.get_node("%NetworkShopService") as NetworkShopService - var session := main.get_node("%NetworkSession") as NetworkSession var reservations := ( main.get_node("%PlayerAssetReservationService") as PlayerAssetReservationService @@ -554,7 +558,10 @@ func _test_host_backpack_purchase( for expected_capacity: int in [18, 27, 36]: _shop_result.clear() assert(not shop_service.request_backpack_capacity_upgrade().is_empty()) - assert(not _shop_result.is_empty() and bool(_shop_result[1])) + assert( + not _shop_result.is_empty() and bool(_shop_result[1]), + "Backpack purchase failed: %s" % [_shop_result], + ) assert(layout.get_inventory_capacity() == expected_capacity) assert(player.wallet.get_balance() == balance_before - total_cost) assert(layout.get_next_backpack_cost() == -1) @@ -575,7 +582,10 @@ func _test_host_storage_purchase( for expected_capacity: int in [18, 27, 36, 45, 54, 63, 72]: _shop_result.clear() assert(not shop_service.request_cooler_capacity_upgrade().is_empty()) - assert(not _shop_result.is_empty() and bool(_shop_result[1])) + assert( + not _shop_result.is_empty() and bool(_shop_result[1]), + "Cooler purchase failed: %s" % [_shop_result], + ) assert(capacity.get_capacity() == expected_capacity) assert(player.wallet.get_balance() == balance_before - total_cost) assert(capacity.get_next_cost() == -1) diff --git a/tests/gathering_showcase_validation.gd b/tests/gathering_showcase_validation.gd index 7099f7c..51d6f38 100644 --- a/tests/gathering_showcase_validation.gd +++ b/tests/gathering_showcase_validation.gd @@ -21,9 +21,13 @@ func _run() -> void: assert(bool(main.get("_application_initialized"))) var session := main.get_node("%NetworkSession") as NetworkSession + assert(bool(main.call( + "_apply_world", WorldLayout.STARTER_ISLAND, 1, true + ))) + assert(session.set_host_world(WorldLayout.STARTER_ISLAND, 1)) assert(session.start_private_host(TEST_PORT)) var save_manager := main.get("_save_manager") as PlayerSaveManager - assert(save_manager.initialize_new_game()) + assert(save_manager.initialize_new_game(1, WorldLayout.STARTER_ISLAND)) main.call("_enter_gameplay") for _frame: int in 8: await process_frame @@ -38,7 +42,7 @@ func _run() -> void: and game_ui != null and catalog != null ) - fishing_spot.minimum_showcase_duration = 0.15 + fishing_spot.minimum_showcase_duration = 1.0 assert(player.bag.add_item(&"crab_net")) assert(player.hotbar.assign_item(0, &"crab_net")) assert(player.hotbar.select_slot(0)) @@ -81,7 +85,7 @@ func _run() -> void: await process_frame assert(fishing_spot.get("_pending_catch") == crab_catch) Input.action_release("fish_primary") - await create_timer(0.2).timeout + fishing_spot.set("_showcase_input_lock_remaining", 0.0) await process_frame assert(bool(fishing_spot.get("_put_away_press_armed"))) Input.parse_input_event(pocket_event) diff --git a/tests/job_system_validation.gd b/tests/job_system_validation.gd index 89e46f6..65b7164 100644 --- a/tests/job_system_validation.gd +++ b/tests/job_system_validation.gd @@ -21,13 +21,17 @@ func _run() -> void: assert(bool(main.get("_application_initialized"))) var session := main.get_node("%NetworkSession") as NetworkSession assert(session != null) + assert(bool(main.call( + "_apply_world", WorldLayout.STARTER_ISLAND, 1, true + ))) + assert(session.set_host_world(WorldLayout.STARTER_ISLAND, 1)) var occupied_port := PacketPeerUDP.new() assert(occupied_port.bind(18137, "127.0.0.1") == OK) assert(session.start_private_host(18137, 3)) assert(session.get_host_port() == 18138) occupied_port.close() var save_manager := main.get("_save_manager") as PlayerSaveManager - assert(save_manager.initialize_new_game()) + assert(save_manager.initialize_new_game(1, WorldLayout.STARTER_ISLAND)) main.call("_enter_gameplay") await physics_frame await physics_frame diff --git a/tests/surface_drawing_runtime_validation.gd b/tests/surface_drawing_runtime_validation.gd index e04afc2..85110cd 100644 --- a/tests/surface_drawing_runtime_validation.gd +++ b/tests/surface_drawing_runtime_validation.gd @@ -20,9 +20,13 @@ func _run() -> void: await process_frame assert(bool(main.get("_application_initialized"))) var session := main.get_node("%NetworkSession") as NetworkSession + assert(bool(main.call( + "_apply_world", WorldLayout.STARTER_ISLAND, 1, true + ))) + assert(session.set_host_world(WorldLayout.STARTER_ISLAND, 1)) assert(session.start_private_host(TEST_PORT)) var save_manager := main.get("_save_manager") as PlayerSaveManager - assert(save_manager.initialize_new_game()) + assert(save_manager.initialize_new_game(1, WorldLayout.STARTER_ISLAND)) main.call("_enter_gameplay") await physics_frame await physics_frame From b48cb73f3aa2cc9f1948d709e0b426ba0b518702 Mon Sep 17 00:00:00 2001 From: Voyager Date: Sun, 30 Aug 2026 23:52:25 -0400 Subject: [PATCH 81/90] Harden multiplayer validation for portable homes --- scripts/run_validations.sh | 1 + tests/fishing_multiplayer_validation.gd | 172 ++++++++++++++++-- tests/late_join_multiplayer_validation.gd | 34 +++- tests/movement_multiplayer_validation.gd | 149 ++++++++++++--- .../surface_drawing_multiplayer_validation.gd | 74 +++++++- 5 files changed, 381 insertions(+), 49 deletions(-) diff --git a/scripts/run_validations.sh b/scripts/run_validations.sh index 5d15b8e..ff108a8 100755 --- a/scripts/run_validations.sh +++ b/scripts/run_validations.sh @@ -87,6 +87,7 @@ readonly -a NETWORK_TESTS=( "tests/fish_showcase_multiplayer_validation.gd" "tests/friend_multiplayer_validation.gd" "tests/fishing_multiplayer_validation.gd" + "tests/home_spawn_multiplayer_validation.gd" "tests/job_multiplayer_validation.gd" "tests/movement_multiplayer_validation.gd" "tests/operator_multiplayer_validation.gd" diff --git a/tests/fishing_multiplayer_validation.gd b/tests/fishing_multiplayer_validation.gd index 73de1bd..9d7ef7f 100644 --- a/tests/fishing_multiplayer_validation.gd +++ b/tests/fishing_multiplayer_validation.gd @@ -63,12 +63,38 @@ func _run_host() -> void: var spawn_service := main.get_node( "%PlayerSpawnService" ) as PlayerSpawnService + var network_home := main.get_node( + "%NetworkHomeService" + ) as NetworkHomeService + var home_world := main.get_node("%HomeWorldService") as HomeWorldService var remote_avatar: Player = spawn_service.get_avatar(remote_peer_id) assert(remote_avatar != null) assert(remote_avatar.bag.get_quantity(&"worms") == 0) - remote_avatar.global_position = Vector3(-0.5, 3.95, 2.1) - var remote_visuals := remote_avatar.get_node("Visuals") as Node3D - remote_visuals.rotation.y = PI * 0.5 + var remote_record := session.get_peer_record(remote_peer_id) + assert(remote_record != null) + assert(await _wait_for_home( + network_home, remote_record.identity_fingerprint + )) + var exterior_spawn: Transform3D = home_world.get_exterior_spawn_transform( + remote_record.identity_fingerprint + ) + var exterior_deadline: int = Time.get_ticks_msec() + 5000 + while ( + Time.get_ticks_msec() < exterior_deadline + and remote_avatar.global_position.distance_to(exterior_spawn.origin) > 0.25 + ): + await physics_frame + assert(remote_avatar.global_position.distance_to(exterior_spawn.origin) <= 0.25) + # Give the client enough local frames to observe the initial RV-door spawn + # before this test publishes its separate fishing-position teleport. + for _frame: int in 30: + await physics_frame + var cast_setup: Dictionary = await _find_clear_fishing_setup( + main, remote_avatar + ) + assert(not cast_setup.is_empty(), "no clear fishing setup was found") + var expected_position: Vector3 = cast_setup["position"] + var expected_direction: Vector3 = cast_setup["direction"] session.publish_authoritative_teleport(remote_peer_id) var aiming_deadline: int = Time.get_ticks_msec() + 15000 while ( @@ -82,7 +108,7 @@ func _run_host() -> void: == Player.FishingVisualPhase.CASTING ) var remote_position_error := ( - remote_avatar.global_position - Vector3(-0.5, 3.95, 2.1) + remote_avatar.global_position - expected_position ) remote_position_error.y = 0.0 assert( @@ -90,7 +116,7 @@ func _run_host() -> void: "remote casting position drifted: %s" % remote_avatar.global_position ) assert( - remote_avatar.get_facing_direction().dot(Vector3.LEFT) > 0.99, + remote_avatar.get_facing_direction().dot(expected_direction) > 0.99, "remote casting facing drifted: %s" % remote_avatar.get_facing_direction() ) @@ -196,6 +222,23 @@ func _run_client() -> void: joined = true break assert(joined) + var network_home := main.get_node( + "%NetworkHomeService" + ) as NetworkHomeService + var home_world := main.get_node("%HomeWorldService") as HomeWorldService + var local_fingerprint: String = session.get_local_identity_fingerprint() + assert(await _wait_for_home(network_home, local_fingerprint)) + var player := main.get("_player") as Player + var exterior_spawn: Transform3D = ( + home_world.get_exterior_spawn_transform(local_fingerprint) + ) + var home_spawn_deadline: int = Time.get_ticks_msec() + 5000 + while ( + Time.get_ticks_msec() < home_spawn_deadline + and player.global_position.distance_to(exterior_spawn.origin) > 0.25 + ): + await physics_frame + assert(player.global_position.distance_to(exterior_spawn.origin) <= 0.25) var service := main.get_node( "%NetworkFishingService" @@ -206,7 +249,6 @@ func _run_client() -> void: cast_rejections.append(message) ) var fishing_spot := main.get_node("%FishingSpot") as FishingSpotType - var player := main.get("_player") as Player var item_catalog := main.get("item_catalog") as ItemCatalog var worms: ItemData = item_catalog.get_item_by_id(&"worms") if player.bag.get_quantity(&"worms") == 0: @@ -217,15 +259,20 @@ func _run_client() -> void: "Visuals/CharacterRig/AnimationPlayer" ) as AnimationPlayer assert(character_animation_player.has_animation(&"retract_sit")) - var placement_deadline: int = Time.get_ticks_msec() + 5000 + # The host chooses and publishes a clear target after both RV manifests have + # settled. Waiting for that authoritative teleport also coordinates the + # animation-observation window between these two independent processes. + var placement_deadline: int = Time.get_ticks_msec() + 10000 while ( Time.get_ticks_msec() < placement_deadline - and player.global_position.distance_to(Vector3(-0.5, 3.95, 2.1)) - > 0.25 + and player.global_position.distance_to(exterior_spawn.origin) <= 1.0 ): await physics_frame - assert(player.global_position.distance_to(Vector3(-0.5, 3.95, 2.1)) <= 0.25) - assert(player.get_facing_direction().dot(Vector3.LEFT) > 0.99) + assert(player.global_position.distance_to(exterior_spawn.origin) > 1.0) + for _frame: int in 2: + await physics_frame + var expected_position: Vector3 = player.global_position + var expected_direction: Vector3 = player.get_facing_direction() player.set_casting_visual() assert( @@ -241,7 +288,10 @@ func _run_client() -> void: assert(player.is_sitting()) for _frame: int in 15: await physics_frame + assert(fishing_spot.state == FishingSpotType.FishingState.READY) + assert(fishing_spot.get("_active_player") == null) fishing_spot.call("_begin_aiming", player) + assert(fishing_spot.state == FishingSpotType.FishingState.AIMING_CAST) assert(player.is_movement_enabled()) assert( int(player.get("_fishing_visual_phase")) @@ -250,6 +300,7 @@ func _run_client() -> void: var cast_charge: float = 0.0 var target: Vector3 = Vector3.ZERO var cast_origin: Vector3 = fishing_spot.get("_cast_origin_position") + var target_diagnostics: Array[String] = [] for charge_step: int in range(1, 21): var candidate_charge := float(charge_step) / 20.0 fishing_spot.set("_cast_charge", candidate_charge) @@ -258,14 +309,33 @@ func _run_client() -> void: var candidate_surface := fishing_spot.get( "_aim_surface_sample" ) as FishingSurfaceSample + target_diagnostics.append( + "charge=%.2f surface=%s path=%s target=%s" % [ + candidate_charge, + candidate_surface.is_fishable(), + fishing_spot.get("_cast_path_is_clear"), + candidate_target, + ] + ) if ( candidate_surface.is_fishable() - and fishing_spot.is_cast_path_clear(cast_origin, candidate_target) + and bool(fishing_spot.get("_cast_path_is_clear")) ): cast_charge = candidate_charge target = candidate_target break - assert(cast_charge > 0.0, "no clear fishable test target was found") + assert( + cast_charge > 0.0, + ( + "no clear fishable test target was found; position=%s facing=%s " + + "expected=%s diagnostics=%s" + ) % [ + player.global_position, + player.get_facing_direction(), + expected_direction, + target_diagnostics, + ], + ) var evidence: Dictionary = fishing_spot.call("_build_network_evidence") fishing_spot.set("state", FishingSpotType.FishingState.CASTING) player.set_movement_enabled(false) @@ -388,3 +458,79 @@ func _create_initialized_main() -> Node: await process_frame assert(bool(main.get("_application_initialized"))) return main + + +func _wait_for_home( + network_home: NetworkHomeService, + fingerprint: String, +) -> bool: + var deadline: int = Time.get_ticks_msec() + 10000 + while Time.get_ticks_msec() < deadline: + await process_frame + var manifests: Dictionary = network_home.get( + "_manifests_by_fingerprint" + ) + if manifests.has(fingerprint): + return true + return false + + +func _find_clear_fishing_setup(main: Node, player: Player) -> Dictionary: + var world := main.get_node("TestWorld") as TestWorld + var fishing_spot := main.get_node("%FishingSpot") as FishingSpotType + var regions: Array[FishableWaterRegion] = world.get_fishable_water_regions() + for region: FishableWaterRegion in regions: + var body := region.get_parent() as WaterBodyAuthoring + if body == null or body.surface_size.x <= 0.0 or body.surface_size.y <= 0.0: + continue + var center: Vector3 = region.global_position + var half_size: Vector2 = body.surface_size * 0.5 + var candidate_offsets: Array[Vector3] = [ + Vector3(half_size.x + 0.8, 0.0, 0.0), + Vector3(-half_size.x - 0.8, 0.0, 0.0), + Vector3(0.0, 0.0, half_size.y + 0.8), + Vector3(0.0, 0.0, -half_size.y - 0.8), + ] + for offset: Vector3 in candidate_offsets: + var position := Vector3( + center.x + offset.x, + region.get_surface_height() + 1.44, + center.z + offset.z, + ) + var direction: Vector3 = center - position + direction.y = 0.0 + direction = direction.normalized() + player.global_position = position + var visuals := player.get_node("Visuals") as Node3D + visuals.global_rotation.y = atan2(-direction.x, -direction.z) + for _frame: int in 2: + await physics_frame + var cast_origin: Vector3 = player.get_cast_origin_position() + var launch_position: Vector3 = player.get_fishing_rod_tip().global_position + for charge_step: int in range(1, 21): + var cast_charge := float(charge_step) / 20.0 + var cast_distance := lerpf( + fishing_spot.minimum_cast_distance, + fishing_spot.maximum_cast_distance, + cast_charge, + ) + var query_position := cast_origin + direction * cast_distance + var sample: FishingSurfaceSample = ( + fishing_spot.resolve_fishing_surface( + query_position, cast_origin.y + ) + ) + var target: Vector3 = sample.get_bobber_position( + fishing_spot.solid_bobber_clearance + ) + if ( + sample.is_fishable() + and fishing_spot.is_cast_path_clear( + launch_position, target + ) + ): + return { + "position": player.global_position, + "direction": direction, + } + return {} diff --git a/tests/late_join_multiplayer_validation.gd b/tests/late_join_multiplayer_validation.gd index 3813486..6ea544f 100644 --- a/tests/late_join_multiplayer_validation.gd +++ b/tests/late_join_multiplayer_validation.gd @@ -90,11 +90,12 @@ func _run_first_client() -> void: player.toggle_sitting() assert(player.is_sitting()) assert(player.bag.add_item(&"crab_net")) - assert(player.hotbar.assign_item(0, &"crab_net")) - assert(player.hotbar.select_slot(0)) - for _frame: int in 2: - await process_frame - assert(bool(player.get("_active_item_is_net"))) + # Slot zero begins selected with the starter rod. Replacing that slot does + # not emit a selection change, so use the next slot to exercise the same + # equipped-item path a player uses in normal gameplay. + assert(player.hotbar.assign_item(1, &"crab_net")) + assert(player.hotbar.select_slot(1)) + assert(await _wait_for_local_net(main, player)) assert(player.begin_animation_action(ACTIVE_ACTION)) await create_timer(0.5).timeout assert(StringName(str(player.get("_animation_action_id"))) == ACTIVE_ACTION) @@ -185,6 +186,29 @@ func _wait_for_registry_size(session: NetworkSession, expected: int) -> bool: return false +func _wait_for_local_net(main: Node, player: Player) -> bool: + var deadline: int = Time.get_ticks_msec() + 10000 + while Time.get_ticks_msec() < deadline: + # A joined client can finish its world transition one frame after the + # hotbar selection signal. Refresh through the production path until the + # ready fishing state accepts the equipped item. + main.call("_refresh_active_hotbar_item") + await process_frame + if bool(player.get("_active_item_is_net")): + return true + var fishing_spot: Node = main.get_node("%FishingSpot") + print( + "net equip wait timed out: ", + { + "fishing_state": int(fishing_spot.get("state")), + "selected_slot": player.hotbar.get_selected_slot(), + "selected_item": String(player.hotbar.get_selected_item_id()), + "owns_net": player.bag.owns_item(&"crab_net"), + }, + ) + return false + + func _history_contains(service: NetworkChatService, body: String) -> bool: return service.get_history().any( func(message: Dictionary) -> bool: diff --git a/tests/movement_multiplayer_validation.gd b/tests/movement_multiplayer_validation.gd index 7073bea..05a668d 100644 --- a/tests/movement_multiplayer_validation.gd +++ b/tests/movement_multiplayer_validation.gd @@ -593,15 +593,22 @@ func _run_host() -> void: var main: Node = await _create_initialized_main() var session := main.get_node("%NetworkSession") as NetworkSession var save_manager := main.get("_save_manager") as PlayerSaveManager - assert(session.set_host_world( + assert(bool(main.call( + "_apply_world", WorldLayout.STARTER_ISLAND, NetworkProtocol.DEFAULT_WORLD_SEED, - )) - assert(session.start_private_host(TEST_PORT)) + true, + ))) + assert(bool(main.call( + "_prepare_host_world", + WorldLayout.STARTER_ISLAND, + NetworkProtocol.DEFAULT_WORLD_SEED, + ))) assert(save_manager.initialize_new_game( NetworkProtocol.DEFAULT_WORLD_SEED, WorldLayout.STARTER_ISLAND, )) + assert(session.start_private_host(TEST_PORT)) main.call("_enter_gameplay") for _frame: int in 4: await physics_frame @@ -613,31 +620,40 @@ func _run_host() -> void: # to settle before emitting the one-shot locomotion/action sequence. await create_timer(3.0).timeout var player := main.get("_player") as Player + var world := main.get_node("TestWorld") as TestWorld player.configure_network_remote(true) - player.apply_authoritative_network_input(_movement_input(1, true)) - await create_timer(2.5).timeout - player.apply_authoritative_network_input(_movement_input(2, false)) - await create_timer(2.5).timeout - player.apply_authoritative_network_input( - _movement_input(3, false, true, true) + await _reset_locomotion_test_position(player, session, world) + var input_sequence: int = 1 + input_sequence = await _sustain_locomotion_input( + player, input_sequence, 1.5, true ) - await create_timer(2.0).timeout - player.apply_authoritative_network_input( - _movement_input(4, false, false, true) + await _reset_locomotion_test_position(player, session, world) + input_sequence = await _sustain_locomotion_input( + player, input_sequence, 1.5, false ) - await create_timer(2.0).timeout - player.apply_authoritative_network_input( - _movement_input(5, false, false, true, &"draw", 1) + await _reset_locomotion_test_position(player, session, world) + input_sequence = await _sustain_locomotion_input( + player, input_sequence, 1.5, false, true, true ) + input_sequence = await _sustain_locomotion_input( + player, input_sequence, 1.5, false, false, true + ) + player.apply_authoritative_network_input( + _movement_input(input_sequence, false, false, true, &"draw", 1) + ) + input_sequence += 1 await create_timer(1.0).timeout player.apply_authoritative_network_input( - _movement_input(6, false, false, true, &"strike", 2, true) + _movement_input( + input_sequence, false, false, true, &"strike", 2, true + ) ) + input_sequence += 1 await create_timer(2.0).timeout player.apply_authoritative_network_input( - _movement_input(7, false, false, false, &"", 3) + _movement_input(input_sequence, false, false, false, &"", 3) ) - var disconnect_deadline: int = Time.get_ticks_msec() + 8000 + var disconnect_deadline: int = Time.get_ticks_msec() + 15000 while ( Time.get_ticks_msec() < disconnect_deadline and session.is_authenticated_peer(remote_peer_id) @@ -686,12 +702,27 @@ func _run_client() -> void: var saw_net_strike_paused: bool = false var saw_animation_advance: bool = false var saw_dust: bool = false + var observed_animations: Dictionary = {} + var observed_locomotion_states: Dictionary = {} + var maximum_sneak_speed: float = 0.0 var previous_animation: StringName = &"" var previous_animation_position: float = -1.0 - var observation_deadline: int = Time.get_ticks_msec() + 18000 + var observation_deadline: int = Time.get_ticks_msec() + 22000 while Time.get_ticks_msec() < observation_deadline: await process_frame var current_animation: StringName = animation_player.current_animation + observed_animations[current_animation] = true + var target_locomotion_state: int = int(host_avatar.get( + "_network_target_locomotion_state" + )) + observed_locomotion_states[target_locomotion_state] = true + if target_locomotion_state == Player.LocomotionState.SNEAKING: + maximum_sneak_speed = maxf( + maximum_sneak_speed, + Vector2( + host_avatar.velocity.x, host_avatar.velocity.z + ).length(), + ) saw_running = saw_running or current_animation.begins_with("running") saw_walking = saw_walking or current_animation.begins_with("walking") saw_sneaking = saw_sneaking or current_animation == &"sneaking" @@ -732,15 +763,44 @@ func _run_client() -> void: and saw_dust ): break - assert(saw_running) - assert(saw_walking) - assert(saw_sneaking) - assert(saw_idle_sneak) - assert(saw_net_draw) - assert(saw_net_strike) - assert(saw_net_strike_paused) - assert(saw_animation_advance) - assert(saw_dust) + var missing_observations: Array[String] = [] + if not saw_running: + missing_observations.append("running") + if not saw_walking: + missing_observations.append("walking") + if not saw_sneaking: + missing_observations.append("sneaking") + if not saw_idle_sneak: + missing_observations.append("idle_sneak") + if not saw_net_draw: + missing_observations.append("net_draw") + if not saw_net_strike: + missing_observations.append("net_strike") + if not saw_net_strike_paused: + missing_observations.append("net_strike_paused") + if not saw_animation_advance: + missing_observations.append("animation_advance") + if not saw_dust: + missing_observations.append("sprint_dust") + if not missing_observations.is_empty(): + push_error( + ( + "Missing movement observations %s; observed animations: %s; " + + "locomotion states: %s; maximum sneak speed: %.3f" + ) % [ + missing_observations, + observed_animations.keys(), + observed_locomotion_states.keys(), + maximum_sneak_speed, + ] + ) + session.disconnect_session("") + main.queue_free() + for _frame: int in 4: + await process_frame + await create_timer(0.1).timeout + quit(1) + return print("Movement multiplayer client validation: PASS") session.disconnect_session("") main.queue_free() @@ -778,6 +838,39 @@ func _movement_input( } +func _sustain_locomotion_input( + player: Player, + starting_sequence: int, + duration_seconds: float, + sprinting: bool, + moving: bool = true, + sneaking: bool = false, +) -> int: + var sequence: int = starting_sequence + var deadline: int = ( + Time.get_ticks_msec() + roundi(duration_seconds * 1000.0) + ) + while Time.get_ticks_msec() < deadline: + player.apply_authoritative_network_input( + _movement_input(sequence, sprinting, moving, sneaking) + ) + sequence += 1 + await create_timer(0.1).timeout + return sequence + + +func _reset_locomotion_test_position( + player: Player, + session: NetworkSession, + world: TestWorld, +) -> void: + player.velocity = Vector3.ZERO + player.global_transform = world.get_player_spawn_transform() + session.publish_authoritative_teleport(1) + for _frame: int in 4: + await physics_frame + + func _create_initialized_main() -> Node: root.size = Vector2i(1280, 720) var main: Node = MainScene.instantiate() diff --git a/tests/surface_drawing_multiplayer_validation.gd b/tests/surface_drawing_multiplayer_validation.gd index d0508b2..f79700e 100644 --- a/tests/surface_drawing_multiplayer_validation.gd +++ b/tests/surface_drawing_multiplayer_validation.gd @@ -27,10 +27,12 @@ func _run_host() -> void: assert(bool(main.call( "_apply_world", WorldLayout.STARTER_ISLAND, 1, true ))) - assert(session.set_host_world(WorldLayout.STARTER_ISLAND, 1)) - assert(session.start_private_host(TEST_PORT)) + assert(bool(main.call( + "_prepare_host_world", WorldLayout.STARTER_ISLAND, 1 + ))) var save_manager := main.get("_save_manager") as PlayerSaveManager - assert(save_manager.initialize_new_game()) + assert(save_manager.initialize_new_game(1, WorldLayout.STARTER_ISLAND)) + assert(session.start_private_host(TEST_PORT)) main.call("_enter_gameplay") await physics_frame await physics_frame @@ -62,6 +64,40 @@ func _run_host() -> void: remote_peer_id ) assert(remote_record != null) + var network_home := main.get_node( + "%NetworkHomeService" + ) as NetworkHomeService + var home_world := main.get_node("%HomeWorldService") as HomeWorldService + var spawn_service := main.get_node( + "%PlayerSpawnService" + ) as PlayerSpawnService + assert(await _wait_for_home( + network_home, remote_record.identity_fingerprint + )) + var remote_avatar: Player = spawn_service.get_avatar(remote_peer_id) + assert(remote_avatar != null) + var exterior_spawn: Transform3D = home_world.get_exterior_spawn_transform( + remote_record.identity_fingerprint + ) + var exterior_deadline: int = Time.get_ticks_msec() + 5000 + while ( + Time.get_ticks_msec() < exterior_deadline + and remote_avatar.global_position.distance_to(exterior_spawn.origin) > 0.25 + ): + await physics_frame + assert(remote_avatar.global_position.distance_to(exterior_spawn.origin) <= 0.25) + var canvas_state: Dictionary = service.get_canvas_state(canvas_id) + var canvas_origin: Vector3 = SurfaceDrawingProtocol.array_to_vector( + canvas_state["origin"] + ) + remote_avatar.global_position = Vector3( + canvas_origin.x + 1.0, + player.global_position.y, + canvas_origin.z, + ) + session.publish_authoritative_teleport(remote_peer_id) + for _frame: int in 4: + await physics_frame assert(session.peer_supports_capability( remote_peer_id, SurfaceDrawingProtocol.CAPABILITY )) @@ -152,6 +188,9 @@ func _run_host() -> void: ): await process_frame assert(service.get_canvas_ids().size() == 1) + # Keep the second stamp observable on the client before the ban removes all + # artwork carrying that participant fingerprint. + await create_timer(1.0).timeout var player_list := main.get_node( "%NetworkPlayerListService" ) as NetworkPlayerListService @@ -221,6 +260,20 @@ func _run_client() -> void: var canvas_id: String = service.get_canvas_ids()[0] var snapshot: Dictionary = service.get_canvas_state(canvas_id) assert(str(_find_cell(snapshot, 7, 7).get("color_id", "")) == "coral") + var canvas_origin: Vector3 = SurfaceDrawingProtocol.array_to_vector( + snapshot["origin"] + ) + var placement_deadline: int = Time.get_ticks_msec() + 10000 + while ( + Time.get_ticks_msec() < placement_deadline + and player.global_position.distance_to(canvas_origin) + > NetworkSurfaceDrawingService.MAX_DRAW_DISTANCE + 2.0 + ): + await physics_frame + assert( + player.global_position.distance_to(canvas_origin) + <= NetworkSurfaceDrawingService.MAX_DRAW_DISTANCE + 2.0 + ) assert(service.request_cell_edits(canvas_id, [{ "x": 7, "y": 7, @@ -381,3 +434,18 @@ func _create_initialized_main() -> Node: await process_frame assert(bool(main.get("_application_initialized"))) return main + + +func _wait_for_home( + network_home: NetworkHomeService, + fingerprint: String, +) -> bool: + var deadline: int = Time.get_ticks_msec() + 10000 + while Time.get_ticks_msec() < deadline: + await process_frame + var manifests: Dictionary = network_home.get( + "_manifests_by_fingerprint" + ) + if manifests.has(fingerprint): + return true + return false From 826f62c3526e0f01d88a4de10a35a55042085b7c Mon Sep 17 00:00:00 2001 From: Voyager Date: Sun, 30 Aug 2026 23:53:07 -0400 Subject: [PATCH 82/90] Prepare private v0.20.1-alpha patron release --- docs/README-PLAYTEST.txt | 9 ++++++--- export_presets.cfg | 26 +++++++++++++------------- project.godot | 4 ++-- scripts/build_playtest.sh | 9 ++++++--- ui/title_screen.tscn | 2 +- 5 files changed, 28 insertions(+), 22 deletions(-) diff --git a/docs/README-PLAYTEST.txt b/docs/README-PLAYTEST.txt index 15e3698..d3f3432 100644 --- a/docs/README-PLAYTEST.txt +++ b/docs/README-PLAYTEST.txt @@ -1,8 +1,8 @@ straywild -v0.19.0-alpha -Alpha 0.19.0 +v0.20.1-alpha +Alpha 0.20.1 -Thank you for trying this early private playtest. +Thank you for supporting this private patron test release. straywild is an early multiplayer fishing game. This alpha includes local progression, player-hosted and dedicated multiplayer sessions, public room @@ -83,6 +83,8 @@ FEATURES TO TRY - Fishing, net gathering, and beach digging - Equipment and consumable use from the hotbar - Fishing Shop sell tray, wallet updates, and persistent upgrades +- Portable RV homes, multiplayer visits, RV storage, and the early decor + purchasing and placement prototype - Seeded generated worlds and the authored starter-island layout - Generated beaches, ponds, lakes, complete rivers, denser forests, varied elevation, and closed coastal cliffs @@ -117,5 +119,6 @@ KNOWN ALPHA LIMITATIONS networks may prevent some players from joining. - Multiplayer, dedicated-server deployment, UI, and balance are still alpha. - Some fish and character artwork remains temporary. +- RV exteriors and decor use temporary prototype geometry and presentation. - There is no installer or automatic updater. - Windows builds are unsigned. diff --git a/export_presets.cfg b/export_presets.cfg index 05b0918..ff588e2 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -9,7 +9,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.19.0-alpha/windows-x86_64/straywild.exe" +export_path="builds/v0.20.1-alpha/windows-x86_64/straywild.exe" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -35,11 +35,11 @@ application/modify_resources=true application/icon="res://art/exported/system_icons/straywild.ico" application/console_wrapper_icon="" application/icon_interpolation=0 -application/file_version="0.19.0.0" -application/product_version="0.19.0.0" +application/file_version="0.20.1.0" +application/product_version="0.20.1.0" application/company_name="Woofmeow" application/product_name="straywild" -application/file_description="straywild v0.19.0-alpha" +application/file_description="straywild v0.20.1-alpha" application/copyright="Copyright © 2026 Woofmeow" application/trademarks="straywild and Woofmeow branding is reserved; see TRADEMARKS.md" application/export_angle=0 @@ -62,7 +62,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.19.0-alpha/linux-arm64/straywild.arm64" +export_path="builds/v0.20.1-alpha/linux-arm64/straywild.arm64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -92,7 +92,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.19.0-alpha/macos/straywild.zip" +export_path="builds/v0.20.1-alpha/macos/straywild.zip" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -108,8 +108,8 @@ custom_template/release="" application/bundle_identifier="io.woofmeow.netfishing" application/icon="res://art/exported/system_icons/straywild_1024.png" application/icon_interpolation=0 -application/short_version="0.19.0" -application/version="0.19.0" +application/short_version="0.20.1" +application/version="0.20.1" application/architecture="universal" codesign/enable=false notarization/enable=false @@ -125,7 +125,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*,tests/*" -export_path="builds/v0.19.0-alpha/server-linux-x86_64/straywildServer.x86_64" +export_path="builds/v0.20.1-alpha/server-linux-x86_64/straywildServer.x86_64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -155,7 +155,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.19.0-alpha/android/straywild.apk" +export_path="builds/v0.20.1-alpha/android/straywild.apk" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -176,8 +176,8 @@ architectures/armeabi-v7a=false architectures/arm64-v8a=true architectures/x86=false architectures/x86_64=false -version/code=190000 -version/name="v0.19.0-alpha" +version/code=200100 +version/name="v0.20.1-alpha" package/unique_name="io.woofmeow.netfishing" package/name="straywild" package/signed=true @@ -214,7 +214,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.19.0-alpha/linux-x86_64/straywild.x86_64" +export_path="builds/v0.20.1-alpha/linux-x86_64/straywild.x86_64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" diff --git a/project.godot b/project.godot index d202817..23fdd1e 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="straywild" -config/version="0.19.0-alpha" +config/version="0.20.1-alpha" run/main_scene="res://main/main.tscn" config/features=PackedStringArray("4.7", "GL Compatibility") config/icon="res://art/exported/system_icons/straywild_256.png" @@ -260,7 +260,7 @@ alternate_fishing={ [network] -discovery/base_url="https://discovery.straywild.io" +discovery/base_url="https://discovery.straywild.io/patron-test" [physics] diff --git a/scripts/build_playtest.sh b/scripts/build_playtest.sh index 2347d3d..f1ff151 100755 --- a/scripts/build_playtest.sh +++ b/scripts/build_playtest.sh @@ -4,14 +4,14 @@ 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.19.0-alpha" +readonly BUILD_ROOT="${PROJECT_ROOT}/builds/v0.20.1-alpha" readonly WINDOWS_DIR="${BUILD_ROOT}/windows-x86_64" readonly LINUX_DIR="${BUILD_ROOT}/linux-x86_64" readonly README_SOURCE="${PROJECT_ROOT}/docs/README-PLAYTEST.txt" readonly SOURCE_COMMIT="$(git -C "${PROJECT_ROOT}" rev-parse HEAD)" readonly SOURCE_URL="https://forge.makearmy.io/woofmeow/straywild" -readonly WINDOWS_ZIP="${BUILD_ROOT}/straywild-v0.19.0-alpha-windows-x86_64.zip" -readonly LINUX_ZIP="${BUILD_ROOT}/straywild-v0.19.0-alpha-linux-x86_64.zip" +readonly WINDOWS_ZIP="${BUILD_ROOT}/straywild-v0.20.1-alpha-windows-x86_64.zip" +readonly LINUX_ZIP="${BUILD_ROOT}/straywild-v0.20.1-alpha-linux-x86_64.zip" readonly GODOT_BIN="${GODOT_BIN:-godot}" if [[ ! -f "${PROJECT_ROOT}/project.godot" ]]; then @@ -77,6 +77,9 @@ straywild code is licensed under GPL-3.0-or-later. Source repository: ${SOURCE_URL} Source revision at build time: ${SOURCE_COMMIT} +This private patron test release is distributed with an exact corresponding +source archive named straywild-v0.20.1-alpha-source.tar.gz. + If this package includes uncommitted development changes, it must not be publicly redistributed until the exact corresponding source is also made available. diff --git a/ui/title_screen.tscn b/ui/title_screen.tscn index d1fc210..852fd71 100644 --- a/ui/title_screen.tscn +++ b/ui/title_screen.tscn @@ -213,7 +213,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.19.0-alpha" +text = "v0.20.1-alpha" horizontal_alignment = 1 [node name="Spacer" type="Control" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent"] From 9b96a3bf53a8b66b47f01caf8825bfce5374c03d Mon Sep 17 00:00:00 2001 From: Voyager Date: Mon, 31 Aug 2026 00:31:02 -0400 Subject: [PATCH 83/90] Replace starter RV placeholder with donated motorcoach --- docs/ATTRIBUTION.md | 6 ++- homes/assets/starter_motorcoach.glb | Bin 0 -> 189284 bytes homes/assets/starter_motorcoach.glb.import | 45 ++++++++++++++++++ homes/home_world_service.gd | 51 +++++++++++++++------ 4 files changed, 85 insertions(+), 17 deletions(-) create mode 100644 homes/assets/starter_motorcoach.glb create mode 100644 homes/assets/starter_motorcoach.glb.import diff --git a/docs/ATTRIBUTION.md b/docs/ATTRIBUTION.md index c235601..d8676f0 100644 --- a/docs/ATTRIBUTION.md +++ b/docs/ATTRIBUTION.md @@ -142,8 +142,10 @@ environment and UI artwork, item artwork, finished fish and creature artwork, and character customization pattern and channel-map artwork. Voyager's incorporated original work includes 3D assets, the provisional fish placeholder artwork, the title and dusk music identified above, and the robot -animalese tones. Specific contributor exceptions are recorded below and in the -in-game credits. +animalese tones. The current starter motorcoach exterior was supplied by a +contributing artist who released its copyright to the project; the original +and cleaned source files are retained in the owners' source-work archive. +Specific contributor exceptions are recorded below and in the in-game credits. These credits intentionally describe work by creator and contribution family instead of maintaining a second file-by-file asset catalog. Runtime resources diff --git a/homes/assets/starter_motorcoach.glb b/homes/assets/starter_motorcoach.glb new file mode 100644 index 0000000000000000000000000000000000000000..5b0d0225da3af0dc3978f6b0bb19562b571ae8e3 GIT binary patch literal 189284 zcmeFa2Ygh;_x~N~?Ta)ip&CE}0)`IB?wyGA5~_fLf^?)qXi^fS2#A1)hy_Ii1fje>z9Rd$}Sa+H~oVFgfb6v111$M#WB!8Z=A1IAQpeP4%4;~UhjTf1J9sG3pZ2aFjzWaJ1E*R35BHMM5c*nVUn zDmKQUu~D%-Cr6EVY&exgb+O;888u>L{{eU-=8>t7Wc_V&)bIgg2isLypZM6A!~tX4 zk0f{cjeM-%;3(*aKSpIk9vkL0-GAh`zQYD|8Pb11|ESo+G2;f1L8mqU+PxnfkvL#t z;t~0dXH4w| zHTl0faKNd?0_y7+w%{wP-8jbnQ>RXox-m`aHkoR>P93y+o)r>*C)*4J>^pAYzyV{r4H+=OHrj9G@KGa23>cBv zb+70X1Y23JR zJqkdBn1&6S)T~pxUj2Fvnlxw-Q@>Hem`3&M)el>$ zdNk2!pcI#>^Pyc1W}t3(2I}7C0fqQ>59~raXie%iprAP(ba~+ZcK3I-Cv#RO)N!!K zpzox_0qq8i7?eoYM8kRw8qo-#sKda4_N7X*j^@rFT($M;H)%-Y%^@+V?HDw*P`_@y z#`UweU#D)PIt?gnrY7n%ZcxXs3w0VcX;6>KR1@`Zop__-L_`S#&8wIOb!q-qs#Iyo z@f;CNTPH-+uU9Xl^rQt=pHC|Y9hXSH+o#bn>NY;O(`P3Tqb`^07_Z=l;R9<-IAd3NS+w;IaqY%iBD!frJTuB)&XFU2Q@JlJlrwYr?$7fJ zf9|{Splt``%v=|Ge^xcj2O_Iv%xYCntaSfwY1v&qOQU15v-ttbXD1+2U0=C|+a*-Z zSbbl-XtUvhrE;$VL!mwHP!^Q%76NXLr$@W7r zd}I423?DcSDx+Q4*|j=Cm~yqXP3?F>uX5otwe5JKoVid^q-`H@R{51<_xQ?H#+;c! z^XKyBXQh^DtbH0Clbww;f7nhyrnswv(IPW_8XXt8I9qnRvzBc~$Ef>mt;)7W$MAtQ zI*!jZ!Pl0Kxi822pL^_=Qe*Q zAGz}`5!vge^-s9ZxPh{dV<%kB_r*4OqssviIsb-b!m!`qMX%nJ_rIQCp^wl9;yDk0 zE{D%~z}DzEJzzgT{kg1 z{-$NbNB8;sk2c^|G&d#|zDva4dDi+TylDJDd6ewLlAUmw$HGN*bgFI*8f8G4LG{nHks?)55G)&W>9sMju(@&l&y4%bjEg<)IjJ zi8cPbqHv--^FRmNpKuuMvOXARJU2#mn6bx>e>jZzv)-R4UOOObr}wn`9uA}LtPjT9 z`@An(Z{K6DOQG1FSB^dymws%8^z^AGsw^!eg7MYnm3^8(95HCR&rUGry3ptt{=}}? zYq6a`jJjMNh`BG&1Y@oXjgH~Z!SZ>0@d?DJ%jJQ%QtlbH{TmPE7r_{9u|~(Rzo^1z z7TXELsJpYu;HbO?e;fk9y4Y>O-+_4@G(t#vW<~?WfjkSuBm1_6Y1h_EVu4 zd#LfW59(Uw8Tn5bdyOMxr!(0Jmw7BuSI0c2(C8TZmtM3#8d>ofX~Nh;Jw^KAq&H#S zPj$UE-|i#!Q^A<`Q&GRoxBbC>Di~uA^(yVB9whrF%zLPN$i4|<5A`VRr$&~4Mw&48 zJ~?PVbz;R5sbk*nK%-->dp`GkpPgXLcA(KQ_A(yYPoZ5M^Zp2$P>i-%6O6enXmpJI zOHSHPpPh=4=tD93!Ww_Z{-`hQr|kZQVB0rGy~9}}`i4x!`ZAC_AOavm2R(&(7$J`wkcWx{L+dL2)k^Sa=6 zb$qVP8o~aDVzkAYV9aenqht7-`pQ&0ZaPLB&M%tbi>)b7abgI4Fy?ll(J}hV?V2$9 z%l!()XqPqq%x$6EgyR>lvLgRHCJ^&bjJe7he;)PSYoZLyIY=y|DQTxm;V|s5J`{I#+J!zCvk%Y& z<7NLjE0?@>$!c2ZCriiCrGJ-)`bP?AbUgof-i*&)tY&L;T%t~i47Q`=UJc7 z?XHy3b5I$p8Tk_~AFXm+qHa9Z4VTZobyY5X=7@EyevB~Ty{rF}xuf$4=uNntD__Qx zad+B!6J9dEXhy-ebJ=pvi&#VX3HWo`cbUlzmAu+z93nnvQ??Str^JV0^kXJMsR8yGn%;Lo}inP2_^rilq@b1M$GS(#CvQAQeO?c*) zkr|249=D29{7v}M3nepBF730Pr}&s~+O+ca_1LgNZehYz-YjkFw>?o)=s0@P8GBw8 zs+e1taF6IKw*HyPHHD5dzuO_Ow)AQIi)F&2zIan$y@K9^uMM9sum(bJ!Uu~D_t`h$ zEq}K1`ESAp_r?jVb$!X7aCzdy3}4-Fd9Bziuue`Gd$%y*jOMQktdrwOZ^D^l76`19 z(3|kVRTBi(N$5>Dc~>uibrSxYaHa8G1lB<4b$ssi_k0>1N5{V>uug7y>yl-{$(2?K ztdmV&xMZ2|xiPN^tdmh|%L^0k`0HB&>*Pc4loux4=fMR6>*V^ybd4GCiCGH-*2yEQ z%L@~Zm^)fvoy@W9l4Zh0=1&$_C#O??O*mqDXMuHcAjRK=M@{G_uue9h_?U2|Z(G{e z)cPHlEE7(S?P=>D+)-ZWxX+jrdtP--rI;IV^sX(ozD7!Uq2n{>YsF*TnAZBDrQ^)a z9{FyG>hTjvqw>Uzp=WcZ4>%Hd^Gl|jC-c1sDb;se~IJU zUAF#69U-PrAO8u{ciiIHj*dHasvr@Qn&f}D98YyOI%A<@*le;eL9qQ$e5Px({Tbbv z{0YWiRUIKZI+{S-xOAQPuaT-Xhc1V7y*inctq^Sx!t{y8H;ik z3d+lB?G^hsl(IECK2c?#nEUP@c3Z6;|3r*_e~ouO&-zU8oQ(gMxX-D>_Iicu#e{K> zG}H3>AB-nN{$cwJ4f|}u5qXZeFT}03>*_eBVL{*AGvSCW1>~9KUA#68IQivo+ova%`em5ebruXO*nb^NjK|FI3n(t`=|Jy>^Y$0BDV_2n~p}u5vA{NRlHa>zR!bC zT1H%MuIpS>+4zo`^Q{OIUhtRe_v2;at#fm%h%h)})&!qEC_6r!=s(iuPcY7?P~Up= zt}1qaO*lTPiB+OPWxKy7oMGK>{rb$^c7MZR^pW+!7(SFFf6zx0J`s7**I$3;exY1t z_8;Z`4Bxn%nf*bzkDIy#$N7XG``V&%m3?hdxj)-&Ipxf1Tg;`WO!u|x&)gQuRpz!( z?$2n8%bC@-m=7LVO*7MC-tZ80Z~%^T12%AdI{l&j2bq1>O*7MC-tZ82xQ zRL0k?2`_3<#^-|xXQr3-`4$etXVwQ}_`rQJ;bD_1#MkXy$zCT-xZIQF}wAaaS7=2`YFlHaHPMR?Kc&J5bUw=a}Y(j(2K^?BwelT4mlSapA_ouFtefNZcID-5{Iqc|oMdTvu)=cmHu#QjcT5450 zKizIi$FTokz3;sDR~pV3@w_#4$=9|<$LLpgvV(Z)crC@S?RLteAdQas+0m*V<$TYP zf-yfk+IL?$-*cp3%+GdSx~H7)IgdZ{^O;t4%K4tv1ZC&hOEL19pS=WQJU_uRw2BfW|b1YXBRfp z-u4ID+unn6g|R(<@@3g;z-h}yiT5Zy+ z9BqAR@14IbQ`Ax!&)zY&=ZgxK$|u^z+2zy9SFlvBlnE`tkE$(yBE{>b){iTr3vG+yBnQf=N`0FnlN&En$r1oi@VlK6Gm=NCY@jRiCiyD z821J<>HPZp0ZXL`Be&-cI=`+^V!bqB+*cH)^XmrGUlT@d&k8!fPNe>tFz!P}(fM^@ zioXdXw`VJzUnfv}Oc?7AuBlf?E|n&X+#cwUmtQY+j5P}LD*vdZ(u9%Q1AUtc>!ps7 z+k>^`l}(GJ2_v@$>lO4SjL$)=fy+s6!pQAm`zDOs9`@gak=uhf!~bv@pI=-zTt;pW z)=BZwDrv&V?ZG+;y$K_?2kRvCCXC!3tdr22FmijaPC{?O$nC-0gI>qT?O~0M@q7mB z12*uxok=uiH@>PnD3F96Q*VL853#ADo zw+H&#=_{p`HlE>}LA(Eec~1d5I>!AxVzPkz50`l_Y{!S}Am_)Q zVY3nC`5-1HjQuS9Sw{L`{3Y#eUvxBq7<U^MNK@#vb!DJqtzMf5O<4 zrqHuf*wHcXHxXMM^Bx>_bd0%#JRfKD5lkDHn+A;Bo}11ZqGROtY^OXQthXkN+#c4OFmijYQVx&pvxYgh2O1r7 zZcp09!P1DGyqbpY5t8$Kf->dy{6={`H5&|*$n!Df_A3YY^g-G2r^QSCeEtMu&h0^e zO_+0g&_@$SuFiGJ^Fe>ZVf2yp!5BW=MR`8xqX{GT26++auRkLf0{ud{%IrVN{TaS- zIWzl%avwXnJ$Ac(>}!k4Rra+-<^F89<&-n4Z839h58Cx-ZVTlqb6Y6)XSBuT%xYWA zoZEwT{h8ZBxysxY%KaH_aXGWv7BlDepk06FwotAzw}oxjkstpSdlR ztITbo+@H}FmouwvF>`JY+Vy8{3*{hR@J&e}ggi3z}feK5!qQ55~yzX+=3axF66l?ql0I8r+W|{|EPJ$oT=I zF3wqY&>6ZvBhTkg%K3p_$H?<(O*uc%=osxHp9l7J96^3U13NlKp3hCn`GFlBBhTj^ z%K3pt$FSd(a&@55G3WU}qhs_1xkK<-$H?<(LpeXNqhmZrT0+m1?)xgiex?+P@f@i; zJyXg&kYGPk3dMNNGmD=2Y}l7zKl2I1cvf>KJ-2!2lLY&@O-QEaFk|RBOaby4&tXC_ zo~7WK#-Qi~`?*Re#u*$m#i}Pr6Xr9f%TGM$J8ufcykCAl@1wrGb0Efkd7GnQ=4Tfr z_O(9JbMY+nz^TD}lNh&vC&hvp@WzO?Kxyt;^0p&*QJh!p+28=n6 zoFC{_<}+xNtIW@uP_8oX!BK9)yk0@i&npmH6Xs_-(3>znTPsF-m67Lzee~44?WD?h z4v%?zzGDZeGV**--oI4`sd6RfIUDTbxe9E8k>>-(9M&-z;P|lD2eA0lC4^xhEexNsDlk@Hzte9Z~Ru<^15BUB|GqnR0%(Ux9eefphZ1spqWnk$Hp(H%`7LJAZK4S~j_cFyU6! z{*o{E$R#E`T|=1g_WggzGRsSdE&1~Z6HaTAFJr*K|A=l+)et7!tYf~6r+=s@9?zFY zm~djtq8V2%<`8$0|0dk^mEsu%j}#Mm3*-?doOYyC#^?J!vpiGDe*<3fQQ3^+Elydl zl+Ghe_{@ zP0rqV*ebQKhA`nO-{s9{`fC-jh5Rw$Rg{-<&(!~j|2$hmm~hQ+if7zgzO-0I_Dy(q z`=S|--^?NIB>zqLz1PZR^sp{iuO2>Unee54&5XYX#H%IQdXF7{O%Rv6?u0eAS1c3mxMQODk=DwalfEmlsLaCG8)vG0MZA~OD>Wx{(WED-a5|Bo14qMR_{3~Pjl9b8(R zq5hiimO&Fmr(roog;M2&2}hJ@D{d^hV0F8jzV~FnmC8RVN|ZTheO{!TFyVt6++w3u z$LgHxvK1~bs_~%co*Hc}qH9FQ`KC*;>uQX3ywGJUT;6ivU2$_`w6&A$>v&YDnD~?V z-V}vgr!5oav(yr#S2=UaXQI@W5h5Y(wDoWCoH}*mf80GnJYM&-Wx^}^U$)-gJVK<9 z5C4QC-aTa%Z*-4UY~o2PTs}AVik$btLt;(0lh(h*6JPy8Hf{Bg*j?lqAMN&)c$n7qu-VBqf_=_AGG+b^BIr%nwLfphyPqGk$HIgQoiCk{ z^hH7YJDw(-%h6+uOt?Pz^B(zwIivEDs%0{M{I+2Hx1XJ`Ot{^aycs`K|5{kZ&RRO2 zc*k!tx3fN*a1Te1^;YHROEuyTZSsEaH5^7vSPzb9uvb)lt7JUJ&V*E5y zo;q#mIQduw8Gl!Fyr=qU%Y<K#~ed^zc>`D@dvX_9b*k)O)$op2!8*nBQGIzC73ez0b124l>-aNK#~tTZkYCMB5P9gH(}Y)4Dkz)3)J5FWlJ30? zcu}u{awo0l@ZW?F&Z;0=mZ)N_z5fU6pYSzz0a;}3t5&3&=8pj6u%lznLx4ud@Dn)+wm%w1fAL!--1k7tzfS@?I^I%xwRmWH z2@#cC&@$n*dAEw$57G1NM+#ade6HmJ5nb_ak(jHfrQ<&1Mv9D-Vxs=^g7lsA(7feL zf+!b#%33p=d^X?}dzy=ax$9e*HH%u|^0i5+;;G~Htmu|St#BFn61?u2FwUBx=iizL z#mK2>Kzi&uOqlIMuj5Pfy>&O)Og`VxGGXj5?w(iOdZpY$mI?2Ev0BEYE02q#_0Cu( z+$>LpjAv%nxANqyVTH>_hn|*K+t;_c-d)2AmvLT?`19{|gyP*hD`iZcRKp$%6P`b{ zd$4Rt6F%H2Uq)rR z_M=-@wRAjeS@8@>*Z%Q66)h9)pI$bjMC2)J_R5Nu2`48Gl({x{vY%y{FwV;H`xpo4 zKE#CicQ%fa-h}zLK@OANgyHj==e^I?Oc>W-sm0!TrDHzdUwnC~G+~^-SERF~UT2p| z6UO=ei*#0H-Lp=bF!BeQ(OFoh3hSf^yXfqGKAkbGn82JF_=xnPn_1A=PUVntno(^4FDoq&q0AJJDR-cONqzU8f{yRE{s`SNDX~LJB z+<;>3)=3?2r?Y-ZXI1YVqB&r|INyJR&Z-{nKx3+5obP{5XZ@S5(!Wg{Cgc1)dFNrP zK=e9k!gJ`XzZjkMe^hOqG-2cqOru^?vB*MyM|P>XT{;J*puy#7-sRFd66j=U3IT3KgL5==~F>^ZiuXn`e@rIO`9@IN#q%XZ_CjMmQudtR3&jQjztpDWT|mnIz1c7a$x>t_M-$An`jH=r-& z229)ax-{VvbatPc*3ZM}uK{yDz@yY(6UKQx*3U{5e-n;(as%G+ye>_+(&%Oa>*t6u z^!;%IMm|74$_?my@pY-=gLJ-+^)tt4^4Wm<&{_Xmw0^F=LN+yw^ZmbOU$AOzqTE6Q z#`*g`I*Wht{Oi($`FwxvkFQG;M*hGa$|Y#Bae*{poYy~1XZJfUye>@``2ZhNZos@P z3#19-yuKry-50;~x-?*&iYd-FO=c(b~@`XzA4)Jo_y0W&d|@&xn!k{ z^Q8&ntn&n&Gd{I>zBFMz_kWo5{}ywO!9235GS1}-(i#06YrYJZIX57YZ2l9*`TkRM z)?c&XeEDxN&fg2sS$v@!^W;Baocs5p9Dq60M-xU~K|JLcG_1NnnlR4yhtpaA;>yoR z6UJG89y%Ms_X|uI=k1QW(N`&GIYpf_Qho8vhQzDHofI4iG8dj2j$ zD8@NBG_Y^NI0t9F31jbxvu}Lw#)NTxos-V85g!xAdGud&HVwTA^I0?Ig9-DQHT2Aw z+bZJ>x-y+#quhk~`+8Vg`1d0GnSYxCB{`>3t`O<{>Ja-J~O&DhlI4{Qh(J{_^v6ez(!Z`C?O6R||yqi3yqFZ_d7aAM$AnZ=O*}_6ZFNOalVOioXHNSJz({Ndd8XWmvrV^c@ur!88FUp zC7tJDtuSFelSSW6IG)B4-w}rYIG@E@&EHcC#W)ZBfYt%jHDR2$K0s%$3GdMTi~-|3 z_e-4Z(r3L1#Ni*;$XziZ_e2IFqwZV26c7J zXR^?kFwR@???>1+HO$}d#`U6O{+>AO=$Ox2q0uqc6P&%;{^;2G?I2sDVg8;tG&<(* zi9@4f_=E3^vp<2D&t##|G5U-1S!i_3-xG&M$6K7U)b`8TNF%1R+6U>prugfmH(;E% zR;BZodvee{kA^$ad8>!cU%HY_6V9OX)(Uj?I`Wk^(u5b$+3PR4>RT-ewUgm8&RZwY z+3Ue#?PR!&^G&RK{2ks*tu=M$IbOB2Rf z=PWw+{P6zHGF-;lCHl+XI}XJ-8~u^aNqe^LEW>4-1Foer!7-~lNE606V-K3caqo1H zCX92#Dl~^X7w;r>jB`We4@@DOCX92#!gPkXZe0gy!Z>%!L1&2AtC}!>-xhik=I`w` zA-xInca5PpVfeh7&Jc0$VZsqRSGc~u9O?ac22J?N8rMUIBjZ<2n_)#5aB|K#Yu)as z_jy&4ibx z`|Jl}ws|IBmi=JNF^sNB_MLbJ;|z-DdWz@u2c}yljNb%Xn;I3LnLNY(_W@1#yCdHC zqpk_BTo@HUudvs?39lf1{a2>j{+RGO@_%=AuRbKxZHX#6F)%!;IfFV?X_w{Xx0P>;uaE8SQd8Gurx);)Zf&{H7VV>(AU4%2npJQ0~uY zi_4kSwwUpoX56knb6Y4^ncG6SKcg)!XGU9?Cn#seZ<=wt{>*KmTxD(x<^GJexSUyS ziy6OZ#_gIi`vAQOvv1IwGOjz;hhp?)C&d%`P+TdxO#EN8E_EF=!!qIc+GTuwG~o@! z%EafRb-U}UPg>#dutHh-U<{xCCjST1x@y8Pb;`%*e!F7)&V(7337?5AAOGq572_YJ z&ovWnb+TOi-nkXyV`@BUg~N-Jv-H6jKIbC;Z}p`4Y{2hT^!~ewIi}CBbbOBbh=2DG z|7NiXZ}_F0tzSZ)9icde<}GW2G5dyjYr?q4h@|@s{O+6)(>>BLx?i&O2F&+7V-tr+ z6UIG2ce=lNIC+RPV!EG+qwC^UQPP{RbC1-#HR%l)_cO3RZO>q7!fdnN0*a?&KNxdN z^7o_P&vfn;gE7aXYIm~l#3~r$9_CxRpTT&U@|(2o&7D5P)|)Wa-Y%`YdQ+~p(CZKM zp%`oLPY-(aA(`$meEs!f^yMk^i^^5@`Ap^hTpfNo<;?KmD*T~xX53?NyZ+2EM7he` z7Rvn@ZE-m>_Z{WTxcA_8{h8ZBxysxY-?w1wn9-I$t8Fpk9)sHr#%LEYhel=g0pAW9K?qi{`fQdfO2NsGjO}6%sxPG!t5vXrVRgC zABxeJ%M@qmLox1QxW6WhdyGHneq%d*E|~Bty8p>b>u|#&L!=4g9w|TRn|?G{nlRt< zc=`^u{lUFZFvdO10lJ^Tx@y9Fk2GvB%_ZmFDH!9P=OeoRx#!4W84h>7V~9^5jNwC0 zy8pRzB+X|7Mj!F}uH4^HyoK(Upux3o!nn7AzB^rOp|~o|Vb%m=ZufVZ!zR48=tj}C z=x5fMJK00!R5Cwz`|Rkr&(gj=e{@`=`$J+u!FjgN zI!4{+3Kp<6I))F|t`~QsUphu#A|g)IgGR@Q3ER;zV$1&MxYgTl`}(D0)a^#&wQP1d zp<^B+XmreD1dWb)jG)mmV$1&M7-O`E#tU|I%wzN-X><%9GHJY^(J_w^G&)91*p7~Q zj9^E{7$feNj^P8(RWR$%9s5c0b!WocC;uh+8Z=@2+mU=dnsB?MA{lJoglirwnZf>> zaIQ*aG7yLH^A=ks44b%Kpw}_{#B~Raj?s5qztHFy@nkzX#u%|bI&KwvS#lpu7V@DtZEG&<&ShepSUC)?36 zk2~z>7~{@;G-3F|bLO8iw+lP}Q^s1?nLb}`yfIqp7;C1R?gyaJG1j`L>3#qj9b*k= zJ37W^0sEt4e5TB&d4;xgjJmWQ+8Q0hhodx?U`NO3O9cJleg$I0gze}Uv1NaBjL#JA zmyS`lBaPR=$}8>h3dB4{(CC=Q2pS#p7(t_B#Fl-~F~(>fjTh|b7*cu(fhl4a; z>`x%(@#21Ay!;t4;kr6ToY@~8V~n_8I)*hw7!dRpD+A(3Q34A@8FxFDG zZ^Brg*?$wp`j0p?%`;k>Fl^#_fnLY(6W1LyI!50y2cXe0;>mV&j4@(=bd2?%`)I`B45QqmIg;gkf_V#R@UhG5a?DkGVcS zgE9MgE@7-~6Mp(L#}IZ*7&Z}4wiAe9r^B{RzVQmhuvxinD_`FOG3Md-G-p1l)JFPq zCdG}*Rh~t2vh}W>wq9ju_6-T&{9^nv-mY89ooCIf-)g_ZZE|PxiJkV$|J9 zF+B8BXQ^Y1^$nVnuxY}uQ-sEsZ3bf4nMrdJKASLXzE81&UdQa)?(|_kKZ7y*xpPT> z+a~<4?3 z*D>tW+Mg&UJ2nF`>TjgGnQl`BVmc7ie6fkwy45l7wJ zu8uQ$<+0fRP>i-%6O6enXmkvp6Tf)QDnxP9F=Fyz`Wv<;9RAsfA?gNWZWkIIqrdEf z38TNw;#7RpUH;&^WP&6cYIF%QL0B*V9Y*1W6FK%JTF)uis3_VM;{Kip!l#p7{h1y0F4PpT;J{bb*tBZQ*NES*X}R$ zri}4reJF-Mb{`$zf^q!1A3SZyAJ{bIpB?+qn=tHSeA#{|hE3Ll;^dQ;J@3A;SIl0J zY3X>yt7klYNA9;ZI_A2Gj~?^c3C3&(8XZSOEpTzWTCQHy&HhJ(V6?@WpzO43Ycvd> ztIvGS7n4AYm>lb{)E8S*9`D2u`d|znqR9tnbd3ITyGBg?<-Q>1I_7qv3CK>n@QvFI z#wU88^yDx0u|Uj2G3F|3{5fJ+eOErRgYr;pkFTTmXV{;8@_E}%C`P|n$`wx5pPpHCG0!LyWnwqp_o!w%OC z#hK(YYl5*ougC{zf-&|`#b_V8^Ven4gs~@Oy^dk0I_ClJ@ZXpGdpdjnOBx+> z-KOQ{`RoK^w(|h#bFj+sX+kmlVNEdRw&0tN;qxfkcjs|p5{MC#owRr6 z*qSoO4fH+22lf?D7z7x8-PVW7^xs(;n9DR~U@=M>zUW ze4X~NtTAQw2YP?TJ~xJZhRtvoc32;ZGo5y!560{RG{G2q!{fB??l$UaX~NihvOXOC zW&a|{`e4jHKx4|-N3%W@!-q#5eK?Hxus#^WXZXPJ48_CZL;LP~a?xk5hIwBMjgGl) zRAc&#aO?zQwgZihd9RIjwM_dv_8;p8x_+X0w-h z8di+IMs`phis2h;{2BJ=l=Y5XC`Mh@_%rN3O?KFRFlL{j@#kwpD#dqra-&@y4x?Sx zhvMpUPT77!Z_4nK_5PgPevfEFKBL`m78b5nMHG%9n?Q@%f+RtV)m_C?&r=D$}Z75~jMxeO($_(tQ{m|KD zd;ESjpPV*~G=co#`pSFk6TfC_H<(_kN-whw)jwu_Rci&+D?V}^*5mKY{Hm5kMD(sQ zK$LBF#`4xwHCZ}UqjHvQZ*BfNYc5YbpI$s}l>8v)n^tP|SkL=Sc6mO`KUlm~yP_QZ zQKY>8#9x**E{FA5=4jdT+>6#56U$j`zu)P3?1>>_#1EB3zO5zYr6aLFH~Lmrl8$a_N*q&*jkDH3Wq#U|P} zSjBV4;*rwzs$K5k@;;?5xZB2k?kV^DAaVI*UhCe@XRY5J>MK^)Ehb*7QbnF=oKtkI z9VNc+5h-@H$g~{$La}ct_Jv~KF8_1Nh4h!IAF<|a7%1kiy2Eqq^HZMa2K~gIttDiR zgeoF3IzqJgo_wEBUgjG98{&ZedgCyrkf@kZQM^C8uoze++Il(mb8E-T1DHJydz5mp zT|Vq|Y3tEnM~JB0Z(772g;6e*a+{Ckh!kyal@Uc3bd=cg!)5GwvQ5cS&;$|JkC56G!M}h z<{{=7+QK}<9FxT#Kc0TBV4`@a)gq5Ff21;hJWqP#DJh;P=lR2W%pduBrHWR|LZj&Q zHP5VEjji@=KJ_e2A0P)MMthFt7%6vOTIu=b`P!Ze^Y(fE&O1ob_`03(l{CJVGrqEX zY6;>{zfv?RuzPfp%ZZ(b&`S!B4H2)B%#_XSy># zW$zPtJ#Y3pYxVBlSH{&YChw?LMSd2WQy#uIN)~t|Qe17C=~3nn_ZRa=D)WaK^90QE zhuJPy=8s32KVY6eT#otUQRa_5UodZI&PZkcFx%z4D$%;+tij&(ZTP#7h#e6Te(UCK z8W~7Kb$#Uy`>pRjJ9fFD2L9Y;NA=TTe~nPrZB?)I-CyJLU)4B%+FFNoZQ139nn3*$ zs-F(~x260&S(Mt=sY&P7%PB<3BBAy2CdIaOioNl7l4wO`)swfyUL*edi7}}qUTzlG zl=!D>!{lpUe_$0)>6CJ=(?q#!cOOs5Tu0K?{(|cyH;TPQ`Y(D9he8gtC+Icl^3aq^cf6EZJhfz8Ir{rEJIBfBUJI>G zt;?sN9_zn&ZEjq}Vl!g zej4}AUrFMZe3Rnxklu+&K>e5ROb}mpneM6Gs(kF76rbMF`{O)Rcli(VQ|~O6Gp-r6 z^=QiDqE7b%R^qlpja7X|iqUZL4e@`H^sA!V#+9&r%NiH>#(h!k3@Mf~4)72&(fJ@tP~cKHd?Qxl&wOYH&6!l1Gbt1wTkox(EY-2QeO$cuRZVvL z_WPLcJK||>cgX)o$|y#Yd`f%WCV;j^Y%L z`%;&twj+%?52w~zl$y|geM(2Wt*p6GkLG&vkvCGKsrmBCO+N4IY zU$Z0;*?szHgzW-RM5yYx}|7(Qj-a}hE#a8dXKD9LI-`(0N?(A#%Q)d&abLJ?G zd7*8cQfLm#H|d(n+pI@wF=Dlksva@%{z(>FqMOTuZ7K`=z51dFazros9pY?%lEsfS zXI^sVpsLT3@!F1(WT|R2Hl=}0|8@oYsk96KedR^y8ta{KD>dtVuRmFTw|xt#_w&uC zSM1pFLSIpK>qojDDt^$D^*+dZO?b*wCj!^CBG-`S7dz#C93Euu@*-DlM8jgeg z`e=<2;@b~W{jUqhKkqo3XdHhW+w2j~6YpzqjW-Ue=K7yW^7r9)xY(NaHT(7WKh)d( z)7Te|&0rcQKDN(Njn9z>CWs$jni=$ZG105@L1QzU4+eVS#E)N<`W#{3cscK>vA#{i zcAQs!AFsFB38djRg4tmWzdG7%ZTYuP4j=zzQgOgre9L+A87*h zORD7#JN10=VLSG#p(fCN3T>fWz_P>sZQ1WReoJLPC6)b@RQ6L+*-y!zX+O1s_EU@6 zmXB@UWujd5Rv%C6+(!c4Gvj_Oa?m?CPlvMUp@PYpG?i2Cq+|#Bg`zfjHr?h(I z-Ze$pPf2AzrQYjqSM|z%N-Fy)+b?IIYcs|GW1-wLZ&&tHG&g+vDWUAAgtDI!%6>{H z`>EI--6qP3Yx{VfiTN_nUK{%E-eJ_0bxImX(lij}eee_q^PYGo| z1%K?gP`~LC%F=_J{ghDlQ|f+pdsbVAnkf4z_4z=ovY)d1#dAa1PYGo|mCYYzKP9%b zS{_%O_EVX3@2}2t|7(QpFQmO#4cbpdQp~r|e(J?qMN*$6R_DxDw4b_2`#L;7IoxA* z+@o7NrB)zT=Z31c!(;#N-`o2rHvhFfn!&yXdpF;HM{}=kkC)d!d;b_xZ_=(~&z^JY z-baap{T}O7jb=ZU%};Z^ciyXdoe%2$q$XC5&t99VUa{%;X`(@`V8LQ z*JRISv{zE?tNQ}AEiZdN^VEBLMZc==+*hDv6;;W1HIiJ{yadev*O6aW&W@HK3;wAIqiGr zk*ZKMer>8MuIK+6P!o=wK>cE0*^Zya>w~h#AwBn#{qg?&U(ndTglUKTz0DtgJApJ* zmTj*TNMm3JR+2?rz6NsR9Sv;#?f!T*_&>Dxe|9}e@JH=Ovdpeg-}9=o^g(U1PxkBe zTnz;NV+-EbWV>}XVD$?fPpl-i~dp|A91Y z$9{GEamsG96OP87e{8|~>Wews38Fy_d(JBw9uL*3T4u-pf1;O;f6i+*`vP&zimlon z>(nye9I*R{KCmk5RV_2RuHl32hu4N$pRES;f%_H6hktqPf*-zXpZo5#&pvuJ-oJVK zkbV7R9rwkn(ap*1*M`f@%D13dLvTJ+`a% z!#7tQ9nU$|`h0**_92i>rObEj2i51;SXG>u8ZD~*y4!mG>|oLLU>WOhwGWlEx@1xP zgJIT;rTs$RIH>(q%L`WC_3os*t; z-=o@C6`ON9eN~+wJgzf+#i#XGd9L@^;Q4fQU$NndoYt1cr#%M?^vhP)>V7&sa`joy zvV8r78n^my=d^0BKJ8h5xvvXoBs6ZA=xylZ>5(eS*7oOM7Aq)!n3}~0?Tu0ob8X=mg=WEj%r^0dQXJ-;G>7dxE~8yEo(=J5?8Ogc9%NkN+Es9s?OH4EqaI)eEjaRV$7}x(YE8}v>#R;aZUX?Neuh8d-^tN z`x9zc)g*T4C3`)W*J^g)rn64oJ}zpk`sZn$US>z9xKG|q65-YzJmf8RiPh)g`j<}1 z7B@9MYCLu8q%OAa%sZWaU$q}R$A0K5(&<`GYO}$UZ&mhnQmw0AUuvA++nm#Sd-G|} zT^F;jld49Ip}J0XdH4_O_-iB6OPB0z6lZll>*A@#M4hX;^-Z0_>YP{C5Ow|0+0m_& z{T^QBiS56^b2P|0xq{Zo9A)~ZpZvdQojiPRPV2Fqr#x}@{&$_^&sO!?SLdEO$GjT+ zKl}aF=%v%diNk7+b2g30s^=|F?wTa}7F}YW;SX)|cv`|AIGg1^-gPPA=a{&Yl$S|) zo}%jRU*qc6uIsLlktFVmj8Cscxzpco%T`Bx{on^KdD&ZbA^&V^(aG_mwySLVTFR}i zJ9$j%M6y%hdQ4ot@z1%c{+c9|^K=onV5fWeSJP}C)=@5TjbbzG9P6Q!`+EP&%~GdO z-Oaft$=AmYx7W@k{ny7X>0cu*h061`UA|*=p62eT_h_A`yi_VrMLAxf1K%@mL0X%? z7r8#W==HxH(YVrU?uD0zraUv$HPzmHP+$MpVhTMsn`Kea15{h__y zd`NYyv;0lYrup!<-m+6frafM&hWmuqRUh9cUyqEnJT$E##mQ@z|IgR5 zSO4MJ`Ef<*v)l7$l4$zq*|=A0E=t`^T(->`SLIRjT$Rr!iMRh)=Z>hkDCOJoN#a=E zNvW^wXzV_gM)w;dK25!RZHrxZ=FPlm&rNF-n?iNHEvaMgWwEuBoAL_cK3tb1=63!d z_1^Ni-Gc6O*fUfA&vf}9uE3hXuBMqu;zq4St}eUlxJzv(I|qxVy^`=BcmE?vqWGG@ zX~qBJiEBq1)&5JAGel?SPCj$8or8k+hrZU$HSf#HX_3DtiTFD=x>u}QuEpqT<9L#zlQ7Wp7foL^>Jn{(e5qIvwUGDF{pzkSA zzkj+kH1-7LZ^V%OOls@!q2p?vlHVBFaZqxU;0@0c@7OK+h3+*Ads2t@UX~Vf@rLK# z%2mbDyGja$W$zp9q+#h>fiN_ce7#!^T&$Aa|(;@Yr5L~y+JuOEuLEHnY=ks)w>nF z)ad1=Lq**=XLb;^R^BBQf287%RQ$2qI~&bmcg z+jZ4))uyWXZ@VS`8|VL@%&T{+pRfu~xl1(9ai36Fx_`Q!{#<%zv9&~Dp|D)I^-x@o zs8mlvs}bU{)p^8^u6iP~$?ul<<pK^QN-8$2AEz`RWSkouUp_$`6 zo}7`cJ1!@C?oXc}Cf;Ar^K0hQp12Rkif5O8>gnow+`0ZDA{@P?=;i391wDr^J?**r z(O9YKXKg5(>*J`#OoZ)$a7xvBiYK z(lscTc;dNeG5>l&QSX-yqVLVN=`p)Xh-%60Jl)@W#ItNwqL}~522WCfNpZz*j1n6M zJm_ima$nEar^bpKTNip3-#Q%k&Aa2o7u%Z1TyOKT`3>iRtb4IatH+d4=^;;cR-PTwwi!p4U=dC$pEU?Le*m-OGxe+EU*StXF)H z+3P}&Kez|Tx<_(YbDzL^yP{J!i%-&hzKibjxy1WQIaiyKS!SH}v{5g6@OA|D{Pl ze-e%+N%y?M>5E@|%RRM>w{NOH?Kl4HZdG@h-RD^slEjPeA4|h34f{`abHc zBbDQDKfU;e`EjfAO-ijxJc9C_EqZU~U-bRaOG8uXyT7sc?r$gBkA6nq8|_8xvG;me zAWc*p9+hJ&oR{U+IVHW!#}-8wa1T=}SUdWSa$ zr|sRJBy#R8?bhvKb>+I}ONVI9sY`24v7~LW>K^>#_DQ1U)und7)&01-MvcmuBoA_geT~~c}QTes0;*B*0JolF9=(-p=O{BhYEj@AC&9o))`my6^~D@@;+yjk{5-@e-G7yf^HUsOBlwYG_#&Cp&L zdt%X-p2N+d_SX`tYmTai_5aiB)kb=r@f*#r_2j2+z1l?27`b2PTJ(tfJK|YaA9^M^ z^s8}VB5u5_eY0$YHdB#WR{pD8dd9WjjYf*J#Xvsajoe0E9g7# zqSW(AaX-`8Eh%*>PW7kFfb}VpoA+?J>Dk(c^sF&@bb@Ocv8vBVYLt45&bnwG`1ynO z@h4fVdS;TS(X+q(92L(Z@l4YD9{=C|PK{EY)tAzpp0>tz885cvtLaiWEj@3|v=1o; z^y*UB{_JdYEJ<|uv5>po6RTa9>G|uu^t?G&smHB%>r4`3+dl64bXMc zUJtzOnOuYPU6{BhDDL!I9I*=f;tzZ38qVY5U#_n04RX^x#-H!FSHIsWwirEc8u$l2 z7j3hA#|N~|#Ozt&K1H7+-5Mu}1!=FjpMS4YN>3L(%P#w>d+>nuvE%5u;@jh2alchG zXG&T^lDIj0sk=FS{^ajWpV?)ecV`S-pQ8Ag&F3zUluoNcT7E z`=yqvpG}jNRhP$~7ot+TTyBNaN2c_YGs@(YbKB=~E6ihL&l!`?Cf#R&y0+ImI906b zozs(l*S^<|s!{S%ve{9~l{}Md8ns->EyQa{I)^J`1pJLv2v=hsrLtDIkF^Fhh; zk;?gXHjV0=l1pQ$`xLb;)lYRC)w=39s&!S3YG29EvDABsPPKAcchc|dHLcc9s&((p zSZ`hKz1s6pT3@NwRav#8@T7j@34 z8g=fedL_?CDtSIq$xD$+4u(|ne58_3;!*WVo{v=We6s14JRhm#mPjSfM=E(f*)&T2 ziB$4@q>|?&RgIEc;;fUw*G47JM}}Kh$@9q;H#I(LJay}&F19A?q*_P z#!y`+l{_D#IIHtn7f&@N>Ri>WZ%PivKUyd2&p4I7sp47Bi?#Y?TPKx#$ZTt%$vUa} zrmjWmI;O65|6M0>8wBYfo1O%gRZM{ zr^%9$QP#zcH`1P2Getgh$Dp)Ydt%+4-%pa?PtKXXr?8cF=-BNx*|)4$w8VetyF8)u ze5Cr^OnFuo`^zWoT+Oy0YJBQOl6<=NGWYc+@1;J{I!RL5cD#pjdQEG#z0(fL1(N;8 z_DNejv8wCI-;$(~=OdLoAF1T|NF~ols{2rNthp!XpQ=&!s;b7zx@V+#H(9FB7?tOW zYTm_dW9Qh-R<6nOapsJ-E!}?HYtO4u`FhLcal7Vzllmd;`CmAAJgz+bW+LVJ$X#i# zxh~IH;97n@NfxfU*4?D|jFfFrN%G38b5l=Uycm~4nk|XXrH*bT++Wh%F5e?h+O?L; zV>77SYoFJQtTvTAAF1T|Wb31e|C@h`ag}?%uB%OElC0k9ao6^i<=wwi&K8xW;XRbs zNb8rj@!OgFuJ<+TJ^WqC^KmJ;F>2n9NuG~UUX7CH6K>v)Fv#=CmPe%aMVEJ^@9PMVw_ zyDcZ@$F0fvkp?+GwjC$u$F0fvkp?+GQpx#|>T`Ji=L60ex>Rz0r25=Ot&1^oa(<-x z%tzHjquAt}pKN;dxwMk=Bh_;C*@%+!W5>sTuAxmO=SQk_@m?ss8WYOxiF0y$QVUWZ z)O^}YG@m>st|R>>Vol<2d(2L~_odyb#VF?|ihe6m$@$r#*+Y>b0Zf>PRK$CsxV%an{M;{;PJ>YfZ`dkxI_b z|EJe0CFe)GUMV?0Qpx#|Z+$sV>^{1{^D6xt8%oa44khQu{`XOwoFA#={75C|$G5g* z|7=c{O3u#?CFjSjFrVI5c>Bfe@U`{yu_@w2p-NUsdTyxdRZXc@ z!$qz4XIfqEc-oUcu9$4R^O&c{wtBK#qlxajs;zKO^GuWdHuSPq*X}K@#-6mIisl!8 z6{;`V4!!D8ZK|5@Q>R;1R!tBycBjOt8r9El|4wpW88O}ZzQ%-X_J5rFTKX5W=33|X zj+0d$OY)TYzLzLb^Q5J-uWD-kwZyabLZayLQA*tYi6_#Q-Cfx#w{l80J4Xr>m(};z z5*uq@@LZ@~Rc;iOM8S3^ES()yGyilWIWV%WXtDiJ%D!j6wer7GPc}*@Dhr(X+*9!2 zyXi|}21`}H=bizw)JK20AFlI_rIxF9R88MmQ{|1kg{|ceevsPx@P2F7%LCKL4|rU< zD)tk3*0ix^5B$=j>eX^jy_IQY>APoRTQ84QHLA`24L@;jd}o@t`a!fyodfDT*}J8$ zY@F83D%$d}N7dAh{={=W@yYbbH-|`7(}MEH-lKol=7par-+a|#_k@Nc)An^tlC8dc zG(Gj=UFn%)l4QQ*Dsr%^x_r6&hn{uC2g&W#s(9W`KH&MI?c-^0uk4l{|5}pVHzFZ@ z)}M9L^N&c9B|XDDkuUX^Z>8+$l^5viWf6_g->thwYYV^L{peig%o1?OM=J9!=fjInw-S>Jx+OrEio;^8Q(^ z)2__xnSPl5-2v4%bq=d_)j6!{r~H)Lz5ma=X>Wg>Bvt)e!=pv9-Bsm{oTP12KOmG2t3^F8&H)#c^!TK(v)mF+@fhzDf!N&i>`Mlw|c;tBsu-oes`yl zmDAVGnkH5In^z1Hb$+kn>3aBMk6ON{R5Q`)wTbCYT6h z?G$lNR{Ve1dk;7%iY9J&f(Sc{dmuT<0V<**S>SGW`a~21A}A=J1VIr20m&%b9UvJ+ zk^v=&fS@Qy5bkz&kc{MvBtZowD3S#OU)9XiZOyQAcRtUXKkj~0|LN-L>gq5(Jzc#s z`q685boSVeqtEUd^l!&0pn%aPr&%#;~osLrqQ`*Ds!I=NR7}`D~^B z`-@w2tz-Fg=O&w#MmmWUuJ$R(H zv9?Tgv3={|j3Fb6>X%>~Jym<4QUBP{=#pE;>Mu5F>Cnl?F)uw_X6f*O#>|Xc^pU#{ zXZ|#(c5u?J!x@|YOfz~uUr$dR{<`QXeH`KPoIf+Ic4U4eP2{_ENHUk>-IoL)Qg+WAzY{H2n{j-SgI6*o!7U-vXOZogbCT6eW-ym{tS(hDYKDo%*|N zFC*#}E@iY`B^l43ubO!{phw`H3=W-K#%L->54At7k6hi>=u+g{XzQ0(>cMKy7*#+0 zCHTXx$>9Uw+g)|0b7+6>3CY98rx`r$wz(}tnOV0+_k1QBNsC12&vvUKzm7@ul<8Fd zo#+pHHt0PswlNwm?G*ZM#>mXb1ZO|wIv?siA-n_b-S?OLA(Qt*uRhGvR;>M5uqC|T zL+>06^ZwbS{DR1@Nj1YYea`;I`;u3m zQg;)aUwyPp_`NaDMOIG*-PI0-yXKW6 zJ$y7=^5!(-Wczuco<+V3f0YN`b8xbsI9vbK=;?vyf|c6N2yY$VG;)4&nvv(ldErIt zhDRp9kY*hFp>br|f=-c>dYZBIxs1s32UCri3)cq+bsZmi^GwA^o^ol%+5r2B+tE2EOh_Zry>Q*rW(UrCxwnSD;w!Q%9(ch`ix+5n}d<(dZZey z$2=DrJT*;>-CH48cFoGrfsTv9_pD2G*xx2xG+genGNB(gr5SCW8W6rvvwZL-826rl z-%?D2-{<2x(TnQLP)6|KaJ_rdjD7GMkMfUCsXMaDJ3&5Y*aE*P!?yYx_K{S8Z;Ji` z=k4KlG|MK}PyQC#Ve`ECnHWYs#Aj4ovb|2>%W1~SO2dP_hYbxkgmdhPb88KV7Aw=w zs0(d>=#F905qbI=6GjXT&#t&J^I?!V*1m5Ljxe4h@8)L)M!Wm^8TsM;5#QZ3BwC|K zU!(X-eLeTLANmKLk@O{zR*y_sULN}8qg@wAw!pVV+a;$NKMt81fp4>9oC?AI7`R4` zJ~pN9H(gVWal7_}RwV`^Qx2pWd!{Uk92gx44Sf!-scY|q#=$f1n3*sqPHkacQ`Npr zHI8k}3=Ju$Mi$?dW_;A<{m7YH)liei(~QptPYTUC*&^6?Vw%yg!i$kh$6AEnmC}r+ zA1{s!gYvTTjF*FH#=KHfBNu?r&NGU@dvX4Oc^7^omA>hU*VW_+sYd49y`kXpCK<2} zW5BzNxZhr2-E#ivN2VmT1U+-%H&057VadJV{F9|k>MpAOaj^H ze+$Zp>0z8O_3-oQzn)5(ifLgT@tX@(Gw-{UCQ1|=6KoE@b%Om0;-g*s=RpZz8hU7c!Np0YW(_`X$q z{>kfr^S|zYN2uesX=2#+!x@VwHVv(x3BMDBeI9==>L>jBx<~uHaW2ShfVI#NysO8w zo9A_3jWlENh8dAb@cWm{`_qiypPwGNxx>7q`p>2rFYg;4`5u15RJR4}Yq@E>+23HT z&w$?`Uw6K!W}4Bq@{C9;=-cc(qZ*|3LD~}qh9t3b$Nmaf3&-&pe*ba*pVw{=gUeeyq|UW7Zs(+?4+QUQF)TRkT$)k2Ks2+>K`lCT#y}W< zzRCP$Xr55sgK5TJi*E{d`$&q6Jd|eaD%m-*73S)%!}~-uunoRhjNjZbIzZX>!1L^H zaK0bLp9HwCT!QllTNMxPoBc`f*E3LOFy_F4-#9kDnm0fB<=1;8e+=VMi_@Kh9X?7A zmOGnf+_}AV=F&z3g8N}i3BY@5o`!evT>L%FIMl9Os1*Emy2Y~X%L~5WDztqH{2s2w z&B3>yZzJm5eO1R&ek`>WpB}uduZG_=6?~+MxZ{Jm#+g6gkK}zeD3-LZY<&0O>WoTL zT8qN_ujq3-O%B!gprgolaJQMZ*LyVu97dPLVTF&9XlBKq z?-Q?_Nix3Kc{pR{&MM;Wf=R~bkClP7JN&cS9DdUz;GI$C^^!2BW3b&7YzGy8hZThP zq?!DJPeZ%TpBO0z{rqxMm@C-t6XG(QZ|S%4;Qfv3hj&8-@3-}P$?$w(++2nS+Kp(B zr$*`K!@^aeFX&5})XjJ2u;?DV2NfD(-%~6baLk48V!=1BoM}1#C+X$jq}_0z7@s%7 z^*=M=-ROq-y^N{wy=auTbTp~^?Y-|LqyJ?-yo2h;%y*Mhzitxz9m;bvjHP+tSqJw+ z@wVpjr8eCs!ugVoZ=t^}S6>befOO5FPxAWY^~3AUOXlD5c^mP1;P!AEyyQ8b&zUpf z-CF4|H*E%E0{ZpnesTHHuOmOtogYj-nF?c3Y;MVA`27*}_qeTBFazd$<=}l(qiUr` zZcl^rSAxOcIzJRi|1!;hc(c7xW|49@SQX~8CA!O@qp;8PQFwlu{8!U(>(nvPJpMk$ z^qNxS#9Nc1OSkqinvZ@ic%)D1P=iRC5t+Q2pN9vY9v7|KsJC(9qt!un?&w#4!tYuS z!~Lu^eE<6b^tnTDpPN$qOlC@}rz2zLz&G2U{U&q9r&l7~;JsO$;2m;SU0L_##Fjrr zDzr}(vntdLvh#4;atp!_-@ZIt`UsR|%I5INf<%zs?q(OLRxw^sMFTwY$ANeBkXY2RF zKf+v^uN_tGGa>oA(Qk)4!JP9Kxc9e)-_quXF{50WIhl>#c@^J>W*jJAH{532#*p|L z?!m>ri*$doN>CbY-H+*AVJjzm6ybs%LWR82*^^Tl$gY8Rn^Z_n!k1tH0mDc9N*kOf1 z?{zZ&r|n7b+P`X*!74{C-b0eBy$!kDlaSNi2DIuw-M7Hk2Kjm*j8V(r{$$Rt-Y%qO zDo3}5+RsllO2GX4vs$0QKHxNi%kwoWo|fz9didHPm-mw4Ykk}Xo|en-b+#(-95?Rw zG%;!A!Z1%ea&xoDq8Vx8*CCGvN8ENHaycsQZW6qk@28VBduL1b8?z^ zp!VX-D)27lJl_u#ZQ*)mIvx7od*fVaBE0`%?=5@axI9{teG=P&OPlVT^<4%B;1;<&O>D5N!JPd%^QC58=M@{Zm$l8+J+$ zC3eAdG5Hr0^x(>H(d5qH7vTQ)QSc6kNfR?d9nYjX^n5G^2V1m$DY-Gs-FrMRAtc|m zGJNVmSZBVazxeWOm*^RIPU8Cq_}W^hHpN3X{kSe%#(>{IoxUwxYV6KP!>Ot6vIr~} z{;_`O=#$Kc9%b#A#QY0U)~3nK*Ar!J%J%>`^fbuZKeXxX>7g&fse-5NS;;2`JXBNM zJ@Pl5+rZDc4Xs1y9S*xgO>-in9Ke^!AR!;psKX>w(V)IP^Srdm*FzAC<+S zjwiUkp6?TI=wW`MDC@(?Cx#rle(|FPN`iFn_(y{H^+&0uSod3m(;bE@|tK znRfnp7|GH`W@rd$IDjgje2a+zbVvA@U$bx9?=)S zHA(L>zJ-I&ufc`;DnuWv{z3TWPX{=3a(no=$L8mm3s?RWdVSc>`tT9$9BKQ5kM&}w zQ~Ey(+B(KPFFky`VsrJRhi{gnpOinXr|xs=VS57{W1W{CK3=god@|b`AlB_Z8m*px ztUjw*ONUOLmih5R%zv86Ww?IkR~0-hmuJ4zOx`ZMpD;guh|7TgAdG$l^e1o`=Ia+r zGM7cl4XT~_?uAsr{PlwQUPbcQRDDd5_4=Pbv=ddEJ`hfc;@kvPpP{nR2O{x zWj3}G-!EICcl&U?E}eQtu)P5~Ps{cah`>!V!!N;Jf(3ihJmn9a{vq`AwPSkc^YC4m znD1U}*0t#9iKq1Zv)ek;R(w49bn6Er#h1W4@R@w+b}waK?D|lo^CD+nT!#7IMVGpA z^jz1|`iCpqiof%I8$H)zrQW^vGlK06aOmf0+1>!beD{LOFn_wJTK1i2s~sEkzhEt# z?F|rYZ-8f7uYSe#v;6>$zQ<+Qet=}&pV_))koQmK>v!}w-j}@kB$vTCsJ(V9;2DYh z>0-t!sYXK2y`d$&3Wdm@jlu~Ovb_OGd~X2!E;)JPvHal|;d!-DK{a^p)Tt!! z^^1?U9nNSB;cajZ7=~~Xp4U#$!#&_Vd?P=Hcm0q5HQejv%i$4g(?lo#lE_MBa(EN` zw%E%C=A#cE03ZD#@Nr!mmnN8xUW}RM3*Q4i`lrAz$b9q}hrs{%H+*9Se9xl$JJXZP z6l@S#voKBM$@_UQ0Q&^|KfycohII}d{c&Apb9hhgZRxc$4nrE)Cm>36+miXk=~GGX z!!tJX^$X_f7tGfmX1;#GeEov?`UQKw4l`f8U_O^H^Tj*#Ghe)5z8L;~!c4XYK(IXk zg70}|dkh5IW8jcsdkmH{U%z0!e!+bGVLl%?4$t8y;Ti9C@bka(;p(KH;CvhS;i|WJ zDR~>LiFO-1JsILMPzGg}gP*=NJd?e%qIdA_GQGm>;JgFu(U{S7VDwPle#Xj*8AapYF`-ptRzG-K4yQz9wgZ(`>e!42SZ z|0o>FUqgzdg3o;b_}ssI!|8KZC&IeM=oce@jd;%S{LXv?Nz6x(|;1j1|Rq0Q=K!fUV^o<#czhkioxN#!6#k<_MqT(fxe8+ z;HSg`&ym*({Nw%L{84yMM;TZf9}IoJDC})uzV9&eeJ8JnXP48kAFb4pXt*W#z7K%! zdwt&i$;|JZ%zWQr=KBsa-*+z{?+7=1E6@>U_$;dkb~ zU@WKgmoB{c%$Fyc)`j;FgFiYy>|a>gJk2-@eu?1Y&OHh|E%W~h=KmGU|0|gP zS3Cmi__nWE;P;x&LSF{|GV+ru!8igwWpVA~ZNcr;J`NUyb+l#RFL(s{De^mm|8DUM zGlH4(*3A4b~a&dL)0e?4*HWREZ+t2}QOAZ~rAtw0yT!(8tq zHoaZTC|-YbB)wcvJm06X(fQGn!Ms1V6E6)ssh?`}R%m9+m&K4T_Um)*KNIF-5%d2p z=VK1@GYaNY4l$o{2A604;tb|5PG?q_8F*(4ADFWm34_9qCghx-=2 zWVn8~2a^9+;5qH5VgBFc%>Nt2d#3I470kCA;%S+0m+z@S{aIOH1#cHF&-}kh%-_14*DbFfUTCJ=X^d_@fv&i+==;o&G)zC z*ob?Gn9o;C%qW`t&)I>I6@${mqT=m>&%(EYK83MzD7>dT6T)A?`RXUDg!g5%jD%r7 z++Vkp4%G(#Y-xRMnEPrI!9P3YiQdLDunx%lvq5e@^Ur27|7%OM>6jhi`L@UJzNnqhPRy&$_SBdsmpxlz)RM#C)cLKl?LZtzf>|F!R+4 z=BpLVS8LwSC|~A#70ma_zw4C2e6ND}UIp{L3g&ywV7^z_lRS`E=pFUSL^Fq-{!L2a&xzsTjWWLm7 z=1Wb^2YyWaUdKWBz6JARhM6BTnfWo3nV&Sw*Cd&rl>6_3%G%lT%ODDzRKk}pZjIJ z(sCK@ui-ZHv|NVQC-Wf+=0g~%JOVf6>EK!jg9`i;?tF? zXn#v(%2TI-hX} zo@GYC`CsdNf}Ihy{ARC%TJKuovZ}?NjxpZF&kWKLEb5S@K#VqwDmd zg4r*a{eszVwmrOaN2hnG!Mk`2cz2L#r*hkq#^v5w-~Nlse>m|;V}B3pn~Yo!meI03 zW6ef!5${io(V zjWNHUO4>fDxsmyLK4TJmOS#E~Mn>|NMU4&*HP1YDc%lByE!~lyWb*|(H%>3!zI^q2 z&5hlC^NHTew=e%0^lShqgN)jiZoNd((}ydX7t!JBHC+VAECj%8YVBMlrJt$sP)97 zJ4fnFUUUcf?jV0NeDj6bF9w7CEpD%4Ox|8iF#AQms*z~neNP+JUfriBReD9Q{rO~l z(UmU7@p9|+w0ir(caH3Ar2c(}vF@HbjPl2~L=y%zG1lDsPEx1a3K{e3l{3DbdAo7! zx5Lr350x{v&c5AH4jtA@{rRdfYeJ<^Qd(y8-M?Qo#=t$PP_ImV?tnr1Eh|6OM;+{F zbnCxH&s*wLxIp19#+1zB;^HzP{+K&K?+oubnGWwcX#~G@V)BB?3nm|B^2yA8!R!~c zuH9h_sCD^U&%liIs*$G{Y0dKru+z;!*r(Zo6 zwfmUe*Dz$wd$>&P)EA81@O>r&?pIu%>xAEp2>kts6(7^%Aus-|Jhy?(F+ArRPt30z zJ|Ajrv@7sWl+Ay{U8_`)nzyo{YTolDe!ph(A2Irsb9#p(HH;sxFeCdPb+v|Ms z{tMBvt0(E1wYwUVL4WO^9~V!Ys~Y+G>z2`WtKZV=?CECYLVu9ekHO|M2Aj_q)7v(V zE{6Ru=i9ty@H*#tvH6l?{+SGWm|t1S0pH`x3qYrcf?Z2pt0`5UIO@8f13_Wj5} zKA#V88P1P$Uo+Es@wtAklk>TLF2ng=`n~vEKiA3mTtAoLd@uc8e6FACTFD}pdUU|)|Jyq}2&w1}=?P#_Om+`WJ=lkE-#`EGfb3W;R7W{@wVV{OIkjh3(=yX9d0_eYoOT_(IF?rl+Ayi~EC7+Y+F{@CPJk;!?#((j+%O`MuD zB06wsA5jzDFVE&b#)X5$#KzMP2;Z>LQ6_I(Juo6#|I0q2Dcs}P{KqIauy%Mz#X82* zTb%PZW>0i{gL1~KPj5Hc?>MZp^JwCgSB)1cRSK;gl^JDo8$MqWn~JX2=hojB9z43U z==awh@Q#K%j1_yg=xn|u+P*qSuWfv)SN^`EXwY?y-lEK@@QX#eh}H*-iz1DMcr0a7 zw8hTeV%Se_M_a>h!`gR;_lB+dRQDh5XfSzW$Vp%#bEXr%pS-5&F*jZSZMY=^PJ6Xbaw7J7h>}q!Q{Q>LjQJdWBkjx zP@MUjRkjN^)e?AMs7!;tqQ~GjZ5xq;f9VGDFb+dp9>dn3QwHRtBu^5yo-97-F(_Xy z!}*}Y%sUp3XXys#+vj#WkYqaQHV@=@$=G(9?aSp!3oE-R!{xnXuuP~c7LRA9Jz0FP z2kZGdn{B>X{~j`^!#q$cm&dU6mu|Kp#$lMt+X4Vi8ISfdZDe{3)D_c#XX$2{h!3*y z+DmZ0eeNzh=`rigONQ4!zT@K^0|D>?yRz#GH81|J)95rm~|1;VU^wHXV+fL zKI<9&z>aajsqmZAIe+d-#v=&7Te0&JsFmxS0(;?>Z7mqA12SA5$`$u|?9Bcwc`jqOomnT82KzsrQ(7)#pS$~m*|w+`(|O6*cA7G_ z4dywfvHr5gC6mwPNdj#HKGrAciPs;fjZ7Jkjn^N{I95ipFJeA!`HnTlMT$NLduu$d z<&RFu&=X|&dXCj( zKbN=b-_(h9iFu>Vu|KQ-Q(7)#pS$~j*$$`|b$H3xWie%J8_aW_uU!u&pUZp6*!6s! z9?l1Q;`IT6I$0S#`+$|V^Sa>IFTdWsu2XJ5&zJWB-bTC+U^`P=b3Jw$&2rdfysjPX z`ZQ&@JlDfz>^e8)T{511%#yotf5Cdhy71_4G%jV=Ugouk=~0hIdpTr0+6!fJYA>|M zw8^&F)Qjh_zyE*F-*`RXxqZJ7?0Uy>&pa@mUxRFXaL8jHiPyedp3AWDMDRA{d^R6& z$nf@c*-!HUv^}RjVD?2SJJ_DpPweymXYK{8j98CxuVwpwVb&S8y}RAnSZ&r*ytZaz zyTRqzy}*%{%kw_K zUhs3KU-vkNvA`-1mW`!#*j7cYWt3b~T10$HqSRK1UVN^T+syUvfb>JxmNp*xXR$-4 z7vDptqfS^_ot;P7xr6Veli4YFT2^*XKG(_h@cL)tStVaCz2$Jo&snZJpP(1*=cT_2|X-(&^PkTn{_f*}0?a_FxNOjoY#OVtpgVi%G|k zH^+T0!DQ?>u9GCQ@+FygdJIcCOV$pP4n)$OC6k>V(wChclF8EZWRp7PyF#bH?;r3S z(2k?LxgC;}8~Hdgl&_6(^<*a_Y}@`v$q1{KV`XGEQ(o7}SZU1q5Wn2>kn!uo6|$AF z^Dt$c@}w!2Ken|~hR3<(t^VMY&ypdVC|?n?GbRIR8K3$W#Ut|kP1|xQpJf}9C%u%9 zrQ5dOpjZn@21Dso&$bM=iBfT1RvqR-{$JUEWg(q{a*iR{oTZb=lN8yR8yQTKRp;5| zYsQUF%^&IhU7C?FY(ub2_2c13c3AIQvU0X;vt)|qj$zWb2BP?6Yyd39+ zYm^V?gLh$m1i$~P_4g%n+?!X<@jG;`-(d0vlXu9lys-YW>cm4H>z`zDYeUes8Ept* zeqb}V!Cgj@NBt!4kl}s6Lx$^j^eZNB%2404>cQ&UOuzA@xZiW#s1s@*lxO;}en=ks4C|9| z^*iKwopb$|hxM0rpSrG$BoRwz<>ztl&ZlqXG;kEQ$nmid5P7DwGvi7a%M%PCKiRG$`RFN0~)4W|s{ zLHaBiE0k5A@#Z1aA58n9&U2K>bLT@wzD6|vq5Pcod&p2;Cfa$~yzBJjTE@=Ht;Y^q z^^(1eSy#d-L**g6Oc^59ojjG9&|RlwDaB_YE5mg%R2F8Fr%XIOl%6o29*T1z<%3A&&ayc>J$4+WaXkNK z^SnvAb0;6?8J6+7bG{!LE_4x?=f~ zO(r_!Ns7v3wXyTMi^(|ovHn03v3`Xdb6%0-^=qZgK3`kLESqh=tDI!NnJ>*fY#APB zX^LYf)?qH>EnT^^0n1K01?3z=vMWm`lP4*v%h2R7sLGCg-2v*EdW%kZJWrstjO08GZ~**rJT)VX;!=l193 zIhvP6u;&PzhtqS1L&hq%S@v8#Q?q9ue0Ct6+)jsn_N?J}7GU}Ev{=Tt&n8@+_W|}i z!u2?8VDi`5K>fkeZ}n|1?|jCI^&gjfR$p>H17^wFwq@xjdDkI`*y^*v{u$Cbx+r@l%yJK6;GGkfC6+hugzR()$Q5tOFkY^n(;d3J@}>Gi%;mi}m-lzeW~a_r z-?Q?yWUO;5&M8k)JY7~@8Fo5WFK&4&o%4A)ONQ#l)RVmorpc=F?DBQ!gtEk&hfsPG zb0cFvZ`$eN+wUPmc?nEq=VhLg78-vEb0gz?{v}P+M%H+dy$q(w)pInnHJzT3Z64)E z`I|c9$s3kLTzPty&rZgn(^)^Uu`y-^&nL@wW9x`7@9YC{W#ZXDHnTXg!nrRO>zZO> zNcmWZdjQ~Y>Eh|KezRlC@Ho;+yliz+dJ{3vIQg2q7@usVd=M!w>)fd)JNYcz;^u4R zVCe>(SSN9guE7xMqg1}qEd6qIue$>uDbOrE63_T0!|8t48x z2*=BpY%y~mvdfgQZL`k*LwQ?AT>WH2b~0`oFpaRRjN1q7IMZfRHYa(E$FgOkGoB4` z{Ivz%O3=_76^AtD;O}kJB9O=M!hZBL9 z4snE-4&?|84mjsn^ zAJw97y{5y#k@Kcc-bqMmeHpBJWNlb@HJG5*WP20;21dOZBP@j9?8U3ekYpI7}7pXB1#GnU(3PIo;} z80ARbjb8QRZ9kPO`}WGNe$gI`kJaaY8je^0yj^aq@t~Ox$1XEgoBh#^P%}Ep;r({? z2Um1L;#=~PaATt{%b4YHBi4_V@AVi3{W$hfJP%uXB;iIoU&)QU|NpSb>X+Ec$hX3h ziC7-J!!Wa4h#+9{Eq&>_8+pI8^kBQ;U!uUUZJ!h$({+m@TQ-5({_U)T<|5#!6dz7>E z5=z-#50>6^`#R=`{RG2q^t#?rF2$DTXpUdNcO%M6wme6aONYaaD35$MnsT=ObcUv! ztsnV3oMMMLq8<#p5z|SwJV%tnup3c6-OEnkqddl2cw>HZV}1ku!R}vfOtJa#5c?1E zy)nD{D&7CRkmfBkkMTm1v#u|=A{^J5JB;N+d-2bWi4cc>@etD?|9bSYpZHd~6g&NY zg5LF;Q~gtXcI|-m;2f{5u-E+(Dk$6W+)8(2euM3PV}5gEeq)U@IBwu|%rPHsx$Nin^t|FmyZ=CPYdmv@t>>BRuXE>f&W-0c zUVqs=zoMM`dCeVmKDW`jK=$oxUq{f6E9~caygu+R7LIqFfIznQdrTiM-HrK!wN8Td zhw}jUbwy$K_2drUxV~^*EH=Kl>nC3L|E24zY5Vp1uqA!P_$Cp3YlFJthbrYnQjsL_ zm9bhMkzGqzvD3uWnu zncfROxBVYph~-0nha0gRmLJ54SRTtCWR)AsWreN!!E*5USU47sdcDe!Ke?Tv-4@_5xF@v$Cx`dHXX?^VylM=9(tSl_6JkouRq9Vm?L!SjuUEqz|? z)xAPKQNMg&K{(-PSYOb%nmD+voOpdfb+K@E9`W#!9^#J@-|FvFu9k(wuT@wP#U6M~ z^gX*>&tyJ^sCZOVw(EaNXHI^gOrp6@)K#JE_0kqM9JY@|Db2 zON^_0S(oaRgYQOK?bs#dvR>@dG_h;&Ilb`3>RHzrmb2@=nh>_+7IpH80h{1kt@TQY z+xMZI^ZIg!z4{&Tsh@Zu^#d=YcJ@MQPd9qC-;L|-|E}xJx-VnjOtkwfB8G9?Oks$8 z3_I~i>S>UZBn#6;d`z+VF+}~FH+3=f{~JX8D4$zIdoBG=>@N10c3YS(vd0uV-ifFe z)5Sxp{?hIGbE0LByZnjbi@%>W>z5NPQ z_$#u-Wo7-KBSpkROpkml2O`$fzeVhe*nj8D&JX!Wl7$pb7k9N)%>3ga=8t^L*9)<{ zXy5kq^RTxgT^w!pvH4A@oZ1KDZFtGv+5n&CIJ(gmSqrz8#I(7LoK zubK8Cy2EG}^1Tr4!+0-5yD;7h(JqYlLbPYcjAo{Nh-e2#%ooFim=A^tQ7?uGQQuQ7 zl1zPwsE;G+!7w4}!7w4}!7w4}+g6~gsSgqLaYQ{BCPY0LCPY0LCPaOW*Q=&JMAXL- z^aApHjA0q1Ghw$3i1QPUG#;W(9A|0VBed*~ zjlVQ*TK31rT`Het2gzIWG_>2QpY$yIN#4qr%46L}&_1e9UVq4^dZY4E`KUg~ZbXzP zdohf5Kz`;J?u|Hiiud0YRl6gU!1{w4^conDCY*l#c%%k70IhxO%!nBTTd4MUio+63F}uNC>l3gBbw zQF|j6(Jt$W-{5$c4*O^tTOv2A@&Ds9||w|ZkriTNbz+2UwU$#zM@O7tZ^ITvHiN1 zTcf|bsfEeMcBe35wAfaC_%E?|cleV%8}uDr(yr56;`<$X`#Gs5AMK?4x#M#TE?Li0*^ad1-SU-FA>P`_sQ;6STfCIV;FZY!La4hVlH!u2p_chZ?%mvn3| zvmQvmS1&_v7!8oPIS5<9KfMH>=;=@UPMJXVr(- zbw+%Y`d@jy;r-UU$C-$EQ<&Cy36Y;--k&+*{Ss4I=v-$+y%s;^I>dg0_w|2^s1MWS z7O^~5K2F5@JKAkwPV1`9b$%>ArbE46Xk7>CX8El8#d@^D@ymTA^ShH-vOi2W1iuk`%m?k89-jK}#kBK2o_E+Kh}$1s+Qkk=EX$9U9( z$e**&KGI9iS*Qp3^n65oS_h(fq;gPt_j(h?)AJMB;a+!gmy_0?2&o)YPHUZr)}dnM zAU$XwuD7Foi0&}jhkP$Y`!L=M(JqYlLbMO#y%6oe^?I}q5$)iJ`C^z5^T9A7>cuc2 z>cjPV)Q5=rIHDd56QUjr6QUjr6QVv`uSb1|sE;G+!7w4}!7w4}!7w4}!}WU9hlu(( zq8k0a{AFd^!}Fd^!}Fd^#0^?KBYi26999t;zr9t;zr z9t;zrK3uOyeTb-!BkI90A?m>}A?m>}A?m~RcGQRH4x@hLdm-k7@m`4eV!Rik9T@M0 zXb-NpqkV|(FxrKDFGRaA-V4z#jQ2vc3*)_z#xGj;LHp2F`lIpJIetN1gWV`Y;~v_F zVM4cFv=8G6Y5j@DS+o!132EHKaTdo%(now6?`T}Zc?yo7gfuQvxh#8Q>;IH5*@61- zeo5t}beJFVNe;twpWyc^x*w1{-DeOnJ=u+j_YJOx?mr}l@l-xa$L;6$39K`;2Z%X_ zc%vzU!mhvnnx8|yv2|d}PRfrE&B1ePUD#!u9S3iOu-E?yDb0;_{~PQ6)EBJ2WA&x$ z`;nAGKjr4L^zYut?4O5+vDqkbH(h)?4i zjpG!i@tMY3iYNVaAF$-o&3TAb|Jkow;PV{r`~6S%LC5wHW80*QSQyKkE@*u;JLKzl zD96`XX#F%hFIY?2xBNIi8-@VdJ4&j_aYmkLyQVj>5FA zv~Si6soe>w{RwHmKJDKpBz|`7iT%lIe?RfFYfns1zXKqo-vJP2*PfW({W}5reE_u! zk4JfT`_k_Q+`lKFFt!{2J%PI&DU9{Y+uyxzNcB%h^-t*4ew@$sBcJ!foZ2aNy~VCq zt}mx{id}D3`dHW+4{~a!*!5*wmODP8#DBKFO!FBx()Mm;zrEZs@L43)t0gKVRsn!%b;FF_dXqbK1042 zdhKH%KKbKOKlQ3_vH}M{v1N&^ZgaHUxyG|-rBbl zLy7GV!1lxaI$ntN$oKWc3*){3OpoZbFDtivtbgqHgtY&IFuQ$SSbvy~Bi0i>e|sUe z6ZT)Me?pYUa6H8NM!px~c!2R7Q7_7K#Ck+KbAzZ4<+4NUua;f$F{gUNcuenwSg#nL z9rAk5$sUYHc{gJI=uh%O%pcl+zMlr$1>?OCk0LaRUH2t)oQ!r1Rh zta`*b8rCcRAzHsP!Rs9L#Y3zwEJt>T_G7#kqJ6Yakr4Cd`xxE(oy>a;?0dp?M!WtS z%<1~Z+OYZ)`LWz#;^&N3|MI&3TYM}J%Ed!k4?ugceZ3IVd-ZdyZ(46aISgYzw61e3 zZEU?3`Dh2NgA!7Ip!E9ABf=L=k)^PFEt zF=Idm_7R#oO@tWNK0|jpXMP}W?oT8HeY8K3koGY$bgm=E)|aVl*{v&EGC9qUvFvoj zN^70D`52}@I(N#%_Cu2#Vr-u@?Mo#z^Je=~&9J%u67t%Z_q_foOwavp zbg!RM*u9QQ^-M_hPe|?Kg|z-k=zjl6PVGYLskFXINc^1Ih1OHu?@=LsPVGYLtAw<^ zO6b)teEk&P!{W8R`oC%&HFmxIch{d+Ke%!I{k!Xr)=vrD>!|K}c89&LH{#R!E1`QG zHmB>(y{_sG=XBlCdMdq7g^>6;U3av;N=WOggkINOZr4|>dlrtZ*7fk8tfN}v{gM!huO#``jsz(TL*A}b#A;rIFM!r0%e^8I_X${l~*1NHKFdJb`~ zr=p!G7jHcl=OOf5gZg6g4{Xot!`8aVf3}W_>uG3*7t;Et7vefVcI%q7eo2UJ$)6Lj z9{!tk%iOLh4tV@e7;70JjDKu@`xBui0y01$49T{`FMOR z7xJ@1uX1xf+JoVE=9im+rPe}dJ8b`1`@DDNFKBx6Q!q~bWJ(qbQ z)bB9UJ zN{@C}{Udf?;?K45?mzTAOLkK~B0fF0Vm!7VJ?~PO;;FunkL4gaEEncWcF=u?%1h6? z?sYnY3_=>W}0wp2|h}BVs(YAH|dX)Gug#(dye~ zzqb3fH&R(*<>9tb8FE@Dv(j)KbWZxSwB}I1B*)Ve50Uts7w`N!xoq>L>y41+ebg`M z`lj`5cbKkUT9>9Ut#{LPPe^>SoYK+tOGxYAvH2vXi1}?Oo~|cCS`Q~ges;eM0XhTL%tVcz8LR?Xa~l7 zA=;DO?{m-|j7R$r-C?u~`Cf>2VZ0ZjT^R3$XkT`}&q2E|9_>POhtV$Ndm-9|@m`2_ zVZ0aO_=58wv=j3tr1=YtKNyF9XeT1^(Jl-Vy3?Uu7*ELKF<-O`;|cK`$2ZIeFLWJ4r}S74 zm_9qi^j3Xc|NBg=FFvkgJz<#mSZ)k^A(ji{y%6ojcrQe|Fy0H%4jiA+E=070Bj$@? zLd*xlgs2z8gs2b4XViy?`Z%H<3=^Ur3=^Ur3=^V09G_7iBI@IadN53gdN53gdN53g z`fz+keH>9Qh6zz0h6zz0hTVvIk?)0=ACBLcA0q1Ki25;1i25;1hJ_Iz5M=eHc$z@{{r~W?9d3=ueILv90e)lOK%`l7hVTJ06se`N6F3O_Lv)aP!w0 z(5JhY@83cBn4j4C4mJ6G2`%~h@O@g$2ft%&A$_0vnPz!RKA~k#RrsBe^?hnWxQfj0 zR!dR=Q=ZT&Z~Zvmt+u{r&Hc!jza>8%>dftrx4v^t{wG4q9!YZho6vsz{+YtGwOg zd`BDW2fx$pd>;<#=ik?+{zQoNhV|&~SC~J3pPc#?p=EEZe_bE8`WcoN(^Eeqr2a-o z{f&^me@;mKj?hZ?zpww%chz&-52=4r|0BfuwZ6knh}Ti9Ut0Cb!&d*ysh?W)A&skqG_DfTxJr0qe9e9yaASPU-MAVXe_>vBtqRUf#1_D2@O$yC z4Cmo@wIED*?bVfg z*P~rOB701+00JZz9>BJ6kR0;O zd>JOfdAgUqz(;wEkKv8+?#6g`W4y!b0ssEpyZ{n7<|*#^i+%sNF`tC-FW&POj*B!_qMXDjymhO=%0<9?B2IIdf`GESQo2C3x0jW69;! zln-b=DM6B@GEySYMCm3;lPXAe0=-kpD+Q#xrOH4nO9iD8QZ?y*p!Z8fK`K$I4z#*d zQo2>T4^rF;hb9$~YJsLAaLADQPN@>mO42P-9jUHV4`@9}mqOA5QZmqFDM<>#qtk;x zACyw0holx#XP}*>_R_P`BT`GCEu~kaj?!~dBcP3>Hc~sOlk@`67o^9f$E3E>t3Y3s z8cVIEC!`KQJ4jumuF_Ld1E3A0XQZZ5H>o+$=2Cs>QR!*vHK4Ca&r7YO?$XOZUzVPf znn@2!F9Cf?>M8Y*UX&UFZ74O7dQ0P_4}pFtjg*EGLbJhCGHEh+M4>8f;# z?31rbKKUO>mNmJkEW=SqE+`j~%K$AS7ne)Ox5?#zmXohYiE=>xL)s>ND;)uPL^>pG zl(tL9fF6_1OFN|f(g~m^q@Sekq}|f5K!25fk@iZPrE@^fNxw;FrA^W$X{+>?bd$Ul zjvu6>k}BUUAC+#F4@=)mdF5+BuSq+lAEkV9e)&f!zkEU3B}sAtd6!f`J|LZxiphTY zq~w>6O9!P}<&yG2sieF|Iwh5s3(KdZ!t&43KB<)aC(u8oEz<8&1-Y#JyHr*_EnSon zDca%HJLx2vEhs(X>esWi!UFFy0D)L=&b)ePdpe*Fa%BgZspgrX$lNL>w%nsROVb;!9k9LbPF2YD#aq4ERr!}4IT;$b)*l^e=Ez>0=&GzN>h$bEqJ zk)M(0%3sM}0{v3{TwWwEmzM%vDld?i$x%5IXr{bGen*}le*p9Y`Ca*a`9paI&>8Yn z`6GFnJPYV7`D1y!JWrkvbiO=Eo+y7Ne*yFhd9wVTyiooW=%?~H2z?Dra zhL|aEya%Dhat6>0dA2-94$B5mL;ggbDMvtRCLB}bZ{(fw9-w>V)$$s7ulya*@8osz zdU?Nm25$KQdc6popgS-pqE_tQAO8!Y+A+H6xO5Ol; zt-J~726-#cO%U@Fob8a0$-CkIn7j}EkI4t%|CoFj{*TE=;r|#&lu!yOw<#syD5n%v zN-B2%y+f&_lu@cE)qz%5?o=u(HI=$R>nhchT1pWm1T>^1DM6*Ma<_6?z9Ro6pN8YO z{Ii^($jZ;Mto$nfCQC{lX4sjobzysC5u+Fj|ObXJ~H zo&oxd(pz~^c~q$fw4Tydc|dtYX$Z8T@{sbR(n4tlw3*UGd0u&0X%Do$(njf|^io~} z`kK;Jc~E&m831&E(qDO2c}(d8w2zXeyrgtfMgSe53{|=)EtSDQ2P>nMo=Q{YJ)rL? z6O_ivE6P})W0lEDYb8aQ1$373vGTC;f-(i@6y;OkJ_wpq;Fty48z^&u&V?MFfOM0A zPKKPHhCI`NrYY}2POX#~KxaU1?I8c5K!++*m5z}AXrQB&x52U=%6OpT!MZiddSxTf zjmj2ftFlSi0d$A5TiK;-SM~zktL#@kSH4n~09~SdsVr79lnBs>^0l%|i7MX!{YJ@D zzEBn_8-Q+5)+!5>rOLNJzg5;Li2M<9Fq>a=&_ydRn`y-1G%49E-AOEA;>4BUQzy0lE8|8 zlyYFlP3qlX#Z7SJ1B-4~?*n?D8c@^J!Rk<;L)8)LX!UJ%9MEyi_|aFA!<6%boDEBm^xFP4s^OYQXQjyrp^I6M;)uauTE0O10An^q&}^- zRi6R+jM`9bul82^0qv)DReP!})z&~;s{_?8Y7_M_ppU5?)koFFYEz(1)hEHxJr(Ee&4^>MYC`Xbd)+leM5a-od$H8`k~rfeNBB2=zHqNY6tZZbw1Gf>O8fP`ieRW=qz;s za32TFkH9e>v_GjX1iBD%Xa?y%2Kq7N{2b&t9O!U$D&+K%Iv40%$gLCP{}#}<)Y)ox z$bSOR3F^CG+3V_Lpp(J6PQHG=-o8$7boKS|rTX3g`i8HkFWooHHw5Sq-$368-`l=1 zK*#uo`rh%q=bH$0qVFx=WM3CwH=x~oQ+zXhU-&);`nm5@-yGj(zGXm{`4;;Y`j+~l zK%>44U#8FStpU2mx5~HLx6Zc>=r-R*-yYw0z6C%R_&)K?_09M7f}=aoCBAvS9zc8e zUiU?OU;73C9pD@6Tkl)p8x6;sK)>~E^-Y3f0?;kKwZ8Fii~{FBmpr?F4`hNFa@|_2I-uJ8T58pq&zkvSbyXcd&yxL8g z1jpY#O*`m20`!RQ7VTE;HmwxUQd%*ss8&*|2(+SBK`W=-q1_AgUagXLw^muJ1+!5S~abX))r`6?Ro7bt+)0X(ATui+6Le2+Dc!lHcA_+rNS{-8?C*kO$0ho8?TMk zCTY`wPS>VtA8FIH*+6G&Gqkzd0_{tnUuvIei?y(p0W?EfrY+HyYb$}S)K+M#v<=#N zpzF1D+GcH+wiD=1ZM)W2JE|Q9dRW`1{j8nUegpcOc1r7~{h?h1dQtmPyQ2NAjRZPU zOV~oJEE2J=l37c^83Hn&S|CmCH&{K z68;~wyR@p>b6TRmqW=zmA{-U`clq=9w`+I7aj*YA|Gj|s!Ld_&Myuhk>VHP7>VHzJ z?ysj61X@sQsuj?RXisa2+C5rJpe?o9{$#)IzZ2-4{<8i;{!0GJKr8zT`s?`%fWCTg z+~+T>mDlP3t>b@6d(hv&zX0e0ZH~5IYvyn4->)_HH}pT@Z{lwQw2l8c|Fiy9{uhA0 z;BTkBptbXN@V}sS@VC|q_+RzE0(xKZAJh(Lo&8Py2ehXCJz96*7w~t7qn^J@pkJVO zpbH$`0^I|B0)v1K3cL{*5EvX71$0#4&A^br$iR4@;{#&?qXXjteS!83bPl{8ct7wi z(02np1HA$h10MnXD3BIN4@?bw4D{o`h`{i`^uQ-TKMA}O7#o-!cn|1%f&PKXfzJYS zfzAy~2uuph3CssNKQJZmVc^TaS3tiCObg5iEC?(Dx+pL!Ff*_?@Hx=W10MwD1-=d} z1-dlwDWqHySPpbKr2Zn15eNef2Npug%s>Qa1X3>!L<7r!E`!ux2fhic0J;KFF9{fd zRX|rk>WskZz*?YdA$4Y8O<*0+b&xt5SRYskbS0$zCa^K^EzoZvwGr45*bHC(n*c#XlbUUP8AJ`Gt1auRm-Wb>&*adVKq}~wN8Q2SSFQncQ*caFjbU&ot z8u%`70O$coy(4fium|WKNWDAoL*RR$-$Ux1fkS~`fc^rh_XUmxP5?atslN-H4*UxA zS4e#@a3*jR=ut@hQ{YnI9ME%t!+|4#^MOBs{u%f=a6Ir=KuS0c$H~B{z_oyya0-s! z1HT27go{8g27V0u5%4ACP52{_H{n9yY#>jw{BH0iEPO;rrP)(f^VEXWvKuGrqIF zss0)Mv%VSr%f2hVkNva!SA4Vl*L<=z+y9wg);{y+)BM^3|75>ko9sX2o9TbwKi@wS zj!*p``akhc13JzBu78UEJ^yt7JpW?0hXA@V}ug)ZWn6_&aGE{fo3t+9K_1t&i40TMBfkW@yK>OIk0Wy|k!y zLA$IS2YOsPsr{*y@t+5JUOS-`|NlC)3vj88h6}*Jj%AZcMuNM$ySux)ySrO)w?dIp zio3g0tVoNyTXBa%arn>oKY7lZP4=El?%mzlskn*U&+v0}Xf&=nI64dti~4S1H;x;? zz#S3I;D&AiHv^Ky6>dh%h5||H{)k3h4!N7$Jri}^m@uY$BziG=I(ir$#w%A5`~P_~ zIyqV|S|K_SPK-{C=635wr@?8_dC}}{E_W`R8(kF5>Mo9MbF;eJ++xw<(e3U!w|I1& z>qJ>}rCZu%(b8_AXv=89XeqZPvMO57Z5mwxS47uEXF8|c1MW=cfP2C@?_74zyXT$r z?i}Z|d)K|`o<yPu&bYIkxz0uRl{?pY<#u*Hx-Z;w?nmUL``Z2FzJu@F zXYO0~x%=Kd>;B{3hPT}l?izQOy9sV`m%D4Cm)x_?n&?@lj{D86;MRxr-5A~lhk3DJ zEU$sP&}kLz6kX_aiaOpoXMrQ2@QBwldO7Mt-|H5=8m;Jlb+1Ohy3%VOUF0lt{&L$! zH^EKL9;biwn0vrE=I(S3IPIcKoy|@$w~#wBS_~Nzjkqz~6mA4b818Ec-de!FQb>)%i-mR`MsQ8Zm)n>92WNqdnLUxUNV@>i|tkN>U*_eZLg|V&ui{A zhK;>iUK6ja*Alk$8hY)#Ze9o2!E5Dp_xgIhU@xzeH`J@_RfpBR;a&|du~!924jXuB zy@W8KSJP|ZW%bg-^j;&cvzO0njbw*?yn#jCTT_@D6#Wyi49$c-H&NyX@WeuEA^GIq#15(EA7e<6ZY& zczeA4aKHE3JLpaFrobuQUhlX!%bNfvcn7@m-h6Kkoa6oN-SAd;3*kcVg7?5%?QMV? zynEhVZ@sr1F88i_`@EmM?QpyI(tG9Y@V3IO-gECiFQ)tqKYMSyTV7N~etjm#iNN7EqVqgiE6ITOx|&W`4i`Q-w*AUZvoM;4IF;4-WVi^`I6 zJzS4fVR>0u?t;6pDy$%@%Y*PBR)sZW9eE5Mi~bd@FPq55vOZE*#*>|7Ti8}Mm)&JA z`6}8Sc@vEX2{KBq!u>RXO>pk5_sLri z*UQy%qx|9R@;1s{-ZO8f_uV_YeIA~!^LBW2yr^0@p{c18}$zvKmZ3Z9Zjo@e|HuazX9k>s^I3zuLGB=?8U8U{^+F0f0`DQF(F4!Xjw zLFb@lP&;S`+Xdaw=n(XRy@Kv&bPRgK-a$_^x&-}Tzn~8qU4#Cxf6y0=c0mu=BN%{2 zuV4rq5)4G6cQ6zV4F;ppFBlGo2S1_FKNtZ=1jEqi5e$NZf{|zp3C6*3!6-C_2IJxQ zU@RKLgUN7mFaeDb!4xr&f>ptOxIfqvtPVB=hv1>$k6>M}AlL{u1_y&J z!H(c>_;>JUur=5joP;NXD_*s6CSEY+HSCP+n$3KuU z{9VX5JbH&`A0RRORe0tbK6~F}#E*e-8D#!5JX(b_jS=RL^u~KW^!=zm)|=sJsD0_r z^nUZ=z&O73fA^Mn319+0uD{G%=Ou&5{Dl4%Z?xw^*H7)o^Ar0iU<%*yJwNb682a&j z{ zv*cu%5oVNW(6a?30*i~QiNmHA{2xfc1?+aL?dymAAwMy``jytMv0 znbt2PpL(0Tl>SpBoxjF=?Cq6nkR(2n#pNE!kVoEGSy~p8XOUR4kk`-4>K8)t`GdR? zUU695FXZRyP{Ky@*uwTNz5AVB=+|WzlmG?uWv>(q)NcC`DOhIepOi2ujN5l$T9lh`me(Ig&8ME;A!L!LyoMs`Nd!E=$5ksXoUkxTGWVER zhLX`_JZS}6k-8))NlA*qVx%BRLDG;?uoNju(vgg$JS%Z;q%7%9+QaswB&kUHlb*0ADMzxCA!HaF zMyir(WH=cB2armn2x&pa!EvM(sX@k)k#Ho*OZJeP-)dkU1YygYFVzDW33LDH4v83!b_!}F}&X5~q7d?aQrbo#Ea)BI0E)v2xo52V& zjUC4EC2|<~i#W_>vzdd;Wbs)NHWH3xzp|^i&KYtQnM&5<3g_W@G7HTMcytk&jQ+*{ zcQQFiGLWStGl|3Eu?Z{=GKoDQ&vA_>$W^kF?xHu~4V+s}Zj;CGF_}Ofk-H=bOhWRL z#N-Z1PSTQBWD#6M(i6>Mvx!V2UD+&*{v6{!#}#+bo%A_;j&rHVJ@OL1B&kUj{GC>_ zEXYc>pKKx@$$sQL*-X}um~=DpiL55S5JFcYG3X4kn0zHO5K7PE_lm+O<@5sigS^A> zI~;ALJ8*U@!l|T&ri1BdN~&pWngM2@X=ogpfM$hRX+|2KCZ;)H4w{7~p*~FoQ_);B zIZaLT!n`y$O-nP;{4hVwN7K{Hv=A&r3(#ydCoKYt(1J8OO+oX(JhU(xd1-N2oEAkR zKP?GM(h_JCqGeziS_+LKv>Yr)OQVs87K6oTSu~2%im)Ork48ya8CIs1&?rNz!D_S$ z8s%sWSc6tYqZq9KE70m_RHU_GZCVqJ%Cs)5OY5LfjW&P{XgxG)&_=Kkt&c_pS_{^q z4biAgo5H5FF&cGgbJ(0VL!$w01zXV;Xf&d2U>n*Jjasw`Y(iV3(Ui7_?P*&yn$wQ3 zBkh1jE7}Eip`FlZL%YFlv@;q_Xgk=Bc15E-?FoC*?r3zRyG}_S~um|mrMo&5n4x@w7=uJn$k#r~;{pc7thK@jE0G$9Q(6MOrphMsgI*AUX zKhf!MI-Np?(@}I5oJD`3qv?1$56+`==r}r=E`$r|Tsn~sqEq2iI-gFXGw2Gqf-a>q z>1?_huBI#Luk?4i0dAmc=x=lp-2%7J^>hLKnJ$CN=w^J%chQ?_V>4I;0V~2k+6Fv;k>H9>53mE^R}) zkjL;by-&N5KI9pEMxW4r?K{rma|OkU%Ct~V~be^mYFSqOV~p8nSP{)BcGA&Xn5;bn4~Od&4j$|;yN zPvP+f65w%w+1xOnZ6pSnL!Oe@EM!kf$Yzu4BpznN>zEgxkpwI*y9Te3pUF9r81w8o z5}!>YduURYknN!f*;%rWq`>R953l4Nx{{=2$=FJgjO`_pNP3ovO(Ln-3i6O-#CO9( zl8#Lz4@f?enLR)!4;%_vaWW$^|9kXK&vWjHK9JvZ-rjvji ziF}{|`9Slr9;39S6s;^(-eV#5Tf>tT%fcc^N4K%dq0?dE|4XJS@*j zvyYJ&q!O&e%CT5PkgBjMtIVRrkUTICtH$D!r;!q{1S`U-v%IV@EX<0sVyq;q04uO6 ztSqa@O0fbgH(LwWvJLDleMMKm6>KTK1y_;3BH7trkzA|}Ysc1-I>=UXEV7QYW5*)x zSZlT=(ty>5wb^et-Dh7dn3Ex zuE>0{jqJyx{gJ)!cbwTC>CQSb$+{z!&1K{98qP%$uzqX|`;YcRzR-cJKl=*5((iOC zn~e9-R3yS?v7Z@(j73==e1m6)*;y|3fIVZc;cNCUd%`}jukb5-$=&gyvzP%f3bhq33!5SVdvOM_6ELTuh>O)mc4*4*cW!0ooAomCl-@m zXIEGRM!3TdvD-{T&3%4{-C$7|<%XYP_gQ=xpTA}I*l`x}dq_N9lh@}>U=!Y)*X6Bw z2iSo(;w^bc-VJu+?RaP2llO=Hc@N&359Y(*Fg}2fl3o}Opm<#T)K3<&{fCYFGUW^yyO<_~sn3v>5 zc|+Kcx96pKao!fT}&PnU^#7Z!&vxsGIvO25rKFaD~Md*AL1K1$;RSaU^#SbwU zE5RRP3XAC^a7JMMPvHE{$CSfHQ+nK=PI*-u4#vdV1`3~_E`yIHaonk2;#~g?nH^8ffgWCP#GKky&$2Vcck^6xyBScy#MKl6zA3_tUQxGEI_ z*A?O%elsE7!nb@c-y$f^Zb7ySPoxlOU>c!BAX15RFrBa>6zN4~m|4UVaYZJP4Q3Mw zMIw(XJz!i59R0+I2;9(F(RgyS`{C8p4KXHxg|` zTi6!uCZe5a58I>NOmq;PU?;Sji;kiT?1FYn(OI;HtDrTP5dg>iOq1cSRj5Eo5W(cSWFSS#4gM^yTo;T zvXWp17=}4u7)$Ql;eUud;tt<~XP)tc;t%l*XYTR&{7-RE%*UA*{1rbY{uZzJ-}n@K zhJRxJr&xq{`YCZ%;8P~HU^^?0!DINj9pVC>*@0}wRriR?@G@qbop^KsUchs;_ziIv z-W3gaJ$^^r7xnmk(T2C;|At&_p|ho^Tk!Awpbo{ML6-iloOtr)=v@)shDGmvL- zvh!&?8)n97NLFVBj{av>Cz~UAUgy1#{Jl8Lj_YRSvlt;`;V1%DmwqMiq3ZygI98@I5Bt?hjGEH zI=LOeb32O1<%ON%PF!BxdCaOgMVvxTH6)Ky)T!*0hvl6TP8p}9Q^CpaY`{t|zq6L* za^8rgYz2EGR)~=eyZH_8Z^I zcCa4IIG)pkc}^#+1LHe!oVhHHGoJNjpT&QoFZ)l7W&_zb@kI<|UqpYb17kTcoT)5^ zGa2hZ$05!vMx5zb2j;}zybpeZHLND<9PJUU$$CVavM;2nTf_ZAYPkQAShR^-#f?R) zxSvUcHgg-f5!%T8LB5f;ZcFzYY3VZR(hhDH*QH%tK|he1ZYTEx>EwFUp3H`7JwqqD zQ`|FjihGG(qto5q?ls!m{exbnQ{A84%k*dWDy`3cxDl^Di+CMadlu8+_MBDhceD}wr$M0=-+-@tG0H1O*=ZJZW< zBfpK)$ZzM=bdt-~eod#f-@s|;wDFty4V`9wYp1!>)=watI|*cCr>;}q@8H*UI`}Oe zMZ5UjeMP(bmWH&4Kg18|5I-J`O9%U-{J3erG=^?d%71 zIgKAA4wloz!4kTPCJW*Rt8ivHT}M*|$%1t_vx;t{X@iu(Mw&8MOBd5bLAqcuO&4sU zTI3J12U=tgq=+L*1Of>LgV-X8s1Z~Ml86dH0^y4sLG{2F)q})h zp|~2{3Koi6!7{N_+zjppOU2z_rC15?V}CzbBi4!s!Q)`9cpPjH8^x30TCh=E3l@nN z!J8nqdVy&5I`}t;3*)L#y$k*e62Js1p861c3KGM_Dxvxud<~MpWGadJ7Q|4gU@Dbd z{Rko|EljIYs#uDt3^0RAqo@)p6U?O2D@VC1E6l1gD^CR~C(Nm`DPO$|3^Xc-dKEkm za;dk$EBHQm3qJ<$;g{ee{2qLPF|p632==)Y$3B;eVxLP%>~pE-frLs~l^clzv#9JaJFbyi*jM#Zl~px05DrxRR8>_|4S_?{098ZPQN!RcHCWYF z_0$MBLj9!btA=Vc9IZyGMyi>b04Jz1s;SDaTEdoUyeg>jswt|7DxfB-5~`S*s>-U8 zYMQF3%BV@IimIR{s_NKJRJE|5sOn-rQ8mDRqH2u&M3qN1!B4hQ?bIyQR&`V}ReRN0 z%}`xb5A}=cuKK9ys<-N|entktL24)*s)obiY7`u$#=>!`Iev1E+N%!018Sc7P3>2Q z;2||%El`Km5qLx`Qj675bsQd7OVu*p1$cild*Y7b>1k zs9&gr`n7ta66vJ+jY_KDsrM?GPO0Ckl=`Fkq*Cd$`jbklzp5`Pjn1IIs0{jt`mWOJ z%=){^tYhhzI+M-{vudKL&Zcv~9GYvPbLzY>ulBU7^XLEu`hj|+3hIBal`g46ZFLD9SI5@H zbbOsa7uQL2VqH|H(8+ZXof=yaoeo=*4Nc_ z8C_mCgUxh3T~1ffZD1SSR9DoMbZ6LEx7C$(72ON=(p_{_U0THIMI8zVRKj~R|9-OC#>EZf!y%a9hBlQTq zM6ZUc^(Z}BuhHY+I6X*D)?@T9*v9DJu#M4+v5nEIu#M3hv5mn`{H-tQbMTx#tuN^t z`YODt&+F^@uD%6t=_~r4KB3RRGy1kZt1swl@S47(H|cG958R`7>Ro!TJ_HZx{rV4m zP#=TG^q=~OKCZXJ?RvA`q5sl{;bFZ`@79;~DR@e6)d%!V934P*>!bP~934dt=q>sr zj}i&pJT<)4~w* z5I)o|^aK4wzlN{%bN#P=uRp<0`kRhnB8Hn7h--XfOl%n2#50d{Vv`IeGjH@4ozf&Q zUvvWVQadKS$z&YF8fCJYG%$_%uH%}#rl5(7eAMrB5tGxr(>aYau}m3L9+o%v^;2ER z6gN+GaYJ!b-Xw;JF~&<=xiYR@**w#4Fk%smSp@wLx`0V(K4A1O`nyhJN@JYTCZ=Jg z1nz<%j`2(m+=YiI+)*Zz2j($xOhS{&)Pl84HIv*VF^ym&Q_rL|*-UHL+B7$rO$O5$ zb~f!zZd1(khP_R9Q`qD;gW+J)-;^>{%`iC3j4~BXIWq}PGUH4YlgQM7HOx;Ysi|Pb z!m*}_No@+5ez2dZV~Uy-rU7hVdYO!-q!|fEnl7fSNoQKX7G|Q!XR??Mu!9+7vYT9{ z8|-G~RpyZS$2@|M%o4M}JT_GP5j;@${@SZtnV%zvOk&TTcwaIK^n-Zq9X>4kn!lr}iY(|^Ornd=T z0vpFBv>9wFn93%xUrod^$ZQNtY}869E&f%34XlC2dREzQCMJw&t&L@c^`UP=OYIL6 z55}{}t&9EtOm5R!js5>jYct#LM*qK=ZCpFoF1L%}VmsfivfJz?xXG@wd+l-iC;ZbM zuxIU6dl6o=C+!8h($0hP>hc1Y<^qD7J`Lr z4qM(fv`t_WTg%qB#cU~9%C@vMY+joUX0ugnR-4BbfCX$$TiBMhC1FWh)K;*yZFN}P zR<`wQ3)>VnwT*0cThMlZ9c)`$+UB#ZU@P0%*0hanAK1tCv<+-I+YNTJ{cUqw!j6KY z>@Zuz*0qD-U^~`UvRUkOINeUQxolNC0Zy z3@_WC?QHv({SE$R+t~JYg*^w)*%`L0U0@HwgLbqXXZP79aEa|?d)poM6g*`o*=hEY zT?5zH9(K4rVz02}jU)&YhsnZ}FlCq~%ot`3bHbcqp0Gez zBrFb#ho!?}VeHUA6P60&g}K8VFh`g$OcE9j^TYgM@-Rb~HcSOmg;~M}_N{$vA0W5v zd&|RU_})gt7$FUx+t>I<)7Lf#zuSN84f`GWY_HpU_91*|Z`&vKU;7Havd`>)HfHz@ zezTt}3H{Iw2_nLq_K}SP@a(n zIecm(VS1Q8%oTpL*KAQ(G%OU}v0rRnm^UmDUb8o?g*Gf2-nVycNmw#e;UoLh=7PDx zIN=NX#>R*7!)zGogDnUPVzjUJhfNBThWWx+7(X>k9i|JN&>PFrdxd>r-*7-!J{%ejhr`2~VdHRAI0z03 ztA!oI3E^ZoIqV(w2&aW(;n=WQ*gu>T&V%#924S6WLHG;&CF~lu3Ri@y;p(tVSSef= zE{2Q4wm4di5y~Ltan(WLdbmEUjM0XpT@$Gj)(?Nf$n}xN7-4L<94-%AhV8;7xQlj3 Y$FNH{19#B{>47_%9L|Qb!+zoa0dB5ZD*ylh literal 0 HcmV?d00001 diff --git a/homes/assets/starter_motorcoach.glb.import b/homes/assets/starter_motorcoach.glb.import new file mode 100644 index 0000000..5cba35b --- /dev/null +++ b/homes/assets/starter_motorcoach.glb.import @@ -0,0 +1,45 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bhph22caipcj6" +path="res://.godot/imported/starter_motorcoach.glb-153681ef1e622a556fba4df576dc6f84.scn" + +[deps] + +source_file="res://homes/assets/starter_motorcoach.glb" +dest_files=["res://.godot/imported/starter_motorcoach.glb-153681ef1e622a556fba4df576dc6f84.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 +gltf/texture_map_mode=1 diff --git a/homes/home_world_service.gd b/homes/home_world_service.gd index 4e1b422..baec913 100644 --- a/homes/home_world_service.gd +++ b/homes/home_world_service.gd @@ -6,10 +6,13 @@ const NetworkHomeProtocolType = preload( ) const PlayerHomeStateType = preload("res://homes/player_home_state.gd") const DecorCatalogType = preload("res://homes/decor_catalog.gd") +const STARTER_MOTORCOACH_SCENE: PackedScene = preload( + "res://homes/assets/starter_motorcoach.glb" +) const EXTERIOR_BODY_SIZE := Vector3(5.6, 2.5, 2.35) -const EXTERIOR_DOOR_LOCAL := Vector3(-1.45, 0.85, 1.48) -const EXTERIOR_SPAWN_LOCAL := Vector3(-1.45, 0.25, 2.45) +const EXTERIOR_DOOR_LOCAL := Vector3(-0.2, 0.85, 1.48) +const EXTERIOR_SPAWN_LOCAL := Vector3(-0.2, 0.25, 2.45) const EXTERIOR_INTERACTION_DISTANCE: float = 2.7 const INTERIOR_EXIT_DISTANCE: float = 2.1 const INTERIOR_ORIGIN := Vector3(1000.0, 300.0, 1000.0) @@ -819,9 +822,18 @@ func _build_exterior( root.name = "RV_%s" % fingerprint.left(8) _exteriors_root.add_child(root) root.global_transform = world_transform - _add_box( - root, "Body", EXTERIOR_BODY_SIZE, Vector3(0.0, 1.35, 0.0), - Color("d8d2bd"), true, + if not _dedicated_runtime: + var motorcoach: Node3D = STARTER_MOTORCOACH_SCENE.instantiate() as Node3D + if motorcoach != null: + motorcoach.name = "StarterMotorcoach" + root.add_child(motorcoach) + else: + push_error("The starter motorcoach exterior could not be instantiated.") + _add_box_collision( + root, + "Body", + EXTERIOR_BODY_SIZE, + Vector3(0.0, 1.35, 0.0), ) root.visible = not _dedicated_runtime return root @@ -986,19 +998,28 @@ func _add_box( mesh_instance.position = position parent.add_child(mesh_instance) if with_collision: - var body := StaticBody3D.new() - body.name = "%sCollision" % node_name - body.position = position - var collision := CollisionShape3D.new() - var shape := BoxShape3D.new() - shape.size = size - collision.shape = shape - body.add_child(collision) - parent.add_child(body) - return body + return _add_box_collision(parent, node_name, size, position) return null +func _add_box_collision( + parent: Node3D, + node_name: String, + size: Vector3, + position: Vector3, +) -> StaticBody3D: + var body := StaticBody3D.new() + body.name = "%sCollision" % node_name + body.position = position + var collision := CollisionShape3D.new() + var shape := BoxShape3D.new() + shape.size = size + collision.shape = shape + body.add_child(collision) + parent.add_child(body) + return body + + func _spawn_decor_poof( owner_fingerprint: String, instance_id: String, From ee992d9f0c822856a0f8e619a521896110b5b301 Mon Sep 17 00:00:00 2001 From: Voyager Date: Mon, 31 Aug 2026 00:52:31 -0400 Subject: [PATCH 84/90] Restore public discovery default after patron build --- project.godot | 2 +- scripts/build_portmaster.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/project.godot b/project.godot index 23fdd1e..8e751aa 100644 --- a/project.godot +++ b/project.godot @@ -260,7 +260,7 @@ alternate_fishing={ [network] -discovery/base_url="https://discovery.straywild.io/patron-test" +discovery/base_url="https://discovery.straywild.io" [physics] diff --git a/scripts/build_portmaster.sh b/scripts/build_portmaster.sh index a40e0cd..2d9dcbb 100755 --- a/scripts/build_portmaster.sh +++ b/scripts/build_portmaster.sh @@ -236,7 +236,7 @@ unzip -tq "${ARCHIVE}" >/dev/null readonly TOP_LEVELS="$( unzip -Z1 "${ARCHIVE}" | cut -d/ -f1 | sort -u )" -readonly EXPECTED_TOP_LEVELS="$(printf '%s\n' straywild.sh straywild)" +readonly EXPECTED_TOP_LEVELS="$(printf '%s\n' straywild straywild.sh)" if [[ "${TOP_LEVELS}" != "${EXPECTED_TOP_LEVELS}" ]]; then echo "Unexpected PortMaster archive roots:" >&2 printf '%s\n' "${TOP_LEVELS}" >&2 From 6578d3e8701fa38d0c91bdacf8543ca4e9cd1ec6 Mon Sep 17 00:00:00 2001 From: Voyager Date: Mon, 31 Aug 2026 05:48:36 -0400 Subject: [PATCH 85/90] Add transactional RV decor synchronization --- homes/home_decor_controller.gd | 58 +++- homes/home_world_service.gd | 15 +- main/main.gd | 31 +- network/network_home_protocol.gd | 14 +- network/network_home_service.gd | 492 +++++++++++++++++++++++++++++-- network/network_session.gd | 70 +++++ player/player.gd | 31 ++ 7 files changed, 663 insertions(+), 48 deletions(-) diff --git a/homes/home_decor_controller.gd b/homes/home_decor_controller.gd index 1a97a5d..8f9aa5f 100644 --- a/homes/home_decor_controller.gd +++ b/homes/home_decor_controller.gd @@ -47,6 +47,12 @@ func setup( _on_local_space_changed ): _network_home.local_space_changed.connect(_on_local_space_changed) + if not _network_home.local_manifest_rejected.is_connected( + _on_local_manifest_rejected + ): + _network_home.local_manifest_rejected.connect( + _on_local_manifest_rejected + ) if not _home_state.changed.is_connected(_on_home_changed): _home_state.changed.connect(_on_home_changed) if not _toolbar.placement_mode_requested.is_connected( @@ -84,7 +90,13 @@ func _input(event: InputEvent) -> void: and pointer_button.button_index == MOUSE_BUTTON_LEFT and not pointer_button.pressed ): - _finish_drag() + # A gameplay menu can take ownership between the press and release. Do + # not let that release finalize decor behind the menu; preserve the + # original transform instead. + if _can_decorate(): + _finish_drag() + else: + _cancel_drag() get_viewport().set_input_as_handled() @@ -120,14 +132,17 @@ func _unhandled_input(event: InputEvent) -> void: func _process(delta: float) -> void: if _drag_instance_id.is_empty(): return + # Menus and other gameplay input handoffs must cancel an active drag before + # evaluating a held/released pointer. This prevents a same-frame TAB press + # followed by left-button release from committing a move behind the UI. + if not _can_decorate(): + _cancel_drag() + return if not Input.is_mouse_button_pressed(MOUSE_BUTTON_LEFT): _finish_drag() return if not _drag_target_valid: return - if not _can_decorate(): - _cancel_drag() - return var current: Dictionary = _home_world.get_decor_preview_transform( _drag_owner_fingerprint, _drag_instance_id ) @@ -146,6 +161,9 @@ func _process(delta: float) -> void: func _begin_drag(screen_position: Vector2) -> bool: + if _network_home.has_pending_local_decor_mutation(): + _toolbar.report_status("waiting for the previous decor update") + return false var owner_fingerprint: String = ( _network_home.get_local_home_owner_fingerprint() ) @@ -331,22 +349,34 @@ static func _placement_position(placement: Dictionary) -> Vector3: func _place_carried_decor(decor_id: StringName) -> void: + if _network_home.has_pending_local_decor_mutation(): + _toolbar.report_status("waiting for the previous decor update") + return var owner_fingerprint: String = ( _network_home.get_local_home_owner_fingerprint() ) - var forward: Vector3 = -_player.global_basis.z - forward.y = 0.0 - forward = forward.normalized() + # RV transitions keep the gameplay root axis-aligned so its transform can be + # synchronized independently from the presentation. Use the visual facing + # direction instead; otherwise carried decor is always placed along world -Z + # instead of in front of the character the player sees. + var forward: Vector3 = _player.get_facing_direction() var global_position: Vector3 = _player.global_position + forward * 1.45 var local_position: Vector3 = _home_world.interior_global_to_local( owner_fingerprint, global_position ) + var placement_yaw: float = atan2(-forward.x, -forward.z) var instance_id: String = _network_home.place_local_decor( - decor_id, local_position, _player.global_rotation.y, _mode + decor_id, local_position, placement_yaw, _mode ) if instance_id.is_empty(): _toolbar.report_status("make room in front of you to place this decor") return + # A local host can reject its own optimistic manifest synchronously. Do not + # claim success after that rollback or leave the player looking for decor that + # was never accepted into the room. + if _home_state.get_placement(instance_id).is_empty(): + _toolbar.report_status("decor placement was not accepted") + return _select_instance(instance_id) _toolbar.report_status("decor placed") @@ -366,6 +396,9 @@ func _select_instance(instance_id: String) -> void: func _rotate_selected() -> void: if not _can_decorate() or _selected_instance_id.is_empty(): return + if _network_home.has_pending_local_decor_mutation(): + _toolbar.report_status("waiting for the previous decor update") + return var placement: Dictionary = _home_state.get_placement( _selected_instance_id ) @@ -392,6 +425,9 @@ func _rotate_selected() -> void: func _store_selected() -> void: if _selected_instance_id.is_empty(): return + if _network_home.has_pending_local_decor_mutation(): + _toolbar.report_status("waiting for the previous decor update") + return if _network_home.remove_local_decor(_selected_instance_id): _clear_selection() _toolbar.report_status("decor packed into storage") @@ -418,6 +454,12 @@ func _on_local_space_changed( _refresh_toolbar() +func _on_local_manifest_rejected(message: String) -> void: + _clear_selection() + if _toolbar != null and _toolbar.visible: + _toolbar.report_status(message) + + func _on_home_changed() -> void: if ( not _selected_instance_id.is_empty() diff --git a/homes/home_world_service.gd b/homes/home_world_service.gd index baec913..fd02d93 100644 --- a/homes/home_world_service.gd +++ b/homes/home_world_service.gd @@ -17,6 +17,7 @@ const EXTERIOR_INTERACTION_DISTANCE: float = 2.7 const INTERIOR_EXIT_DISTANCE: float = 2.1 const INTERIOR_ORIGIN := Vector3(1000.0, 300.0, 1000.0) const INTERIOR_SPACING: float = 14.0 +const INTERIOR_MAX_SPAWN_SLOTS: int = 64 const INTERIOR_FLOOR_SIZE := Vector3(8.0, 0.18, 4.5) const INTERIOR_WALL_HEIGHT: float = 2.7 const MIN_EXTERIOR_TRIANGLE_AREA: float = 1.0 @@ -461,13 +462,17 @@ func get_interior_spawn_transform( visitor_offset: int = 0, ) -> Transform3D: var anchor: Vector3 = get_interior_anchor(owner_fingerprint) - var result := Transform3D(Basis.IDENTITY, anchor) - result.origin += Vector3( - -1.0 + float(posmod(visitor_offset, 4)) * 0.65, + # `visitor_offset` is allocated by the host as a compact room-local slot. + # Keep it bounded as a last line of defense if a future caller accidentally + # supplies an engine peer ID instead of a slot. + var visitor_slot: int = posmod(visitor_offset, INTERIOR_MAX_SPAWN_SLOTS) + # Build the origin as a value rather than mutating Transform3D.origin. + var spawn_origin: Vector3 = anchor + Vector3( + -1.0 + float(posmod(visitor_slot, 4)) * 0.65, 0.25, - 0.4 + float(floori(float(visitor_offset) / 4.0)) * 0.55, + 0.4 + float(floori(float(visitor_slot) / 4.0)) * 0.55, ) - return result + return Transform3D(Basis.IDENTITY, spawn_origin) func get_interior_anchor(owner_fingerprint: String) -> Vector3: diff --git a/main/main.gd b/main/main.gd index 8335c69..00d2b40 100644 --- a/main/main.gd +++ b/main/main.gd @@ -1731,12 +1731,14 @@ func _process(delta: float) -> void: func _apply_runtime_settings(settings: PlayerSettingsType) -> void: if settings == null: return - var requested_window_mode: DisplayServer.WindowMode = ( - DisplayServer.WINDOW_MODE_FULLSCREEN - if settings.fullscreen_enabled - else DisplayServer.WINDOW_MODE_WINDOWED + var current_window_mode: DisplayServer.WindowMode = ( + DisplayServer.window_get_mode() ) - if DisplayServer.window_get_mode() != requested_window_mode: + var requested_window_mode: DisplayServer.WindowMode = resolve_window_mode( + settings.fullscreen_enabled, + current_window_mode, + ) + if current_window_mode != requested_window_mode: DisplayServer.window_set_mode(requested_window_mode) _apply_world_pixelation(settings.world_pixel_size) _ui_pixelation.set_pixel_size(settings.ui_pixel_size) @@ -1763,6 +1765,25 @@ func _apply_runtime_settings(settings: PlayerSettingsType) -> void: ) +static func resolve_window_mode( + fullscreen_enabled: bool, + current_mode: DisplayServer.WindowMode, +) -> DisplayServer.WindowMode: + var is_fullscreen: bool = current_mode in [ + DisplayServer.WINDOW_MODE_FULLSCREEN, + DisplayServer.WINDOW_MODE_EXCLUSIVE_FULLSCREEN, + ] + if fullscreen_enabled: + return ( + current_mode + if is_fullscreen + else DisplayServer.WINDOW_MODE_FULLSCREEN + ) + if is_fullscreen: + return DisplayServer.WINDOW_MODE_WINDOWED + return current_mode + + func _apply_world_pixelation(pixel_size: int) -> void: var root_viewport: Viewport = get_viewport() root_viewport.scaling_3d_mode = Viewport.SCALING_3D_MODE_NEAREST diff --git a/network/network_home_protocol.gd b/network/network_home_protocol.gd index 62b8488..96756e9 100644 --- a/network/network_home_protocol.gd +++ b/network/network_home_protocol.gd @@ -7,6 +7,7 @@ const CAPABILITY: StringName = &"portable_home_v1" const RELIABLE_CHANNEL: int = NetworkProtocol.HOME_RELIABLE_CHANNEL const MAX_ID_LENGTH: int = 96 const MAX_MESSAGE_LENGTH: int = 160 +const MAX_TRANSITION_COORDINATE: float = 10000.0 const WORLD_SPACE: StringName = &"world" enum TransitionAction { @@ -143,7 +144,7 @@ static func transform_to_array(value: Transform3D) -> Array[float]: static func array_to_transform(value: Variant) -> Transform3D: - if not _valid_transform(value): + if not validate_transition_transform(value): return Transform3D() var fields: Array = value return Transform3D( @@ -156,6 +157,17 @@ static func array_to_transform(value: Variant) -> Transform3D: ) +static func validate_transition_transform(value: Variant) -> bool: + if not _valid_transform(value): + return false + var fields: Array = value + return ( + absf(float(fields[9])) <= MAX_TRANSITION_COORDINATE + and absf(float(fields[10])) <= MAX_TRANSITION_COORDINATE + and absf(float(fields[11])) <= MAX_TRANSITION_COORDINATE + ) + + static func _valid_transform(value: Variant) -> bool: if typeof(value) != TYPE_ARRAY or (value as Array).size() != 12: return false diff --git a/network/network_home_service.gd b/network/network_home_service.gd index df4fcde..33fa6ee 100644 --- a/network/network_home_service.gd +++ b/network/network_home_service.gd @@ -5,12 +5,15 @@ const NetworkHomeProtocolType = preload( "res://network/network_home_protocol.gd" ) const PlayerHomeStateType = preload("res://homes/player_home_state.gd") +const DecorCatalogType = preload("res://homes/decor_catalog.gd") +const OwnedItemType = preload("res://items/owned_item.gd") signal local_transition_finished(accepted: bool, message: String) signal local_space_changed(space_id: StringName, owner_fingerprint: String) signal local_manifest_rejected(message: String) const MAX_MANIFESTS: int = 128 +const MAX_PENDING_LOCAL_DECOR_TRANSACTIONS: int = 16 var _session: NetworkSession var _spawn_service: PlayerSpawnService @@ -24,9 +27,12 @@ var _manifests_by_fingerprint: Dictionary[String, Dictionary] = {} var _fingerprint_by_peer: Dictionary[int, String] = {} var _authorized_owned_counts: Dictionary[int, Dictionary] = {} var _authorization_result_owner: Dictionary[String, int] = {} +var _interior_slots_by_space: Dictionary[StringName, Dictionary] = {} var _next_interior_index: int = 0 var _suppress_local_submission: bool = false var _publish_queued: bool = false +var _last_submitted_local_home_revision: int = -1 +var _pending_local_decor_transactions: Dictionary[int, Dictionary] = {} func setup( @@ -77,6 +83,10 @@ func can_local_decorate() -> bool: ) +func has_pending_local_decor_mutation() -> bool: + return not _pending_local_decor_transactions.is_empty() + + func get_authoritative_owned_count( peer_id: int, decor_id: StringName, @@ -101,6 +111,7 @@ func place_local_decor( ) -> String: if ( not can_local_decorate() + or has_pending_local_decor_mutation() or _bag == null or _bag.get_quantity(decor_id) <= 0 or _world_service == null @@ -123,6 +134,10 @@ func place_local_decor( ) if normalized.is_empty(): return "" + var transaction: Dictionary = _capture_local_decor_transaction() + if transaction.is_empty(): + return "" + _suppress_local_submission = true var instance_id: String = _local_home.place_decor( decor_id, normalized["position"], @@ -130,17 +145,22 @@ func place_local_decor( mode, ) if instance_id.is_empty(): + _suppress_local_submission = false return "" if not _bag.remove_item(decor_id, 1): _local_home.remove_placement(instance_id) + _suppress_local_submission = false + return "" + _suppress_local_submission = false + if not _commit_local_decor_transaction(transaction): return "" - _save_manager.save_if_dirty() return instance_id func remove_local_decor(instance_id: String) -> bool: if ( not can_local_decorate() + or has_pending_local_decor_mutation() or _bag == null or _inventory_layout == null or _hotbar == null @@ -149,6 +169,9 @@ func remove_local_decor(instance_id: String) -> bool: var placement: Dictionary = _local_home.get_placement(instance_id) if placement.is_empty(): return false + var transaction: Dictionary = _capture_local_decor_transaction() + if transaction.is_empty(): + return false var decor_id := StringName(str(placement["decor_id"])) var target_hotbar_slot: int = _hotbar.find_item_slot(decor_id) if target_hotbar_slot < 0: @@ -174,14 +197,20 @@ func remove_local_decor(instance_id: String) -> bool: _inventory_layout.cancel_prepared_item_placement(decor_id) returned_to_inventory = _bag.add_item_to_storage(decor_id, 1) if not returned_to_inventory: + if prepared_hotbar_placement: + _inventory_layout.cancel_prepared_item_placement(decor_id) return false if target_hotbar_slot >= 0: _hotbar.assign_item(target_hotbar_slot, decor_id) _hotbar.select_slot(target_hotbar_slot) + _suppress_local_submission = true if not _local_home.remove_placement(instance_id): - _bag.remove_item(decor_id, 1) + _suppress_local_submission = false + _restore_local_decor_transaction(transaction) + return false + _suppress_local_submission = false + if not _commit_local_decor_transaction(transaction): return false - _save_manager.save_if_dirty() return true @@ -191,19 +220,28 @@ func update_local_decor( yaw_radians: float, mode: PlayerHomeStateType.PlacementMode, ) -> bool: + if has_pending_local_decor_mutation(): + return false var normalized: Dictionary = get_valid_local_decor_transform( instance_id, position, yaw_radians, mode ) if normalized.is_empty(): return false + var transaction: Dictionary = _capture_local_decor_transaction() + if transaction.is_empty(): + return false + _suppress_local_submission = true if not _local_home.update_placement( instance_id, normalized["position"], float(normalized["yaw"]), mode, ): + _suppress_local_submission = false + return false + _suppress_local_submission = false + if not _commit_local_decor_transaction(transaction): return false - _save_manager.save_if_dirty() return true @@ -337,7 +375,9 @@ func refresh_world_presentations() -> void: ) -func publish_local_home() -> bool: +func publish_local_home( + allow_pending_decor_transaction: bool = false, +) -> bool: if ( _session == null or not _session.is_gameplay_session_active() @@ -345,11 +385,24 @@ func publish_local_home() -> bool: or _local_home == null ): return false + # A purchase can update the owned decor count while an optimistic placement + # is waiting on the host. Hold that follow-up manifest until the placement is + # accepted or rolled back; otherwise it can carry the still-unverified + # placement and turn one rejection into a second stale rejection. + if ( + not allow_pending_decor_transaction + and has_pending_local_decor_mutation() + ): + _publish_queued = true + return true if _session.is_host() and ( _world_service == null or not _world_service.is_world_ready() ): return false var home_data: Dictionary = _local_home.to_save_data() + var revision: int = int(home_data.get("revision", -1)) + if revision >= 0 and revision == _last_submitted_local_home_revision: + return true var request: Dictionary = { "request_id": _new_id("home"), "session_id": _session.get_session_id(), @@ -361,6 +414,7 @@ func publish_local_home() -> bool: "portable_home_manifest", NetworkHomeProtocolType.manifest_signature_fields(request), ) + _last_submitted_local_home_revision = revision if _session.is_host(): _process_manifest_request(_session.get_local_peer_id(), request) else: @@ -445,6 +499,15 @@ func _process_manifest_request(peer_id: int, data: Dictionary) -> void: _manifests_by_fingerprint[fingerprint] = manifest _fingerprint_by_peer[peer_id] = fingerprint _consume_owned_authorizations(peer_id, home_data) + if peer_id == _session.get_local_peer_id(): + _discard_local_decor_transactions_through( + int(home_data.get("revision", -1)) + ) + if _last_submitted_local_home_revision == int( + home_data.get("revision", -1) + ): + _last_submitted_local_home_revision = -1 + _flush_queued_local_home_publish() _broadcast_manifest(manifest) if is_first_manifest: _spawn_peer_at_exterior(peer_id, fingerprint) @@ -588,6 +651,16 @@ func receive_home_manifest(data: Dictionary) -> void: var fingerprint: String = str(data["owner_fingerprint"]) _manifests_by_fingerprint[fingerprint] = data.duplicate(true) _fingerprint_by_peer[int(data["owner_peer_id"])] = fingerprint + if fingerprint == _session.get_local_identity_fingerprint(): + var home: Dictionary = data.get("home", {}) + _discard_local_decor_transactions_through( + int(home.get("revision", -1)) + ) + if _last_submitted_local_home_revision == int( + home.get("revision", -1) + ): + _last_submitted_local_home_revision = -1 + _flush_queued_local_home_publish() if _world_service != null and _world_service.is_world_ready(): _world_service.apply_manifest(data) @@ -613,20 +686,304 @@ func receive_home_manifest_rejection( func _apply_manifest_rejection(message: String, canonical: Dictionary) -> void: - if ( - canonical.is_empty() - or not NetworkHomeProtocolType.validate_manifest_broadcast(canonical) - ): + _last_submitted_local_home_revision = -1 + var canonical_home: Dictionary = canonical.get("home", {}) + var canonical_revision: int = int(canonical_home.get("revision", -1)) + var transaction: Dictionary = _get_local_decor_rejection_transaction( + canonical_revision + ) + if canonical.is_empty() or not NetworkHomeProtocolType.validate_manifest_broadcast(canonical): + if not transaction.is_empty(): + _restore_local_decor_transaction(transaction) + _pending_local_decor_transactions.clear() + if _save_manager != null and not _save_manager.save_if_dirty(): + push_warning("Unable to save the restored RV decor state.") + _flush_queued_local_home_publish() local_manifest_rejected.emit(message) return + # A shop result can be accepted locally while its own home manifest is still + # in flight. A delayed rejection for an earlier placement must not erase that + # accepted purchase just because the host's canonical manifest predates it. + var locally_owned_decor: Dictionary[StringName, int] = ( + _capture_local_owned_decor_counts() + ) + # Only carry ownership forward across an actual pending decor-action + # rejection. A standalone rejected manifest must remain authoritative rather + # than repeatedly re-submitting an unverified owned-count increase. + var has_owned_decor_increase: bool = ( + not transaction.is_empty() + and _has_local_owned_decor_increase( + locally_owned_decor, + canonical_home, + ) + ) _suppress_local_submission = true - _local_home.restore_from_save_data(canonical["home"]) + var restored: bool = _local_home.restore_from_save_data(canonical_home) + var owned_decor_restored: bool = ( + restored + and ( + not has_owned_decor_increase + or _restore_local_owned_decor_increases(locally_owned_decor) + ) + ) + var reconciled: bool = ( + restored + and owned_decor_restored + and _reconcile_local_decor_inventory(transaction) + ) _suppress_local_submission = false - _save_manager.save_if_dirty() + _discard_local_decor_transactions_after(canonical_revision) + if not reconciled: + push_error("Unable to reconcile RV decor after a host rejection.") + elif _save_manager != null and not _save_manager.save_if_dirty(): + push_warning("Unable to save the restored RV decor state.") receive_home_manifest(canonical) + if reconciled and has_owned_decor_increase: + # Submit the preserved purchase as a fresh revision after applying the + # canonical placement rollback. This is deliberately separate from the + # rejected action, so the host can validate the already-authorized count. + if not publish_local_home(): + push_warning("Unable to publish the restored RV decor ownership.") local_manifest_rejected.emit(message) +func _capture_local_decor_transaction() -> Dictionary: + if ( + _local_home == null + or _bag == null + or _inventory_layout == null + or _hotbar == null + ): + return {} + var saved_items: Array[OwnedItemType] = [] + for item: OwnedItemType in _bag.get_all_items(): + saved_items.append(item.duplicate_record()) + return { + "home": _local_home.to_save_data(), + "bag_items": saved_items, + "layout": _inventory_layout.to_save_data(), + "hotbar_slots": _hotbar.get_slots(), + "hotbar_fish_slots": _hotbar.get_fish_slots(), + "selected_hotbar_slot": _hotbar.get_selected_slot(), + } + + +func _capture_local_owned_decor_counts() -> Dictionary[StringName, int]: + var counts: Dictionary[StringName, int] = {} + if _local_home == null: + return counts + for decor_id: StringName in DecorCatalogType.get_product_ids(): + counts[decor_id] = _local_home.get_owned_count(decor_id) + return counts + + +func _has_local_owned_decor_increase( + local_counts: Dictionary[StringName, int], + canonical_home: Dictionary, +) -> bool: + var canonical_owned: Dictionary = canonical_home.get("owned_decor", {}) + for decor_id: StringName in DecorCatalogType.get_product_ids(): + if int(local_counts.get(decor_id, 0)) > int( + canonical_owned.get(String(decor_id), 0) + ): + return true + return false + + +func _restore_local_owned_decor_increases( + local_counts: Dictionary[StringName, int], +) -> bool: + if _local_home == null: + return false + for decor_id: StringName in DecorCatalogType.get_product_ids(): + var local_count: int = int(local_counts.get(decor_id, 0)) + var canonical_count: int = _local_home.get_owned_count(decor_id) + while canonical_count < local_count: + if not _local_home.add_owned_decor(decor_id, 1): + return false + canonical_count += 1 + return true + + +func _commit_local_decor_transaction(transaction: Dictionary) -> bool: + if _save_manager == null or not _save_manager.save_if_dirty(): + _restore_local_decor_transaction(transaction) + return false + var revision: int = _local_home.get_revision() + _pending_local_decor_transactions[revision] = transaction.duplicate(true) + _trim_pending_local_decor_transactions() + if publish_local_home(true): + return true + _pending_local_decor_transactions.erase(revision) + _restore_local_decor_transaction(transaction) + _flush_queued_local_home_publish() + # The optimistic mutation was already written before we attempted to publish + # it. If the session ended or could not accept the manifest, immediately + # persist the restored state so a restart cannot resurrect the rejected + # placement or consume its decor item. + if _save_manager != null and not _save_manager.save_if_dirty(): + push_warning("Unable to save the restored RV decor state.") + return false + + +func _restore_local_decor_transaction(transaction: Dictionary) -> bool: + if ( + transaction.is_empty() + or _local_home == null + or _bag == null + or _inventory_layout == null + or _hotbar == null + ): + return false + var home_data: Variant = transaction.get("home", {}) + var layout_data: Variant = transaction.get("layout", {}) + var stored_items: Variant = transaction.get("bag_items", []) + var stored_slots: Variant = transaction.get("hotbar_slots", []) + var stored_fish_slots: Variant = transaction.get("hotbar_fish_slots", []) + if ( + typeof(home_data) != TYPE_DICTIONARY + or typeof(layout_data) != TYPE_DICTIONARY + or typeof(stored_items) != TYPE_ARRAY + or typeof(stored_slots) != TYPE_ARRAY + or typeof(stored_fish_slots) != TYPE_ARRAY + ): + return false + var items: Array[OwnedItemType] = [] + for value: Variant in stored_items as Array: + if not value is OwnedItemType: + return false + items.append((value as OwnedItemType).duplicate_record()) + var slots: Array[StringName] = [] + for value: Variant in stored_slots as Array: + slots.append(StringName(str(value))) + var fish_slots: Array[StringName] = [] + for value: Variant in stored_fish_slots as Array: + fish_slots.append(StringName(str(value))) + var was_suppressed: bool = _suppress_local_submission + _suppress_local_submission = true + var home_restored: bool = _local_home.restore_from_save_data( + home_data as Dictionary + ) + var bag_restored: bool = _bag.replace_all_items(items) + var layout_restored: bool = _inventory_layout.restore_from_save_data( + layout_data as Dictionary + ) + var hotbar_restored: bool = _hotbar.replace_state( + slots, + int(transaction.get("selected_hotbar_slot", 0)), + fish_slots, + false, + ) + _suppress_local_submission = was_suppressed + return home_restored and bag_restored and layout_restored and hotbar_restored + + +func _reconcile_local_decor_inventory(transaction: Dictionary) -> bool: + if _bag == null or _local_home == null: + return false + var preferred_slots: Dictionary[StringName, int] = ( + _decor_hotbar_slots_from_transaction(transaction) + ) + for decor_id: StringName in DecorCatalogType.get_product_ids(): + var target_quantity: int = _local_home.get_available_count(decor_id) + var current_quantity: int = _bag.get_quantity(decor_id) + if current_quantity > target_quantity: + if not _bag.remove_item( + decor_id, current_quantity - target_quantity + ): + return false + continue + while current_quantity < target_quantity: + var preferred_slot: int = int( + preferred_slots.get(decor_id, -1) + ) + if not _restore_decor_item_to_bag(decor_id, preferred_slot): + return false + current_quantity += 1 + return true + + +func _decor_hotbar_slots_from_transaction( + transaction: Dictionary, +) -> Dictionary[StringName, int]: + var result: Dictionary[StringName, int] = {} + var stored_slots: Variant = transaction.get("hotbar_slots", []) + if typeof(stored_slots) != TYPE_ARRAY: + return result + for slot_index: int in range((stored_slots as Array).size()): + var decor_id := StringName(str((stored_slots as Array)[slot_index])) + if DecorCatalogType.has_product(decor_id): + result[decor_id] = slot_index + return result + + +func _restore_decor_item_to_bag( + decor_id: StringName, + preferred_hotbar_slot: int, +) -> bool: + if _bag == null: + return false + var prepared_slot: int = -1 + if ( + _inventory_layout != null + and _hotbar != null + and _inventory_layout.get_container( + PlayerInventoryLayout.EntryKind.ITEM, decor_id + ) < 0 + ): + var candidate_slot: int = preferred_hotbar_slot + if candidate_slot < 0: + candidate_slot = _hotbar.find_first_empty_slot() + if candidate_slot >= 0 and _inventory_layout.prepare_new_item_placement( + decor_id, + PlayerInventoryLayout.InventoryContainer.HOTBAR, + candidate_slot, + ): + prepared_slot = candidate_slot + var restored: bool = _bag.add_item(decor_id, 1) + if not restored: + if prepared_slot >= 0: + _inventory_layout.cancel_prepared_item_placement(decor_id) + if _bag.get_owned_item(decor_id) == null: + restored = _bag.add_item_to_storage(decor_id, 1) + if restored and prepared_slot >= 0: + _hotbar.assign_item(prepared_slot, decor_id) + _hotbar.select_slot(prepared_slot) + return restored + + +func _get_local_decor_rejection_transaction( + canonical_revision: int, +) -> Dictionary: + var revisions: Array[int] = [] + revisions.assign(_pending_local_decor_transactions.keys()) + revisions.sort() + for revision: int in revisions: + if canonical_revision < 0 or revision > canonical_revision: + return _pending_local_decor_transactions[revision].duplicate(true) + return {} + + +func _discard_local_decor_transactions_through(revision: int) -> void: + for pending_revision: int in _pending_local_decor_transactions.keys(): + if pending_revision <= revision: + _pending_local_decor_transactions.erase(pending_revision) + + +func _discard_local_decor_transactions_after(revision: int) -> void: + for pending_revision: int in _pending_local_decor_transactions.keys(): + if pending_revision > revision: + _pending_local_decor_transactions.erase(pending_revision) + + +func _trim_pending_local_decor_transactions() -> void: + var revisions: Array[int] = [] + revisions.assign(_pending_local_decor_transactions.keys()) + revisions.sort() + while revisions.size() > MAX_PENDING_LOCAL_DECOR_TRANSACTIONS: + _pending_local_decor_transactions.erase(revisions.pop_front()) + + func _submit_transition(action: int, owner_fingerprint: String) -> bool: var request: Dictionary = { "request_id": _new_id("home_transition"), @@ -697,12 +1054,18 @@ func _process_transition_request(peer_id: int, data: Dictionary) -> void: ): _send_transition_rejection(peer_id, "You cannot enter that RV.") return + var interior_space: StringName = ( + NetworkHomeProtocolType.make_space_id(owner_fingerprint) + ) + var visitor_slot: int = _reserve_interior_slot( + interior_space, peer_id + ) _apply_host_transition( peer_id, - NetworkHomeProtocolType.make_space_id(owner_fingerprint), + interior_space, owner_fingerprint, _world_service.get_interior_spawn_transform( - owner_fingerprint, peer_id + owner_fingerprint, visitor_slot ), ) return @@ -748,18 +1111,40 @@ func _apply_host_transition( owner_fingerprint: String, transform: Transform3D, ) -> void: + var avatar: Player = _spawn_service.get_avatar(peer_id) + var movement_sequence: int = 0 + if avatar != null: + movement_sequence = int( + avatar.make_network_snapshot(peer_id).get( + "acknowledged_input", 0 + ) + ) + var transform_data: Array[float] = ( + NetworkHomeProtocolType.transform_to_array(transform) + ) + if not NetworkHomeProtocolType.validate_transition_transform( + transform_data + ): + push_error("Refused an out-of-bounds RV transition transform.") + return + var previous_space: StringName = _session.get_peer_space(peer_id) + if ( + String(previous_space).begins_with("rv:") + and previous_space != space_id + ): + _release_interior_slot(previous_space, peer_id) var result: Dictionary = { "peer_id": peer_id, "space_id": String(space_id), "owner_fingerprint": owner_fingerprint, - "transform": NetworkHomeProtocolType.transform_to_array(transform), + "transform": transform_data, + "movement_sequence": movement_sequence, } _apply_transition_result(result) for recipient_id: int in _session.get_authenticated_peer_ids(): if recipient_id == 1: continue receive_home_transition.rpc_id(recipient_id, result) - _session.publish_authoritative_teleport(peer_id) @rpc( @@ -770,35 +1155,40 @@ func receive_home_transition(data: Dictionary) -> void: if ( typeof(data.get("peer_id")) != TYPE_INT or typeof(data.get("space_id")) not in [TYPE_STRING, TYPE_STRING_NAME] + or typeof(data.get("movement_sequence", 0)) != TYPE_INT + or int(data.get("movement_sequence", 0)) < 0 or not NetworkIdentityCrypto.valid_fingerprint( data.get("owner_fingerprint") ) + or not NetworkHomeProtocolType.validate_transition_transform( + data.get("transform") + ) ): return - var transform: Transform3D = NetworkHomeProtocolType.array_to_transform( - data.get("transform") - ) - if transform == Transform3D(): - return _apply_transition_result(data) func _apply_transition_result(data: Dictionary) -> void: var peer_id: int = int(data["peer_id"]) var space_id := StringName(str(data["space_id"])) + if not NetworkHomeProtocolType.validate_transition_transform( + data.get("transform") + ): + return + var target_transform: Transform3D = ( + NetworkHomeProtocolType.array_to_transform(data["transform"]) + ) if not _session.set_peer_space(peer_id, space_id): return - var avatar: Player = _spawn_service.get_avatar(peer_id) - if avatar != null: - avatar.global_transform = NetworkHomeProtocolType.array_to_transform( - data["transform"] - ) - avatar.velocity = Vector3.ZERO + if not _session.apply_authoritative_space_transition( + peer_id, + target_transform, + int(data.get("movement_sequence", 0)), + ): + return if peer_id == _session.get_local_peer_id(): _world_service.set_local_space(space_id) - local_space_changed.emit( - space_id, str(data["owner_fingerprint"]) - ) + local_space_changed.emit(space_id, str(data["owner_fingerprint"])) local_transition_finished.emit(true, "") _refresh_peer_visibility() @@ -840,12 +1230,20 @@ func _on_local_home_changed() -> void: func _publish_queued_home() -> void: + if has_pending_local_decor_mutation(): + return _publish_queued = false if _save_manager != null: _save_manager.save_if_dirty() publish_local_home() +func _flush_queued_local_home_publish() -> void: + if not _publish_queued or has_pending_local_decor_mutation(): + return + call_deferred("_publish_queued_home") + + func _on_join_authenticated() -> void: publish_local_home() @@ -880,6 +1278,7 @@ func _on_peer_authenticated(peer_id: int, _display_name: String) -> void: func _on_peer_removed(peer_id: int) -> void: + _release_peer_interior_slots(peer_id) var fingerprint: String = _fingerprint_by_peer.get(peer_id, "") _fingerprint_by_peer.erase(peer_id) _authorized_owned_counts.erase(peer_id) @@ -937,6 +1336,10 @@ func _on_session_state_changed(state: NetworkSession.State) -> void: _fingerprint_by_peer.clear() _authorized_owned_counts.clear() _authorization_result_owner.clear() + _publish_queued = false + _last_submitted_local_home_revision = -1 + _pending_local_decor_transactions.clear() + _interior_slots_by_space.clear() _next_interior_index = 0 _world_service.clear_presentations() _world_service.set_local_space(NetworkHomeProtocolType.WORLD_SPACE) @@ -950,6 +1353,37 @@ func _fingerprint_for_peer(peer_id: int) -> String: return record.identity_fingerprint if record != null else "" +func _reserve_interior_slot(space_id: StringName, peer_id: int) -> int: + var slots: Dictionary = _interior_slots_by_space.get(space_id, {}) + if slots.has(peer_id): + return int(slots[peer_id]) + var used_slots: Dictionary[int, bool] = {} + for value: Variant in slots.values(): + used_slots[int(value)] = true + var slot: int = 0 + while used_slots.has(slot): + slot += 1 + slots[peer_id] = slot + _interior_slots_by_space[space_id] = slots + return slot + + +func _release_interior_slot(space_id: StringName, peer_id: int) -> void: + var slots: Dictionary = _interior_slots_by_space.get(space_id, {}) + if slots.is_empty(): + return + slots.erase(peer_id) + if slots.is_empty(): + _interior_slots_by_space.erase(space_id) + else: + _interior_slots_by_space[space_id] = slots + + +func _release_peer_interior_slots(peer_id: int) -> void: + for space_id: StringName in _interior_slots_by_space.keys(): + _release_interior_slot(space_id, peer_id) + + func _new_id(prefix: String) -> String: return "%s:%s" % [ prefix, Crypto.new().generate_random_bytes(16).hex_encode(), diff --git a/network/network_session.gd b/network/network_session.gd index 8add90f..66d5101 100644 --- a/network/network_session.gd +++ b/network/network_session.gd @@ -28,6 +28,7 @@ const MAX_PENDING_MOVEMENT_INPUTS: int = 96 const ANIMATION_REFRESH_INTERVAL: float = 1.0 const MAX_MOVEMENT_INPUT_SEQUENCE: int = 2147483647 const MAX_MOVEMENT_ONE_WAY_TRANSIT_SECONDS: float = 0.25 +const SPACE_TRANSITION_SNAPSHOT_GUARD_DISTANCE: float = 12.0 const MOVEMENT_FLAG_JUMP: int = 1 << 0 const MOVEMENT_FLAG_SPRINT: int = 1 << 1 @@ -124,6 +125,9 @@ var _pending_movement_inputs: Array[Dictionary] = [] var _snapshot_accumulator: float = 0.0 var _movement_snapshot_tick: int = 0 var _last_local_snapshot_received_msec: int = 0 +var _local_space_transition_guard_active: bool = false +var _local_space_transition_guard_position: Vector3 = Vector3.ZERO +var _local_space_transition_minimum_ack: int = 0 var _animation_refresh_accumulator: float = 0.0 var _last_animation_state_by_peer: Dictionary[int, Dictionary] = {} var _pending_animation_state_by_peer: Dictionary[int, Dictionary] = {} @@ -703,6 +707,40 @@ func peers_share_space(first_peer_id: int, second_peer_id: int) -> bool: return get_peer_space(first_peer_id) == get_peer_space(second_peer_id) +func apply_authoritative_space_transition( + peer_id: int, + target_transform: Transform3D, + acknowledged_input: int, +) -> bool: + if not target_transform.origin.is_finite(): + return false + var local_peer_id: int = get_local_peer_id() + var local_transition: bool = peer_id == local_peer_id + var avatar: Player = _spawn_service.get_avatar(peer_id) + # Remote home transitions can arrive before their player-spawn message. Keep + # the new space assignment so the later spawn inherits correct visibility; + # only a missing local avatar is a transition failure. + if avatar == null: + return not local_transition + avatar.apply_network_space_transition(target_transform, local_transition) + if ( + local_transition + and state == State.JOINED_CLIENT + ): + # Movement snapshots use another ENet channel and a pre-transition audit + # can therefore arrive after the reliable home transition. Clear local + # prediction and reject those old-world snapshots until the host publishes + # its first audit from the new space. + _pending_movement_inputs.clear() + _last_local_snapshot_received_msec = 0 + _last_input_state_hash = 0 + _idle_input_accumulator = IDLE_INPUT_INTERVAL + _local_space_transition_guard_active = true + _local_space_transition_guard_position = target_transform.origin + _local_space_transition_minimum_ack = maxi(acknowledged_input, 0) + return true + + func get_peer_rtt_ms(peer_id: int) -> int: if peer_id == 1: return 0 @@ -2569,6 +2607,8 @@ func receive_movement_snapshots(encoded_snapshots: Array) -> void: if avatar == null: continue if peer_id == local_peer_id: + if _reject_stale_space_transition_snapshot(snapshot): + continue _discard_acknowledged_movement_inputs( int(snapshot.get("acknowledged_input", 0)) ) @@ -2586,6 +2626,33 @@ func receive_movement_snapshots(encoded_snapshots: Array) -> void: ) +func _reject_stale_space_transition_snapshot(snapshot: Dictionary) -> bool: + if not _local_space_transition_guard_active: + return false + var position_values: Array = snapshot.get("position", []) + if position_values.size() != 3: + return true + var position := Vector3( + float(position_values[0]), + float(position_values[1]), + float(position_values[2]), + ) + var acknowledged_input: int = int( + snapshot.get("acknowledged_input", 0) + ) + if acknowledged_input < _local_space_transition_minimum_ack: + return true + if acknowledged_input > _local_space_transition_minimum_ack: + _local_space_transition_guard_active = false + return false + if position.distance_to(_local_space_transition_guard_position) > ( + SPACE_TRANSITION_SNAPSHOT_GUARD_DISTANCE + ): + return true + _local_space_transition_guard_active = false + return false + + func _discard_acknowledged_movement_inputs(acknowledged_sequence: int) -> void: while ( not _pending_movement_inputs.is_empty() @@ -2914,6 +2981,9 @@ func _teardown_peer() -> void: _snapshot_accumulator = 0.0 _movement_snapshot_tick = 0 _last_local_snapshot_received_msec = 0 + _local_space_transition_guard_active = false + _local_space_transition_guard_position = Vector3.ZERO + _local_space_transition_minimum_ack = 0 _animation_refresh_accumulator = 0.0 _last_animation_state_by_peer.clear() _pending_animation_state_by_peer.clear() diff --git a/player/player.gd b/player/player.gd index 30807be..e36f92b 100644 --- a/player/player.gd +++ b/player/player.gd @@ -2093,6 +2093,37 @@ func reset_network_movement_state() -> void: _local_prediction_largest_error = 0.0 +func apply_network_space_transition( + target_transform: Transform3D, + align_local_camera: bool, +) -> void: + if not target_transform.origin.is_finite(): + return + # A room transition is a discontinuity, not ordinary movement. Preserve the + # host's input acknowledgement while clearing every motion, animation, and + # reconciliation state that could pull the avatar toward the previous space. + var acknowledged_input: int = _last_network_input_sequence + reset_network_movement_state() + _last_network_input_sequence = acknowledged_input + _apply_network_casting(false) + velocity = Vector3.ZERO + global_transform = Transform3D(Basis.IDENTITY, target_transform.origin) + var target_yaw: float = target_transform.basis.get_euler().y + _visuals.rotation.y = target_yaw + _network_camera_yaw = target_yaw + _network_target_position = global_position + _network_target_velocity = Vector3.ZERO + _network_target_visual_yaw = target_yaw + _network_snapshot_age = 0.0 + _network_snapshot_ready = true + _authoritative_movement_history.clear() + if align_local_camera: + _set_camera_dragging(false) + if _free_camera_active: + _set_free_camera_active(false) + _camera_yaw.rotation.y = target_yaw + + func capture_network_input(sequence: int) -> Dictionary: if _sitting_intent_pending and _sitting_intent_sequence < 0: _sitting_intent_sequence = sequence From 3be79fa3fccbd8c1c373919c7e900af00c13ffac Mon Sep 17 00:00:00 2001 From: Voyager Date: Mon, 31 Aug 2026 05:48:47 -0400 Subject: [PATCH 86/90] Normalize cursor handoff across gameplay menus --- network/network_surface_drawing_service.gd | 26 ++++++++++++++++++++-- ui/decor_shop.gd | 10 ++++++++- ui/fishing_shop.gd | 15 ++++++++++--- ui/player_menu.gd | 19 +++++++++++++--- ui/player_storage.gd | 11 ++++++++- 5 files changed, 71 insertions(+), 10 deletions(-) diff --git a/network/network_surface_drawing_service.gd b/network/network_surface_drawing_service.gd index c322e5b..485dfaa 100644 --- a/network/network_surface_drawing_service.gd +++ b/network/network_surface_drawing_service.gd @@ -250,7 +250,11 @@ func activate( _pointer_screen_position = _clamped_pointer_position( initial_pointer_position ) - _prior_mouse_mode = Input.mouse_mode + # Art-kit activation can occur while the prior right-click camera drag is + # still held. Stop that drag before recording a return mode, then restore + # normal camera availability so right-click continues to work while drawing. + _stop_camera_drag_for_art_kit() + _prior_mouse_mode = _get_restorable_mouse_mode(Input.mouse_mode) Input.mouse_mode = Input.MOUSE_MODE_VISIBLE _update_aim() _refresh_stencil_visibility() @@ -266,6 +270,10 @@ func deactivate() -> void: _eraser_mode = false _clear_armed_guide_action(false) _camera_look_active = false + # Do not leave a drag captured when drawing is closed by a menu, hotbar + # change, or session transition. The next camera drag must start on a fresh + # physical right-click press. + _stop_camera_drag_for_art_kit() _reset_stroke() _selected_canvas_id = "" _hovered_canvas_id = "" @@ -273,10 +281,24 @@ func deactivate() -> void: _aim_hit.clear() _hide_previews() _refresh_stencil_visibility() - Input.mouse_mode = _prior_mouse_mode + Input.mouse_mode = _get_restorable_mouse_mode(_prior_mouse_mode) _emit_hud_state("") +func _stop_camera_drag_for_art_kit() -> void: + if _local_player == null or not is_instance_valid(_local_player): + return + var camera_input_enabled: bool = _local_player.is_camera_input_enabled() + _local_player.set_camera_input_enabled(false) + _local_player.set_camera_input_enabled(camera_input_enabled) + + +func _get_restorable_mouse_mode(mouse_mode: Input.MouseMode) -> Input.MouseMode: + if mouse_mode == Input.MOUSE_MODE_CAPTURED: + return Input.MOUSE_MODE_VISIBLE + return mouse_mode + + func is_active() -> bool: return _active diff --git a/ui/decor_shop.gd b/ui/decor_shop.gd index 9292806..d05d9eb 100644 --- a/ui/decor_shop.gd +++ b/ui/decor_shop.gd @@ -82,9 +82,11 @@ func open_shop() -> bool: return false _prior_movement_enabled = _player.is_movement_enabled() _prior_camera_enabled = _player.is_camera_input_enabled() - _prior_mouse_mode = Input.mouse_mode _player.set_movement_enabled(false) + # Release any active right-click drag first. The shop must not remember the + # drag's transient captured mode because release may happen inside the UI. _player.set_camera_input_enabled(false) + _prior_mouse_mode = _get_restorable_mouse_mode(Input.mouse_mode) _fishing_spot.set_local_menu_input_suppressed(INPUT_OWNER, true) Input.mouse_mode = Input.MOUSE_MODE_VISIBLE _transaction_pending = ( @@ -133,6 +135,12 @@ func close_for_session_end() -> void: close_shop(false) +func _get_restorable_mouse_mode(mouse_mode: Input.MouseMode) -> Input.MouseMode: + if mouse_mode == Input.MOUSE_MODE_CAPTURED: + return Input.MOUSE_MODE_VISIBLE + return mouse_mode + + func _unhandled_input(event: InputEvent) -> void: if not visible or not event.is_action_pressed("ui_cancel"): return diff --git a/ui/fishing_shop.gd b/ui/fishing_shop.gd index ad8247c..234a1c1 100644 --- a/ui/fishing_shop.gd +++ b/ui/fishing_shop.gd @@ -654,11 +654,14 @@ func open_shop() -> bool: ) _prior_movement_enabled = _player.is_movement_enabled() _prior_camera_enabled = _player.is_camera_input_enabled() - _prior_mouse_mode = Input.mouse_mode + _player.set_movement_enabled(false) + # Releasing an active camera drag before the snapshot prevents the close + # path from restoring a captured pointer after its matching button release + # has been consumed by the shop. + _player.set_camera_input_enabled(false) + _prior_mouse_mode = _get_restorable_mouse_mode(Input.mouse_mode) _snapshot_stored = true _mouse_snapshot_stored = true - _player.set_movement_enabled(false) - _player.set_camera_input_enabled(false) _fishing_spot.set_local_menu_input_suppressed(INPUT_OWNER, true) Input.mouse_mode = Input.MOUSE_MODE_VISIBLE _set_feedback("") @@ -1897,3 +1900,9 @@ func _apply_mouse_close_policy(reason: CloseReason) -> void: CloseReason.TEARDOWN: pass _mouse_snapshot_stored = false + + +func _get_restorable_mouse_mode(mouse_mode: Input.MouseMode) -> Input.MouseMode: + if mouse_mode == Input.MOUSE_MODE_CAPTURED: + return Input.MOUSE_MODE_VISIBLE + return mouse_mode diff --git a/ui/player_menu.gd b/ui/player_menu.gd index 2f9f96f..9b15913 100644 --- a/ui/player_menu.gd +++ b/ui/player_menu.gd @@ -1559,11 +1559,14 @@ func open_menu() -> void: _cancel_page_tween() _prior_movement_enabled = _player.is_movement_enabled() _prior_camera_input_enabled = _player.is_camera_input_enabled() - _prior_mouse_mode = Input.mouse_mode + _player.set_movement_enabled(false) + # Ending an active right-click camera drag restores its ordinary pointer + # mode. Snapshot after that handoff so this menu never restores the drag's + # transient captured mode when it closes. + _player.set_camera_input_enabled(false) + _prior_mouse_mode = _get_restorable_mouse_mode(Input.mouse_mode) _control_snapshot_stored = true _mouse_snapshot_stored = true - _player.set_movement_enabled(false) - _player.set_camera_input_enabled(false) _fishing_spot.set_local_menu_input_suppressed(INPUT_OWNER, true) Input.mouse_mode = Input.MOUSE_MODE_VISIBLE visible = true @@ -1775,6 +1778,16 @@ func _apply_mouse_close_policy(reason: CloseReason) -> void: _mouse_snapshot_stored = false +func _get_restorable_mouse_mode(mouse_mode: Input.MouseMode) -> Input.MouseMode: + # Mouse capture belongs to an in-progress camera drag, never to the player + # menu itself. A held right button can be released while this menu owns + # input, so restoring CAPTURED here would leave the pointer hidden without + # an active drag to release it. + if mouse_mode == Input.MOUSE_MODE_CAPTURED: + return Input.MOUSE_MODE_VISIBLE + return mouse_mode + + func _on_bite_activated() -> void: if visible: close_menu(CloseReason.BITE_STARTED) diff --git a/ui/player_storage.gd b/ui/player_storage.gd index 1f553ea..83817c5 100644 --- a/ui/player_storage.gd +++ b/ui/player_storage.gd @@ -109,9 +109,12 @@ func _open_storage( _decorate_button.visible = home_access and allow_decorating _prior_movement_enabled = _player.is_movement_enabled() _prior_camera_enabled = _player.is_camera_input_enabled() - _prior_mouse_mode = Input.mouse_mode _player.set_movement_enabled(false) + # End an in-progress right-click camera drag before taking the snapshot. + # A held button can be released while this page owns input, so captured mode + # is never a valid mouse mode to restore when the page closes. _player.set_camera_input_enabled(false) + _prior_mouse_mode = _get_restorable_mouse_mode(Input.mouse_mode) _fishing_spot.set_local_menu_input_suppressed(INPUT_OWNER, true) Input.mouse_mode = Input.MOUSE_MODE_VISIBLE _feedback.text = "select an item to move it · drag to choose a slot" @@ -153,6 +156,12 @@ func close_for_session_end() -> void: close_storage(false) +func _get_restorable_mouse_mode(mouse_mode: Input.MouseMode) -> Input.MouseMode: + if mouse_mode == Input.MOUSE_MODE_CAPTURED: + return Input.MOUSE_MODE_VISIBLE + return mouse_mode + + func consume_escape() -> bool: if not visible: return false From 014c064fae7592a8fe0e4107d177a22729c0a0e2 Mon Sep 17 00:00:00 2001 From: Voyager Date: Mon, 31 Aug 2026 06:06:09 -0400 Subject: [PATCH 87/90] Prepare private v0.20.2-alpha test build --- docs/README-PLAYTEST.txt | 6 +++--- export_presets.cfg | 26 +++++++++++++------------- project.godot | 4 ++-- scripts/build_playtest.sh | 10 +++++----- ui/title_screen.tscn | 2 +- 5 files changed, 24 insertions(+), 24 deletions(-) diff --git a/docs/README-PLAYTEST.txt b/docs/README-PLAYTEST.txt index d3f3432..f187182 100644 --- a/docs/README-PLAYTEST.txt +++ b/docs/README-PLAYTEST.txt @@ -1,8 +1,8 @@ straywild -v0.20.1-alpha -Alpha 0.20.1 +v0.20.2-alpha +Alpha 0.20.2 -Thank you for supporting this private patron test release. +Thank you for supporting this private testing release. straywild is an early multiplayer fishing game. This alpha includes local progression, player-hosted and dedicated multiplayer sessions, public room diff --git a/export_presets.cfg b/export_presets.cfg index ff588e2..a49f01f 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -9,7 +9,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.20.1-alpha/windows-x86_64/straywild.exe" +export_path="builds/v0.20.2-alpha/windows-x86_64/straywild.exe" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -35,11 +35,11 @@ application/modify_resources=true application/icon="res://art/exported/system_icons/straywild.ico" application/console_wrapper_icon="" application/icon_interpolation=0 -application/file_version="0.20.1.0" -application/product_version="0.20.1.0" +application/file_version="0.20.2.0" +application/product_version="0.20.2.0" application/company_name="Woofmeow" application/product_name="straywild" -application/file_description="straywild v0.20.1-alpha" +application/file_description="straywild v0.20.2-alpha" application/copyright="Copyright © 2026 Woofmeow" application/trademarks="straywild and Woofmeow branding is reserved; see TRADEMARKS.md" application/export_angle=0 @@ -62,7 +62,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.20.1-alpha/linux-arm64/straywild.arm64" +export_path="builds/v0.20.2-alpha/linux-arm64/straywild.arm64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -92,7 +92,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.20.1-alpha/macos/straywild.zip" +export_path="builds/v0.20.2-alpha/macos/straywild.zip" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -108,8 +108,8 @@ custom_template/release="" application/bundle_identifier="io.woofmeow.netfishing" application/icon="res://art/exported/system_icons/straywild_1024.png" application/icon_interpolation=0 -application/short_version="0.20.1" -application/version="0.20.1" +application/short_version="0.20.2" +application/version="0.20.2" application/architecture="universal" codesign/enable=false notarization/enable=false @@ -125,7 +125,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*,tests/*" -export_path="builds/v0.20.1-alpha/server-linux-x86_64/straywildServer.x86_64" +export_path="builds/v0.20.2-alpha/server-linux-x86_64/straywildServer.x86_64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -155,7 +155,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.20.1-alpha/android/straywild.apk" +export_path="builds/v0.20.2-alpha/android/straywild.apk" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -176,8 +176,8 @@ architectures/armeabi-v7a=false architectures/arm64-v8a=true architectures/x86=false architectures/x86_64=false -version/code=200100 -version/name="v0.20.1-alpha" +version/code=200200 +version/name="v0.20.2-alpha" package/unique_name="io.woofmeow.netfishing" package/name="straywild" package/signed=true @@ -214,7 +214,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.20.1-alpha/linux-x86_64/straywild.x86_64" +export_path="builds/v0.20.2-alpha/linux-x86_64/straywild.x86_64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" diff --git a/project.godot b/project.godot index 8e751aa..5bcbb4d 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="straywild" -config/version="0.20.1-alpha" +config/version="0.20.2-alpha" run/main_scene="res://main/main.tscn" config/features=PackedStringArray("4.7", "GL Compatibility") config/icon="res://art/exported/system_icons/straywild_256.png" @@ -260,7 +260,7 @@ alternate_fishing={ [network] -discovery/base_url="https://discovery.straywild.io" +discovery/base_url="https://discovery.straywild.io/patron-test" [physics] diff --git a/scripts/build_playtest.sh b/scripts/build_playtest.sh index f1ff151..d54ba70 100755 --- a/scripts/build_playtest.sh +++ b/scripts/build_playtest.sh @@ -4,14 +4,14 @@ 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.20.1-alpha" +readonly BUILD_ROOT="${PROJECT_ROOT}/builds/v0.20.2-alpha" readonly WINDOWS_DIR="${BUILD_ROOT}/windows-x86_64" readonly LINUX_DIR="${BUILD_ROOT}/linux-x86_64" readonly README_SOURCE="${PROJECT_ROOT}/docs/README-PLAYTEST.txt" readonly SOURCE_COMMIT="$(git -C "${PROJECT_ROOT}" rev-parse HEAD)" readonly SOURCE_URL="https://forge.makearmy.io/woofmeow/straywild" -readonly WINDOWS_ZIP="${BUILD_ROOT}/straywild-v0.20.1-alpha-windows-x86_64.zip" -readonly LINUX_ZIP="${BUILD_ROOT}/straywild-v0.20.1-alpha-linux-x86_64.zip" +readonly WINDOWS_ZIP="${BUILD_ROOT}/straywild-v0.20.2-alpha-windows-x86_64.zip" +readonly LINUX_ZIP="${BUILD_ROOT}/straywild-v0.20.2-alpha-linux-x86_64.zip" readonly GODOT_BIN="${GODOT_BIN:-godot}" if [[ ! -f "${PROJECT_ROOT}/project.godot" ]]; then @@ -77,8 +77,8 @@ straywild code is licensed under GPL-3.0-or-later. Source repository: ${SOURCE_URL} Source revision at build time: ${SOURCE_COMMIT} -This private patron test release is distributed with an exact corresponding -source archive named straywild-v0.20.1-alpha-source.tar.gz. +This private testing release is distributed with an exact corresponding +source archive named straywild-v0.20.2-alpha-source.tar.gz. If this package includes uncommitted development changes, it must not be publicly redistributed until the exact corresponding source is also made diff --git a/ui/title_screen.tscn b/ui/title_screen.tscn index 852fd71..22f00f2 100644 --- a/ui/title_screen.tscn +++ b/ui/title_screen.tscn @@ -213,7 +213,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.20.1-alpha" +text = "v0.20.2-alpha" horizontal_alignment = 1 [node name="Spacer" type="Control" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent"] From eed361681a50ca94be043624f218980873ba7046 Mon Sep 17 00:00:00 2001 From: Voyager Date: Mon, 31 Aug 2026 16:03:21 -0400 Subject: [PATCH 88/90] Import completed creature artwork --- art/exported/creatures/2502.png | Bin 0 -> 5970 bytes art/exported/creatures/2502.png.import | 42 ++++++++++++++++++ art/exported/creatures/2504.png | Bin 0 -> 1683 bytes art/exported/creatures/2504.png.import | 42 ++++++++++++++++++ art/exported/creatures/2505.png | Bin 0 -> 1473 bytes art/exported/creatures/2505.png.import | 42 ++++++++++++++++++ art/exported/creatures/2508.png | Bin 0 -> 1622 bytes art/exported/creatures/2508.png.import | 42 ++++++++++++++++++ art/exported/creatures/2601.png | Bin 0 -> 2345 bytes art/exported/creatures/2601.png.import | 42 ++++++++++++++++++ art/exported/creatures/2801.png | Bin 0 -> 1607 bytes art/exported/creatures/2801.png.import | 42 ++++++++++++++++++ art/exported/creatures/2802.png | Bin 0 -> 1768 bytes art/exported/creatures/2802.png.import | 42 ++++++++++++++++++ art/exported/creatures/2803.png | Bin 0 -> 1629 bytes art/exported/creatures/2803.png.import | 42 ++++++++++++++++++ art/exported/creatures/2804.png | Bin 0 -> 2307 bytes art/exported/creatures/2804.png.import | 42 ++++++++++++++++++ art/exported/creatures/2806.png | Bin 0 -> 1992 bytes art/exported/creatures/2806.png.import | 42 ++++++++++++++++++ art/exported/creatures/2807.png | Bin 0 -> 1549 bytes art/exported/creatures/2807.png.import | 42 ++++++++++++++++++ art/exported/creatures/3002.png | Bin 0 -> 3594 bytes art/exported/creatures/3002.png.import | 42 ++++++++++++++++++ art/exported/creatures/3102.png | Bin 0 -> 3066 bytes art/exported/creatures/3102.png.import | 42 ++++++++++++++++++ art/exported/creatures/3103.png | Bin 0 -> 3237 bytes art/exported/creatures/3103.png.import | 42 ++++++++++++++++++ art/exported/creatures/3104.png | Bin 0 -> 3156 bytes art/exported/creatures/3104.png.import | 42 ++++++++++++++++++ art/exported/creatures/3107.png | Bin 0 -> 3375 bytes art/exported/creatures/3107.png.import | 42 ++++++++++++++++++ art/exported/creatures/3201.png | Bin 0 -> 2361 bytes art/exported/creatures/3201.png.import | 42 ++++++++++++++++++ art/exported/creatures/3401.png | Bin 0 -> 2252 bytes art/exported/creatures/3401.png.import | 42 ++++++++++++++++++ art/exported/creatures/3902.png | Bin 0 -> 4205 bytes art/exported/creatures/3902.png.import | 42 ++++++++++++++++++ art/exported/creatures/4101.png | Bin 0 -> 1328 bytes art/exported/creatures/4101.png.import | 42 ++++++++++++++++++ art/exported/creatures/5001.png | Bin 0 -> 3151 bytes art/exported/creatures/5001.png.import | 42 ++++++++++++++++++ art/exported/creatures/5902.png | Bin 0 -> 2897 bytes art/exported/creatures/5902.png.import | 42 ++++++++++++++++++ art/exported/creatures/5903.png | Bin 0 -> 2317 bytes art/exported/creatures/5903.png.import | 42 ++++++++++++++++++ art/exported/creatures/5904.png | Bin 0 -> 2722 bytes art/exported/creatures/5904.png.import | 42 ++++++++++++++++++ art/exported/creatures/6001.png | Bin 0 -> 2757 bytes art/exported/creatures/6001.png.import | 42 ++++++++++++++++++ art/exported/creatures/6406.png | Bin 0 -> 4084 bytes art/exported/creatures/6406.png.import | 42 ++++++++++++++++++ art/exported/creatures/6601.png | Bin 0 -> 1129 bytes art/exported/creatures/6601.png.import | 42 ++++++++++++++++++ art/exported/creatures/6801.png | Bin 0 -> 2238 bytes art/exported/creatures/6801.png.import | 42 ++++++++++++++++++ art/exported/creatures/6807.png | Bin 0 -> 2061 bytes art/exported/creatures/6807.png.import | 42 ++++++++++++++++++ art/exported/creatures/6901.png | Bin 0 -> 7209 bytes art/exported/creatures/6901.png.import | 42 ++++++++++++++++++ art/exported/creatures/6902.png | Bin 0 -> 5800 bytes art/exported/creatures/6902.png.import | 42 ++++++++++++++++++ art/exported/creatures/6904.png | Bin 0 -> 2693 bytes art/exported/creatures/6904.png.import | 42 ++++++++++++++++++ fish/species/bluegill/bluegill.tres | 2 +- fish/species/bream_common/bream_common.tres | 2 +- fish/species/chub_creek/chub_creek.tres | 2 +- fish/species/chub_european/chub_european.tres | 2 +- fish/species/chub_lake/chub_lake.tres | 2 +- fish/species/clam_manila/clam_manila.tres | 2 +- fish/species/crab_blue/crab_blue.tres | 8 +++- fish/species/crappie_white/crappie_white.tres | 2 +- .../crayfish_red_swamp.tres | 2 +- .../croaker_atlantic/croaker_atlantic.tres | 2 +- .../croaker_yellowfin/croaker_yellowfin.tres | 2 +- .../damselfish_sergeant_major.tres | 2 +- fish/species/goby_round/goby_round.tres | 2 +- fish/species/goldfish/goldfish.tres | 2 +- fish/species/green_sunfish/green_sunfish.tres | 2 +- .../grunt_bluestriped/grunt_bluestriped.tres | 2 +- fish/species/grunt_french/grunt_french.tres | 2 +- .../halfbeak_ballyhoo/halfbeak_ballyhoo.tres | 2 +- .../minnow_fathead/minnow_fathead.tres | 2 +- fish/species/porgy_scup/porgy_scup.tres | 2 +- fish/species/pumpkinseed/pumpkinseed.tres | 2 +- fish/species/roach_common/roach_common.tres | 2 +- .../rockfish_black/rockfish_black.tres | 2 +- fish/species/rudd/rudd.tres | 2 +- .../sea_bass_black/sea_bass_black.tres | 2 +- fish/species/shiner_common/shiner_common.tres | 2 +- .../shiner_emerald/shiner_emerald.tres | 2 +- fish/species/shiner_golden/shiner_golden.tres | 2 +- fish/species/smelt_rainbow/smelt_rainbow.tres | 2 +- fish/species/snapper_lane/snapper_lane.tres | 2 +- fish/species/sunfish/sunfish.tres | 2 +- fish/species/yellow_perch/yellow_perch.tres | 2 +- 96 files changed, 1381 insertions(+), 33 deletions(-) create mode 100644 art/exported/creatures/2502.png create mode 100644 art/exported/creatures/2502.png.import create mode 100644 art/exported/creatures/2504.png create mode 100644 art/exported/creatures/2504.png.import create mode 100644 art/exported/creatures/2505.png create mode 100644 art/exported/creatures/2505.png.import create mode 100644 art/exported/creatures/2508.png create mode 100644 art/exported/creatures/2508.png.import create mode 100644 art/exported/creatures/2601.png create mode 100644 art/exported/creatures/2601.png.import create mode 100644 art/exported/creatures/2801.png create mode 100644 art/exported/creatures/2801.png.import create mode 100644 art/exported/creatures/2802.png create mode 100644 art/exported/creatures/2802.png.import create mode 100644 art/exported/creatures/2803.png create mode 100644 art/exported/creatures/2803.png.import create mode 100644 art/exported/creatures/2804.png create mode 100644 art/exported/creatures/2804.png.import create mode 100644 art/exported/creatures/2806.png create mode 100644 art/exported/creatures/2806.png.import create mode 100644 art/exported/creatures/2807.png create mode 100644 art/exported/creatures/2807.png.import create mode 100644 art/exported/creatures/3002.png create mode 100644 art/exported/creatures/3002.png.import create mode 100644 art/exported/creatures/3102.png create mode 100644 art/exported/creatures/3102.png.import create mode 100644 art/exported/creatures/3103.png create mode 100644 art/exported/creatures/3103.png.import create mode 100644 art/exported/creatures/3104.png create mode 100644 art/exported/creatures/3104.png.import create mode 100644 art/exported/creatures/3107.png create mode 100644 art/exported/creatures/3107.png.import create mode 100644 art/exported/creatures/3201.png create mode 100644 art/exported/creatures/3201.png.import create mode 100644 art/exported/creatures/3401.png create mode 100644 art/exported/creatures/3401.png.import create mode 100644 art/exported/creatures/3902.png create mode 100644 art/exported/creatures/3902.png.import create mode 100644 art/exported/creatures/4101.png create mode 100644 art/exported/creatures/4101.png.import create mode 100644 art/exported/creatures/5001.png create mode 100644 art/exported/creatures/5001.png.import create mode 100644 art/exported/creatures/5902.png create mode 100644 art/exported/creatures/5902.png.import create mode 100644 art/exported/creatures/5903.png create mode 100644 art/exported/creatures/5903.png.import create mode 100644 art/exported/creatures/5904.png create mode 100644 art/exported/creatures/5904.png.import create mode 100644 art/exported/creatures/6001.png create mode 100644 art/exported/creatures/6001.png.import create mode 100644 art/exported/creatures/6406.png create mode 100644 art/exported/creatures/6406.png.import create mode 100644 art/exported/creatures/6601.png create mode 100644 art/exported/creatures/6601.png.import create mode 100644 art/exported/creatures/6801.png create mode 100644 art/exported/creatures/6801.png.import create mode 100644 art/exported/creatures/6807.png create mode 100644 art/exported/creatures/6807.png.import create mode 100644 art/exported/creatures/6901.png create mode 100644 art/exported/creatures/6901.png.import create mode 100644 art/exported/creatures/6902.png create mode 100644 art/exported/creatures/6902.png.import create mode 100644 art/exported/creatures/6904.png create mode 100644 art/exported/creatures/6904.png.import diff --git a/art/exported/creatures/2502.png b/art/exported/creatures/2502.png new file mode 100644 index 0000000000000000000000000000000000000000..467431b449e65f3034dfc091fbcf0534f427dee8 GIT binary patch literal 5970 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 TT$uRB$^mLhnu;~@mf`;ccK=x5 literal 0 HcmV?d00001 diff --git a/art/exported/creatures/2502.png.import b/art/exported/creatures/2502.png.import new file mode 100644 index 0000000..17bcad9 --- /dev/null +++ b/art/exported/creatures/2502.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://busj0feq2dncu" +path.s3tc="res://.godot/imported/2502.png-3922e306611b91541a86520cf32cbdbd.s3tc.ctex" +path.etc2="res://.godot/imported/2502.png-3922e306611b91541a86520cf32cbdbd.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://art/exported/creatures/2502.png" +dest_files=["res://.godot/imported/2502.png-3922e306611b91541a86520cf32cbdbd.s3tc.ctex", "res://.godot/imported/2502.png-3922e306611b91541a86520cf32cbdbd.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/art/exported/creatures/2504.png b/art/exported/creatures/2504.png new file mode 100644 index 0000000000000000000000000000000000000000..d0279d826c0ff9a749d3d912a6eefcfb20b274bf GIT binary patch literal 1683 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 P00000NkvXXu0mjf0=tY! literal 0 HcmV?d00001 diff --git a/art/exported/creatures/2601.png.import b/art/exported/creatures/2601.png.import new file mode 100644 index 0000000..7444643 --- /dev/null +++ b/art/exported/creatures/2601.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d14jvhurcfryb" +path.s3tc="res://.godot/imported/2601.png-912942ea4c6b2c66982e089ee46fde12.s3tc.ctex" +path.etc2="res://.godot/imported/2601.png-912942ea4c6b2c66982e089ee46fde12.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://art/exported/creatures/2601.png" +dest_files=["res://.godot/imported/2601.png-912942ea4c6b2c66982e089ee46fde12.s3tc.ctex", "res://.godot/imported/2601.png-912942ea4c6b2c66982e089ee46fde12.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/art/exported/creatures/2801.png b/art/exported/creatures/2801.png new file mode 100644 index 0000000000000000000000000000000000000000..ad8294db2ae8f27040de1a27e0fbb41580e78a20 GIT binary patch literal 1607 zcmV-N2Dtf&P)+iT&ZCckc4laq!A@zRg+AEUg6&omD29g8*6pe!_zJihwctKNVpcaK{zI~e z#;kvV(HI^kpc_}T5>R%1Y*rT*LEEA&P+Nr7LQ9cShCZfqXU^u_c2*wKLV?s|J)h)e z&Ybt}dw=J5eisx9g+ifFC=?2XLZMJ76bgkxq4+6q17S_m`uQ1gA0T{FCX1@F5;3p7w8R@=I*}}Qz zpIY zs>({RS*;|w6ZxXHfx8#a$D&*0&>eurIHBF(*swINx*~hjj$a+^j#}S!zMtb==Lriz zd|WK^Z=cQnuf8$P_4p$mb2C^1?7qlW?M4L9q|vglsxoKHI~hrc2m`?o^(VSyaUDD3kO;{@%LQ7 z<R{#ThsWdvcDtR#L?>NcrvBiUmcid-_qc{^f1E2^yhM4SMF0UtQH`DUx9r7$JiTem~7E-_qIHfnk`2 zT)}^ioF=#6m!`pc4;~^rBOSLZ!ED>U4d{g+t!&NkX{3=a;Cs>`tIH#Bc4jpb8lK{V6wiriT z%$N)`j1ZcxVbS#w+b6l5oa&TE#K3N|;YoIPc6Oa@2Yh1@psu;TwqQ<{i%lzYxvi*} zyqrwt6&Dbfl*;uYMf~H6yRUn^)oSJlQHjmClfTwH#luU>$;wFM+heWNH8gQ=`CV8n zddl`4ABvHVyERH({{H3;_Ig4+rwB8&5t+f|=G|&8+Sm3a3+7~# z;q#C@eD+4eHhBh?grVRnF}mB(<6Y=>2O)na!LDW^*FaDKpZ&TFVFf2SK9%gPzvBlcJt4FA7tU3g?!g~QpSkQz++bv zKq4By_!P^8B%+a(o5#_{uUY%tGX#1%NYH!P_Gt?%7G(}kDa>nX^FNx*{C2CoWnr`Gyt3=?6&;fjVp&q?V`7}m6tFK~ zurl)$v`af06_JV6zS6*#X z`9Hu8)LbUmxP1;Q6bgkxp-?Ck3WY+UP$(1%g@T_E{{=jGAIqaMHNF4<002ovPDHLk FV1jS@AI$&& literal 0 HcmV?d00001 diff --git a/art/exported/creatures/2801.png.import b/art/exported/creatures/2801.png.import new file mode 100644 index 0000000..512f812 --- /dev/null +++ b/art/exported/creatures/2801.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cc7el34sfad78" +path.s3tc="res://.godot/imported/2801.png-d1c5df9faa2d1eb1cc3453c8e18d4049.s3tc.ctex" +path.etc2="res://.godot/imported/2801.png-d1c5df9faa2d1eb1cc3453c8e18d4049.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://art/exported/creatures/2801.png" +dest_files=["res://.godot/imported/2801.png-d1c5df9faa2d1eb1cc3453c8e18d4049.s3tc.ctex", "res://.godot/imported/2801.png-d1c5df9faa2d1eb1cc3453c8e18d4049.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/art/exported/creatures/2802.png b/art/exported/creatures/2802.png new file mode 100644 index 0000000000000000000000000000000000000000..419061017872f8b48bafd6365007c1abfb9ebe35 GIT binary patch literal 1768 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 bg5dBIZ?g@-{Qj^A00000NkvXXu0mjfvK~AU literal 0 HcmV?d00001 diff --git a/art/exported/creatures/2803.png.import b/art/exported/creatures/2803.png.import new file mode 100644 index 0000000..5096057 --- /dev/null +++ b/art/exported/creatures/2803.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cjwm07240ehr2" +path.s3tc="res://.godot/imported/2803.png-c2e31a8adbab3bf9899bc74b3feb4abb.s3tc.ctex" +path.etc2="res://.godot/imported/2803.png-c2e31a8adbab3bf9899bc74b3feb4abb.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://art/exported/creatures/2803.png" +dest_files=["res://.godot/imported/2803.png-c2e31a8adbab3bf9899bc74b3feb4abb.s3tc.ctex", "res://.godot/imported/2803.png-c2e31a8adbab3bf9899bc74b3feb4abb.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/art/exported/creatures/2804.png b/art/exported/creatures/2804.png new file mode 100644 index 0000000000000000000000000000000000000000..90952fdca6a853fc0796933cf9a3a4813a9a5222 GIT binary patch literal 2307 zcmV+e3H2fF>y(w5Jdr%B?u#+FzmC>yFKqgA{x*kVzuOb{sAuc{oe2U zyZ3(YeHRcA5D*X$5D*X$5D*X$5D<7cC;)7i0*UyR!3;@^BvZzu5VOHR-ulffGBVTB z4nTr|3?pKWMutc5f|Kkv5^c7Sy|2$CHnW-R&zr%w@6Ve>0L;YzBtOP%AsNZBBr~N` z{GKf{h|Ods`?h|E?0bDC(QCDQ5%z4I!4-jekjc>f94ivQ8~}d>umix)0Av6Vcl8l( zd&xAerK24w@nLW_2l3MUB&^v{fGsPAW6|1ttl3creS`=dt^mXgpWZ<{K&bnCUTxIN zYwH@^$~c=8k>NDxZV_1mxZEtR-wdGL#e!u!+chdJlyU`FmW510Y{2&>4aTe6Pf-0?fG24h|Hw&~_xV9W zfJ%oSbqxW~G>yn`C1g?!Bn;pW0(A`ye0#V?g{2FIz+zD0ndR??oTpOGEXz#N<}G}B z1d6XzAu}x=MOSWOSSRBEKvr$bF7O0Tc?$xrPaGBz+!cm zzw{)6d-2OUjcC)_1qRf)!jKqm=fxLZyb3}nSWN~j+4!#|U7plqfV+_?W~hQ;sWNaH zMIstQ609h?+Ju~R&hJ7)O-qp=yLbPafp$22Enq?553p$K@WWB>!ly+IXm0cI%ZHmO zL6$%vr7=E339p|;b32O(qwKdQo)(X5jvM&nflH{YY3)@f)$2bfT+d3DnWU1=E~7JV zy}+bs#Al^$42rh$N!>|Syd7XDK-@$48Xw^8bw=KXQ+y$$ewV9#kZO#Gkh{?Ak@Gp3 z)vefh$c@s9#=8zO)0_Ax9m9)%cD(k>bnrz>1Xz}!)}=$by#XqP6Z+^8JqG6LQeM@H z>e>z{6%0JyAnF?2C@gO5v1mOLn)xr7M8go~xv@0MZ3^eni%4%B;eSoD1z6zmP`I^si& zxt;fj{=jh~qR-Fx0|Zhrg_tmB_h#-8_Qt)QrM}ic!JU&XmsQvMp%hEd>ZVZJ(1G=H zvSBx9@Miue7@K{|5At?jLQDLD3VC8n57 zeDl%sRXBdJ8Vzl3e*3i;)hNH#v>U()0NfOu20+I649VkiI&Kp$qG<$K7Om|rjLizi zbFHIyM%|HhcuTJsh!SDPqh@+;Dm^_3>1^b*LEce{{9C ze3Q9x8%XG?)QrnMWyc8SBgM@ z1!t0L=0|oKpC7nZEytY4#jqI~F>gf){)0;PD1H@ssY7YY719sR9R16*$%bSiIu-RGqWA4Q$t*%jG)% zyFG3W!N`c# zm_?=Bn;tFh{Ynr4N~(X_Jd{bS-H)C`+uxeMN;DQ z(5fZacjyXN(U4CNT@lyxstYCK+IfQsG+7b$%Q2_&N|3 z&L9{h$V`yA3$J<}8AGG{JK%}4)hUDxA|gxB&|| z#Nw~+4Ue2~K&!s(F!oTP9%S$&yN;~+$!Pu@e!09FWmQeE8dXTN+pzGJBh)}N!Q0^O z;|fda*{l>Jm7HKhjDdzc%nH9hv^&9p1O;FMfOG(xCXb2z_EkVYKtMo1KtMo1KtMo1 dKmd;l{{>!SBn$KX*Y5xT002ovPDHLkV1f`2Xm$Vq literal 0 HcmV?d00001 diff --git a/art/exported/creatures/2804.png.import b/art/exported/creatures/2804.png.import new file mode 100644 index 0000000..e6147c2 --- /dev/null +++ b/art/exported/creatures/2804.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dgcrfxo1k4juj" +path.s3tc="res://.godot/imported/2804.png-f86c52a01f04302b057cf526a498e87a.s3tc.ctex" +path.etc2="res://.godot/imported/2804.png-f86c52a01f04302b057cf526a498e87a.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://art/exported/creatures/2804.png" +dest_files=["res://.godot/imported/2804.png-f86c52a01f04302b057cf526a498e87a.s3tc.ctex", "res://.godot/imported/2804.png-f86c52a01f04302b057cf526a498e87a.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/art/exported/creatures/2806.png b/art/exported/creatures/2806.png new file mode 100644 index 0000000000000000000000000000000000000000..acb930e82266c70893c62d08beac6e04f939ce21 GIT binary patch literal 1992 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 literal 0 HcmV?d00001 diff --git a/art/exported/creatures/2807.png.import b/art/exported/creatures/2807.png.import new file mode 100644 index 0000000..af51ff5 --- /dev/null +++ b/art/exported/creatures/2807.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bdus4qo0ebs3e" +path.s3tc="res://.godot/imported/2807.png-aceaf0f586f975d29e318a9513fc3125.s3tc.ctex" +path.etc2="res://.godot/imported/2807.png-aceaf0f586f975d29e318a9513fc3125.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://art/exported/creatures/2807.png" +dest_files=["res://.godot/imported/2807.png-aceaf0f586f975d29e318a9513fc3125.s3tc.ctex", "res://.godot/imported/2807.png-aceaf0f586f975d29e318a9513fc3125.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/art/exported/creatures/3002.png b/art/exported/creatures/3002.png new file mode 100644 index 0000000000000000000000000000000000000000..2ae7e7339d52b9fe8ccc1765cb2fba17b99c59d6 GIT binary patch literal 3594 zcmV+l4)yVgP)%o45eOz9o=^KuCxQBvz4zU^@4j2$ z!Gi}69z1yP;K73j4^58(OtAV>_Uv#)9-gksoH?ol1iulcUvaKm4^C4*i)!xvlV2`) z_{&J%8s7=nr~*#@TMaOxJ+AoCLXl35(HrBqf5KQ)&CZuAqR7b3(+%*OC|~E2O-YN) zQ9@2?XHsH6@?}f++5GSDM7*-Lk(r%GYI-*N4;Pc0|olL5b}oJCpLs+_7{O z5X0}y0N&8;&sW0HA{R*|3QJCC42={lNmsb5t&1&rDo?~{bPrZYDpgpL=AtM~AvFiu zgn;YJPActA(zDM}l@1QWJr{uo&Zg0@ndV9Y6 zv3M~-@^n}C@4`cZ)!%CLX(xDp*@xtu$)?P1^m&WlLlEp7LEiMN2k-W7ZQ~@DoSkzZxP?+Rvn@a!YF1F>X%s-~F_9?;g-I8&A1o`HHOj?=GwmnCh zELe+Q*x%=lw%Dy9Fn7q$AF3omVM~hS)pZ&v1+aI7!qF0itAkx6l&D-kQj%Q+nVsGy zxH5rjCw`#R+VlU70nAgnQ}yf(0)Ouxm8!#3E%7b7xV-1K?=;=T^W9Y0(!xhzt~&;tOKG@*td(GMvgCo~T6w91V&G{Y9C)X$ZK#>#kN`Su zcvL0Sw^n%RR=kd~Fa^zsL|`7Vmah+-A?3s=rp$Q5>q2J@aVbi4ZH`R5Pn@@UKNrOb z{sj$Tiw)vxKss57Rn{5Oa47}&$g z_9HfGoEo=`o!k>h_)iTGXnRx?H@DOZ9Ijll?=`GYq=WA|PbaqE6?V0rho(t-ToFXV$zld{4`W-Rjhn_iqMtmRqQr-j^?pXv{!C=lpK(2j6Fb;&Qju4d(KKl+ZEcwZFz#4@C%$ zb$%abakbGWF}>J`oas3g1o#@kYCdq+xpOENkx6Y~L6+Vn^7O&0^W4gxi}yawz1jZ+ z{^Yo{AQ|8%jfK}t!x2w$%68IG-1d0l3Uk7|6|itU8BqqUx0 zo`<;5++k+qu3>@}wQldM=PpwZN@mBpyF0HGXo2FA-M_*Ck8hRKxL`*%*lS>TBn)XG zsCL0OxsnBOKaSfYUUFSq@K#~LP|-km-7B_-zfJ#c;h0o~g!Cdx${n-{YsQ2pW;+iZ zIi?3ge%2#!V1yu4-$a0dAn?6HK~uo;gN7>)Hk^T@8pK}>rsI;D-akJmBo)A@&n0m| z7z*Z9K}7e4?R-?h(PAibK))~u@Pb9d1SSP4LIiiMmQ*|8tD7*c>4qNYdK@heoQjE( zh&PF86G;5FBpOp*r%|cf`5}`={&=h1I*Cbz+)@}71Iv2~QcEG~4+`7X3kF+V7mW#e zu<|R^Sa=vF^>j}f{Ej5^R)JS-7w_hvTA;=Wn-16RWniSqb({@?NdJa`v#>%i@V!tz zdf|WQn?CQ~_bfN9b<2O{yy05LxbSFAxHSToR z==j6=$&bFRZ95_9^OnY`0EIEb6iRD_{?|Bxqqe!FHEc*$S+`&1s>Sf99ZoXJCAn3S zuk%#nqZ8rR_@fo-D>?qneC~YdW0tpm$+#Aft8weF(U_x0-F6}68+`0 zX^G7aORjN`wXeW^FW)Zd{3Q$smxOprQc5tqV=qT7VMKln)b10nk1&bL& zaot!yglg=3K_RnhAX!nPuxJI`eD6%w50c#a9q2KA&pqP2)z`NyfzZIaG!(NvpZt~~?6bazmq}sjOYd^%NXkzJCeg?>CDOu{!WwQE5U!x_|Mzup zCqB1*>ogJ+Jswm)DL7jNPplW*(ayaZJ^D$)(rdG`may-T`tK7=-9-BeBwd08786GF z-*{SMMY=}*>ndB0NQQJ1RF%iDv}Q1K7p*4OR#0C?OZ8Ktva)648R4PkQ>pTbH0GW8 z+JcgO2ag0@ssZZo^HM0&kFPKEPzkpP&Q?oSr)$jUsWS5F^H+R#4vhUA4$f4J{9vI& z5FPH0&i^_o=~1b&B}e1qQyNYU{JjMQc4@P_h}0d;^W>@MTLW5gWw`TWiLcWW!mkNJuBBu=yB zv`ersOVDDWq}9Y#2qDPbzmnefE@SU$f7T^R_MX*rg+nWyw0dZlOH{dxdFuy_p>cD= z88J_zS*4R{!JF7}Acu0NndJ*!rEP@Yd5Rp%l}hT#OiskSZ~WJ{yfUkaw7|(^_}|X; zS4EI^@-(dj4g1c%tn~o1*=O^_dqxdW6@_JMz5quV4yXRiz!edK)Ks!Jy^69*Cxc_WF|B!k1RKOIt2--R1_RXM72P4K=GB>h z<(9FJ3T=vhAcgJO(7zRwHCI@;OY%`#dlt=_%(T~5kbEMG*suaV9SY6fl-Qko1>9D@ zXwklHL}uzsecC8T*P)k1@B2zJAlgh+o3PD`Hf9Yyx9!{+56WIWdl1_xg5-lcu(={| zDt^XJ;BYt?k?Oa5z;^i=-k`oxnyRSS$fWO~`UVt3dkFT00gR80? z5f@NiM{7CkK_XJu;Fqx57&}a@K(CYajtRlr$A_&~&*QVtmg{YAY|8fnXNJ#ppVKEk z_dEx3YquuVYy_yCE$3otKaxGxzZ;dC*p8uCtya23xBJC%JT_yI;@|&AJN8X`2TOGU zJC7F7zgw8$2}{>*AS5VYQ?#}TJV|jBQ1fH%W=WG=>^bF^liop!( z-H{y;@ACCQ8{Q^`bss!OxHVMY5&rfIrj}2w%kSuDW(A=b6|2}YZ{uq*vGrgc*LDqK zM0X#mDodOG%~01_mJCgUVg4V}`Tp1Wp%fy5E$mAzSBd1o_2w4xiKu!7!j(7*ppgtz5Wj zLv7vn(s^&z!@azPY5%C<*TB|s*!vL{AH=mS$^jd7> z2sz#6k(%pZSZ_V+1(&AR7X-GK+lD`;A-EKmL@_4~wpqe^?v!&6zaXbyvV=o#?&eEIbr=C54OwmnID z@y>CX=J)Ov-M0FntFoA}*>73?+0uLKHxT?fEUZlVc+#PhMHG}&lbV*n!lfVL?`xr` zq#U&(kBlO160nH>azcQ9k4+dU`}OMFB=7n>c<|uCg9i^DJb3WnfuF(u0Zx66*9Ahr QC;$Ke07*qoM6N<$f?Ew300000 literal 0 HcmV?d00001 diff --git a/art/exported/creatures/3002.png.import b/art/exported/creatures/3002.png.import new file mode 100644 index 0000000..e193cfd --- /dev/null +++ b/art/exported/creatures/3002.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b68vlgtclvkfg" +path.s3tc="res://.godot/imported/3002.png-a87d71158798b43b6bf702a6e1664b4d.s3tc.ctex" +path.etc2="res://.godot/imported/3002.png-a87d71158798b43b6bf702a6e1664b4d.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://art/exported/creatures/3002.png" +dest_files=["res://.godot/imported/3002.png-a87d71158798b43b6bf702a6e1664b4d.s3tc.ctex", "res://.godot/imported/3002.png-a87d71158798b43b6bf702a6e1664b4d.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/art/exported/creatures/3102.png b/art/exported/creatures/3102.png new file mode 100644 index 0000000000000000000000000000000000000000..fe4d8fb4e88cf2fea72caac4f28d2cbd6a67567f GIT binary patch literal 3066 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 IM6N<$f}L)_q5uE@ literal 0 HcmV?d00001 diff --git a/art/exported/creatures/3102.png.import b/art/exported/creatures/3102.png.import new file mode 100644 index 0000000..47e9c80 --- /dev/null +++ b/art/exported/creatures/3102.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c4d3f28rf86bb" +path.s3tc="res://.godot/imported/3102.png-951ca90331737e3057749e1bdbd88c44.s3tc.ctex" +path.etc2="res://.godot/imported/3102.png-951ca90331737e3057749e1bdbd88c44.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://art/exported/creatures/3102.png" +dest_files=["res://.godot/imported/3102.png-951ca90331737e3057749e1bdbd88c44.s3tc.ctex", "res://.godot/imported/3102.png-951ca90331737e3057749e1bdbd88c44.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/art/exported/creatures/3103.png b/art/exported/creatures/3103.png new file mode 100644 index 0000000000000000000000000000000000000000..3d3d615899c08b9d5d5fd2c95ec2c437b2305e61 GIT binary patch literal 3237 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 Xz98;3y5|{k00000NkvXXu0mjfh66BL literal 0 HcmV?d00001 diff --git a/art/exported/creatures/3103.png.import b/art/exported/creatures/3103.png.import new file mode 100644 index 0000000..9743e89 --- /dev/null +++ b/art/exported/creatures/3103.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cjtncgnb0hcsj" +path.s3tc="res://.godot/imported/3103.png-f3b4b5bb43b7611f7c448dbdfff36375.s3tc.ctex" +path.etc2="res://.godot/imported/3103.png-f3b4b5bb43b7611f7c448dbdfff36375.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://art/exported/creatures/3103.png" +dest_files=["res://.godot/imported/3103.png-f3b4b5bb43b7611f7c448dbdfff36375.s3tc.ctex", "res://.godot/imported/3103.png-f3b4b5bb43b7611f7c448dbdfff36375.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/art/exported/creatures/3104.png b/art/exported/creatures/3104.png new file mode 100644 index 0000000000000000000000000000000000000000..425932e656cb59e81061b73bc709a3b7bade1871 GIT binary patch literal 3156 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 D{7Ein literal 0 HcmV?d00001 diff --git a/art/exported/creatures/3902.png.import b/art/exported/creatures/3902.png.import new file mode 100644 index 0000000..a8e5440 --- /dev/null +++ b/art/exported/creatures/3902.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ddc556gcby50v" +path.s3tc="res://.godot/imported/3902.png-485bc4f9f1a505225bdc037111e32499.s3tc.ctex" +path.etc2="res://.godot/imported/3902.png-485bc4f9f1a505225bdc037111e32499.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://art/exported/creatures/3902.png" +dest_files=["res://.godot/imported/3902.png-485bc4f9f1a505225bdc037111e32499.s3tc.ctex", "res://.godot/imported/3902.png-485bc4f9f1a505225bdc037111e32499.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/art/exported/creatures/4101.png b/art/exported/creatures/4101.png new file mode 100644 index 0000000000000000000000000000000000000000..74a068baa7949253fd50bda29cc2d620a4255518 GIT binary patch literal 1328 zcmV-01<(44P)ab~&) zCYzaa(?GH~V_Y(q8E3L=naWg_A#T8!fRl%W4RzAeho$X3%e@txLa{@pe|SDgY0vFB z=brPs=lo6q7=~dOhG7_nVHk#C7=~dOhGFhKv&m@i;{jAKJvN4ZzjY}+wBvPpuWv5k zKH>1PKrTc&Ldd7?civPDP&{>ZOk0Ubw)+% zG07AKd9EB6=!WNcgoSCL3)evu^-ycnARq{~u_eDB9Ubj(IvnT^nylC9LQ{Jul_*^f zU>`=$bO67PBmf4EBi)t>W86L z|CJmVr_+g!jt)2+j)6eQu3T}UvGMXP^=s?u@mo_fyuQGxsnu%Xa=9V^I0zw9oY_R= zEho#FmkEo-h@#T+A?HhijOppL#P~zx#<$(QHeCC=7YVTwFlT-WrcI53(P)IlV!?{F z+p*_^&B{|f-{OYX7kHY=-~IBQl~Re}5T--A-L zx3{6!ZpT%dUCB8Gg;r=ZBk1?I^FrX9tenl0ct-HdlG~`+bmi(!O2mv3%8gRFY`OD?nyhoR`_WC^rLI zQJxUNk)z*WVP5XQB;%%~VSi_+d9K2pHRI1^Zxy$8( zAP7*a)q}n}{@oYw_IU=%e_g(YEn6#4yeuDO8#m+hsXA0tR9yP@hvO6f-Hs4KEfdU$ zjL_lbl7-5(qSA6XN`n#<8FqAm24AmPRh+l7q)?fRoS@{0zx)0kl)bS+sWdfVCKg$r zgmrELW-oXS=T4u)o9~pPqw^A?qsQZ7Yb!jSJ|#iQZJ&5N71XCf=B!zmk(`X5&YZ@= zCG#Os3WHvR!C-*RX2aHP<@oZeqnI)!76&VL;6m$lP!Oc1B_KX2V<&)hcNqUfLP&dB z;xr`?MWy8-C&5t7lXDV)i*jLRY62}TuwriRQYBFGgeO~4Z@-T!#yqaC>claeIaP=0 z@sp5}F=x1OkiEMXrBWpQVxNQhwqSA`h7A_2K(R+!Mnv48t%C m!!QiPFbu;m48t%CM#n$tjk!olS=gEY00001pYE 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 literal 0 HcmV?d00001 diff --git a/art/exported/creatures/5001.png.import b/art/exported/creatures/5001.png.import new file mode 100644 index 0000000..c87c852 --- /dev/null +++ b/art/exported/creatures/5001.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://byil5mr6w3j1q" +path.s3tc="res://.godot/imported/5001.png-ebe37fb8bd4263bb83e36bb5890b5641.s3tc.ctex" +path.etc2="res://.godot/imported/5001.png-ebe37fb8bd4263bb83e36bb5890b5641.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://art/exported/creatures/5001.png" +dest_files=["res://.godot/imported/5001.png-ebe37fb8bd4263bb83e36bb5890b5641.s3tc.ctex", "res://.godot/imported/5001.png-ebe37fb8bd4263bb83e36bb5890b5641.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/art/exported/creatures/5902.png b/art/exported/creatures/5902.png new file mode 100644 index 0000000000000000000000000000000000000000..809057d320c15837b754b821c64965b0d8e380a5 GIT binary patch literal 2897 zcmV-X3$FBuP)lj;^rba{GvV`y!k7I+b&ma{B_8fh?eb z$z(_tLK>kc$_Kw^5C#Kceq% z{mP-#t{GxDJ#Vaq2Rekab>~qIo%E6LpkIh)8TJGhjVO23y*F)VQf29u1%Y~-Qp+erEGK@2F242>tO$Du4C zM8Gc`OVqQE$!q4k7{SJrG`e5rMCn=$zgBHRLPF6yuYJFwvDmtF)cK+G#&;qjSp`z$Ox6UVZpaTP0;H>xpwTkdUWTr+oK6SnS5Bf#H`!BD7K z2olPANBXq}P+crIP(D5I+0V6`@ej}D)4fkKEOH?;)+JyHEFjlx*Jj>kbYeDos8=DK z>+V1X)m^N;6SqH+7C{F{&#upeh*vQgv>4UM&Q<92f|0g8M-mWRjdSaxSu&*(6+0Yo z3L)%e4Ql4-yTz#fA#B{1hQ$o`w{NJq|G3xPoV)BRQ>W=yiWehBEn)VP^MUx{!i=oD znYMNsA@wdYyuo|LE&fBR${EyIUw*mpFq#B2uoOJdW4`s_b+mPg0^#D@8mSfADi>$PNt&UBHN zCu-fQZ|N6^j}H&EP2Kfz1c~dW;AcEZQ~ycYgW+_Geqr5Y<4SupibN}8kPSx_|e~$q|`adx%qgwR{ydF0u z*+RR3J{->*O=dwyt%7>L-L{%8)i%>14|Q`vTvCV>a3=68WQ<<;fCY}6#$v*ud3xPn7h zLV2bO^ca)QYZGen$+aYW!oZ2;J=nCzds`2e$|`@P`vhOZ@XlPla*A*FUEos2Vw$uX z$Kl=c85X?=BQ9D8JYD=kifxT1ZvK(+jBPwm3xoE~LC83?=kKiXFubRX@x~(Rl0w*H zU7)#d5gpq!z+}4h$~^Pi5wvoRDeiOA;+b?E9D`kCkn-U_+461!&HWQUF5tj1<+cVe zl~!mpnl$k$cLmqR>pg}$&%x!>=b6wii^c(cN(c||9ig+c7h8A2HCqtdcK$$TdXbqW zcz>;j@NSc-`B*qc!!x*~O6<12uhlOSuVCXV+cLI)FSOjDq8jr`er4V~S}0aR;U3o{ z+}0qi&(^Nzv^M-A6!P#gAb1M%j^(rC>vXOD11*iJ0d}cTdMg7+rId*mCay1O5OO%a zXCQs=mpPEXQY&j)u`d_p9#r?P<%~RlW1jBRmA6pGvsjDS0r5`853GWt(L#(Sv-VE7 zXFip^J4&>zicy6WamqA^^KvgbIG@5qKHF`{2uxJzKA4Y{_*Aml$!MR=e&hW z2`S#*w#n|rGl@ax)IrH1Wh|eVaf0o@9m42Kes2zi83DS zytO=wb#FK0^hGzJ)huK=6q3?raOTKfhK9Y$1-Un;$yl)eYTlpiGi5V+^&RR6~_9i9Ez zW&4<&?>&hpxCiZ{Mo>xF!{}BUFiHv^toVT!-gMnErdu~QiHT3i+W)jmLHu(-Wm0yf z(Q8tEsV72-Uxshkh>s+H|DT6nA*+((=`pr&O;<5cfWUx+7n?7WR_-x3iB;38x;wFo zYqW6<*UArCrjT6_#Cr+Di63I7UiJSv=YmxQI9xKD-)%&N_WSPxzPZhK#pko_bZ*xW zcY#maIBnj3R85NN4$}2o3{ZrhB;n}N^?4dcJXD+%i`Z^ki4X=gM)>kyvpDhHcCCx} zxk)s27apF}jK16YE?(^TB&)V!ES()q?oa2jSk1W&Yv4C$Y#`xvLy+adB%70`XkU>k z_!;Rv@uDYnUuNO5atkDh)U2H?ikH9}TVw4JcZhbfZ1kATcJauNc=6y9ycQ6Uj4dLXr>`i>yw%b{UO^(}4QPtJQ7x>J?iz^;7ItNysKiSj`6UO9iB) zbkZ`G+IMzp3vE1h%gx(ji917Nc4~_qnb$oWJbXg!6rT^;-`4<})xh4vxg0*>AGR{gfklzFFD`tEI5{m_1X}AN51V|0T`; v>H+BJ=;-L^=;-L^=;-L^=;-L^P|SY-Dr###yCjbl00000NkvXXu0mjfo@2x| literal 0 HcmV?d00001 diff --git a/art/exported/creatures/5902.png.import b/art/exported/creatures/5902.png.import new file mode 100644 index 0000000..2c8a5fb --- /dev/null +++ b/art/exported/creatures/5902.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://0k4qnt7wusam" +path.s3tc="res://.godot/imported/5902.png-e3a13a1e827488fa86f34c2aad883127.s3tc.ctex" +path.etc2="res://.godot/imported/5902.png-e3a13a1e827488fa86f34c2aad883127.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://art/exported/creatures/5902.png" +dest_files=["res://.godot/imported/5902.png-e3a13a1e827488fa86f34c2aad883127.s3tc.ctex", "res://.godot/imported/5902.png-e3a13a1e827488fa86f34c2aad883127.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/art/exported/creatures/5903.png b/art/exported/creatures/5903.png new file mode 100644 index 0000000000000000000000000000000000000000..74a8af64d12aa97e4540b8aad40520b0923d5c50 GIT binary patch literal 2317 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 literal 0 HcmV?d00001 diff --git a/art/exported/creatures/5904.png.import b/art/exported/creatures/5904.png.import new file mode 100644 index 0000000..23458ae --- /dev/null +++ b/art/exported/creatures/5904.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dtapwjgdbcgr7" +path.s3tc="res://.godot/imported/5904.png-e43ba3245eadac7081a6a23e64ccc940.s3tc.ctex" +path.etc2="res://.godot/imported/5904.png-e43ba3245eadac7081a6a23e64ccc940.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://art/exported/creatures/5904.png" +dest_files=["res://.godot/imported/5904.png-e43ba3245eadac7081a6a23e64ccc940.s3tc.ctex", "res://.godot/imported/5904.png-e43ba3245eadac7081a6a23e64ccc940.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/art/exported/creatures/6001.png b/art/exported/creatures/6001.png new file mode 100644 index 0000000000000000000000000000000000000000..921959712933c9f994c4b6b89f4cc35e18778993 GIT binary patch literal 2757 zcmV;$3OeKQiJ3WB%&0NOj2X8Rjk9DC z872x50t7{kilc-C6b%wUje-UgWeL0RmhPIL}d9SK#x%bwsTelkE z;o;%o;o;%o;o;%o;o;%o`Tv6YjpnHm31O)(qXa@B@Jky3LjdZ|?CcLiKmgDHngMjP zRRFF6r~|MBK*xWT0rYh#x?4pA3}1DXhBDdmJtqChtrj8NmMP&k%^wn}4ytGx-abM1HUS|3Lu()uiE;DRb?C|Up`$YiMW;_; z;dVQmDJ_Cbs*72!2XUm(1E22Ojlk)FcyYmEI8JoHB;P5BoazIyV0ey80cstwSma}E z#g!RWfcp?VqT(hLMb(FgJj)e!EjkDwANiG5__D~MpEzvLW0hwaJ<5#xb+xL)-(O^7 zUMT<_EZ?R?z=~3gxA6c)QSh4VhVjAtV*LI4cl1$`sB>DNE zrK<}xLpXOQk82BvMPd>h7{w{QG9?@|^WdQ*A{t{ywxYdT3WqTb2z0E*2)!oEDmCW2Irl2~ z@xKc2riU|@966B*Am))hAR;t|u!^rp2390TKwqZBrnqCn>f6w!i?x|gYZ)xoqY?oQ z)ptCoj}^($P}CfUtG_!+@=s%Gm=E6Y^TwLIZ~E;4ilVqZW~NZU)6$~H8e$Qg13AwmueVZC`p2Y^bNz z-#;x|-PGMJ=_enChciV{XM@}gaO_Mw-dXvk*2{R0k02D#ShPunfu0F_#$HNZlT9S{jLy=4_Gfkdd?W;k>z^^t!$0`=`< zxbja84%`zG5{CBnc4+8DIQDHmHrn+ZuXmZ5m4}9|t_LnOHOQP|7sqj`(dJG#csK*4 z@o{*kpa@@Ixr#MOZ)-JV4M8&^2n8B0F3flP7y`pEFk&kZfdPnkENF=XKn=V-v;?AC zAZ|;As3QXub2q?p8TNqfmB#C#k%wVlW*W>}Z^5Lk5#x3G=5b0%A29e0Kr@_Dx*ZG4d#Og6;K&2 zh1zflz;tj11l5x~4Ms}ZKQLyLDd^fNnCQyz!8ET2W`FlW4OAK67eUUHoPZD#1bF(v z-oc(T!V6y8d!zWhC%|M!OStL3iaG0*=i&u`Mn>vTuMp9i1z+Qr+a|~^ zdmg3+H3)auuch=|?Cl*eRj~w}mc_X7tvhVZhY?pPF}h6mff4s4EQ8@5=n17t35KD; z9_s>%%@w$tC!(hb@%n5rmf*63Sq&Gp7ngHyEINzg&-y-i zur#$1uB=i6bxj1D)75x=juTlh`;#Xe4 z_j7yhCHFFU4;R26>KLs3>z2QmZP>B_wKuNgU2hM}vbBaz;#z3b1E1MjcWuL}6@4C3 zaj_B(cJ_UfPz3D95t^pC?ZiGTi(XDZPI}foBlQG4wyl|+1>Rk3@Wa~A+IkZE2Oty( zh>)W2L1Y+L{(bfVlq{GH(VaO|Gy}KPFR!rn9MS+rhDOSQgD3liYc|tbzc>~nH$#eRUtULOCWmOyc@GdQY;x^PzMw)QP@RMFrJYvB1rxH!G}a?|gPvX6{#b zf{1e7mmaCuEhD-*AY}!mr1a!D^5eJX$;y`!No-UM(bv;w0~zbrTDKiL3+jZif+7ZT zid;#Rk*j-U#L-H?{n}XwNO@ry_jo%BHVjjiT-Feqqaw(bnKQ`NnKQ`w_&7GWXs3x! z2#!#IF6uP5*g`D#2b7+&4INJ({R3aTbqZyd< ztm7^7_T&r!K#JdrH4DY0GFe7GTq@xdIeqjbE5LidayZ3f5UJn(f8vNmLQ=Lrg1j?d zOsc++u?86WGVni2_{9{?06aWAJUl!+JUl!+JUl!+JUl!+_>b~$2qFk=H*``D00000 LNkvXXu0mjfKlUK` literal 0 HcmV?d00001 diff --git a/art/exported/creatures/6001.png.import b/art/exported/creatures/6001.png.import new file mode 100644 index 0000000..a63cf85 --- /dev/null +++ b/art/exported/creatures/6001.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c0164i40101lq" +path.s3tc="res://.godot/imported/6001.png-6fd8c3ef0885c466baece687cd24d38d.s3tc.ctex" +path.etc2="res://.godot/imported/6001.png-6fd8c3ef0885c466baece687cd24d38d.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://art/exported/creatures/6001.png" +dest_files=["res://.godot/imported/6001.png-6fd8c3ef0885c466baece687cd24d38d.s3tc.ctex", "res://.godot/imported/6001.png-6fd8c3ef0885c466baece687cd24d38d.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/art/exported/creatures/6406.png b/art/exported/creatures/6406.png new file mode 100644 index 0000000000000000000000000000000000000000..15c3b8311737e8b6ae585c0df9fc5e6babedb33d GIT binary patch literal 4084 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 vDE5vhiqSg?2qAbFdG$f`@5;a4O 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 literal 0 HcmV?d00001 diff --git a/art/exported/creatures/6904.png.import b/art/exported/creatures/6904.png.import new file mode 100644 index 0000000..75051e3 --- /dev/null +++ b/art/exported/creatures/6904.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bqh7d4v8jrbpr" +path.s3tc="res://.godot/imported/6904.png-38739e4e48fbb83e3f65074a93d681bb.s3tc.ctex" +path.etc2="res://.godot/imported/6904.png-38739e4e48fbb83e3f65074a93d681bb.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://art/exported/creatures/6904.png" +dest_files=["res://.godot/imported/6904.png-38739e4e48fbb83e3f65074a93d681bb.s3tc.ctex", "res://.godot/imported/6904.png-38739e4e48fbb83e3f65074a93d681bb.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/fish/species/bluegill/bluegill.tres b/fish/species/bluegill/bluegill.tres index 1ad5656..181b969 100644 --- a/fish/species/bluegill/bluegill.tres +++ b/fish/species/bluegill/bluegill.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Resource" path="res://fish/day_availability.tres" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="4_texture"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/3102.png" id="4_texture"] [resource] script = ExtResource("1_fish_data") diff --git a/fish/species/bream_common/bream_common.tres b/fish/species/bream_common/bream_common.tres index 1c7398c..cc44fef 100644 --- a/fish/species/bream_common/bream_common.tres +++ b/fish/species/bream_common/bream_common.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/2502.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/chub_creek/chub_creek.tres b/fish/species/chub_creek/chub_creek.tres index 1739712..778e9da 100644 --- a/fish/species/chub_creek/chub_creek.tres +++ b/fish/species/chub_creek/chub_creek.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/2802.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/chub_european/chub_european.tres b/fish/species/chub_european/chub_european.tres index a218aec..16f43a1 100644 --- a/fish/species/chub_european/chub_european.tres +++ b/fish/species/chub_european/chub_european.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" uid="uid://h7hg45b7wmst" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" uid="uid://bs7cqi88csolc" path="res://fish/fish_availability.gd" id="3_availability_script"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="4_texture"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/2505.png" id="4_texture"] [sub_resource type="Resource" id="ChubEuropeanAvailability"] script = ExtResource("3_availability_script") diff --git a/fish/species/chub_lake/chub_lake.tres b/fish/species/chub_lake/chub_lake.tres index 6da6b43..1dc2d9a 100644 --- a/fish/species/chub_lake/chub_lake.tres +++ b/fish/species/chub_lake/chub_lake.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" uid="uid://h7hg45b7wmst" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" uid="uid://bs7cqi88csolc" path="res://fish/fish_availability.gd" id="3_availability_script"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="4_texture"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/2807.png" id="4_texture"] [sub_resource type="Resource" id="ChubLakeAvailability"] script = ExtResource("3_availability_script") diff --git a/fish/species/clam_manila/clam_manila.tres b/fish/species/clam_manila/clam_manila.tres index 20e3f8a..2b3fe73 100644 --- a/fish/species/clam_manila/clam_manila.tres +++ b/fish/species/clam_manila/clam_manila.tres @@ -2,7 +2,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] -[ext_resource type="Texture2D" path="res://fish/species/clam_manila/clam_manila.png" id="3_texture"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/6406.png" id="3_texture"] [resource] script = ExtResource("1_fish_data") diff --git a/fish/species/crab_blue/crab_blue.tres b/fish/species/crab_blue/crab_blue.tres index 2ee3279..b715522 100644 --- a/fish/species/crab_blue/crab_blue.tres +++ b/fish/species/crab_blue/crab_blue.tres @@ -1,9 +1,11 @@ -[gd_resource type="Resource" script_class="FishData" load_steps=4 format=3] +[gd_resource type="Resource" script_class="FishData" load_steps=5 format=3] [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/3902.png" id="99_creature_texture"] + [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") allow_night = false @@ -12,7 +14,7 @@ allow_night = false script = ExtResource("1_fish_data") id = &"crab_blue" display_name = "blue crab" -active = false +active = true catalog_number = 3902 collection_group = &"Marine crabs" logbook_fact = "blue crabs swim with flattened rear legs shaped like paddles. bright blue claws and an olive shell conceal a quick, defensive temperament." @@ -30,3 +32,5 @@ weight_max_lb = 1.1 sell_value_min = 3 sell_value_max = 8 sell_value_curve = 0.95 + +display_texture = ExtResource("99_creature_texture") diff --git a/fish/species/crappie_white/crappie_white.tres b/fish/species/crappie_white/crappie_white.tres index 7806c37..6766f1e 100644 --- a/fish/species/crappie_white/crappie_white.tres +++ b/fish/species/crappie_white/crappie_white.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/3107.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/crayfish_red_swamp/crayfish_red_swamp.tres b/fish/species/crayfish_red_swamp/crayfish_red_swamp.tres index b53448d..6c055d2 100644 --- a/fish/species/crayfish_red_swamp/crayfish_red_swamp.tres +++ b/fish/species/crayfish_red_swamp/crayfish_red_swamp.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/2601.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/croaker_atlantic/croaker_atlantic.tres b/fish/species/croaker_atlantic/croaker_atlantic.tres index c35e7de..d0fb147 100644 --- a/fish/species/croaker_atlantic/croaker_atlantic.tres +++ b/fish/species/croaker_atlantic/croaker_atlantic.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/6801.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/croaker_yellowfin/croaker_yellowfin.tres b/fish/species/croaker_yellowfin/croaker_yellowfin.tres index 84885f9..1e282da 100644 --- a/fish/species/croaker_yellowfin/croaker_yellowfin.tres +++ b/fish/species/croaker_yellowfin/croaker_yellowfin.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/6807.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/damselfish_sergeant_major/damselfish_sergeant_major.tres b/fish/species/damselfish_sergeant_major/damselfish_sergeant_major.tres index 483565c..b758404 100644 --- a/fish/species/damselfish_sergeant_major/damselfish_sergeant_major.tres +++ b/fish/species/damselfish_sergeant_major/damselfish_sergeant_major.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/5904.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/goby_round/goby_round.tres b/fish/species/goby_round/goby_round.tres index d8edf5e..3a8ffee 100644 --- a/fish/species/goby_round/goby_round.tres +++ b/fish/species/goby_round/goby_round.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" uid="uid://h7hg45b7wmst" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" uid="uid://bs7cqi88csolc" path="res://fish/fish_availability.gd" id="3_availability_script"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="4_texture"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/3401.png" id="4_texture"] [sub_resource type="Resource" id="RoundGobyAvailability"] script = ExtResource("3_availability_script") diff --git a/fish/species/goldfish/goldfish.tres b/fish/species/goldfish/goldfish.tres index 444741b..58c7934 100644 --- a/fish/species/goldfish/goldfish.tres +++ b/fish/species/goldfish/goldfish.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" uid="uid://h7hg45b7wmst" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" uid="uid://bs7cqi88csolc" path="res://fish/fish_availability.gd" id="3_availability_script"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="4_texture"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/3002.png" id="4_texture"] [sub_resource type="Resource" id="GoldfishAvailability"] script = ExtResource("3_availability_script") diff --git a/fish/species/green_sunfish/green_sunfish.tres b/fish/species/green_sunfish/green_sunfish.tres index fdd1ddd..1733035 100644 --- a/fish/species/green_sunfish/green_sunfish.tres +++ b/fish/species/green_sunfish/green_sunfish.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/3103.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/grunt_bluestriped/grunt_bluestriped.tres b/fish/species/grunt_bluestriped/grunt_bluestriped.tres index 87e9215..5f247a8 100644 --- a/fish/species/grunt_bluestriped/grunt_bluestriped.tres +++ b/fish/species/grunt_bluestriped/grunt_bluestriped.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/5902.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/grunt_french/grunt_french.tres b/fish/species/grunt_french/grunt_french.tres index da0bd90..8e8161e 100644 --- a/fish/species/grunt_french/grunt_french.tres +++ b/fish/species/grunt_french/grunt_french.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/5903.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/halfbeak_ballyhoo/halfbeak_ballyhoo.tres b/fish/species/halfbeak_ballyhoo/halfbeak_ballyhoo.tres index 9512381..6d7fe32 100644 --- a/fish/species/halfbeak_ballyhoo/halfbeak_ballyhoo.tres +++ b/fish/species/halfbeak_ballyhoo/halfbeak_ballyhoo.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/6601.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/minnow_fathead/minnow_fathead.tres b/fish/species/minnow_fathead/minnow_fathead.tres index cf00159..c4a3aff 100644 --- a/fish/species/minnow_fathead/minnow_fathead.tres +++ b/fish/species/minnow_fathead/minnow_fathead.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/2804.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/porgy_scup/porgy_scup.tres b/fish/species/porgy_scup/porgy_scup.tres index 59dd833..ad96831 100644 --- a/fish/species/porgy_scup/porgy_scup.tres +++ b/fish/species/porgy_scup/porgy_scup.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/6904.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/pumpkinseed/pumpkinseed.tres b/fish/species/pumpkinseed/pumpkinseed.tres index 7928e4f..7a4f090 100644 --- a/fish/species/pumpkinseed/pumpkinseed.tres +++ b/fish/species/pumpkinseed/pumpkinseed.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/3104.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/roach_common/roach_common.tres b/fish/species/roach_common/roach_common.tres index 8814f1c..c12d380 100644 --- a/fish/species/roach_common/roach_common.tres +++ b/fish/species/roach_common/roach_common.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/2504.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/rockfish_black/rockfish_black.tres b/fish/species/rockfish_black/rockfish_black.tres index f26a41c..c37b427 100644 --- a/fish/species/rockfish_black/rockfish_black.tres +++ b/fish/species/rockfish_black/rockfish_black.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/6901.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/rudd/rudd.tres b/fish/species/rudd/rudd.tres index ae031ac..5de8d57 100644 --- a/fish/species/rudd/rudd.tres +++ b/fish/species/rudd/rudd.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/2508.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/sea_bass_black/sea_bass_black.tres b/fish/species/sea_bass_black/sea_bass_black.tres index 1c0eabd..7a5b567 100644 --- a/fish/species/sea_bass_black/sea_bass_black.tres +++ b/fish/species/sea_bass_black/sea_bass_black.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/6902.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/shiner_common/shiner_common.tres b/fish/species/shiner_common/shiner_common.tres index 562daf6..5a8a2f3 100644 --- a/fish/species/shiner_common/shiner_common.tres +++ b/fish/species/shiner_common/shiner_common.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/2801.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/shiner_emerald/shiner_emerald.tres b/fish/species/shiner_emerald/shiner_emerald.tres index eeb3653..8a39e5c 100644 --- a/fish/species/shiner_emerald/shiner_emerald.tres +++ b/fish/species/shiner_emerald/shiner_emerald.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/2803.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/shiner_golden/shiner_golden.tres b/fish/species/shiner_golden/shiner_golden.tres index 5ab924f..af57441 100644 --- a/fish/species/shiner_golden/shiner_golden.tres +++ b/fish/species/shiner_golden/shiner_golden.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/2806.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/smelt_rainbow/smelt_rainbow.tres b/fish/species/smelt_rainbow/smelt_rainbow.tres index 6a0d08a..34691f9 100644 --- a/fish/species/smelt_rainbow/smelt_rainbow.tres +++ b/fish/species/smelt_rainbow/smelt_rainbow.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/4101.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") diff --git a/fish/species/snapper_lane/snapper_lane.tres b/fish/species/snapper_lane/snapper_lane.tres index 0288e2d..d91444f 100644 --- a/fish/species/snapper_lane/snapper_lane.tres +++ b/fish/species/snapper_lane/snapper_lane.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" uid="uid://h7hg45b7wmst" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" uid="uid://bs7cqi88csolc" path="res://fish/fish_availability.gd" id="3_availability_script"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="4_texture"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/6001.png" id="4_texture"] [sub_resource type="Resource" id="SnapperLaneAvailability"] script = ExtResource("3_availability_script") diff --git a/fish/species/sunfish/sunfish.tres b/fish/species/sunfish/sunfish.tres index a8e2290..5efd181 100644 --- a/fish/species/sunfish/sunfish.tres +++ b/fish/species/sunfish/sunfish.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Resource" path="res://fish/day_availability.tres" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="4_texture"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/5001.png" id="4_texture"] [resource] script = ExtResource("1_fish_data") diff --git a/fish/species/yellow_perch/yellow_perch.tres b/fish/species/yellow_perch/yellow_perch.tres index 5098a1e..3e0501f 100644 --- a/fish/species/yellow_perch/yellow_perch.tres +++ b/fish/species/yellow_perch/yellow_perch.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"] [ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"] [ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"] -[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"] +[ext_resource type="Texture2D" path="res://art/exported/creatures/3201.png" id="99_fish_placeholder"] [sub_resource type="Resource" id="Availability"] script = ExtResource("3_availability") From d8bf59bca068842e1046ee3960f8662ab72bc4a8 Mon Sep 17 00:00:00 2001 From: Voyager Date: Mon, 31 Aug 2026 16:03:55 -0400 Subject: [PATCH 89/90] Add starter RV progression and fishing feedback --- fishing/fishing_spot.gd | 4 + homes/assets/starter_motorcoach.glb | Bin 189284 -> 156012 bytes homes/assets/starter_rv_interior.glb | Bin 0 -> 15564 bytes homes/assets/starter_rv_interior.glb.import | 45 ++ homes/assets/tent_interior.glb | Bin 0 -> 9880 bytes homes/assets/tent_interior.glb.import | 45 ++ homes/home_decor_controller.gd | 15 +- homes/home_world_service.gd | 503 ++++++++++++++---- homes/player_home_state.gd | 81 ++- main/main.gd | 411 ++++++++++++-- network/network_home_service.gd | 80 ++- network/network_protocol.gd | 3 + network/network_session.gd | 3 + network/network_shop_protocol.gd | 3 +- network/network_shop_service.gd | 145 +++-- player/player.gd | 83 ++- progression/player_cooler_capacity.gd | 75 ++- save/player_save_manager.gd | 28 +- tests/economy_regression_validation.gd | 58 +- tests/home_spawn_multiplayer_validation.gd | 23 + tests/logbook_runtime_validation.gd | 8 +- ui/fishing_danger_vignette.gdshader | 10 + ui/fishing_danger_vignette.gdshader.uid | 1 + ui/fishing_shop.gd | 76 --- ui/fishing_shop.tscn | 29 - ui/game_ui.gd | 153 +++++- ui/game_ui.tscn | 27 +- ui/home_decor_toolbar.gd | 142 +++-- ui/player_menu.gd | 5 +- ui/player_storage.gd | 6 +- ui/rv_upgrade_shop.gd | 330 ++++++++++++ ui/rv_upgrade_shop.gd.uid | 1 + ui/rv_upgrade_shop.tscn | 14 + world/decor_shop_interaction.gd | 8 + world/fishing_shop_interaction.gd | 8 + world/generation/generated_world_region.gd | 156 +++++- world/generation/generated_world_region.tscn | 6 +- world/generation/terrain_chunk_generator.gd | 13 + world/interactables/decor_shop_world.tscn | 14 +- world/interactables/fishing_shop_world.tscn | 2 +- .../interactables/rv_upgrade_shop_world.tscn | 36 ++ world/regions/starter_island_region.gd | 20 +- world/regions/starter_island_region.tscn | 5 + world/regions/world_region.gd | 18 + world/rv_upgrade_interaction.gd | 15 + world/rv_upgrade_interaction.gd.uid | 1 + world/test_world.gd | 26 + 47 files changed, 2268 insertions(+), 467 deletions(-) create mode 100644 homes/assets/starter_rv_interior.glb create mode 100644 homes/assets/starter_rv_interior.glb.import create mode 100644 homes/assets/tent_interior.glb create mode 100644 homes/assets/tent_interior.glb.import create mode 100644 ui/fishing_danger_vignette.gdshader create mode 100644 ui/fishing_danger_vignette.gdshader.uid create mode 100644 ui/rv_upgrade_shop.gd create mode 100644 ui/rv_upgrade_shop.gd.uid create mode 100644 ui/rv_upgrade_shop.tscn create mode 100644 world/interactables/rv_upgrade_shop_world.tscn create mode 100644 world/rv_upgrade_interaction.gd create mode 100644 world/rv_upgrade_interaction.gd.uid diff --git a/fishing/fishing_spot.gd b/fishing/fishing_spot.gd index 8160eec..fdfad53 100644 --- a/fishing/fishing_spot.gd +++ b/fishing/fishing_spot.gd @@ -684,6 +684,10 @@ func _is_reel_input_pressed() -> bool: ) +func is_reel_input_active() -> bool: + return state == FishingState.FIGHTING and _is_reel_input_pressed() + + func _begin_aiming(player: PlayerType) -> void: if state != FishingState.READY or _active_player != null: return diff --git a/homes/assets/starter_motorcoach.glb b/homes/assets/starter_motorcoach.glb index 5b0d0225da3af0dc3978f6b0bb19562b571ae8e3..becd54edcc889a1754cfb1e1d6fdffb43e5bf8b0 100644 GIT binary patch literal 156012 zcmeFa2Ut``_dkB`T{YOSmsk;vK}B447g%8L%-T`0_l^_=#frT_tXN`i!A2B&BgPKw zU28N^qlp?dMzI@PP>EuR`Jc1w!0gK6`h5TI^FH6-^Ywl9oX?*9%$YMYch1Zn^ST3~ zJ2jI8L5S`r37ORdp=HOmZ6>()i;0OC=^ik_eL%#Jh!Oop4jthh;NB{7#Lyu_W84Nn z6Sqdu5ktZwM!2+kOAK00DVOw`aJK-PGv-6wgvM~odAF$7I9ons=x z-2-~Mw+iaecW}Rv5hJ4dMaT4w85R*XD!ShY_uiiFF=5b|dw|-CVt_rteMrB-U~}(i z`OMRO$k6Zz{6O7%60~6NCb$odh>5f`W&Dx-MnE5}heGIKL;HnAx+6cQUyJMTp`${h zBRWQfV_+jkjEdmH#lbrW6+U5MH|rN>nH%*a7^}7G5u^K#>^B4^V_4{j))6E7MMp=4 zbr?EoK;)2!7zllWduYFyh{i*shmK&ad#b&BeSLKP8h;;ey|2H&ug=#~?d7A@`0Dlk z-adX{*J%8}r1SBEHyR(cx4*_$r_p$Nr z=ciTs`or_&uYm`U?I=HuMyJ-p2z_CQ|CIqnM-7M^8S{w?=I8GZ`^5)F;-}X6dEXd>O9?=(#pg)}xx z|V~P-z3Y8u3s2DXE8%Z;2jTc zN~8Msj~LM=Am(mKeazPjGfItnhXJ?r~;sWpDM z1${OCTCLUxwkm8?y`Ng^@8<()7xrp>jhC;VR_mwLXf#?MZ?zvbA8857y-U-^TDbYz z1`k91Xz=;9hX?f&+G{@OA0CPi+gps5$%Cu|512K8j*S}zH|+3%3wT&Qbdfv%{{EI{ z#5(_4ouAs@U#r$ZeuLu|rqtgLCfg5gJurjtu)zfS`upnD-rjm2U$vjV>*1>gTs&b-;4-Sw>$Q5V4un6y1+@4*L#Kxw zr1!%ep!M^ICmxO~o!Zx18Jh=gwgsn+TrKPx0{K zD&X1hp@-aM(0Hq1Li67TcxZg+BX=EOnsS#xi`N-njm}38k2*ZbS}&d2Pp^fG06gA$ zZ%kTwrIMUXWVZ}B>G0(bQ#`bRdtWxTl#@|g5I_g?O# zduuRte`L}v^Xqv3X*CdK&a?kP_JL&Y4`0FH@(-6xHGUQIhw1az=`=oY3xf^e$3Oe< zoel14Z~~|`K6*dAndOmwG;saY_`r?=j#iE7D|Zg^cy#mJ|G5v1CH{OJd}R0AImlxb z^4xy8tKjSR(FBB-ko+DcZBG8Fuk(TjUZ>Z@^)g5Xrv>##GOAAEr8 znBO$w-RWaP$hZARHa|{5Zu<{c0dHp?_Mf{7@Wqt1cW?~jgZ`n1+$RaXHdr?TTx8&z zhL7IY7fKHB<=5LE=Fk_Pc3(9re>kDNVG-aPhrgfBM+5W!!6Inkn~5*%5ICXXri1q; zc+h|cIUiOPc86zuZ!bNZ3GhFEEoeO5Keh&W<^$Ui_%M1>};g<@`F_G5A%8O zTg>kvv~B<465!SU!}hsL;Fr6EYz1IMx!(r(ZwHod2BG6dMg&I;888xxz)<(WZHT6} z{rg+$*m$|^H(~&mv|-+T;R_SHo;%ap>d;vazL4N-yVpP^3bw7Y4&eI;1kA?|dDI7| zgd2n9J81Tdd^iSgC?VT<@YmzTh4+x}EPUtzPES90LY(#B2M4Zg2tM#&e!@a%ee50h zdi&v*Yd(T}XF&(w?rcNwg?qrK%)*Br{QTiQXB$I)^XLyJn{5dGTFA%FJJ4aR$mUt_ zhVsy-OatU@yAa^}s#b$Jj(eQ)8$=!+;M+7@qn!5O1Lug{DBy~v|Acwa=rAYnd%_!z zF#BDV-{S!HZM$s=HAJWnJ3orNJiz_$6XrqVgO8uhDBvjgq>ZVyf1tc!W7@Ap{_|kJ z6j%WHgr)d!E#U&E`=nX0e;{>QxMMiK5KyYOokShfyzK(WZwmY{TANkS!A}2#DagwK z9OllC01hGh2%s|Z2~(iK6kt09U++)Z4j*J!tT}(m9OUJ|A0JL<(@GxCksth>r}GY= z^k6>+P)M?iK#PCxn|)4NZw>ra0dkP98Y+)&ZoL{wLZcRKga_YuGf()ky)ov7%FN?K z+q#>T3ayPLE4!FOqk5X(oN8)pv{N)68Q#PE{&EZBv)gYJ9wXlj{9hior|4%Q_zZb( zw86;#7ut>v`jYY({l5kOYy9=J^u;0O?W-S9*PeyVJnnLCsJTzSbXvu$pm|UEA?Co} zpVGB${!v<19&CPI@fBV8t7PUe@`|>d5r#L@PDbQ zC%rIbAB~@~f<$*3PWv>HjSQbEcGhBdX_iRiCV3kd00(iMX-6#f@EZf^isKh8c+|pG zv{6$(3&-{5KpK}+-{Pm`qE&QJ&#va)KAns`hDXuxjq&C+-*mBHwD$qKYv)CT*%34T ze)^??_SL{geDp@5c`U@RXJ`qtS4N*4{7-6v1<$Qm&wO1PWR3$4;xE>&w%9{@DcD{f}vLd@pj&4r(G#*4T|md1G1eE=mF zqA8C(+SM~&n%a@JUz$Lj!K2fv8mlj!N-J(ipw8e$rQMCal*M$__tBKc+vgTFMl7C7 z-zO$eXYi4}MU5|Ct)V5qi>5s8U-1Q<>oJ8MNJ^m2;3L2MN&kAYkQ(=Z9}W+buFzvk z+R!n}6R0zINtaWU{2fA@osXtGURL}(9aeV>>6no~9pNI?6uKaNGpRTzn(~-D(;MTj zZzjVcqA8DcuNoK=^;^hqFB7OE+-;MOv1FYny0uRf<#AbUE#t_T<@7?2D9U4FdR1f3 zlGErP4-%*|xYxLP#+{iRY0BdS>I~jDr?9a>>m*tzGK%uJ1FZYrnqSj*PZOv!ctf@1I@_2{oXS!M0L^i?m;|PZY8;s}f?;=$+gD8(DZc!UUc5fn=p{*l~d-gKy z--j1m%{<0E)dTj|;nS{W9>>8xtpfYB|8qC9GZ^>&ImiQ39=e&G!KYzAX2O1~2L1AQ zAFOW}?Cb6sZf0ljCD?<1!hU=Ret69GvMLv8upmEe0T&>lg%2O-f5nk|{ z-dv()E2C!hSjuDM-x-i?x5r}#pCRudhG~8s&6~rISa8DJOl8r+Q*=hRanxD-s7iBV zlRaZC{Ey+XKECG1z;6e9N4S5dHs)4Q7wMvQI`IUHyVqt4)# z!G9`|zz+w$BaHKw2=mq-I5@Y%U_KF__&QVhdBG|A+|xO%hq1f{eg^QJ!5Gh>{;iCO z!$U2xF^v5luH4+XJ3iDB!^d#OCB1onjaJ5u;D^T}b-v~$;O7|lafFjQwlNotyhz{G z3Zstjz@B<@-0Y^t{%88oDz3ifLLGuEcB@ zPf{!MySXPU*fjl>!m!Vy=Sra}r!Dq%)W@vN%Jx%n>nmmU(QItE)Y81s_>+Zm#Qn9h z)r#HEy;PRFp0(J=b^Tje(5s0hp0O8On;Vb1YO!ZV`kDh5X4?;?O6C%scheum=F}dy z=&&xw&hWDM8ae#@Fwf5m5A0UJjP}vPT2p(B@i05X*cbBMZ*-*jVdOJTUKn%NE68>6 zRSTOj*D;K_t_t%M_1mIGCPBDA7O4pz9WqJ%@uN; z#}B2AlD(r{8k+DLvTpJ4{&qHEzHg^<{8G%5A*!IFy=S3XT2?Cw#Vq7*%`*ZkiTxZ zi#b1xe8$NWmmtPD*F%lE1+D1w9~&9}{bqns19<$<#2ovHQfqST%YgslQr#T>SCwm9 zFmf2iwu}=J)5O^Bn=p&dyzs&9U(p%zYGWJV@EBuYcEs4$yGnMyX!o(=nnTwZ!(u%x zF(9tu+s}dg^{Slw7)Q~?Vg z@$ybxEI4gXDJod)h*w$deo`yb_1-V&9`8n!$L}vMP2=r`6MJ(w3?ql(A>A*fUGMxC z-QBRI#gBXXU(~aH3mc4_z_SN)IIkKX%;7McS!Iz@eAi&3TGN$om_J9^vwpY*|9L2i zF#CvhK7`qkAAQQ5>a6_BFH2i6au~+8jB~&7EXA|c5R1=`;gO}r&?(Q|NnPOc7-M60 zdyGB{ba$g;p)FzoFvjKxqaPP5CqG=w>hoZ@OjdOAu=q#31Tgx~4>t*pwu~1!`C%NR z*P^+~G^@}2aJ)4JvbI)isqo{+-$pMqUa4X2E6 zk6FKH&kv_{C~IV#yfFGtwQ@d&alDL^AI5mFFE&3P!$td!HO&4kJI?%Y+0M-^V?j=S z82e?Mk74YWaXyB>+CEq*4>2I$SsZWmk9=n^`p5NR{`11UeT8?dQT(NF6 zP4`BXz-0M*#nZ=VAMxV@XkC`8|JHi-G zq0Oap#>Fs>YtGPeIrCtT(I?~BW9Ad>jxff|eDWCMWHIE0*;tTckC`8|JHihJMk;Ub zHn+50>aI?GW5sB{CYH;w|6#@N20stH5Lw=0M=ZuRv*7n71}o>ScEkm&c05C`!Fk%; zvw)e$cvkZE060$>hhgL}jA!LFI8U3Y3t9ZQ!Fl?{qk=XVIsR~-GS1&{o-z)@cs>?` z^E5KLuo=(O@8LW}jAtUV<5|h<>^vP{<>MKOn4PDH*?Ec>&$W7RKBCW$VgK+_W_E7! z7~3+tJw~7Jy17w3v}I=~>le>fd(6&IwC9KMj7Fb$CN6-pjA1-au`N4K^TK$BVw~(e zb%b$@>L-4-!&7{<1Y!@k2J z2fv55hVQM2(XNK?q|C0fV*E}T3g1J~j<_;>4@HdMNqbxEh-+Bw9V0dw$9qmN`lMzm zyL6k3-%XA)wk!Lm1@8u&zF9?)GZ8p%vMSN(7q=M2ShcY&aCrP@(iY>NZGDY8@Pqgv z;CEKO1pHgz2l))2>AlHVsPshRk@t5L#03Dadh?PD+`h#aGSJ6(80_|V0N4|)9ENW! z-eUZ^yWV)q_!;dydK3IN8{>@WfYCk!>|droRM4Idb`QW`C46hVTzVCeZcL|+uvYth z4#yG3wzXc>p`z7KUKralyCaN#s(_y!^UIr^!RUwaox$kyB#f8&{}@J}jN=Uc{lEsx zTm=;wLLK3&Wq0Lp^20b+&A<yWdBg_5@Rl>ISA{)H=(!T<3lE*8L zkh!5}N%d--ZT#>Y-v5~+cjS=h`$RL})=z59BBm3A9+4B@g($W9#hO09(TkS#yh(UJ zyuGxWXu4VBF**L5EkE3R+BB`mNs?&nq&%$ig|dUX(W1fWgm25+e;-nw^t^ce&^7%e zW#jFerXN3_PcF3WVbk__?Fgm95AWq3-oF#REpNZ`m7ihhh3kh-zl~L5dNm@GXO5>a z!n!n`0-ADbnB?aX}rC6g9WK$>a|Ll^>?hobKGB6QhvE#Rr&I?puDTs zO{w*&g314wN;z4xqv`9m-IT^#-kEq#LDeO>Zu|S>@Xw*ji`8Z_Deffc@T!YL{tpW$ zli@I*#=D_PYNv*24?5mXn^t48!u#a=jT$_bxYX#Nbn92Z#^;=Ux8znCcS*UdP=)7s z%0*1+YaWpS>qBh#JZI?ns?@)1WhLaOVAGbj>pO}juOW}g&BGx|bh#f*eFhvM2JbEk z&pEfHJFU8*wCU0|Q3?2-%5OuDrahTE*&%13`vTLgOQ%T8-+gV?l=tIk-FXhbUi@4+ zT2r3G?Hv>MJeatBVd6O@&Rmp_ytqfYJ_w~eXVRV{TYA_`%(yBubo3=ck+nX|P=hl}x;_!3D zt+mYC_w=5hIv@7$#=m1J&*AnF<<^}h?3hf>S3F7F(?e<1$HuelcjiQDp%Bm@4tcPIjL@cCqa%cfZpTt*G3n!O^shbruE@86-t>Vt6KqHS8N_AkA^eZZT4V`&iB>cs62 z$N>EB_z@{(S2hW31elA#g1zJX0^WiB*S-;f-|ageFb(kdeeDlk3tAm$1U#_*f|Tc@$)iAfXX=!efEnAK4|ARZbAAZs`~!|P z4y!$T4jaOnrayUf=nn7`!t18o+1LKi5ldU!Ib?H=KJto)!2Y|K5ZItNNfGS)%m+^0 z@U1D8z}~k>x4@Pu=^Q}TiV;&?fcEEtv$!mw>9qn zIp%Vm!sR-J%XJEu>$o|{j?22o6)x8)T&`2NTxV%(&2pt*_qhj-G-FN<6u2Z;N z2W_+CfZPT7Iw#j1;&PqBnt4Pp^L&^-acRC*e!F(*4jE5R+Yn1vJD^ju-LiW#dsE|TK_;uOxVEcVwK#&n-y@PA=@*9A_BwJmZ|8Hck|pMPFj=6Nf8=gp2K+kaWDd#X!K zf5WP*ScT)*tR0LoCr+NjVSAqj&Zp(R1pT6ahB2NT%*VseC&#hG!{#lUpS`v`zpd&N zc{6-aPV5f&Ib#97DG$DNEZP2@t^xMENHcV`KkFpvHgb^Fw`J}b z=OE))`}%J|Kfyh2YqxJ}Y0u`};@_5^>%U;_rqrcPb__gb{j(mkb)4c1$I7+z zYs``ywnpTl{a9Z_~X zTw9jgDSvLV=y5EZopR@?%^3M}lRHnbZO%E%|^I?e&-|OQ0_d%{Eznm>wMVw%sI!o^VH@{=hx2GPwqa=gJYem zTn;~<9G}JZ0pHQ{<|qb!efj4B_}rZ5?sM)uwR!ez=RcRv`Na9p(t;;1d}sJn{13Dp+`;*_|9|m6)ek=|_O#_bV{A_{oy*9B!{rRd zV{4S7t$UY!jymTvYkT(IhQsze*9YU}8C!mQ&Ijv*`C!@-7xQ7&jO*w#)|SPUAKxiX ze*IdK8Y|MP{@iELa-zr~zPW;nO1k*<6FA=7nhPI}? z-u_0~wGO5e`~6Nv_ijZqS6#``fBxk`uNJ&a9*wF)J)U05(N~_LGWG=`UJcmR;RE$_sMGFw!JdZ`K%%5merJ#&uu2hUX~@BUAK^mJ1WWR zA`*$mZ*}G1?VCtsLorpXY`1JG|Eo|ZpV zr_dj9C5 z)GfV`Y_IR^EJn=_ipxw#wflplcPTD2oq78vNiU<4?RAZp4@g|rKm*guzkW`PflUld z|DF!>HR7qkk;ZwB8~NNa-+AfGe(=m*HyD_9IsTTIU7i{o=^!G}xRizlriGtHYF?aS zaHOByD@5ZiL>rjiI=>)wTl&i2NSDtlM&l}F8kl}PxF`+TSxC0m3CY)pQ2K8J(}mJ+ z61R<#Y_B6{{v{iuQw&U(tWcO33x985+PtC&iF2tWJJMs0OT)J0}~MuJW)BNxxlDcBEYn8Ax2ey#}UBUe%Mt`sHOudTiq^ zMBT|nX1dpnV3K~bq-?L_j~xO+gp#E zJKj%bdcjSYud)?nNBV(Gh;c(#nd!|HTa%F9rDS`ZA$KJqQ?uaVQ+_tH2s^Rax&=TRb}LLU{6daDz9>#OcU$9GOPogzFZ}5 z2D`BPRiIHHO&saSj3oJ5Ks2$}LdU|gu}Uez^yQaHav<|R?8lLmmy3u`^mSRN#vNFa@^69 za`KBZgz09B=8XkM_Dla(ybKdlU7D`j*d21}q@P9d+c^YBwtE7)F?8_Kp1(kSyQRay9tev$h{$ zn%OItaiwl>jxl{XqX&sgsUw%a=t|FlKc<8%;v$b*Sn7^Xy zd6Xn3H6exSpCI9?VDjGm9=W`;1&RFpJ{j9Dh-~V6nw)In#iKkyV+K=$kt&$vk+jFD|%8K0h{r-hub0 zlP1#Gg3pNz_L2>K2|oAieO0iVl?n8X(U;r=9(x}YKZ=fDA5IgJM$>6i!fANfF*JNs z80``=nyy+BN`DF-MLYZyN}H#Tq{B{x(Mp9z)4EAvbpE9{VvK1*9O*fi<4ESRnZ#Zv zF04%|7VArxUJ_QDgnl!VFx@9(At?s!jDr>tp?@%`-K7mpG@U0$E)OB+5~k;9X776@ zkXC}vI}NHsHm{nVqnSObP$2E%d5DycszW>D5DDn>*4v>=|DMd`_@t;pnq&&ahZt;m=Q zMW}w4NSc+(AR+5YlU2ValIFdGDARX-N`(JTz6E8vNx@~L$mk$yudml!Mxr0Kp!T|z zIgu1-)RLAzSdwgn{gA07k}4&GXcu@N3Hv5Ecq!@8wI%IUH%rF-!rt#`y_6g;6hyCq z9rqV|f2l_s`gGNLax=IsoxS~A65OW^4fp6nDvW7M+XeL_zFiv9T20rJRR$wXI`}O~ z?Qf)sF8xTSo(<`Py1hxYwQcB{D~UP!!Oy|;+||{@?|3ks+bfa;A8$jmOrbgY`4c1E zngubJh4wo_$&teisrh_ga^Oj8`glzUS#qKw&G>8`>G`5Hz0+bHajV#yj(zqA@x0TU z>SAsXx2I$1=BIyC!`?Kj|2{IR-WY0JxQ{%1J%+w3c7QC{ z)|+06OebX47}{-mI{9f`Z#rYjUed1L80x!hFDcM>EbTRTKWPOztN(T4`(rN}vT{Fp zm)wi4`T9E1{4j!Utlgh7-ReaQJpupjY{I7TG_-sF9G$U$93Aq_04gl6YZxCHL5=2D zfwSg?(|gJYI`$5{Pw+9UYB|tyj*tImAU&~fJnht?KRw!7rtMV8^1OovnjXDXesHEf zT~RDqe%H^7x{TT?mxa$=s)dn~@Oh^{BglXVFFF=<&-3+ZB-l4iH_-UnyJUNv+S=x1)&2fFz;UNjl(_ByiTIO_3JTjIWE z9My-mAz!!gqUkk5KhU*XLBHZ|*$?xMVOsz-$J~|89tY%(C2Laq_rh>BO`LRB7TN^J!-~V-5!$_243OplcJ$}cO`r_u1au7`@S_a22B%YRj= zPxp-iB6VJqO7v+7E>0%&rBdot4%wW)Hq@S2qAcQ*s*fwc03>EIcua+PWIDbqcQ45kZq zndIc!`()#*nw05zU=MmHktILulLuyb(j0v!fi#;~lPs(}BxZki=!~ z)Lu`noj{6RtU>K{vb=|o0?@BjFKWG){4=#CWxD@>{p8mqcWSRkKiW&y{8oe7YnQz% zNs(08i&i~1DS>nh^rB4HnzMpDuGE0q>y3pHNZ$tysJ(tzY%h7x*o!i4thI-Xyx>Kd zZh2}iS@5UN`$>j69NnYoIx=ru1nm-*OjeKY zpQBxO?PW0ab1L(_Io#@sZ1L(aQYsujy{pq?QooS_7p)}%)PIS|dezaHr zWRfzyKYd7osIkUex#F)ubj9o$@=;S)no)bMyuEH$8aIE2yv!Ixvpn0AH5Y=YKC2^X z=FycNc-fJ(P3=lo)oV`*eAa>*o6M2zb$`ff`stm>0myU4uR4+4FS}5e7IS2KT@Lb8 zFFBb^acMy#SGNB^hh}!6S>LoL_F4ydu^F`c3i8m&_+6wD?Mf?pxBEcHH|$E&E6hkksd%gB%OX{}pupIn#Z_?r0 z&eZ<>waT4o;)=ua{aMpVY53g!y&L4I2b+eH+H0qg5u>|Mrh7r&yS#lUk^1)~eTH?R zOqYM!hiu%|m&QXLn_Xx&VejL@rjfMo`qD<=??i#wguOr4b~-s77XrV3(V51379>nF z`?89?$qV?r(5;qKUAG`%n%P4jFI>Agi){aC8c9g#OPOv2_R9r_k(a`BV*aKJW!l`K zGc|TPA~XF>%nTA-vI}L}6Fy&cwg6$eN!uBuOZ^ba^s%iisnGg}%yjs?p5%09XUequ zww5&fbOFNjvZg)B#8M%YX(Qy_14V|B-Antx|2MM>WqJ_g=~chYBG2pgAz3r~Ql`@( zUwn137fpuzQL%F`Diz&JN}cINv)uL&Zv)sN?e>sX&yjtUHqOb+d6=HZQ4VQv>8Az4ctQ-mh4R{ zPG3n(?FY~ftyYrcGQDa43Aagni5{fcmYd|{cfH8i8&DUEOC(<7Zj+FT>&P`ppz6!L z$c^atBywYSQa9>7DS7={5?WQDMZQiXtndwOXFtT}Xikt{{8+CL`65c10csyvDqw)Jz#ZJfM zbCI=4yQa;^v7H0SxgN)4rZaX7B<&_PBTUEd4kPd81(W0o^~r)Y!Q{^0VI*DG6=>?yI%LXVsAGQdD(C&F>TVW$fhDdMJA04(CgWW!{ISoLTKM=LKSzyx zw6phnCuUl{&x-RN6SOa?Gmf71=}+fHl(6t87I|m+eA=N(mUeMJPO^M{f1-!wb8K&F zKAvKGj1SwVFX?A#k8xvr{2bfk=hz-U$M*cV*!Y-c`6lYc?MH@v--8 zJoe+`-($S?@w4}Ay!PW~?ge4%C2y=wpLYj~QGDX-YqzXrc!ypd}hlC@-N#PjC zV}c@_63z-gf&580F8nN95Pkvqi*Q=FBz!OI2f1IkA{-PJ2#Y{267~otVTCXco{a8alzR1vCztSVFzDht(xY9Ol#p9?hwcfk#$n@~geLZ}7rzJOOvp|;>5)B{;h zs4LVFz7#w`dJ6RgFF`G6L23n!;4L%|bRcztkKix(3BDkG1wDB1w@5ws`(3yyqzl(T zrwf08P8Y6&P8V)~PKVEKfGi-oh@XiC;3bHn=qeTgSwt)-77~k!N-U;`GM?xmZOyMu#q3}R> z1@e{fLikg-BfJIqR>%_G2)BiQg{MMcvAFnDC@%gZ{4JChi-~^=#l&aAOW|{|jQCP0 zBR&`23nj&B;(MW*_*!rmJ;X0XcX+vpwZuANU66IfFT~nnJ<$`Sr&vR*E_#XeLDm;* z0_#h7=LWCp@QEk1t^qH1_@q9xt_iPN(7G1k zjo4Z20dxY%g{Y`-$No!^PHOm>4Mr zi(SS3;%Jbg#Svm3v4=Pc?`&ZCxV2p zPh1RgvA9T_FU}U1f?O&t5#z#I+#TiV5OMF;UzIa-+CT{8n5eZUebZ+$^pZzY&u_CW%|b zz2ZS}Kgj*!K5>_LK->dzkGMnpPCO*0fJ_m0i{Fc>Vj9Raai_RlR74XN*X6rYG0ATz{U;%)J7F$-jtcwM|Eiqbof@5FRq-GO(1!0Q@(k_D}=!|Mio@(x<3 z!|Nur&Vbgp;B{NPD?Sumq`UAcAUzQ8izPsokcvr<#TR0EkmaQ^(lha?SQTVd>2oPl zd@I%jSyOV8-iWWndLZjbUrO&qmDB)a14%0h(!ZiVNPo#!lB9cLA&`Y6FX@r^TC5GS zwp2v=OZ-RFfYeCUq?h7zu@cBiQeCNuM5JaQn@Me?c2YN~FUY=9FR7;#CIy2GmRd+% zq>hpdQkEJ?28l{dK{k~dO3kGpsTIgpQd_CL)IsVDva{4(>LK-(LO_N{p;BupLJ9{N zE;W|AO8un)AO}c&q<&JQ6a_L$YAG3|LDE2w1Eo&D3Ws-%;bnwRqM&t4c(sO4214sj z@ahV!2SDpS@aiYUNF$_CAV*1~rD$oWG#un`X^1pT8Z3CUg zN-L!`(vQ+Qkn5x=(oAWibOhuPX{j_vIwYM1c~<&HS|pv2_JQ0d&69qYu1M)1)1{lz zAJTQ{Hptu3E$N1IRk{oEu5?GbEM1fCfxIW(2li!)ybmp|Lc5zFZvyKYw7UiJ7O<{E zyE`E7fTusD4CxujXVOFIFX@H!9OQH9vGhp#Tgn8PDLs{*NH3*VAYVxj;D4{6#RGW# z2`!!h>mj@zL5t_WdJL~8&>|B&J%!g_(rZalsZ_5)ypcrJXR3lK5nlgDZ>7R27u8$I zMfI=rUMiw0s(LRKRb@$8ASKWew0Q%q3PZcXzDi4*n z$_u2Is-8-xGO7$94Jy5=zDlhM1R1EJs>Uiml@_E{RaaF^RYFw`WI0u7RYg@5RV|RU zRBozLsxMX5K~`5)P}Nkqs>*^atE#LjuBxN*1nH?NsVc8(pwfWUsLH4+seDxdAOlp@ zRJBz^)d*xGl{>IJRWe9f^@Xac${$)(g;#l14OK(%R0Cecp|wWk1JXzJxhm-_{Kh01 zLW6VP*e`B%pm{gB9?_ayoV&`$+zDsiWJXUvIo#UU!_#2s)-|vKed5pi8 ziFS;K#}#`IGY@IqnMOR@Nu9y98%;J}>^t4UcLoog7;hf9cAkar3_fdGXfF0>s)g?i zt~_{!xmcri7QQnWe=8K{0mthI<8O%KZ=E8?5iTD-$UN6Sj8-W-jXHyq22C&*sIh?l zU3eOG2G=eeXHH6(L=V;5MxDX4*TtB9!`slCKHI1>xW=4#bM@cgcRW9vMxDVfG4WB}{rk5x%WDf7=`N52i+tfr?C z^Tub*5~(v-PpTO)Zy?_pJZ)xCBjyd{JA-Ewd`>ZMAm16>Dfl;vc?0>*VE(s|dCdPV zGLKtU@it<9n0$U9bp{_QTf>O?L7g^`I)lp&sba+Z&?{~gbp~Jh!^4RAVe0Hv)EQiD zU{NFHhr|N|sWZ4;LQx~;hcc5_QD^X(=Z`4nho>-JXYkW|e^bm42VuO<;L4w$p_m_h zVg8-L^yMEE^Ftq)A7?QC8`wPNe-E3-{BL9PnE#z@9`AcR)V#XsRoV&8YaS=g3!?|R zKB2wfx3qcOt;%;sX6Ny#Mc*p_^f+Vj!{ez1b{YTmuWk7qZbumT)hlHGR<|R}eybaQ z+uISo=GM}KPjFX`5_mc@^D$-JD{F1XH9s)YVxnUiOC z^(56gKeaxelR83LX}tcqNO|0|SM7iSfeFT^+lx{jhwXl9=>B?z@#(tHXkIw6#@~e5 z5wo_dia)Wz9zEBQsc!3y*Pvf#aG|c7$dkRJKWqD2v&ft}2m*vFvDHvmB{QNM+ zz{cVXp7_-&V`k`DOMZ3+ub;EhXn45Bk|&+Pm;d?3c&|3_A)kK=#xXK}ewf98dD0n- zV_XupJZHQNV_U>{9`P7su-L8f+hZ0R+7Yw1EFQEYzBkF2Oz9PAIXCgnFvE)RY>l_# z3p1MM;P`>tji0^A=JR+-Rt@8T7qyLe_XxKYLnm3tchVu1$9fMn6WdqyO2^SO1u97CXB?2Tw{M&R}+b zPVSUIoWbmVyP#D9afI0&)w4?iaR#$HXX?ZR;ta++WE^}4G@e*ac&u;gXTP}SHNt&5VLz-NhdM8H=<7-&&RlKJN`)*;8jbAo=b z_Q){S8wWxSVQ$5GW@j+g8-Ilw0`i@~SZ|Dk8Upg2!B}rB0yPBWJA<*_SO97W$ae-~ zy%EQbd>&(s5%(9`d5n7}9%={=wv;nFgK_UjP(!$oRL<-S#=2r6)DZUh)G<4Qv99O^ zHH04n>X@CuxHqdo4Iz1bIkPhu>xvqvAuQ6>F*}2CUpImpLV*qC%+6q}D?WxA!d)1z zGZ^zg7pNgzg!y*{V_oq9)DZT;{5XR#m*VpfvZI`t$5=~5dm~cE%wx>4_?-L*d>&)X z5c%7I&tt3;;(pA`EMev`)(LU{qMgTh{^EW|JCCtW$oM?QIwAAVW2_lsJm{xSBiYC> z)(LUHUq4dQ>_A?|nNJA<)Ki2EJ+&S0z);(kZIGZ^cHxZjcQ48}Skj{Ohd^BC)d zxQ=M&G2U%(zXx=3H9LdxZiD;1c3W4oGZ^cHxZhpUYnYwESSQ5&Ugd5Lvojd)PPpHt zHm+u8FxClizu&oD!|V*kdl&BaE-+qaFxClizx%;>oxyld!~O07^Y0ACIw9`&!Z1J1 zV7%Ai^RT(K9BJ(u@deQyWpJVG2Z$2 z!F@pUuDF@UcsF2n9%HTVEz}Ir50CMF@*eId=*JO8el@5WBF7QNdrL34uOi10#+ux3*$M;P-JnU$YR5qVI`;;q8)37hph9%>V%t4-&c6dYJCmL zKT&wh>VXYPJyP<*Zt-_=?1)+0>QisoU{)vG4E;KTS)CB$aR#%xAIAA97-MGq{4lE% z;<%i_SjWR!7LL~*V_gNug?1ieT?OMuyFJF(n4Mv)MPNK=XPDIqv0r=4`a(O8SzoL+ zh%qpXec5BaFNRs25c{>qtS_|lnDxtQgV-;_*sne2`(l{Y39(;$%=$t*k6FL0Hi-Q) zjQ!eUzAuJZoe=xA$E+{3^O*I^YJ=D>!`QDq=KErp)d{g*d(8SmJC9kvtTu@KGK~G& zW4ccJ?8sjnAHifUuQ6@6XO1I2D7>!#`Y-~<7fQ* zFsl>dK6M7OIw9s~XE3YF;dq_FtnP>7{S=I2Wc>Uvivh>$3}!V$HeRghA;z|d*|->H zHA5D^#cmx7Vip_2%nyqP?TA^;5YI=vGfam%A!0mRv3`gcYlaMC{h<)l4AIVGtQq!) znjzY;X1En{p=O8} z>x8Z~TN%CKx#cl(ZbQuw?L5|LzlVE&ae6ChHFboiCVZR2afGq$v>gp|{N#nPEwekq z=w~AMX*I&#>TzQ`eYnu@b6`JS>|d?y|1YweC@!798P{1=L-EG zCohctnLR&@^RvvSk{LN4!`K(&IE!(9&_D7&hA{@laR%RSJWKIxHN-fw)EGMDxjU(A z#b__k-Hnd5+KXB7!El+Z=;UFsBW@BLZE5SZXs!}(wIdF)+ILi*kaFirbEE62;q=d+ zBNZN}btr4GBPZ30i^6Z)&xYTCM?PZw&3MH4oAKp29B<`dob@1P|L{^~7C&ONzw72k z^;SEM1u@3F0ODjA<3~Qm9A~v7Zf><>Y_}kO{7rg{pT`(8+L4oD#TfG}hz;$C%Q*PW zd-mJ*N%IaWi*$Npk!y90h*ucDGOmeiPZ?fzGX4Ync2wIOKEow$FNRudwx5!KnIE(x zMn6184r|Nf_DzeKSX;!5!{Z)cXMG`N{&}3)x~h?J5Hk*sUs~-rUc{^~9@l->EXNOG z=7-0gRy+DZ%>3|p61|@@Cx{t`#}mQMVn)pR;&FHnDTjlYadq8Cwb5>|2{^R-i@T4&V5cUe0hS@IUG%_fj z4sY*RWuhr$ei)s2>Nw%?tXK~vY3CR8pFfWg9#@|mrIfB#o~%7}lvw|bR?ENJ>d4N= z!^gnei`Lv}y4-rHsnU&bx*+SVDe+uS%2Gfu1J_oThjG*TBQwlO)Ff&C_hHscPiq!;kIe(6Zk#Rjax~hjvGuF zM?-Bm{Mct--c2^vSYUeeV>s>D<2AXyc4%6~@_i}KaWoGD>fI&r5o6MR>K{%Warime z`O{s~zLIm&s#gxD&yuSt6Uu+7{9N#cDPf9QF%0sz%=x9G;mW(&t|sHStEN9UO;rBL zs%7~N_@vvtOoe0mD#NR$oBlM9GVPo;*1~t>XI0#-w7PZgn*OaDM)|hBt&>bmhi^9> zUKMH+!|L?!O~u?+n0B-bqlp3MOw#9}X*c2TNqPT#Y!#Qql8QBYE5VIHi;t6EN4_n;j(l65!~1{T^b6{@+D+N~_`0d*Q9qgzsIm0hwXTXhIDN~s$s>&N zZKvf+^M0yUilEDXc%SCi|94Zh_LFFb>t!tSpH=w)nKXWpNz*rs zYDb?ZEqz<3EhJGkKKZu%KH}}XPoBd+OFWny(2t_x0gyCYg+MT2l`#>0+h#5$Eqp=YgDEqjtZ2= zBir^;dM*BpG&%j2@R;wH?~AuP${TzKf*@}B9+y-=D4&vtCf?IxEb+q}WI z<)1fxEROO9&*8`DC~xo_e(e1E@^*gg{MzyR?*H;bcAo!#DL?RgoX-jTbHa1@z0B`@ z{+Z!9MKaZaE~6J4zJTBV-c@j%@@>pu%h?XUs~Z5nIT?5eejC#I+miu^vvUZ_I66Fi zGWCx9US52pP};$9Kgil6g=BNmWLjvNIdz}0mR$d!Eq}cW{08#z?<~Jp_Pc*9)w`{g z=RY2FsO70|<^C~?Q)X)5H^{RZrAEBJ5cuYGES*!gRq9@^1&1EPZ@G0ZqY7N|x{)F9 zZ7eO7SUAuhepB=^#KXtT$9CfG+`v*B9t4{HiKS6P&Za!cNVecec*$UM^Rj za#)FKVxv62sdmZx63jnf|k-mE~;W?202h@4xxIVsiT-?da{kWhsXhZ|w`y z==wG2%&@AI!%E!GrQ|>3+R{lI%h6-&)ns{_IMbv*V(9)tuMf?NgC-Pp+z^PBo5Q<}|OW}2{TB+r*Q zzT$w-$D?rZC|o=W7muaCyOr9~M&rv{`m*8=?5DJAOhv}USU5a}XV${S^|jiq?{n?E zPoDFC{g(f~dH#Rox$0g!orJ`dqnrNqq8wJ_XPIe>(>l<7WnC$UmHGS52X=E$F|`RA zLW{32MBfBzX-dOaWR3Dq+U%&d^!S$2wE44wrtkMnGi79D=Yiu>#wz=7j53*2l?>vO zI8(#4G4zinMNNI*%`vS$9zz!{J8SA>7?`skt$f1qm9Y(rn*Pq3V+uSGqwst#9)*j? z#Kog<@hE?Iyd?F1szN>2xls-)Pk(Gr12@QNEdokY4l9NM1?c$29&|4JTf8%}+R_GZ zTBRLHDNDbM3pRD#)7!KnX(XL{X1gi2$hg2VZ-&tw5uHsva{|eXEGCs89-5^^#k8i?#zySAw+;+~l&297P{qk*Je)c+G zFRWc0{LU!d*FNR_p=Bvqfcbkhf2YE>nNJ1Cb%feExgr)5hHb-$I<35GQZv?}|H0sZwt4Js&s&IOq4A*S|VgJ~aUD zKRk!G^JC=iS3Ks|YnUpQdawCj{vl&f0Ds4$KC!gr>%A!a3aLaV?MT>`_Ai=mc<6f!F-0UY?2ZWch=2-`8ntL zc60k*S+5<%N#M)a{Q+AcPDkstb6@*|Y+MhTbqoAgSZD}=`}rN0*M~akh8pg{9rd#o zRRe=oHVK>oep*IsJv5r7l-%f!|6Ogx9Tb2T~>kGVRViN{<$&BSBAU%oHi&eaeUuJ)+#@$hXu zp!PVm!adXVhoK5rLr}Pyl}%f&hM@3c@!hE+V&ZL6slP&%ao=wxm78rar5_Eo;qYVR zY6uEfdsKK1KX&fBp~Bnwv2))C6|ROr_`Sn@PbB<4;=W%KK6g3t!_^oSzAaZ{w26V- z_}=us-U`$6pfH82G1_qW*tj|#;qxTl7au3TUVK}Az4*2~hxgCb1_{5H+t*i-62IIs zHTp74;oEXGMul(7W8M$4a(~yLaDUfe zv)}o#@XrrFmOZ;vMd5Ac9{N$S6`3g{Gkj~MS=*?-~`u4X8ot9L=pymQX**R07(cX2>!{o?_0 zhrPCZ{yxdo3yjh)#6E649bX@80vw&Y6AY+PgNt_xH#9$D4fSe82bH z@A*FGdG4Ki$DPE?s=oK_D98PI6SiOb=b!4^i02FO+3~Q>+-gqZYyS1K<^7?YE$GE4 z2jLE}Ex7C>Ju`Gj&kVgZ(sMld*`WN)&>?BO@)pkq(JC+b$j=F7o}6cf$$m!XerA}g zXMkee{>wAQ|H(7Vk373`9T)jopUmYy_qy{Kf2_U#Jj~A|WzGK|*Xx<#|6k|$=ZEg= zK*ISWpEL6LCZ9jDM$Wsr%TwlV{Re9<`^%nkUiN2=^qla&J~K?#Gdl5}O6(b+^vuxf z8K9*1dd4U{GxU1KICjg4>Tj}d-!&m9dCxGV=Y;?DnPIY?(f!wFfRa90&lsg=hRJ${ zDUP{V(vcFX88dKsgcBkMx|-A#=Gm>6xKJ zdS>|l^zo9O8Co7M>6xKJdS>X5o*6o%XNC^xnV~~^X6TTf8M@9-acT*oL$mXRG>n6cXRTJZt%aJA4aOwauaD=dzyiHYuN|r#x2OPnTA&eI(fC zOV8MeZ)a}hFV|X(<&gSuNc{`W{W~OoFTLa`^4!0dM$Sw9JEZ$T+@F8e`n- zuaNQa(z;l4?*j;Z7HR8KkbZBjVM$z;QHUe+`wbIy0zst&4xP5uN_StJ- z?6q>XVHksv@t;SPuw%a0!1(j*YB;OrYe-RUoN@P)L1^A~1^^b$`5GAgs<$`3O+5%1 zQ(mrtY`!3wWFt%L_Qz62{=(Xl+Hp#4_3ZdNtCeDYtg!W8pp|FM@~ zg|k}%7Kr;7tZ+tcz^*^P1S>3(ttM`J{x4Wz#;5Yg_F#D_^sPfzQM#P}9;P-U1 zk$Xo8%#$}inzyHID+I^8ZZW32)Lw;v9AYQ%M$X;@*iiMtKw#tp{)bfs}#kMfw+_khuF*N+Bc zkMs4QQU8s`!Cy*a#KYV;eQh8(!)6+cF*ElV>sI%|9kp{nNbeI6W19udp7lV+W1nl- z^H?{WJxa&m&|cW%Zeu90s<#KL?N@N>iuSmK_NRK>$%6;?HU=ot3e7lY^xsC0p{|h7%d-W)MT7Z7_!i2T5ZH7|Edmv-GLVOw#&5bOncLV z87Z&Kd1>?D=K&aL_!t>2FinvFbT-IfSYgLv0T?s(wCz?=()G`2n71!e-k#-_%?dM< ze@x3)HY>bdFBl_x_!x}kXLffH5av2o}m8jFUVubb_ zw>+4aww;S#*%*forQhm}@i7<&(RSp`3 zjM+ARh5df^F&G!qwx5#GV63_6D|80rGTsr|N1e8fA&g9W%Yz3#G<}fMV9ecrC^|Quu`#w8Iuw=Kw{2FKlg79I`r2lNQK=#@ zl8y&sxDr9{?~Ddxv**K6xsc0fac4N%tDdrrdo&y)58m+Lrni*;=B15s%J2zr{Xz>o zH|Qr=^hXQqws<2n?%M*d1Ra8y*UfQ3t#>f9Kr`Gz*V%EOga(K7h zHDI*OE`{ZG_d!N&PbJJ=;~Fr&TvQU<#PrAc(be!mX{vMMnw_O^>Y%~Mc)u;U_A_4o zz6?4m55;*UYGR|R*MO1p72e!3rvKdw(+#fzFTd)IT7WN%&q}`u?Z!PLtH9ROZICfA z^?c)S&lB)v>1W|(jE(pNzk>E_dV)+6jn>&1Ah*D<3=9UC(CyS>5iUs(ki zb8d<@_KvTFj1PZnW;g>XA!A5rT4US$%E)N%8)^Gtuz@zeOUC&2wJ>A1mBySn@ZiI1 z&y4H=%YkwFq}j#_hYcD1{4W@XYc2=I=(jtJ!rhlc2#zz-PO6UP?U{?_8?$gZFy89W z-UuC49T`jA8e;^NSq_Y0PbwO#R@#v9_>4kE?D1s~-TbBP>$`R=c5#F8VunBNeU=rL zrC$yOw!ARxMvNu;-@9OB%n<`t*stUT!|&o!u)>&q&kWo7rC^1N-|sL&U(N?BTy=Yg z5%z2;SYZ|4`Not~F<^zoR?Rmq99{}m_@d-!<5K<@u)<0Czcvawmx2}M{3W-suuBXu z7CT$Q2wp|wxiPFu4(RxE3^1lIl?CiKmjYw890%d>?&`?+Y1cgvezFQOu0FOIURF8D~#j2DafgWDKaW7#d8dg+m4%gY1)Q;*pELLKywom2t(a0_gNTXJc%2 zV;5AKYeU9;mGWVMLuYJ^rw`^rCEqz)#Ir3>_+fQ4Zx3si9i8>h*ceM!S`UNw*^u${ zi_91^>x_-DX67}J*%y)Vv-9b&K<7VfsZXqgQ$PCSwfqO*>_4@z!t)~Ngfq6g8w+4$ z3t!uOH3T=L&yVKqdUf()WPRP1r)n$I>lQ@w_V4BMVN4pQ%?ca+PyiKex6KL%9H;p| zdtUwb=+^jZXc07T_c@RY3#@k9tgwCa>=^ljVr%8s8q;SjiRSHI?dksyySU3{g@rF? z#>gL2*e*N{!Csq7qj~##B@5d7IBZtfd_p?3FVAJm=xBzo+my#$O+LZUKb?h4|@r~S=V`LGu&->NJ7#{VjalCnXv=4Yu-PYp-9HzhfzUr*9$T;{54XZ!? z0^eLJf+Oj=+b&lV2F*ze5e==*08tV-8$#>np*!;On{Y)!bg)ZfP7)}J9` zfs^TM*Hrp*SLq{AC$JbcdT|t*e((1IrYNx)oWsi^W1meEU_f+nELbN5#+@yI>GHOO zeNW5N-?=dXo>Tu7LMKC}6#*V>Lfb!Q4nW2mZ6`yyk+qTWC)$30x(*&A-G$r!c%}Vh z7*nH;2M2eY0V$UUpcQuPJOf_k2tX^m(QO9oA4}s|;5EuO`_~_X!e&5|!*$TSJ%;?V zSF3|o_(kkO=t%Qr?6YPe+|3$*j4M_zgh`RLk@4s+3jt2mL51>#@A_j3(x1gT9=uR= z4J;x*#@n=ACVK!f{zco4(Y2A$N!#Q8sDp8YP44;QVZ!X>$G9wJJ1iqV#uc;;#vyL3IQAYKAit)B zk^j(jm-Ow(k1_1xOUO)qR%ko(5^OmG&|7mO@KnKk7inG6sd%&| zt&1C@Do%hU-{iy0rGJ7+-Sc7L4jTc|D@34WZFAJeX! z3ZE1!fDzL+!kHTRv1F-TF#VVOc;D z$FbsQg}K)@!N38f&CG;Tr>uDjRwX?wZ6onYx`qN;7+4K^JrkqS)>Iv7&{ml zi(Q##lx`6Xj0NjA#VYJ$K>B?95>x3)M+hYHeeo-!cNK>c5+hV`S z3%$tmc1YJL#=`U?QCauAy2y*?*}2=*T7zo-}cMZG*Po*yI6D=`#(@H`kroyeP!=VP89 zZ}WW2^OLtlzvljVo98S1A@^5DLy4 zid8x`fNBed;+8>C#>u=rF```qIFpB-^9_zNh7TV?&!cu4P@^|Ke7w`>MOdMg4x5Gz z!8t8;n6;LkqrKLk#kwK*aOEzeRhr%yy=Ip&g)s1q23={~Dr1|$7V5)3x*24naoZTN zP=WdgARJBO9T>mHHJ;y{=5TE8P<%n#qMr@-n?nH_@7B`3(1!Xrx2i9Ur*WfvqM#<_ z_os-0P#Wjb=?PGi@LbA%V5dH|r0EAesjoR_CqU5kr;zQ7^tgVO1BR7Kk4^mdL6n5w ztiA{DXq$1?-%r6d@+zd5;{e|gS7Bl8eNaroQ)}))M%vHVcD4ijV&6e&%2!#NfRAb1 zuC)Dz#%o0T8Ef8n3IQ4SLSVo?sE{E6SJ8MGX?s}gJ;+V_8E23_xaCHeNBU|Z38>6< zKvvp5PWn%2KVt~_q}zWIicmi5ZwYvx=4GetXEdMEw4X76^2c*Lgoc#gl|2DtXrIfM?QbeViQbjS8 z+7xRmcBQ6LM`=K@ffA?$DGin86q_rJl`oanN@a?bl@j!2ysl)Sm_QhF&Jl#a?^ii4E_N++eW zGK}IdWr)&6>8gyNI6@h&bW_?Y-6?igMk;-kC}k4GNlFi;zcND^PjS4`M;WNhQKnOz zuJlvFmBq?Diu05~N`$gP`I+L+%21`JGFe$oakVl^*`n-L_E6lTY*1pAW$H>bR#~a; zQYNY2sTDMyt{6fY@fl_SbA zLy8ZT`^t6Yrt*m5Bjthew{k|gL-CICFID`bJf-+lc}x}el;;$mE6=Fnq4J92E9C`M zJW}3Je51UiiaW{^icgf+RPj`KPw~C-mMWers``vxiu!`8Qcz5xYU)d>@}cOX>gsE% zdPjBdl$7dQs!B~UwVH}5R5dNdv}zivNTH^um|jgs6+UW4iW${U)RgKw#h0S5nt>`( zt63;!Q8Q6RS~VNRY-(1jNU!Fkm{ZM86&cms6mzRNsKQsxOfj>Xiz>3H`6%X7^H4=L zH9y7t>ZeqZQ!Plbpjv<`a;t?Y7FIu_ip*+Wih0#SRFO|DO0lT=IaTCWi&HGF7Nd%S zYAK4P)Dl!tSS?Mlv|5rX@~TBB7E!;TilS;oiWSweR8d^5La~Zko+?VI)hSk2D^o>j z6)B=>qlzMGIf~`f8fqD}f?9`S9krHPNv*2ZqgYR^t5#D%ZA`JTT3mgxb`;yGZPZ3;3pJEtsM=O-rUs}X z6hqYZY8SP$x?AZ&uPsWHIz?TpM$v17`YWC1-6(cb!_e~& zV=0bR$Ed$3Un>JC4phHYBh_!zaTLd?{nfA3L23lW2=!}qs5(L&tU8qm^!{`zWml{9gS*ouU4u#!!q=7prsC1?nu- zp{!7Uq4?P190of2w!XRN5Uijka0+RXw0?rq?!gtNNRInBrk|yShU? zs-B>DLfxtEQctRP+M+>GHtodtowT4=Aip{kKT4U`?trf*qS_`eUR#pRwptaM|YB{vL z6!U87wNJD>S^~_(x2M;adNn;(-K192H>sdk)>qR#p|ZYSt)lnP zhG^kh4|;XchHKwy6DdyAMraY*1Z^_K$=XP5lr}}1Msb=pT8q@CYCll?K^voet^KHt zqc~0*rj6Bp(q>VdrH$93wAtDmigUE@v`N}rZ9c{MTD11PHcwkXae+2No36!ZGbzs0 zzM;xR+G2`}sd~2dv$lld5~`l7E!CD&Tu#;Vv}M{#iYuu)Mq8mRq_~i(7iqs}t0}Ig z>YueWS}es_s$QzC)z(v7Pu0t`b=pRX8>xDQwn1A(aTQhnqHWf;P~1Y*YqYJ}Hj3M* zdabry+evXJRj<=_Xby@Fs@|aO(l$}tMAe(M-P#_Cd#HM=_N%s+;$EuWuIlCk3^;zwjc9Y^wsy?sX(C$#YL)90wf3*7)?^E?9?V%P&F^;OQXpgmL6rX8- zX@6@kv{w{gX}7f7+8a&LZ`13Zc2|3+rO@xv>tF4GrsKoK`YE^xmYSa5`IrQulv(uh|T24KOK9Dj4v<_M>J*VD*GJ~|iT5dg$K3L1657mZJ z%te?>@2F+c^XmEZO!Ue~|K`(kQ_M}e%=)LaCo{b=k!yB6KgIld7Wy|o?a4x~%(|ae zP%lccs9s5{pcT20(^dO59({+V7;FGH{LdI7zhUXo%-{d2vTURW=s_tiqR$`mW>RrKy!Hkx^N zt*UP5owYEnI>qWb>X+02y&lDS`ZYC94bmIvacTqozIs=!uQ%53s*Uw0>NB;8-b{a{ zHq+mz@6_hHU4N(A^%R<~R!gs=`)YOc%W4bVU$3dRpjQpOw%$~4NU@<_R}a<$^+tLh zt*6$8VjI1s-b?GMg-{I9TkAvhG5RQqqx1-UtUgtrOmVV4K_97))+bS%q(|%1_3`>Q z6u;4j>uvQ=y(`78dMCZR-di6;aghF%-cb+N`%&zthv@_L_IekJUG!dhJAIfwg5n6h zgWgS#)W4?qwcc6pseh|aq&QLUs}Iq?)4!+qy*_|cBlIa0r|5(AK6(^Y^r2Tby}v$< zochzN9aVp=kE1wF@1g&o&(RlAT%^y_XX!KaxfJK>3-#IhkNSLy^Yz90O#LT)0mTJ+ zjQ+E}T3=6by}n9cp|8__q4_I(AQ90qc7E$>9P7+ifi@d`T_m0ev;xz{iy!C zeoQ}3@wk3a|4l!lpP+a`KcsKh&*-Npp3)uqF8!ST2gN`19r{k)sh_5JT0g7r)z9mH zQv6fjqwm)*>X#^9(s%3o^k4PM6ff%+^v(J<{VK()`d|7M{kndI;uU?9zEQuX$5D*a zx9Ydnhd759ZEPQKMR&@4+sc+sM~?dTjCp*WGVj>Ewe!{Qwe2-mt4^8k`Kp!k-MPB< zfB$;rkh!RJlF!MzjZx-etOy!6^qn1LE^6PC&)~qKD04B^YZ`Z6)ha0S%%}S}SIxbJ z>076E%Dlz#zRq?X;xKRNluns%$lk|U{o;L`-{7r7=0SOSJ0InIj#K~8oH7@+q2%LR zH2`HU##&9|9=+QFWiD!;kk6%~Hk7#-%b;=3po6&F5b$@3H)m*nuMG;N&&h6LH4(DAk6rL=a=-eCcDe>yjk!-da4 z@(ibAZN-I8AM%W$-?kn3!Fyh zNpkp{HT|49b3Vj{biO5riynabNkivba=4h|WSZ}BIuDb>MGv{DpL28`CWnhTo~HR; zrt>*DTzRn4xuC@<*KbV=e!T1}SWmw@%{**Yen^Zf<+pn@f>&I-*i$Pwdvad*B*x`h z_MBY%C@w2>*%0H(Jb#P>JG=Xlxfn~S@auM=XD-HKjhVBj$je-=WzId^|7@dczCzDj zXhugYaph&6kNV`fFc)L7#?0B1`w{+v%eBm__I~epd1WJRde$6eKBr?!C+B58t%|QR z+b64BdYKE2U$up`)QokXec(IK2uXa zJ?x#lcu??dM;PThQ(or6Glu-TQeNhwhkn$L$je;RZtGgl9`jX4mk;xYXR0_ie^$@F zgz_>USfP@0dY(G=z2iG#Y|{qLv|*?5P2o=1qjeQ$WK?bYvoVpDJa76+PM;=$E{zpu zpRPyRd3*$Cy_pyP;(E?EllJ3tny(eV z@moV@OtJGW&Bu5cjl~+l+0)D`{`1J;llQR8(~9pJ``p33eT)l#)(Fm?X1)+BI?KPP zZ5Qj17#GK#^JboN#dAm0ukq{uF)sXBBe?BMkaLOskZZmlFC;iv06YYn>K>Nznk`sBQs zKMAYktUlG>_5S)87i-HJ!Do#B%$cG2Iz033#3Xs$CJQ~9#Q3%yn#U(8&b2~g#YH~{ z)jG&N%!S^}x&IQm#(MfsjEh>%C&qh(q;T~U*=Rf_#YJzdvEssiaKHKQp8>>tg+_b^xI_2Q^RF^_adCeXpAAG_=KMR5 z#eU1=`AtZ{g+}})WMVvw?z!jOKFq~^c_!VXMPBCOGr&Le8Q{U;Oiu9`pe}s|c=tGy zQ+x(UMg2VKo6d`idv{mLKc>9Q`M&>%@-pZ9zR1g5)NZBE0JUuKKFq~^e-nKM@Ta`Y z#bW&j40jc(TUK#r?eo zeFhM%C&tBnU*vNi$l*+ii{4mc#f8s{*FGK}=0b1g zGctgE;^mI^Z7oNm6@PTFrv3d--RxUQW5v0)LUcWkkKn8?XX5)a&GUF#@nL;qJiUF4 zi?LWEID3k5WiI*|ou`OvzE)h!gV_ETQ)eG6V=Z|qQ z7HiC${YBo2i$47ezQOIZ{#IPfefnX|vxZ4=F&691oc$}g*GG(N=3*}FZ^gx2xaW^? z;m;Z~XMbKdF|L_ctdR$gYz}edKgPxR$r>})&gHcqA|H|e7#BUT#>|EP=}hs*;$vLY zvc}AX|2gtu|D-tgEHq|bp?ZFM%0Vey`Hyii7HbmYGn=(=^&>P%anS>7%zWpDOsG&l z!vAAj)UqZqK9~C8d{Ugp5*jlX?}e0f{n-+n)oI1W`yzs_KSE>0x%SrAJ{}*zS#Rdz zoM%rfF3x}M?PFZ{vqo_CG;`5UO?qGRToU7aec&|_?>j3l{8=wJ``g_aOheF$|NPxV$A(2;xinUsYyHZ7>G2Vq^=96` zQAJ=+D}H-hci`SW#)Us?1ZPh(7yVp%mKnoozE)h!rQh!bU7DnLFVa+S&zHIIJV*W_ zFLTiwds=bPGxwGhXMdq#E!M$9yrKe4DjCbb+4|M0xoge533a?|Ixo|N4wz#L`CP}bE`*~)D)cD?ne^Ol5v(KMYYsI-Ap)vC}y&qLS6_(wV{}>nktYNN>3UG}p@@6i^;=Gx^ z%h20#g2oj-iE*Lld}2HWjm!C@IQt8Y;Nn_WjjplIGC5uMj>NdQR&(Bp3!h7LZD*gv zxTxj46=$D1rBb;15qiN{Z|2-T>qVceNsJ5qQ@Rdc>zCc-pBNX{?W%OYaF)#OH1kVz z&F4IG;aPyL|LmC<7d}EC;1_?77MjohN$Ki=IgiB}(Hm=+i|b)Jx?fc7oXKg$#dU8z z-7kd3igRsPuhbqN!C7zS;#$X^R$N^7xVMjS;m;bu+0)ELKd0z=Ud26^#JHGC7~Knm zCMhni&)wYfWiI^1HC*InE_!26D=vEGev;zsFEq@BC-)$8abGA&_Xu(9_zikKn8~b8$~$Pb)6&LEPKNxbSC<;OuGUqMwv>zvHHHs=sw76k`x#ItQVa9 z&0O@xK2}`x%>8_f^Sp#!aP~BFajz8jT#-+Vi#c-M%*FlpCDn@j$GGrk4Uct^?x*aT z6qohvBku23ocj?PGZ**MKj^+G@*m^EpEb-Cx(`}$_7oa37x&`hG_I&kj0-*I6XW9k z%lV`@`wNZW;=73``o1Rf7b(2B_%7oeeMckmGH3m@r~SLN8iz~rSJZxt%X;RYNj_%Io+5ANO}i|$ z4=Xj?UUA10hs@VhSZZH8GSc2C>urb3fB$oheM6lHm)?q({$-85LAuedS}QI**O7nR zG96_udWfKYUcJbTG8bcQq;W;wii@!t(zwFYijO_L+^&xDvp1x9$^7=><@VbRE7>d1 zI>@|pzIFD`dRBJjlfzRsSZBA*D(mu34i{tHp>f~PykstV)2PpDG#8l*PlNnL-inJp z3sTR*(~8$Wv&N2JjIi%{cimydkF;HC_sJaL(wKP)%FlWA3`Cx}@B#7^c`M#y)pC1i zkBau)G_K5V6kcbaJ+_i7pIknl^f5G+&?m-)e>WOSXk>on`{nk@EvwkC*;Ap++oxM+ zKQOSWD{sY*-(O?T48!bkRBOeX4_<1&P;jVABlFJWzl;2f#@%rwhl}3EQJ+FDbKx0B z{>3OSbJ0&u>P_UW__7zpU`tS09K650<7BJeP%IVw{m}GJ-_4Dy&$`vpcKPKfhphRg zeV6T-D)ikkkA6q!WU=DAQgkcp*tE2~7mpg+dsowxLtVdxB>AA^rF*=mAP8lvBqA>iMmj zrTKcD53)9YBvddbu4xXT*ZQ<|68IUsA8m)Uq?i*$U&`gx8oYs7jo7kcS9qSPC* zCMmsq+^zIdKjPSZte+~)0vzK5riU3Z=j9<*FAbwuQ@u@|kuW>OKM;6*ED{C%a)#{vIxk zJyW;f*7*m&Em z#^H{cdqa0+PjO}^ABP;98`JRd^UksP#MXH;Mr|MVeiV+n*K^zCJ%b#@+I$C%>*m{L zrRi6puPp`Lx8wU_pT=9|{G~NR9plxGy8^a0-g=t;&btduNAD^fn6H}5|Dry9sn4M! zD{p(;EZos+cj&IxWlkFj<9hdLl~BkB9ANk$a<^1tdTw4b9aq3 z<6h70)8F&C&7(zPax`+S`&fVADd*Xp&soNHCHml{-P@(}D*ioYm8aeuiJcGbb#R@B zRvJ0~qoLl!`R`g=*~cm`_ZH9N z*OS)U<&m&oF!R17HLkTysF9sM@NsKdyyxk ze%y0pRiuMzJ$W~mdJ{Tc53BwY)rfoj2R?G2ZvKIW@2zL*)z~Cswo4Sln}~%6aKCKvn5}x=rTNXO(IpEy5k)%R+Ze_B$YibA7g|wbEO8(lr+ObBL^w^YT5; zDld;KYh=%O9)I4-_jFk!=jAoA$|uLu>V7ScEBnZLtGuj{*GIm0$oFx1tmJ6qT3S!> zS<&_0w93o=?w(Pgd>>3sUOunl^&)z%IWA8tjhvV7=~j7pUb0>u*GePLOTKr@waL*? zZ~xQJ0Pbrg-(Pu+5;~C9jkRt}RO4D(zUIh^M10&@R(X0b=iTG+es8^WU#2>9|MA=Z z3mR8X$?-{~2lsr;y@`25;*%5=9rQ|46F=kl`OA8lTaD|j@m@PIzQ~C2#f$gGqpLS5 zpRoSk`h+~!3G~*)@8R*dSJH^NJ9uwAde+39Pgpl^eL~({=hAy?*x54|_C(&3fIN?Q zU-A)ick6}f!@ReK>pgRqYF+iNweR6lcV9@1$yff#!AjHm3_SR9v_~&3#~NXd0q?l5Xf_lM{hmrxb8n`#PKt) zv$^NQG#Ec>lIIWmxU}w`-F2Rx%^KJF#Czp2{-@WI1TWXQD*5x8CMd)@i}grYlSDO` z42^3XF=y{Nc#S1|T(4wkyw*u}arf-%DG8tdtLujQJ;HNw_rhJop99_+&pxldz2}>t z@y_#k?783ZxNh{+xwgG)J^OfE7h1f>c}={u!ogc_J_q8ry)_Bry8B^IVs&V(@ zuH`j#oimdDgSUn629(lZbTeYfJ$TWQ>5xHPg}<{#F^ud}y?NA^Ajq!Him zxO+&@c;~rBQLOT&J`?qHYa9aIy}5XNUPRBDxbq3e)LWmBkFSm2_SUeg%hU56mKcNg zBp~NJK9XLjKFqtl?&nwTwGuAzwIAkP``l|4 zKaP8yKUhDjy!@;zzTXc$tu)^G_#Q>|NAm7@CFtdG-L)TRy!+=hO{jFg7o_)5k{b5+ ztWz@1Pp&bcR}ZFriT1!6jIT^|9n2cHmd9dWbFC+D*0Y}*JwBZG=%s5rT3wT^G>PP0 z{#JQDuSGZRu{`?!h5Lnrj;SNzT5Vn{F)HWc*G<;TJV7UF#6KVEz}<=u5IA8!qh?3s&eeA0-yyL(B{c;~sse1A#EbH4(;YrQBN%2W3L-{tQ4qHs-^L;O~J^vuhpk@YhFur~SU4_yz%_XX}Acx=~q zc~U-MeZ2Jvd3V1qA8$>9r#vTj{|?^E`@Hi!fAhJKkmovq-nH?2#M-#OzjKde?pf&A zFCM-13H#-|%&Go^^%GUpk96LOjQGcUtmJ6C?^y{RALbMGaZhf4slWJMt@3V9N&lgz zmBu^I^ZdWMU-Ng$eC*ulSzC9X=Jk*7*?W#jYS`cH=kfm_Z}n$bF(R+Iw(g4Z=3tu)^G#Lta*M=PI?<~?i0opIlcVt(Q! z?RU-7-CLq_rrQ6a5&n{or`D5q_u$s>+9h-(di@U?hrDKjyK6tlCye0o$Amr;j)ll2 zk!MeL?+K3Xo<(hvnw5Xpc8*?H0gsYS<_pJ--8pq2KgVF-NQcPLKG%O|ChM*8vX7(} z9*Oy*tl?3`@wV`{%*+1dY0w-UVveGB@^Y^Uj}R&5?$K~otf8Ejdw5Ih(7TCe9Xz$N zzm;C{7xU#>FE0DY8aXffTY1Wwt!EVBjvr$Rjc{RdO8-Kbui^U=ZsZe z?(LiX!C3Re8DPBMu|BqWeHIuS)epvq4i|xOaNBzLWX^eDy#1gUUPyTk82=em9E;sQ z1B~bIm%uUW&I9Az_r! z3K-k^6~~Ux-vOiV%wiaP_AM}eyQVlsb$$hm)8?1JnibvvN_R zvtWh08yCk@uTFy*H;pWYS=XKgD_mT@9=3|U0E}Ix2V?l=KVaT9`ulQ^Ui6^0w*gjb zeI6Jup z_h5xPQU&8;$4g*rt~A8yb>9Hv4;^Se{;z?t!iiv9mq|s&hS`f__6P653I`Uazq708 zJFvokexv!-cnyqYh8M?DnN?(Lo~HzkeESj@mz6DwF_Yf_qpd@2xNmHQ327$4t(#lH zckejJyJ~?4qX&DL`~VwIvfau$0_`S@Te8BocvJ+MQF$=Y zwv_tc;a?vM;4)xb@T4J@qxT_W=;xKO&-tyum@z|TyhHCd#^n($F{s~RV7xG;1zvi* z5*QD>ZVq8XRvQ7+roi#VXN_HSU0qgv1u!-{N#kuj0gQJ}H^+X}egVewKZM}5gNJ|- zR#e8onkRv=?d{6wn|3=eu6P&%w<4As%bQMtm}AEb|4Bz66;Oc;*5Sr_?Va6>} z55c)SPYg!eqQmfF>AwbJ*;LozMT2*S8K*424!+|QFk{AlZa`SJmj>g7tT#Z>o*9hC zNB#!BaRFe)KMwALkc&0IjNME93NefQfzjuS{m@wt2FBj|uY*#+AIun>^*U4;P#etn zuHX$gx4JGchUK~m;T-~jacTR*aG>@BgYngmN1@&<%_`ov)DI_o!>*{3#~@39wNlx*U`-N*NV-(Z4VAF zbO?&&dt@*Uo_iWHmyAF&J{fiz)R+-y#tSv#U|^vLG~?evaZq>X2sGovAvd5%rU+!* zH2Ma_Egyl55B8se9Xp3(iY`52_2LNR?VGz#!D6~T<)(ZeLf($490!5)|JVBMZUJK` z&$yHFJI)Qq+?3x#K8(w!-heqzM&PUKK`@2%r=xE`uD!$YI&B{&UEugZIBZd856)UV z7{3|Q85uig9fF+)bwb7#p@VVG^p41QD0mPyIn)su>%3v1|PaY1!{gpd-Fq-oB z$bavZ0r;#}M-MJ0pR5^2;&I9!IMvyM3n+ge!w3}j-A3)_yY9a(yl2Bm$6{FK#)|LD zpkIxyz}S=Ww%c8Rv0PA9>~(B2Fg{9K99KPF3yj@;s$+{%+rWM`7=2o-f%|2OVaV+H z9$b09I-VJ}7#J(l=f6FpV}WtR^D1~;-2{w3l(*rz=3&5i=SM#r*tk0|hVHM9v0b)9 z%{{>gL2Kb;s>hJEZH^DHRjWr3{wyb$anIC;5IZajFm8PM0IDp=28<7jK88}Q{lScb z&OC;hvulGHFP;AvwiFBk#!s^T3k8M*0%M~wX)&y6S}#zduspF`54 zf+;;%IPE8xSM>!(V^BH_ZC4i<|Nbovo;y?v1}ymmFFmR6!5h(OFk*#2Ogx?r3(Rfg z!BS7s;(@R00prN6|H7rb^?)(1#uJEc% z@U)n*;B$lV%-F}!Z&FSeaq1qV=#t)p0ht~`=)%mv7_nh3R2~$FW~}Xf5z)Q z8smp|&nC|z*V8*2<5i>Vl3TCX- zq6QYOy$BfR*zCA?>jGe`aR~7o^pfpWz)0M?=>sT-zzc3fVX*=Ry}gW!D)@Wrl<&~T-JnIA8PQMYU2 z-u&}C_~@P;SG6e>t!$} zs1{a;o9Dru=^A0b%F7_OXD|-jJkNuzAJ@n0br%Aot>!T3wKWZzv2)5u=-ehXn$dQ5 z0JQqs7eBxmL!iO+RA@8dxhJC_&VCWhIHk}qST^t;B_M2vFPicAi_gKI`Zr@WpTclw$T|1`OMMFdWiLWC z6V91g1TK7j8O+$IUI_^Q{1TWk_|8BG9+C>p*s@DZO8k4(gG~kwf-@PefEnK$%L6};NsSkx{h&`;9}iyMPz+{8rb07Tt5qB>yuS=) zY;rmeyt;n@!Up?6!S`1^_;5iXSl#$6`03>!Z{@2VtZ=;~931*5nDI@O{&4B?pJ2x8 zTZTbo&$F=bSx@jOch!S|PfEgpoW5wr?Bfc-$>wQsO2KlFt*4I%bN@074%bVIK}CAO ztM)z~eATc&^s4TQW-M}}9hQo^0A}1WraiX1c@fN5AZJ?)|MyQ|EOostRv2&v7^lPx z!cQ+;1T$U^9E`mtT>vu{xIYA!-6uacp2r~=`|}lGOgXMSrmMaU%-HLEJFGHpJD5?a z))sr^*aD2x@3h4iT{i*auCjyi!l> zkKPUginYPJ{nmQ$(89JjZp=ntY}8>0R+_O97z-PN(0AB&m{)ixI(x45V78wIp?}a0 zI2SYwZ?)Ut!4&Pou}$yIz*vvAUv#|;j4gg1gtv~Lhxy%y;Vk`{2P++HL(h&j1LNW0 z?eUKP4(PV86;`;v-h)p@wa0h6&qJl%tq`VM_28S>HaKtcWnj#;a~Oty+6&EiX2?(s ztK1XKXrIv^ub1eBW_&Yz0Cu?41I<|OxBj@KNLOU6_jmyAFW3zkXDuCu9b0xq#)q4S zVxOP7A!Fos$8E3mp2+x$`fX?Q!iP1s+8Pz_k$@N0+kEPD!G~^)8+F{aX=-O=Y&5w) zZlXHn#}c+-VO`Mfd|rLRl+Jj=(I3OF)Ap>2wmCuc_de0{wqb93;Qmd+uvy)%ICowT z3>`h*i0RuBLz*-M#$DxlqTih{#sQ@jK3p0Mj5+g#puKE;V0_T4B|f}W2N)Yg4aEXf z=Q}tI!%hSPWB8}T@Lc40W4mv6-11dJU@Y3C2X<~>9~d*{>5hTF*8#@a<$Ger!cCz6 zi0M!-@#Vv!PjFWkLVnn+Ja3&8O^TAQZ^y{-AAfgaH zJ3Jc}{ZkNQjST=P3gNW+8{zHOh0u57Y)G@CG)`JP3z}9hjd#**gj=;rqrLD37mhTuLTE<+g6m*%DAl_$BJUgsYFQf1=znZ3OltoH zGDc)s2Mt?(fsD%j^-!ZvX*A>DUK`*`wKSUXN#r_cSMUpDjEPtW9cC9s#_LNqK;vHv zp&8E&oC`BQ{{k7a*P9LH-hP2*eDlq0IJ>J5n(61Df&u-T5%BTUTUkReK>!8QKLITXc$rxx>05WBPTg z!7r!_GTzu4f~|UXK*nvq#KQg|q1fU5mzXl3qX(;>qThWf(hV8Isjls%ZpirNn;7^k zJQO3YG{g5Py5Y0J&2Yt)Zg}I$eAqp`D=tja9CH`$h+RH!hD-Z&z&2fDVf)ywIE3D} zflr#jt%jM5F-DXJyVCo7e6c1Fy~2l{MNjnL@#DURZRWSY7+2+{Ey^ARj3?;2(u>~D z=T@gOj@Db|L2(_5dC&|pewNuN@zrt<#;i?kbktS>V}T+!ZF_!P4vbI7#ov!?m&-x= zMiYTiqxU)Z#KOQDez3Ykln2MOEe8=leG7~Q|E>%%oEXYh2d@zdOz0*j%~}(YCl=Y`EVXzL_`^o;_`iW-O3u7DN|ojb@Ca z>%{2OZICgRt{*v@w?W2-`!<5l=dICALyV+ru|e1=xQ7_j^*99Y{17+d~%1N;hxf*Eg5`5US{?g(ZKzj74{M8*JP z>7jo?XwHSeIQ{w!`YwGQnDOMuzrnBlTrlG$O+mkNZGiDguXhl(q$Mz3eE$l@PY(q% zUh4b?Qsn3aW-QVD9b~+`02n*wQ!vfs7+?%(_6An>nhR$9H|1+Mb$T9{vGk=I(Cf?2 zFn;YNSlqX{2Z!yAgDulr17n#hanSBBy0^Ho>e(A`>%bhC6?+M?f3w(w&A(PKXO=d= z*dg6(s8XXd^qj3>-05Z>eCP8TvTvUQO=oGCwd7(CUj9zOZFv>|W6ito;MU@Wz}OdG zLFTD*;d%oVv#wj>!HY|8!t`NtA;@tB(u`T+!QYQugJK640%LjGD~S8EBUH<#;={9z zJh&_8dnn)^0*o_WT!Ss6Lx6GpqMH!9sw4aybOpjXH}YWY-7n}f=?;T2lKx!XXxKi3 zu}!%OU@vpfFk=OKS@5fQ+%RK-KZ-$>3$=mK@7xy7#b7wq+FIWVrO zToLX@+96u)hO1xv;=#;+w#M<}BB0sL*6`xpF@urw;ayvybHYGiTyd!@#-$kqj6e73 zg0cA`fN|!6ieO)GjQ-n1T`5feVN_wIfRa-2QA$%Rt&~$zD`}LX6pJb)m2}GgY45w^ zvN*c7XG^T8*cGuiRP2ff_wHct1uJ%9@4X@h}-Q8a4o z8e5F@yUubCj>OHw^S;mfe%~LT{N_5>o;@>r=FIHg1KzVI3#$&S&Z@GkEE@{|1~7x= zV7XXrU~N{P;q&oK*%^W)+w>E5)h-t1&;uSuNHG*of6* z%~(s;0oZ}Hg+&oqmO`n2I6%g*w$Ccq}F1}n&NvIf8gtTpps=~!uCY1W)& zX8Bn=U_0i^I&u3+Zmc7)BkPaSjfDb3*+@2y^<=@oU>3qY zWxY`QQ2^31)Rl}u^DVOTY)kc zIF~H|E?|p+i`nPE&vAYQi)LHdPT)?qiEU&%*jK=>*m|~s?PA-2+t@0$nr&yhfxFok zY#rOf_5$~^HEb>0$F=~su$62xJHYk>_p>kAb#|BC2Hs}Bvj^-MdklQc9^1N;d&eHKKbWFCMA4NO>?M1`UZ6Z@-!LaT z3_Q$^vs3J6b_IBa{mOn}*Vr-OG4?$>$Ih}iU>rNhVp#$^1U$sPW=Gg}><8cv>;yZ_ zeq=uZe`4p^MRu7b0u$L)7SC?5TfkfFTXu;(W%q&i*-3`)jD`k~(ibFAhrcz$1pm3!ou%=Q;si@RYY6EL4m6a+=9i=|7 zzT%@)Rq83#fz=gnrJB+}@xxC8#lTMkB>+DSlv?;{pwz`r16VXtS}UD^os@P;E2V|f z8Q59rsI*iXEA4^pl`cvXrMVIe3|2ZQfl5=QE3m8bsnSeos00Cnlx|8}rH#@Z*j?$N z%vR~^Z-G}nnlg3W&mbT zGpU!Ai^^5yGRiIGuJTxU34E!%P@XGql;45BD>sxsl!wZB;Cba&ZQeG<;ly{1vUO-7y{!}umy85T0t9O*&l$>g2 z^*1H6`c%2Ec&Pc+`$~TGoN^BM4)_i=6HzNC>g9yp9n|tbJrCGDMXijeml18XR6DBe z)Rri1)GlgowFj_=+EwkZj!=gJhpL0r5Ousd4meI7qmET0)K8DBvhHRPCn@RC@w@s(n;%wS-z8SYGv2{ngrP6JQgyp;})JRDFOxYGt*i%GF}P zVrpr%s9I7j3oNUaQY)yH)T+R$YIW72nraPT4YiJ1Pi>?&1vXWitHssUY7j6;EvHsf zJE$#yEz~kOc{ zY7x~-4Od43N2&oh3d0qOpcF@|EpVm`iWjaHgxcj$Dx#&qxN;SgYPdpYwB(0kp!P_3 z5r9$)SLh2b>Y_A&N8RB?W0YpJvc zlfaYeY4wD%wSs{2%@8mArr9#Fqlr>XPRnZTLq z6m^lhR$T{Nr>;;}t8>(OzFQ_dEOmi87dTgqQWvW$ z)n&kC>QZ%;xu?u0adYDDmn|^}c!+cvroxK2ZNq9|0e!_tdBA z@9G`k9rcNNM*T_s1^A14UcI1RQWJrR>SgtsdR;vSJg5Gs{;b|muL7^Czp5A2hw3fh zE%mH=MSYB;D<~InbW42(e5U@UzExkUiuM*Iot9C{rg;E8v^-iaEx(o)m{$8l%c^D3 zUZ`17-l%`7uhe(Icj{|AHgqkGrlO?R+_cP^JJ4OruI1G7YWaZqG*9g>wSZO-SWshH zZmqCZ2v|tVplMoBtq8D)mP5;=71N3Xi)+u-=W21S0AvBwVW?RY^@_qS18Nlm7K2?5 z)G7=tjJC>YK3WxE6|JIHT?^0*prQF|wY5fCePDg9uGU0rt+fQU)S7E8v{qVqV0o>Q zR#mH})dSYk8ft!;Lu(9dtToeWX>~LcXlgaIl3E3=GO)7drIppV<_q-IN^7OG23k#E zP0d>?qczn6fq_~H`~;##36zqkQ5jZVD5X%t7gnWF%AiI~wB(IaR_m(`&;|hqX+yN3 z+F)%saJV)?3(-bt1Azmzep(x?qt*r3MQf*Z(zDoD;ACx_Hd|Y!tpKjj7HUhisoHel zbZwQkKpU@x0mHO;+88ZDn+Tk!g= z0(e3@tbMQT*J6M%+G*`uZHKlQxLNx~`%>GkeFgkV+otW&;E&(rTziE55quNd2P3^w+wYEun27IPH2HOJ5 zO(@S$b1%;BLirgrzsA{kluM}j16nwWa#Jg+m)1+_MNx|D-g*_i60nk9UazKe-2fW8 zpI%dMpw|V~)obf@^!j=+U@^Uf?xmN}9YBX}>Sgr`dJSL=y_W8ySJx{8E9+HtRe!DN zKwWp!GwZqZ{J{LWhn`n2tY-jb(9`NU^sM?TEe8tIUuthO4XEkwv`_RjdV2j6luUXS z-CfTP%&zCw^XU2X0>A=#Aw8pBN-qK|qAPk%y_{YVSW)-X3+leQKhR%Kr@z(e=>b3_ zNrP1py&kY0j?>|6DV#5b`q^Mn4pVb=wW&&FjNoG!}Umg3UG=(QJ<>M z(Psf?>C^Rj`sex*;1Ye2zEoeP4+jp{N9m*WG5T!aY<;diPM@GJ1TNGU>(lg^`efi_ z{WHC#-b8N=Y^`_FyXd|2LBK)!0KKn1L=OT6>236`da&LQ*idh(H_{vHEr2cb=6Wl= zt==BkUhk-P)<4y|0lVov^?rJPeIRh4K2-0ZkJU#4N9uukZ#_bv1e~M~)`#gc^eAAI z-cE0(FW2V-=j+{JH4;aGD9vyt3boszbkKX~3-s~8@p>QBo`l+iQHJU4;g<=k+MMOP zc}XYnQx#vDUrD_8(t@VYv&u1+&CEI{_=cjF4bm5kcJl5n8)}DD`6h<+Wb>f#Zp)tZ zTK!zLND{;E08Y^co$*aRG2Wcs2_vcGk7k$Dt-A^qCxyHdreeX@_ee$JFR z`9}I&t>>EAZU_vj)echp8OX)Vr6Hmeey@<6hpFE zx?#I%$0@eduLoalH)Z~Z%Qu=EId*ok+959dPstU;qLaxy`b(VR zOg0=v#AzIbjfey3MIZl(i$0PK&BG8}YuBJG2{Na7DD*O?_DLVSC1(P) zLq2>DPIHpbyKzFLSavSTZizUU0Jc82_Z(7YP^Lojli1y}8WqcrQ!1*>bz3mpR!8z06-8iMI4! zUybH6r@CEs?&YMHIoZ&4g}va^rm&Ye)fIlqoZ8tk`D@G1lsx;DEy;Sp@2pvBwNL$( zd4_xIlJzpDc)mjXzkTYSAajbR(94``5)gl3FF4tJj8h-aBMt?B%9J2;>f?39pY$>( z8=;pu^_}!zxMfR_Io0ii_>*4dWJA{#_JUKJ!d~W7SNJJ&YUfMDpZrY8vmyRMFF3`V z+PC^8af-Rn%Y1mH)d{Z)9^vuM&&-rO(a}-+QAJxBJsFoFLSb4%`$LmN9NSN z(966!Kb_o;;DZ}(N{DnG=65 zBRKgs1@YN_?mMTyK`~= zC-(DWxhHetms>ylfbXo)(9)BQ;MKts%H&EQ`%AEwdEE+WEIru}kN>q{!d&A!{&e^t ze&FjTPQfcos+MqNX5E0tF1_HfOPVI|zQ6E}`3G~EQ(cd}za+OK_|dw9oL(XIt#-yP zSm6--5%k~H$Pv&U?U3H5cMi)YaZGytI&XW67h6^^K=6IgFKVS&_N3RxD3%TR9|iw& zkIj-mJ_t_!UxxpATzbLDX9NCMT%RRD=2SNi{1@#APX3pK|I`loDLDCm6#iF2JEX4) z|H+2@e+B=Elb?c<{|n(i*^^#_|70`&MX7)`mzwa9n-@(x9^EH@Kt{I+%f^mBs^Jze z!*zpNfo^#QT9bcO3S1$aq<3(=#$Y&Vot!vqFsvBucHN(&^J5D|n$}`U(8#_*Y z!Mjqbkc}Oun22`lIK@`@W5=7%DTf#)^~;V^-S!x-$5$h{9T#InHg;T$5!u*rF-Bx# z$0@eLA3IKC6or0KJ9eDvMq#|3z{ZY~4*?i2va#byW5lYGjUA_$h<5Ba#a8%Z$7zg2 zzwCHYY?H>6xUfI;+0XAoWyJMN1((EUp`c02*G746vZV;C>tj~#b^ zI3T%?so^y4;@(LO7voO%QEIptcd}0n7voO$so^y4!vEB88h4uiZ5}PQ=D@$=H12c{ zwuQYNr*WrynQZKM(zvs#WMju^+(kQfoW@=FW5;RSMZZ$R$sciF{CByyF17Pt<@Bs; zfzOx35jUN7oSvEKu^u2BJ5JBK=~xetjUA_FxM;_Y(`SM3$Bv6N0A0(DQ(d}$ufWER zlMnP9AR9YQeWB+G+1PQ4iD<`;Q*4Dlc3i9hs9$!R>NdrAr$(#Tb!|9T#In zHg;T$5!u*rimmX$j?)-L;yFO=*m0^Gf$<_6J5D|@jF<4|V?1e$7$X}yPB9U6?Ks6* z_+!Uuj6}ceIQc;LySOieJw5-$JWma$=fAjjQp4%_FYd?GaC-iW_EW>@`7iuW4Hs*G z+`l|@riP0(KrYzZaj^y<8#|u#{Ew(YHg;UB0m#OVi!}h**m1E2pgyLC)3}R!CpBD* zJI(FXa53&=pBgU4o$OP?Y21bXso^y4H2>4&DU^^JPUBAZAlch-8h5&v$;OT+jXPsx zW5;RSMLTw!#$EVh$7$R}A5+80A9_B}ocZr^ab0TXzsd)%9TYGzES5KHjQ0=N@Q$af*zw0(ha_Lij#J&!wVDS+=P40j z$H@m_W5=m4zkJgqVBun~06R`~Z`5iOFe6Wy06R`T2pc<2eG%8P<2RQKNbWmvVc-1u z2B#QDJ3gk+j$|7<9#(a?Q;ee>r@CT{>^S)#Z0xxI)wRjjvg1@&jFBBDAB2q^r@n|- z*>S2X#>kG755mTdQ(wfj?0AceTax=uT-amnDZStKf0JX=!T+^u|7ZKzy=;_Uv3KFl zvFFyrOg>lCzXJH&n=|~^rW+ko34Gw5Kz|eG4!#X{{&cTj%)o4#-&^Pd8!WGWa^+P2 zj^Od(dk;`V{wHH{3fJn4YqjmZ$?waXGh&E)W}A56zPlEi`AxX=!7KZzW zqMh*j{rn_;K;j?hTXxD5TMXA~d$*sT#Q(?pE?w(?^}7FVJpWVnn0x-NxfheM!Sekx zFh+I84E1lG$&B#^zZ5hjrp(eqG1)LDi_~B4FU`sQ(wy}BPx)iljx;9^NORIpnv?!^ zb?=AVj?3;p*!i`#-u$v$LFbSo9?lwxZ%t#kYCe8G#99C85_90qLOk7`T+S1PR1SSS z^w>7CGX(xV*%?QmB+9PMywr>;nJ7KV!^Fmxf?iiVwLvKLubm=+t zPM4nSg`Vs!{ZCQF%=_~OIs46xHo@Zs|DsYhzO+~|=XGC=pDj~_XXxa?AJ%+9He}Bw zdy9X&Cx=sQT8w*mF<$oy+8&kPsSkK=X7791xRr4@Zs2HzYf;kaS?usYbn6TkwgSzpk%c-t^xol3Q zWHIMSKh25pa=OMV-sKO?6X6fV-zmjEUWz|)5r3hl_{U4}cS`YhVod0m#)8H{jD@pt z=ohhcZ>)M8?(_-!BDUB1PJGd`ck%N!t&N?$zLRr5xNIZoO^M6)rex2jhkOy6abqWb z7w@aK)63VDZ2q6{$IgGL?;rF_)=OND&j<0mziw@8Da0q!qYvXO>t!EgF2#yV*ZN=e z=YMjoLG!Xe)`@-tyxn65z6s|tKacg2+ulIG$M3?q%)4L>F}`e+e-QM;y`%hJr1>i* z6m`eIzSZz~{*9rZ^Qb~hbF}FP{bsCVUhO&UcNzNB@Ujur{Qkf-p2I#hT=Ll|bIE6? z%q9PwlK;+M>o4~!6|>O4CO&t~an)k(MP`nzjWv+ubE>%HvokfE#vtk6hdER7*Bix$ zPMBnhv%-dSbdHWGj|!E4vVncPuzznC;gt1g!}+mxWIfuTI)C#=*1LH8`|A)(&NXBG z4r6EI^2f4qUDx98+p>J7zFT_P-p+>lL~Xr4Pb@jkmLBaR?0U4vSc z?ddq_UxYP=bdHW){#e{)0P&%Xt6v|pNghY)len(jj;zNuKQ>-m*1LGhzFRS)wy148 z8#(^2>st1*Kd|{%<0ax_)uld(>&orOdie9P@uGfNZMl5@n2qFLQa+-xYwyM9(7Rc& zq-#iZt#OZC?ue%{v{X_o=^A9?^2g#`(@l#jd^#fj8f;{H=nbKF#o=%E@>t9EXvdVU zYdh}3f7zbmC-uci*CwCe|4aJ4TGVxoubAg#pK?A>dsd+~T=svnarMPXHnKe(C;j{1 zy?^PNQXg&SMq>I4<`BHY$}z6ANu~Yq5Ki%vVwha_&5+SXyAS&mu=+nCHtg*N%LRSm2GUsm*VlS<^aWs z=ITGq0V|fmMz$B8NzX&kj&<$#=ZQsF<3m2t5!$n^P5k}8zx6SB9Bu5aw#1yVyC3cD zcf0G#b3mSBc4IBKgZ^3lB%RCWl=rfTCnp=(o{p3L{r}GwG2dMAvBp_MC$)1)j=$af zk>fAhOV@H@&VTe-VP_-X`zdT}KNphhlGk0<+@KiHwcocvEW#=4UHos)cJ%9C-TTz` zzqvw|_V0cA@H4_@yvP^2FRXT4asHdnF1^)X8yhPwN!L#LOng@Dv-k?PM_TtB zU4zca?c6H$LmZV~M~&qaOFBn3E`KZ@uq{X2=8GBP^T0;7hu#o+xvp&Qiiv0^*&gi} z(sgaeUHC8CQ=Fu}d~6O_*AsQor(_!!PZ?V)_SCK`K4kwl8&_W}8mM>>}c*0 zia8_Szw-Sh-@kN^iu;u6CjI*`w(=a1=a}7CQyX%hMI7hs?!@=8-6o3Vw~dW6g^e|4 zsGF>J@p!UxU5jk2zDw64`+sFa{-m^V%6_`IY(rxyu4Rp@Y%ldarA@N`vW=@RCi&sw zcGt4{m`a{Os)de2U|-Ip9-o9yal@IjvAR{Fq(|+W^Yi_8(uOXM^p*`h!M@Mx&Yf5>3F|0Yi)2KXusf^>-_m}72f0vt= znpKtWE?9w=zFd_bT~vTyd{UJswj9G-ZEe8&hhH~_r*$In`N^X*%&ndLlu_^xApxmUXy+<2()o}+5;u>N>A@4y=T z_fN(p%W{Kj@E5Jda61{>sRl37$b+xzT!XhV3-EMZYVgq31^L+SHTZtS<~iiDeHHln zUNw00Db;w!AvJh5ujYI^+HGGZ^l!2z{AhW&FCSbgy)onda=XI81Y z!VI3;k`Fr2hv(ViVXW>EZT9Yw+wA&9wCSqdO?~NG@aya`4`JIEo9o<3UMYJKqQ{d_;9#9V(C#_$hucb^M}tz;{Rxq$plUKiIFl5)m%{%M4j zJC5YxFU#;VRYxVu$Z*Enp9|$ezFzpwTvBi>7qT((1qVzD#?XUi{YF zcyu%u^3Lz?%<{jCphH@c;>M(vt59301@ATFjU2`lKa?!IlW{#C(@PCg< za%fh@gFg-BLiXwR+PoDwmJ2xr$0LygRmiTm-lsLfxRCR&yfL3+UJBWvIpf#nkLE(I z9^y1-tqbKsZk`Zht_v8&g`B$iD>D?wLN<=uX6{;pc(|lv)mLUT+7~he`9vs3tB~6- zA29cA9L0@QFd>8sxsdNNFC84sg}jWsAqQ8D;X+0s|Hs~Q7i5byRE@A4P#>=*CoPgr>0IFzO)ukf&vNs^9FzNus#lceLnbe=59 zj*f*Cxk9dQLw-x-454H15+gVrlcb!F0rw4~ca__gq~qwE*R5lc)c#UF#%hlw9k280 zZyl4Q<5NaRvZU+Mv5+aRN5?cCbbXSPqomO3dyYp}cN-+>IH+ZULB}L(PAF$S^6A6x zH_FF@GX)!)?ga2cPr4X~7Zo=f_3OvS4lKZfGX@(%29L~Z#=@^ma|&~oKG+blMCVM% zpWBZw`>GgENE2)bxo?JU7WC@Fz0V={vmR^+`LeTO9xm9E$G#}dgVkU|$VXdsb5GuG zym3C{0kKq;6J+f2lLM< zK3UH@f)JmGOFugzr*1Z`wC~KzAU-V9d54g(b>|y{XLsT;QH6O#y7LYpqr5|m0o^+D zMu-p7&pU)Xf3ub0wj!8c{0Z@S_p?LD#Paoxp6j~tzKBo2tDhZ0ZXeXz7{0kDf9X+< zCqDn#A>@Xv>dC#Q&o|C5@5Xc1 zoMb+llQf^A(r>cnQ^4zuhR}~gyauP+WC+=NOStLyp&u7AVBRou@bdmVGv-%t+D%5v z}4Kk@u@ZcA_s4><{!y6{f3#7B7%8;#CPzZO@@%? zr-hqwO+MwX5#QzmHyJ{@`%W@@PVB~KAifm_Y%+w5xHQ>(G_@z@R+99@Jj~O7lObgP zs*}u8%LZ{FX+93l9Bj~hOu+pb79MWq>pg%AN%OIgTd*Ny?asr@{mc4W^O9ueC~cQb^%96ik3eISH;BChTOyBR{J+aGRTzB!72 ziMS^A>t+Z!w9X`R;N}tBfw)HZ>1GJ|J>pqq?NBb{G0flKUfm2K8-@=vAJ6K^Q!D4g zzRKpIJhjquOBeI&7Y^R|W*_eR`4l6nUTt1s!W3g@$3EuV=O&N+rYA47WQrlABW8q& zb~2;?@Zno$G~~fkrWiuf{Aiipj~D7& zj|WehVhGuA|0MI&_4538#3#C9UZZsV+ISA;F^W4Q%$k9fc-up`C(7nEgnaPz2-B^9 zWqt(l2`-h_5OPA-K4#C`mAG$sFfUX*uOZ~V?On`P_bTuWhz~2A*ASBYF_7yhk6(M9 z=$Y3L(yMtV^V1upd1UUkJUUNaL&%}EdzcSHy!Z>mCn85)L&y_sh*_d@N#6TRa~|xT z*AUV#c&zzDVo81h@hRk%*AP;hI?=rRYboAfW<$=>@d@#M_C>aSkqDDIezz;=fNY#EHJ`u-!=zNTwnkyVIyL1&9xIcTM~q!y2-$p9TjSgxjku7G z^qINWxCMrgQ5U-y`o;QO$SpTB@W}fM3?YLZO^wBO>hS!B(((!q78pXhhnF;t-mArD zuG0A_=!Hy7d(Tn6Pc8mtoWdg>E--`)@R;RrpIDp!vhTI&^=N@1WP;Pv@!NyCJZ9K) z^Az+#(z<7U8pPZsmz8^DhWxR>5c1Tnw#NS7J98l$BEHQZ`xyBUUw5^dk$9z=akJ&8 zT*w&2Ir@o@A*B1mbjI3&U3nSA_0dxwBjxdqjeuj{z5@$NbhqmRN z5Z6cj{R|;bCERta?$U;zKwJX``WZrQ?^M$8yw-+~MO>o>`58hsFVWO^bvcN4L|hXG z`x!!RKi9>$d%OeQ-IF98h-;yteuj{Vr`|eR3~ssZ&bBTudT?P#=lE6SY@ z8r7N~$KPAT@xBY|%`|h|`K~EJeDyEAxHwK+(19nyZq%KvW-*)>(&yD~GXTeza6Z6m z02jv@+~Um6&@Vze{q7CqJ=f1Qx8izzaXoL?72CJO{2s?b=6LRf@2KMc%g#ibi7TQV zLelTiZtp_**=y^~h}F>!AvZkp;+?QgU+`qB8L%$eA!M3y-h37GE%ZGm+Z62(a%jzR zd_3AIku%PW-V*JYuzju>u_)Rx0`?UjjpF?4C1$|q(GDTk!0&Y3k@xRFXBL z>)}`)4*z|=2}wRqR~7Gu{A(;f3j1vDMsjid2=QnSyP&uMyfOV<%q2Hv@5qOq8q2TY z{QgE^d_$cfd=vcrWLX#FEFQ}jqn%4x-XBxEmcTBkST|no#@J+e8vQTTr5A5lw>Q7{ z!*x?gir3(QefioG$Q71&-4yaJ>^~nnfIn|Di1&VW-4wDR`X2>-{VkpNF68p8b7d$m zk>Q3(@oI>6R#*L$4_$rT6tW8JJ#gLUaou@^y=ccJx4`ewpM_fS>VSHmFddml(%?_N z3Vu{8FNp$7huj|N@uOLKhU4^L>5%)Q2y%WDMk$AEBPEdYqd1B`a+(yk&>#6m^5Tfl z4_Qo#BF~2}&=)yIia-)pL+ygd`;h^d0l7l*Kvx)882L@|Am2$*U{UC@B6o-f&;v)= zkYl76uo&9SiE9-D7K1Jqd?*eqj^oV8P2vgkL}n4nqv8$pwz8@eKsJ>!C>)tf$|9eN z7fN}sQpl`Q79{}J$O~^hP<+v1E@U?;f#QWcCY6zGr6Nip)Nnvs9>ojUR?49lK`8Bz zjl>^kI-+z!UKKwabwKHe>?YN5)EuP)vZqu-%k5DDQNssE?NHhy$4XNx(@ITbaA}4N zEkVE_oNI>C9@rlFUg`q_fq}@!(g5vs0Cqqwm&Pa^fE{qHCXj?3;X@tdL1_VOfxIiV zkVB;#up6t3+$bipyL3fq&AOl;0l)y{S?LZmfCe(D1j57W!0Nb8C!DVhtc`XnAYV*N zU`ynyDGz-oU?=pr4|1=J1CF!utMo&Lm82{y;mE<#i-n^MLk5-zWLg=5(gPV;1|!=_ zZ`J81ioaikv~O6R+P7_ z1hS-1{ueKx7xJc1wwN-&GRSd~4mo7X0m~sjNk-&HsR*oy+$NckKcy}OVSznR%QTaAU{bkvaHMo&PKM9Zpdpg z7dRK$Qz#F~eBgZKQ|XJGCyRiKkV|C%GNmj7E<+xY!N~eD0yqMBS(+k$%WC9uX@cA; zEs@7%B{I3RLY|h6$m6mCd0#ppYfD$i<;dyM71$ecIdZ7<1`dQ=j$AW?U^xsKSJok; zN+@!(gdvy8dgNT0h%7G?kn?0M^07=q-j->|$+89|3K)glC~Hs_0x3hx8svBx3d>E% zg>nXX1{qVfAScRM;92B}*@4_BKLdY8wwPVWC~^^a5qVPfBCp7=z+aIs<$#rs`2#ElxDOdx{s8+L7>^7re}EkU9zuqfKfpEu zDc8$mWO_LT{1HEok*VYy@B)4wBO}Ts;1&ElMpl$-z#I5^jLa&xfOoC@Di4q+BKpkzWum}!1{*G)YIg$OP1~Pc$LdkVA$tl3*2GUUWJjqB%K}zblzzZ|$m!A^IbH?=2O^(KC*)`u3Z%R)ospSjIB+;J zxO79dmJnbF^1k#yZkIm5KFH=md0|E)vq?K(7s%1b4buhK9db0zbqDrBZj(@y0YJ*G z5{fbmI1KquLQ#4F#~^#m9N-+}6Ny0nkNLp)$Sg7uc}W%n7bDlmB;*`f3S5dDB~y_X zWCd^qa*|9(zM0v;*~n26j(jXDk&h-EI2m#!@|8>mPJ>*DbJKt`k*_2gWgc)Ia*9M- z*+rs}VPqNjGMtZA*Pg)pr_Fwx-kV-KepJGsaZ4<2;{6bNSFW>omoD>@^%dIUUEnTz zde=3*H=5qXF28dh-m=w&``a{2)4TF}e9_Qc=0u$Q^E_8TtR zm$}_L-Q{<;%e>(xp3pVVhJYZvqh01(PHqgyerizwy}R9x%kO~yC;ro+1y(y`^D(~X z-k^l#buRK&h~dA>qi1#F``X^;9pPtcc#!9g0AVk4dfzsUBfY~uHGB{3JG$a#$Elq+ z?T=gik~zIEoUTRh$WO^b4&LLTF8#+iwNo&68!MhNpWC5rLZ_;&EWOOTuZv7ru_Vb} z=9h+#N*;GRp8n960U0)pw%WAg6!Y(X9BJ8592`GITDXI)-^xRHJj;tdN{wOmwD)A(-eA{drkE*@1GxJU3WnH zSG=OQZJcD_T3zi_GOa2%xUh?d-O#vg;AJ$`&@Yy z1Q+*XHsnA9B;&p^`4T-*y3htzNpbFvrD9EzvRMXmtKUvVp>RYK*A=dI^PrAD`%<;R|~_=7Q> z6JF(*$GhVBFsWM0gbm#fnmxhECS<^Ivpu+o;eO;~NDZgBoyGHcAM8`ZM&%Y5pw5vz_!JR(n&)#aNJUG8bbk6`=Tp2Q_bp^FUdYMzK=vt(gIjt*%z07G{A=;O@U5*Z#!y^BN%tZ_X*#v9;9ng&Xbg!?o*-v7^ij$V2wf7l{u{|I%17MdYOy+j`T7Y z_YvvsI6V{6V~s&JcAR2<6l)B!p*YYQgSc2@5Eu9OKXH1748t0OZ0tC#F>YavK{m9m z5aXB{F6Wk!Io)fgvBsb_|B1(9jUjBrb;(|ET4RWDp*4mF))-_@Ym5V~`AO@Fdst(T zUgor}5PF%@8si?;6=Y9qj6YpmtT9MW@t=%!1#$9+)*HlWjUhNa1JhuQL3)|f+@m#y z$c;nu?KfAR9Kpr?_!7Bp#QY&nYYcjZze*(+>x$Q~m$_JDkY3zJspaB%LO!I1i}59U znTz>G*Oj?=?vY;R;$EOQq=t)_lf8K6q~v0aK{+R`k^e=7{qCf@fX$@ zJHcsJ=YHe0x4VDLALDqA zhff`ca$j>CfWA{UEoRo1Aj5NQIG=yIvwyb94U8Jw!+G}7jbg&G)-%kVct1z>iGCe3 zwlx-h5zbeBe=N2_lWmUim%@3Y=G$U#u0H1&doi5%ztlEvFWNeecDkpj6PI^?p#Sl& z!g=pLUm7{SxaHqHPq_6Re9^BV3&-)qv*+SmopuS)cOk{u2p-WYoOjJS-yluDhJ9n3 z{*~0;((a}GukQ);JBaso^gHy-fBLr-ja~`i{M3YixM$(j{O0Wa@VXaUf9-JIPtx5< zKgEo?I+B-jtSz*i*lU28_vsn1jIFN zkl*i03V&8djpYk(x>5hcv`rFv3*%M_iUftyxyR%qg1o8d|ckHv7SE{^`C`4 z2M70vt-Sa2zWJ{HlV4)bkPhA8DuZI*bed`QavN#+{I%2Dys$VXwstLihc@?x*m6&{ z$8NvyVN6ipnbeMq5g+tjwwc+_;m9#3+W+dya9(&$bWE9}evW70{&;6y_UQEf7t#0c z%DVeM-*ejcJox)oBlzLxU7UgJh1FkKpTv{KeeHMUovS?jq_*6ep4`!a61#mRo!%@aF)2M3<-`BoUcdu;L>f#=DN zk;{xPvuX!o5w}-U78-T%+)v*koZrs7z)0x1>44q1*y-i@IeKv^=j8<)?;+L=iN_5( z(7`z|ujZWEL^mYvdj8lw1C#W2^Fbb8Z+s7AZ5J*6MMQ!_;#QoK#!PAI=kTM)Wr+o0E0JhrGtf*r!Si z%J-nS()+gU?k}>8aLUh8X^r9c_jZ!(?esQl4A*B+QeC@eh}`DWddvO4nfgo2VZ0OW zo7k0(`;oI8%WsD}GZ)`rRL?%~z}_O^&h5kJ#SE#>jh`^?(i+1ltua1`Pin4Ps(xR` zzIyqMKaYkxOUHJL-T$M9arXOgr?kd!N^6V{+LzWCPHBzdEOWl7{~fF`e)}=pDXlR+ zs4MsVzr*F{;rp>?OupCb^z!_Xp4HE>c?~mXKJh$oWmyw@poWscdV^4mpW^Oa;$P-h@ z?+*ox^Bhb#$85>L? z(;DBI3%_Z=AE2EIgDNG<_~YN3YrV0@`sxX@Kp}jq!AACM{gYWJbPN~r(&1fZd{9IF z2JLNqTryd{9J<^5b$?4wC1zMOf|1xY{SowSYodEu?_FFcDETg zs13i;@CP&cRcpSg)?0INp;mk!{F+iYh%fu|oe_a?+V$q0;g0bUviI#L#=ici&C2sK z@O6lP5y-8Gmz{JYJB*8v@8)LU4>0eqLJr1!v6JyQpAYlfPHw{ay@;QXOL6Rn@ey(q zjyvFf60#4D%VQqc$?iBGg?`tEY>Rm>WO*Eq#(i7m^(|xmjsDzijIa6EkO6$xUl)uv z>4)(sw+BY980-tpU){{>H-_IVmy<`JUv}~!&X-2N>|`aJkHqzwzgc1Y)i)#WsI4^8 z9DZU7SwH21JUefjInAujh5UTZ2GcRd!G)|_W3AbAYArr$#7Q&P%$mH0q4Gm@Ilp$PgtZTM zaTC>C8N$M^~v zGVL4VRO`xI$bexl{2hHyo8nl=W385&)t6S}c5-A{mHR&_%U{Faafoj~rWWQg&sw%} zS>NVn^}vjL0sL8v`6y)Pye-V2zE!x8^jwbcb6ERUDr3GCTAtgO;9HhQWPjlwdgzIn zEawH9H-9O_BV6*3_YGrYhr(RQWsZ49x2%QvEnM#<=GCENyNx|j8F>PZUt|6V8K32i z88jp}_k=#EZ0lrM%591H^cN3)Fn^%gxl1k{)Z>ZqwNEbYH9x>muIA)tVb5l6FoleW zJ!(#?%7g2r_nHY~DkjS!^@7YPKNsR|p6$$UpH=4Gucw-SV*K7Z+L_%a@nkuF z-c<9!5YB~cS`2xCD|m9>DnVwy7M^@s)v4yXN%?uUa!bq^cyCFuPj{Q9TYm0fKbY%6 zJ$dGvZ_K`JJ$N4YwGa1KfZGelaE#O7VlNyoFh0q$MGoT{=9T{s1^G?H-wW~HP5OwxjXhecw)bWC-!5|o{=i}{{Cou2Y&?07JQR_I=)#y4P^)Ghn)b+f%IMd z$@nJzcHnk=f4?SnI`jhe!ngk&*b`9~SQk4O24ZKxM&L$#o8BMC^?~)V7hxFM-U8gh zzQk^U&+y&;2`F2!M}l@tG(yRZJqUHN&!Id@e$=cBRu3g7>esU{C*v$Lc7SBTPK5E; z0T7Pz1$I9Kp^erkjj-#W7i3SAAnXQdhFut?P_kp6Lm+m$v_#2LVaG-t_}>lK4LdaIV*f=4U2;$ri*bnVfRJ|Fa$c=I;(;f@jX>k&JCiY=h#9rp5Y{9+| zFJ(R}gKzck#0+&POPGm00-s}s7EqS6LfDav9c1HY# zeH4FT??ho`9d?HlRyMI>$^-1Gc!j+bv~!|_@+D?y30%bs`yaMqr%6?16|0V&6yIZ~ z#ak3bxrTioFR)kRg|*+}DA-Gszfk`%c741;d1>twxyULhUtoq-Qr564*k|z;b<@F* zjMzJo5i&1|hjIzKN74e*Dk^qFe2bkZX_OeID+jO(MN^#Ee{!BVQ8HnV!$Qo^vdUUk zQ8~rZp^Z~4qw<2~LCJ`n64Y)S_N=%8-LS{w2FrrI6gOBl_@m;|0s5{DmIm!mf|MSZ3uO%Z>dPFM!l~LFF!Xr4&?dvHZ$U*o{&E zSOEJx-e5mUVPIkGD=Dcw#jcZ*%4_WS_zrtiN&rh>$H{kyqc_l7`HfXj&R~yA1?4&` zja?t7Svg=i>^NcAhf)bx342U@lw<52^TE!M%F3VEcT*Ku6?;rPmFLVC=!@MaN7%2- z02+#kJtsG@k0wA#WVMw2tR{Av><7Dw9Y1FoSH4220nJy8um<*i{0P2_-Nt^L-N4=0 z8}vKmUX(q+b2zsfJCn*|cg$i|N|}rK>4W_w+u+S=%+G?@*|H2#Sc>^s5<6=)vm(j{ z7F2O!%baY^!+&8fIQcB>Wlr{_A3Hp|)&9TYGt2nJk1zL4d`7q4d`*a_+33o__)kOo z5RV5piNnT(jY&3(3RE#eU;Yq(W@u01@q!2EzGF1W*TzwxgAIwk)FCqIb`{{^@7;+x~p_}#r zCz}xWgS__1O{N_mfx35Ue8q2~uFT2)#iPB+bw9?*KF7q3mJc$gy49}kwDfjdTx-_O zbX?}*x~KklWcf_jP02-nsjkeaF7;Q~e~goThjFKp<0d%O<%NzU`)tSeBj)G!UUX7B zQxNm*=f3-ZQ#&K!!)H%UJMB32_ZDJKb!ATW&(U8|_hX#wvmxf>gUqRJRm7b1c3fQR z)#AI!*Cj5lTQcl7TQ2%b_A;ls)L&8eW1Q^UA?6}(f>T`sF&936j5FzbHs!UdPLFRr zd0hJ4@zOh6op$<<)OFg_{hQvVuIaj#WiRm$^mcV6pSfID)_lMe_eOzUQ+2f6)hu)dzmM+Webd_CdChxbWYqE9-6Qer%pl-4FC1smoK^ zxUTg#y-nQ@Vk_1CKrh!_ymhasFTy)aQ@ks2t?z#Go>wSODaE@Jh4fmr*W8SED5jL+ zor*#pDzV3mEEmdCO7X5mAtMXzG3)7LcuFbW!6@WkbM~5VhmGMWrFb`^kYRcDo0Z(g z@RTxOXh$PrWoYud6~#LiBlh4D8NZ~RVQ5~VnPqpyg+ zs+2`3gTG-^!(SgNp;W+c>GXFTACxNi?Y$uWa#9Ld4nGC)H-O4OU;Grr-*OCKF&4aO zaKPLuz5y97l@1`jIADChir#@-@P$Vs|Hfa9XqId*c$VMhanX)DxM+v;#Hk&blZ~h= z^T0Z8@uDtqVI%YQ(2Hvk7wyaZX_NfP{UR=GWd7Wxr~VQb*OGbZ*L9QIAuigHxwlJC z?GP93$b2mSJvk=Cg^kR^pcnljF0Li>?(NlN8{)!7=Dl2c@`t#%mdu;xZser8WJ6ro z$UG2w;SX_fEtzAwy8emp8VSi*mtsA5zQ)(hB!l;Q`S?Q{IwS0a{I9h0zHVx+^`Q@` zsVm#a{JsAlwrQuA>&iSe_I5UQ`hU0mf7jmbx_0`c_V3<&W;S2F&TPHhX?m<$XFjR> zt?7_t@g4WgA~-MP(i_iA$GEGezRYQ+8++AUUFTcVOOj`|-8bEFUdT?LJIxB)-fpRAp1XqAG&b> literal 189284 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 Y$FNH{19#B{>47_%9L|Qb!+zoa0dB5ZD*ylh diff --git a/homes/assets/starter_rv_interior.glb b/homes/assets/starter_rv_interior.glb new file mode 100644 index 0000000000000000000000000000000000000000..21608ea0c68307d10e8e8d75d59d17e658abe789 GIT binary patch literal 15564 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 literal 0 HcmV?d00001 diff --git a/homes/assets/tent_interior.glb.import b/homes/assets/tent_interior.glb.import new file mode 100644 index 0000000..fc01ba7 --- /dev/null +++ b/homes/assets/tent_interior.glb.import @@ -0,0 +1,45 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://dkfqs051shmxe" +path="res://.godot/imported/tent_interior.glb-576cc47c2c633f7ae635651598663518.scn" + +[deps] + +source_file="res://homes/assets/tent_interior.glb" +dest_files=["res://.godot/imported/tent_interior.glb-576cc47c2c633f7ae635651598663518.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 +gltf/texture_map_mode=1 diff --git a/homes/home_decor_controller.gd b/homes/home_decor_controller.gd index 8f9aa5f..f67207f 100644 --- a/homes/home_decor_controller.gd +++ b/homes/home_decor_controller.gd @@ -130,6 +130,8 @@ func _unhandled_input(event: InputEvent) -> void: func _process(delta: float) -> void: + if _toolbar != null and _toolbar.visible: + _toolbar.set_interactive(_can_decorate()) if _drag_instance_id.is_empty(): return # Menus and other gameplay input handoffs must cancel an active drag before @@ -472,9 +474,20 @@ func _on_home_changed() -> void: func _refresh_toolbar() -> void: if _toolbar == null: return - _toolbar.set_active(_can_decorate()) + var inside_home: bool = _is_inside_home_space() + _toolbar.set_active(inside_home) + _toolbar.set_interactive(_can_decorate()) if not _toolbar.visible: _clear_selection() + elif not _can_decorate(): + _toolbar.report_status("decor tools pause while another menu is open") + + +func _is_inside_home_space() -> bool: + return ( + _network_home != null + and String(_network_home.get_local_space()).begins_with("rv:") + ) func _can_decorate() -> bool: diff --git a/homes/home_world_service.gd b/homes/home_world_service.gd index fd02d93..4ec0645 100644 --- a/homes/home_world_service.gd +++ b/homes/home_world_service.gd @@ -9,23 +9,42 @@ const DecorCatalogType = preload("res://homes/decor_catalog.gd") const STARTER_MOTORCOACH_SCENE: PackedScene = preload( "res://homes/assets/starter_motorcoach.glb" ) +const TENT_INTERIOR_SCENE: PackedScene = preload( + "res://homes/assets/tent_interior.glb" +) +const STARTER_RV_INTERIOR_SCENE: PackedScene = preload( + "res://homes/assets/starter_rv_interior.glb" +) +const HOME_PROMPT_FONT: Font = preload("res://ui/fonts/Tuffy_Bold.otf") -const EXTERIOR_BODY_SIZE := Vector3(5.6, 2.5, 2.35) -const EXTERIOR_DOOR_LOCAL := Vector3(-0.2, 0.85, 1.48) -const EXTERIOR_SPAWN_LOCAL := Vector3(-0.2, 0.25, 2.45) +const RV_EXTERIOR_BODY_SIZE := Vector3(11.2, 5.0, 4.7) +const RV_EXTERIOR_BODY_CENTER_Y: float = 2.7 +const RV_EXTERIOR_DOOR_LOCAL := Vector3(-0.4, 1.7, 2.96) +const RV_EXTERIOR_SPAWN_LOCAL := Vector3(-0.4, 0.25, 3.95) +const TENT_EXTERIOR_BODY_SIZE := Vector3(4.6, 3.0, 4.6) +const TENT_EXTERIOR_BODY_CENTER_Y: float = 1.5 +const TENT_EXTERIOR_DOOR_LOCAL := Vector3(0.0, 1.0, 2.3) +const TENT_EXTERIOR_SPAWN_LOCAL := Vector3(0.0, 0.25, 3.3) +const RV_EXTERIOR_PROMPT_LOCAL := Vector3(-0.4, 3.72, 3.02) +const TENT_EXTERIOR_PROMPT_LOCAL := Vector3(0.0, 2.48, 2.36) +const HOME_PROMPT_SIZE := Vector2(0.95, 0.28) +const HOME_PROMPT_CORNER_RADIUS: float = 0.08 +const HOME_PROMPT_TEXT_PIXEL_SIZE: float = 0.0045 +const HOME_PROMPT_TEXT_COLOR := Color("c3dfe6") +const HOME_PROMPT_BACKGROUND_COLOR := Color("0a2d3a") const EXTERIOR_INTERACTION_DISTANCE: float = 2.7 const INTERIOR_EXIT_DISTANCE: float = 2.1 const INTERIOR_ORIGIN := Vector3(1000.0, 300.0, 1000.0) const INTERIOR_SPACING: float = 14.0 const INTERIOR_MAX_SPAWN_SLOTS: int = 64 -const INTERIOR_FLOOR_SIZE := Vector3(8.0, 0.18, 4.5) -const INTERIOR_WALL_HEIGHT: float = 2.7 +const TENT_INTERIOR_SIZE := Vector2(4.0, 4.0) +const STARTER_RV_INTERIOR_SIZE := Vector2(4.0, 6.0) const MIN_EXTERIOR_TRIANGLE_AREA: float = 1.0 -const MIN_EXTERIOR_SEPARATION: float = 9.0 -const EXTERIOR_FOOTPRINT_HALF_EXTENTS := Vector2(3.85, 2.55) +const MIN_EXTERIOR_SEPARATION: float = 14.6 +const EXTERIOR_FOOTPRINT_HALF_EXTENTS := Vector2(6.65, 3.73) const EXTERIOR_SURFACE_INDEX_CELL_SIZE: float = 5.0 const EXTERIOR_MAX_SURFACE_HEIGHT_DELTA: float = 0.24 -const EXTERIOR_CLEARANCE_HEIGHT: float = 2.7 +const EXTERIOR_CLEARANCE_HEIGHT: float = 5.5 const WORLD_GEOMETRY_COLLISION_LAYER: int = 1 const DECOR_SELECTION_COLLISION_LAYER: int = 1 << 8 # Includes the player's 0.45 m capsule radius plus enough movement margin for @@ -113,7 +132,9 @@ func apply_manifest(data: Dictionary) -> bool: var home_data: Dictionary = PlayerHomeStateType.sanitize_save_data( data["home"] ) - var exterior := _build_exterior(fingerprint, exterior_transform) + var exterior := _build_exterior( + fingerprint, exterior_transform, home_data + ) var interior := _build_interior(fingerprint, interior_index, home_data) var presentation: Dictionary = { "owner_peer_id": int(data["owner_peer_id"]), @@ -191,19 +212,27 @@ func choose_exterior_transform( ) if dry_result != Transform3D.IDENTITY: push_warning( - "RV exterior used a dry fallback with obstructed clearance." + "Home exterior used a dry fallback with obstructed clearance." ) return dry_result - push_error("No dry, level RV exterior footprint was available.") - var fallback: Transform3D = spawn_transform - var column: int = posmod(owner_peer_id - 1, 4) - var row: int = maxi(floori(float(owner_peer_id - 1) / 4.0), 0) - fallback.origin += Vector3( - -12.0 + float(column) * 8.0, - 0.0, - 8.0 + float(row) * 7.0, - ) - return fallback + var emergency_result: Transform3D = _find_exterior_transform( + owner_peer_id, + triangles, + surface_index, + spawn_transform, + [], + false, + false, + ) + if emergency_result != Transform3D.IDENTITY: + push_warning( + "Home exterior used an accessible emergency placement." + ) + return emergency_result + push_error("No dry, level home exterior footprint was available.") + # The authored spawn is the only universally reachable point. Never strand + # a home on an unchecked elevation when malformed terrain offers no site. + return spawn_transform func _find_exterior_transform( @@ -229,7 +258,7 @@ func _find_exterior_transform( ) / 3.0 if ( require_spawn_clearance - and position.distance_to(spawn_transform.origin) < 6.0 + and position.distance_to(spawn_transform.origin) < 9.0 ): continue if _too_close_to_reserved(position, reserved_transforms): @@ -240,6 +269,13 @@ func _find_exterior_transform( ) if not grounded_position.is_finite(): continue + if ( + _world != null + and not _world.is_home_exterior_position_accessible( + grounded_position + ) + ): + continue if ( require_obstacle_clearance and not _exterior_volume_is_clear(grounded_position, yaw) @@ -444,16 +480,48 @@ func get_exterior_transform(owner_fingerprint: String) -> Transform3D: func get_exterior_prompt_position(owner_fingerprint: String) -> Vector3: - return get_exterior_transform(owner_fingerprint) * EXTERIOR_DOOR_LOCAL + return get_exterior_transform(owner_fingerprint) * ( + _exterior_prompt_local(owner_fingerprint) + ) + + +func set_exterior_prompt_visible( + owner_fingerprint: String, + requested_visible: bool, + action_text: String = "enter home", +) -> void: + for fingerprint: String in _presentations_by_fingerprint: + var presentation: Dictionary = _presentations_by_fingerprint[fingerprint] + var exterior: Node3D = presentation.get("exterior") + if not is_instance_valid(exterior): + continue + var prompt := exterior.get_node_or_null("DoorPrompt") as Node3D + if prompt == null: + continue + prompt.visible = ( + requested_visible + and fingerprint == owner_fingerprint + and not _dedicated_runtime + ) + if prompt.visible: + var label := prompt.get_node_or_null("Message") as Label3D + if label != null: + label.text = action_text func get_exterior_spawn_transform(owner_fingerprint: String) -> Transform3D: var exterior_transform: Transform3D = get_exterior_transform( owner_fingerprint ) + # Exterior local +Z leads away from the doorway. Player visuals face local + # -Z, so turn the authoritative spawn basis around to start the day facing + # outward instead of looking back into the home. + var outward_spawn_basis: Basis = ( + exterior_transform.basis * Basis(Vector3.UP, PI) + ) return Transform3D( - exterior_transform.basis, - exterior_transform * EXTERIOR_SPAWN_LOCAL, + outward_spawn_basis, + exterior_transform * _exterior_spawn_local(owner_fingerprint), ) @@ -461,17 +529,26 @@ func get_interior_spawn_transform( owner_fingerprint: String, visitor_offset: int = 0, ) -> Transform3D: - var anchor: Vector3 = get_interior_anchor(owner_fingerprint) # `visitor_offset` is allocated by the host as a compact room-local slot. # Keep it bounded as a last line of defense if a future caller accidentally # supplies an engine peer ID instead of a slot. var visitor_slot: int = posmod(visitor_offset, INTERIOR_MAX_SPAWN_SLOTS) - # Build the origin as a value rather than mutating Transform3D.origin. - var spawn_origin: Vector3 = anchor + Vector3( - -1.0 + float(posmod(visitor_slot, 4)) * 0.65, - 0.25, - 0.4 + float(floori(float(visitor_slot) / 4.0)) * 0.55, + var exit_direction: Vector3 = get_interior_exit_direction(owner_fingerprint) + var lane_offset: float = ( + float(posmod(visitor_slot, 4)) - 1.5 + ) * 0.28 + var row_offset: float = ( + float(floori(float(visitor_slot) / 4.0)) * 0.28 ) + # Spawn just through the authored doorway. Local presentation then walks the + # avatar farther into the room before returning movement control. + var spawn_origin: Vector3 = ( + get_interior_exit_position(owner_fingerprint) + + exit_direction * 0.42 + - exit_direction * row_offset + + Vector3(0.0, 0.0, lane_offset) + ) + spawn_origin.y = get_interior_anchor(owner_fingerprint).y return Transform3D(Basis.IDENTITY, spawn_origin) @@ -487,7 +564,9 @@ func is_avatar_near_exterior(avatar: Player, owner_fingerprint: String) -> bool: if avatar == null or not _presentations_by_fingerprint.has(owner_fingerprint): return false var transform: Transform3D = get_exterior_transform(owner_fingerprint) - var door_position: Vector3 = transform * EXTERIOR_DOOR_LOCAL + var door_position: Vector3 = ( + transform * _exterior_door_local(owner_fingerprint) + ) return avatar.global_position.distance_to(door_position) <= ( EXTERIOR_INTERACTION_DISTANCE ) @@ -504,11 +583,46 @@ func is_avatar_near_interior_exit( ) <= INTERIOR_EXIT_DISTANCE +func has_avatar_crossed_interior_exit_threshold( + avatar: Player, + owner_fingerprint: String, +) -> bool: + if avatar == null: + return false + var local_position: Vector3 = interior_global_to_local( + owner_fingerprint, + avatar.global_position, + ) + var threshold_position: Vector3 = interior_global_to_local( + owner_fingerprint, + get_interior_exit_position(owner_fingerprint), + ) + var exit_direction: Vector3 = get_interior_exit_direction( + owner_fingerprint + ) + return ( + (local_position - threshold_position).dot(exit_direction) >= 0.0 + and absf(local_position.z - threshold_position.z) <= 0.85 + and local_position.y >= -0.25 + and local_position.y <= 2.25 + ) + + +func get_interior_exit_direction(owner_fingerprint: String) -> Vector3: + return ( + Vector3.LEFT + if _home_tier(owner_fingerprint) + >= PlayerHomeStateType.STARTER_RV_TIER + else Vector3.RIGHT + ) + + func get_interior_exit_position(owner_fingerprint: String) -> Vector3: - return get_interior_anchor(owner_fingerprint) + Vector3( - -INTERIOR_FLOOR_SIZE.x * 0.5 + 0.6, - 0.35, - 0.0, + var tier: int = _home_tier(owner_fingerprint) + return get_interior_anchor(owner_fingerprint) + ( + Vector3(-STARTER_RV_INTERIOR_SIZE.x * 0.5 + 0.6, 0.35, 0.0) + if tier >= PlayerHomeStateType.STARTER_RV_TIER + else Vector3(TENT_INTERIOR_SIZE.x * 0.5 - 0.55, 0.35, 0.0) ) @@ -705,7 +819,7 @@ func find_nearby_exterior_owner(avatar: Player) -> String: for fingerprint: String in _presentations_by_fingerprint: var transform: Transform3D = get_exterior_transform(fingerprint) var distance: float = avatar.global_position.distance_to( - transform * EXTERIOR_DOOR_LOCAL + transform * _exterior_door_local(fingerprint) ) if distance <= closest_distance: closest = fingerprint @@ -713,6 +827,41 @@ func find_nearby_exterior_owner(avatar: Player) -> String: return closest +func _home_tier(owner_fingerprint: String) -> int: + var presentation: Dictionary = _presentations_by_fingerprint.get( + owner_fingerprint, {} + ) + var home_data: Dictionary = presentation.get("home", {}) + return int(home_data.get("tier", PlayerHomeStateType.STARTER_TIER)) + + +func _exterior_door_local(owner_fingerprint: String) -> Vector3: + return ( + RV_EXTERIOR_DOOR_LOCAL + if _home_tier(owner_fingerprint) + >= PlayerHomeStateType.STARTER_RV_TIER + else TENT_EXTERIOR_DOOR_LOCAL + ) + + +func _exterior_spawn_local(owner_fingerprint: String) -> Vector3: + return ( + RV_EXTERIOR_SPAWN_LOCAL + if _home_tier(owner_fingerprint) + >= PlayerHomeStateType.STARTER_RV_TIER + else TENT_EXTERIOR_SPAWN_LOCAL + ) + + +func _exterior_prompt_local(owner_fingerprint: String) -> Vector3: + return ( + RV_EXTERIOR_PROMPT_LOCAL + if _home_tier(owner_fingerprint) + >= PlayerHomeStateType.STARTER_RV_TIER + else TENT_EXTERIOR_PROMPT_LOCAL + ) + + func set_local_space(space_id: StringName) -> void: _local_space = space_id _refresh_local_visibility() @@ -822,24 +971,44 @@ func _ensure_roots() -> void: func _build_exterior( fingerprint: String, world_transform: Transform3D, + home_data: Dictionary, ) -> Node3D: var root := Node3D.new() - root.name = "RV_%s" % fingerprint.left(8) + root.name = "Home_%s" % fingerprint.left(8) _exteriors_root.add_child(root) root.global_transform = world_transform + var tier: int = int(home_data.get( + "tier", PlayerHomeStateType.STARTER_TIER + )) + if tier >= PlayerHomeStateType.STARTER_RV_TIER: + if not _dedicated_runtime: + var motorcoach: Node3D = ( + STARTER_MOTORCOACH_SCENE.instantiate() as Node3D + ) + if motorcoach != null: + motorcoach.name = "StarterMotorcoach" + root.add_child(motorcoach) + else: + push_error( + "The starter motorcoach exterior could not be instantiated." + ) + _add_box_collision( + root, + "Body", + RV_EXTERIOR_BODY_SIZE, + Vector3(0.0, RV_EXTERIOR_BODY_CENTER_Y, 0.0), + ) + else: + if not _dedicated_runtime: + _add_tent_exterior(root) + _add_box_collision( + root, + "Body", + TENT_EXTERIOR_BODY_SIZE, + Vector3(0.0, TENT_EXTERIOR_BODY_CENTER_Y, 0.0), + ) if not _dedicated_runtime: - var motorcoach: Node3D = STARTER_MOTORCOACH_SCENE.instantiate() as Node3D - if motorcoach != null: - motorcoach.name = "StarterMotorcoach" - root.add_child(motorcoach) - else: - push_error("The starter motorcoach exterior could not be instantiated.") - _add_box_collision( - root, - "Body", - EXTERIOR_BODY_SIZE, - Vector3(0.0, 1.35, 0.0), - ) + _add_exterior_prompt(root, tier) root.visible = not _dedicated_runtime return root @@ -850,59 +1019,26 @@ func _build_interior( home_data: Dictionary, ) -> Node3D: var root := Node3D.new() - root.name = "RVInterior_%s" % fingerprint.left(8) + root.name = "HomeInterior_%s" % fingerprint.left(8) root.position = INTERIOR_ORIGIN + Vector3( float(interior_index) * INTERIOR_SPACING, 0.0, 0.0 ) - var half_width: float = INTERIOR_FLOOR_SIZE.x * 0.5 - var half_depth: float = INTERIOR_FLOOR_SIZE.z * 0.5 - var wall_center_y: float = INTERIOR_WALL_HEIGHT * 0.5 _interiors_root.add_child(root) - _add_box( - root, "Floor", INTERIOR_FLOOR_SIZE, Vector3.ZERO, - Color("a6754e"), true, - ) - _add_wall( - root, "WallNorth", - Vector3(INTERIOR_FLOOR_SIZE.x, INTERIOR_WALL_HEIGHT, 0.18), - Vector3(0.0, wall_center_y, -half_depth), - ) - _add_wall( - root, "WallSouth", - Vector3(INTERIOR_FLOOR_SIZE.x, INTERIOR_WALL_HEIGHT, 0.18), - Vector3(0.0, wall_center_y, half_depth), - ) - _add_wall( - root, "WallWest", - Vector3(0.18, INTERIOR_WALL_HEIGHT, INTERIOR_FLOOR_SIZE.z), - Vector3(-half_width, wall_center_y, 0.0), - ) - _add_wall( - root, "WallEast", - Vector3(0.18, INTERIOR_WALL_HEIGHT, INTERIOR_FLOOR_SIZE.z), - Vector3(half_width, wall_center_y, 0.0), - ) - for x_position: float in [-1.75, 1.75]: - _add_box( - root, "WallNorthWindow%s" % ("Left" if x_position < 0.0 else "Right"), - Vector3(1.65, 0.95, 0.04), - Vector3(x_position, 1.55, -half_depth + 0.11), - Color("153640"), false, - ) - _add_box( - root, "WallSouthWindow%s" % ("Left" if x_position < 0.0 else "Right"), - Vector3(1.65, 0.95, 0.04), - Vector3(x_position, 1.55, half_depth - 0.11), - Color("153640"), false, - ) - _add_box( - root, "WallEastWindow", Vector3(0.04, 0.95, 1.55), - Vector3(half_width - 0.11, 1.55, 0.0), Color("153640"), false, - ) - _add_box( - root, "WallWestDoor", Vector3(0.04, 1.9, 1.25), - Vector3(-half_width + 0.11, 1.0, 0.0), Color("2897a8"), false, + var tier: int = int(home_data.get( + "tier", PlayerHomeStateType.STARTER_TIER + )) + var scene: PackedScene = ( + STARTER_RV_INTERIOR_SCENE + if tier >= PlayerHomeStateType.STARTER_RV_TIER + else TENT_INTERIOR_SCENE ) + var shell: Node3D = scene.instantiate() as Node3D + if shell == null: + push_error("The home interior shell could not be instantiated.") + else: + shell.name = "InteriorShell" + root.add_child(shell) + _prepare_imported_interior(shell) var decor := Node3D.new() decor.name = "Decor" root.add_child(decor) @@ -913,6 +1049,153 @@ func _build_interior( return root +func _add_tent_exterior(parent: Node3D) -> void: + var tent := MeshInstance3D.new() + tent.name = "StarterTent" + var mesh := CylinderMesh.new() + mesh.top_radius = 0.0 + mesh.bottom_radius = 3.05 + mesh.height = 3.0 + mesh.radial_segments = 4 + mesh.rings = 1 + mesh.cap_top = false + mesh.material = _material(Color("9a7049")) + tent.mesh = mesh + tent.position.y = 1.5 + tent.rotation.y = PI * 0.25 + parent.add_child(tent) + _add_box( + parent, + "TentDoor", + Vector3(1.25, 1.85, 0.04), + Vector3(0.0, 0.95, 2.18), + Color("173b32"), + false, + ) + + +func _add_exterior_prompt(parent: Node3D, tier: int) -> void: + var prompt := Node3D.new() + prompt.name = "DoorPrompt" + prompt.position = ( + RV_EXTERIOR_PROMPT_LOCAL + if tier >= PlayerHomeStateType.STARTER_RV_TIER + else TENT_EXTERIOR_PROMPT_LOCAL + ) + prompt.visible = false + parent.add_child(prompt) + + var background := MeshInstance3D.new() + background.name = "Background" + background.mesh = _rounded_rectangle_mesh( + HOME_PROMPT_SIZE, + HOME_PROMPT_CORNER_RADIUS, + ) + background.material_override = _prompt_material( + HOME_PROMPT_BACKGROUND_COLOR + ) + prompt.add_child(background) + + var label := Label3D.new() + label.name = "Message" + label.text = "enter home" + label.position.z = 0.012 + label.font = HOME_PROMPT_FONT + label.font_size = 28 + label.pixel_size = HOME_PROMPT_TEXT_PIXEL_SIZE + label.modulate = HOME_PROMPT_TEXT_COLOR + label.outline_size = 0 + label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER + label.width = HOME_PROMPT_SIZE.x / HOME_PROMPT_TEXT_PIXEL_SIZE + label.double_sided = true + prompt.add_child(label) + + +func _rounded_rectangle_mesh(size: Vector2, radius: float) -> ArrayMesh: + var half_size: Vector2 = size * 0.5 + var clamped_radius: float = minf( + radius, + minf(half_size.x, half_size.y), + ) + var corners: Array[Vector2] = [ + Vector2(half_size.x - clamped_radius, half_size.y - clamped_radius), + Vector2(-half_size.x + clamped_radius, half_size.y - clamped_radius), + Vector2(-half_size.x + clamped_radius, -half_size.y + clamped_radius), + Vector2(half_size.x - clamped_radius, -half_size.y + clamped_radius), + ] + var start_angles: Array[float] = [0.0, PI * 0.5, PI, PI * 1.5] + var perimeter: Array[Vector2] = [] + const CORNER_SEGMENTS: int = 4 + for corner_index: int in corners.size(): + for segment_index: int in range(CORNER_SEGMENTS + 1): + var angle: float = start_angles[corner_index] + ( + PI * 0.5 * float(segment_index) / float(CORNER_SEGMENTS) + ) + perimeter.append( + corners[corner_index] + + Vector2(cos(angle), sin(angle)) * clamped_radius + ) + var surface := SurfaceTool.new() + surface.begin(Mesh.PRIMITIVE_TRIANGLES) + for index: int in perimeter.size(): + var first: Vector2 = perimeter[index] + var second: Vector2 = perimeter[(index + 1) % perimeter.size()] + for point: Vector2 in [Vector2.ZERO, first, second]: + surface.set_normal(Vector3.FORWARD) + surface.add_vertex(Vector3(point.x, point.y, 0.0)) + return surface.commit() + + +func _prompt_material(color: Color) -> StandardMaterial3D: + var material := StandardMaterial3D.new() + material.albedo_color = color + material.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED + material.roughness = 1.0 + material.metallic = 0.0 + material.cull_mode = BaseMaterial3D.CULL_DISABLED + return material + + +func _prepare_imported_interior(shell: Node3D) -> void: + for value: Node in shell.find_children("*", "MeshInstance3D", true, false): + var mesh_instance := value as MeshInstance3D + if mesh_instance == null or mesh_instance.mesh == null: + continue + for surface_index: int in mesh_instance.mesh.get_surface_count(): + var source_material: Material = mesh_instance.get_active_material( + surface_index + ) + var material := source_material as StandardMaterial3D + if material == null: + continue + var flat_material := material.duplicate() as StandardMaterial3D + flat_material.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED + flat_material.texture_filter = BaseMaterial3D.TEXTURE_FILTER_NEAREST + flat_material.roughness = 1.0 + flat_material.metallic = 0.0 + mesh_instance.set_surface_override_material( + surface_index, flat_material + ) + _add_imported_mesh_collision(mesh_instance) + + +func _add_imported_mesh_collision(mesh_instance: MeshInstance3D) -> void: + var parent: Node = mesh_instance.get_parent() + if parent == null or mesh_instance.mesh == null: + return + var shape: ConcavePolygonShape3D = mesh_instance.mesh.create_trimesh_shape() + if shape == null: + return + var body := StaticBody3D.new() + body.name = "%sCollision" % mesh_instance.name + body.transform = mesh_instance.transform + var collision := CollisionShape3D.new() + collision.shape = shape + body.add_child(collision) + parent.add_child(body) + + func _rebuild_decor( parent: Node3D, home_data: Dictionary, @@ -1115,9 +1398,9 @@ func _refresh_local_visibility() -> void: for wall_name: String in [ "WallNorth", "WallSouth", "WallWest", "WallEast", ]: - var body: StaticBody3D = active_interior.get_node_or_null( - "%sCollision" % wall_name - ) + var body := active_interior.find_child( + "%sCollision" % wall_name, true, false + ) as StaticBody3D if body != null: excluded_wall_rids.append(body.get_rid()) local_player.set_rv_interior_camera_mode( @@ -1145,12 +1428,20 @@ func _refresh_nearest_wall() -> void: ).normalized() var horizontal_view_weight: float = absf(local_view_direction.x) var depth_view_weight: float = absf(local_view_direction.z) + var tier: int = int((presentation.get("home", {}) as Dictionary).get( + "tier", PlayerHomeStateType.STARTER_TIER + )) + var interior_size: Vector2 = ( + STARTER_RV_INTERIOR_SIZE + if tier >= PlayerHomeStateType.STARTER_RV_TIER + else TENT_INTERIOR_SIZE + ) var hidden_walls: Dictionary[String, bool] = {} var outside_horizontal_wall: bool = ( - absf(local_camera.x) >= INTERIOR_FLOOR_SIZE.x * 0.5 - 0.05 + absf(local_camera.x) >= interior_size.x * 0.5 - 0.05 ) var outside_depth_wall: bool = ( - absf(local_camera.z) >= INTERIOR_FLOOR_SIZE.z * 0.5 - 0.05 + absf(local_camera.z) >= interior_size.y * 0.5 - 0.05 ) # At a diagonal, both near walls occupy the view. Use the camera's viewing # direction to hide both instead of choosing only the dominant position @@ -1181,10 +1472,14 @@ func _refresh_nearest_wall() -> void: for wall_name: String in [ "WallNorth", "WallSouth", "WallWest", "WallEast", ]: - var wall: MeshInstance3D = interior.get_node_or_null(wall_name) + var wall := interior.find_child( + wall_name, true, false + ) as MeshInstance3D if wall != null: wall.visible = not hidden_walls.has(wall_name) - for child: Node in interior.get_children(): + for child: Node in interior.find_children( + "%s*" % wall_name, "GeometryInstance3D", true, false + ): if ( child is GeometryInstance3D and String(child.name).begins_with(wall_name) diff --git a/homes/player_home_state.gd b/homes/player_home_state.gd index decd34a..a89d6a3 100644 --- a/homes/player_home_state.gd +++ b/homes/player_home_state.gd @@ -7,8 +7,12 @@ const DecorCatalogType = preload("res://homes/decor_catalog.gd") const HOME_SCHEMA_VERSION: int = 1 const STARTER_TIER: int = 0 -const STARTER_EXTERIOR_ID: StringName = &"starter_motorcoach" -const MAX_TIER: int = 8 +const STARTER_EXTERIOR_ID: StringName = &"starter_tent" +const STARTER_RV_TIER: int = 1 +const STARTER_RV_EXTERIOR_ID: StringName = &"starter_motorcoach" +const MAX_TIER: int = STARTER_RV_TIER +const HOME_UPGRADE_COSTS: Array[int] = [50] +const STORAGE_CAPACITIES: Array[int] = [9, 18] const MAX_PLACEMENTS: int = 128 const MAX_INSTANCE_ID_LENGTH: int = 96 const MAX_REVISION: int = 2147483647 @@ -16,11 +20,8 @@ const GRID_SIZE: float = 0.5 const FREE_PLACEMENT_SEARCH_STEP: float = 0.1 const FREE_PLACEMENT_SEARCH_ANGLES: int = 24 const NEAREST_PLACEMENT_SEARCH_DISTANCE: float = 2.0 -# The starter RV is intentionally cramped. Later RV tiers can replace these -# bounds with larger layouts when tiered interiors are introduced. -# The starter interior is 8.0 m by 4.5 m with 0.18 m walls. These bounds -# follow the walls' inner faces, with a small visual gap to avoid z-fighting. -const INTERIOR_HALF_EXTENTS := Vector2(3.91, 2.16) +const TENT_INTERIOR_HALF_EXTENTS := Vector2(1.91, 1.91) +const STARTER_RV_INTERIOR_HALF_EXTENTS := Vector2(1.91, 2.91) const PLACEMENT_EDGE_PADDING: float = 0.02 enum Privacy { @@ -50,6 +51,51 @@ func get_exterior_id() -> StringName: return _exterior_id +func get_storage_capacity() -> int: + return storage_capacity_for_tier(_tier) + + +func get_next_upgrade_cost() -> int: + if _tier >= MAX_TIER: + return -1 + return HOME_UPGRADE_COSTS[_tier] + + +func get_next_storage_capacity() -> int: + if _tier >= MAX_TIER: + return -1 + return storage_capacity_for_tier(_tier + 1) + + +func upgrade_to_next_tier() -> bool: + if _tier >= MAX_TIER: + return false + _tier += 1 + _exterior_id = exterior_id_for_tier(_tier) + _touch() + return true + + +static func exterior_id_for_tier(tier: int) -> StringName: + return ( + STARTER_RV_EXTERIOR_ID + if tier >= STARTER_RV_TIER + else STARTER_EXTERIOR_ID + ) + + +static func storage_capacity_for_tier(tier: int) -> int: + return STORAGE_CAPACITIES[clampi(tier, STARTER_TIER, MAX_TIER)] + + +static func interior_half_extents_for_tier(tier: int) -> Vector2: + return ( + STARTER_RV_INTERIOR_HALF_EXTENTS + if tier >= STARTER_RV_TIER + else TENT_INTERIOR_HALF_EXTENTS + ) + + func get_privacy() -> Privacy: return _privacy @@ -248,7 +294,7 @@ func get_nearest_valid_placement_transform( candidate_validator: Callable = Callable(), ) -> Dictionary: var normalized: Dictionary = normalized_placement_transform( - decor_id, position, yaw_radians, mode + decor_id, position, yaw_radians, mode, _tier ) if normalized.is_empty(): return {} @@ -322,7 +368,7 @@ func restore_from_save_data(data: Dictionary) -> bool: if sanitized.is_empty(): return false _tier = int(sanitized["tier"]) - _exterior_id = StringName(str(sanitized["exterior_id"])) + _exterior_id = exterior_id_for_tier(_tier) _privacy = int(sanitized["privacy"]) _owned_decor.clear() for key: Variant in (sanitized["owned_decor"] as Dictionary): @@ -384,6 +430,7 @@ static func sanitize_save_data(data: Dictionary) -> Dictionary: or next_sequence > MAX_REVISION ): return {} + exterior_id = String(exterior_id_for_tier(tier)) var sanitized_owned: Dictionary = {} var owned: Dictionary = data["owned_decor"] for key: Variant in owned: @@ -408,7 +455,7 @@ static func sanitize_save_data(data: Dictionary) -> Dictionary: for value: Variant in values: if typeof(value) != TYPE_DICTIONARY: return {} - var sanitized: Dictionary = sanitize_placement(value) + var sanitized: Dictionary = sanitize_placement(value, tier) if sanitized.is_empty(): return {} var instance_id: String = str(sanitized["instance_id"]) @@ -440,7 +487,10 @@ static func sanitize_save_data(data: Dictionary) -> Dictionary: } -static func sanitize_placement(value: Dictionary) -> Dictionary: +static func sanitize_placement( + value: Dictionary, + home_tier: int = STARTER_TIER, +) -> Dictionary: for key: String in [ "instance_id", "decor_id", "mode", "position", "yaw", ]: @@ -483,6 +533,7 @@ static func sanitize_placement(value: Dictionary) -> Dictionary: position, yaw, mode as PlacementMode, + home_tier, ) if normalized.is_empty(): return {} @@ -509,6 +560,7 @@ static func normalized_placement_transform( position: Vector3, yaw_radians: float, mode: PlacementMode, + home_tier: int = STARTER_TIER, ) -> Dictionary: if ( not DecorCatalogType.has_product(decor_id) @@ -530,11 +582,12 @@ static func normalized_placement_transform( (footprint.x * cosine + footprint.y * sine) * 0.5, (footprint.x * sine + footprint.y * cosine) * 0.5, ) + var interior_half_extents := interior_half_extents_for_tier(home_tier) var maximum_x: float = ( - INTERIOR_HALF_EXTENTS.x - half_size.x - PLACEMENT_EDGE_PADDING + interior_half_extents.x - half_size.x - PLACEMENT_EDGE_PADDING ) var maximum_z: float = ( - INTERIOR_HALF_EXTENTS.y - half_size.y - PLACEMENT_EDGE_PADDING + interior_half_extents.y - half_size.y - PLACEMENT_EDGE_PADDING ) if maximum_x < 0.0 or maximum_z < 0.0: return {} @@ -580,6 +633,7 @@ func _find_nearest_grid_transform( ), yaw, PlacementMode.GRID, + _tier, ) if candidate.is_empty() or not _mark_candidate_unseen( candidate, seen @@ -630,6 +684,7 @@ func _find_nearest_free_transform( ), yaw, PlacementMode.FREE, + _tier, ) if candidate.is_empty() or not _mark_candidate_unseen( candidate, seen diff --git a/main/main.gd b/main/main.gd index 00d2b40..324c268 100644 --- a/main/main.gd +++ b/main/main.gd @@ -40,6 +40,9 @@ const FishingShopInteractionType = preload( const DecorShopInteractionType = preload( "res://world/decor_shop_interaction.gd" ) +const RVUpgradeInteractionType = preload( + "res://world/rv_upgrade_interaction.gd" +) const PlayerStorageInteractionType = preload( "res://world/player_storage_interaction.gd" ) @@ -148,6 +151,13 @@ const PLAYER_MENU_PATTERN_SCROLL_VELOCITY := Vector2(-7.0, -5.0) const SHOP_PATTERN_SCALE: float = 1.75 const DEDICATED_IDLE_PHYSICS_TICKS_PER_SECOND: int = 10 const DEDICATED_ACTIVE_PHYSICS_TICKS_PER_SECOND: int = 30 +const HOME_ENTRY_INPUT_OWNER: StringName = &"home_entry_transition" +const HOME_EXIT_INPUT_OWNER: StringName = &"home_exit_transition" +const HOME_EXIT_FADE_GENERATION: int = -104729 +const HOME_ENTRY_WALK_DISTANCE: float = 1.05 +const HOME_ENTRY_WALK_DURATION: float = 0.55 +const HOME_EXIT_WALK_DISTANCE: float = 1.25 +const HOME_EXIT_WALK_DURATION: float = 0.62 @export var fish_catalog: FishPoolType @export var pelican_buyer_profile: FishBuyerProfileType @@ -260,6 +270,7 @@ var _gameplay_started: bool = false var _save_slots := PlayerSaveSlotCatalogType.new() var _shop_interaction: FishingShopInteractionType var _decor_shop_interaction: DecorShopInteractionType +var _rv_upgrade_shop_interaction: RVUpgradeInteractionType var _storage_interaction: PlayerStorageInteractionType var _title_music_tween: Tween var _title_music_transition_generation: int = 0 @@ -290,6 +301,12 @@ var _pending_existing_root_path := "" var _local_recovery_attempt_id: String = "" var _dedicated_runtime: bool = false var _dedicated_metrics_accumulator: float = 0.0 +var _home_exit_transition_active: bool = false +var _home_exit_waiting_for_network: bool = false +var _home_exit_start_position: Vector3 = Vector3.ZERO +var _home_exit_walk_tween: Tween +var _home_entry_transition_active: bool = false +var _home_entry_walk_tween: Tween @onready var _shoreline_ambience: ShorelineAmbience = %ShorelineAmbience var _rain_ambience: RainAmbienceType @@ -743,6 +760,7 @@ func _initialize_application(dedicated: bool) -> void: _player.wallet, _asset_reservations ) + _player.cooler_capacity.bind_home_state(_home_state) _player.bag.setup(item_catalog) _player.inventory_layout.setup( _player.bag, @@ -760,19 +778,24 @@ func _initialize_application(dedicated: bool) -> void: ) _shop_interaction = _test_world.get_fishing_shop() _decor_shop_interaction = _test_world.get_decor_shop() + _rv_upgrade_shop_interaction = _test_world.get_rv_upgrade_shop() _storage_interaction = _test_world.get_player_storage() if not dedicated: + if not _home_state.changed.is_connected(_on_home_state_changed): + _home_state.changed.connect(_on_home_state_changed) _shop_interaction.setup_local_player(_player) _shop_interaction.local_player_range_changed.connect( _on_shop_range_changed ) - _game_ui.set_shop_npc_player_in_range( - _shop_interaction.is_local_player_in_range() - ) + _refresh_shop_npc_speech_state() _decor_shop_interaction.setup_local_player(_player) _decor_shop_interaction.local_player_range_changed.connect( _on_decor_shop_range_changed ) + _rv_upgrade_shop_interaction.setup_local_player(_player) + _rv_upgrade_shop_interaction.local_player_range_changed.connect( + _on_rv_upgrade_shop_range_changed + ) _storage_interaction.setup_local_player(_player) _storage_interaction.local_player_range_changed.connect( _on_storage_range_changed @@ -947,6 +970,7 @@ func _initialize_application(dedicated: bool) -> void: _home_state, _network_home, _decor_shop_interaction, + _rv_upgrade_shop_interaction, ) _fishing_spot.setup( _player, @@ -987,6 +1011,7 @@ func _initialize_application(dedicated: bool) -> void: _shop_interaction, _storage_interaction, _decor_shop_interaction, + _rv_upgrade_shop_interaction, _player.item_effects, _player.cooler_capacity, _network_session, @@ -1024,6 +1049,12 @@ func _initialize_application(dedicated: bool) -> void: _home_decor_controller.begin_decorating ) _network_home.local_space_changed.connect(_on_local_home_space_changed) + _network_home.local_transition_finished.connect( + _on_local_home_transition_finished + ) + _game_ui.get_screen_fade().transition_completed.connect( + _on_home_exit_fade_transition_completed + ) _game_ui.rv_storage_requested.connect(_on_rv_storage_requested) _game_ui.setup_data_and_identity( _data_root, @@ -1539,6 +1570,9 @@ func _input(event: InputEvent) -> void: if _game_ui.get_decor_shop().consume_escape(): get_viewport().set_input_as_handled() return + if _game_ui.get_rv_upgrade_shop().consume_escape(): + get_viewport().set_input_as_handled() + return if fishing_shop.consume_escape(): get_viewport().set_input_as_handled() return @@ -1653,17 +1687,12 @@ func _unhandled_input(event: InputEvent) -> void: return var home_owner: String = _network_home.get_local_home_owner_fingerprint() if not home_owner.is_empty(): - if _home_world.is_avatar_near_interior_exit(_player, home_owner): - if _network_home.request_exit(): - _game_ui.set_storage_prompt_visible(false) - get_viewport().set_input_as_handled() - return if ( _network_home.can_local_decorate() and _fishing_spot.can_open_fishing_shop() and _game_ui.get_player_storage().open_storage_from_home(true) ): - _game_ui.set_storage_prompt_visible(false) + _refresh_home_door_prompt({}) get_viewport().set_input_as_handled() return var nearby_home_owner: String = _home_world.find_nearby_exterior_owner( @@ -1671,9 +1700,18 @@ func _unhandled_input(event: InputEvent) -> void: ) if not nearby_home_owner.is_empty(): if _network_home.request_enter(nearby_home_owner): - _game_ui.set_storage_prompt_visible(false) + _refresh_home_door_prompt({}) get_viewport().set_input_as_handled() return + if ( + _rv_upgrade_shop_interaction != null + and _rv_upgrade_shop_interaction.is_local_player_in_range() + and _fishing_spot.can_open_fishing_shop() + and _game_ui.get_rv_upgrade_shop().open_shop() + ): + _game_ui.set_shop_prompt_visible(false) + get_viewport().set_input_as_handled() + return if ( _decor_shop_interaction != null and _decor_shop_interaction.is_local_player_in_range() @@ -1703,14 +1741,24 @@ func _process(delta: float) -> void: ) _print_dedicated_metrics() return + _maybe_begin_home_exit_transition() + var show_rv_upgrade_prompt := _can_show_rv_upgrade_shop_prompt() var show_decor_shop_prompt := _can_show_decor_shop_prompt() - var show_shop_prompt := show_decor_shop_prompt or _can_show_shop_prompt() + var show_shop_prompt := ( + show_rv_upgrade_prompt + or show_decor_shop_prompt + or _can_show_shop_prompt() + ) var shop_prompt_anchor := ( - _decor_shop_interaction.get_prompt_anchor_position() - if show_decor_shop_prompt + _rv_upgrade_shop_interaction.get_prompt_anchor_position() + if show_rv_upgrade_prompt else ( - _shop_interaction.get_prompt_anchor_position() - if _shop_interaction != null else Vector3.ZERO + _decor_shop_interaction.get_prompt_anchor_position() + if show_decor_shop_prompt + else ( + _shop_interaction.get_prompt_anchor_position() + if _shop_interaction != null else Vector3.ZERO + ) ) ) _game_ui.set_shop_prompt_visible( @@ -1718,11 +1766,7 @@ func _process(delta: float) -> void: shop_prompt_anchor, ) var home_prompt := _get_home_prompt() - _game_ui.set_storage_prompt_visible( - not home_prompt.is_empty(), - home_prompt.get("anchor", Vector3.ZERO), - str(home_prompt.get("label", "enter RV")), - ) + _refresh_home_door_prompt(home_prompt) _game_ui.set_rv_storage_button_visible( _can_show_rv_storage_button() ) @@ -2577,12 +2621,23 @@ func _refresh_active_world_bindings() -> void: _decor_shop_interaction.local_player_range_changed.disconnect( _on_decor_shop_range_changed ) + if is_instance_valid(_rv_upgrade_shop_interaction): + if _rv_upgrade_shop_interaction.local_player_range_changed.is_connected( + _on_rv_upgrade_shop_range_changed + ): + _rv_upgrade_shop_interaction.local_player_range_changed.disconnect( + _on_rv_upgrade_shop_range_changed + ) _shop_interaction = _test_world.get_fishing_shop() _decor_shop_interaction = _test_world.get_decor_shop() + _rv_upgrade_shop_interaction = _test_world.get_rv_upgrade_shop() _storage_interaction = _test_world.get_player_storage() _network_sale.set_shop_interaction(_shop_interaction) _network_shop.set_shop_interaction(_shop_interaction) _network_shop.set_decor_shop_interaction(_decor_shop_interaction) + _network_shop.set_rv_upgrade_shop_interaction( + _rv_upgrade_shop_interaction + ) if _dedicated_runtime: return if _shop_interaction != null: @@ -2600,10 +2655,16 @@ func _refresh_active_world_bindings() -> void: _decor_shop_interaction.local_player_range_changed.connect( _on_decor_shop_range_changed ) + if _rv_upgrade_shop_interaction != null: + _rv_upgrade_shop_interaction.setup_local_player(_player) + _rv_upgrade_shop_interaction.local_player_range_changed.connect( + _on_rv_upgrade_shop_range_changed + ) _game_ui.set_world_interactions( _shop_interaction, _storage_interaction, _decor_shop_interaction, + _rv_upgrade_shop_interaction, ) _on_shop_range_changed( _shop_interaction != null @@ -2617,6 +2678,10 @@ func _refresh_active_world_bindings() -> void: _decor_shop_interaction != null and _decor_shop_interaction.is_local_player_in_range() ) + _on_rv_upgrade_shop_range_changed( + _rv_upgrade_shop_interaction != null + and _rv_upgrade_shop_interaction.is_local_player_in_range() + ) func _on_water_recovery_starting() -> void: @@ -2631,6 +2696,7 @@ func _on_water_recovery_starting() -> void: _game_ui.get_pause_menu().close_for_water_recovery() _game_ui.get_fishing_shop().close_for_water_recovery() _game_ui.get_decor_shop().close_for_water_recovery() + _game_ui.get_rv_upgrade_shop().close_for_water_recovery() _game_ui.get_player_storage().close_for_water_recovery() @@ -2679,6 +2745,7 @@ func _on_active_hotbar_item_changed( and item != null and item.is_available() and _player.bag.owns_item(item_id) + and not String(_network_home.get_local_space()).begins_with("rv:") ) var active_is_catching_net: bool = ( item_id == FishingShopStockType.CRAB_NET_ID @@ -2828,6 +2895,8 @@ func _finish_quit() -> void: func _exit_tree() -> void: + _cancel_home_entry_transition() + _cancel_home_exit_transition(true) if _dedicated_runtime and _network_session != null: _network_session.disconnect_session("Dedicated server stopping.") if _title_music_tween != null: @@ -2845,52 +2914,46 @@ func _exit_tree() -> void: func _on_shop_range_changed(in_range: bool) -> void: - _game_ui.set_shop_npc_player_in_range( - in_range - or ( - _decor_shop_interaction != null - and _decor_shop_interaction.is_local_player_in_range() - ) - ) + _refresh_shop_npc_speech_state() if not in_range: _game_ui.get_fishing_shop().close_for_range_exit() - _game_ui.set_shop_prompt_visible(_can_show_shop_prompt()) + _game_ui.set_shop_prompt_visible(_can_show_any_shop_prompt()) func _on_storage_range_changed(in_range: bool) -> void: if not in_range: _game_ui.get_player_storage().close_for_range_exit() var prompt := _get_home_prompt() - _game_ui.set_storage_prompt_visible( - not prompt.is_empty(), - prompt.get("anchor", Vector3.ZERO), - str(prompt.get("label", "enter RV")), - ) + _refresh_home_door_prompt(prompt) _game_ui.set_rv_storage_button_visible( _can_show_rv_storage_button() ) func _on_decor_shop_range_changed(in_range: bool) -> void: - _game_ui.set_shop_npc_player_in_range( - in_range - or ( - _shop_interaction != null - and _shop_interaction.is_local_player_in_range() - ) - ) + _refresh_shop_npc_speech_state() if not in_range: _game_ui.get_decor_shop().close_for_range_exit() - _game_ui.set_shop_prompt_visible( - _can_show_shop_prompt() or _can_show_decor_shop_prompt() - ) + _game_ui.set_shop_prompt_visible(_can_show_any_shop_prompt()) + + +func _on_rv_upgrade_shop_range_changed(in_range: bool) -> void: + _refresh_shop_npc_speech_state() + if not in_range: + _game_ui.get_rv_upgrade_shop().close_for_range_exit() + _game_ui.set_shop_prompt_visible(_can_show_any_shop_prompt()) + + +func _on_home_state_changed() -> void: + _refresh_shop_npc_speech_state() func _on_local_home_space_changed( space_id: StringName, - _owner_fingerprint: String, + owner_fingerprint: String, ) -> void: var inside_rv: bool = String(space_id).begins_with("rv:") + _refresh_active_hotbar_item() _fishing_spot.set_fishing_environment_enabled(not inside_rv) _game_ui.set_rv_interior_camera_mode( inside_rv @@ -2898,6 +2961,171 @@ func _on_local_home_space_changed( _game_ui.set_rv_storage_button_visible( _can_show_rv_storage_button() ) + if inside_rv and not _home_exit_transition_active: + _begin_home_entry_transition(owner_fingerprint) + elif not inside_rv and _home_entry_transition_active: + _cancel_home_entry_transition() + + +func _begin_home_entry_transition(owner_fingerprint: String) -> void: + if owner_fingerprint.is_empty() or _home_entry_transition_active: + return + _home_entry_transition_active = true + _refresh_home_door_prompt({}) + _player.set_local_input_suppressed(HOME_ENTRY_INPUT_OWNER, true) + _player.set_camera_input_suppressed(HOME_ENTRY_INPUT_OWNER, true) + var inward_direction: Vector3 = ( + -_home_world.get_interior_exit_direction(owner_fingerprint) + ) + _player.face_world_direction(inward_direction) + _player.begin_animation_action(PlayerType.CHARACTER_WALKING_ANIMATION) + _home_entry_walk_tween = create_tween() + _home_entry_walk_tween.set_trans(Tween.TRANS_SINE) + _home_entry_walk_tween.set_ease(Tween.EASE_IN_OUT) + _home_entry_walk_tween.tween_property( + _player, + "global_position", + _player.global_position + inward_direction * HOME_ENTRY_WALK_DISTANCE, + HOME_ENTRY_WALK_DURATION, + ) + _home_entry_walk_tween.finished.connect( + _cancel_home_entry_transition, + CONNECT_ONE_SHOT, + ) + + +func _cancel_home_entry_transition() -> void: + if _home_entry_walk_tween != null and _home_entry_walk_tween.is_valid(): + _home_entry_walk_tween.kill() + _home_entry_walk_tween = null + if is_instance_valid(_player): + _player.end_animation_action() + _player.set_local_input_suppressed(HOME_ENTRY_INPUT_OWNER, false) + _player.set_camera_input_suppressed(HOME_ENTRY_INPUT_OWNER, false) + _home_entry_transition_active = false + + +func _maybe_begin_home_exit_transition() -> void: + if ( + _home_exit_transition_active + or _home_entry_transition_active + or not _gameplay_started + or _water_recovery.is_recovery_active() + or not _fishing_spot.can_open_fishing_shop() + or _game_ui.get_player_storage().visible + or _game_ui.get_fishing_shop().visible + or _game_ui.get_decor_shop().visible + or _game_ui.get_rv_upgrade_shop().visible + ): + return + var owner_fingerprint: String = ( + _network_home.get_local_home_owner_fingerprint() + ) + if ( + owner_fingerprint.is_empty() + or not _home_world.has_avatar_crossed_interior_exit_threshold( + _player, + owner_fingerprint, + ) + ): + return + _begin_home_exit_transition(owner_fingerprint) + + +func _begin_home_exit_transition(owner_fingerprint: String) -> void: + _home_exit_transition_active = true + _home_exit_waiting_for_network = false + _home_exit_start_position = _player.global_position + _refresh_home_door_prompt({}) + _player.set_local_input_suppressed(HOME_EXIT_INPUT_OWNER, true) + _player.set_camera_input_suppressed(HOME_EXIT_INPUT_OWNER, true) + var exit_direction: Vector3 = _home_world.get_interior_exit_direction( + owner_fingerprint + ) + _player.face_world_direction(exit_direction) + _player.begin_animation_action(PlayerType.CHARACTER_WALKING_ANIMATION) + _home_exit_walk_tween = create_tween() + _home_exit_walk_tween.set_trans(Tween.TRANS_SINE) + _home_exit_walk_tween.set_ease(Tween.EASE_IN_OUT) + _home_exit_walk_tween.tween_property( + _player, + "global_position", + _player.global_position + exit_direction * HOME_EXIT_WALK_DISTANCE, + HOME_EXIT_WALK_DURATION, + ) + _home_exit_walk_tween.finished.connect( + _on_home_exit_walk_finished, + CONNECT_ONE_SHOT, + ) + + +func _on_home_exit_walk_finished() -> void: + _home_exit_walk_tween = null + if not _home_exit_transition_active: + return + # End the walking action on the same frame translation ends. The fade and + # authoritative relocation may take longer, but a stationary avatar must + # never keep cycling its walk animation during that wait. + _player.end_animation_action() + _game_ui.get_screen_fade().fade_to_black(HOME_EXIT_FADE_GENERATION) + + +func _on_home_exit_fade_transition_completed( + generation: int, + faded_to_black: bool, +) -> void: + if ( + generation != HOME_EXIT_FADE_GENERATION + or not _home_exit_transition_active + ): + return + if faded_to_black: + # A local host can apply the authoritative transition synchronously from + # request_exit(). Mark this first so its completion signal is not lost. + _home_exit_waiting_for_network = true + var request_started: bool = _network_home.request_exit() + if not request_started: + _home_exit_waiting_for_network = false + _player.global_position = _home_exit_start_position + _game_ui.get_screen_fade().fade_from_black( + HOME_EXIT_FADE_GENERATION + ) + return + _cancel_home_exit_transition(false) + + +func _on_local_home_transition_finished( + accepted: bool, + _message: String, +) -> void: + if ( + not _home_exit_transition_active + or not _home_exit_waiting_for_network + ): + return + _home_exit_waiting_for_network = false + if not accepted: + _player.global_position = _home_exit_start_position + _game_ui.get_screen_fade().fade_from_black(HOME_EXIT_FADE_GENERATION) + + +func _cancel_home_exit_transition(reset_fade: bool) -> void: + if _home_exit_walk_tween != null and _home_exit_walk_tween.is_valid(): + _home_exit_walk_tween.kill() + _home_exit_walk_tween = null + if is_instance_valid(_player): + _player.end_animation_action() + _player.set_local_input_suppressed(HOME_EXIT_INPUT_OWNER, false) + _player.set_camera_input_suppressed(HOME_EXIT_INPUT_OWNER, false) + if ( + reset_fade + and is_instance_valid(_game_ui) + and is_instance_valid(_game_ui.get_screen_fade()) + ): + _game_ui.get_screen_fade().reset_immediately() + _home_exit_transition_active = false + _home_exit_waiting_for_network = false + _home_exit_start_position = Vector3.ZERO func _on_rv_storage_requested() -> void: @@ -2913,6 +3141,7 @@ func _can_show_shop_prompt() -> bool: and _shop_interaction.is_local_player_in_range() and not _game_ui.get_fishing_shop().visible and not _game_ui.get_decor_shop().visible + and not _game_ui.get_rv_upgrade_shop().visible and not _water_recovery.is_recovery_active() and _fishing_spot.can_open_fishing_shop() ) @@ -2925,15 +3154,96 @@ func _can_show_decor_shop_prompt() -> bool: and _decor_shop_interaction.is_local_player_in_range() and not _game_ui.get_decor_shop().visible and not _game_ui.get_fishing_shop().visible + and not _game_ui.get_rv_upgrade_shop().visible and not _water_recovery.is_recovery_active() and _fishing_spot.can_open_fishing_shop() ) +func _can_show_rv_upgrade_shop_prompt() -> bool: + return ( + _gameplay_started + and _rv_upgrade_shop_interaction != null + and _rv_upgrade_shop_interaction.is_local_player_in_range() + and not _game_ui.get_rv_upgrade_shop().visible + and not _game_ui.get_fishing_shop().visible + and not _game_ui.get_decor_shop().visible + and not _water_recovery.is_recovery_active() + and _fishing_spot.can_open_fishing_shop() + ) + + +func _can_show_any_shop_prompt() -> bool: + return ( + _can_show_shop_prompt() + or _can_show_decor_shop_prompt() + or _can_show_rv_upgrade_shop_prompt() + ) + + +func _is_any_shop_npc_in_range() -> bool: + return ( + ( + _shop_interaction != null + and _shop_interaction.is_local_player_in_range() + ) + or ( + _decor_shop_interaction != null + and _decor_shop_interaction.is_local_player_in_range() + ) + or ( + _rv_upgrade_shop_interaction != null + and _rv_upgrade_shop_interaction.is_local_player_in_range() + ) + ) + + +func _refresh_shop_npc_speech_state() -> void: + var interaction := _get_active_shop_npc_interaction() + var dialogue_text: String = "" + if interaction != null: + dialogue_text = interaction.get_dialogue_text(_home_state.get_tier()) + _game_ui.set_shop_npc_player_in_range( + interaction != null, + dialogue_text, + ) + + +func _get_active_shop_npc_interaction() -> FishingShopInteractionType: + # Match the interaction and prompt priority used above: RV, decor, fishing. + if ( + _rv_upgrade_shop_interaction != null + and _rv_upgrade_shop_interaction.is_local_player_in_range() + ): + return _rv_upgrade_shop_interaction + if ( + _decor_shop_interaction != null + and _decor_shop_interaction.is_local_player_in_range() + ): + return _decor_shop_interaction + if ( + _shop_interaction != null + and _shop_interaction.is_local_player_in_range() + ): + return _shop_interaction + return null + + func _can_show_storage_prompt() -> bool: return not _get_home_prompt().is_empty() +func _refresh_home_door_prompt(prompt: Dictionary) -> void: + # Home entry belongs to the doorway in world space. Keep the retired HUD + # prompt hidden so it cannot overlap the compact door-mounted sign. + _game_ui.set_storage_prompt_visible(false) + _home_world.set_exterior_prompt_visible( + str(prompt.get("owner_fingerprint", "")), + not prompt.is_empty(), + str(prompt.get("label", "enter home")), + ) + + func _can_show_rv_storage_button() -> bool: return ( _gameplay_started @@ -2950,6 +3260,7 @@ func _get_home_prompt() -> Dictionary: or _game_ui.get_player_storage().visible or _game_ui.get_fishing_shop().visible or _game_ui.get_decor_shop().visible + or _game_ui.get_rv_upgrade_shop().visible or _water_recovery.is_recovery_active() or not _fishing_spot.can_open_fishing_shop() ): @@ -2958,20 +3269,12 @@ func _get_home_prompt() -> Dictionary: _network_home.get_local_home_owner_fingerprint() ) if not owner_fingerprint.is_empty(): - if _home_world.is_avatar_near_interior_exit( - _player, owner_fingerprint - ): - return { - "label": "leave RV", - "anchor": _home_world.get_interior_prompt_position( - owner_fingerprint - ), - } return {} var nearby_owner: String = _home_world.find_nearby_exterior_owner(_player) if nearby_owner.is_empty(): return {} return { - "label": "enter RV", + "label": "enter home", "anchor": _home_world.get_exterior_prompt_position(nearby_owner), + "owner_fingerprint": nearby_owner, } diff --git a/network/network_home_service.gd b/network/network_home_service.gd index 33fa6ee..4885961 100644 --- a/network/network_home_service.gd +++ b/network/network_home_service.gd @@ -27,6 +27,8 @@ var _manifests_by_fingerprint: Dictionary[String, Dictionary] = {} var _fingerprint_by_peer: Dictionary[int, String] = {} var _authorized_owned_counts: Dictionary[int, Dictionary] = {} var _authorization_result_owner: Dictionary[String, int] = {} +var _authorized_home_tiers: Dictionary[int, int] = {} +var _home_upgrade_result_owner: Dictionary[String, int] = {} var _interior_slots_by_space: Dictionary[StringName, Dictionary] = {} var _next_interior_index: int = 0 var _suppress_local_submission: bool = false @@ -103,6 +105,17 @@ func get_authoritative_owned_count( return int(owned.get(String(decor_id), 0)) +func get_authoritative_home_tier(peer_id: int) -> int: + if _authorized_home_tiers.has(peer_id): + return int(_authorized_home_tiers[peer_id]) + var fingerprint: String = _fingerprint_for_peer(peer_id) + var manifest: Dictionary = _manifests_by_fingerprint.get(fingerprint, {}) + if manifest.is_empty(): + return -1 + var home: Dictionary = manifest.get("home", {}) + return int(home.get("tier", -1)) + + func place_local_decor( decor_id: StringName, position: Vector3, @@ -337,6 +350,35 @@ func finalize_decor_purchase( _authorized_owned_counts.erase(peer_id) +func authorize_home_upgrade( + peer_id: int, + resulting_tier: int, + result_id: String, +) -> void: + if ( + not _session.is_host() + or peer_id <= 0 + or result_id.is_empty() + or resulting_tier < PlayerHomeStateType.STARTER_TIER + or resulting_tier > PlayerHomeStateType.MAX_TIER + ): + return + _authorized_home_tiers[peer_id] = resulting_tier + _home_upgrade_result_owner[result_id] = peer_id + + +func finalize_home_upgrade( + peer_id: int, + result_id: String, + applied: bool, +) -> void: + if _home_upgrade_result_owner.get(result_id, 0) != peer_id: + return + _home_upgrade_result_owner.erase(result_id) + if not applied: + _authorized_home_tiers.erase(peer_id) + + func refresh_world_presentations() -> void: if _world_service == null: return @@ -442,7 +484,7 @@ func _process_manifest_request(peer_id: int, data: Dictionary) -> void: not NetworkHomeProtocolType.validate_manifest_request(data) or str(data["session_id"]) != _session.get_session_id() ): - _reject_manifest(peer_id, "The RV update was invalid.") + _reject_manifest(peer_id, "The home update was invalid.") return var record := _session.get_peer_record(peer_id) var fingerprint: String = str(data["owner_fingerprint"]) @@ -456,7 +498,7 @@ func _process_manifest_request(peer_id: int, data: Dictionary) -> void: data["sender_signature"], ) ): - _reject_manifest(peer_id, "The RV owner could not be verified.") + _reject_manifest(peer_id, "The home owner could not be verified.") return var home_data: Dictionary = PlayerHomeStateType.sanitize_save_data( data["home"] @@ -464,7 +506,7 @@ func _process_manifest_request(peer_id: int, data: Dictionary) -> void: var prior: Dictionary = _manifests_by_fingerprint.get(fingerprint, {}) var is_first_manifest: bool = prior.is_empty() if not _valid_manifest_revision(peer_id, prior, home_data): - _reject_manifest(peer_id, "The RV update was rejected by the host.") + _reject_manifest(peer_id, "The home update was rejected by the host.") return if not _moved_decor_clear_of_players(fingerprint, prior, home_data): _reject_manifest(peer_id, "A player is in the way of that decor.") @@ -472,7 +514,7 @@ func _process_manifest_request(peer_id: int, data: Dictionary) -> void: var manifest: Dictionary if prior.is_empty(): if _manifests_by_fingerprint.size() >= MAX_MANIFESTS: - _reject_manifest(peer_id, "This room cannot place another RV.") + _reject_manifest(peer_id, "This room cannot place another home.") return var reserved: Array[Transform3D] = [] for existing: Dictionary in _manifests_by_fingerprint.values(): @@ -523,10 +565,17 @@ func _valid_manifest_revision( # no prior room ledger with which to compare its first manifest. return true var prior_home: Dictionary = prior_manifest["home"] + var prior_tier: int = int(prior_home["tier"]) + var next_tier: int = int(home_data["tier"]) + var tier_is_authorized: bool = ( + next_tier != prior_tier + and int(_authorized_home_tiers.get(peer_id, -1)) == next_tier + ) if ( int(home_data["revision"]) <= int(prior_home["revision"]) - or int(home_data["tier"]) != int(prior_home["tier"]) - or str(home_data["exterior_id"]) != str(prior_home["exterior_id"]) + or (next_tier != prior_tier and not tier_is_authorized) + or str(home_data["exterior_id"]) + != str(PlayerHomeStateType.exterior_id_for_tier(next_tier)) ): return false var prior_owned: Dictionary = prior_home["owned_decor"] @@ -619,6 +668,11 @@ static func _placement_position(placement: Dictionary) -> Vector3: func _consume_owned_authorizations(peer_id: int, home_data: Dictionary) -> void: + if ( + _authorized_home_tiers.has(peer_id) + and int(home_data["tier"]) == int(_authorized_home_tiers[peer_id]) + ): + _authorized_home_tiers.erase(peer_id) var authorized: Dictionary = _authorized_owned_counts.get(peer_id, {}) if authorized.is_empty(): return @@ -1027,7 +1081,7 @@ func _process_transition_request(peer_id: int, data: Dictionary) -> void: data["sender_signature"], ) ): - _send_transition_rejection(peer_id, "The RV transition was invalid.") + _send_transition_rejection(peer_id, "The home transition was invalid.") return var owner_fingerprint: String = str(data["owner_fingerprint"]) var action: int = int(data["action"]) @@ -1036,7 +1090,7 @@ func _process_transition_request(peer_id: int, data: Dictionary) -> void: owner_fingerprint, {} ) if avatar == null or manifest.is_empty(): - _send_transition_rejection(peer_id, "That RV is unavailable.") + _send_transition_rejection(peer_id, "That home is unavailable.") return if action == NetworkHomeProtocolType.TransitionAction.ENTER: var record := _session.get_peer_record(peer_id) @@ -1052,7 +1106,7 @@ func _process_transition_request(peer_id: int, data: Dictionary) -> void: avatar, owner_fingerprint ) ): - _send_transition_rejection(peer_id, "You cannot enter that RV.") + _send_transition_rejection(peer_id, "You cannot enter that home.") return var interior_space: StringName = ( NetworkHomeProtocolType.make_space_id(owner_fingerprint) @@ -1076,7 +1130,7 @@ func _process_transition_request(peer_id: int, data: Dictionary) -> void: avatar, owner_fingerprint ) ): - _send_transition_rejection(peer_id, "Move closer to the RV door.") + _send_transition_rejection(peer_id, "Move closer to the home door.") return _apply_host_transition( peer_id, @@ -1282,6 +1336,10 @@ func _on_peer_removed(peer_id: int) -> void: var fingerprint: String = _fingerprint_by_peer.get(peer_id, "") _fingerprint_by_peer.erase(peer_id) _authorized_owned_counts.erase(peer_id) + _authorized_home_tiers.erase(peer_id) + for result_id: String in _home_upgrade_result_owner.keys(): + if int(_home_upgrade_result_owner[result_id]) == peer_id: + _home_upgrade_result_owner.erase(result_id) if fingerprint.is_empty(): return if _session.is_host(): @@ -1336,6 +1394,8 @@ func _on_session_state_changed(state: NetworkSession.State) -> void: _fingerprint_by_peer.clear() _authorized_owned_counts.clear() _authorization_result_owner.clear() + _authorized_home_tiers.clear() + _home_upgrade_result_owner.clear() _publish_queued = false _last_submitted_local_home_revision = -1 _pending_local_decor_transactions.clear() diff --git a/network/network_protocol.gd b/network/network_protocol.gd index 49aca95..5b3ca89 100644 --- a/network/network_protocol.gd +++ b/network/network_protocol.gd @@ -47,6 +47,7 @@ const FRIENDS_CAPABILITY: String = "friends_v1" const MOVEMENT_RECONCILIATION_CAPABILITY: String = "movement_reconciliation_v2" const FISHING_REPLICATION_CAPABILITY: String = "fishing_replication_v2" const HOME_CAPABILITY: String = "portable_home_v1" +const HOME_UPGRADE_CAPABILITY: String = "home_upgrade_v1" const DEFAULT_WORLD_SEED: int = 13001 const MAX_WORLD_SEED: int = 2147483646 @@ -205,6 +206,7 @@ static func make_client_hello( MOVEMENT_RECONCILIATION_CAPABILITY, FISHING_REPLICATION_CAPABILITY, HOME_CAPABILITY, + HOME_UPGRADE_CAPABILITY, ]), "cosmetic_snapshot": cosmetic_snapshot, "identity_fingerprint": identity_fingerprint, @@ -346,6 +348,7 @@ static func make_server_hello( MOVEMENT_RECONCILIATION_CAPABILITY, FISHING_REPLICATION_CAPABILITY, HOME_CAPABILITY, + HOME_UPGRADE_CAPABILITY, "chat_v1", "mail_v1", "profile_v1", diff --git a/network/network_session.gd b/network/network_session.gd index 66d5101..7c259e0 100644 --- a/network/network_session.gd +++ b/network/network_session.gd @@ -340,6 +340,7 @@ func _register_player_host() -> void: NetworkProtocol.MOVEMENT_RECONCILIATION_CAPABILITY, NetworkProtocol.FISHING_REPLICATION_CAPABILITY, NetworkProtocol.HOME_CAPABILITY, + NetworkProtocol.HOME_UPGRADE_CAPABILITY, ]), ) _registry.update_appearance(1, _local_appearance_snapshot) @@ -668,6 +669,7 @@ func supports_server_capability(capability: StringName) -> bool: NetworkProtocol.MOVEMENT_RECONCILIATION_CAPABILITY, NetworkProtocol.FISHING_REPLICATION_CAPABILITY, NetworkProtocol.HOME_CAPABILITY, + NetworkProtocol.HOME_UPGRADE_CAPABILITY, "chat_v1", "mail_v1", "profile_v1", @@ -1638,6 +1640,7 @@ func receive_server_hello(data: Dictionary) -> void: NetworkProtocol.MOVEMENT_RECONCILIATION_CAPABILITY, NetworkProtocol.FISHING_REPLICATION_CAPABILITY, NetworkProtocol.HOME_CAPABILITY, + NetworkProtocol.HOME_UPGRADE_CAPABILITY, ]), ) _registry.update_appearance(local_peer_id, _local_appearance_snapshot) diff --git a/network/network_shop_protocol.gd b/network/network_shop_protocol.gd index da9419a..e58556e 100644 --- a/network/network_shop_protocol.gd +++ b/network/network_shop_protocol.gd @@ -5,6 +5,7 @@ const CAPABILITY: StringName = &"shop_v1" const ART_CAPABILITY: StringName = &"art_shop_v1" const BACKPACK_CAPABILITY: StringName = &"backpack_shop_v1" const DECOR_CAPABILITY: StringName = &"portable_home_v1" +const HOME_UPGRADE_CAPABILITY: StringName = &"home_upgrade_v1" const RELIABLE_CHANNEL: int = NetworkProtocol.SHOP_RELIABLE_CHANNEL const MAX_ID_LENGTH: int = 96 const MAX_MESSAGE_LENGTH: int = 160 @@ -15,7 +16,7 @@ enum ProductCategory { ROD, REEL_SPEED_UPGRADE, BARRIER_POWER_UPGRADE, - COOLER_CAPACITY_UPGRADE, + HOME_UPGRADE, ART_KIT, ART_UPGRADE, BACKPACK_CAPACITY_UPGRADE, diff --git a/network/network_shop_service.gd b/network/network_shop_service.gd index 8294b53..e4d6f9c 100644 --- a/network/network_shop_service.gd +++ b/network/network_shop_service.gd @@ -12,9 +12,10 @@ const DecorCatalogType = preload("res://homes/decor_catalog.gd") const FISHING_SHOP_ID: StringName = &"main_fishing_shop" const DECOR_SHOP_ID: StringName = &"rv_decor_shop" +const RV_UPGRADE_SHOP_ID: StringName = &"rv_upgrade_shop" const REEL_PRODUCT_ID: StringName = &"reel_speed_upgrade" const BARRIER_PRODUCT_ID: StringName = &"barrier_power_upgrade" -const COOLER_PRODUCT_ID: StringName = &"cooler_capacity_upgrade" +const HOME_UPGRADE_PRODUCT_ID: StringName = &"starter_rv_upgrade" const BACKPACK_PRODUCT_ID: StringName = &"backpack_capacity_upgrade" const MAX_LEDGER_ENTRIES_PER_PEER: int = 64 @@ -34,6 +35,7 @@ var _spawn_service: PlayerSpawnService var _network_fishing: NetworkFishingService var _interaction: FishingShopInteraction var _decor_interaction: DecorShopInteraction +var _rv_upgrade_interaction: FishingShopInteraction var _wallet: PlayerWallet var _bag: PlayerBag var _item_catalog: ItemCatalog @@ -71,6 +73,7 @@ func setup( home_state: PlayerHomeState = null, network_home: NetworkHomeService = null, decor_interaction: DecorShopInteraction = null, + rv_upgrade_interaction: FishingShopInteraction = null, ) -> void: _session = session _spawn_service = spawn_service @@ -88,6 +91,7 @@ func setup( _home_state = home_state _network_home = network_home _decor_interaction = decor_interaction + _rv_upgrade_interaction = rv_upgrade_interaction if not _session.peer_removed.is_connected(_on_peer_removed): _session.peer_removed.connect(_on_peer_removed) if not _session.state_changed.is_connected(_on_session_state_changed): @@ -104,6 +108,12 @@ func set_decor_shop_interaction( _decor_interaction = interaction +func set_rv_upgrade_shop_interaction( + interaction: FishingShopInteraction, +) -> void: + _rv_upgrade_interaction = interaction + + func can_request_purchase() -> bool: return ( _session != null @@ -154,6 +164,19 @@ func can_request_decor_purchase() -> bool: ) +func can_request_home_upgrade() -> bool: + return ( + can_request_purchase() + and _home_state != null + and ( + _session.is_host() + or _session.supports_server_capability( + NetworkShopProtocol.HOME_UPGRADE_CAPABILITY + ) + ) + ) + + func is_local_purchase_pending() -> bool: return not _pending_local_request.is_empty() @@ -204,12 +227,12 @@ func request_barrier_power_upgrade() -> String: ) -func request_cooler_capacity_upgrade() -> String: +func request_home_upgrade() -> String: return _request_purchase( - COOLER_PRODUCT_ID, - NetworkShopProtocol.ProductCategory.COOLER_CAPACITY_UPGRADE, + HOME_UPGRADE_PRODUCT_ID, + NetworkShopProtocol.ProductCategory.HOME_UPGRADE, 1, - _cooler_capacity.get_level() if _cooler_capacity != null else 0 + _home_state.get_tier() if _home_state != null else 0 ) @@ -308,6 +331,15 @@ func _request_purchase( product_id, category, 0, 0, ) return "" + if ( + category == NetworkShopProtocol.ProductCategory.HOME_UPGRADE + and not can_request_home_upgrade() + ): + local_purchase_finished.emit( + "", false, "RV upgrades require a newer server.", + product_id, category, 0, 0, + ) + return "" if ( category == NetworkShopProtocol.ProductCategory.DECOR and not can_request_decor_purchase() @@ -318,11 +350,7 @@ func _request_purchase( ) return "" var request_id: String = _new_id("shop") - var shop_id: StringName = ( - DECOR_SHOP_ID - if category == NetworkShopProtocol.ProductCategory.DECOR - else FISHING_SHOP_ID - ) + var shop_id: StringName = _shop_id_for_category(category) var request: Dictionary = { "request_id": request_id, "session_id": _session.get_session_id(), @@ -402,9 +430,7 @@ func _handle_purchase_request(peer_id: int, data: Dictionary) -> void: if not _is_shop_available_for_peer(peer_id, requested_shop_id): var avatar: Player = _spawn_service.get_avatar(peer_id) var requested_interaction: FishingShopInteraction = ( - _decor_interaction - if requested_shop_id == DECOR_SHOP_ID - else _interaction + _interaction_for_shop(requested_shop_id) ) var message: String = ( "The shop is unavailable." @@ -416,16 +442,22 @@ func _handle_purchase_request(peer_id: int, data: Dictionary) -> void: var result: Dictionary = _build_authoritative_result(peer_id, data) if ( bool(result.get("accepted", false)) - and int(result.get("category", -1)) - == NetworkShopProtocol.ProductCategory.DECOR and _network_home != null ): - _network_home.authorize_decor_purchase( - peer_id, - StringName(str(result["product_id"])), - int(result["resulting_state"]), - str(result["result_id"]), - ) + match int(result.get("category", -1)): + NetworkShopProtocol.ProductCategory.DECOR: + _network_home.authorize_decor_purchase( + peer_id, + StringName(str(result["product_id"])), + int(result["resulting_state"]), + str(result["result_id"]), + ) + NetworkShopProtocol.ProductCategory.HOME_UPGRADE: + _network_home.authorize_home_upgrade( + peer_id, + int(result["resulting_state"]), + str(result["result_id"]), + ) _pending_by_peer[peer_id] = request_id _record_and_send(peer_id, result) @@ -448,14 +480,19 @@ func _build_authoritative_result( ) if authoritative_count >= 0: current_state = authoritative_count + elif ( + category == NetworkShopProtocol.ProductCategory.HOME_UPGRADE + and _network_home != null + ): + var authoritative_tier: int = ( + _network_home.get_authoritative_home_tier(peer_id) + ) + if authoritative_tier >= 0: + current_state = authoritative_tier var cost: int = -1 var resulting_state: int = current_state var rejection: String = "" - var expected_shop_id: StringName = ( - DECOR_SHOP_ID - if category == NetworkShopProtocol.ProductCategory.DECOR - else FISHING_SHOP_ID - ) + var expected_shop_id: StringName = _shop_id_for_category(category) if StringName(str(request["shop_id"])) != expected_shop_id: rejection = "The shop is unavailable." elif quantity < 1: @@ -569,18 +606,14 @@ func _build_authoritative_result( ] ) resulting_state = current_state + 1 - NetworkShopProtocol.ProductCategory.COOLER_CAPACITY_UPGRADE: + NetworkShopProtocol.ProductCategory.HOME_UPGRADE: if ( - product_id != COOLER_PRODUCT_ID - or current_state >= PlayerCoolerCapacity.MAX_LEVEL + product_id != HOME_UPGRADE_PRODUCT_ID + or current_state >= PlayerHomeState.MAX_TIER ): rejection = "Upgrade is already at maximum." else: - cost = ( - PlayerCoolerCapacity.EXPANSION_COSTS[ - current_state - ] - ) + cost = PlayerHomeState.HOME_UPGRADE_COSTS[current_state] resulting_state = current_state + 1 NetworkShopProtocol.ProductCategory.BACKPACK_CAPACITY_UPGRADE: if ( @@ -874,10 +907,12 @@ func _validate_local_result(data: Dictionary) -> String: return "Purchase could not be completed." if _upgrades.get_next_barrier_power_cost() != cost: return "Purchase could not be completed." - NetworkShopProtocol.ProductCategory.COOLER_CAPACITY_UPGRADE: - if _cooler_capacity.get_level() != expected_state: - return "Purchase could not be completed." - if _cooler_capacity.get_next_cost() != cost: + NetworkShopProtocol.ProductCategory.HOME_UPGRADE: + if ( + product_id != HOME_UPGRADE_PRODUCT_ID + or _home_state.get_tier() != expected_state + or _home_state.get_next_upgrade_cost() != cost + ): return "Purchase could not be completed." NetworkShopProtocol.ProductCategory.BACKPACK_CAPACITY_UPGRADE: if ( @@ -947,8 +982,11 @@ func _apply_local_product(data: Dictionary) -> bool: return _upgrades.purchase_reel_speed(_wallet) NetworkShopProtocol.ProductCategory.BARRIER_POWER_UPGRADE: return _upgrades.purchase_barrier_power(_wallet) - NetworkShopProtocol.ProductCategory.COOLER_CAPACITY_UPGRADE: - return _cooler_capacity.purchase(_wallet) + NetworkShopProtocol.ProductCategory.HOME_UPGRADE: + return ( + _wallet.debit(int(data["total_cost"])) + and _home_state.upgrade_to_next_tier() + ) NetworkShopProtocol.ProductCategory.BACKPACK_CAPACITY_UPGRADE: return ( _inventory_layout != null @@ -1061,6 +1099,9 @@ func _handle_acknowledgement( _network_home.finalize_decor_purchase( peer_id, result_id, applied ) + _network_home.finalize_home_upgrade( + peer_id, result_id, applied + ) _acknowledged_results[result_id] = true _bound_dictionary(_acknowledged_results) if _pending_by_peer.get(peer_id, "") == request_id: @@ -1071,11 +1112,7 @@ func _is_shop_available_for_peer( peer_id: int, shop_id: StringName, ) -> bool: - var interaction: FishingShopInteraction = ( - _decor_interaction - if shop_id == DECOR_SHOP_ID - else _interaction - ) + var interaction: FishingShopInteraction = _interaction_for_shop(shop_id) if ( _session == null or not _session.is_host() @@ -1097,6 +1134,24 @@ func _is_shop_available_for_peer( ) +func _shop_id_for_category(category: int) -> StringName: + match category: + NetworkShopProtocol.ProductCategory.DECOR: + return DECOR_SHOP_ID + NetworkShopProtocol.ProductCategory.HOME_UPGRADE: + return RV_UPGRADE_SHOP_ID + return FISHING_SHOP_ID + + +func _interaction_for_shop(shop_id: StringName) -> FishingShopInteraction: + match shop_id: + DECOR_SHOP_ID: + return _decor_interaction + RV_UPGRADE_SHOP_ID: + return _rv_upgrade_interaction + return _interaction + + func _on_peer_removed(peer_id: int) -> void: _request_ledgers.erase(peer_id) _pending_by_peer.erase(peer_id) diff --git a/player/player.gd b/player/player.gd index e36f92b..78dac3d 100644 --- a/player/player.gd +++ b/player/player.gd @@ -90,6 +90,7 @@ const CATCH_SHOWCASE_INPUT_OWNER: StringName = &"catch_showcase" # safe IDs so newer clients can extend it, but Player only presents actions # explicitly approved by this catalog. const NETWORK_ANIMATION_ACTION_IDS: Array[StringName] = [ + CHARACTER_WALKING_ANIMATION, CHARACTER_CASTING_ANIMATION, CHARACTER_NET_DRAW_ANIMATION, CHARACTER_NET_STRIKE_ANIMATION, @@ -436,6 +437,11 @@ var _rv_previous_camera_environment: Environment @export var maximum_zoom: float = 8.0 @export var zoom_step: float = 0.75 @export var zoom_smoothing: float = 12.0 +@export_range(0.0, 1.0, 0.01) var fishing_reel_zoom_amount: float = 0.22 +@export_range(0.0, 1.5, 0.01) var fishing_barrier_break_zoom: float = 0.38 +@export_range(0.05, 1.0, 0.01) var fishing_break_zoom_decay: float = 0.34 +@export_range(0.0, 0.2, 0.005) var fishing_barrier_hit_shake: float = 0.018 +@export_range(0.0, 0.3, 0.005) var fishing_barrier_break_shake: float = 0.045 @export_range(0.1, 12.0, 0.1) var controller_zoom_speed: float = 4.0 @export_range(0.0, 1.0, 0.01) var controller_trigger_threshold: float = 0.55 @export_range(1.0, 40.0, 0.5) var free_camera_speed: float = 10.0 @@ -497,6 +503,12 @@ var _remote_recovery_presentation_active: bool = false var _remote_recovery_visual_origin: Vector3 var _remote_recovery_elapsed: float = 0.0 var _target_zoom: float = 5.0 +var _fishing_reel_camera_active: bool = false +var _fishing_break_zoom_offset: float = 0.0 +var _fishing_camera_shake_remaining: float = 0.0 +var _fishing_camera_shake_duration: float = 0.0 +var _fishing_camera_shake_strength: float = 0.0 +var _fishing_camera_shake_phase: float = 0.0 var _showcase_rod_visibility: bool = true var _showcase_net_visibility: bool = false var _showcase_shovel_visibility: bool = false @@ -1162,6 +1174,7 @@ func _process(delta: float) -> void: ) if not local_control_enabled: return + _update_fishing_camera_effects(delta) if _free_camera_active: if _is_camera_input_enabled(): _rotate_free_camera( @@ -1190,13 +1203,68 @@ func _process(delta: float) -> void: ) var zoom_weight: float = 1.0 - exp(-zoom_smoothing * delta) + var fishing_zoom_offset: float = ( + fishing_reel_zoom_amount + if _fishing_reel_camera_active + else 0.0 + ) + _fishing_break_zoom_offset + var effective_target_zoom: float = clampf( + _target_zoom - fishing_zoom_offset, + 1.25 if _rv_interior_camera_mode else minimum_zoom, + 16.0 if _rv_interior_camera_mode else maximum_zoom, + ) _spring_arm.spring_length = lerpf( _spring_arm.spring_length, - _target_zoom, + effective_target_zoom, zoom_weight ) +func set_fishing_reel_camera_active(active: bool) -> void: + _fishing_reel_camera_active = active + + +func play_fishing_barrier_camera_feedback(barrier_broken: bool) -> void: + if not local_control_enabled or _free_camera_active: + return + _fishing_camera_shake_strength = ( + fishing_barrier_break_shake + if barrier_broken + else fishing_barrier_hit_shake + ) + _fishing_camera_shake_duration = 0.20 if barrier_broken else 0.10 + _fishing_camera_shake_remaining = _fishing_camera_shake_duration + if barrier_broken: + _fishing_break_zoom_offset = fishing_barrier_break_zoom + + +func _update_fishing_camera_effects(delta: float) -> void: + _fishing_break_zoom_offset = move_toward( + _fishing_break_zoom_offset, + 0.0, + ( + fishing_barrier_break_zoom + / maxf(fishing_break_zoom_decay, 0.05) + ) * delta, + ) + if _fishing_camera_shake_remaining <= 0.0: + _camera.h_offset = 0.0 + _camera.v_offset = 0.0 + return + _fishing_camera_shake_remaining = maxf( + _fishing_camera_shake_remaining - delta, + 0.0, + ) + _fishing_camera_shake_phase += delta * 92.0 + var decay: float = ( + _fishing_camera_shake_remaining + / maxf(_fishing_camera_shake_duration, 0.001) + ) + var strength: float = _fishing_camera_shake_strength * decay + _camera.h_offset = sin(_fishing_camera_shake_phase) * strength + _camera.v_offset = cos(_fishing_camera_shake_phase * 1.31) * strength * 0.7 + + func _update_blink(delta: float) -> void: if _fighting_visual_active: return @@ -3052,6 +3120,19 @@ func set_camera_active(active: bool) -> void: _camera.current = active +func face_world_direction(direction: Vector3) -> void: + var horizontal_direction := Vector3(direction.x, 0.0, direction.z) + if horizontal_direction.is_zero_approx() or _visuals == null: + return + horizontal_direction = horizontal_direction.normalized() + var target_world_yaw: float = atan2( + -horizontal_direction.x, + -horizontal_direction.z, + ) + _visuals.rotation.y = target_world_yaw - global_rotation.y + _network_target_visual_yaw = _visuals.rotation.y + + func apply_camera_settings( new_mouse_sensitivity: float, new_controller_sensitivity: float, diff --git a/progression/player_cooler_capacity.gd b/progression/player_cooler_capacity.gd index b8c62be..bbd0b87 100644 --- a/progression/player_cooler_capacity.gd +++ b/progression/player_cooler_capacity.gd @@ -2,62 +2,77 @@ class_name PlayerCoolerCapacity extends Node const PlayerWalletType = preload("res://economy/player_wallet.gd") +const PlayerHomeStateType = preload("res://homes/player_home_state.gd") signal capacity_changed(level: int, capacity: int) -## Kept under the historical class name so existing saves and network product -## identifiers migrate without losing their purchased level. This progression -## now controls the player's private storage box rather than carried catches. +## Compatibility adapter for saves and systems that still refer to the old +## cooler-capacity object. Storage is now derived exclusively from the player's +## home tier; this object is not independently purchasable. const CAPACITIES: Array[int] = [9, 18, 27, 36, 45, 54, 63, 72] const EXPANSION_COSTS: Array[int] = [75, 175, 400, 850, 1500, 2500, 4000] const MAX_LEVEL: int = 7 const MAX_CAPACITY: int = 72 -var _capacity_level: int = 0 +var _home_state: PlayerHomeStateType +var _legacy_capacity_level: int = 0 + + +func bind_home_state(home_state: PlayerHomeStateType) -> void: + if _home_state == home_state: + return + if ( + _home_state != null + and _home_state.changed.is_connected(_on_home_changed) + ): + _home_state.changed.disconnect(_on_home_changed) + _home_state = home_state + if ( + _home_state != null + and not _home_state.changed.is_connected(_on_home_changed) + ): + _home_state.changed.connect(_on_home_changed) + _on_home_changed() func get_level() -> int: - return _capacity_level + return _legacy_capacity_level func get_capacity() -> int: - return CAPACITIES[_capacity_level] + if _home_state != null: + # A new home upgrade grants its authored capacity. Older saves retain any + # separately purchased storage level so reducing the first RV tier cannot + # hide or discard items that were already placed in later slots. + return maxi( + _home_state.get_storage_capacity(), + CAPACITIES[clampi(_legacy_capacity_level, 0, MAX_LEVEL)], + ) + return CAPACITIES[clampi(_legacy_capacity_level, 0, MAX_LEVEL)] func get_next_capacity() -> int: - if _capacity_level >= MAX_LEVEL: - return -1 - return CAPACITIES[_capacity_level + 1] + return -1 func get_next_cost() -> int: - if _capacity_level >= MAX_LEVEL: - return -1 - return EXPANSION_COSTS[_capacity_level] + return -1 -func can_purchase(wallet: PlayerWalletType) -> bool: - var cost: int = get_next_cost() - return wallet != null and cost >= 0 and wallet.can_afford(cost) +func can_purchase(_wallet: PlayerWalletType) -> bool: + return false -func purchase(wallet: PlayerWalletType) -> bool: - if not can_purchase(wallet): - return false - var cost: int = get_next_cost() - if not wallet.debit(cost): - return false - _capacity_level += 1 - capacity_changed.emit(_capacity_level, get_capacity()) - return true +func purchase(_wallet: PlayerWalletType) -> bool: + return false func restore_level(level: int) -> bool: var validated: int = clampi(level, 0, MAX_LEVEL) - var changed: bool = _capacity_level != validated - _capacity_level = validated + var changed: bool = _legacy_capacity_level != validated + _legacy_capacity_level = validated if changed: - capacity_changed.emit(_capacity_level, get_capacity()) + capacity_changed.emit(get_level(), get_capacity()) return true @@ -66,4 +81,8 @@ func reset_to_defaults() -> void: func to_save_data() -> Dictionary: - return {"capacity_level": _capacity_level} + return {"capacity_level": get_level()} + + +func _on_home_changed() -> void: + capacity_changed.emit(get_level(), get_capacity()) diff --git a/save/player_save_manager.gd b/save/player_save_manager.gd index 56fd49c..c41f861 100644 --- a/save/player_save_manager.gd +++ b/save/player_save_manager.gd @@ -338,6 +338,11 @@ func load_player_data() -> bool: snapshot.reel_speed_level, snapshot.barrier_power_level ) + # Home tier is now the authority for private-storage capacity, so restore it + # before the compatibility capacity adapter and inventory layout. + var home_restored: bool = _home_state.restore_from_save_data( + snapshot.home_data + ) var cooler_restored: bool = _cooler_capacity.restore_level( snapshot.cooler_capacity_level ) @@ -368,9 +373,6 @@ func load_player_data() -> bool: snapshot.world_weather_seconds_remaining, ) var jobs_restored: bool = _jobs.restore_from_save_data(snapshot.jobs_data) - var home_restored: bool = _home_state.restore_from_save_data( - snapshot.home_data - ) _is_restoring = false if ( not inventory_restored @@ -1324,6 +1326,26 @@ func _build_load_snapshot(save_data: Dictionary) -> LoadSnapshot: PlayerCoolerCapacityType.MAX_LEVEL, "cooler.capacity_level" ) + # Before homes had upgrade tiers, storage was purchased separately. Preserve + # those saves by granting the starter RV to anybody who owned at least one + # legacy expansion. PlayerCoolerCapacity also retains the purchased legacy + # capacity so entries beyond the new RV's first 18 slots remain accessible. + if ( + snapshot.cooler_capacity_level > 0 + and int(snapshot.home_data.get("tier", 0)) + == PlayerHomeStateType.STARTER_TIER + ): + var migrated_home: Dictionary = home_data.duplicate(true) + migrated_home["tier"] = PlayerHomeStateType.STARTER_RV_TIER + migrated_home["exterior_id"] = String( + PlayerHomeStateType.STARTER_RV_EXTERIOR_ID + ) + var sanitized_migrated_home := ( + PlayerHomeStateType.sanitize_save_data(migrated_home) + ) + if sanitized_migrated_home.is_empty(): + return null + snapshot.home_data = sanitized_migrated_home snapshot.art_unlock_mask = _read_integer( art_data.get("unlock_mask"), 0, diff --git a/tests/economy_regression_validation.gd b/tests/economy_regression_validation.gd index ff82495..0728d82 100644 --- a/tests/economy_regression_validation.gd +++ b/tests/economy_regression_validation.gd @@ -53,7 +53,7 @@ func _run() -> void: ) assert(player != null) assert(catalog != null and catalog.candidates.size() == 316) - assert(LogbookCatalog.ordered_species(catalog.candidates).size() == 313) + assert(LogbookCatalog.ordered_species(catalog.candidates).size() == 314) assert(sale_service != null) assert(shop_service != null) assert(session != null and session.is_host()) @@ -82,7 +82,7 @@ func _run() -> void: main, player, catalog, sale_service, reservations ) _test_host_backpack_purchase(player, shop_service) - _test_host_storage_purchase(player, shop_service) + await _test_host_home_upgrade(main, player, shop_service) assert(not sale_service.is_local_sale_pending()) assert(not shop_service.is_local_purchase_pending()) @@ -175,7 +175,6 @@ func _run_multiplayer_client() -> void: assert(player.inventory_layout.restore_backpack_level( PlayerInventoryLayout.MAX_BACKPACK_LEVEL )) - assert(player.cooler_capacity.restore_level(PlayerCoolerCapacity.MAX_LEVEL)) player.inventory.set_inventory_layout(null) var catch_ids: Array[StringName] = [] for fish: FishData in catalog.candidates: @@ -202,7 +201,6 @@ func _run_multiplayer_client() -> void: assert(not player.inventory.contains_catch_id(catch_id)) assert(not sale_service.is_local_sale_pending()) assert(player.inventory_layout.restore_backpack_level(0)) - assert(player.cooler_capacity.restore_level(0)) var interaction := main.get("_shop_interaction") as FishingShopInteraction player.global_position = interaction.global_position @@ -567,27 +565,49 @@ func _test_host_backpack_purchase( assert(layout.get_next_backpack_cost() == -1) -func _test_host_storage_purchase( +func _test_host_home_upgrade( + main: Node, player: Player, shop_service: NetworkShopService, ) -> void: + var interaction := main.get( + "_rv_upgrade_shop_interaction" + ) as RVUpgradeInteraction + var home_state := main.get("_home_state") as PlayerHomeState var capacity := player.cooler_capacity + assert(interaction != null and home_state != null) + player.global_position = interaction.global_position + for _frame: int in 4: + await physics_frame + assert(interaction.is_avatar_in_range(player)) + assert(home_state.get_tier() == PlayerHomeState.STARTER_TIER) + assert( + interaction.get_dialogue_text(home_state.get_tier()) + == RVUpgradeInteraction.TENT_DIALOGUE_TEXT + ) assert(capacity.get_capacity() == 9) - var total_cost: int = 0 - for cost: int in PlayerCoolerCapacity.EXPANSION_COSTS: - total_cost += cost - if player.wallet.get_balance() < total_cost: - assert(player.wallet.credit(total_cost - player.wallet.get_balance())) + var upgrade_cost: int = home_state.get_next_upgrade_cost() + assert(upgrade_cost == PlayerHomeState.HOME_UPGRADE_COSTS.front()) + assert(upgrade_cost == 50) + if player.wallet.get_balance() < upgrade_cost: + assert(player.wallet.credit( + upgrade_cost - player.wallet.get_balance() + )) var balance_before := player.wallet.get_balance() - for expected_capacity: int in [18, 27, 36, 45, 54, 63, 72]: - _shop_result.clear() - assert(not shop_service.request_cooler_capacity_upgrade().is_empty()) - assert( - not _shop_result.is_empty() and bool(_shop_result[1]), - "Cooler purchase failed: %s" % [_shop_result], - ) - assert(capacity.get_capacity() == expected_capacity) - assert(player.wallet.get_balance() == balance_before - total_cost) + _shop_result.clear() + assert(not shop_service.request_home_upgrade().is_empty()) + assert( + not _shop_result.is_empty() and bool(_shop_result[1]), + "Home purchase failed: %s" % [_shop_result], + ) + assert(home_state.get_tier() == PlayerHomeState.STARTER_RV_TIER) + assert( + interaction.get_dialogue_text(home_state.get_tier()) + == RVUpgradeInteraction.RV_DIALOGUE_TEXT + ) + assert(capacity.get_capacity() == 18) + assert(player.wallet.get_balance() == balance_before - upgrade_cost) + assert(home_state.get_next_upgrade_cost() == -1) assert(capacity.get_next_cost() == -1) diff --git a/tests/home_spawn_multiplayer_validation.gd b/tests/home_spawn_multiplayer_validation.gd index 1f16147..2855eb2 100644 --- a/tests/home_spawn_multiplayer_validation.gd +++ b/tests/home_spawn_multiplayer_validation.gd @@ -49,6 +49,7 @@ func _run_host() -> void: host_fingerprint ) assert(_same_door_position(host_avatar.global_position, host_spawn.origin)) + assert(_faces_away_from_home(host_avatar, home_world, host_fingerprint)) assert(network_home.request_enter(host_fingerprint)) await physics_frame host_avatar.global_position = home_world.get_interior_exit_position( @@ -57,6 +58,7 @@ func _run_host() -> void: assert(network_home.request_exit()) await physics_frame assert(_same_door_position(host_avatar.global_position, host_spawn.origin)) + assert(_faces_away_from_home(host_avatar, home_world, host_fingerprint)) var remote_peer_id: int = await _wait_for_remote_peer(session) assert(remote_peer_id > 1) @@ -70,6 +72,9 @@ func _run_host() -> void: assert(_same_door_position( remote_avatar.global_position, remote_spawn.origin )) + assert(_faces_away_from_home( + remote_avatar, home_world, remote_fingerprint + )) var disconnect_deadline: int = Time.get_ticks_msec() + 12000 while ( @@ -118,6 +123,7 @@ func _run_client() -> void: assert(_same_door_position( player.global_position, exterior_spawn.origin )) + assert(_faces_away_from_home(player, home_world, fingerprint)) print("Home spawn multiplayer client validation: PASS") await _cleanup(main, session) @@ -151,6 +157,23 @@ func _wait_for_home( return false +func _faces_away_from_home( + avatar: Player, + home_world: HomeWorldService, + fingerprint: String, +) -> bool: + var exterior_basis: Basis = home_world.get_exterior_transform( + fingerprint + ).basis + var outward_direction := exterior_basis.z + outward_direction.y = 0.0 + if outward_direction.is_zero_approx(): + return false + return avatar.get_facing_direction().dot( + outward_direction.normalized() + ) >= 0.99 + + func _wait_for_remote_peer(session: NetworkSession) -> int: var deadline: int = Time.get_ticks_msec() + 20000 while Time.get_ticks_msec() < deadline: diff --git a/tests/logbook_runtime_validation.gd b/tests/logbook_runtime_validation.gd index 47e795d..e33e551 100644 --- a/tests/logbook_runtime_validation.gd +++ b/tests/logbook_runtime_validation.gd @@ -143,7 +143,7 @@ func _validate_save_round_trip( assert(catalog != null) assert(catalog.candidates.size() == 316) var active_species := LogbookCatalog.ordered_species(catalog.candidates) - assert(active_species.size() == 313) + assert(active_species.size() == 314) # Keep this runtime save fixture within maximum player capacity while the # focused catalog validation exercises every active species individually. var round_trip_species: Array[FishData] = [] @@ -164,12 +164,14 @@ func _validate_save_round_trip( player.inventory_layout.restore_backpack_level( PlayerInventoryLayout.MAX_BACKPACK_LEVEL ) - player.cooler_capacity.restore_level(PlayerCoolerCapacity.MAX_LEVEL) + var home_state := main.get("_home_state") as PlayerHomeState + assert(home_state != null) + assert(home_state.upgrade_to_next_tier()) assert( player.inventory_layout.get_backpack_level() == PlayerInventoryLayout.MAX_BACKPACK_LEVEL ) - assert(player.cooler_capacity.get_level() == PlayerCoolerCapacity.MAX_LEVEL) + assert(player.cooler_capacity.get_capacity() == 18) player.inventory.set_inventory_layout(null) for index: int in 4: _add_test_catch(player, round_trip_species[index]) diff --git a/ui/fishing_danger_vignette.gdshader b/ui/fishing_danger_vignette.gdshader new file mode 100644 index 0000000..8eee3df --- /dev/null +++ b/ui/fishing_danger_vignette.gdshader @@ -0,0 +1,10 @@ +shader_type canvas_item; + +uniform float intensity : hint_range(0.0, 1.0) = 0.0; + +void fragment() { + vec2 centered = UV * 2.0 - 1.0; + centered.x *= 0.56; + float edge = smoothstep(0.42, 1.02, length(centered)); + COLOR = vec4(0.16, 0.018, 0.025, edge * intensity * 0.72); +} diff --git a/ui/fishing_danger_vignette.gdshader.uid b/ui/fishing_danger_vignette.gdshader.uid new file mode 100644 index 0000000..578ec8b --- /dev/null +++ b/ui/fishing_danger_vignette.gdshader.uid @@ -0,0 +1 @@ +uid://c1qcj3m4b10x4 diff --git a/ui/fishing_shop.gd b/ui/fishing_shop.gd index 234a1c1..7cc8fa8 100644 --- a/ui/fishing_shop.gd +++ b/ui/fishing_shop.gd @@ -15,9 +15,6 @@ const PlayerFishingUpgradesType = preload( "res://progression/player_fishing_upgrades.gd" ) const PlayerType = preload("res://player/player.gd") -const PlayerCoolerCapacityType = preload( - "res://progression/player_cooler_capacity.gd" -) const PlayerArtUnlocksType = preload( "res://progression/player_art_unlocks.gd" ) @@ -154,9 +151,6 @@ const ROD_PRICE_ICON_SIZE: float = 22.0 @onready var _barrier_price_bubble: PanelContainer = %BarrierPriceBubble @onready var _barrier_purchase: Button = %BarrierPurchase @onready var _supplies_list: VBoxContainer = %SuppliesList -@onready var _cooler_cost: CurrencyAmount = %CoolerCost -@onready var _cooler_price_bubble: PanelContainer = %CoolerPriceBubble -@onready var _cooler_purchase: Button = %CoolerPurchase @onready var _backpack_cost: CurrencyAmount = %BackpackCost @onready var _backpack_price_bubble: PanelContainer = %BackpackPriceBubble @onready var _backpack_purchase: Button = %BackpackPurchase @@ -172,7 +166,6 @@ var _inventory: FishInventory var _hotbar: PlayerHotbar var _inventory_layout: PlayerInventoryLayout var _item_catalog: ItemCatalogType -var _cooler_capacity: PlayerCoolerCapacityType var _art_unlocks: PlayerArtUnlocksType var _network_shop: NetworkShopService var _network_sale: NetworkSaleService @@ -202,7 +195,6 @@ func _ready() -> void: %CloseButton.pressed.connect(close_shop) _reel_purchase.pressed.connect(_purchase_reel_speed) _barrier_purchase.pressed.connect(_purchase_barrier_power) - _cooler_purchase.pressed.connect(_purchase_cooler_capacity) _backpack_purchase.pressed.connect(_purchase_backpack_capacity) @@ -353,7 +345,6 @@ func _focus_shop_section() -> void: for upgrade_button: Button in [ _reel_purchase, _barrier_purchase, - _cooler_purchase, _backpack_purchase, ]: if not upgrade_button.disabled: @@ -509,7 +500,6 @@ func _apply_shop_styles() -> void: for panel: PanelContainer in [ _reel_price_bubble, _barrier_price_bubble, - _cooler_price_bubble, _backpack_price_bubble, ]: var price_style := UtilityPageStyleType.rounded_style( @@ -526,7 +516,6 @@ func _apply_shop_styles() -> void: for price: CurrencyAmount in [ _reel_cost, _barrier_cost, - _cooler_cost, _backpack_cost, ]: var amount_label := price.get_amount_label() @@ -538,7 +527,6 @@ func _apply_shop_styles() -> void: %CloseButton, _reel_purchase, _barrier_purchase, - _cooler_purchase, _backpack_purchase, ]: UtilityPageStyleType.apply_ocean_button(button) @@ -559,7 +547,6 @@ func setup( hotbar: PlayerHotbar, inventory_layout: PlayerInventoryLayout, item_catalog: ItemCatalogType, - cooler_capacity: PlayerCoolerCapacityType, art_unlocks: PlayerArtUnlocksType, network_shop: NetworkShopService, network_sale: NetworkSaleService, @@ -576,7 +563,6 @@ func setup( _hotbar = hotbar _inventory_layout = inventory_layout _item_catalog = item_catalog - _cooler_capacity = cooler_capacity _art_unlocks = art_unlocks _network_shop = network_shop _network_sale = network_sale @@ -612,10 +598,6 @@ func setup( _upgrades.upgrades_changed.connect(_on_upgrades_changed) if not _bag.contents_changed.is_connected(_on_bag_changed): _bag.contents_changed.connect(_on_bag_changed) - if not _cooler_capacity.capacity_changed.is_connected( - _on_cooler_capacity_changed - ): - _cooler_capacity.capacity_changed.connect(_on_cooler_capacity_changed) if not _inventory_layout.backpack_capacity_changed.is_connected( _on_backpack_capacity_changed ): @@ -836,7 +818,6 @@ func _refresh_all() -> void: _refresh_wallet() _refresh_upgrades() _refresh_supplies() - _refresh_cooler_capacity() _refresh_backpack_capacity() @@ -1587,41 +1568,6 @@ func _add_supply_icon_tile( return tile_host -func _refresh_cooler_capacity() -> void: - if _cooler_capacity == null: - return - var level: int = _cooler_capacity.get_level() - var cost: int = _cooler_capacity.get_next_cost() - var next_capacity: int = _cooler_capacity.get_next_capacity() - _cooler_purchase.disabled = ( - cost < 0 - or _transaction_in_progress - or _closing - or _network_shop == null - or not _network_shop.can_request_purchase() - or not _cooler_capacity.can_purchase(_wallet) - ) - var cooler_effect: String - if cost < 0: - cooler_effect = "%d slots · maximum level" % ( - _cooler_capacity.get_capacity() - ) - _cooler_price_bubble.hide() - else: - _cooler_price_bubble.show() - cooler_effect = "%d → %d slots" % [ - _cooler_capacity.get_capacity(), - next_capacity, - ] - _cooler_cost.set_amount(cost) - _cooler_purchase.tooltip_text = _upgrade_tooltip( - "storage capacity", - level, - cooler_effect, - ) - _cooler_purchase.accessibility_name = _cooler_purchase.tooltip_text - - func _refresh_backpack_capacity() -> void: if _inventory_layout == null: return @@ -1723,23 +1669,6 @@ func _purchase_art_upgrade(product_id: StringName) -> void: _network_shop.request_art_upgrade(product_id) -func _purchase_cooler_capacity() -> void: - if _transaction_in_progress or not _is_transaction_context_valid(): - _set_feedback("unable to complete purchase.") - return - var cost: int = _cooler_capacity.get_next_cost() - if cost < 0: - _set_feedback("Upgrade is already at maximum.") - return - if not _wallet.can_afford(cost): - _set_feedback("Insufficient funds.") - return - if _network_shop == null: - _set_feedback("Purchase could not be completed.") - return - _network_shop.request_cooler_capacity_upgrade() - - func _purchase_backpack_capacity() -> void: if _transaction_in_progress or not _is_transaction_context_valid(): _set_feedback("unable to complete purchase.") @@ -1860,7 +1789,6 @@ func _on_wallet_changed(_balance: int, _delta: int) -> void: _refresh_wallet() _refresh_upgrades() _refresh_supplies() - _refresh_cooler_capacity() _refresh_backpack_capacity() @@ -1875,10 +1803,6 @@ func _on_bag_changed() -> void: _refresh_supplies() -func _on_cooler_capacity_changed(_level: int, _capacity: int) -> void: - _refresh_cooler_capacity() - - func _on_backpack_capacity_changed(_level: int, _capacity: int) -> void: _refresh_backpack_capacity() diff --git a/ui/fishing_shop.tscn b/ui/fishing_shop.tscn index 70ccec1..66fcbd9 100644 --- a/ui/fishing_shop.tscn +++ b/ui/fishing_shop.tscn @@ -257,35 +257,6 @@ layout_mode = 2 amount = 100 icon_size = 24.0 -[node name="CoolerTile" type="Control" parent="ShopPanel/Margin/Layout/Body/Upgrades/UpgradeScroll/UpgradeGrid"] -custom_minimum_size = Vector2(144, 168) -layout_mode = 2 -mouse_filter = 2 - -[node name="CoolerPurchase" type="Button" parent="ShopPanel/Margin/Layout/Body/Upgrades/UpgradeScroll/UpgradeGrid/CoolerTile"] -unique_name_in_owner = true -offset_right = 144.0 -offset_bottom = 144.0 -tooltip_text = "storage capacity" -icon = ExtResource("7_close") -expand_icon = true -icon_max_width = 92 - -[node name="CoolerPriceBubble" type="PanelContainer" parent="ShopPanel/Margin/Layout/Body/Upgrades/UpgradeScroll/UpgradeGrid/CoolerTile"] -unique_name_in_owner = true -z_index = 2 -offset_left = 22.0 -offset_top = 128.0 -offset_right = 122.0 -offset_bottom = 160.0 -mouse_filter = 2 - -[node name="CoolerCost" parent="ShopPanel/Margin/Layout/Body/Upgrades/UpgradeScroll/UpgradeGrid/CoolerTile/CoolerPriceBubble" instance=ExtResource("8_currency")] -unique_name_in_owner = true -layout_mode = 2 -amount = 75 -icon_size = 24.0 - [node name="BackpackTile" type="Control" parent="ShopPanel/Margin/Layout/Body/Upgrades/UpgradeScroll/UpgradeGrid"] custom_minimum_size = Vector2(144, 168) layout_mode = 2 diff --git a/ui/game_ui.gd b/ui/game_ui.gd index 585efc9..55a07eb 100644 --- a/ui/game_ui.gd +++ b/ui/game_ui.gd @@ -21,6 +21,7 @@ const PauseMenuType = preload("res://ui/pause_menu.gd") const NetworkSessionType = preload("res://network/network_session.gd") const FishingShopType = preload("res://ui/fishing_shop.gd") const DecorShopType = preload("res://ui/decor_shop.gd") +const RVUpgradeShopType = preload("res://ui/rv_upgrade_shop.gd") const SettingsPanelType = preload("res://ui/settings_panel.gd") const PlayerFishingUpgradesType = preload( "res://progression/player_fishing_upgrades.gd" @@ -31,6 +32,9 @@ const ShopInteractionType = preload( const DecorShopInteractionType = preload( "res://world/decor_shop_interaction.gd" ) +const RVUpgradeInteractionType = preload( + "res://world/rv_upgrade_interaction.gd" +) const PlayerStorageType = preload("res://ui/player_storage.gd") const HomeDecorToolbarType = preload("res://ui/home_decor_toolbar.gd") const PlayerStorageInteractionType = preload( @@ -129,6 +133,7 @@ const FISHING_PANEL_SHOWCASE_BOTTOM_OFFSET: float = -104.0 @onready var _barrier_health: Label = %BarrierHealth @onready var _showcase_details: Label = %ShowcaseDetails @onready var _fishing_panel: PanelContainer = %FishingPanel +@onready var _fishing_danger_vignette: ColorRect = %FishingDangerVignette @onready var _experience_panel: PanelContainer = %ExperienceProgressPanel @onready var _experience_level_label: Label = %ExperienceLevelLabel @onready var _experience_award_label: Label = %ExperienceAwardLabel @@ -144,6 +149,8 @@ const SHOP_ANIMALESE_VOICE_ID: String = "natural" const SHOP_ANIMALESE_BASE_PITCH: float = 1.08 const SHOP_SPEECH_CHARACTERS_PER_SECOND: float = 28.0 const SHOP_NPC_SPEECH_COOLDOWN_MILLISECONDS: int = 5000 +const FISHING_DANGER_START_GAP: float = 0.15 +const FISHING_DANGER_FULL_GAP: float = 0.025 @onready var _canonical_stage: Control = %CanonicalStage @@ -155,6 +162,7 @@ const SHOP_NPC_SPEECH_COOLDOWN_MILLISECONDS: int = 5000 @onready var _hotbar_ui: HotbarUIType = %Hotbar @onready var _fishing_shop: FishingShopType = %FishingShop @onready var _decor_shop: DecorShopType = %DecorShop +@onready var _rv_upgrade_shop: RVUpgradeShopType = %RVUpgradeShop @onready var _player_storage: PlayerStorageType = %PlayerStorage @onready var _home_decor_toolbar: HomeDecorToolbarType = %HomeDecorToolbar @onready var _rv_storage_button: Button = %RVStorageButton @@ -208,6 +216,7 @@ var _player_menu_hotbar_visible: bool = false var _main_shop_buyer: FishBuyerProfileType var _shop_interaction: ShopInteractionType var _decor_shop_interaction: DecorShopInteractionType +var _rv_upgrade_shop_interaction: RVUpgradeInteractionType var _storage_interaction: PlayerStorageInteractionType var _surface_drawing: NetworkSurfaceDrawingService var _surface_drawing_hotbar_selected: bool = false @@ -235,6 +244,12 @@ var _controller_text_entry_is_open: Callable var _controller_text_entry_close: Callable var _restore_chat_keyboard_after_fishing: bool = false var _rv_storage_button_requested_visible: bool = false +var _previous_barrier_health := PackedInt32Array() +var _barrier_feedback_initialized: bool = false +var _fishing_danger_target: float = 0.0 +var _fishing_danger_intensity: float = 0.0 +var _fishing_danger_pulse_time: float = 0.0 +var _catch_track_shake_tween: Tween func _ready() -> void: @@ -363,6 +378,7 @@ func setup( shop_interaction: ShopInteractionType, storage_interaction: PlayerStorageInteractionType, decor_shop_interaction: DecorShopInteractionType, + rv_upgrade_shop_interaction: RVUpgradeInteractionType, item_effects: PlayerItemEffectsType, cooler_capacity: PlayerCoolerCapacityType, network_session: NetworkSessionType, @@ -506,7 +522,6 @@ func setup( hotbar, inventory_layout, item_catalog, - cooler_capacity, art_unlocks, network_shop_service, network_sale_service, @@ -521,6 +536,14 @@ func setup( home_state, network_shop_service, ) + _rv_upgrade_shop.setup( + player, + wallet, + fishing_spot, + rv_upgrade_shop_interaction, + home_state, + network_shop_service, + ) _player_storage.setup( player, fishing_spot, @@ -538,6 +561,8 @@ func setup( _fishing_shop.menu_exit_started.connect(_on_shop_exit_started) _decor_shop.menu_visibility_changed.connect(_on_shop_visibility_changed) _decor_shop.menu_exit_started.connect(_on_shop_exit_started) + _rv_upgrade_shop.menu_visibility_changed.connect(_on_shop_visibility_changed) + _rv_upgrade_shop.menu_exit_started.connect(_on_shop_exit_started) _fishing_shop.sell_fish_requested.connect(_on_shop_sell_fish_requested) _fishing_shop.shop_cooler_return_requested.connect( _on_shop_cooler_return_requested @@ -548,6 +573,7 @@ func setup( _main_shop_buyer = main_shop_buyer _shop_interaction = shop_interaction _decor_shop_interaction = decor_shop_interaction + _rv_upgrade_shop_interaction = rv_upgrade_shop_interaction _storage_interaction = storage_interaction _surface_drawing = surface_drawing if ( @@ -571,13 +597,16 @@ func set_world_interactions( shop_interaction: ShopInteractionType, storage_interaction: PlayerStorageInteractionType, decor_shop_interaction: DecorShopInteractionType, + rv_upgrade_shop_interaction: RVUpgradeInteractionType, ) -> void: _shop_interaction = shop_interaction _storage_interaction = storage_interaction _decor_shop_interaction = decor_shop_interaction + _rv_upgrade_shop_interaction = rv_upgrade_shop_interaction _fishing_shop.set_world_interaction(shop_interaction) _player_storage.set_world_interaction(storage_interaction) _decor_shop.set_world_interaction(decor_shop_interaction) + _rv_upgrade_shop.set_world_interaction(rv_upgrade_shop_interaction) func _prioritize_surface_drawing_pointer_input() -> void: @@ -1539,6 +1568,13 @@ func _process(delta: float) -> void: _update_virtual_mouse(delta) _update_controller_menu_scroll(delta) _update_experience_bubble_position() + _update_fishing_danger_vignette(delta) + _try_start_shop_npc_speech() + if _player != null: + _player.set_fishing_reel_camera_active( + _fishing_spot != null + and _fishing_spot.is_reel_input_active() + ) func _update_controller_menu_scroll(delta: float) -> void: @@ -1793,6 +1829,7 @@ func set_gameplay_ui_enabled(enabled: bool) -> void: close_player_menu_for_session_end() _fishing_shop.close_for_session_end() _decor_shop.close_for_session_end() + _rv_upgrade_shop.close_for_session_end() _player_storage.close_for_session_end() _fishing_panel.visible = false _shop_prompt.hide() @@ -1933,6 +1970,10 @@ func get_decor_shop() -> DecorShopType: return _decor_shop +func get_rv_upgrade_shop() -> RVUpgradeShopType: + return _rv_upgrade_shop + + func get_player_storage() -> PlayerStorageType: return _player_storage @@ -2027,8 +2068,19 @@ func set_shop_prompt_visible( _position_shop_prompt(world_anchor) -func set_shop_npc_player_in_range(in_range: bool) -> void: - if _shop_npc_player_in_range == in_range: +func set_shop_npc_player_in_range( + in_range: bool, + dialogue_text: String = "", +) -> void: + var dialogue_changed: bool = ( + not dialogue_text.is_empty() + and _shop_prompt_message.text != dialogue_text + ) + if dialogue_changed: + _shop_prompt_message.text = dialogue_text + _shop_prompt_message.visible_characters = -1 + _shop_npc_spoken_for_current_visit = false + if _shop_npc_player_in_range == in_range and not dialogue_changed: return _shop_npc_player_in_range = in_range if not in_range: @@ -2044,10 +2096,10 @@ func _try_start_shop_npc_speech() -> void: or not _gameplay_ui_enabled ): return - _shop_npc_spoken_for_current_visit = true var now_msec: int = Time.get_ticks_msec() if now_msec < _shop_npc_next_speech_msec: return + _shop_npc_spoken_for_current_visit = true _shop_npc_next_speech_msec = ( now_msec + SHOP_NPC_SPEECH_COOLDOWN_MILLISECONDS ) @@ -2310,6 +2362,12 @@ func _on_catch_display_changed( and _fishing_spot != null and _fishing_spot.is_fighting() ) + _update_fishing_feedback( + progress, + chase_progress, + barrier_health, + encounter_visible, + ) _green_catch_progress.value = progress * 100.0 _red_chase_progress.value = maxf(chase_progress, 0.0) * 100.0 _catch_track.visible = encounter_visible @@ -2346,6 +2404,93 @@ func _on_catch_display_changed( _refresh_fishing_panel_visibility() +func _update_fishing_feedback( + progress: float, + chase_progress: float, + barrier_health: PackedInt32Array, + encounter_visible: bool, +) -> void: + if not encounter_visible: + _previous_barrier_health.clear() + _barrier_feedback_initialized = false + _fishing_danger_target = 0.0 + return + if _barrier_feedback_initialized: + var comparison_count: int = mini( + _previous_barrier_health.size(), + barrier_health.size(), + ) + var barrier_hit: bool = false + var barrier_broken: bool = false + for barrier_index: int in range(comparison_count): + if ( + barrier_health[barrier_index] + >= _previous_barrier_health[barrier_index] + ): + continue + barrier_hit = true + barrier_broken = ( + barrier_broken + or barrier_health[barrier_index] <= 0 + ) + if barrier_hit: + _play_barrier_feedback(barrier_broken) + _previous_barrier_health = barrier_health.duplicate() + _barrier_feedback_initialized = true + var chase_gap: float = progress - maxf(chase_progress, 0.0) + _fishing_danger_target = clampf( + inverse_lerp( + FISHING_DANGER_START_GAP, + FISHING_DANGER_FULL_GAP, + chase_gap, + ), + 0.0, + 1.0, + ) + + +func _play_barrier_feedback(barrier_broken: bool) -> void: + if _player != null: + _player.play_fishing_barrier_camera_feedback(barrier_broken) + if _catch_track_shake_tween != null: + _catch_track_shake_tween.kill() + _catch_track.rotation = 0.0 + var tilt: float = 0.018 if barrier_broken else 0.008 + var beat: float = 0.038 if barrier_broken else 0.028 + _catch_track_shake_tween = create_tween() + _catch_track_shake_tween.tween_property( + _catch_track, "rotation", -tilt, beat + ) + _catch_track_shake_tween.tween_property( + _catch_track, "rotation", tilt, beat + ) + _catch_track_shake_tween.tween_property( + _catch_track, "rotation", -tilt * 0.45, beat + ) + _catch_track_shake_tween.tween_property( + _catch_track, "rotation", 0.0, beat + ) + + +func _update_fishing_danger_vignette(delta: float) -> void: + _fishing_danger_pulse_time += delta + _fishing_danger_intensity = lerpf( + _fishing_danger_intensity, + _fishing_danger_target, + 1.0 - exp(-8.0 * delta), + ) + var pulse: float = ( + 0.88 + sin(_fishing_danger_pulse_time * 5.5) * 0.12 + ) + var shown_intensity: float = _fishing_danger_intensity * pulse + _fishing_danger_vignette.visible = shown_intensity > 0.01 + var vignette_material := ( + _fishing_danger_vignette.material as ShaderMaterial + ) + if vignette_material != null: + vignette_material.set_shader_parameter("intensity", shown_intensity) + + func _update_barrier_markers( positions: PackedFloat32Array, health: PackedInt32Array, diff --git a/ui/game_ui.tscn b/ui/game_ui.tscn index c219c84..c5dea31 100644 --- a/ui/game_ui.tscn +++ b/ui/game_ui.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=24 format=3] +[gd_scene load_steps=27 format=3] [ext_resource type="Script" path="res://ui/game_ui.gd" id="1_ui"] [ext_resource type="PackedScene" path="res://ui/player_menu.tscn" id="2_menu"] @@ -17,6 +17,11 @@ [ext_resource type="PackedScene" path="res://ui/components/bubble_menu/bubble_confirmation_page.tscn" id="15_social_prompt"] [ext_resource type="PackedScene" path="res://ui/decor_shop.tscn" id="16_decor_shop"] [ext_resource type="PackedScene" path="res://ui/home_decor_toolbar.tscn" id="17_decor_toolbar"] +[ext_resource type="PackedScene" path="res://ui/rv_upgrade_shop.tscn" id="18_rv_upgrade_shop"] +[ext_resource type="Shader" path="res://ui/fishing_danger_vignette.gdshader" id="19_fishing_vignette"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_fishing_vignette"] +shader = ExtResource("19_fishing_vignette") [sub_resource type="StyleBoxFlat" id="StyleBox_chase_background"] bg_color = Color(0.032, 0.118, 0.15, 1) @@ -86,6 +91,20 @@ grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 +[node name="FishingDangerVignette" type="ColorRect" parent="UIRoot/CanonicalStage/GameplayTransientHUD"] +unique_name_in_owner = true +visible = false +z_index = 50 +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +material = SubResource("ShaderMaterial_fishing_vignette") +color = Color(1, 1, 1, 1) + [node name="ActiveBaitIndicator" type="Control" parent="UIRoot/CanonicalStage/GameplayTransientHUD"] unique_name_in_owner = true z_index = 54 @@ -312,6 +331,7 @@ offset_right = 420.0 offset_bottom = -124.0 grow_horizontal = 2 grow_vertical = 0 +pivot_offset = Vector2(420, 18) mouse_filter = 2 [node name="GreenCatchProgress" type="ProgressBar" parent="UIRoot/CanonicalStage/GameplayTransientHUD/CatchTrack"] @@ -440,7 +460,7 @@ theme_override_constants/margin_bottom = 8 unique_name_in_owner = true layout_mode = 2 theme_override_font_sizes/font_size = 18 -text = "Hey, if you've got any fish I've got cash! OwO" +text = "Listen, you may suck at fishing but I've got some things that might help." horizontal_alignment = 1 vertical_alignment = 1 autowrap_mode = 2 @@ -477,6 +497,9 @@ unique_name_in_owner = true [node name="DecorShop" parent="UIRoot/CanonicalStage" instance=ExtResource("16_decor_shop")] unique_name_in_owner = true +[node name="RVUpgradeShop" parent="UIRoot/CanonicalStage" instance=ExtResource("18_rv_upgrade_shop")] +unique_name_in_owner = true + [node name="HomeDecorToolbar" parent="UIRoot/CanonicalStage" instance=ExtResource("17_decor_toolbar")] unique_name_in_owner = true diff --git a/ui/home_decor_toolbar.gd b/ui/home_decor_toolbar.gd index 6f73219..50ae444 100644 --- a/ui/home_decor_toolbar.gd +++ b/ui/home_decor_toolbar.gd @@ -10,7 +10,10 @@ var _mode_button: Button var _selection_label: Label var _rotate_button: Button var _store_button: Button +var _clear_button: Button var _mode: PlayerHomeState.PlacementMode = PlayerHomeState.PlacementMode.GRID +var _interactive: bool = true +var _selection_active: bool = false func _ready() -> void: @@ -22,31 +25,33 @@ func set_active(active: bool) -> void: if visible == active: return visible = active - if active and _mode_button != null: - _mode_button.call_deferred("grab_focus") + + +func set_interactive(interactive: bool) -> void: + _interactive = interactive + _refresh_button_interactivity() func set_mode(mode: PlayerHomeState.PlacementMode) -> void: _mode = mode if _mode_button != null: _mode_button.text = ( - "placement: grid" + "grid" if mode == PlayerHomeState.PlacementMode.GRID - else "placement: free" + else "free" ) + _mode_button.tooltip_text = "placement mode: %s" % _mode_button.text func set_selection(instance_id: String, display_name: String = "") -> void: var selected: bool = not instance_id.is_empty() + _selection_active = selected if _selection_label != null: _selection_label.text = ( "selected: %s" % display_name - if selected else "click decor to select; drag to move" + if selected else "use held decor to place; click or drag to edit" ) - if _rotate_button != null: - _rotate_button.disabled = not selected - if _store_button != null: - _store_button.disabled = not selected + _refresh_button_interactivity() func report_status(message: String) -> void: @@ -55,65 +60,92 @@ func report_status(message: String) -> void: func _build_ui() -> void: - custom_minimum_size = Vector2(330.0, 0.0) - position = Vector2(925.0, 540.0) - z_index = 58 + set_anchors_preset(Control.PRESET_TOP_RIGHT) + offset_left = -500.0 + offset_top = 0.0 + offset_right = 0.0 + offset_bottom = 106.0 + custom_minimum_size = Vector2(500.0, 0.0) + z_index = 85 mouse_filter = Control.MOUSE_FILTER_STOP - add_theme_stylebox_override( - "panel", - UtilityPageStyle.rounded_style( - Color(UtilityPageStyle.OCEAN_PANEL_DEEP, 0.96), 16 - ), - ) + var panel_style: StyleBoxFlat = UtilityPageStyle.panel_style() + panel_style.set_corner_radius_all(10) + panel_style.content_margin_left = 6.0 + panel_style.content_margin_top = 6.0 + panel_style.content_margin_right = 6.0 + panel_style.content_margin_bottom = 6.0 + add_theme_stylebox_override("panel", panel_style) var margin := MarginContainer.new() for side: StringName in [ &"margin_left", &"margin_top", &"margin_right", &"margin_bottom", ]: - margin.add_theme_constant_override(side, 12) + margin.add_theme_constant_override(side, 6) add_child(margin) var layout := VBoxContainer.new() - layout.add_theme_constant_override("separation", 8) + layout.add_theme_constant_override("separation", 5) margin.add_child(layout) - var title := Label.new() - title.text = "RV decor" - title.add_theme_font_size_override("font_size", 24) - layout.add_child(title) - _selection_label = Label.new() - _selection_label.text = "click decor to select; drag to move" - _selection_label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART - _selection_label.add_theme_font_size_override("font_size", 17) - layout.add_child(_selection_label) var row := HBoxContainer.new() - row.add_theme_constant_override("separation", 8) + row.add_theme_constant_override("separation", 5) layout.add_child(row) - _mode_button = Button.new() - _mode_button.text = "placement: grid" - _mode_button.size_flags_horizontal = Control.SIZE_EXPAND_FILL - UtilityPageStyle.apply_ocean_button(_mode_button) + var title := Label.new() + title.text = "decor" + title.custom_minimum_size = Vector2(70.0, 46.0) + title.vertical_alignment = VERTICAL_ALIGNMENT_CENTER + title.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + title.add_theme_font_size_override("font_size", 19) + row.add_child(title) + _mode_button = _add_tool_button(row, "grid", "switch placement mode", 82.0) _mode_button.pressed.connect(_toggle_mode) - row.add_child(_mode_button) - _rotate_button = Button.new() - _rotate_button.text = "rotate" - _rotate_button.disabled = true - UtilityPageStyle.apply_ocean_button(_rotate_button) + _rotate_button = _add_tool_button(row, "rotate", "rotate selected decor", 92.0) _rotate_button.pressed.connect(rotate_requested.emit) - row.add_child(_rotate_button) - var action_row := HBoxContainer.new() - action_row.add_theme_constant_override("separation", 8) - layout.add_child(action_row) - _store_button = Button.new() - _store_button.text = "pack up" - _store_button.disabled = true - _store_button.size_flags_horizontal = Control.SIZE_EXPAND_FILL - UtilityPageStyle.apply_ocean_button(_store_button) + _store_button = _add_tool_button(row, "pack", "pack selected decor", 82.0) _store_button.pressed.connect(store_requested.emit) - action_row.add_child(_store_button) - var cancel_button := Button.new() - cancel_button.text = "clear selection" - cancel_button.size_flags_horizontal = Control.SIZE_EXPAND_FILL - UtilityPageStyle.apply_ocean_button(cancel_button) - cancel_button.pressed.connect(cancel_requested.emit) - action_row.add_child(cancel_button) + _clear_button = _add_tool_button(row, "clear", "clear selection", 82.0) + _clear_button.pressed.connect(cancel_requested.emit) + _selection_label = Label.new() + _selection_label.text = "use held decor to place; click or drag to edit" + _selection_label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART + _selection_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + _selection_label.add_theme_font_size_override("font_size", 15) + layout.add_child(_selection_label) + _refresh_button_interactivity() + + +func _add_tool_button( + parent: Container, + button_text: String, + button_tooltip: String, + minimum_width: float, +) -> Button: + var button := Button.new() + button.text = button_text + button.tooltip_text = button_tooltip + button.accessibility_name = button_tooltip + button.custom_minimum_size = Vector2(minimum_width, 46.0) + button.size_flags_horizontal = Control.SIZE_EXPAND_FILL + UtilityPageStyle.apply_ocean_button(button) + for style_name: StringName in [ + &"normal", &"hover", &"pressed", &"focus", &"disabled", + ]: + var existing: StyleBox = button.get_theme_stylebox(style_name) + var rounded := existing.duplicate() as StyleBoxFlat + if rounded == null: + continue + rounded.set_corner_radius_all(20) + button.add_theme_stylebox_override(style_name, rounded) + parent.add_child(button) + return button + + +func _refresh_button_interactivity() -> void: + if _mode_button != null: + _mode_button.disabled = not _interactive + if _rotate_button != null: + _rotate_button.disabled = not _interactive or not _selection_active + if _store_button != null: + _store_button.disabled = not _interactive or not _selection_active + if _clear_button != null: + _clear_button.disabled = not _interactive or not _selection_active func _toggle_mode() -> void: diff --git a/ui/player_menu.gd b/ui/player_menu.gd index 9b15913..95263f5 100644 --- a/ui/player_menu.gd +++ b/ui/player_menu.gd @@ -2575,7 +2575,10 @@ func _on_tackle_button_gui_input( call_deferred("_release_pointer_focus", button) if ( mouse_event == null - or mouse_event.button_index != MOUSE_BUTTON_RIGHT + or mouse_event.button_index not in [ + MOUSE_BUTTON_LEFT, + MOUSE_BUTTON_RIGHT, + ] or not mouse_event.pressed ): return diff --git a/ui/player_storage.gd b/ui/player_storage.gd index 83817c5..e5369a4 100644 --- a/ui/player_storage.gd +++ b/ui/player_storage.gd @@ -105,7 +105,7 @@ func _open_storage( ): return false _home_access = home_access - _title.text = "RV storage" if home_access else "private storage" + _title.text = "home storage" if home_access else "private storage" _decorate_button.visible = home_access and allow_decorating _prior_movement_enabled = _player.is_movement_enabled() _prior_camera_enabled = _player.is_camera_input_enabled() @@ -290,8 +290,8 @@ func _build_ui() -> void: _title.size_flags_horizontal = Control.SIZE_EXPAND_FILL header.add_child(_title) _decorate_button = Button.new() - _decorate_button.text = "decorate RV" - _decorate_button.tooltip_text = "Place decor inside your RV" + _decorate_button.text = "decorate home" + _decorate_button.tooltip_text = "Place decor inside your home" _decorate_button.custom_minimum_size = Vector2(160.0, 48.0) UtilityPageStyle.apply_ocean_button(_decorate_button) _decorate_button.hide() diff --git a/ui/rv_upgrade_shop.gd b/ui/rv_upgrade_shop.gd new file mode 100644 index 0000000..11c0a4d --- /dev/null +++ b/ui/rv_upgrade_shop.gd @@ -0,0 +1,330 @@ +class_name RVUpgradeShop +extends Control + +const INPUT_OWNER: StringName = &"rv_upgrade_shop" +const UtilityPageStyleType = preload("res://ui/utility_page_style.gd") +const CurrencyPresentationType = preload("res://ui/currency_presentation.gd") + +signal menu_visibility_changed(is_open: bool) +signal menu_exit_started + +var _player: Player +var _wallet: PlayerWallet +var _fishing_spot: FishingSpot +var _interaction: RVUpgradeInteraction +var _home_state: PlayerHomeState +var _network_shop: NetworkShopService +var _wallet_amount: CurrencyAmount +var _price_amount: CurrencyAmount +var _home_label: Label +var _storage_label: Label +var _feedback: Label +var _upgrade_button: Button +var _close_button: Button +var _transaction_pending: bool = false +var _prior_movement_enabled: bool = true +var _prior_camera_enabled: bool = true +var _prior_mouse_mode: Input.MouseMode = Input.MOUSE_MODE_VISIBLE + + +func _ready() -> void: + UtilityPageStyleType.apply_page(self) + _build_ui() + hide() + + +func setup( + player: Player, + wallet: PlayerWallet, + fishing_spot: FishingSpot, + interaction: RVUpgradeInteraction, + home_state: PlayerHomeState, + network_shop: NetworkShopService, +) -> void: + _player = player + _wallet = wallet + _fishing_spot = fishing_spot + _interaction = interaction + _home_state = home_state + _network_shop = network_shop + if not _wallet.balance_changed.is_connected(_on_wallet_changed): + _wallet.balance_changed.connect(_on_wallet_changed) + if not _home_state.changed.is_connected(_refresh): + _home_state.changed.connect(_refresh) + if ( + _network_shop != null + and not _network_shop.local_purchase_pending.is_connected( + _on_purchase_pending + ) + ): + _network_shop.local_purchase_pending.connect(_on_purchase_pending) + _network_shop.local_purchase_finished.connect(_on_purchase_finished) + _refresh() + + +func set_world_interaction(interaction: RVUpgradeInteraction) -> void: + _interaction = interaction + + +func open_shop() -> bool: + if ( + visible + or _player == null + or _wallet == null + or _fishing_spot == null + or _interaction == null + or not _interaction.is_local_player_in_range() + or not _fishing_spot.can_open_fishing_shop() + ): + return false + _prior_movement_enabled = _player.is_movement_enabled() + _prior_camera_enabled = _player.is_camera_input_enabled() + _player.set_movement_enabled(false) + _player.set_camera_input_enabled(false) + _prior_mouse_mode = _restorable_mouse_mode(Input.mouse_mode) + _fishing_spot.set_local_menu_input_suppressed(INPUT_OWNER, true) + Input.mouse_mode = Input.MOUSE_MODE_VISIBLE + _transaction_pending = ( + _network_shop != null + and _network_shop.is_local_purchase_pending() + ) + _feedback.text = "" + _refresh() + show() + _upgrade_button.call_deferred("grab_focus") + menu_visibility_changed.emit(true) + return true + + +func close_shop(restore_controls: bool = true) -> void: + if not visible: + return + menu_exit_started.emit() + get_viewport().gui_release_focus() + hide() + if _fishing_spot != null: + _fishing_spot.set_local_menu_input_suppressed(INPUT_OWNER, false) + if restore_controls and _player != null: + _player.set_movement_enabled(_prior_movement_enabled) + _player.set_camera_input_enabled(_prior_camera_enabled) + Input.mouse_mode = _prior_mouse_mode + menu_visibility_changed.emit(false) + + +func consume_escape() -> bool: + if not visible: + return false + close_shop() + return true + + +func close_for_range_exit() -> void: + close_shop() + + +func close_for_water_recovery() -> void: + close_shop(false) + + +func close_for_session_end() -> void: + close_shop(false) + + +func _unhandled_input(event: InputEvent) -> void: + if not visible or not event.is_action_pressed("ui_cancel"): + return + close_shop() + get_viewport().set_input_as_handled() + + +func _purchase_upgrade() -> void: + if _network_shop == null or _transaction_pending: + return + var request_id: String = _network_shop.request_home_upgrade() + if request_id.is_empty(): + _refresh() + + +func _on_purchase_pending(_request_id: String) -> void: + _transaction_pending = true + _feedback.text = "upgrading…" + _refresh() + + +func _on_purchase_finished( + _request_id: String, + accepted: bool, + message: String, + product_id: StringName, + category: int, + _quantity: int, + _total_cost: int, +) -> void: + if ( + category != NetworkShopProtocol.ProductCategory.HOME_UPGRADE + or product_id != NetworkShopService.HOME_UPGRADE_PRODUCT_ID + ): + return + _transaction_pending = false + _feedback.text = "starter RV unlocked" if accepted else message.to_lower() + _refresh() + + +func _on_wallet_changed(_balance: int, _delta: int) -> void: + _refresh() + + +func _refresh() -> void: + if _wallet_amount == null: + return + var balance: int = _wallet.get_balance() if _wallet != null else 0 + var tier: int = _home_state.get_tier() if _home_state != null else 0 + var current_capacity: int = ( + _home_state.get_storage_capacity() if _home_state != null else 9 + ) + var next_capacity: int = ( + _home_state.get_next_storage_capacity() if _home_state != null else -1 + ) + var cost: int = ( + _home_state.get_next_upgrade_cost() if _home_state != null else -1 + ) + _wallet_amount.set_amount(balance) + _price_amount.set_amount(maxi(cost, 0)) + if tier >= PlayerHomeState.MAX_TIER: + _home_label.text = "starter RV" + _storage_label.text = "storage · %d slots" % current_capacity + _upgrade_button.text = "unlocked" + _upgrade_button.disabled = true + _price_amount.visible = false + else: + _home_label.text = "tent → starter RV" + _storage_label.text = "storage · %d → %d slots" % [ + current_capacity, next_capacity, + ] + _upgrade_button.text = "upgrade" + _upgrade_button.disabled = ( + _transaction_pending + or _wallet == null + or not _wallet.can_afford(cost) + or _network_shop == null + or not _network_shop.can_request_home_upgrade() + ) + _price_amount.visible = true + + +func _restorable_mouse_mode(mouse_mode: Input.MouseMode) -> Input.MouseMode: + return ( + Input.MOUSE_MODE_VISIBLE + if mouse_mode == Input.MOUSE_MODE_CAPTURED + else mouse_mode + ) + + +func _build_ui() -> void: + set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT) + z_index = 83 + mouse_filter = Control.MOUSE_FILTER_STOP + var blocker := ColorRect.new() + blocker.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT) + blocker.color = Color(0.02, 0.08, 0.10, 0.55) + blocker.mouse_filter = Control.MOUSE_FILTER_STOP + add_child(blocker) + + var panel := PanelContainer.new() + panel.set_anchors_preset(Control.PRESET_CENTER) + panel.position = Vector2(-390.0, -225.0) + panel.size = Vector2(780.0, 450.0) + panel.add_theme_stylebox_override( + "panel", + UtilityPageStyleType.rounded_style( + UtilityPageStyleType.OCEAN_PANEL_DEEP, 24 + ), + ) + add_child(panel) + var margin := MarginContainer.new() + for side: StringName in [ + &"margin_left", &"margin_top", &"margin_right", &"margin_bottom", + ]: + margin.add_theme_constant_override(side, 28) + panel.add_child(margin) + var layout := VBoxContainer.new() + layout.add_theme_constant_override("separation", 18) + margin.add_child(layout) + + var header := HBoxContainer.new() + header.add_theme_constant_override("separation", 12) + layout.add_child(header) + var title := Label.new() + title.text = "home upgrades" + title.add_theme_font_size_override("font_size", 38) + title.size_flags_horizontal = Control.SIZE_EXPAND_FILL + header.add_child(title) + _wallet_amount = CurrencyPresentationType.instantiate_amount(0, 24.0) + header.add_child(_wallet_amount) + + var offer := PanelContainer.new() + offer.size_flags_vertical = Control.SIZE_EXPAND_FILL + offer.add_theme_stylebox_override( + "panel", + UtilityPageStyleType.rounded_style( + UtilityPageStyleType.OCEAN_FIELD, 18 + ), + ) + layout.add_child(offer) + var offer_margin := MarginContainer.new() + for side: StringName in [ + &"margin_left", &"margin_top", &"margin_right", &"margin_bottom", + ]: + offer_margin.add_theme_constant_override(side, 28) + offer.add_child(offer_margin) + var details := VBoxContainer.new() + details.alignment = BoxContainer.ALIGNMENT_CENTER + details.add_theme_constant_override("separation", 14) + offer_margin.add_child(details) + _home_label = Label.new() + _home_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + _home_label.add_theme_font_size_override("font_size", 34) + details.add_child(_home_label) + var description := Label.new() + description.text = ( + "A weatherproof home with a larger interior and built-in storage." + ) + description.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + description.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART + description.add_theme_font_size_override("font_size", 20) + details.add_child(description) + _storage_label = Label.new() + _storage_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + _storage_label.add_theme_font_size_override("font_size", 22) + details.add_child(_storage_label) + var purchase_row := HBoxContainer.new() + purchase_row.alignment = BoxContainer.ALIGNMENT_CENTER + purchase_row.add_theme_constant_override("separation", 10) + details.add_child(purchase_row) + _upgrade_button = Button.new() + _upgrade_button.custom_minimum_size = Vector2(220.0, 60.0) + UtilityPageStyleType.apply_ocean_button(_upgrade_button) + _upgrade_button.pressed.connect(_purchase_upgrade) + purchase_row.add_child(_upgrade_button) + _price_amount = CurrencyPresentationType.instantiate_amount(0, 24.0) + purchase_row.add_child(_price_amount) + + var footer := HBoxContainer.new() + footer.add_theme_constant_override("separation", 12) + layout.add_child(footer) + _feedback = Label.new() + _feedback.size_flags_horizontal = Control.SIZE_EXPAND_FILL + _feedback.add_theme_font_size_override("font_size", 18) + footer.add_child(_feedback) + _close_button = Button.new() + _close_button.text = "close" + _close_button.custom_minimum_size = Vector2(150.0, 50.0) + UtilityPageStyleType.apply_ocean_button(_close_button) + _close_button.pressed.connect(close_shop) + footer.add_child(_close_button) + _upgrade_button.focus_neighbor_bottom = _upgrade_button.get_path_to( + _close_button + ) + _close_button.focus_neighbor_top = _close_button.get_path_to( + _upgrade_button + ) diff --git a/ui/rv_upgrade_shop.gd.uid b/ui/rv_upgrade_shop.gd.uid new file mode 100644 index 0000000..ddd043e --- /dev/null +++ b/ui/rv_upgrade_shop.gd.uid @@ -0,0 +1 @@ +uid://b5pnsuph7fxrd diff --git a/ui/rv_upgrade_shop.tscn b/ui/rv_upgrade_shop.tscn new file mode 100644 index 0000000..22abf58 --- /dev/null +++ b/ui/rv_upgrade_shop.tscn @@ -0,0 +1,14 @@ +[gd_scene load_steps=2 format=3] + +[ext_resource type="Script" path="res://ui/rv_upgrade_shop.gd" id="1_script"] + +[node name="RVUpgradeShop" type="Control"] +unique_name_in_owner = true +visible = false +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_script") diff --git a/world/decor_shop_interaction.gd b/world/decor_shop_interaction.gd index 049bfbe..a325134 100644 --- a/world/decor_shop_interaction.gd +++ b/world/decor_shop_interaction.gd @@ -1,2 +1,10 @@ class_name DecorShopInteraction extends FishingShopInteraction + +const DECOR_DIALOGUE_TEXT: String = ( + "You gonna decorate that hot box or what? I've got some new decor in, take a look." +) + + +func get_dialogue_text(_home_tier: int = -1) -> String: + return DECOR_DIALOGUE_TEXT diff --git a/world/fishing_shop_interaction.gd b/world/fishing_shop_interaction.gd index d912eca..9628ee6 100644 --- a/world/fishing_shop_interaction.gd +++ b/world/fishing_shop_interaction.gd @@ -3,6 +3,10 @@ extends Area3D signal local_player_range_changed(in_range: bool) +const DIALOGUE_TEXT: String = ( + "Listen, you may suck at fishing but I've got some things that might help." +) + @export_node_path("Node3D") var look_character_path: NodePath = ^"../Shopkeeper" var _local_player: Player @@ -37,6 +41,10 @@ func is_avatar_in_range(avatar: Player) -> bool: ) +func get_dialogue_text(_home_tier: int = -1) -> String: + return DIALOGUE_TEXT + + func get_prompt_anchor_position() -> Vector3: if _look_character != null: return _look_character.get_head_anchor_position() diff --git a/world/generation/generated_world_region.gd b/world/generation/generated_world_region.gd index 4e15251..61484fd 100644 --- a/world/generation/generated_world_region.gd +++ b/world/generation/generated_world_region.gd @@ -12,6 +12,9 @@ const PlayerStorageInteractionType = preload( const DecorShopInteractionType = preload( "res://world/decor_shop_interaction.gd" ) +const RVUpgradeInteractionType = preload( + "res://world/rv_upgrade_interaction.gd" +) const PrecipitationOcclusionType = preload( "res://world/environment/precipitation_occlusion.gd" ) @@ -52,6 +55,8 @@ const WATER_RECOVERY_FOOTPRINT_RADIUS := 0.6 const WATER_RECOVERY_INSET_STEP := 0.25 const WATER_RECOVERY_MAXIMUM_INSET := 1.5 const WATER_RECOVERY_SEARCH_EXPANSIONS: Array[float] = [1.5, 4.0, 12.0] +const HOME_GROUND_HEIGHT_TOLERANCE := 0.5 +const HOME_ELEVATION_HEIGHT_TOLERANCE := 0.6 const PROP_SURFACE_SAMPLE_DIRECTIONS: Array[Vector2] = [ Vector2(1.0, 0.0), Vector2(0.70710678, 0.70710678), @@ -86,9 +91,13 @@ const PROCEDURAL_PROP_GROUPS: Array[StringName] = [ @onready var _decor_shop: DecorShopInteractionType = ( $Interactables/DecorShopWorld/InteractionArea ) +@onready var _rv_upgrade_shop: RVUpgradeInteractionType = ( + $Interactables/RVUpgradeShopWorld/InteractionArea +) @onready var _shop_root: Node3D = %FishingShopWorld @onready var _storage_root: Node3D = %PlayerStorageBox @onready var _decor_shop_root: Node3D = %DecorShopWorld +@onready var _rv_upgrade_shop_root: Node3D = %RVUpgradeShopWorld @onready var _decorations: Node3D = %Decorations @onready var _tree_anchors: GatherableAnchorSet3D = %ReachableTreeTrunks @onready var _diggable_beach: DiggableArea3D = %DiggableBeach @@ -104,6 +113,7 @@ var _placed_prop_groups: Array[StringName] = [] var _placed_group_coordinates: Dictionary[StringName, Array] = {} var _biome_assignments: Dictionary[Vector2i, StringName] = {} var _water_recovery_triangles_by_coordinate: Dictionary[Vector2i, Array] = {} +var _home_accessible_elevations_by_coordinate: Dictionary[Vector2i, Array] = {} func _ready() -> void: @@ -159,6 +169,10 @@ func get_decor_shop() -> DecorShopInteractionType: return _decor_shop +func get_rv_upgrade_shop() -> RVUpgradeInteractionType: + return _rv_upgrade_shop + + func get_saltwater_shoreline_mesh() -> MeshInstance3D: return _shoreline_reference @@ -184,6 +198,7 @@ func get_spawn_surface_triangles( material_names: Array[StringName], minimum_global_y: float, minimum_up_dot: float = 0.6, + maximum_global_y: float = 100.0, ) -> Array[PackedVector3Array]: var triangles: Array[PackedVector3Array] = [] if material_names.is_empty(): @@ -204,10 +219,27 @@ func get_spawn_surface_triangles( mesh.surface_get_arrays(surface_index), minimum_global_y, minimum_up_dot, + maximum_global_y, ) return triangles +func is_home_exterior_position_accessible(position: Vector3) -> bool: + var local_position := _generator.to_local(position) + if local_position.y <= HOME_GROUND_HEIGHT_TOLERANCE: + return true + var coordinate := _generator.coordinate_for_local_position(local_position) + for value: Variant in _home_accessible_elevations_by_coordinate.get( + coordinate, + [], + ): + if absf(local_position.y - float(value)) <= ( + HOME_ELEVATION_HEIGHT_TOLERANCE + ): + return true + return false + + func get_water_recovery_position( entry_position: Vector3, fallback_position: Vector3, @@ -242,6 +274,7 @@ func get_water_recovery_position( func _on_generation_completed(summary: Dictionary) -> void: _diggable_beach.invalidate_surface_cache() var records: Array[Dictionary] = _generator.placement_records() + _cache_home_accessible_elevations(records) _assign_biomes(records, summary) var spawn_position := Vector3.ZERO _clear_children(_decorations) @@ -388,6 +421,97 @@ func _on_generation_completed(summary: Dictionary) -> void: world_generated.emit(_current_seed, summary) +func _cache_home_accessible_elevations( + records: Array[Dictionary], +) -> void: + _home_accessible_elevations_by_coordinate.clear() + var records_by_coordinate: Dictionary[Vector2i, Dictionary] = {} + var elevation_tiers: Dictionary[int, bool] = {} + for record: Dictionary in records: + var coordinate: Vector2i = record.get( + "coordinate", + Vector2i(-1, -1), + ) + records_by_coordinate[coordinate] = record + for tier: int in _elevation_tiers_for_tags( + record.get("tags", PackedStringArray()) + ): + elevation_tiers[tier] = true + var visited: Dictionary[String, bool] = {} + for tier: int in elevation_tiers: + var elevation_tag := "elevation_%d" % tier + for coordinate: Vector2i in records_by_coordinate: + var visit_key := _home_elevation_visit_key(coordinate, tier) + if visited.has(visit_key): + continue + var record: Dictionary = records_by_coordinate[coordinate] + var tags: PackedStringArray = record.get( + "tags", + PackedStringArray(), + ) + if elevation_tag not in tags: + continue + var component: Array[Vector2i] = [] + var pending: Array[Vector2i] = [coordinate] + var has_ramp := false + while not pending.is_empty(): + var current: Vector2i = pending.pop_back() + var current_key := _home_elevation_visit_key(current, tier) + if visited.has(current_key): + continue + var current_record: Dictionary = records_by_coordinate.get( + current, + {}, + ) + var current_tags: PackedStringArray = current_record.get( + "tags", + PackedStringArray(), + ) + if elevation_tag not in current_tags: + continue + visited[current_key] = true + component.append(current) + has_ramp = has_ramp or "ramp" in current_tags + for offset: Vector2i in [ + Vector2i.LEFT, + Vector2i.RIGHT, + Vector2i.UP, + Vector2i.DOWN, + ]: + pending.append(current + offset) + if not has_ramp: + continue + var surface_height := ( + float(tier - 1) * _generator.elevated_cliff_level_height + ) + for component_coordinate: Vector2i in component: + var heights: Array = ( + _home_accessible_elevations_by_coordinate.get( + component_coordinate, + [], + ) + ) + heights.append(surface_height) + _home_accessible_elevations_by_coordinate[ + component_coordinate + ] = heights + + +func _elevation_tiers_for_tags(tags: PackedStringArray) -> Array[int]: + var tiers: Array[int] = [] + for tag_value: String in tags: + if not tag_value.begins_with("elevation_"): + continue + var suffix := tag_value.trim_prefix("elevation_") + if suffix.is_valid_int(): + tiers.append(suffix.to_int()) + return tiers + + +func _home_elevation_visit_key(coordinate: Vector2i, tier: int) -> String: + return "%d:%d:%d" % [tier, coordinate.x, coordinate.y] + + func _mark_precipitation_occluders() -> void: for prop: Node in _decorations.get_children(): var prop_group := prop.get_meta(&"terrain_prop_group", &"") as StringName @@ -441,6 +565,8 @@ func _place_spawn_amenities(center: Vector3) -> void: _storage_root.rotation.y = PI * 0.5 _decor_shop_root.position = center + Vector3(-2.4, 0.0, 1.2) _decor_shop_root.rotation.y = PI * 0.5 + _rv_upgrade_shop_root.position = center + Vector3(-2.35, 0.0, -1.35) + _rv_upgrade_shop_root.rotation.y = PI func _configure_static_water() -> void: @@ -1304,6 +1430,7 @@ func _terrain_surface_triangles_by_coordinate( mesh_instance.mesh.surface_get_arrays(surface_index), -INF, 0.35, + 100.0, ) if triangles.is_empty(): continue @@ -1651,6 +1778,7 @@ func _append_surface_triangles( arrays: Array, minimum_global_y: float, minimum_up_dot: float, + maximum_global_y: float, ) -> void: if arrays.size() <= Mesh.ARRAY_INDEX: return @@ -1660,10 +1788,28 @@ func _append_surface_triangles( return if indices.is_empty(): for index: int in range(0, vertices.size() - 2, 3): - _append_triangle(result, mesh_instance, vertices[index], vertices[index + 1], vertices[index + 2], minimum_global_y, minimum_up_dot) + _append_triangle( + result, + mesh_instance, + vertices[index], + vertices[index + 1], + vertices[index + 2], + minimum_global_y, + minimum_up_dot, + maximum_global_y, + ) return for index: int in range(0, indices.size() - 2, 3): - _append_triangle(result, mesh_instance, vertices[indices[index]], vertices[indices[index + 1]], vertices[indices[index + 2]], minimum_global_y, minimum_up_dot) + _append_triangle( + result, + mesh_instance, + vertices[indices[index]], + vertices[indices[index + 1]], + vertices[indices[index + 2]], + minimum_global_y, + minimum_up_dot, + maximum_global_y, + ) func _append_triangle( @@ -1674,11 +1820,15 @@ func _append_triangle( local_c: Vector3, minimum_global_y: float, minimum_up_dot: float, + maximum_global_y: float, ) -> void: var a := mesh_instance.to_global(local_a) var b := mesh_instance.to_global(local_b) var c := mesh_instance.to_global(local_c) - if minf(a.y, minf(b.y, c.y)) <= minimum_global_y: + if ( + maxf(a.y, maxf(b.y, c.y)) <= minimum_global_y + or minf(a.y, minf(b.y, c.y)) >= maximum_global_y + ): return var cross := (b - a).cross(c - a) if cross.length_squared() <= 0.0000001: diff --git a/world/generation/generated_world_region.tscn b/world/generation/generated_world_region.tscn index 04602e1..c996b88 100644 --- a/world/generation/generated_world_region.tscn +++ b/world/generation/generated_world_region.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=15 format=3] +[gd_scene load_steps=16 format=3] [ext_resource type="Script" path="res://world/generation/generated_world_region.gd" id="1_region"] [ext_resource type="Script" path="res://world/generation/terrain_chunk_generator.gd" id="2_generator"] @@ -14,6 +14,7 @@ [ext_resource type="Resource" path="res://world/generation/props/terrain_prop_catalog.tres" id="12_prop_catalog"] [ext_resource type="Resource" path="res://world/generation/biomes/terrain_biome_catalog.tres" id="13_biome_catalog"] [ext_resource type="PackedScene" path="res://world/interactables/decor_shop_world.tscn" id="14_decor_shop"] +[ext_resource type="PackedScene" path="res://world/interactables/rv_upgrade_shop_world.tscn" id="15_rv_upgrade"] [node name="GeneratedWorldRegion" type="Node3D"] script = ExtResource("1_region") @@ -102,6 +103,9 @@ unique_name_in_owner = true [node name="DecorShopWorld" parent="Interactables" instance=ExtResource("14_decor_shop")] unique_name_in_owner = true +[node name="RVUpgradeShopWorld" parent="Interactables" instance=ExtResource("15_rv_upgrade")] +unique_name_in_owner = true + [node name="Decorations" type="Node3D" parent="."] unique_name_in_owner = true diff --git a/world/generation/terrain_chunk_generator.gd b/world/generation/terrain_chunk_generator.gd index 49bf693..64a8bd2 100644 --- a/world/generation/terrain_chunk_generator.gd +++ b/world/generation/terrain_chunk_generator.gd @@ -4414,6 +4414,19 @@ func chunk_position(coordinate: Vector2i) -> Vector3: ) +func coordinate_for_local_position(position: Vector3) -> Vector2i: + if catalog == null or catalog.chunk_size <= 0.0: + return Vector2i(-1, -1) + var half_grid := Vector2( + float(grid_size.x - 1) * 0.5, + float(grid_size.y - 1) * 0.5, + ) + return Vector2i( + roundi(position.x / catalog.chunk_size + half_grid.x), + roundi(position.z / catalog.chunk_size + half_grid.y), + ) + + func get_generated_chunks_root() -> Node3D: return _generated_chunks diff --git a/world/interactables/decor_shop_world.tscn b/world/interactables/decor_shop_world.tscn index 6b735e2..7f94ec4 100644 --- a/world/interactables/decor_shop_world.tscn +++ b/world/interactables/decor_shop_world.tscn @@ -6,19 +6,19 @@ [sub_resource type="SphereShape3D" id="InteractionShape"] resource_local_to_scene = true -radius = 3.0 +radius = 2.1 [node name="DecorShopWorld" type="Node3D"] [node name="Shopkeeper" parent="." instance=ExtResource("2_character")] script = ExtResource("3_display") species_id = "round" -fur_color_id = "orange" -ears_id = "pointy_short" -tail_id = "cat" -eyes_id = "simple_shine" -nose_id = "dog_round" -mouth_id = "three" +fur_color_id = "brown" +ears_id = "bear" +tail_id = "bear" +eyes_id = "tired" +nose_id = "triangle_pink" +mouth_id = "simple_smile" head_look_enabled = true [node name="AnimationPlayer" parent="Shopkeeper"] diff --git a/world/interactables/fishing_shop_world.tscn b/world/interactables/fishing_shop_world.tscn index 760f3b6..040b558 100644 --- a/world/interactables/fishing_shop_world.tscn +++ b/world/interactables/fishing_shop_world.tscn @@ -6,7 +6,7 @@ [sub_resource type="SphereShape3D" id="InteractionShape"] resource_local_to_scene = true -radius = 3.0 +radius = 2.1 [node name="FishingShopWorld" type="Node3D"] diff --git a/world/interactables/rv_upgrade_shop_world.tscn b/world/interactables/rv_upgrade_shop_world.tscn new file mode 100644 index 0000000..9fd0ed2 --- /dev/null +++ b/world/interactables/rv_upgrade_shop_world.tscn @@ -0,0 +1,36 @@ +[gd_scene load_steps=5 format=3] + +[ext_resource type="Script" path="res://world/rv_upgrade_interaction.gd" id="1_shop"] +[ext_resource type="PackedScene" path="res://art/exported/characters/base/straywild_base_character.glb" id="2_character"] +[ext_resource type="Script" path="res://world/world_character_display.gd" id="3_display"] + +[sub_resource type="SphereShape3D" id="InteractionShape"] +resource_local_to_scene = true +radius = 2.1 + +[node name="RVUpgradeShopWorld" type="Node3D"] + +[node name="Shopkeeper" parent="." instance=ExtResource("2_character")] +script = ExtResource("3_display") +species_id = "pointy" +fur_color_id = "teal" +ears_id = "pointy_long" +tail_id = "fox" +eyes_id = "interested" +nose_id = "triangle_small" +mouth_id = "cheeky_smile" +head_look_enabled = true + +[node name="AnimationPlayer" parent="Shopkeeper"] +autoplay = "idle" + +[node name="InteractionArea" type="Area3D" parent="."] +unique_name_in_owner = true +position = Vector3(0, 1, -0.3) +collision_layer = 0 +collision_mask = 2 +script = ExtResource("1_shop") + +[node name="InteractionShape" type="CollisionShape3D" parent="InteractionArea"] +shape = SubResource("InteractionShape") +vertical_icon_alignment = 1 diff --git a/world/regions/starter_island_region.gd b/world/regions/starter_island_region.gd index b418292..c690e4b 100644 --- a/world/regions/starter_island_region.gd +++ b/world/regions/starter_island_region.gd @@ -11,6 +11,9 @@ const PlayerStorageInteractionType = preload( const DecorShopInteractionType = preload( "res://world/decor_shop_interaction.gd" ) +const RVUpgradeInteractionType = preload( + "res://world/rv_upgrade_interaction.gd" +) const FOLIAGE_WIND_SHADER: Shader = preload( "res://world/materials/foliage_wind.gdshader" ) @@ -56,6 +59,10 @@ var player_storage_path: NodePath = ( var decor_shop_path: NodePath = ( ^"Interactables/DecorShopWorld/InteractionArea" ) +@export_node_path("Area3D") +var rv_upgrade_shop_path: NodePath = ( + ^"Interactables/RVUpgradeShopWorld/InteractionArea" +) @export_group("Terrain Collision") # The imported GLB is the collision authority. Rebuild once per region load so # newly authored terrain and props cannot retain a stale saved fallback shape. @@ -95,6 +102,10 @@ func get_decor_shop() -> DecorShopInteractionType: return get_node_or_null(decor_shop_path) as DecorShopInteractionType +func get_rv_upgrade_shop() -> RVUpgradeInteractionType: + return get_node_or_null(rv_upgrade_shop_path) as RVUpgradeInteractionType + + func get_saltwater_shoreline_mesh() -> MeshInstance3D: return get_node_or_null(^"ShorelineRibbons/Ocean") as MeshInstance3D @@ -150,6 +161,7 @@ func get_spawn_surface_triangles( material_names: Array[StringName], minimum_global_y: float, minimum_up_dot: float = 0.6, + maximum_global_y: float = 100.0, ) -> Array[PackedVector3Array]: var triangles: Array[PackedVector3Array] = [] if material_names.is_empty(): @@ -188,6 +200,7 @@ func get_spawn_surface_triangles( vertices[vertex_index + 2], minimum_global_y, minimum_up_dot, + maximum_global_y, ) else: for index_offset: int in range(0, indices.size() - 2, 3): @@ -199,6 +212,7 @@ func get_spawn_surface_triangles( vertices[indices[index_offset + 2]], minimum_global_y, minimum_up_dot, + maximum_global_y, ) return triangles @@ -211,14 +225,14 @@ func _append_spawn_triangle( local_c: Vector3, minimum_global_y: float, minimum_up_dot: float, + maximum_global_y: float, ) -> void: var a: Vector3 = mesh_instance.to_global(local_a) var b: Vector3 = mesh_instance.to_global(local_b) var c: Vector3 = mesh_instance.to_global(local_c) if ( - a.y <= minimum_global_y - or b.y <= minimum_global_y - or c.y <= minimum_global_y + maxf(a.y, maxf(b.y, c.y)) <= minimum_global_y + or minf(a.y, minf(b.y, c.y)) >= maximum_global_y ): return var cross: Vector3 = (b - a).cross(c - a) diff --git a/world/regions/starter_island_region.tscn b/world/regions/starter_island_region.tscn index 9b95dfa..7682491 100644 --- a/world/regions/starter_island_region.tscn +++ b/world/regions/starter_island_region.tscn @@ -19,6 +19,7 @@ [ext_resource type="Script" path="res://world/digging/diggable_area_3d.gd" id="23_diggable_area"] [ext_resource type="Script" path="res://world/gathering/gatherable_anchor_set_3d.gd" id="24_gatherable_anchors"] [ext_resource type="PackedScene" path="res://world/interactables/decor_shop_world.tscn" id="25_decor_shop"] +[ext_resource type="PackedScene" path="res://world/interactables/rv_upgrade_shop_world.tscn" id="26_rv_upgrade"] [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_4e4k5"] data = PackedVector3Array(10.033899, 3.3913999, 3.3446, 13.3786, 3.3913999, 0, 13.3786, 3.3913999, 3.3446, 10.033899, 3.3913999, 3.3446, 10.033899, 3.3913999, 0, 13.3786, 3.3913999, 0, 6.6893, 3.3913999, 3.3446, 10.033899, 3.3913999, 0, 10.033899, 3.3913999, 3.3446, 6.6893, 3.3913999, 3.3446, 6.6893, 3.3913999, 0, 10.033899, 3.3913999, 0, 6.6893, 3.3913999, 0, 10.033899, 3.3913999, -3.3446, 10.033899, 3.3913999, 0, 6.6893, 3.3913999, 6.6893, 6.6893, 3.3913999, 3.3446, 10.033899, 3.3913999, 3.3446, 6.6893, 3.3913999, 6.6893, 10.033899, 3.3913999, 3.3446, 10.033899, 3.3913999, 6.6893, 3.3446, 3.3913999, 3.3446, 6.6893, 3.3913999, 0, 6.6893, 3.3913999, 3.3446, 6.6893, 3.3913999, 10.033899, 6.6893, 3.3913999, 6.6893, 10.033899, 3.3913999, 6.6893, 6.6893, 3.3913999, 10.033899, 10.033899, 3.3913999, 6.6893, 10.033899, 3.3913999, 10.033899, 3.3446, 3.3913999, 6.6893, 6.6893, 3.3913999, 3.3446, 6.6893, 3.3913999, 6.6893, 3.3446, 3.3913999, 6.6893, 3.3446, 3.3913999, 3.3446, 6.6893, 3.3913999, 3.3446, 3.3446, 3.3913999, 10.033899, 6.6893, 3.3913999, 6.6893, 6.6893, 3.3913999, 10.033899, 3.3446, 3.3913999, 10.033899, 3.3446, 3.3913999, 6.6893, 6.6893, 3.3913999, 6.6893, 0, 3.3913999, 6.6893, 3.3446, 3.3913999, 3.3446, 3.3446, 3.3913999, 6.6893, 0, 3.3913999, 6.6893, 0, 3.3913999, 3.3446, 3.3446, 3.3913999, 3.3446, 0, 3.3913999, 10.033899, 0, 3.3913999, 6.6893, 3.3446, 3.3913999, 6.6893, 0, 3.3913999, 10.033899, 3.3446, 3.3913999, 6.6893, 3.3446, 3.3913999, 10.033899, -3.3446, 3.3913999, 13.3786, -3.3446, 3.3913999, 10.033899, 0, 3.3913999, 10.033899, -3.3446, 3.3913999, 13.3786, 0, 3.3913999, 10.033899, 0, 3.3913999, 13.3786, 0, 3.3913999, 13.3786, 0, 3.3913999, 10.033899, 3.3446, 3.3913999, 10.033899, 0, 3.3913999, 13.3786, 3.3446, 3.3913999, 10.033899, 3.3446, 3.3913999, 13.3786, 3.3446, 3.3913999, 13.3786, 3.3446, 3.3913999, 10.033899, 6.6893, 3.3913999, 10.033899, 3.3446, 3.3913999, 13.3786, 6.6893, 3.3913999, 10.033899, 6.6893, 3.3913999, 13.3786, 3.9148, 3.3913999, 16.514599, 3.3446, 3.3913999, 13.3786, 6.6893, 3.3913999, 13.3786, 3.3446, 3.3913999, 13.3786, 3.9148, 3.3913999, 16.514599, 3.6399, 3.3913999, 16.2405, 3.9148, 3.3913999, 16.514599, 6.6893, 3.3913999, 13.3786, 6.6893, 3.3913999, 16.7232, 6.6893, 3.3913999, 16.7232, 6.6949, 3.3913999, 18.9914, 6.6893, 3.3913999, 18.9861, 6.6949, 3.3913999, 18.9914, 6.6893, 3.3913999, 16.7232, 10.3743, 3.3913999, 16.7232, 6.6949, 3.3913999, 18.9914, 10.3743, 3.3913999, 16.7232, 9.1275, 3.3913999, 18.830599, 10.033899, 3.3913999, -10.033899, 13.3786, 3.3913999, -13.3786, 13.3786, 3.3913999, -10.033899, 13.3786, 3.3913999, -13.3786, 16.7232, 3.3913999, -10.033899, 13.3786, 3.3913999, -10.033899, 16.7232, 3.3913999, -10.033899, 19.798899, 3.3913999, -13.1096, 19.798899, 3.3913999, -10.033899, 16.7232, 3.3913999, -10.033899, 16.7232, 3.3913999, -13.1096, 19.798899, 3.3913999, -13.1096, 16.7232, 3.3913999, -10.033899, 16.4543, 3.3913999, -13.3786, 16.7232, 3.3913999, -13.1096, 16.7232, 3.3913999, -10.033899, 13.3786, 3.3913999, -13.3786, 16.4543, 3.3913999, -13.3786, 13.3786, 3.3913999, -6.6893, 13.3786, 3.3913999, -10.033899, 16.7232, 3.3913999, -10.033899, 13.3786, 3.3913999, -6.6893, 16.7232, 3.3913999, -10.033899, 16.7232, 3.3913999, -6.6893, 10.033899, 3.3913999, -6.6893, 13.3786, 3.3913999, -10.033899, 13.3786, 3.3913999, -6.6893, 10.033899, 3.3913999, -6.6893, 10.033899, 3.3913999, -10.033899, 13.3786, 3.3913999, -10.033899, 16.4543, 3.3913999, -13.3786, 16.495699, 3.3913999, -16.459, 16.495699, 3.3913999, -13.42, 16.4543, 3.3913999, -13.3786, 12.738999, 3.3913999, -15.894899, 16.495699, 3.3913999, -16.459, 12.738999, 3.3913999, -15.894899, 16.4543, 3.3913999, -13.3786, 13.3786, 3.3913999, -13.3786, 13.3786, 3.3913999, -13.3786, 12.460899, 3.3913999, -16.1674, 12.738999, 3.3913999, -15.894899, 13.3786, 3.3913999, -13.3786, 10.033899, 3.3913999, -16.7232, 12.460899, 3.3913999, -16.1674, 10.033899, 3.3913999, -10.033899, 10.033899, 3.3913999, -13.3786, 13.3786, 3.3913999, -13.3786, 10.033899, 3.3913999, -16.7232, 13.3786, 3.3913999, -13.3786, 10.033899, 3.3913999, -13.3786, 6.6893, 3.3913999, -13.3786, 10.033899, 3.3913999, -16.7232, 10.033899, 3.3913999, -13.3786, 6.6893, 3.3913999, -13.3786, 6.6893, 3.3913999, -16.7232, 10.033899, 3.3913999, -16.7232, 6.6893, 3.3913999, -10.033899, 10.033899, 3.3913999, -13.3786, 10.033899, 3.3913999, -10.033899, 6.6893, 3.3913999, -10.033899, 6.6893, 3.3913999, -13.3786, 10.033899, 3.3913999, -13.3786, 6.6893, 3.3913999, -6.6893, 6.6893, 3.3913999, -10.033899, 10.033899, 3.3913999, -10.033899, 6.6893, 3.3913999, -6.6893, 10.033899, 3.3913999, -10.033899, 10.033899, 3.3913999, -6.6893, 4.0225, 3.3913999, -8.7143, 6.6893, 3.3913999, -13.3786, 6.6893, 3.3913999, -10.033899, 4.6821, 3.3913999, -13.3786, 6.6893, 3.3913999, -16.7232, 6.6893, 3.3913999, -13.3786, 4.0225, 3.3913999, -8.7143, 4.6821, 3.3913999, -13.3786, 6.6893, 3.3913999, -13.3786, 4.6821, 3.3913999, -13.3786, 3.8388, 3.3913999, -16.7232, 6.6893, 3.3913999, -16.7232, 4.6821, 3.3913999, -13.3786, 4.0225, 3.3913999, -8.7143, 4.6821, 3.3913999, -13.3786, 4.6821, 3.3913999, -13.3786, 4.6821, 3.3913999, -13.3786, 4.4131, 3.2091, -13.357699, 4.6821, 3.3913999, -13.3786, 4.4131, 3.2091, -13.357699, 4.4131, 3.2091, -13.357699, 3.3446, 3.3913999, -6.6893, 4.0225, 3.3913999, -8.7143, 6.6893, 3.3913999, -10.033899, 3.3446, 3.3913999, -6.6893, 6.6893, 3.3913999, -10.033899, 6.6893, 3.3913999, -6.6893, 0, 3.3913999, -6.6893, 4.0225, 3.3913999, -8.7143, 3.3446, 3.3913999, -6.6893, 0, 3.3913999, -6.6893, 0, 3.3913999, -8.7143, 4.0225, 3.3913999, -8.7143, 3.3446, 3.3913999, -3.3446, 3.3446, 3.3913999, -6.6893, 6.6893, 3.3913999, -6.6893, 0, 3.3913999, -6.6893, -3.9101999, 3.3913999, -9.8592, 0, 3.3913999, -8.7143, 0, 3.3913999, -8.7143, -3.9101999, 3.3913999, -9.8592, 0, 3.3913999, -8.7143, 0, 3.3913999, -3.3446, 0, 3.3913999, -6.6893, 3.3446, 3.3913999, -6.6893, 0, 3.3913999, -3.3446, 3.3446, 3.3913999, -6.6893, 3.3446, 3.3913999, -3.3446, -3.6378, 3.3913999, -2.0792, 0, 3.3913999, -6.6893, 0, 3.3913999, -3.3446, -2.9566998, 3.3913999, 0, -3.6378, 3.3913999, -2.0792, 0, 3.3913999, -3.3446, -3.6378, 3.3913999, -2.0792, -3.3446, 3.3913999, -6.6893, 0, 3.3913999, -6.6893, -3.9101999, 3.3913999, -9.8592, 0, 3.3913999, -6.6893, -3.3446, 3.3913999, -6.6893, -6.6893, 3.3913999, -3.7326, -3.3446, 3.3913999, -6.6893, -3.6378, 3.3913999, -2.0792, -2.9566998, 3.3913999, 0, 0, 3.3913999, -3.3446, 0, 3.3913999, 0, 0, 3.3913999, 0, 0, 3.3913999, -3.3446, 3.3446, 3.3913999, -3.3446, -2.9566998, 3.3913999, 3.3446, -2.9566998, 3.3913999, 0, 0, 3.3913999, 0, -2.9566998, 3.3913999, 3.3446, 0, 3.3913999, 0, 0, 3.3913999, 3.3446, -6.6893, 3.3913999, -3.7326, -6.6893, 3.3913999, -6.6893, -3.3446, 3.3913999, -6.6893, -6.6893, 3.3913999, -6.6893, -3.9101999, 3.3913999, -9.8592, -3.3446, 3.3913999, -6.6893, -10.033899, 3.3913999, -3.7326, -6.6893, 3.3913999, -6.6893, -6.6893, 3.3913999, -3.7326, 0, 3.3913999, 3.3446, 0, 3.3913999, 0, 3.3446, 3.3913999, 0, 0, 3.3913999, 0, 3.3446, 3.3913999, -3.3446, 3.3446, 3.3913999, 0, 0, 3.3913999, 3.3446, 3.3446, 3.3913999, 0, 3.3446, 3.3913999, 3.3446, 3.3446, 3.3913999, 3.3446, 3.3446, 3.3913999, 0, 6.6893, 3.3913999, 0, 3.3446, 3.3913999, 0, 3.3446, 3.3913999, -3.3446, 6.6893, 3.3913999, -3.3446, 3.3446, 3.3913999, 0, 6.6893, 3.3913999, -3.3446, 6.6893, 3.3913999, 0, 3.3446, 3.3913999, -3.3446, 6.6893, 3.3913999, -6.6893, 6.6893, 3.3913999, -3.3446, 6.6893, 3.3913999, 0, 6.6893, 3.3913999, -3.3446, 10.033899, 3.3913999, -3.3446, 6.6893, 3.3913999, -3.3446, 6.6893, 3.3913999, -6.6893, 10.033899, 3.3913999, -6.6893, 6.6893, 3.3913999, -3.3446, 10.033899, 3.3913999, -6.6893, 10.033899, 3.3913999, -3.3446, -6.6893, 3.3913999, -6.6893, -6.6893, 3.3913999, -10.033899, -3.9101999, 3.3913999, -9.8592, -6.6893, 3.3913999, -10.033899, -3.9101999, 3.3913999, -12.538199, -3.9101999, 3.3913999, -9.8592, -10.033899, 3.3913999, -3.7326, -10.033899, 3.3913999, -6.6893, -6.6893, 3.3913999, -6.6893, -10.033899, 3.3913999, -6.6893, -6.6893, 3.3913999, -10.033899, -6.6893, 3.3913999, -6.6893, -13.3786, 3.3913999, -3.7326, -10.033899, 3.3913999, -6.6893, -10.033899, 3.3913999, -3.7326, -6.6893, 3.3913999, -10.033899, -6.6893, 3.3913999, -12.538199, -3.9101999, 3.3913999, -12.538199, -13.3786, 3.3913999, -3.7326, -13.3786, 3.3913999, -6.6893, -10.033899, 3.3913999, -6.6893, -16.191599, 3.3913999, -3.0971, -13.3786, 3.3913999, -6.6893, -13.3786, 3.3913999, -3.7326, -10.033899, 3.3913999, -6.6893, -10.033899, 3.3913999, -10.033899, -6.6893, 3.3913999, -10.033899, -13.3786, 3.3913999, -6.6893, -10.033899, 3.3913999, -10.033899, -10.033899, 3.3913999, -6.6893, -16.191599, 3.3913999, -3.0971, -16.7232, 3.3913999, -6.6893, -13.3786, 3.3913999, -6.6893, -13.3786, 3.3913999, -6.6893, -13.3786, 3.3913999, -10.033899, -10.033899, 3.3913999, -10.033899, -19.7545, 3.3913999, -2.7851999, -16.7232, 3.3913999, -6.6893, -16.191599, 3.3913999, -3.0971, -19.7545, 3.3913999, -2.7851999, -19.280699, 3.3913999, -6.6893, -16.7232, 3.3913999, -6.6893, -17.1112, 3.3913999, 0, -19.7545, 3.3913999, -2.7851999, -16.191599, 3.3913999, -3.0971, -17.1112, 3.3913999, 0, -19.9511, 3.3913999, -2.5834, -19.7545, 3.3913999, -2.7851999, -19.9511, 3.3913999, -2.5834, -17.1112, 3.3913999, 0, -20.0679, 3.3913999, 0, -20.0679, 3.3913999, 3.3446, -20.0679, 3.3913999, 0, -17.1112, 3.3913999, 0, -20.0679, 3.3913999, 3.3446, -17.1112, 3.3913999, 0, -17.1112, 3.3913999, 3.3044999, -13.3786, 3.3913999, -10.033899, -10.699599, 3.3913999, -13.175799, -10.033899, 3.3913999, -10.033899, -10.699599, 3.3913999, -13.175799, -6.6893, 3.3913999, -10.033899, -10.033899, 3.3913999, -10.033899, -13.3786, 3.3913999, -10.033899, -13.3786, 3.3913999, -13.3786, -10.699599, 3.3913999, -13.175799, -6.6893, 3.3913999, -10.033899, -10.699599, 3.3913999, -13.175799, -6.6893, 3.3913999, -12.538199, -13.3786, 3.3913999, -13.3786, -10.699599, 3.3913999, -15.835, -10.699599, 3.3913999, -13.175799, -13.3786, 3.3913999, -13.3786, -13.3786, 3.3913999, -15.4154, -10.699599, 3.3913999, -15.835, -6.6893, 3.3913999, -12.538199, -10.699599, 3.3913999, -13.175799, -6.6893, 3.3913999, -12.538199, -6.6893, 3.3913999, -12.538199, -6.6893, 3.3913999, -12.538199, -6.6893, 3.175, -12.867, -6.6893, 3.3913999, -12.538199, -6.6893, 3.175, -12.867, -6.6893, 3.175, -12.867, -20.0679, 3.3913999, 6.6893, -20.0679, 3.3913999, 3.3446, -17.1112, 3.3913999, 3.3044999, -22.5541, 3.3913999, 9.2058, -22.3151, 3.3913999, 6.6893, -20.0679, 3.3913999, 6.6893, -22.5541, 3.3913999, 9.2058, -20.0679, 3.3913999, 6.6893, -20.0679, 3.3913999, 9.167399, -20.0679, 3.3913999, 9.167399, -20.0679, 3.3913999, 6.6893, -16.7232, 3.3913999, 6.6893, -20.0679, 3.3913999, 6.6893, -17.1112, 3.3913999, 3.3044999, -16.7232, 3.3913999, 6.6893, -20.0679, 3.3913999, 9.167399, -16.7232, 3.3913999, 6.6893, -16.285099, 3.3913999, 9.5865, -16.7232, 3.3913999, 6.6893, -16.053999, 3.3913999, 9.8082, -16.285099, 3.3913999, 9.5865, -16.053999, 3.3913999, 9.8082, -16.7232, 3.3913999, 6.6893, -13.1355, 3.3913999, 6.7549996, -17.1112, 3.3913999, 3.3044999, -13.1355, 3.3913999, 6.7549996, -16.7232, 3.3913999, 6.6893, -16.053999, 3.3913999, 9.8082, -13.1355, 3.3913999, 6.7549996, -13.3786, 3.3913999, 10.033899, -13.1355, 3.3913999, 6.7549996, -17.1112, 3.3913999, 3.3044999, -14.877199, 3.3913999, 4.6657, -14.877199, 3.3913999, 4.6657, -17.1112, 3.3913999, 3.3044999, -15.582299, 3.3913999, 4.0366, -13.1355, 3.3913999, 6.7549996, -14.877199, 3.3913999, 4.6657, -14.0948, 3.3913999, 5.5073, -13.3786, 3.3913999, 10.033899, -13.1355, 3.3913999, 6.7549996, -10.033899, 3.3913999, 7.0772, -13.3786, 3.3913999, 10.033899, -10.033899, 3.3913999, 7.0772, -10.033899, 3.3913999, 10.033899, -10.033899, 3.3913999, 10.033899, -10.033899, 3.3913999, 7.0772, -6.6893, 3.3913999, 7.0772, -10.033899, 3.3913999, 10.033899, -6.6893, 3.3913999, 7.0772, -6.6893, 3.3913999, 10.033899, -10.033899, 3.0033998, 6.6893, -13.1355, 3.3913999, 6.7549996, -12.747499, 3.0033998, 6.3671, -10.033899, 3.0033998, 6.6893, -10.033899, 3.3913999, 7.0772, -13.1355, 3.3913999, 6.7549996, -2.5674999, 2.4164, 7.6215, -6.6893, 3.3913999, 7.0772, -6.6893, 3.0033998, 6.6893, -2.5674999, 2.4164, 7.6215, -2.1794999, 2.8042998, 8.009399, -6.6893, 3.3913999, 7.0772, -12.747499, 3.0033998, 6.3671, -14.0948, 3.3913999, 5.5073, -13.6942, 3.0033998, 5.1798, -12.747499, 3.0033998, 6.3671, -13.1355, 3.3913999, 6.7549996, -14.0948, 3.3913999, 5.5073, -6.6893, 3.0033998, 6.6893, -10.033899, 3.3913999, 7.0772, -10.033899, 3.0033998, 6.6893, -6.6893, 3.0033998, 6.6893, -6.6893, 3.3913999, 7.0772, -10.033899, 3.3913999, 7.0772, -16.7232, 3.0033998, 0, -16.191599, 3.3913999, -3.0971, -15.8036995, 3.0033998, -2.7091, -16.7232, 3.0033998, 0, -17.1112, 3.3913999, 0, -16.191599, 3.3913999, -3.0971, -13.3786, 3.3913999, -3.7326, -15.8036995, 3.0033998, -2.7091, -16.191599, 3.3913999, -3.0971, -13.3786, 3.3913999, -3.7326, -13.3786, 3.0033998, -3.3446, -15.8036995, 3.0033998, -2.7091, -2.9566998, 3.3913999, 0, -4.0257998, 3.0033998, -1.6911999, -3.6378, 3.3913999, -2.0792, -2.9566998, 3.3913999, 0, -3.3446, 3.0033998, 0, -4.0257998, 3.0033998, -1.6911999, -3.6378, 3.3913999, -2.0792, -6.6893, 3.0033998, -3.3446, -6.6893, 3.3913999, -3.7326, -3.6378, 3.3913999, -2.0792, -4.0257998, 3.0033998, -1.6911999, -6.6893, 3.0033998, -3.3446, -10.033899, 3.3913999, -3.7326, -13.3786, 3.0033998, -3.3446, -13.3786, 3.3913999, -3.7326, -10.033899, 3.3913999, -3.7326, -10.033899, 3.0033998, -3.3446, -13.3786, 3.0033998, -3.3446, -6.6893, 3.3913999, -3.7326, -10.033899, 3.0033998, -3.3446, -10.033899, 3.3913999, -3.7326, -6.6893, 3.3913999, -3.7326, -6.6893, 3.0033998, -3.3446, -10.033899, 3.0033998, -3.3446, -16.7232, 3.0033998, 2.9166, -17.1112, 3.3913999, 0, -16.7232, 3.0033998, 0, -16.7232, 3.0033998, 2.9166, -17.1112, 3.3913999, 3.3044999, -17.1112, 3.3913999, 0, -14.4892, 3.0033998, 4.2778, -15.582299, 3.3913999, 4.0366, -15.372, 3.0033998, 3.6132998, -14.4892, 3.0033998, 4.2778, -14.877199, 3.3913999, 4.6657, -15.582299, 3.3913999, 4.0366, -2.9566998, 3.3913999, 3.3446, -3.3446, 3.0033998, 0, -2.9566998, 3.3913999, 0, -2.9566998, 3.3913999, 3.3446, -3.3446, 3.0033998, 3.3446, -3.3446, 3.0033998, 0, -2.1794999, 2.8042998, 8.009399, -2.1397, 3.0033998, 5.1795, -1.7832999, 3.3913999, 5.2162, -2.1794999, 2.8042998, 8.009399, -2.5674999, 2.4164, 7.6215, -2.1397, 3.0033998, 5.1795, -6.6893, 3.3913999, 10.033899, -2.1794999, 2.8042998, 8.009399, -3.3446, 3.3913999, 10.033899, -6.6893, 3.3913999, 10.033899, -6.6893, 3.3913999, 7.0772, -2.1794999, 2.8042998, 8.009399, -1.7832999, 3.3913999, 5.2162, 0, 3.3913999, 6.6893, -2.1794999, 2.8042998, 8.009399, 0, 3.3913999, 6.6893, -1.7832999, 3.3913999, 5.2162, -2.9566998, 3.3913999, 3.3446, 0, 3.3913999, 6.6893, -2.9566998, 3.3913999, 3.3446, 0, 3.3913999, 3.3446, -3.3446, 3.3913999, 10.033899, 0, 3.3913999, 6.6893, 0, 3.3913999, 10.033899, -3.3446, 3.3913999, 10.033899, -2.1794999, 2.8042998, 8.009399, 0, 3.3913999, 6.6893, -2.1397, 3.0033998, 5.1795, -2.9566998, 3.3913999, 3.3446, -1.7832999, 3.3913999, 5.2162, -2.1397, 3.0033998, 5.1795, -3.3446, 3.0033998, 3.3446, -2.9566998, 3.3913999, 3.3446, -14.0948, 3.3913999, 5.5073, -14.4892, 3.0033998, 4.2778, -13.6942, 3.0033998, 5.1798, -14.0948, 3.3913999, 5.5073, -14.877199, 3.3913999, 4.6657, -14.4892, 3.0033998, 4.2778, -15.582299, 3.3913999, 4.0366, -16.7232, 3.0033998, 2.9166, -15.372, 3.0033998, 3.6132998, -15.582299, 3.3913999, 4.0366, -17.1112, 3.3913999, 3.3044999, -16.7232, 3.0033998, 2.9166, 20.198, 3.1490998, -10.033899, 19.798899, 3.3913999, -13.1096, 20.1539, 3.1299, -13.399799, 20.198, 3.1490998, -10.033899, 19.798899, 3.3913999, -10.033899, 19.798899, 3.3913999, -13.1096, 20.1539, 3.1299, -13.399799, 16.7232, 3.3913999, -13.1096, 16.8204, 3.138, -13.447599, 20.1539, 3.1299, -13.399799, 19.798899, 3.3913999, -13.1096, 16.7232, 3.3913999, -13.1096, 16.756899, 3.1650999, -16.7286, 12.738999, 3.3913999, -15.894899, 12.7471, 3.1766999, -16.1988, 16.756899, 3.1650999, -16.7286, 16.495699, 3.3913999, -16.459, 12.738999, 3.3913999, -15.894899, 16.8051, 3.1778, -13.479, 16.495699, 3.3913999, -16.459, 16.756899, 3.1650999, -16.7286, 16.8051, 3.1778, -13.479, 16.495699, 3.3913999, -13.42, 16.495699, 3.3913999, -16.459, 16.4543, 3.3913999, -13.3786, 16.8204, 3.138, -13.447599, 16.7232, 3.3913999, -13.1096, 16.8204, 3.138, -13.447599, 16.4543, 3.3913999, -13.3786, 16.495699, 3.3913999, -13.42, 16.8204, 3.138, -13.447599, 16.495699, 3.3913999, -13.42, 16.8051, 3.1778, -13.479, 10.033899, 3.0523999, -19.0294, 6.6893, 3.2782998, -18.727999, 6.6893, 3.0440998, -19.036999, 10.033899, 3.0523999, -19.0294, 10.033899, 3.2784998, -18.6997, 6.6893, 3.2782998, -18.727999, 12.723599, 2.9213, -19.2902, 10.033899, 3.2784998, -18.6997, 10.033899, 3.0523999, -19.0294, 12.723599, 2.9213, -19.2902, 12.446099, 3.1699998, -18.9401, 10.033899, 3.2784998, -18.6997, 12.446099, 3.1699998, -18.9401, 12.747, 3.1771, -16.1991, 12.460899, 3.3913999, -16.1674, 12.446099, 3.1699998, -18.9401, 12.723599, 2.9213, -19.2902, 12.747, 3.1771, -16.1991, 12.460899, 3.3913999, -16.1674, 10.033899, 3.2784998, -18.6997, 12.446099, 3.1699998, -18.9401, 10.033899, 3.3913999, -16.7232, 10.033899, 3.2784998, -18.6997, 12.460899, 3.3913999, -16.1674, 10.033899, 3.3913999, -16.7232, 12.460899, 3.3913999, -16.1674, 12.460899, 3.3913999, -16.1674, 6.6893, 3.3913999, -16.7232, 10.033899, 3.2784998, -18.6997, 10.033899, 3.3913999, -16.7232, 6.6893, 3.3913999, -16.7232, 6.6893, 3.2782998, -18.727999, 10.033899, 3.2784998, -18.6997, 12.738999, 3.3913999, -15.894899, 12.747, 3.1771, -16.1991, 12.7471, 3.1766999, -16.1988, 12.738999, 3.3913999, -15.894899, 12.460899, 3.3913999, -16.1674, 12.747, 3.1771, -16.1991, 12.460899, 3.3913999, -16.1674, 12.738999, 3.3913999, -15.894899, 12.460899, 3.3913999, -16.1674, 3.8388, 3.3913999, -16.7232, 4.4783998, 3.1067, -18.2665, 4.6443, 3.2897, -17.9799, 3.8388, 3.3913999, -16.7232, 3.5895, 3.2033, -16.7232, 4.4783998, 3.1067, -18.2665, 4.6821, 3.3913999, -13.3786, 3.5895, 3.2033, -16.7232, 3.8388, 3.3913999, -16.7232, 4.6821, 3.3913999, -13.3786, 4.4131, 3.2091, -13.357699, 3.5895, 3.2033, -16.7232, 6.6640997, 3.0702, -19.018099, 4.6443, 3.2897, -17.9799, 4.4783998, 3.1067, -18.2665, 6.6640997, 3.0702, -19.018099, 6.6705, 3.2772, -18.741, 4.6443, 3.2897, -17.9799, 4.6443, 3.2897, -17.9799, 6.6893, 3.3913999, -16.7232, 3.8388, 3.3913999, -16.7232, 6.6893, 3.3913999, -16.7232, 4.6443, 3.2897, -17.9799, 6.6705, 3.2772, -18.741, 6.6893, 3.3913999, -16.7232, 6.6705, 3.2772, -18.741, 6.6893, 3.2782998, -18.727999, 6.6893, 3.2782998, -18.727999, 6.6640997, 3.0702, -19.018099, 6.6893, 3.0440998, -19.036999, 6.6893, 3.2782998, -18.727999, 6.6705, 3.2772, -18.741, 6.6640997, 3.0702, -19.018099, 3.7529, 3.1712, -9.0494995, 0, 3.3913999, -8.7143, 0, 3.179, -9.0652, 3.7529, 3.1712, -9.0494995, 4.0225, 3.3913999, -8.7143, 0, 3.3913999, -8.7143, 4.0225, 3.3913999, -8.7143, 4.4131, 3.2091, -13.357699, 4.6821, 3.3913999, -13.3786, 4.0225, 3.3913999, -8.7143, 3.7529, 3.1712, -9.0494995, 4.4131, 3.2091, -13.357699, -3.6538, 3.1585999, -12.813399, -6.6893, 3.3913999, -12.538199, -6.6893, 3.175, -12.867, -3.6538, 3.1585999, -12.813399, -3.9101999, 3.3913999, -12.538199, -6.6893, 3.3913999, -12.538199, -3.6076, 3.1676, -10.0696, -3.9101999, 3.3913999, -12.538199, -3.6538, 3.1585999, -12.813399, -3.6076, 3.1676, -10.0696, -3.9101999, 3.3913999, -9.8592, -3.9101999, 3.3913999, -12.538199, -0.0081, 3.1864998, -9.063499, -3.9101999, 3.3913999, -9.8592, -3.6076, 3.1676, -10.0696, -0.0081, 3.1864998, -9.063499, 0, 3.3913999, -8.7143, -3.9101999, 3.3913999, -9.8592, 0, 3.3913999, -8.7143, -0.0081, 3.1864998, -9.063499, 0, 3.179, -9.0652, 0, 3.3913999, -8.7143, 0, 3.3913999, -8.7143, -0.0081, 3.1864998, -9.063499, -10.4043, 3.1608999, -13.4295, -10.699599, 3.3913999, -15.835, -10.4319, 3.1557999, -16.1556, -10.4043, 3.1608999, -13.4295, -10.699599, 3.3913999, -13.175799, -10.699599, 3.3913999, -15.835, -10.4319, 3.1557999, -16.1556, -13.3786, 3.3913999, -15.4154, -13.3786, 3.1771998, -15.7625, -10.4319, 3.1557999, -16.1556, -10.699599, 3.3913999, -15.835, -13.3786, 3.3913999, -15.4154, -10.699599, 3.3913999, -13.175799, -6.6893, 3.175, -12.867, -6.6893, 3.3913999, -12.538199, -10.699599, 3.3913999, -13.175799, -10.4043, 3.1608999, -13.4295, -6.6893, 3.175, -12.867, -16.130499, 3.6227, -13.623799, -16.0243, 3.3509998, -15.752, -15.7941, 3.5591, -15.4641, -16.130499, 3.6227, -13.623799, -16.3753, 3.4225, -13.6277, -16.0243, 3.3509998, -15.752, -13.3911, 3.1892, -15.757, -15.7941, 3.5591, -15.4641, -16.0243, 3.3509998, -15.752, -13.3911, 3.1892, -15.757, -13.396, 3.3925, -15.4333, -15.7941, 3.5591, -15.4641, -15.7941, 3.5591, -15.4641, -13.3786, 3.3913999, -13.3786, -16.130499, 3.6227, -13.623799, -13.3786, 3.3913999, -13.3786, -15.7941, 3.5591, -15.4641, -13.396, 3.3925, -15.4333, -13.3786, 3.3913999, -13.3786, -13.396, 3.3925, -15.4333, -13.3786, 3.3913999, -15.4154, -13.3786, 3.3913999, -15.4154, -13.3911, 3.1892, -15.757, -13.3786, 3.1771998, -15.7625, -13.3786, 3.3913999, -15.4154, -13.396, 3.3925, -15.4333, -13.3911, 3.1892, -15.757, -16.3753, 3.4225, -13.6277, -16.1241, 3.3832998, -9.5097, -16.4131, 3.1706, -9.788899, -16.3753, 3.4225, -13.6277, -16.130499, 3.6227, -13.623799, -16.1241, 3.3832998, -9.5097, -16.7232, 3.3913999, -6.6893, -13.3786, 3.3913999, -10.033899, -13.3786, 3.3913999, -6.6893, -16.7232, 3.3913999, -6.6893, -16.1241, 3.3832998, -9.5097, -13.3786, 3.3913999, -10.033899, -16.1241, 3.3832998, -9.5097, -13.3786, 3.3913999, -13.3786, -13.3786, 3.3913999, -10.033899, -16.1241, 3.3832998, -9.5097, -16.130499, 3.6227, -13.623799, -13.3786, 3.3913999, -13.3786, -16.130499, 3.6227, -13.623799, -16.1241, 3.3832998, -9.5097, -16.130499, 3.6227, -13.623799, -16.130499, 3.6227, -13.623799, -16.3753, 3.4225, -13.6277, -16.3753, 3.4225, -13.6277, -16.130499, 3.6227, -13.623799, -16.130499, 3.6227, -13.623799, -16.3753, 3.4225, -13.6277, -19.7545, 3.3913999, -2.7851999, -19.515, 3.2122, -6.6893, -19.280699, 3.3913999, -6.6893, -19.7545, 3.3913999, -2.7851999, -19.9489, 3.2063, -2.8082, -19.515, 3.2122, -6.6893, -19.280699, 3.3913999, -6.6893, -19.6161, 3.2075999, -9.7116995, -19.3965, 3.3909, -9.5092, -19.280699, 3.3913999, -6.6893, -19.515, 3.2122, -6.6893, -19.6161, 3.2075999, -9.7116995, -19.280699, 3.3913999, -6.6893, -16.1241, 3.3832998, -9.5097, -16.7232, 3.3913999, -6.6893, -19.280699, 3.3913999, -6.6893, -19.3965, 3.3909, -9.5092, -16.1241, 3.3832998, -9.5097, -16.1241, 3.3832998, -9.5097, -19.6237, 3.1655998, -9.757899, -16.4131, 3.1706, -9.788899, -19.6237, 3.1655998, -9.757899, -16.1241, 3.3832998, -9.5097, -19.3965, 3.3909, -9.5092, -19.6237, 3.1655998, -9.757899, -19.3965, 3.3909, -9.5092, -19.6161, 3.2075999, -9.7116995, -22.8657, 3.4937, 3.3613, -23.3676, 3.4459999, 0.1372, -23.170399, 3.6251, 0.122999996, -22.8657, 3.4937, 3.3613, -23.0809, 3.3083, 3.3615, -23.3676, 3.4459999, 0.1372, -23.170399, 3.6251, 0.122999996, -23.390299, 3.3349998, -2.6938999, -23.192099, 3.5300999, -2.4668999, -23.170399, 3.6251, 0.122999996, -23.3676, 3.4459999, 0.1372, -23.390299, 3.3349998, -2.6938999, -23.192099, 3.5300999, -2.4668999, -19.9489, 3.2063, -2.8082, -19.9511, 3.3913999, -2.5834, -23.192099, 3.5300999, -2.4668999, -23.390299, 3.3349998, -2.6938999, -19.9489, 3.2063, -2.8082, -23.192099, 3.5300999, -2.4668999, -20.0679, 3.3913999, 0, -23.170399, 3.6251, 0.122999996, -20.0679, 3.3913999, 0, -23.192099, 3.5300999, -2.4668999, -19.9511, 3.3913999, -2.5834, -19.9511, 3.3913999, -2.5834, -23.192099, 3.5300999, -2.4668999, -19.9511, 3.3913999, -2.5834, -22.8657, 3.4937, 3.3613, -20.0679, 3.3913999, 0, -20.0679, 3.3913999, 3.3446, -22.8657, 3.4937, 3.3613, -23.170399, 3.6251, 0.122999996, -20.0679, 3.3913999, 0, -19.7545, 3.3913999, -2.7851999, -19.9489, 3.2063, -2.8082, -19.9489, 3.2063, -2.8082, -19.7545, 3.3913999, -2.7851999, -19.9511, 3.3913999, -2.5834, -19.9489, 3.2063, -2.8082, -19.9511, 3.3913999, -2.5834, -19.7545, 3.3913999, -2.7851999, -19.9511, 3.3913999, -2.5834, -23.0777, 3.3197, 3.3734, -22.3151, 3.3913999, 6.6893, -22.563799, 3.2219, 6.6893, -23.0777, 3.3197, 3.3734, -22.8764, 3.4937, 3.3741, -22.3151, 3.3913999, 6.6893, -22.8764, 3.4937, 3.3741, -20.0679, 3.3913999, 6.6893, -22.3151, 3.3913999, 6.6893, -20.0679, 3.3913999, 6.6893, -22.8764, 3.4937, 3.3741, -22.8657, 3.4937, 3.3613, -20.0679, 3.3913999, 6.6893, -22.8657, 3.4937, 3.3613, -20.0679, 3.3913999, 3.3446, -22.8657, 3.4937, 3.3613, -23.0777, 3.3197, 3.3734, -23.0809, 3.3083, 3.3615, -22.8657, 3.4937, 3.3613, -22.8764, 3.4937, 3.3741, -23.0777, 3.3197, 3.3734, -16.285099, 3.3913999, 9.5865, -20.0679, 3.1943, 9.407499, -20.0679, 3.3913999, 9.167399, -16.285099, 3.3913999, 9.5865, -16.2818, 3.1913998, 9.8056, -20.0679, 3.1943, 9.407499, -22.791399, 3.2124999, 9.4432, -20.0679, 3.3913999, 9.167399, -20.0679, 3.1943, 9.407499, -22.791399, 3.2124999, 9.4432, -22.5541, 3.3913999, 9.2058, -20.0679, 3.3913999, 9.167399, -22.5541, 3.3913999, 9.2058, -22.563799, 3.2219, 6.6893, -22.3151, 3.3913999, 6.6893, -22.5541, 3.3913999, 9.2058, -22.791399, 3.2124999, 9.4432, -22.563799, 3.2219, 6.6893, -22.791399, 3.2124999, 9.4432, -22.5541, 3.3913999, 9.2058, -22.791399, 3.2124999, 9.4432, -13.3786, 3.3922, 12.571899, -16.076399, 3.04, 12.735, -15.847199, 3.2614, 12.4973, -13.3786, 3.3922, 12.571899, -13.3786, 3.194, 12.8089, -16.076399, 3.04, 12.735, -15.847199, 3.2614, 12.4973, -16.2818, 3.1913998, 9.8056, -16.053999, 3.3913999, 9.8082, -15.847199, 3.2614, 12.4973, -16.076399, 3.04, 12.735, -16.2818, 3.1913998, 9.8056, -15.847199, 3.2614, 12.4973, -13.3786, 3.3913999, 10.033899, -13.3786, 3.3922, 12.571899, -15.847199, 3.2614, 12.4973, -16.053999, 3.3913999, 9.8082, -13.3786, 3.3913999, 10.033899, -16.053999, 3.3913999, 9.8082, -15.847199, 3.2614, 12.4973, -16.053999, 3.3913999, 9.8082, -16.285099, 3.3913999, 9.5865, -16.2818, 3.1913998, 9.8056, -16.2818, 3.1913998, 9.8056, -16.285099, 3.3913999, 9.5865, -16.053999, 3.3913999, 9.8082, -16.2818, 3.1913998, 9.8056, -16.053999, 3.3913999, 9.8082, -16.285099, 3.3913999, 9.5865, -16.053999, 3.3913999, 9.8082, -5.9742, 3.3994, 12.8817, -10.033899, 2.9384, 12.4537, -10.033899, 3.2142, 12.1061, -5.9742, 3.3994, 12.8817, -6.2748, 3.126, 13.122, -10.033899, 2.9384, 12.4537, -10.033899, 3.2142, 12.1061, -13.3786, 3.194, 12.8089, -13.3786, 3.3922, 12.571899, -10.033899, 3.2142, 12.1061, -10.033899, 2.9384, 12.4537, -13.3786, 3.194, 12.8089, -10.033899, 3.2142, 12.1061, -6.6893, 3.3913999, 10.033899, -5.9742, 3.3994, 12.8817, -10.033899, 3.2142, 12.1061, -10.033899, 3.3913999, 10.033899, -6.6893, 3.3913999, 10.033899, -13.3786, 3.3922, 12.571899, -10.033899, 3.3913999, 10.033899, -10.033899, 3.2142, 12.1061, -13.3786, 3.3922, 12.571899, -13.3786, 3.3913999, 10.033899, -10.033899, 3.3913999, 10.033899, -13.3786, 3.3913999, 10.033899, -13.3786, 3.3922, 12.571899, -13.3786, 3.3922, 12.571899, -5.9742, 3.3994, 12.8817, -3.3446, 3.3913999, 10.033899, -3.3446, 3.3913999, 13.3786, -5.9742, 3.3994, 12.8817, -6.6893, 3.3913999, 10.033899, -3.3446, 3.3913999, 10.033899, -13.3786, 3.3922, 12.571899, -13.3786, 3.194, 12.8089, -13.3786, 3.194, 12.8089, -13.3786, 3.3922, 12.571899, -13.3786, 3.3922, 12.571899, -13.3786, 3.194, 12.8089, 3.6399, 3.3913999, 16.2405, 0, 2.9636998, 16.0179, 0, 3.2243998, 15.7093, 3.6399, 3.3913999, 16.2405, 3.6425998, 3.1413999, 16.5127, 0, 2.9636998, 16.0179, 0, 3.2243998, 15.7093, -3.3446, 3.1497998, 15.914599, -3.3446, 3.3913999, 15.6011, 0, 3.2243998, 15.7093, 0, 2.9636998, 16.0179, -3.3446, 3.1497998, 15.914599, -6.2558, 3.1427999, 16.4098, -3.3446, 3.3913999, 15.6011, -3.3446, 3.1497998, 15.914599, -6.2558, 3.1427999, 16.4098, -5.9737997, 3.392, 16.087599, -3.3446, 3.3913999, 15.6011, -3.3446, 3.3913999, 15.6011, 0, 3.3913999, 13.3786, 0, 3.2243998, 15.7093, -3.3446, 3.3913999, 15.6011, -3.3446, 3.3913999, 13.3786, 0, 3.3913999, 13.3786, 0, 3.2243998, 15.7093, 3.3446, 3.3913999, 13.3786, 3.6399, 3.3913999, 16.2405, 0, 3.2243998, 15.7093, 0, 3.3913999, 13.3786, 3.3446, 3.3913999, 13.3786, -5.9737997, 3.392, 16.087599, -3.3446, 3.3913999, 13.3786, -3.3446, 3.3913999, 15.6011, -5.9737997, 3.392, 16.087599, -5.9742, 3.3994, 12.8817, -3.3446, 3.3913999, 13.3786, -6.2748, 3.1260998, 16.4145, -5.9737997, 3.392, 16.087599, -6.2558, 3.1427999, 16.4098, -5.9737997, 3.392, 16.087599, -6.2748, 3.1260998, 16.4145, -6.2748, 3.126, 13.122, -5.9737997, 3.392, 16.087599, -6.2748, 3.126, 13.122, -5.9742, 3.3994, 12.8817, 6.6893, 3.3913999, 18.9861, 3.9266999, 3.5967, 19.6223, 4.1273, 3.7335, 19.3804, 6.6893, 3.3913999, 18.9861, 6.6893, 3.2050998, 19.228699, 3.9266999, 3.5967, 19.6223, 4.1273, 3.7335, 19.3804, 3.6536, 3.2078998, 16.5669, 3.8651, 3.3981998, 16.5647, 4.1273, 3.7335, 19.3804, 3.9266999, 3.5967, 19.6223, 3.6536, 3.2078998, 16.5669, 3.8651, 3.3981998, 16.5647, 6.6893, 3.3913999, 18.9861, 4.1273, 3.7335, 19.3804, 6.6893, 3.3913999, 18.9861, 3.8651, 3.3981998, 16.5647, 3.9148, 3.3913999, 16.514599, 6.6893, 3.3913999, 18.9861, 3.9148, 3.3913999, 16.514599, 6.6893, 3.3913999, 16.7232, 3.9148, 3.3913999, 16.514599, 3.6425998, 3.1413999, 16.5127, 3.6399, 3.3913999, 16.2405, 3.6425998, 3.1413999, 16.5127, 3.9148, 3.3913999, 16.514599, 3.8651, 3.3981998, 16.5647, 3.6425998, 3.1413999, 16.5127, 3.8651, 3.3981998, 16.5647, 3.6536, 3.2078998, 16.5669, 9.3066, 3.2186, 19.0653, 10.3743, 3.3913999, 16.7232, 10.5913, 3.1985998, 16.7232, 9.3066, 3.2186, 19.0653, 9.1275, 3.3913999, 18.830599, 10.3743, 3.3913999, 16.7232, 9.1275, 3.3913999, 18.830599, 6.6991997, 3.2148, 19.2255, 6.6949, 3.3913999, 18.9914, 9.1275, 3.3913999, 18.830599, 9.3066, 3.2186, 19.0653, 6.6991997, 3.2148, 19.2255, 6.6893, 3.3913999, 18.9861, 6.6991997, 3.2148, 19.2255, 6.6893, 3.2050998, 19.228699, 6.6893, 3.3913999, 18.9861, 6.6949, 3.3913999, 18.9914, 6.6991997, 3.2148, 19.2255, 9.8131, 3.3546, 13.1979, 10.5893, 3.2117, 16.7106, 10.403999, 3.3911998, 16.6938, 9.8131, 3.3546, 13.1979, 10.0546, 3.1885, 13.4071, 10.5893, 3.2117, 16.7106, 6.6893, 3.3913999, 13.3786, 10.3743, 3.3913999, 16.7232, 6.6893, 3.3913999, 16.7232, 10.3743, 3.3913999, 16.7232, 6.6893, 3.3913999, 13.3786, 9.8131, 3.3546, 13.1979, 10.3743, 3.3913999, 16.7232, 9.8131, 3.3546, 13.1979, 10.403999, 3.3911998, 16.6938, 6.6893, 3.3913999, 13.3786, 10.033899, 3.3913999, 10.033899, 9.8131, 3.3546, 13.1979, 6.6893, 3.3913999, 13.3786, 6.6893, 3.3913999, 10.033899, 10.033899, 3.3913999, 10.033899, 10.3743, 3.3913999, 16.7232, 10.5893, 3.2117, 16.7106, 10.5913, 3.1985998, 16.7232, 10.3743, 3.3913999, 16.7232, 10.403999, 3.3911998, 16.6938, 10.5893, 3.2117, 16.7106, 13.1839, 3.2744, 6.6893, 13.5511, 3.1797, 6.6893, 13.4036, 3.0749998, 6.6893, 13.1839, 3.2744, 6.6893, 13.3786, 3.2744, 6.496, 13.5511, 3.1797, 6.6893, 12.9758, 3.2036, 10.033899, 13.1839, 3.2744, 6.6893, 13.4036, 3.0749998, 6.6893, 12.9758, 3.2036, 10.033899, 12.7325, 3.3913999, 10.033899, 13.1839, 3.2744, 6.6893, 13.2631, 3.5611, 13.4043, 12.7325, 3.3913999, 10.033899, 12.9758, 3.2036, 10.033899, 13.2631, 3.5611, 13.4043, 13.025499, 3.6999, 13.1985, 12.7325, 3.3913999, 10.033899, 10.033899, 3.3913999, 10.033899, 13.1839, 3.2744, 6.6893, 12.7325, 3.3913999, 10.033899, 10.033899, 3.3913999, 10.033899, 10.033899, 3.3913999, 6.6893, 13.1839, 3.2744, 6.6893, 9.8131, 3.3546, 13.1979, 12.7325, 3.3913999, 10.033899, 13.025499, 3.6999, 13.1985, 9.8131, 3.3546, 13.1979, 10.033899, 3.3913999, 10.033899, 12.7325, 3.3913999, 10.033899, 10.033899, 3.3913999, 3.3446, 13.1839, 3.2744, 6.6893, 10.033899, 3.3913999, 6.6893, 13.1839, 3.2744, 6.6893, 10.033899, 3.3913999, 3.3446, 13.3786, 3.3913999, 3.3446, 13.1839, 3.2744, 6.6893, 13.3786, 3.3913999, 3.3446, 13.3786, 3.2744, 6.496, 13.025499, 3.6999, 13.1985, 10.0546, 3.1885, 13.4071, 9.8131, 3.3546, 13.1979, 13.025499, 3.6999, 13.1985, 13.2631, 3.5611, 13.4043, 10.0546, 3.1885, 13.4071, 13.2631, 3.5611, 13.4043, 13.2631, 3.5611, 13.4043, 13.025499, 3.6999, 13.1985, 14.0489, 3.0042, -3.3446, 13.1206, 3.3028998, -3.3446, 13.3786, 3.3028998, -3.6027, 14.0489, 3.0042, -3.3446, 13.3786, 3.3028998, -3.0865998, 13.1206, 3.3028998, -3.3446, 16.7232, 3.1513, -3.602, 14.0489, 3.0042, -3.3446, 13.3786, 3.3028998, -3.6027, 16.7232, 3.1513, -3.602, 16.7127, 2.8734, -3.3446, 14.0489, 3.0042, -3.3446, 13.3786, 3.3028998, -3.6027, 16.7232, 3.3913999, -6.6893, 16.7232, 3.1513, -3.602, 13.3786, 3.3028998, -3.6027, 13.3786, 3.3913999, -6.6893, 16.7232, 3.3913999, -6.6893, 10.033899, 3.3913999, -6.6893, 13.1206, 3.3028998, -3.3446, 10.033899, 3.3913999, -3.3446, 13.1206, 3.3028998, -3.3446, 10.033899, 3.3913999, -6.6893, 13.3786, 3.3913999, -6.6893, 13.1206, 3.3028998, -3.3446, 13.3786, 3.3913999, -6.6893, 13.3786, 3.3028998, -3.6027, 20.0679, 0, 0, 14.0489, 3.0042, -3.3446, 20.961199, 0, -3.3446, 20.0679, 0, 3.3446, 14.0489, 3.0042, -3.3446, 20.0679, 0, 0, 14.0489, 3.0042, -3.3446, 13.3786, 3.3913999, 0, 13.3786, 3.3028998, -3.0865998, 14.0489, 3.0042, -3.3446, 13.3786, 3.2744, 6.496, 13.3786, 3.3913999, 0, 14.0489, 3.0042, -3.3446, 20.0679, 0, 3.3446, 13.3786, 3.2744, 6.496, 13.3786, 3.3913999, 0, 13.3786, 3.2744, 6.496, 13.3786, 3.3913999, 3.3446, 13.3786, 3.2744, 6.496, 20.0679, 0, 3.3446, 16.7232, 1.5715, 6.6893, 16.7232, 1.5715, 6.6893, 20.0679, 0, 3.3446, 20.0679, -0.124199994, 6.6893, 13.3786, 3.2744, 6.496, 16.7232, 1.5715, 6.6893, 13.5511, 3.1797, 6.6893, 10.033899, 3.3913999, -3.3446, 13.3786, 3.3913999, 0, 10.033899, 3.3913999, 0, 13.3786, 3.3913999, 0, 10.033899, 3.3913999, -3.3446, 13.1206, 3.3028998, -3.3446, 13.3786, 3.3913999, 0, 13.1206, 3.3028998, -3.3446, 13.3786, 3.3028998, -3.0865998, 19.831999, 3.3902998, -10.0008, 20.147, 3.0588999, -6.6893, 19.8322, 3.2891998, -6.6893, 19.831999, 3.3902998, -10.0008, 20.1796, 3.182, -9.995999, 20.147, 3.0588999, -6.6893, 19.8322, 3.2891998, -6.6893, 20.1349, 2.7974, -3.3783998, 19.8322, 3.0491, -3.602, 19.8322, 3.2891998, -6.6893, 20.147, 3.0588999, -6.6893, 20.1349, 2.7974, -3.3783998, 16.7232, 3.1513, -3.602, 19.8322, 3.2891998, -6.6893, 19.8322, 3.0491, -3.602, 16.7232, 3.1513, -3.602, 16.7232, 3.3913999, -6.6893, 19.8322, 3.2891998, -6.6893, 16.7232, 3.3913999, -10.033899, 19.8322, 3.2891998, -6.6893, 16.7232, 3.3913999, -6.6893, 19.8322, 3.2891998, -6.6893, 16.7232, 3.3913999, -10.033899, 19.798899, 3.3913999, -10.033899, 19.8322, 3.2891998, -6.6893, 19.798899, 3.3913999, -10.033899, 19.831999, 3.3902998, -10.0008, 20.198, 3.1490998, -10.033899, 19.831999, 3.3902998, -10.0008, 19.798899, 3.3913999, -10.033899, 20.198, 3.1490998, -10.033899, 20.1796, 3.182, -9.995999, 19.831999, 3.3902998, -10.0008, 20.144999, 2.7605999, -3.3446, 19.8322, 3.0491, -3.602, 20.1349, 2.7974, -3.3783998, 19.8322, 3.0491, -3.602, 20.144999, 2.7605999, -3.3446, 16.7127, 2.8734, -3.3446, 19.8322, 3.0491, -3.602, 16.7127, 2.8734, -3.3446, 16.7232, 3.1513, -3.602, 15.0508995, 0, 6.6893, 16.7232, 1.5715, 6.6893, 16.7232, 0, 6.6893, 16.7232, 0, 6.6893, 16.7232, 1.5715, 6.6893, 20.0679, -0.124199994, 6.6893, 15.0508995, 0, 6.6893, 13.5511, 3.1797, 6.6893, 16.7232, 1.5715, 6.6893, 15.0508995, 0, 6.6893, 13.4036, 3.0749998, 6.6893, 13.5511, 3.1797, 6.6893, 13.4036, 3.0749998, 6.6893, 15.0508995, 0, 6.6893, 13.8046, 0, 6.6893, -16.7232, 0.6137, 0, -15.7546, 0.6137, 3.5372, -16.7232, 0.6137, 2.9166, -15.7546, 0.6137, 3.5372, -16.7232, 0.6137, 0, -13.3786, 0.6137, 0, -16.7232, 0.6137, 0, -15.8036995, 0.6137, -2.7091, -13.3786, 0.6137, -3.3446, -16.7232, 0.6137, 0, -13.3786, 0.6137, -3.3446, -13.3786, 0.6137, 0, -13.3786, 0.6137, 0, -13.3786, 0.6137, -3.3446, -10.033899, 0.6137, -3.3446, -15.7546, 0.6137, 3.5372, -13.3786, 0.6137, 0, -14.4892, 0.6137, 4.2778, -13.3786, 0.6137, 0, -10.033899, 0.6137, -3.3446, -10.033899, 0.6137, 0, -14.4892, 0.6137, 4.2778, -13.3786, 0.6137, 0, -10.033899, 0.6137, 0, -10.033899, 0.6137, 0, -10.033899, 0.6137, -3.3446, -6.6893, 0.6137, -3.3446, -10.033899, 0.6137, 0, -6.6893, 0.6137, -3.3446, -6.6893, 0.6137, 0, -6.6893, 0.6137, 0, -6.6893, 0.6137, -3.3446, -4.0257998, 0.6137, -1.6911999, -6.6893, 0.6137, 0, -4.0257998, 0.6137, -1.6911999, -3.3446, 0.6137, 0, -10.033899, 0.6137, 3.3446, -10.033899, 0.6137, 0, -6.6893, 0.6137, 0, -14.4892, 0.6137, 4.2778, -10.033899, 0.6137, 0, -10.033899, 0.6137, 3.3446, -6.6893, 0.6137, 3.3446, -6.6893, 0.6137, 0, -3.3446, 0.6137, 0, -10.033899, 0.6137, 3.3446, -6.6893, 0.6137, 0, -6.6893, 0.6137, 3.3446, -6.6893, 0.6137, 3.3446, -3.3446, 0.6137, 0, -3.3446, 0.6137, 3.3446, -10.033899, 0.6137, 6.6893, -14.4892, 0.6137, 4.2778, -10.033899, 0.6137, 3.3446, -10.033899, 0.6137, 6.6893, -10.033899, 0.6137, 3.3446, -6.6893, 0.6137, 3.3446, -10.033899, 0.6137, 6.6893, -6.6893, 0.6137, 3.3446, -6.6893, 0.6137, 6.6893, -10.033899, 0.6137, 6.6893, -13.677099, 0.6137, 5.2616, -14.4892, 0.6137, 4.2778, -13.677099, 0.6137, 5.2616, -10.033899, 0.6137, 6.6893, -12.747499, 0.6137, 6.3671, -6.6893, 0.6137, 3.3446, -2.5674999, 0.0266, 7.6215, -6.6893, 0.6137, 6.6893, -2.5674999, 0.0266, 7.6215, -6.6893, 0.6137, 3.3446, -3.3446, 0.6137, 3.3446, -2.5674999, 0.0266, 7.6215, -3.3446, 0.6137, 3.3446, -2.1193, 0.6137, 5.2736998, -16.7232, 3.0033998, 2.9166, -15.7546, 0.6137, 3.5372, -15.372, 3.0033998, 3.6132998, -16.7232, 3.0033998, 2.9166, -16.7232, 0.6137, 2.9166, -15.7546, 0.6137, 3.5372, -14.4892, 3.0033998, 4.2778, -13.677099, 0.6137, 5.2616, -13.6942, 3.0033998, 5.1798, -14.4892, 3.0033998, 4.2778, -14.4892, 0.6137, 4.2778, -13.677099, 0.6137, 5.2616, -15.8036995, 3.0033998, -2.7091, -16.7232, 0.6137, 0, -16.7232, 3.0033998, 0, -15.8036995, 3.0033998, -2.7091, -15.8036995, 0.6137, -2.7091, -16.7232, 0.6137, 0, -16.7232, 3.0033998, 0, -16.7232, 0.6137, 2.9166, -16.7232, 3.0033998, 2.9166, -16.7232, 3.0033998, 0, -16.7232, 0.6137, 0, -16.7232, 0.6137, 2.9166, -3.3446, 3.0033998, 0, -4.0257998, 0.6137, -1.6911999, -4.0257998, 3.0033998, -1.6911999, -3.3446, 3.0033998, 0, -3.3446, 0.6137, 0, -4.0257998, 0.6137, -1.6911999, -3.3446, 3.0033998, 3.3446, -3.3446, 0.6137, 0, -3.3446, 3.0033998, 0, -3.3446, 3.0033998, 3.3446, -3.3446, 0.6137, 3.3446, -3.3446, 0.6137, 0, -12.747499, 3.0033998, 6.3671, -10.033899, 0.6137, 6.6893, -10.033899, 3.0033998, 6.6893, -12.747499, 3.0033998, 6.3671, -12.747499, 0.6137, 6.3671, -10.033899, 0.6137, 6.6893, -10.033899, 3.0033998, -3.3446, -13.3786, 0.6137, -3.3446, -13.3786, 3.0033998, -3.3446, -10.033899, 3.0033998, -3.3446, -10.033899, 0.6137, -3.3446, -13.3786, 0.6137, -3.3446, -6.6893, 3.0033998, -3.3446, -10.033899, 0.6137, -3.3446, -10.033899, 3.0033998, -3.3446, -6.6893, 3.0033998, -3.3446, -6.6893, 0.6137, -3.3446, -10.033899, 0.6137, -3.3446, -13.3786, 3.0033998, -3.3446, -15.8036995, 0.6137, -2.7091, -15.8036995, 3.0033998, -2.7091, -13.3786, 3.0033998, -3.3446, -13.3786, 0.6137, -3.3446, -15.8036995, 0.6137, -2.7091, -4.0257998, 3.0033998, -1.6911999, -6.6893, 0.6137, -3.3446, -6.6893, 3.0033998, -3.3446, -4.0257998, 3.0033998, -1.6911999, -4.0257998, 0.6137, -1.6911999, -6.6893, 0.6137, -3.3446, -6.6893, 3.0033998, 6.6893, -2.5674999, 0.0266, 7.6215, -2.5674999, 2.4164, 7.6215, -6.6893, 3.0033998, 6.6893, -6.6893, 0.6137, 6.6893, -2.5674999, 0.0266, 7.6215, -10.033899, 3.0033998, 6.6893, -6.6893, 0.6137, 6.6893, -6.6893, 3.0033998, 6.6893, -10.033899, 3.0033998, 6.6893, -10.033899, 0.6137, 6.6893, -6.6893, 0.6137, 6.6893, -2.5674999, 2.4164, 7.6215, -2.1193, 0.6137, 5.2736998, -2.1397, 3.0033998, 5.1795, -2.5674999, 2.4164, 7.6215, -2.5674999, 0.0266, 7.6215, -2.1193, 0.6137, 5.2736998, -2.1193, 0.6137, 5.2736998, -3.3446, 3.0033998, 3.3446, -2.1397, 3.0033998, 5.1795, -2.1193, 0.6137, 5.2736998, -3.3446, 0.6137, 3.3446, -3.3446, 3.0033998, 3.3446, -13.677099, 0.6137, 5.2616, -12.747499, 3.0033998, 6.3671, -13.6942, 3.0033998, 5.1798, -13.677099, 0.6137, 5.2616, -12.747499, 0.6137, 6.3671, -12.747499, 3.0033998, 6.3671, -15.7546, 0.6137, 3.5372, -14.4892, 3.0033998, 4.2778, -15.372, 3.0033998, 3.6132998, -15.7546, 0.6137, 3.5372, -14.4892, 0.6137, 4.2778, -14.4892, 3.0033998, 4.2778, 21.1831, 0, -13.6544, 16.8204, 3.138, -13.447599, 18.0241, 0, -14.3019, 21.1831, 0, -13.6544, 20.1539, 3.1299, -13.399799, 16.8204, 3.138, -13.447599, 21.8888, 0, -10.033899, 20.1539, 3.1299, -13.399799, 21.1831, 0, -13.6544, 21.8888, 0, -10.033899, 20.198, 3.1490998, -10.033899, 20.1539, 3.1299, -13.399799, 17.2285, 0, -16.8036, 12.7471, 3.1766999, -16.1988, 13.7014, 0, -17.416399, 17.2285, 0, -16.8036, 16.756899, 3.1650999, -16.7286, 12.7471, 3.1766999, -16.1988, 16.8204, 3.138, -13.447599, 17.2285, 0, -16.8036, 18.0241, 0, -14.3019, 17.2285, 0, -16.8036, 16.8204, 3.138, -13.447599, 16.8051, 3.1778, -13.479, 17.2285, 0, -16.8036, 16.8051, 3.1778, -13.479, 16.756899, 3.1650999, -16.7286, 12.7471, 3.1766999, -16.1988, 13.3786, 0, -20.5992, 13.7014, 0, -17.416399, 13.3786, 0, -20.5992, 12.7471, 3.1766999, -16.1988, 12.747, 3.1771, -16.1991, 13.3786, 0, -20.5992, 12.747, 3.1771, -16.1991, 12.723599, 2.9213, -19.2902, 13.3786, 0, -20.5992, 10.033899, 3.0523999, -19.0294, 10.033899, 0, -20.467, 13.3786, 0, -20.5992, 12.723599, 2.9213, -19.2902, 10.033899, 3.0523999, -19.0294, 10.033899, 0, -20.467, 6.6893, 3.0440998, -19.036999, 6.6893, 0, -20.1318, 10.033899, 0, -20.467, 10.033899, 3.0523999, -19.0294, 6.6893, 3.0440998, -19.036999, 3.0140998, 0, -16.7232, 4.4131, 3.2091, -13.357699, 3.3446, -0.3989, -12.9443, 3.0140998, 0, -16.7232, 3.5895, 3.2033, -16.7232, 4.4131, 3.2091, -13.357699, 6.6893, 3.0440998, -19.036999, 3.3446, 0, -20.5992, 6.6893, 0, -20.1318, 3.3446, 0, -20.5992, 6.6893, 3.0440998, -19.036999, 6.6640997, 3.0702, -19.018099, 3.3446, 0, -20.5992, 6.6640997, 3.0702, -19.018099, 4.4783998, 3.1067, -18.2665, 3.3446, 0, -20.5992, 3.5895, 3.2033, -16.7232, 3.0140998, 0, -16.7232, 3.3446, 0, -20.5992, 4.4783998, 3.1067, -18.2665, 3.5895, 3.2033, -16.7232, 2.8241, 0, -10.4594, 0, 3.179, -9.0652, 0, 0, -10.7654, 2.8241, 0, -10.4594, 3.7529, 3.1712, -9.0494995, 0, 3.179, -9.0652, 3.3446, -0.3989, -12.9443, 3.7529, 3.1712, -9.0494995, 2.8241, 0, -10.4594, 3.3446, -0.3989, -12.9443, 4.4131, 3.2091, -13.357699, 3.7529, 3.1712, -9.0494995, 4.4131, 3.2091, -13.357699, 3.3446, -0.3989, -12.9443, 4.4131, 3.2091, -13.357699, -2.6297, 0, -10.5745, -3.6538, 3.1585999, -12.813399, -3.3446, 0, -13.3786, -2.6297, 0, -10.5745, -3.6076, 3.1676, -10.0696, -3.6538, 3.1585999, -12.813399, -3.3446, 0, -13.3786, -6.6893, 3.175, -12.867, -6.6893, 0, -14.2637, -3.3446, 0, -13.3786, -3.6538, 3.1585999, -12.813399, -6.6893, 3.175, -12.867, 0, 3.179, -9.0652, -2.6297, 0, -10.5745, 0, 0, -10.7654, -2.6297, 0, -10.5745, 0, 3.179, -9.0652, -0.0081, 3.1864998, -9.063499, -2.6297, 0, -10.5745, -0.0081, 3.1864998, -9.063499, -3.6076, 3.1676, -10.0696, -6.6893, 0, -14.2637, -10.4043, 3.1608999, -13.4295, -9.6168995, 0, -14.127899, -6.6893, 0, -14.2637, -6.6893, 3.175, -12.867, -10.4043, 3.1608999, -13.4295, -6.6893, 3.175, -12.867, -6.6893, 0, -14.2637, -6.6893, 3.175, -12.867, -9.6168995, 0, -14.127899, -10.4319, 3.1557999, -16.1556, -10.033899, 0, -16.7232, -9.6168995, 0, -14.127899, -10.4043, 3.1608999, -13.4295, -10.4319, 3.1557999, -16.1556, -10.033899, 0, -16.7232, -13.3786, 3.1771998, -15.7625, -13.3786, 0, -17.3364, -10.033899, 0, -16.7232, -10.4319, 3.1557999, -16.1556, -13.3786, 3.1771998, -15.7625, -16.7232, 0, -16.7232, -16.3753, 3.4225, -13.6277, -16.7232, 0, -13.3786, -16.7232, 0, -16.7232, -16.0243, 3.3509998, -15.752, -16.3753, 3.4225, -13.6277, -13.3786, 3.1771998, -15.7625, -16.7232, 0, -16.7232, -13.3786, 0, -17.3364, -16.7232, 0, -16.7232, -13.3786, 3.1771998, -15.7625, -13.3911, 3.1892, -15.757, -16.7232, 0, -16.7232, -13.3911, 3.1892, -15.757, -16.0243, 3.3509998, -15.752, -17.275, 0, -10.5169, -19.6237, 3.1655998, -9.757899, -20.0679, 0, -10.033899, -17.275, 0, -10.5169, -16.4131, 3.1706, -9.788899, -19.6237, 3.1655998, -9.757899, -16.7232, 0, -13.3786, -16.4131, 3.1706, -9.788899, -17.275, 0, -10.5169, -16.7232, 0, -13.3786, -16.3753, 3.4225, -13.6277, -16.4131, 3.1706, -9.788899, -16.3753, 3.4225, -13.6277, -16.7232, 0, -13.3786, -16.3753, 3.4225, -13.6277, -20.3764, 0, -6.6893, -19.9489, 3.2063, -2.8082, -20.0679, -0.3484, -3.5669, -20.3764, 0, -6.6893, -19.515, 3.2122, -6.6893, -19.9489, 3.2063, -2.8082, -19.6237, 3.1655998, -9.757899, -20.3764, 0, -6.6893, -20.0679, 0, -10.033899, -20.3764, 0, -6.6893, -19.6237, 3.1655998, -9.757899, -19.6161, 3.2075999, -9.7116995, -20.3764, 0, -6.6893, -19.6161, 3.2075999, -9.7116995, -19.515, 3.2122, -6.6893, -23.412498, -0.2913, 0.26119998, -23.0809, 3.3083, 3.3615, -23.412498, 0, 3.3446, -23.412498, -0.2913, 0.26119998, -23.3676, 3.4459999, 0.1372, -23.0809, 3.3083, 3.3615, -23.412498, 0, -3.3446, -23.3676, 3.4459999, 0.1372, -23.412498, -0.2913, 0.26119998, -23.412498, 0, -3.3446, -23.390299, 3.3349998, -2.6938999, -23.3676, 3.4459999, 0.1372, -20.0679, -0.3484, -3.5669, -23.390299, 3.3349998, -2.6938999, -23.412498, 0, -3.3446, -20.0679, -0.3484, -3.5669, -19.9489, 3.2063, -2.8082, -23.390299, 3.3349998, -2.6938999, -19.9489, 3.2063, -2.8082, -20.0679, -0.3484, -3.5669, -19.9489, 3.2063, -2.8082, -23.0809, 3.3083, 3.3615, -23.8078, 0, 6.6893, -23.412498, 0, 3.3446, -23.8078, 0, 6.6893, -23.0809, 3.3083, 3.3615, -23.0777, 3.3197, 3.3734, -23.8078, 0, 6.6893, -23.0777, 3.3197, 3.3734, -22.563799, 3.2219, 6.6893, -23.8078, 0, 6.6893, -22.791399, 3.2124999, 9.4432, -23.412498, 0, 10.033899, -23.8078, 0, 6.6893, -22.563799, 3.2219, 6.6893, -22.791399, 3.2124999, 9.4432, -23.412498, 0, 10.033899, -20.0679, 3.1943, 9.407499, -20.0679, 0, 10.033899, -23.412498, 0, 10.033899, -22.791399, 3.2124999, 9.4432, -20.0679, 3.1943, 9.407499, -22.791399, 3.2124999, 9.4432, -23.412498, 0, 10.033899, -22.791399, 3.2124999, 9.4432, -20.0679, 0, 10.033899, -16.2818, 3.1913998, 9.8056, -16.7232, 0, 10.033899, -20.0679, 0, 10.033899, -20.0679, 3.1943, 9.407499, -16.2818, 3.1913998, 9.8056, -16.7232, 0, 13.3786, -13.3786, 3.194, 12.8089, -13.3786, 0, 13.3786, -16.7232, 0, 13.3786, -16.076399, 3.04, 12.735, -13.3786, 3.194, 12.8089, -16.7232, 0, 10.033899, -16.076399, 3.04, 12.735, -16.7232, 0, 13.3786, -16.7232, 0, 10.033899, -16.2818, 3.1913998, 9.8056, -16.076399, 3.04, 12.735, -16.2818, 3.1913998, 9.8056, -16.7232, 0, 10.033899, -16.2818, 3.1913998, 9.8056, -13.3786, 0, 13.3786, -10.033899, 2.9384, 12.4537, -10.033899, 0, 13.3786, -13.3786, 0, 13.3786, -13.3786, 3.194, 12.8089, -10.033899, 2.9384, 12.4537, -13.3786, 3.194, 12.8089, -13.3786, 0, 13.3786, -13.3786, 3.194, 12.8089, -10.033899, 0, 13.3786, -6.2748, 3.126, 13.122, -6.6893, 0, 13.3786, -10.033899, 0, 13.3786, -10.033899, 2.9384, 12.4537, -6.2748, 3.126, 13.122, -6.6893, 0, 13.3786, -6.2748, 3.1260998, 16.4145, -6.6893, 0, 16.7232, -6.6893, 0, 13.3786, -6.2748, 3.126, 13.122, -6.2748, 3.1260998, 16.4145, -3.3446, 0, 16.7232, 0, 2.9636998, 16.0179, 0, 0, 16.7232, -3.3446, 0, 16.7232, -3.3446, 3.1497998, 15.914599, 0, 2.9636998, 16.0179, 0, 0, 16.7232, 3.6425998, 3.1413999, 16.5127, 3.3446, 0, 16.7232, 0, 0, 16.7232, 0, 2.9636998, 16.0179, 3.6425998, 3.1413999, 16.5127, -6.2748, 3.1260998, 16.4145, -3.3446, 0, 16.7232, -6.6893, 0, 16.7232, -3.3446, 0, 16.7232, -6.2748, 3.1260998, 16.4145, -6.2558, 3.1427999, 16.4098, -3.3446, 0, 16.7232, -6.2558, 3.1427999, 16.4098, -3.3446, 3.1497998, 15.914599, 3.3446, 0, 20.0679, 6.6893, 3.2050998, 19.228699, 6.6893, 0, 20.0679, 3.3446, 0, 20.0679, 3.9266999, 3.5967, 19.6223, 6.6893, 3.2050998, 19.228699, 3.6425998, 3.1413999, 16.5127, 3.3446, 0, 20.0679, 3.3446, 0, 16.7232, 3.3446, 0, 20.0679, 3.6425998, 3.1413999, 16.5127, 3.6536, 3.2078998, 16.5669, 3.3446, 0, 20.0679, 3.6536, 3.2078998, 16.5669, 3.9266999, 3.5967, 19.6223, 6.6893, 3.2050998, 19.228699, 10.572599, 0, 20.0679, 6.6893, 0, 20.0679, 10.572599, 0, 20.0679, 6.6893, 3.2050998, 19.228699, 6.6991997, 3.2148, 19.2255, 10.572599, 0, 20.0679, 6.6991997, 3.2148, 19.2255, 9.3066, 3.2186, 19.0653, 10.572599, 0, 20.0679, 10.5913, 3.1985998, 16.7232, 10.572599, 0, 16.7232, 10.572599, 0, 20.0679, 9.3066, 3.2186, 19.0653, 10.5913, 3.1985998, 16.7232, 10.5913, 3.1985998, 16.7232, 10.572599, 0, 13.918799, 10.572599, 0, 16.7232, 10.572599, 0, 13.918799, 10.5913, 3.1985998, 16.7232, 10.5893, 3.2117, 16.7106, 10.572599, 0, 13.918799, 10.5893, 3.2117, 16.7106, 10.0546, 3.1885, 13.4071, 10.572599, 0, 13.918799, 13.2631, 3.5611, 13.4043, 13.8046, 0, 13.918799, 10.572599, 0, 13.918799, 10.0546, 3.1885, 13.4071, 13.2631, 3.5611, 13.4043, 13.8046, 0, 13.918799, 12.9758, 3.2036, 10.033899, 13.8046, 0, 10.033899, 13.8046, 0, 13.918799, 13.2631, 3.5611, 13.4043, 12.9758, 3.2036, 10.033899, 13.8046, 0, 13.918799, 13.2631, 3.5611, 13.4043, 13.2631, 3.5611, 13.4043, 13.8046, 0, 10.033899, 13.4036, 3.0749998, 6.6893, 13.8046, 0, 6.6893, 13.8046, 0, 10.033899, 12.9758, 3.2036, 10.033899, 13.4036, 3.0749998, 6.6893, 20.961199, 0, -3.3446, 16.7127, 2.8734, -3.3446, 20.144999, 2.7605999, -3.3446, 20.961199, 0, -3.3446, 14.0489, 3.0042, -3.3446, 16.7127, 2.8734, -3.3446, 20.144999, 2.7605999, -3.3446, 21.2349, 0, -6.6893, 20.961199, 0, -3.3446, 21.2349, 0, -6.6893, 20.144999, 2.7605999, -3.3446, 20.1349, 2.7974, -3.3783998, 21.2349, 0, -6.6893, 20.1349, 2.7974, -3.3783998, 20.147, 3.0588999, -6.6893, 20.147, 3.0588999, -6.6893, 21.8888, 0, -10.033899, 21.2349, 0, -6.6893, 21.8888, 0, -10.033899, 20.147, 3.0588999, -6.6893, 20.1796, 3.182, -9.995999, 21.8888, 0, -10.033899, 20.1796, 3.182, -9.995999, 20.198, 3.1490998, -10.033899, 23.412498, 0, -26.7572, 26.7572, -0.2593, -23.412498, 23.412498, 0, -23.412498, 26.7572, -0.2593, -23.412498, 23.412498, 0, -26.7572, 26.7572, -0.2593, -25.084799, 26.7572, -0.2593, -25.084799, 23.412498, 0, -26.7572, 26.7572, -0.2593, -26.7572, 26.7572, -0.2593, -21.7402, 23.412498, 0, -23.412498, 26.7572, -0.2593, -23.412498, 26.7572, -0.2593, -20.0679, 23.412498, 0, -23.412498, 26.7572, -0.2593, -21.7402, 23.412498, 0, -23.412498, 26.7572, -0.2593, -20.0679, 23.412498, 0, -20.0679, 26.7572, -0.2593, -18.3955, 23.412498, 0, -20.0679, 26.7572, -0.2593, -20.0679, 26.7572, -0.2593, -16.7232, 23.412498, 0, -20.0679, 26.7572, -0.2593, -18.3955, 23.412498, 0, -20.0679, 26.7572, -0.2593, -16.7232, 23.412498, 0, -16.7232, 26.7572, -0.2593, -15.0508995, 23.412498, 0, -16.7232, 26.7572, -0.2593, -16.7232, 26.7572, -0.2593, -13.3786, 23.412498, 0, -16.7232, 26.7572, -0.2593, -15.0508995, 23.412498, 0, -16.7232, 26.7572, -0.2593, -13.3786, 23.412498, 0, -13.3786, 26.7572, -0.2593, -11.7063, 23.412498, 0, -13.3786, 26.7572, -0.2593, -13.3786, 26.7572, -0.2593, -10.033899, 23.412498, 0, -13.3786, 26.7572, -0.2593, -11.7063, 23.412498, 0, -13.3786, 26.7572, -0.2593, -10.033899, 23.412498, 0, -10.033899, 26.7572, -0.2593, -8.3616, 23.412498, 0, -10.033899, 26.7572, -0.2593, -10.033899, 26.7572, -0.2593, -6.6893, 23.412498, 0, -10.033899, 26.7572, -0.2593, -8.3616, 23.412498, 0, -10.033899, 26.7572, -0.2593, -6.6893, 23.412498, 0, -6.6893, 26.7572, -0.2593, -5.0169997, 23.412498, 0, -6.6893, 26.7572, -0.2593, -6.6893, 26.7572, -0.2593, -3.3446, 23.412498, 0, -6.6893, 26.7572, -0.2593, -5.0169997, 23.412498, 0, -6.6893, 26.7572, -0.2593, -3.3446, 23.412498, 0, -3.3446, 26.7572, -0.2593, -1.6723, 23.412498, 0, -3.3446, 26.7572, -0.2593, -3.3446, 26.7572, -0.2593, 0, 23.412498, 0, -3.3446, 26.7572, -0.2593, -1.6723, 23.412498, 0, -3.3446, 26.7572, -0.2593, 0, 23.412498, 0, 0, 26.7572, -0.2593, 1.6723, 23.412498, 0, 0, 26.7572, -0.2593, 0, 26.7572, -0.2593, 3.3446, 23.412498, 0, 0, 26.7572, -0.2593, 1.6723, 23.412498, 0, 0, 26.7572, -0.2593, 3.3446, 23.412498, 0, 3.3446, 26.7572, -0.2593, 5.0169997, 23.412498, 0, 3.3446, 26.7572, -0.2593, 3.3446, 26.7572, -0.2593, 6.6893, 23.412498, 0, 3.3446, 26.7572, -0.2593, 5.0169997, 23.412498, 0, 3.3446, 26.7572, -0.2593, 6.6893, 23.412498, 0, 6.6893, 26.7572, -0.2593, 8.3616, 23.412498, 0, 6.6893, 26.7572, -0.2593, 6.6893, 26.7572, -0.2593, 10.033899, 23.412498, 0, 6.6893, 26.7572, -0.2593, 8.3616, 23.412498, 0, 6.6893, 26.7572, -0.2593, 10.033899, 23.412498, 0, 10.033899, 26.7572, -0.2593, 11.7063, 23.412498, 0, 10.033899, 26.7572, -0.2593, 10.033899, 26.7572, -0.2593, 13.3786, 23.412498, 0, 10.033899, 26.7572, -0.2593, 11.7063, 23.412498, 0, 10.033899, 26.7572, -0.2593, 13.3786, 23.412498, 0, 13.3786, 26.7572, -0.2593, 15.0508995, 23.412498, 0, 13.3786, 26.7572, -0.2593, 13.3786, 26.7572, -0.2593, 16.7232, 23.412498, 0, 13.3786, 26.7572, -0.2593, 15.0508995, 23.412498, 0, 13.3786, 26.7572, -0.2593, 16.7232, 23.412498, 0, 16.7232, 26.7572, -0.2593, 18.3955, 23.412498, 0, 16.7232, 26.7572, -0.2593, 16.7232, 26.7572, -0.2593, 20.0679, 23.412498, 0, 16.7232, 26.7572, -0.2593, 18.3955, 23.412498, 0, 16.7232, 26.7572, -0.2593, 20.0679, 23.412498, 0, 20.0679, 26.7572, -0.2593, 21.7402, 23.412498, 0, 20.0679, 26.7572, -0.2593, 20.0679, 26.7572, -0.2593, 23.412498, 23.412498, 0, 20.0679, 26.7572, -0.2593, 21.7402, 23.412498, 0, 20.0679, 26.7572, -0.2593, 23.412498, 23.412498, 0, 23.412498, 26.7572, -0.2593, 25.084799, 23.412498, 0, 23.412498, 26.7572, -0.2593, 23.412498, 26.7572, -0.2593, 26.7572, 23.412498, 0, 23.412498, 26.7572, -0.2593, 25.084799, 23.412498, 0, 23.412498, 26.7572, -0.2593, 26.7572, 23.412498, 0, 26.7572, -3.3446, 0, -23.412498, 0, 0, -26.7572, 0, 0, -23.412498, 0, 0, -23.412498, 0, 0, -26.7572, 3.3446, 0, -26.7572, -3.3446, 0, -23.412498, -3.3446, 0, -26.7572, 0, 0, -26.7572, 0, 0, -23.412498, 3.3446, 0, -26.7572, 3.3446, 0, -23.412498, 3.3446, 0, -23.412498, 3.3446, 0, -26.7572, 6.6893, 0, -26.7572, -3.3446, 0, -20.0679, -3.3446, 0, -23.412498, 0, 0, -23.412498, 3.3446, 0, -23.412498, 6.6893, 0, -26.7572, 6.6893, 0, -23.412498, 6.6893, 0, -23.412498, 6.6893, 0, -26.7572, 10.033899, 0, -26.7572, 0, 0, -20.0679, 0, 0, -23.412498, 3.3446, 0, -23.412498, -3.3446, 0, -20.0679, 0, 0, -23.412498, 0, 0, -20.0679, 3.3446, 0, -20.5992, 3.3446, 0, -23.412498, 6.6893, 0, -23.412498, 0, 0, -20.0679, 3.3446, 0, -23.412498, 3.3446, 0, -20.5992, 3.3446, 0, -20.5992, 6.6893, 0, -23.412498, 6.6893, 0, -20.1318, 6.6893, 0, -23.412498, 10.033899, 0, -26.7572, 10.033899, 0, -23.412498, 6.6893, 0, -20.1318, 6.6893, 0, -23.412498, 10.033899, 0, -23.412498, 10.033899, 0, -23.412498, 10.033899, 0, -26.7572, 13.3786, 0, -26.7572, 6.6893, 0, -20.1318, 10.033899, 0, -23.412498, 10.033899, 0, -20.467, 10.033899, 0, -23.412498, 13.3786, 0, -26.7572, 13.3786, 0, -23.412498, 10.033899, 0, -20.467, 10.033899, 0, -23.412498, 13.3786, 0, -23.412498, 13.3786, 0, -23.412498, 13.3786, 0, -26.7572, 16.7232, 0, -26.7572, 10.033899, 0, -20.467, 13.3786, 0, -23.412498, 13.3786, 0, -20.5992, 13.3786, 0, -23.412498, 16.7232, 0, -26.7572, 16.7232, 0, -23.412498, 13.3786, 0, -20.5992, 13.3786, 0, -23.412498, 16.7232, 0, -23.412498, 16.7232, 0, -23.412498, 16.7232, 0, -26.7572, 20.0679, 0, -26.7572, 13.3786, 0, -20.5992, 16.7232, 0, -23.412498, 16.7232, 0, -20.0679, 13.7014, 0, -17.416399, 13.3786, 0, -20.5992, 16.7232, 0, -20.0679, 13.7014, 0, -17.416399, 16.7232, 0, -20.0679, 17.2285, 0, -16.8036, 16.7232, 0, -23.412498, 20.0679, 0, -26.7572, 20.0679, 0, -23.412498, 16.7232, 0, -20.0679, 16.7232, 0, -23.412498, 20.0679, 0, -23.412498, 20.0679, 0, -23.412498, 20.0679, 0, -26.7572, 23.412498, 0, -26.7572, 20.0679, 0, -23.412498, 23.412498, 0, -26.7572, 23.412498, 0, -23.412498, 16.7232, 0, -20.0679, 20.0679, 0, -23.412498, 20.0679, 0, -20.0679, 20.0679, 0, -20.0679, 20.0679, 0, -23.412498, 23.412498, 0, -23.412498, 17.2285, 0, -16.8036, 16.7232, 0, -20.0679, 20.0679, 0, -20.0679, 20.0679, 0, -20.0679, 23.412498, 0, -23.412498, 23.412498, 0, -20.0679, 17.2285, 0, -16.8036, 20.0679, 0, -20.0679, 20.0679, 0, -16.7232, 20.0679, 0, -16.7232, 20.0679, 0, -20.0679, 23.412498, 0, -20.0679, 18.0241, 0, -14.3019, 17.2285, 0, -16.8036, 20.0679, 0, -16.7232, 20.0679, 0, -16.7232, 23.412498, 0, -20.0679, 23.412498, 0, -16.7232, 18.0241, 0, -14.3019, 20.0679, 0, -16.7232, 21.1831, 0, -13.6544, 21.1831, 0, -13.6544, 20.0679, 0, -16.7232, 23.412498, 0, -16.7232, 21.1831, 0, -13.6544, 23.412498, 0, -16.7232, 23.412498, 0, -13.3786, 21.8888, 0, -10.033899, 21.1831, 0, -13.6544, 23.412498, 0, -13.3786, 21.8888, 0, -10.033899, 23.412498, 0, -13.3786, 23.412498, 0, -10.033899, 21.2349, 0, -6.6893, 21.8888, 0, -10.033899, 23.412498, 0, -10.033899, 21.2349, 0, -6.6893, 23.412498, 0, -10.033899, 23.412498, 0, -6.6893, 20.961199, 0, -3.3446, 21.2349, 0, -6.6893, 23.412498, 0, -6.6893, 20.961199, 0, -3.3446, 23.412498, 0, -6.6893, 23.412498, 0, -3.3446, 20.0679, 0, 0, 20.961199, 0, -3.3446, 23.412498, 0, -3.3446, 20.0679, 0, 0, 23.412498, 0, -3.3446, 23.412498, 0, 0, 20.0679, 0, 3.3446, 20.0679, 0, 0, 23.412498, 0, 0, 20.0679, 0, 3.3446, 23.412498, 0, 0, 23.412498, 0, 3.3446, 10.572599, 0, 16.7232, 13.8046, 0, 13.918799, 13.3786, 0, 16.7232, 10.572599, 0, 16.7232, 10.572599, 0, 13.918799, 13.8046, 0, 13.918799, 10.572599, 0, 20.0679, 10.572599, 0, 16.7232, 13.3786, 0, 16.7232, 13.3786, 0, 16.7232, 13.8046, 0, 13.918799, 15.0508995, 0, 13.3786, 10.572599, 0, 20.0679, 13.3786, 0, 16.7232, 13.3786, 0, 20.0679, 13.8046, 0, 13.918799, 15.0508995, 0, 10.033899, 15.0508995, 0, 13.3786, 13.8046, 0, 13.918799, 13.8046, 0, 10.033899, 15.0508995, 0, 10.033899, 13.8046, 0, 10.033899, 15.0508995, 0, 6.6893, 15.0508995, 0, 10.033899, 13.8046, 0, 10.033899, 13.8046, 0, 6.6893, 15.0508995, 0, 6.6893, 15.0508995, 0, 10.033899, 15.0508995, 0, 6.6893, 16.7232, 0, 6.6893, 15.0508995, 0, 10.033899, 16.7232, 0, 6.6893, 16.7232, 0, 10.033899, 15.0508995, 0, 13.3786, 15.0508995, 0, 10.033899, 16.7232, 0, 10.033899, 13.3786, 0, 16.7232, 15.0508995, 0, 13.3786, 15.0508995, 0, 16.7232, 13.3786, 0, 20.0679, 13.3786, 0, 16.7232, 15.0508995, 0, 16.7232, 15.0508995, 0, 13.3786, 16.7232, 0, 10.033899, 16.7232, 0, 13.3786, 15.0508995, 0, 16.7232, 15.0508995, 0, 13.3786, 16.7232, 0, 13.3786, 16.7232, 0, 13.3786, 16.7232, 0, 10.033899, 20.0679, 0, 10.033899, 16.7232, 0, 13.3786, 20.0679, 0, 10.033899, 20.0679, 0, 13.3786, 20.0679, 0, 13.3786, 20.0679, 0, 10.033899, 23.412498, 0, 10.033899, 20.0679, 0, 13.3786, 23.412498, 0, 10.033899, 23.412498, 0, 13.3786, 16.7232, 0, 16.7232, 16.7232, 0, 13.3786, 20.0679, 0, 13.3786, 15.0508995, 0, 16.7232, 16.7232, 0, 13.3786, 16.7232, 0, 16.7232, 20.0679, 0, 16.7232, 20.0679, 0, 13.3786, 23.412498, 0, 13.3786, 16.7232, 0, 16.7232, 20.0679, 0, 13.3786, 20.0679, 0, 16.7232, 20.0679, 0, 16.7232, 23.412498, 0, 13.3786, 23.412498, 0, 16.7232, 15.0508995, 0, 20.0679, 15.0508995, 0, 16.7232, 16.7232, 0, 16.7232, 13.3786, 0, 20.0679, 15.0508995, 0, 16.7232, 15.0508995, 0, 20.0679, 16.7232, 0, 20.0679, 16.7232, 0, 16.7232, 20.0679, 0, 16.7232, 15.0508995, 0, 20.0679, 16.7232, 0, 16.7232, 16.7232, 0, 20.0679, 20.0679, 0, 20.0679, 20.0679, 0, 16.7232, 23.412498, 0, 16.7232, 16.7232, 0, 20.0679, 20.0679, 0, 16.7232, 20.0679, 0, 20.0679, 20.0679, 0, 20.0679, 23.412498, 0, 16.7232, 23.412498, 0, 20.0679, 20.0679, 0, 23.412498, 20.0679, 0, 20.0679, 23.412498, 0, 20.0679, 20.0679, 0, 23.412498, 23.412498, 0, 20.0679, 23.412498, 0, 23.412498, 20.0679, 0, 26.7572, 20.0679, 0, 23.412498, 23.412498, 0, 23.412498, 20.0679, 0, 26.7572, 23.412498, 0, 23.412498, 23.412498, 0, 26.7572, 16.7232, 0, 26.7572, 20.0679, 0, 23.412498, 20.0679, 0, 26.7572, 16.7232, 0, 23.412498, 20.0679, 0, 20.0679, 20.0679, 0, 23.412498, 16.7232, 0, 26.7572, 16.7232, 0, 23.412498, 20.0679, 0, 23.412498, 16.7232, 0, 23.412498, 16.7232, 0, 20.0679, 20.0679, 0, 20.0679, 15.0508995, 0, 26.7572, 16.7232, 0, 23.412498, 16.7232, 0, 26.7572, 15.0508995, 0, 23.412498, 16.7232, 0, 20.0679, 16.7232, 0, 23.412498, 15.0508995, 0, 26.7572, 15.0508995, 0, 23.412498, 16.7232, 0, 23.412498, 15.0508995, 0, 23.412498, 15.0508995, 0, 20.0679, 16.7232, 0, 20.0679, 13.3786, 0, 26.7572, 15.0508995, 0, 23.412498, 15.0508995, 0, 26.7572, 13.3786, 0, 23.412498, 15.0508995, 0, 20.0679, 15.0508995, 0, 23.412498, 13.3786, 0, 26.7572, 13.3786, 0, 23.412498, 15.0508995, 0, 23.412498, 13.3786, 0, 23.412498, 13.3786, 0, 20.0679, 15.0508995, 0, 20.0679, 10.033899, 0, 26.7572, 13.3786, 0, 23.412498, 13.3786, 0, 26.7572, 10.033899, 0, 23.412498, 13.3786, 0, 20.0679, 13.3786, 0, 23.412498, 10.033899, 0, 26.7572, 10.033899, 0, 23.412498, 13.3786, 0, 23.412498, 10.033899, 0, 23.412498, 10.572599, 0, 20.0679, 13.3786, 0, 20.0679, 6.6893, 0, 26.7572, 10.033899, 0, 23.412498, 10.033899, 0, 26.7572, 6.6893, 0, 23.412498, 10.572599, 0, 20.0679, 10.033899, 0, 23.412498, 6.6893, 0, 26.7572, 6.6893, 0, 23.412498, 10.033899, 0, 23.412498, 6.6893, 0, 23.412498, 6.6893, 0, 20.0679, 10.572599, 0, 20.0679, 3.3446, 0, 26.7572, 6.6893, 0, 23.412498, 6.6893, 0, 26.7572, 3.3446, 0, 23.412498, 6.6893, 0, 20.0679, 6.6893, 0, 23.412498, 3.3446, 0, 26.7572, 3.3446, 0, 23.412498, 6.6893, 0, 23.412498, 3.3446, 0, 23.412498, 3.3446, 0, 20.0679, 6.6893, 0, 20.0679, 0, 0, 26.7572, 3.3446, 0, 23.412498, 3.3446, 0, 26.7572, 0, 0, 26.7572, 0, 0, 23.412498, 3.3446, 0, 23.412498, 0, 0, 23.412498, 3.3446, 0, 20.0679, 3.3446, 0, 23.412498, -3.3446, 0, 26.7572, 0, 0, 23.412498, 0, 0, 26.7572, 0, 0, 23.412498, 0, 0, 20.0679, 3.3446, 0, 20.0679, 0, 0, 20.0679, 3.3446, 0, 16.7232, 3.3446, 0, 20.0679, 0, 0, 20.0679, 0, 0, 16.7232, 3.3446, 0, 16.7232, -3.3446, 0, 26.7572, -3.3446, 0, 23.412498, 0, 0, 23.412498, -3.3446, 0, 23.412498, 0, 0, 20.0679, 0, 0, 23.412498, -6.6893, 0, 26.7572, -3.3446, 0, 23.412498, -3.3446, 0, 26.7572, -3.3446, 0, 20.0679, 0, 0, 16.7232, 0, 0, 20.0679, -3.3446, 0, 23.412498, -3.3446, 0, 20.0679, 0, 0, 20.0679, -3.3446, 0, 20.0679, -3.3446, 0, 16.7232, 0, 0, 16.7232, -6.6893, 0, 26.7572, -6.6893, 0, 23.412498, -3.3446, 0, 23.412498, -6.6893, 0, 23.412498, -3.3446, 0, 20.0679, -3.3446, 0, 23.412498, -10.033899, 0, 26.7572, -6.6893, 0, 23.412498, -6.6893, 0, 26.7572, -6.6893, 0, 20.0679, -3.3446, 0, 16.7232, -3.3446, 0, 20.0679, -6.6893, 0, 23.412498, -6.6893, 0, 20.0679, -3.3446, 0, 20.0679, -6.6893, 0, 20.0679, -6.6893, 0, 16.7232, -3.3446, 0, 16.7232, -10.033899, 0, 26.7572, -10.033899, 0, 23.412498, -6.6893, 0, 23.412498, -10.033899, 0, 23.412498, -6.6893, 0, 20.0679, -6.6893, 0, 23.412498, -13.3786, 0, 26.7572, -10.033899, 0, 23.412498, -10.033899, 0, 26.7572, -10.033899, 0, 20.0679, -6.6893, 0, 16.7232, -6.6893, 0, 20.0679, -10.033899, 0, 23.412498, -10.033899, 0, 20.0679, -6.6893, 0, 20.0679, -13.3786, 0, 26.7572, -13.3786, 0, 23.412498, -10.033899, 0, 23.412498, -13.3786, 0, 23.412498, -10.033899, 0, 20.0679, -10.033899, 0, 23.412498, -16.7232, 0, 26.7572, -13.3786, 0, 23.412498, -13.3786, 0, 26.7572, -10.033899, 0, 20.0679, -10.033899, 0, 16.7232, -6.6893, 0, 16.7232, -10.033899, 0, 16.7232, -6.6893, 0, 13.3786, -6.6893, 0, 16.7232, -10.033899, 0, 16.7232, -10.033899, 0, 13.3786, -6.6893, 0, 13.3786, -13.3786, 0, 20.0679, -10.033899, 0, 16.7232, -10.033899, 0, 20.0679, -13.3786, 0, 23.412498, -13.3786, 0, 20.0679, -10.033899, 0, 20.0679, -13.3786, 0, 16.7232, -10.033899, 0, 13.3786, -10.033899, 0, 16.7232, -13.3786, 0, 20.0679, -13.3786, 0, 16.7232, -10.033899, 0, 16.7232, -13.3786, 0, 16.7232, -13.3786, 0, 13.3786, -10.033899, 0, 13.3786, -16.7232, 0, 26.7572, -16.7232, 0, 23.412498, -13.3786, 0, 23.412498, -16.7232, 0, 23.412498, -13.3786, 0, 20.0679, -13.3786, 0, 23.412498, -20.0679, 0, 26.7572, -16.7232, 0, 23.412498, -16.7232, 0, 26.7572, -16.7232, 0, 20.0679, -13.3786, 0, 16.7232, -13.3786, 0, 20.0679, -16.7232, 0, 23.412498, -16.7232, 0, 20.0679, -13.3786, 0, 20.0679, -16.7232, 0, 16.7232, -13.3786, 0, 13.3786, -13.3786, 0, 16.7232, -16.7232, 0, 20.0679, -16.7232, 0, 16.7232, -13.3786, 0, 16.7232, -16.7232, 0, 16.7232, -16.7232, 0, 13.3786, -13.3786, 0, 13.3786, -20.0679, 0, 26.7572, -20.0679, 0, 23.412498, -16.7232, 0, 23.412498, -20.0679, 0, 23.412498, -16.7232, 0, 20.0679, -16.7232, 0, 23.412498, -23.412498, 0, 26.7572, -20.0679, 0, 23.412498, -20.0679, 0, 26.7572, -20.0679, 0, 20.0679, -16.7232, 0, 16.7232, -16.7232, 0, 20.0679, -20.0679, 0, 23.412498, -20.0679, 0, 20.0679, -16.7232, 0, 20.0679, -23.412498, 0, 26.7572, -23.412498, 0, 23.412498, -20.0679, 0, 23.412498, -23.412498, 0, 23.412498, -20.0679, 0, 20.0679, -20.0679, 0, 23.412498, -26.7572, 0, 26.7572, -23.412498, 0, 23.412498, -23.412498, 0, 26.7572, -26.7572, 0, 26.7572, -26.7572, 0, 23.412498, -23.412498, 0, 23.412498, -26.7572, 0, 23.412498, -23.412498, 0, 20.0679, -23.412498, 0, 23.412498, -23.412498, 0, 23.412498, -23.412498, 0, 20.0679, -20.0679, 0, 20.0679, -26.7572, 0, 23.412498, -26.7572, 0, 20.0679, -23.412498, 0, 20.0679, -20.0679, 0, 20.0679, -20.0679, 0, 16.7232, -16.7232, 0, 16.7232, -23.412498, 0, 20.0679, -20.0679, 0, 16.7232, -20.0679, 0, 20.0679, -20.0679, 0, 16.7232, -16.7232, 0, 13.3786, -16.7232, 0, 16.7232, -26.7572, 0, 20.0679, -23.412498, 0, 16.7232, -23.412498, 0, 20.0679, -23.412498, 0, 20.0679, -23.412498, 0, 16.7232, -20.0679, 0, 16.7232, -26.7572, 0, 20.0679, -26.7572, 0, 16.7232, -23.412498, 0, 16.7232, -20.0679, 0, 16.7232, -20.0679, 0, 13.3786, -16.7232, 0, 13.3786, -23.412498, 0, 16.7232, -20.0679, 0, 13.3786, -20.0679, 0, 16.7232, -20.0679, 0, 13.3786, -16.7232, 0, 10.033899, -16.7232, 0, 13.3786, -20.0679, 0, 13.3786, -20.0679, 0, 10.033899, -16.7232, 0, 10.033899, -23.412498, 0, 16.7232, -23.412498, 0, 13.3786, -20.0679, 0, 13.3786, -23.412498, 0, 13.3786, -20.0679, 0, 10.033899, -20.0679, 0, 13.3786, -26.7572, 0, 16.7232, -23.412498, 0, 13.3786, -23.412498, 0, 16.7232, -23.412498, 0, 13.3786, -23.412498, 0, 10.033899, -20.0679, 0, 10.033899, -26.7572, 0, 16.7232, -26.7572, 0, 13.3786, -23.412498, 0, 13.3786, -26.7572, 0, 13.3786, -23.412498, 0, 10.033899, -23.412498, 0, 13.3786, -26.7572, 0, 13.3786, -26.7572, 0, 10.033899, -23.412498, 0, 10.033899, -26.7572, 0, 10.033899, -23.8078, 0, 6.6893, -23.412498, 0, 10.033899, -26.7572, 0, 10.033899, -26.7572, 0, 6.6893, -23.8078, 0, 6.6893, -26.7572, 0, 6.6893, -23.412498, 0, 3.3446, -23.8078, 0, 6.6893, -26.7572, 0, 6.6893, -26.7572, 0, 3.3446, -23.412498, 0, 3.3446, -16.7232, 0, -23.412498, -13.3786, 0, -26.7572, -13.3786, 0, -23.412498, -13.3786, 0, -23.412498, -13.3786, 0, -26.7572, -10.033899, 0, -26.7572, -16.7232, 0, -23.412498, -16.7232, 0, -26.7572, -13.3786, 0, -26.7572, -13.3786, 0, -23.412498, -10.033899, 0, -26.7572, -10.033899, 0, -23.412498, -10.033899, 0, -23.412498, -10.033899, 0, -26.7572, -6.6893, 0, -26.7572, -16.7232, 0, -20.0679, -16.7232, 0, -23.412498, -13.3786, 0, -23.412498, -10.033899, 0, -23.412498, -6.6893, 0, -26.7572, -6.6893, 0, -23.412498, -6.6893, 0, -23.412498, -6.6893, 0, -26.7572, -3.3446, 0, -26.7572, -6.6893, 0, -23.412498, -3.3446, 0, -26.7572, -3.3446, 0, -23.412498, -13.3786, 0, -20.0679, -13.3786, 0, -23.412498, -10.033899, 0, -23.412498, -16.7232, 0, -20.0679, -13.3786, 0, -23.412498, -13.3786, 0, -20.0679, -10.033899, 0, -20.0679, -10.033899, 0, -23.412498, -6.6893, 0, -23.412498, -13.3786, 0, -20.0679, -10.033899, 0, -23.412498, -10.033899, 0, -20.0679, -6.6893, 0, -20.0679, -6.6893, 0, -23.412498, -3.3446, 0, -23.412498, -10.033899, 0, -20.0679, -6.6893, 0, -23.412498, -6.6893, 0, -20.0679, -6.6893, 0, -20.0679, -3.3446, 0, -23.412498, -3.3446, 0, -20.0679, -13.3786, 0, -17.3364, -13.3786, 0, -20.0679, -10.033899, 0, -20.0679, -13.3786, 0, -17.3364, -10.033899, 0, -20.0679, -10.033899, 0, -16.7232, -10.033899, 0, -16.7232, -10.033899, 0, -20.0679, -6.6893, 0, -20.0679, -16.7232, 0, -16.7232, -13.3786, 0, -20.0679, -13.3786, 0, -17.3364, -16.7232, 0, -16.7232, -16.7232, 0, -20.0679, -13.3786, 0, -20.0679, -10.033899, 0, -16.7232, -6.6893, 0, -20.0679, -6.6893, 0, -16.7232, -6.6893, 0, -16.7232, -6.6893, 0, -20.0679, -3.3446, 0, -20.0679, -9.6168995, 0, -14.127899, -10.033899, 0, -16.7232, -6.6893, 0, -16.7232, -9.6168995, 0, -14.127899, -6.6893, 0, -16.7232, -6.6893, 0, -14.2637, -6.6893, 0, -16.7232, -3.3446, 0, -20.0679, -3.3446, 0, -16.7232, -6.6893, 0, -14.2637, -6.6893, 0, -16.7232, -3.3446, 0, -16.7232, -3.3446, 0, -16.7232, -3.3446, 0, -20.0679, 0, 0, -20.0679, -6.6893, 0, -14.2637, -3.3446, 0, -16.7232, -3.3446, 0, -13.3786, -3.3446, 0, -16.7232, 0, 0, -20.0679, 0, 0, -16.7232, -3.3446, 0, -13.3786, -3.3446, 0, -16.7232, 0, 0, -16.7232, 0, 0, -16.7232, 0, 0, -20.0679, 3.3446, 0, -20.5992, 0, 0, -16.7232, 3.3446, 0, -20.5992, 3.0140998, 0, -16.7232, -3.3446, 0, -13.3786, 0, 0, -16.7232, 0, 0, -13.3786, -2.6297, 0, -10.5745, -3.3446, 0, -13.3786, 0, 0, -13.3786, -2.6297, 0, -10.5745, 0, 0, -13.3786, 0, 0, -10.7654, -20.0679, 0, -16.7232, -16.7232, 0, -20.0679, -16.7232, 0, -16.7232, -20.0679, 0, -16.7232, -20.0679, 0, -20.0679, -16.7232, 0, -20.0679, -20.0679, 0, -20.0679, -16.7232, 0, -23.412498, -16.7232, 0, -20.0679, -20.0679, 0, -13.3786, -20.0679, 0, -16.7232, -16.7232, 0, -16.7232, -20.0679, 0, -13.3786, -16.7232, 0, -16.7232, -16.7232, 0, -13.3786, -23.412498, 0, -16.7232, -20.0679, 0, -20.0679, -20.0679, 0, -16.7232, -20.0679, 0, -10.033899, -20.0679, 0, -13.3786, -16.7232, 0, -13.3786, -20.0679, 0, -10.033899, -16.7232, 0, -13.3786, -17.275, 0, -10.5169, -23.412498, 0, -13.3786, -20.0679, 0, -16.7232, -20.0679, 0, -13.3786, -23.412498, 0, -13.3786, -23.412498, 0, -16.7232, -20.0679, 0, -16.7232, -23.412498, 0, -10.033899, -20.0679, 0, -13.3786, -20.0679, 0, -10.033899, -23.412498, 0, -10.033899, -23.412498, 0, -13.3786, -20.0679, 0, -13.3786, -26.7572, 0, -10.033899, -23.412498, 0, -13.3786, -23.412498, 0, -10.033899, -26.7572, 0, -10.033899, -26.7572, 0, -13.3786, -23.412498, 0, -13.3786, -26.7572, 0, -13.3786, -23.412498, 0, -16.7232, -23.412498, 0, -13.3786, -26.7572, 0, -6.6893, -26.7572, 0, -10.033899, -23.412498, 0, -10.033899, -26.7572, 0, -13.3786, -26.7572, 0, -16.7232, -23.412498, 0, -16.7232, -26.7572, 0, -6.6893, -23.412498, 0, -10.033899, -23.412498, 0, -6.6893, -23.412498, 0, -6.6893, -23.412498, 0, -10.033899, -20.0679, 0, -10.033899, -23.412498, 0, -6.6893, -20.0679, 0, -10.033899, -20.3764, 0, -6.6893, -26.7572, 0, -3.3446, -26.7572, 0, -6.6893, -23.412498, 0, -6.6893, -26.7572, 0, -3.3446, -23.412498, 0, -6.6893, -23.412498, 0, -3.3446, -26.7572, 0, -16.7232, -23.412498, 0, -20.0679, -23.412498, 0, -16.7232, -23.412498, 0, -16.7232, -23.412498, 0, -20.0679, -20.0679, 0, -20.0679, -26.7572, 0, -16.7232, -26.7572, 0, -20.0679, -23.412498, 0, -20.0679, -23.412498, 0, -20.0679, -20.0679, 0, -23.412498, -20.0679, 0, -20.0679, -20.0679, 0, -20.0679, -20.0679, 0, -23.412498, -16.7232, 0, -23.412498, -20.0679, 0, -23.412498, -16.7232, 0, -26.7572, -16.7232, 0, -23.412498, -20.0679, 0, -23.412498, -20.0679, 0, -26.7572, -16.7232, 0, -26.7572, -23.412498, 0, -20.0679, -23.412498, 0, -23.412498, -20.0679, 0, -23.412498, -23.412498, 0, -23.412498, -20.0679, 0, -26.7572, -20.0679, 0, -23.412498, -26.7572, 0, -20.0679, -23.412498, 0, -23.412498, -23.412498, 0, -20.0679, -23.412498, 0, -23.412498, -23.412498, 0, -26.7572, -20.0679, 0, -26.7572, -26.7572, 0, -20.0679, -26.7572, 0, -23.412498, -23.412498, 0, -23.412498, -26.7572, 0, -23.412498, -23.412498, 0, -26.7572, -23.412498, 0, -23.412498, -26.7572, 0, -23.412498, -26.7572, 0, -26.7572, -23.412498, 0, -26.7572, -23.412498, 0, -3.3446, -20.3764, 0, -6.6893, -20.0679, -0.3484, -3.5669, -23.412498, 0, -3.3446, -23.412498, 0, -6.6893, -20.3764, 0, -6.6893, 16.7232, 0, 10.033899, 20.0679, -0.124199994, 6.6893, 20.0679, 0, 10.033899, 16.7232, 0, 10.033899, 16.7232, 0, 6.6893, 20.0679, -0.124199994, 6.6893, 20.0679, 0, 10.033899, 23.412498, 0, 6.6893, 23.412498, 0, 10.033899, 20.0679, 0, 10.033899, 20.0679, -0.124199994, 6.6893, 23.412498, 0, 6.6893, -26.7572, 0, 3.3446, -23.412498, -0.2913, 0.26119998, -23.412498, 0, 3.3446, -26.7572, 0, 3.3446, -26.7572, 0, 0, -23.412498, -0.2913, 0.26119998, -26.7572, 0, 0, -23.412498, 0, -3.3446, -23.412498, -0.2913, 0.26119998, -26.7572, 0, 0, -26.7572, 0, -3.3446, -23.412498, 0, -3.3446, 0, 0, -13.3786, 3.0140998, 0, -16.7232, 3.3446, -0.3989, -12.9443, 0, 0, -13.3786, 0, 0, -16.7232, 3.0140998, 0, -16.7232, 0, 0, -10.7654, 3.3446, -0.3989, -12.9443, 2.8241, 0, -10.4594, 0, 0, -10.7654, 0, 0, -13.3786, 3.3446, -0.3989, -12.9443, 20.0679, -0.124199994, 6.6893, 23.412498, 0, 3.3446, 23.412498, 0, 6.6893, 20.0679, -0.124199994, 6.6893, 20.0679, 0, 3.3446, 23.412498, 0, 3.3446, 51.2184, -3.9413, -15.0508995, 54.072197, -3.9413, -13.3786, 51.2184, -3.9413, -13.3786, 51.2184, -3.9413, -13.3786, 54.072197, -3.9413, -13.3786, 54.072197, -3.9413, -11.7063, 51.2184, -3.9413, -15.0508995, 54.072197, -3.9413, -15.0508995, 54.072197, -3.9413, -13.3786, 51.2184, -3.9413, -13.3786, 54.072197, -3.9413, -11.7063, 51.2184, -3.9413, -11.7063, 51.2184, -3.9413, -11.7063, 54.072197, -3.9413, -11.7063, 54.072197, -3.9413, -10.033899, 48.3645, -3.9413, -15.0508995, 51.2184, -3.9413, -15.0508995, 51.2184, -3.9413, -13.3786, 51.2184, -3.9413, -11.7063, 54.072197, -3.9413, -10.033899, 51.2184, -3.9413, -10.033899, 51.2184, -3.9413, -10.033899, 54.072197, -3.9413, -10.033899, 54.072197, -3.9413, -8.3616, 48.3645, -3.9413, -13.3786, 51.2184, -3.9413, -13.3786, 51.2184, -3.9413, -11.7063, 48.3645, -3.9413, -15.0508995, 51.2184, -3.9413, -13.3786, 48.3645, -3.9413, -13.3786, 48.3645, -3.9413, -11.7063, 51.2184, -3.9413, -11.7063, 51.2184, -3.9413, -10.033899, 48.3645, -3.9413, -13.3786, 51.2184, -3.9413, -11.7063, 48.3645, -3.9413, -11.7063, 51.2184, -3.9413, -10.033899, 54.072197, -3.9413, -8.3616, 51.2184, -3.9413, -8.3616, 51.2184, -3.9413, -8.3616, 54.072197, -3.9413, -8.3616, 54.072197, -3.9413, -6.6893, 48.3645, -3.9413, -11.7063, 51.2184, -3.9413, -10.033899, 48.3645, -3.9413, -10.033899, 48.3645, -3.9413, -10.033899, 51.2184, -3.9413, -10.033899, 51.2184, -3.9413, -8.3616, 45.5107, -3.9413, -13.3786, 48.3645, -3.9413, -13.3786, 48.3645, -3.9413, -11.7063, 45.5107, -3.9413, -11.7063, 48.3645, -3.9413, -11.7063, 48.3645, -3.9413, -10.033899, 45.5107, -3.9413, -13.3786, 48.3645, -3.9413, -11.7063, 45.5107, -3.9413, -11.7063, 51.2184, -3.9413, -8.3616, 54.072197, -3.9413, -6.6893, 51.2184, -3.9413, -6.6893, 51.2184, -3.9413, -6.6893, 54.072197, -3.9413, -6.6893, 54.072197, -3.9413, -5.0169997, 48.3645, -3.9413, -10.033899, 51.2184, -3.9413, -8.3616, 48.3645, -3.9413, -8.3616, 48.3645, -3.9413, -8.3616, 51.2184, -3.9413, -8.3616, 51.2184, -3.9413, -6.6893, 45.5107, -3.9413, -11.7063, 48.3645, -3.9413, -10.033899, 45.5107, -3.9413, -10.033899, 45.5107, -3.9413, -10.033899, 48.3645, -3.9413, -10.033899, 48.3645, -3.9413, -8.3616, 51.2184, -3.9413, -6.6893, 54.072197, -3.9413, -5.0169997, 51.2184, -3.9413, -5.0169997, 51.2184, -3.9413, -5.0169997, 54.072197, -3.9413, -5.0169997, 54.072197, -3.9413, -3.3446, 48.3645, -3.9413, -8.3616, 51.2184, -3.9413, -6.6893, 48.3645, -3.9413, -6.6893, 48.3645, -3.9413, -6.6893, 51.2184, -3.9413, -6.6893, 51.2184, -3.9413, -5.0169997, 45.5107, -3.9413, -10.033899, 48.3645, -3.9413, -8.3616, 45.5107, -3.9413, -8.3616, 45.5107, -3.9413, -8.3616, 48.3645, -3.9413, -8.3616, 48.3645, -3.9413, -6.6893, 51.2184, -3.9413, -5.0169997, 54.072197, -3.9413, -3.3446, 51.2184, -3.9413, -3.3446, 51.2184, -3.9413, -3.3446, 54.072197, -3.9413, -3.3446, 54.072197, -3.9413, -1.6723, 48.3645, -3.9413, -6.6893, 51.2184, -3.9413, -5.0169997, 48.3645, -3.9413, -5.0169997, 48.3645, -3.9413, -5.0169997, 51.2184, -3.9413, -5.0169997, 51.2184, -3.9413, -3.3446, 45.5107, -3.9413, -8.3616, 48.3645, -3.9413, -6.6893, 45.5107, -3.9413, -6.6893, 45.5107, -3.9413, -6.6893, 48.3645, -3.9413, -6.6893, 48.3645, -3.9413, -5.0169997, 51.2184, -3.9413, -3.3446, 54.072197, -3.9413, -1.6723, 51.2184, -3.9413, -1.6723, 51.2184, -3.9413, -1.6723, 54.072197, -3.9413, -1.6723, 54.072197, -3.9413, 0, 48.3645, -3.9413, -5.0169997, 51.2184, -3.9413, -3.3446, 48.3645, -3.9413, -3.3446, 48.3645, -3.9413, -3.3446, 51.2184, -3.9413, -3.3446, 51.2184, -3.9413, -1.6723, 45.5107, -3.9413, -6.6893, 48.3645, -3.9413, -5.0169997, 45.5107, -3.9413, -5.0169997, 45.5107, -3.9413, -5.0169997, 48.3645, -3.9413, -5.0169997, 48.3645, -3.9413, -3.3446, 51.2184, -3.9413, -1.6723, 54.072197, -3.9413, 0, 51.2184, -3.9413, 0, 51.2184, -3.9413, 0, 54.072197, -3.9413, 0, 54.072197, -3.9413, 1.6723, 48.3645, -3.9413, -3.3446, 51.2184, -3.9413, -1.6723, 48.3645, -3.9413, -1.6723, 48.3645, -3.9413, -1.6723, 51.2184, -3.9413, -1.6723, 51.2184, -3.9413, 0, 45.5107, -3.9413, -5.0169997, 48.3645, -3.9413, -3.3446, 45.5107, -3.9413, -3.3446, 45.5107, -3.9413, -3.3446, 48.3645, -3.9413, -3.3446, 48.3645, -3.9413, -1.6723, 51.2184, -3.9413, 0, 54.072197, -3.9413, 1.6723, 51.2184, -3.9413, 1.6723, 51.2184, -3.9413, 1.6723, 54.072197, -3.9413, 1.6723, 54.072197, -3.9413, 3.3446, 48.3645, -3.9413, -1.6723, 51.2184, -3.9413, 0, 48.3645, -3.9413, 0, 48.3645, -3.9413, 0, 51.2184, -3.9413, 0, 51.2184, -3.9413, 1.6723, 45.5107, -3.9413, -3.3446, 48.3645, -3.9413, -1.6723, 45.5107, -3.9413, -1.6723, 45.5107, -3.9413, -1.6723, 48.3645, -3.9413, -1.6723, 48.3645, -3.9413, 0, 51.2184, -3.9413, 1.6723, 54.072197, -3.9413, 3.3446, 51.2184, -3.9413, 3.3446, 51.2184, -3.9413, 3.3446, 54.072197, -3.9413, 3.3446, 54.072197, -3.9413, 5.0169997, 48.3645, -3.9413, 0, 51.2184, -3.9413, 1.6723, 48.3645, -3.9413, 1.6723, 48.3645, -3.9413, 1.6723, 51.2184, -3.9413, 1.6723, 51.2184, -3.9413, 3.3446, 45.5107, -3.9413, -1.6723, 48.3645, -3.9413, 0, 45.5107, -3.9413, 0, 45.5107, -3.9413, 0, 48.3645, -3.9413, 0, 48.3645, -3.9413, 1.6723, 51.2184, -3.9413, 3.3446, 54.072197, -3.9413, 5.0169997, 51.2184, -3.9413, 5.0169997, 51.2184, -3.9413, 5.0169997, 54.072197, -3.9413, 5.0169997, 54.072197, -3.9413, 6.6893, 48.3645, -3.9413, 1.6723, 51.2184, -3.9413, 3.3446, 48.3645, -3.9413, 3.3446, 48.3645, -3.9413, 3.3446, 51.2184, -3.9413, 3.3446, 51.2184, -3.9413, 5.0169997, 45.5107, -3.9413, 0, 48.3645, -3.9413, 1.6723, 45.5107, -3.9413, 1.6723, 45.5107, -3.9413, 1.6723, 48.3645, -3.9413, 1.6723, 48.3645, -3.9413, 3.3446, 51.2184, -3.9413, 5.0169997, 54.072197, -3.9413, 6.6893, 51.2184, -3.9413, 6.6893, 51.2184, -3.9413, 6.6893, 54.072197, -3.9413, 6.6893, 54.072197, -3.9413, 8.3616, 48.3645, -3.9413, 3.3446, 51.2184, -3.9413, 5.0169997, 48.3645, -3.9413, 5.0169997, 48.3645, -3.9413, 5.0169997, 51.2184, -3.9413, 5.0169997, 51.2184, -3.9413, 6.6893, 45.5107, -3.9413, 1.6723, 48.3645, -3.9413, 3.3446, 45.5107, -3.9413, 3.3446, 45.5107, -3.9413, 3.3446, 48.3645, -3.9413, 3.3446, 48.3645, -3.9413, 5.0169997, 51.2184, -3.9413, 6.6893, 54.072197, -3.9413, 8.3616, 51.2184, -3.9413, 8.3616, 51.2184, -3.9413, 8.3616, 54.072197, -3.9413, 8.3616, 54.072197, -3.9413, 10.033899, 48.3645, -3.9413, 5.0169997, 51.2184, -3.9413, 6.6893, 48.3645, -3.9413, 6.6893, 48.3645, -3.9413, 6.6893, 51.2184, -3.9413, 6.6893, 51.2184, -3.9413, 8.3616, 45.5107, -3.9413, 3.3446, 48.3645, -3.9413, 5.0169997, 45.5107, -3.9413, 5.0169997, 45.5107, -3.9413, 5.0169997, 48.3645, -3.9413, 5.0169997, 48.3645, -3.9413, 6.6893, 51.2184, -3.9413, 8.3616, 54.072197, -3.9413, 10.033899, 51.2184, -3.9413, 10.033899, 51.2184, -3.9413, 10.033899, 54.072197, -3.9413, 10.033899, 54.072197, -3.9413, 11.7063, 48.3645, -3.9413, 6.6893, 51.2184, -3.9413, 8.3616, 48.3645, -3.9413, 8.3616, 48.3645, -3.9413, 8.3616, 51.2184, -3.9413, 8.3616, 51.2184, -3.9413, 10.033899, 45.5107, -3.9413, 5.0169997, 48.3645, -3.9413, 6.6893, 45.5107, -3.9413, 6.6893, 45.5107, -3.9413, 6.6893, 48.3645, -3.9413, 6.6893, 48.3645, -3.9413, 8.3616, 51.2184, -3.9413, 10.033899, 54.072197, -3.9413, 11.7063, 51.2184, -3.9413, 11.7063, 51.2184, -3.9413, 11.7063, 54.072197, -3.9413, 11.7063, 54.072197, -3.9413, 13.3786, 48.3645, -3.9413, 8.3616, 51.2184, -3.9413, 10.033899, 48.3645, -3.9413, 10.033899, 48.3645, -3.9413, 10.033899, 51.2184, -3.9413, 10.033899, 51.2184, -3.9413, 11.7063, 45.5107, -3.9413, 6.6893, 48.3645, -3.9413, 8.3616, 45.5107, -3.9413, 8.3616, 45.5107, -3.9413, 8.3616, 48.3645, -3.9413, 8.3616, 48.3645, -3.9413, 10.033899, 51.2184, -3.9413, 11.7063, 54.072197, -3.9413, 13.3786, 51.2184, -3.9413, 13.3786, 51.2184, -3.9413, 13.3786, 54.072197, -3.9413, 13.3786, 54.072197, -3.9413, 15.0508995, 48.3645, -3.9413, 10.033899, 51.2184, -3.9413, 11.7063, 48.3645, -3.9413, 11.7063, 48.3645, -3.9413, 11.7063, 51.2184, -3.9413, 11.7063, 51.2184, -3.9413, 13.3786, 45.5107, -3.9413, 8.3616, 48.3645, -3.9413, 10.033899, 45.5107, -3.9413, 10.033899, 45.5107, -3.9413, 10.033899, 48.3645, -3.9413, 10.033899, 48.3645, -3.9413, 11.7063, 51.2184, -3.9413, 13.3786, 54.072197, -3.9413, 15.0508995, 51.2184, -3.9413, 15.0508995, 51.2184, -3.9413, 15.0508995, 54.072197, -3.9413, 15.0508995, 54.072197, -3.9413, 16.7232, 48.3645, -3.9413, 11.7063, 51.2184, -3.9413, 13.3786, 48.3645, -3.9413, 13.3786, 48.3645, -3.9413, 13.3786, 51.2184, -3.9413, 13.3786, 51.2184, -3.9413, 15.0508995, 45.5107, -3.9413, 10.033899, 48.3645, -3.9413, 11.7063, 45.5107, -3.9413, 11.7063, 45.5107, -3.9413, 11.7063, 48.3645, -3.9413, 11.7063, 48.3645, -3.9413, 13.3786, 51.2184, -3.9413, 15.0508995, 54.072197, -3.9413, 16.7232, 51.2184, -3.9413, 16.7232, 51.2184, -3.9413, 16.7232, 54.072197, -3.9413, 16.7232, 54.072197, -3.9413, 18.3955, 48.3645, -3.9413, 13.3786, 51.2184, -3.9413, 15.0508995, 48.3645, -3.9413, 15.0508995, 48.3645, -3.9413, 15.0508995, 51.2184, -3.9413, 15.0508995, 51.2184, -3.9413, 16.7232, 45.5107, -3.9413, 11.7063, 48.3645, -3.9413, 13.3786, 45.5107, -3.9413, 13.3786, 45.5107, -3.9413, 13.3786, 48.3645, -3.9413, 13.3786, 48.3645, -3.9413, 15.0508995, 51.2184, -3.9413, 16.7232, 54.072197, -3.9413, 18.3955, 51.2184, -3.9413, 18.3955, 51.2184, -3.9413, 18.3955, 54.072197, -3.9413, 18.3955, 54.072197, -3.9413, 20.0679, 48.3645, -3.9413, 15.0508995, 51.2184, -3.9413, 16.7232, 48.3645, -3.9413, 16.7232, 48.3645, -3.9413, 16.7232, 51.2184, -3.9413, 16.7232, 51.2184, -3.9413, 18.3955, 45.5107, -3.9413, 13.3786, 48.3645, -3.9413, 15.0508995, 45.5107, -3.9413, 15.0508995, 45.5107, -3.9413, 15.0508995, 48.3645, -3.9413, 15.0508995, 48.3645, -3.9413, 16.7232, 51.2184, -3.9413, 18.3955, 54.072197, -3.9413, 20.0679, 51.2184, -3.9413, 20.0679, 51.2184, -3.9413, 20.0679, 54.072197, -3.9413, 20.0679, 54.072197, -3.9413, 21.7402, 48.3645, -3.9413, 16.7232, 51.2184, -3.9413, 18.3955, 48.3645, -3.9413, 18.3955, 48.3645, -3.9413, 18.3955, 51.2184, -3.9413, 18.3955, 51.2184, -3.9413, 20.0679, 45.5107, -3.9413, 15.0508995, 48.3645, -3.9413, 16.7232, 45.5107, -3.9413, 16.7232, 45.5107, -3.9413, 16.7232, 48.3645, -3.9413, 16.7232, 48.3645, -3.9413, 18.3955, 51.2184, -3.9413, 20.0679, 54.072197, -3.9413, 21.7402, 51.2184, -3.9413, 21.7402, 51.2184, -3.9413, 21.7402, 54.072197, -3.9413, 21.7402, 54.072197, -3.9413, 23.412498, 48.3645, -3.9413, 18.3955, 51.2184, -3.9413, 20.0679, 48.3645, -3.9413, 20.0679, 48.3645, -3.9413, 20.0679, 51.2184, -3.9413, 20.0679, 51.2184, -3.9413, 21.7402, 45.5107, -3.9413, 16.7232, 48.3645, -3.9413, 18.3955, 45.5107, -3.9413, 18.3955, 45.5107, -3.9413, 18.3955, 48.3645, -3.9413, 18.3955, 48.3645, -3.9413, 20.0679, 51.2184, -3.9413, 21.7402, 54.072197, -3.9413, 23.412498, 51.2184, -3.9413, 23.412498, 51.2184, -3.9413, 23.412498, 54.072197, -3.9413, 23.412498, 54.072197, -3.9413, 25.084799, 48.3645, -3.9413, 20.0679, 51.2184, -3.9413, 21.7402, 48.3645, -3.9413, 21.7402, 48.3645, -3.9413, 21.7402, 51.2184, -3.9413, 21.7402, 51.2184, -3.9413, 23.412498, 45.5107, -3.9413, 18.3955, 48.3645, -3.9413, 20.0679, 45.5107, -3.9413, 20.0679, 45.5107, -3.9413, 20.0679, 48.3645, -3.9413, 20.0679, 48.3645, -3.9413, 21.7402, 51.2184, -3.9413, 23.412498, 54.072197, -3.9413, 25.084799, 51.2184, -3.9413, 25.084799, 51.2184, -3.9413, 25.084799, 54.072197, -3.9413, 25.084799, 54.072197, -3.9413, 26.7572, 51.2184, -3.9413, 25.084799, 54.072197, -3.9413, 26.7572, 51.2184, -3.9413, 26.7572, 48.3645, -3.9413, 23.412498, 51.2184, -3.9413, 23.412498, 51.2184, -3.9413, 25.084799, 48.3645, -3.9413, 21.7402, 51.2184, -3.9413, 23.412498, 48.3645, -3.9413, 23.412498, 48.3645, -3.9413, 25.084799, 51.2184, -3.9413, 25.084799, 51.2184, -3.9413, 26.7572, 48.3645, -3.9413, 23.412498, 51.2184, -3.9413, 25.084799, 48.3645, -3.9413, 25.084799, 48.3645, -3.9413, 25.084799, 51.2184, -3.9413, 26.7572, 48.3645, -3.9413, 26.7572, 45.5107, -3.9413, 21.7402, 48.3645, -3.9413, 21.7402, 48.3645, -3.9413, 23.412498, 45.5107, -3.9413, 20.0679, 48.3645, -3.9413, 21.7402, 45.5107, -3.9413, 21.7402, 45.5107, -3.9413, 23.412498, 48.3645, -3.9413, 23.412498, 48.3645, -3.9413, 25.084799, 45.5107, -3.9413, 21.7402, 48.3645, -3.9413, 23.412498, 45.5107, -3.9413, 23.412498, 45.5107, -3.9413, 25.084799, 48.3645, -3.9413, 25.084799, 48.3645, -3.9413, 26.7572, 45.5107, -3.9413, 23.412498, 48.3645, -3.9413, 25.084799, 45.5107, -3.9413, 25.084799, 45.5107, -3.9413, 25.084799, 48.3645, -3.9413, 26.7572, 45.5107, -3.9413, 26.7572, 42.6568, -3.9413, 25.084799, 45.5107, -3.9413, 25.084799, 45.5107, -3.9413, 26.7572, 42.6568, -3.9413, 25.084799, 45.5107, -3.9413, 26.7572, 42.6568, -3.9413, 26.7572, 39.7973, -3.9413, 25.084799, 42.6568, -3.9413, 25.084799, 42.6568, -3.9413, 26.7572, 39.7973, -3.9413, 25.084799, 42.6568, -3.9413, 26.7572, 39.7973, -3.9413, 26.7572, 39.7973, -3.9413, 23.412498, 42.6568, -3.9413, 25.084799, 39.7973, -3.9413, 25.084799, 42.6568, -3.9413, 23.412498, 45.5107, -3.9413, 25.084799, 42.6568, -3.9413, 25.084799, 39.7973, -3.9413, 23.412498, 42.6568, -3.9413, 23.412498, 42.6568, -3.9413, 25.084799, 42.6568, -3.9413, 23.412498, 45.5107, -3.9413, 23.412498, 45.5107, -3.9413, 25.084799, 39.7973, -3.9413, 21.7402, 42.6568, -3.9413, 23.412498, 39.7973, -3.9413, 23.412498, 42.6568, -3.9413, 21.7402, 45.5107, -3.9413, 23.412498, 42.6568, -3.9413, 23.412498, 39.7973, -3.9413, 21.7402, 42.6568, -3.9413, 21.7402, 42.6568, -3.9413, 23.412498, 42.6568, -3.9413, 21.7402, 45.5107, -3.9413, 21.7402, 45.5107, -3.9413, 23.412498, 39.7973, -3.9413, 20.0679, 42.6568, -3.9413, 21.7402, 39.7973, -3.9413, 21.7402, 42.6568, -3.9413, 20.0679, 45.5107, -3.9413, 21.7402, 42.6568, -3.9413, 21.7402, 39.7973, -3.9413, 20.0679, 42.6568, -3.9413, 20.0679, 42.6568, -3.9413, 21.7402, 42.6568, -3.9413, 20.0679, 45.5107, -3.9413, 20.0679, 45.5107, -3.9413, 21.7402, 39.7973, -3.9413, 18.3955, 42.6568, -3.9413, 20.0679, 39.7973, -3.9413, 20.0679, 42.6568, -3.9413, 18.3955, 45.5107, -3.9413, 20.0679, 42.6568, -3.9413, 20.0679, 39.7973, -3.9413, 18.3955, 42.6568, -3.9413, 18.3955, 42.6568, -3.9413, 20.0679, 42.6568, -3.9413, 18.3955, 45.5107, -3.9413, 18.3955, 45.5107, -3.9413, 20.0679, 39.7973, -3.9413, 16.7232, 42.6568, -3.9413, 18.3955, 39.7973, -3.9413, 18.3955, 42.6568, -3.9413, 16.7232, 45.5107, -3.9413, 18.3955, 42.6568, -3.9413, 18.3955, 39.7973, -3.9413, 16.7232, 42.6568, -3.9413, 16.7232, 42.6568, -3.9413, 18.3955, 42.6568, -3.9413, 16.7232, 45.5107, -3.9413, 16.7232, 45.5107, -3.9413, 18.3955, 39.7973, -3.9413, 15.0508995, 42.6568, -3.9413, 16.7232, 39.7973, -3.9413, 16.7232, 42.6568, -3.9413, 15.0508995, 45.5107, -3.9413, 16.7232, 42.6568, -3.9413, 16.7232, 39.7973, -3.9413, 15.0508995, 42.6568, -3.9413, 15.0508995, 42.6568, -3.9413, 16.7232, 42.6568, -3.9413, 15.0508995, 45.5107, -3.9413, 15.0508995, 45.5107, -3.9413, 16.7232, 39.7973, -3.9413, 13.3786, 42.6568, -3.9413, 15.0508995, 39.7973, -3.9413, 15.0508995, 42.6568, -3.9413, 13.3786, 45.5107, -3.9413, 15.0508995, 42.6568, -3.9413, 15.0508995, 39.7973, -3.9413, 13.3786, 42.6568, -3.9413, 13.3786, 42.6568, -3.9413, 15.0508995, 42.6568, -3.9413, 13.3786, 45.5107, -3.9413, 13.3786, 45.5107, -3.9413, 15.0508995, 39.7973, -3.9413, 11.7063, 42.6568, -3.9413, 13.3786, 39.7973, -3.9413, 13.3786, 42.6568, -3.9413, 11.7063, 45.5107, -3.9413, 13.3786, 42.6568, -3.9413, 13.3786, 39.7973, -3.9413, 11.7063, 42.6568, -3.9413, 11.7063, 42.6568, -3.9413, 13.3786, 42.6568, -3.9413, 11.7063, 45.5107, -3.9413, 11.7063, 45.5107, -3.9413, 13.3786, 39.7973, -3.9413, 10.033899, 42.6568, -3.9413, 11.7063, 39.7973, -3.9413, 11.7063, 42.6568, -3.9413, 10.033899, 45.5107, -3.9413, 11.7063, 42.6568, -3.9413, 11.7063, 39.7973, -3.9413, 10.033899, 42.6568, -3.9413, 10.033899, 42.6568, -3.9413, 11.7063, 42.6568, -3.9413, 10.033899, 45.5107, -3.9413, 10.033899, 45.5107, -3.9413, 11.7063, 39.7973, -3.9413, 8.3616, 42.6568, -3.9413, 10.033899, 39.7973, -3.9413, 10.033899, 42.6568, -3.9413, 8.3616, 45.5107, -3.9413, 10.033899, 42.6568, -3.9413, 10.033899, 39.7973, -3.9413, 8.3616, 42.6568, -3.9413, 8.3616, 42.6568, -3.9413, 10.033899, 42.6568, -3.9413, 8.3616, 45.5107, -3.9413, 8.3616, 45.5107, -3.9413, 10.033899, 39.7973, -3.9413, 6.6893, 42.6568, -3.9413, 8.3616, 39.7973, -3.9413, 8.3616, 42.6568, -3.9413, 6.6893, 45.5107, -3.9413, 8.3616, 42.6568, -3.9413, 8.3616, 39.7973, -3.9413, 6.6893, 42.6568, -3.9413, 6.6893, 42.6568, -3.9413, 8.3616, 42.6568, -3.9413, 6.6893, 45.5107, -3.9413, 6.6893, 45.5107, -3.9413, 8.3616, 39.7973, -3.9413, 5.0169997, 42.6568, -3.9413, 6.6893, 39.7973, -3.9413, 6.6893, 42.6568, -3.9413, 5.0169997, 45.5107, -3.9413, 6.6893, 42.6568, -3.9413, 6.6893, 39.7973, -3.9413, 5.0169997, 42.6568, -3.9413, 5.0169997, 42.6568, -3.9413, 6.6893, 42.6568, -3.9413, 5.0169997, 45.5107, -3.9413, 5.0169997, 45.5107, -3.9413, 6.6893, 39.7973, -3.9413, 3.3446, 42.6568, -3.9413, 5.0169997, 39.7973, -3.9413, 5.0169997, 42.6568, -3.9413, 3.3446, 45.5107, -3.9413, 5.0169997, 42.6568, -3.9413, 5.0169997, 39.7973, -3.9413, 3.3446, 42.6568, -3.9413, 3.3446, 42.6568, -3.9413, 5.0169997, 42.6568, -3.9413, 3.3446, 45.5107, -3.9413, 3.3446, 45.5107, -3.9413, 5.0169997, 39.7973, -3.9413, 1.6723, 42.6568, -3.9413, 3.3446, 39.7973, -3.9413, 3.3446, 42.6568, -3.9413, 1.6723, 45.5107, -3.9413, 3.3446, 42.6568, -3.9413, 3.3446, 39.7973, -3.9413, 1.6723, 42.6568, -3.9413, 1.6723, 42.6568, -3.9413, 3.3446, 42.6568, -3.9413, 1.6723, 45.5107, -3.9413, 1.6723, 45.5107, -3.9413, 3.3446, 39.7973, -3.9413, 0, 42.6568, -3.9413, 1.6723, 39.7973, -3.9413, 1.6723, 42.6568, -3.9413, 0, 45.5107, -3.9413, 1.6723, 42.6568, -3.9413, 1.6723, 39.7973, -3.9413, 0, 42.6568, -3.9413, 0, 42.6568, -3.9413, 1.6723, 42.6568, -3.9413, 0, 45.5107, -3.9413, 0, 45.5107, -3.9413, 1.6723, 39.7973, -3.9413, -1.6723, 42.6568, -3.9413, 0, 39.7973, -3.9413, 0, 42.6568, -3.9413, -1.6723, 45.5107, -3.9413, 0, 42.6568, -3.9413, 0, 39.7973, -3.9413, -1.6723, 42.6568, -3.9413, -1.6723, 42.6568, -3.9413, 0, 42.6568, -3.9413, -1.6723, 45.5107, -3.9413, -1.6723, 45.5107, -3.9413, 0, 39.7973, -3.9413, -3.3446, 42.6568, -3.9413, -1.6723, 39.7973, -3.9413, -1.6723, 42.6568, -3.9413, -3.3446, 45.5107, -3.9413, -1.6723, 42.6568, -3.9413, -1.6723, 39.7973, -3.9413, -3.3446, 42.6568, -3.9413, -3.3446, 42.6568, -3.9413, -1.6723, 42.6568, -3.9413, -3.3446, 45.5107, -3.9413, -3.3446, 45.5107, -3.9413, -1.6723, 39.7973, -3.9413, -5.0169997, 42.6568, -3.9413, -3.3446, 39.7973, -3.9413, -3.3446, 42.6568, -3.9413, -5.0169997, 45.5107, -3.9413, -3.3446, 42.6568, -3.9413, -3.3446, 39.7973, -3.9413, -5.0169997, 42.6568, -3.9413, -5.0169997, 42.6568, -3.9413, -3.3446, 42.6568, -3.9413, -5.0169997, 45.5107, -3.9413, -5.0169997, 45.5107, -3.9413, -3.3446, 39.7973, -3.9413, -6.6893, 42.6568, -3.9413, -5.0169997, 39.7973, -3.9413, -5.0169997, 42.6568, -3.9413, -6.6893, 45.5107, -3.9413, -5.0169997, 42.6568, -3.9413, -5.0169997, 39.7973, -3.9413, -6.6893, 42.6568, -3.9413, -6.6893, 42.6568, -3.9413, -5.0169997, 42.6568, -3.9413, -6.6893, 45.5107, -3.9413, -6.6893, 45.5107, -3.9413, -5.0169997, 39.7973, -3.9413, -8.3616, 42.6568, -3.9413, -6.6893, 39.7973, -3.9413, -6.6893, 42.6568, -3.9413, -8.3616, 45.5107, -3.9413, -6.6893, 42.6568, -3.9413, -6.6893, 39.7973, -3.9413, -8.3616, 42.6568, -3.9413, -8.3616, 42.6568, -3.9413, -6.6893, 42.6568, -3.9413, -8.3616, 45.5107, -3.9413, -8.3616, 45.5107, -3.9413, -6.6893, 39.7973, -3.9413, -10.033899, 42.6568, -3.9413, -8.3616, 39.7973, -3.9413, -8.3616, 42.6568, -3.9413, -10.033899, 45.5107, -3.9413, -8.3616, 42.6568, -3.9413, -8.3616, 39.7973, -3.9413, -10.033899, 42.6568, -3.9413, -10.033899, 42.6568, -3.9413, -8.3616, 42.6568, -3.9413, -10.033899, 45.5107, -3.9413, -10.033899, 45.5107, -3.9413, -8.3616, 39.7973, -3.9413, -11.7063, 42.6568, -3.9413, -10.033899, 39.7973, -3.9413, -10.033899, 42.6568, -3.9413, -11.7063, 45.5107, -3.9413, -10.033899, 42.6568, -3.9413, -10.033899, 39.7973, -3.9413, -11.7063, 42.6568, -3.9413, -11.7063, 42.6568, -3.9413, -10.033899, 42.6568, -3.9413, -11.7063, 45.5107, -3.9413, -11.7063, 45.5107, -3.9413, -10.033899, 39.7973, -3.9413, -13.3786, 42.6568, -3.9413, -11.7063, 39.7973, -3.9413, -11.7063, 42.6568, -3.9413, -13.3786, 45.5107, -3.9413, -11.7063, 42.6568, -3.9413, -11.7063, 39.7973, -3.9413, -13.3786, 42.6568, -3.9413, -13.3786, 42.6568, -3.9413, -11.7063, 42.6568, -3.9413, -13.3786, 45.5107, -3.9413, -13.3786, 45.5107, -3.9413, -11.7063, 39.7973, -3.9413, -15.0508995, 42.6568, -3.9413, -13.3786, 39.7973, -3.9413, -13.3786, 39.7973, -3.9413, -15.0508995, 42.6568, -3.9413, -15.0508995, 42.6568, -3.9413, -13.3786, 42.6568, -3.9413, -15.0508995, 45.5107, -3.9413, -13.3786, 42.6568, -3.9413, -13.3786, 39.7973, -3.9413, -16.7232, 42.6568, -3.9413, -15.0508995, 39.7973, -3.9413, -15.0508995, 42.6568, -3.9413, -15.0508995, 45.5107, -3.9413, -15.0508995, 45.5107, -3.9413, -13.3786, 45.5107, -3.9413, -15.0508995, 48.3645, -3.9413, -13.3786, 45.5107, -3.9413, -13.3786, 39.7973, -3.9413, -16.7232, 42.6568, -3.9413, -16.7232, 42.6568, -3.9413, -15.0508995, 42.6568, -3.9413, -16.7232, 45.5107, -3.9413, -15.0508995, 42.6568, -3.9413, -15.0508995, 39.7973, -3.9413, -18.3955, 42.6568, -3.9413, -16.7232, 39.7973, -3.9413, -16.7232, 45.5107, -3.9413, -15.0508995, 48.3645, -3.9413, -15.0508995, 48.3645, -3.9413, -13.3786, 39.7973, -3.9413, -18.3955, 42.6568, -3.9413, -18.3955, 42.6568, -3.9413, -16.7232, 42.6568, -3.9413, -16.7232, 45.5107, -3.9413, -16.7232, 45.5107, -3.9413, -15.0508995, 45.5107, -3.9413, -16.7232, 48.3645, -3.9413, -15.0508995, 45.5107, -3.9413, -15.0508995, 42.6568, -3.9413, -18.3955, 45.5107, -3.9413, -16.7232, 42.6568, -3.9413, -16.7232, 39.7973, -3.9413, -20.0679, 42.6568, -3.9413, -18.3955, 39.7973, -3.9413, -18.3955, 45.5107, -3.9413, -16.7232, 48.3645, -3.9413, -16.7232, 48.3645, -3.9413, -15.0508995, 48.3645, -3.9413, -16.7232, 51.2184, -3.9413, -15.0508995, 48.3645, -3.9413, -15.0508995, 42.6568, -3.9413, -18.3955, 45.5107, -3.9413, -18.3955, 45.5107, -3.9413, -16.7232, 45.5107, -3.9413, -18.3955, 48.3645, -3.9413, -16.7232, 45.5107, -3.9413, -16.7232, 39.7973, -3.9413, -20.0679, 42.6568, -3.9413, -20.0679, 42.6568, -3.9413, -18.3955, 42.6568, -3.9413, -20.0679, 45.5107, -3.9413, -18.3955, 42.6568, -3.9413, -18.3955, 39.7973, -3.9413, -21.7402, 42.6568, -3.9413, -20.0679, 39.7973, -3.9413, -20.0679, 48.3645, -3.9413, -16.7232, 51.2184, -3.9413, -16.7232, 51.2184, -3.9413, -15.0508995, 51.2184, -3.9413, -16.7232, 54.072197, -3.9413, -15.0508995, 51.2184, -3.9413, -15.0508995, 51.2184, -3.9413, -16.7232, 54.072197, -3.9413, -16.7232, 54.072197, -3.9413, -15.0508995, 48.3645, -3.9413, -18.3955, 51.2184, -3.9413, -16.7232, 48.3645, -3.9413, -16.7232, 45.5107, -3.9413, -18.3955, 48.3645, -3.9413, -18.3955, 48.3645, -3.9413, -16.7232, 51.2184, -3.9413, -18.3955, 54.072197, -3.9413, -16.7232, 51.2184, -3.9413, -16.7232, 48.3645, -3.9413, -18.3955, 51.2184, -3.9413, -18.3955, 51.2184, -3.9413, -16.7232, 51.2184, -3.9413, -18.3955, 54.072197, -3.9413, -18.3955, 54.072197, -3.9413, -16.7232, 45.5107, -3.9413, -20.0679, 48.3645, -3.9413, -18.3955, 45.5107, -3.9413, -18.3955, 42.6568, -3.9413, -20.0679, 45.5107, -3.9413, -20.0679, 45.5107, -3.9413, -18.3955, 48.3645, -3.9413, -20.0679, 51.2184, -3.9413, -18.3955, 48.3645, -3.9413, -18.3955, 45.5107, -3.9413, -20.0679, 48.3645, -3.9413, -20.0679, 48.3645, -3.9413, -18.3955, 51.2184, -3.9413, -20.0679, 54.072197, -3.9413, -18.3955, 51.2184, -3.9413, -18.3955, 48.3645, -3.9413, -20.0679, 51.2184, -3.9413, -20.0679, 51.2184, -3.9413, -18.3955, 51.2184, -3.9413, -20.0679, 54.072197, -3.9413, -20.0679, 54.072197, -3.9413, -18.3955, 39.7973, -3.9413, -21.7402, 42.6568, -3.9413, -21.7402, 42.6568, -3.9413, -20.0679, 42.6568, -3.9413, -21.7402, 45.5107, -3.9413, -20.0679, 42.6568, -3.9413, -20.0679, 39.7973, -3.9413, -23.412498, 42.6568, -3.9413, -21.7402, 39.7973, -3.9413, -21.7402, 45.5107, -3.9413, -21.7402, 48.3645, -3.9413, -20.0679, 45.5107, -3.9413, -20.0679, 42.6568, -3.9413, -21.7402, 45.5107, -3.9413, -21.7402, 45.5107, -3.9413, -20.0679, 39.7973, -3.9413, -23.412498, 42.6568, -3.9413, -23.412498, 42.6568, -3.9413, -21.7402, 42.6568, -3.9413, -23.412498, 45.5107, -3.9413, -21.7402, 42.6568, -3.9413, -21.7402, 39.7973, -3.9413, -25.084799, 42.6568, -3.9413, -23.412498, 39.7973, -3.9413, -23.412498, 45.5107, -3.9413, -21.7402, 48.3645, -3.9413, -21.7402, 48.3645, -3.9413, -20.0679, 48.3645, -3.9413, -21.7402, 51.2184, -3.9413, -20.0679, 48.3645, -3.9413, -20.0679, 42.6568, -3.9413, -23.412498, 45.5107, -3.9413, -23.412498, 45.5107, -3.9413, -21.7402, 45.5107, -3.9413, -23.412498, 48.3645, -3.9413, -21.7402, 45.5107, -3.9413, -21.7402, 39.7973, -3.9413, -25.084799, 42.6568, -3.9413, -25.084799, 42.6568, -3.9413, -23.412498, 42.6568, -3.9413, -25.084799, 45.5107, -3.9413, -23.412498, 42.6568, -3.9413, -23.412498, 39.7973, -3.9413, -26.7572, 42.6568, -3.9413, -25.084799, 39.7973, -3.9413, -25.084799, 39.7973, -3.9413, -26.7572, 42.6568, -3.9413, -26.7572, 42.6568, -3.9413, -25.084799, 42.6568, -3.9413, -26.7572, 45.5107, -3.9413, -25.084799, 42.6568, -3.9413, -25.084799, 42.6568, -3.9413, -25.084799, 45.5107, -3.9413, -25.084799, 45.5107, -3.9413, -23.412498, 42.6568, -3.9413, -26.7572, 45.5107, -3.9413, -26.7572, 45.5107, -3.9413, -25.084799, 45.5107, -3.9413, -23.412498, 48.3645, -3.9413, -23.412498, 48.3645, -3.9413, -21.7402, 45.5107, -3.9413, -25.084799, 48.3645, -3.9413, -23.412498, 45.5107, -3.9413, -23.412498, 45.5107, -3.9413, -26.7572, 48.3645, -3.9413, -25.084799, 45.5107, -3.9413, -25.084799, 45.5107, -3.9413, -25.084799, 48.3645, -3.9413, -25.084799, 48.3645, -3.9413, -23.412498, 45.5107, -3.9413, -26.7572, 48.3645, -3.9413, -26.7572, 48.3645, -3.9413, -25.084799, 48.3645, -3.9413, -21.7402, 51.2184, -3.9413, -21.7402, 51.2184, -3.9413, -20.0679, 48.3645, -3.9413, -23.412498, 51.2184, -3.9413, -21.7402, 48.3645, -3.9413, -21.7402, 51.2184, -3.9413, -21.7402, 54.072197, -3.9413, -20.0679, 51.2184, -3.9413, -20.0679, 51.2184, -3.9413, -21.7402, 54.072197, -3.9413, -21.7402, 54.072197, -3.9413, -20.0679, 48.3645, -3.9413, -23.412498, 51.2184, -3.9413, -23.412498, 51.2184, -3.9413, -21.7402, 51.2184, -3.9413, -23.412498, 54.072197, -3.9413, -21.7402, 51.2184, -3.9413, -21.7402, 48.3645, -3.9413, -25.084799, 51.2184, -3.9413, -23.412498, 48.3645, -3.9413, -23.412498, 51.2184, -3.9413, -23.412498, 54.072197, -3.9413, -23.412498, 54.072197, -3.9413, -21.7402, 48.3645, -3.9413, -26.7572, 51.2184, -3.9413, -25.084799, 48.3645, -3.9413, -25.084799, 48.3645, -3.9413, -25.084799, 51.2184, -3.9413, -25.084799, 51.2184, -3.9413, -23.412498, 51.2184, -3.9413, -25.084799, 54.072197, -3.9413, -23.412498, 51.2184, -3.9413, -23.412498, 48.3645, -3.9413, -26.7572, 51.2184, -3.9413, -26.7572, 51.2184, -3.9413, -25.084799, 51.2184, -3.9413, -25.084799, 54.072197, -3.9413, -25.084799, 54.072197, -3.9413, -23.412498, 51.2184, -3.9413, -26.7572, 54.072197, -3.9413, -25.084799, 51.2184, -3.9413, -25.084799, 51.2184, -3.9413, -26.7572, 54.072197, -3.9413, -26.7572, 54.072197, -3.9413, -25.084799, 29.679499, -0.6044, -15.0508995, 32.4649, -1.1213, -13.3786, 29.679499, -0.6044, -13.3786, 29.679499, -0.6044, -13.3786, 32.4649, -1.1213, -13.3786, 32.4649, -1.1213, -11.7063, 29.679499, -0.6044, -15.0508995, 32.4649, -1.1213, -15.0508995, 32.4649, -1.1213, -13.3786, 29.679499, -0.6044, -13.3786, 32.4649, -1.1213, -11.7063, 29.679499, -0.6044, -11.7063, 29.679499, -0.6044, -16.7232, 32.4649, -1.1213, -15.0508995, 29.679499, -0.6044, -15.0508995, 29.679499, -0.6044, -11.7063, 32.4649, -1.1213, -11.7063, 32.4649, -1.1213, -10.033899, 29.679499, -0.6044, -16.7232, 32.4649, -1.1213, -16.7232, 32.4649, -1.1213, -15.0508995, 29.679499, -0.6044, -11.7063, 32.4649, -1.1213, -10.033899, 29.679499, -0.6044, -10.033899, 29.679499, -0.6044, -18.3955, 32.4649, -1.1213, -16.7232, 29.679499, -0.6044, -16.7232, 29.679499, -0.6044, -10.033899, 32.4649, -1.1213, -10.033899, 32.4649, -1.1213, -8.3616, 29.679499, -0.6044, -18.3955, 32.4649, -1.1213, -18.3955, 32.4649, -1.1213, -16.7232, 29.679499, -0.6044, -10.033899, 32.4649, -1.1213, -8.3616, 29.679499, -0.6044, -8.3616, 29.679499, -0.6044, -20.0679, 32.4649, -1.1213, -18.3955, 29.679499, -0.6044, -18.3955, 29.679499, -0.6044, -8.3616, 32.4649, -1.1213, -8.3616, 32.4649, -1.1213, -6.6893, 29.679499, -0.6044, -20.0679, 32.4649, -1.1213, -20.0679, 32.4649, -1.1213, -18.3955, 29.679499, -0.6044, -8.3616, 32.4649, -1.1213, -6.6893, 29.679499, -0.6044, -6.6893, 29.679499, -0.6044, -21.7402, 32.4649, -1.1213, -20.0679, 29.679499, -0.6044, -20.0679, 29.679499, -0.6044, -6.6893, 32.4649, -1.1213, -6.6893, 32.4649, -1.1213, -5.0169997, 29.679499, -0.6044, -21.7402, 32.4649, -1.1213, -21.7402, 32.4649, -1.1213, -20.0679, 29.679499, -0.6044, -6.6893, 32.4649, -1.1213, -5.0169997, 29.679499, -0.6044, -5.0169997, 29.679499, -0.6044, -23.412498, 32.4649, -1.1213, -21.7402, 29.679499, -0.6044, -21.7402, 29.679499, -0.6044, -5.0169997, 32.4649, -1.1213, -5.0169997, 32.4649, -1.1213, -3.3446, 29.679499, -0.6044, -23.412498, 32.4649, -1.1213, -23.412498, 32.4649, -1.1213, -21.7402, 29.679499, -0.6044, -5.0169997, 32.4649, -1.1213, -3.3446, 29.679499, -0.6044, -3.3446, 29.679499, -0.6044, -25.084799, 32.4649, -1.1213, -23.412498, 29.679499, -0.6044, -23.412498, 29.679499, -0.6044, -3.3446, 32.4649, -1.1213, -3.3446, 32.4649, -1.1213, -1.6723, 29.679499, -0.6044, -25.084799, 32.4649, -1.1213, -25.084799, 32.4649, -1.1213, -23.412498, 29.679499, -0.6044, -26.7572, 32.4649, -1.1213, -25.084799, 29.679499, -0.6044, -25.084799, 29.679499, -0.6044, -26.7572, 32.4649, -1.1213, -26.7572, 32.4649, -1.1213, -25.084799, 29.679499, -0.6044, -3.3446, 32.4649, -1.1213, -1.6723, 29.679499, -0.6044, -1.6723, 29.679499, -0.6044, -1.6723, 32.4649, -1.1213, -1.6723, 32.4649, -1.1213, 0, 29.679499, -0.6044, -1.6723, 32.4649, -1.1213, 0, 29.679499, -0.6044, 0, 29.679499, -0.6044, 0, 32.4649, -1.1213, 0, 32.4649, -1.1213, 1.6723, 29.679499, -0.6044, 0, 32.4649, -1.1213, 1.6723, 29.679499, -0.6044, 1.6723, 29.679499, -0.6044, 1.6723, 32.4649, -1.1213, 1.6723, 32.4649, -1.1213, 3.3446, 29.679499, -0.6044, 1.6723, 32.4649, -1.1213, 3.3446, 29.679499, -0.6044, 3.3446, 29.679499, -0.6044, 3.3446, 32.4649, -1.1213, 3.3446, 32.4649, -1.1213, 5.0169997, 29.679499, -0.6044, 3.3446, 32.4649, -1.1213, 5.0169997, 29.679499, -0.6044, 5.0169997, 29.679499, -0.6044, 5.0169997, 32.4649, -1.1213, 5.0169997, 32.4649, -1.1213, 6.6893, 29.679499, -0.6044, 5.0169997, 32.4649, -1.1213, 6.6893, 29.679499, -0.6044, 6.6893, 29.679499, -0.6044, 6.6893, 32.4649, -1.1213, 6.6893, 32.4649, -1.1213, 8.3616, 29.679499, -0.6044, 6.6893, 32.4649, -1.1213, 8.3616, 29.679499, -0.6044, 8.3616, 29.679499, -0.6044, 8.3616, 32.4649, -1.1213, 8.3616, 32.4649, -1.1213, 10.033899, 29.679499, -0.6044, 8.3616, 32.4649, -1.1213, 10.033899, 29.679499, -0.6044, 10.033899, 29.679499, -0.6044, 10.033899, 32.4649, -1.1213, 10.033899, 32.4649, -1.1213, 11.7063, 29.679499, -0.6044, 10.033899, 32.4649, -1.1213, 11.7063, 29.679499, -0.6044, 11.7063, 29.679499, -0.6044, 11.7063, 32.4649, -1.1213, 11.7063, 32.4649, -1.1213, 13.3786, 29.679499, -0.6044, 11.7063, 32.4649, -1.1213, 13.3786, 29.679499, -0.6044, 13.3786, 29.679499, -0.6044, 13.3786, 32.4649, -1.1213, 13.3786, 32.4649, -1.1213, 15.0508995, 29.679499, -0.6044, 13.3786, 32.4649, -1.1213, 15.0508995, 29.679499, -0.6044, 15.0508995, 29.679499, -0.6044, 15.0508995, 32.4649, -1.1213, 15.0508995, 32.4649, -1.1213, 16.7232, 29.679499, -0.6044, 15.0508995, 32.4649, -1.1213, 16.7232, 29.679499, -0.6044, 16.7232, 29.679499, -0.6044, 16.7232, 32.4649, -1.1213, 16.7232, 32.4649, -1.1213, 18.3955, 29.679499, -0.6044, 16.7232, 32.4649, -1.1213, 18.3955, 29.679499, -0.6044, 18.3955, 29.679499, -0.6044, 18.3955, 32.4649, -1.1213, 18.3955, 32.4649, -1.1213, 20.0679, 29.679499, -0.6044, 18.3955, 32.4649, -1.1213, 20.0679, 29.679499, -0.6044, 20.0679, 29.679499, -0.6044, 20.0679, 32.4649, -1.1213, 20.0679, 32.4649, -1.1213, 21.7402, 29.679499, -0.6044, 20.0679, 32.4649, -1.1213, 21.7402, 29.679499, -0.6044, 21.7402, 29.679499, -0.6044, 21.7402, 32.4649, -1.1213, 21.7402, 32.4649, -1.1213, 23.412498, 29.679499, -0.6044, 21.7402, 32.4649, -1.1213, 23.412498, 29.679499, -0.6044, 23.412498, 29.679499, -0.6044, 23.412498, 32.4649, -1.1213, 23.412498, 32.4649, -1.1213, 25.084799, 29.679499, -0.6044, 23.412498, 32.4649, -1.1213, 25.084799, 29.679499, -0.6044, 25.084799, 29.679499, -0.6044, 25.084799, 32.4649, -1.1213, 25.084799, 32.4649, -1.1213, 26.7572, 29.679499, -0.6044, 25.084799, 32.4649, -1.1213, 26.7572, 29.679499, -0.6044, 26.7572, 32.4649, -1.1213, -15.0508995, 39.7973, -3.9413, -13.3786, 32.4649, -1.1213, -13.3786, 32.4649, -1.1213, -13.3786, 39.7973, -3.9413, -13.3786, 39.7973, -3.9413, -11.7063, 32.4649, -1.1213, -15.0508995, 39.7973, -3.9413, -15.0508995, 39.7973, -3.9413, -13.3786, 32.4649, -1.1213, -13.3786, 39.7973, -3.9413, -11.7063, 32.4649, -1.1213, -11.7063, 32.4649, -1.1213, -16.7232, 39.7973, -3.9413, -15.0508995, 32.4649, -1.1213, -15.0508995, 32.4649, -1.1213, -11.7063, 39.7973, -3.9413, -11.7063, 39.7973, -3.9413, -10.033899, 32.4649, -1.1213, -16.7232, 39.7973, -3.9413, -16.7232, 39.7973, -3.9413, -15.0508995, 32.4649, -1.1213, -11.7063, 39.7973, -3.9413, -10.033899, 32.4649, -1.1213, -10.033899, 32.4649, -1.1213, -18.3955, 39.7973, -3.9413, -16.7232, 32.4649, -1.1213, -16.7232, 32.4649, -1.1213, -10.033899, 39.7973, -3.9413, -10.033899, 39.7973, -3.9413, -8.3616, 32.4649, -1.1213, -18.3955, 39.7973, -3.9413, -18.3955, 39.7973, -3.9413, -16.7232, 32.4649, -1.1213, -10.033899, 39.7973, -3.9413, -8.3616, 32.4649, -1.1213, -8.3616, 32.4649, -1.1213, -20.0679, 39.7973, -3.9413, -18.3955, 32.4649, -1.1213, -18.3955, 32.4649, -1.1213, -8.3616, 39.7973, -3.9413, -8.3616, 39.7973, -3.9413, -6.6893, 32.4649, -1.1213, -20.0679, 39.7973, -3.9413, -20.0679, 39.7973, -3.9413, -18.3955, 32.4649, -1.1213, -8.3616, 39.7973, -3.9413, -6.6893, 32.4649, -1.1213, -6.6893, 32.4649, -1.1213, -21.7402, 39.7973, -3.9413, -20.0679, 32.4649, -1.1213, -20.0679, 32.4649, -1.1213, -6.6893, 39.7973, -3.9413, -6.6893, 39.7973, -3.9413, -5.0169997, 32.4649, -1.1213, -21.7402, 39.7973, -3.9413, -21.7402, 39.7973, -3.9413, -20.0679, 32.4649, -1.1213, -6.6893, 39.7973, -3.9413, -5.0169997, 32.4649, -1.1213, -5.0169997, 32.4649, -1.1213, -23.412498, 39.7973, -3.9413, -21.7402, 32.4649, -1.1213, -21.7402, 32.4649, -1.1213, -5.0169997, 39.7973, -3.9413, -5.0169997, 39.7973, -3.9413, -3.3446, 32.4649, -1.1213, -23.412498, 39.7973, -3.9413, -23.412498, 39.7973, -3.9413, -21.7402, 32.4649, -1.1213, -5.0169997, 39.7973, -3.9413, -3.3446, 32.4649, -1.1213, -3.3446, 32.4649, -1.1213, -25.084799, 39.7973, -3.9413, -23.412498, 32.4649, -1.1213, -23.412498, 32.4649, -1.1213, -3.3446, 39.7973, -3.9413, -3.3446, 39.7973, -3.9413, -1.6723, 32.4649, -1.1213, -25.084799, 39.7973, -3.9413, -25.084799, 39.7973, -3.9413, -23.412498, 32.4649, -1.1213, -26.7572, 39.7973, -3.9413, -25.084799, 32.4649, -1.1213, -25.084799, 32.4649, -1.1213, -26.7572, 39.7973, -3.9413, -26.7572, 39.7973, -3.9413, -25.084799, 32.4649, -1.1213, -3.3446, 39.7973, -3.9413, -1.6723, 32.4649, -1.1213, -1.6723, 32.4649, -1.1213, -1.6723, 39.7973, -3.9413, -1.6723, 39.7973, -3.9413, 0, 32.4649, -1.1213, -1.6723, 39.7973, -3.9413, 0, 32.4649, -1.1213, 0, 32.4649, -1.1213, 0, 39.7973, -3.9413, 0, 39.7973, -3.9413, 1.6723, 32.4649, -1.1213, 0, 39.7973, -3.9413, 1.6723, 32.4649, -1.1213, 1.6723, 32.4649, -1.1213, 1.6723, 39.7973, -3.9413, 1.6723, 39.7973, -3.9413, 3.3446, 32.4649, -1.1213, 1.6723, 39.7973, -3.9413, 3.3446, 32.4649, -1.1213, 3.3446, 32.4649, -1.1213, 3.3446, 39.7973, -3.9413, 3.3446, 39.7973, -3.9413, 5.0169997, 32.4649, -1.1213, 3.3446, 39.7973, -3.9413, 5.0169997, 32.4649, -1.1213, 5.0169997, 32.4649, -1.1213, 5.0169997, 39.7973, -3.9413, 5.0169997, 39.7973, -3.9413, 6.6893, 32.4649, -1.1213, 5.0169997, 39.7973, -3.9413, 6.6893, 32.4649, -1.1213, 6.6893, 32.4649, -1.1213, 6.6893, 39.7973, -3.9413, 6.6893, 39.7973, -3.9413, 8.3616, 32.4649, -1.1213, 6.6893, 39.7973, -3.9413, 8.3616, 32.4649, -1.1213, 8.3616, 32.4649, -1.1213, 8.3616, 39.7973, -3.9413, 8.3616, 39.7973, -3.9413, 10.033899, 32.4649, -1.1213, 8.3616, 39.7973, -3.9413, 10.033899, 32.4649, -1.1213, 10.033899, 32.4649, -1.1213, 10.033899, 39.7973, -3.9413, 10.033899, 39.7973, -3.9413, 11.7063, 32.4649, -1.1213, 10.033899, 39.7973, -3.9413, 11.7063, 32.4649, -1.1213, 11.7063, 32.4649, -1.1213, 11.7063, 39.7973, -3.9413, 11.7063, 39.7973, -3.9413, 13.3786, 32.4649, -1.1213, 11.7063, 39.7973, -3.9413, 13.3786, 32.4649, -1.1213, 13.3786, 32.4649, -1.1213, 13.3786, 39.7973, -3.9413, 13.3786, 39.7973, -3.9413, 15.0508995, 32.4649, -1.1213, 13.3786, 39.7973, -3.9413, 15.0508995, 32.4649, -1.1213, 15.0508995, 32.4649, -1.1213, 15.0508995, 39.7973, -3.9413, 15.0508995, 39.7973, -3.9413, 16.7232, 32.4649, -1.1213, 15.0508995, 39.7973, -3.9413, 16.7232, 32.4649, -1.1213, 16.7232, 32.4649, -1.1213, 16.7232, 39.7973, -3.9413, 16.7232, 39.7973, -3.9413, 18.3955, 32.4649, -1.1213, 16.7232, 39.7973, -3.9413, 18.3955, 32.4649, -1.1213, 18.3955, 32.4649, -1.1213, 18.3955, 39.7973, -3.9413, 18.3955, 39.7973, -3.9413, 20.0679, 32.4649, -1.1213, 18.3955, 39.7973, -3.9413, 20.0679, 32.4649, -1.1213, 20.0679, 32.4649, -1.1213, 20.0679, 39.7973, -3.9413, 20.0679, 39.7973, -3.9413, 21.7402, 32.4649, -1.1213, 20.0679, 39.7973, -3.9413, 21.7402, 32.4649, -1.1213, 21.7402, 32.4649, -1.1213, 21.7402, 39.7973, -3.9413, 21.7402, 39.7973, -3.9413, 23.412498, 32.4649, -1.1213, 21.7402, 39.7973, -3.9413, 23.412498, 32.4649, -1.1213, 23.412498, 32.4649, -1.1213, 23.412498, 39.7973, -3.9413, 23.412498, 39.7973, -3.9413, 25.084799, 32.4649, -1.1213, 23.412498, 39.7973, -3.9413, 25.084799, 32.4649, -1.1213, 25.084799, 32.4649, -1.1213, 25.084799, 39.7973, -3.9413, 25.084799, 39.7973, -3.9413, 26.7572, 32.4649, -1.1213, 25.084799, 39.7973, -3.9413, 26.7572, 32.4649, -1.1213, 26.7572, 26.7572, -0.2593, 16.7232, 29.679499, -0.6044, 18.3955, 26.7572, -0.2593, 18.3955, 26.7572, -0.2593, 18.3955, 29.679499, -0.6044, 18.3955, 29.679499, -0.6044, 20.0679, 26.7572, -0.2593, 16.7232, 29.679499, -0.6044, 16.7232, 29.679499, -0.6044, 18.3955, 26.7572, -0.2593, 18.3955, 29.679499, -0.6044, 20.0679, 26.7572, -0.2593, 20.0679, 26.7572, -0.2593, 15.0508995, 29.679499, -0.6044, 16.7232, 26.7572, -0.2593, 16.7232, 26.7572, -0.2593, 20.0679, 29.679499, -0.6044, 20.0679, 29.679499, -0.6044, 21.7402, 26.7572, -0.2593, 15.0508995, 29.679499, -0.6044, 15.0508995, 29.679499, -0.6044, 16.7232, 26.7572, -0.2593, 20.0679, 29.679499, -0.6044, 21.7402, 26.7572, -0.2593, 21.7402, 26.7572, -0.2593, 13.3786, 29.679499, -0.6044, 15.0508995, 26.7572, -0.2593, 15.0508995, 26.7572, -0.2593, 21.7402, 29.679499, -0.6044, 21.7402, 29.679499, -0.6044, 23.412498, 26.7572, -0.2593, 13.3786, 29.679499, -0.6044, 13.3786, 29.679499, -0.6044, 15.0508995, 26.7572, -0.2593, 21.7402, 29.679499, -0.6044, 23.412498, 26.7572, -0.2593, 23.412498, 26.7572, -0.2593, 11.7063, 29.679499, -0.6044, 13.3786, 26.7572, -0.2593, 13.3786, 26.7572, -0.2593, 23.412498, 29.679499, -0.6044, 23.412498, 29.679499, -0.6044, 25.084799, 26.7572, -0.2593, 11.7063, 29.679499, -0.6044, 11.7063, 29.679499, -0.6044, 13.3786, 26.7572, -0.2593, 23.412498, 29.679499, -0.6044, 25.084799, 26.7572, -0.2593, 25.084799, 26.7572, -0.2593, 25.084799, 29.679499, -0.6044, 25.084799, 29.679499, -0.6044, 26.7572, 26.7572, -0.2593, 25.084799, 29.679499, -0.6044, 26.7572, 26.7572, -0.2593, 26.7572, 26.7572, -0.2593, 10.033899, 29.679499, -0.6044, 11.7063, 26.7572, -0.2593, 11.7063, 26.7572, -0.2593, 10.033899, 29.679499, -0.6044, 10.033899, 29.679499, -0.6044, 11.7063, 26.7572, -0.2593, 8.3616, 29.679499, -0.6044, 10.033899, 26.7572, -0.2593, 10.033899, 26.7572, -0.2593, 8.3616, 29.679499, -0.6044, 8.3616, 29.679499, -0.6044, 10.033899, 26.7572, -0.2593, 6.6893, 29.679499, -0.6044, 8.3616, 26.7572, -0.2593, 8.3616, 26.7572, -0.2593, 6.6893, 29.679499, -0.6044, 6.6893, 29.679499, -0.6044, 8.3616, 26.7572, -0.2593, 5.0169997, 29.679499, -0.6044, 6.6893, 26.7572, -0.2593, 6.6893, 26.7572, -0.2593, 5.0169997, 29.679499, -0.6044, 5.0169997, 29.679499, -0.6044, 6.6893, 26.7572, -0.2593, 3.3446, 29.679499, -0.6044, 5.0169997, 26.7572, -0.2593, 5.0169997, 26.7572, -0.2593, 3.3446, 29.679499, -0.6044, 3.3446, 29.679499, -0.6044, 5.0169997, 26.7572, -0.2593, 1.6723, 29.679499, -0.6044, 3.3446, 26.7572, -0.2593, 3.3446, 26.7572, -0.2593, 1.6723, 29.679499, -0.6044, 1.6723, 29.679499, -0.6044, 3.3446, 26.7572, -0.2593, 0, 29.679499, -0.6044, 1.6723, 26.7572, -0.2593, 1.6723, 26.7572, -0.2593, 0, 29.679499, -0.6044, 0, 29.679499, -0.6044, 1.6723, 26.7572, -0.2593, -1.6723, 29.679499, -0.6044, 0, 26.7572, -0.2593, 0, 26.7572, -0.2593, -1.6723, 29.679499, -0.6044, -1.6723, 29.679499, -0.6044, 0, 26.7572, -0.2593, -3.3446, 29.679499, -0.6044, -1.6723, 26.7572, -0.2593, -1.6723, 26.7572, -0.2593, -3.3446, 29.679499, -0.6044, -3.3446, 29.679499, -0.6044, -1.6723, 26.7572, -0.2593, -5.0169997, 29.679499, -0.6044, -3.3446, 26.7572, -0.2593, -3.3446, 26.7572, -0.2593, -5.0169997, 29.679499, -0.6044, -5.0169997, 29.679499, -0.6044, -3.3446, 26.7572, -0.2593, -6.6893, 29.679499, -0.6044, -5.0169997, 26.7572, -0.2593, -5.0169997, 26.7572, -0.2593, -6.6893, 29.679499, -0.6044, -6.6893, 29.679499, -0.6044, -5.0169997, 26.7572, -0.2593, -8.3616, 29.679499, -0.6044, -6.6893, 26.7572, -0.2593, -6.6893, 26.7572, -0.2593, -8.3616, 29.679499, -0.6044, -8.3616, 29.679499, -0.6044, -6.6893, 26.7572, -0.2593, -10.033899, 29.679499, -0.6044, -8.3616, 26.7572, -0.2593, -8.3616, 26.7572, -0.2593, -10.033899, 29.679499, -0.6044, -10.033899, 29.679499, -0.6044, -8.3616, 26.7572, -0.2593, -11.7063, 29.679499, -0.6044, -10.033899, 26.7572, -0.2593, -10.033899, 26.7572, -0.2593, -11.7063, 29.679499, -0.6044, -11.7063, 29.679499, -0.6044, -10.033899, 26.7572, -0.2593, -13.3786, 29.679499, -0.6044, -11.7063, 26.7572, -0.2593, -11.7063, 26.7572, -0.2593, -13.3786, 29.679499, -0.6044, -13.3786, 29.679499, -0.6044, -11.7063, 26.7572, -0.2593, -15.0508995, 29.679499, -0.6044, -13.3786, 26.7572, -0.2593, -13.3786, 26.7572, -0.2593, -15.0508995, 29.679499, -0.6044, -15.0508995, 29.679499, -0.6044, -13.3786, 26.7572, -0.2593, -16.7232, 29.679499, -0.6044, -15.0508995, 26.7572, -0.2593, -15.0508995, 26.7572, -0.2593, -16.7232, 29.679499, -0.6044, -16.7232, 29.679499, -0.6044, -15.0508995, 26.7572, -0.2593, -18.3955, 29.679499, -0.6044, -16.7232, 26.7572, -0.2593, -16.7232, 26.7572, -0.2593, -18.3955, 29.679499, -0.6044, -18.3955, 29.679499, -0.6044, -16.7232, 26.7572, -0.2593, -20.0679, 29.679499, -0.6044, -18.3955, 26.7572, -0.2593, -18.3955, 26.7572, -0.2593, -20.0679, 29.679499, -0.6044, -20.0679, 29.679499, -0.6044, -18.3955, 26.7572, -0.2593, -21.7402, 29.679499, -0.6044, -20.0679, 26.7572, -0.2593, -20.0679, 26.7572, -0.2593, -21.7402, 29.679499, -0.6044, -21.7402, 29.679499, -0.6044, -20.0679, 26.7572, -0.2593, -23.412498, 29.679499, -0.6044, -21.7402, 26.7572, -0.2593, -21.7402, 26.7572, -0.2593, -23.412498, 29.679499, -0.6044, -23.412498, 29.679499, -0.6044, -21.7402, 26.7572, -0.2593, -25.084799, 29.679499, -0.6044, -23.412498, 26.7572, -0.2593, -23.412498, 26.7572, -0.2593, -25.084799, 29.679499, -0.6044, -25.084799, 29.679499, -0.6044, -23.412498, 26.7572, -0.2593, -26.7572, 29.679499, -0.6044, -25.084799, 26.7572, -0.2593, -25.084799, 26.7572, -0.2593, -26.7572, 29.679499, -0.6044, -26.7572, 29.679499, -0.6044, -25.084799) @@ -293,3 +294,7 @@ position = Vector3(-3.25, 3.42, 11.25) [node name="DecorShopWorld" parent="Interactables" instance=ExtResource("25_decor_shop")] position = Vector3(-3.25, 3.42, 11.25) rotation = Vector3(0, 1.5707964, 0) + +[node name="RVUpgradeShopWorld" parent="Interactables" instance=ExtResource("26_rv_upgrade")] +position = Vector3(-6.25, 3.42, 9) +rotation = Vector3(0, 1.5707964, 0) diff --git a/world/regions/world_region.gd b/world/regions/world_region.gd index 85f6e1b..d054938 100644 --- a/world/regions/world_region.gd +++ b/world/regions/world_region.gd @@ -22,6 +22,10 @@ func get_decor_shop() -> DecorShopInteraction: return null +func get_rv_upgrade_shop() -> RVUpgradeInteraction: + return null + + func get_player_storage() -> PlayerStorageInteraction: return null @@ -42,10 +46,24 @@ func get_spawn_surface_triangles( _material_names: Array[StringName], _minimum_global_y: float, _minimum_up_dot: float = 0.6, + _maximum_global_y: float = 100.0, ) -> Array[PackedVector3Array]: return [] +func get_saltwater_surface_height() -> float: + for water_region: FishableWaterRegion in get_fishable_water_regions(): + if water_region.water_type == WaterType.Type.SALT_WATER: + return water_region.get_surface_height() + return NAN + + +## Authored regions are assumed to expose only deliberately reachable home +## sites. Procedural regions override this to reject isolated elevations. +func is_home_exterior_position_accessible(_position: Vector3) -> bool: + return true + + func get_fishable_water_regions() -> Array[FishableWaterRegion]: var regions: Array[FishableWaterRegion] = [] var root: Node = get_node_or_null(fishable_water_root) diff --git a/world/rv_upgrade_interaction.gd b/world/rv_upgrade_interaction.gd new file mode 100644 index 0000000..fb24246 --- /dev/null +++ b/world/rv_upgrade_interaction.gd @@ -0,0 +1,15 @@ +class_name RVUpgradeInteraction +extends FishingShopInteraction + +const TENT_DIALOGUE_TEXT: String = ( + "That tent is looking awful cramped. Can I talk you into an upgrade?" +) +const RV_DIALOGUE_TEXT: String = "How's the new RV treating you?" + + +func get_dialogue_text(home_tier: int = -1) -> String: + return ( + RV_DIALOGUE_TEXT + if home_tier >= PlayerHomeState.STARTER_RV_TIER + else TENT_DIALOGUE_TEXT + ) diff --git a/world/rv_upgrade_interaction.gd.uid b/world/rv_upgrade_interaction.gd.uid new file mode 100644 index 0000000..cb57804 --- /dev/null +++ b/world/rv_upgrade_interaction.gd.uid @@ -0,0 +1 @@ +uid://c0h08goorv2of diff --git a/world/test_world.gd b/world/test_world.gd index 1b0a813..2e25206 100644 --- a/world/test_world.gd +++ b/world/test_world.gd @@ -10,6 +10,9 @@ const PlayerStorageInteractionType = preload( const DecorShopInteractionType = preload( "res://world/decor_shop_interaction.gd" ) +const RVUpgradeInteractionType = preload( + "res://world/rv_upgrade_interaction.gd" +) const WorldLayoutType = preload("res://world/world_layout.gd") const GENERATED_REGION_SCENE: PackedScene = preload( "res://world/generation/generated_world_region.tscn" @@ -75,6 +78,10 @@ func get_decor_shop() -> DecorShopInteractionType: return _active_region.get_decor_shop() +func get_rv_upgrade_shop() -> RVUpgradeInteractionType: + return _active_region.get_rv_upgrade_shop() + + func get_player_spawn_transform() -> Transform3D: return _active_region.get_player_spawn_transform() @@ -170,10 +177,29 @@ func get_saltwater_shoreline_mesh() -> MeshInstance3D: func get_spawn_surface_triangles( material_names: Array[StringName], minimum_global_y: float, + minimum_up_dot: float = 0.6, + maximum_global_y: float = 100.0, ) -> Array[PackedVector3Array]: return _active_region.get_spawn_surface_triangles( material_names, minimum_global_y, + minimum_up_dot, + maximum_global_y, + ) + + +func get_saltwater_surface_height() -> float: + return ( + _active_region.get_saltwater_surface_height() + if _active_region != null + else NAN + ) + + +func is_home_exterior_position_accessible(position: Vector3) -> bool: + return ( + _active_region != null + and _active_region.is_home_exterior_position_accessible(position) ) From 0158b0215f63a409de7ec532bad581f2ae82e5b7 Mon Sep 17 00:00:00 2001 From: Voyager Date: Mon, 31 Aug 2026 16:04:34 -0400 Subject: [PATCH 90/90] Scale coastal crab spawning by habitat --- gathering/catalog/crab_blue.tres | 3 + gathering/catalog/crab_brown.tres | 3 + gathering/gatherable_data.gd | 37 ++++++++++ network/network_world_spawn_service.gd | 61 ++++++++++++++-- tests/fish_catalog_content_validation.gd | 61 ++++++---------- tests/generated_world_runtime_validation.gd | 80 ++++++++++++++++++++- tests/logbook_validation.gd | 7 +- tests/world_spawn_multiplayer_validation.gd | 27 +++++-- tests/world_spawn_protocol_validation.gd | 41 +++++++++-- 9 files changed, 261 insertions(+), 59 deletions(-) diff --git a/gathering/catalog/crab_blue.tres b/gathering/catalog/crab_blue.tres index 1ccabe8..705948e 100644 --- a/gathering/catalog/crab_blue.tres +++ b/gathering/catalog/crab_blue.tres @@ -10,5 +10,8 @@ catch_data = ExtResource("2_catch") required_tool_id = &"crab_net" surface_materials = Array[StringName]([&"sand"]) minimum_surface_y = -0.8 +surface_water_relation = 2 population = 4 +surface_population_per_100_square_meters = 0.4 +maximum_surface_population = 16 sprite_pixel_size = 0.0005 diff --git a/gathering/catalog/crab_brown.tres b/gathering/catalog/crab_brown.tres index 83d20c8..b27bb7e 100644 --- a/gathering/catalog/crab_brown.tres +++ b/gathering/catalog/crab_brown.tres @@ -10,7 +10,10 @@ catch_data = ExtResource("2_catch") required_tool_id = &"crab_net" surface_materials = Array[StringName]([&"sand"]) minimum_surface_y = -0.44 +surface_water_relation = 1 population = 2 +surface_population_per_100_square_meters = 0.15 +maximum_surface_population = 24 movement_speed = 0.35 roam_radius = 3.5 scare_radius = 2.8 diff --git a/gathering/gatherable_data.gd b/gathering/gatherable_data.gd index d60dcc9..41de7fe 100644 --- a/gathering/gatherable_data.gd +++ b/gathering/gatherable_data.gd @@ -10,6 +10,12 @@ enum PresentationMode { WATER_SPURT, } +enum SurfaceWaterRelation { + ANY, + ABOVE_SALT_WATER, + BELOW_SALT_WATER, +} + @export var type_id: StringName @export var catch_data: FishDataType @export var required_tool_id: StringName @@ -17,12 +23,20 @@ enum PresentationMode { @export var diggable_area_id: StringName @export var spawn_anchor_set_id: StringName @export_range(-100.0, 100.0, 0.01) var minimum_surface_y: float = 0.08 +@export_range(-100.0, 100.0, 0.01) var maximum_surface_y: float = 100.0 +@export var surface_water_relation := SurfaceWaterRelation.ANY +@export_range(0.0, 2.0, 0.01) var waterline_margin: float = 0.01 @export_range(0, 64, 1) var population: int = 0 ## Anchored gatherables can scale with authored/generated attachment geometry. ## Zero preserves the fixed population above. @export_range(0.0, 1.0, 0.01) var spawn_anchor_occupancy_ratio := 0.0 ## Zero leaves the anchor count as the only ceiling. @export_range(0, 256, 1) var maximum_anchor_population := 0 +## Optional density scaling for large generated surfaces. The authored +## population remains the minimum while the maximum keeps large maps bounded. +@export_range(0.0, 8.0, 0.01) +var surface_population_per_100_square_meters := 0.0 +@export_range(0, 256, 1) var maximum_surface_population := 0 @export var presentation_mode: PresentationMode = PresentationMode.VISIBLE_CREATURE @export var requires_sneaking: bool = true @export_range(0.0, 120.0, 0.1) var active_lifetime_seconds: float = 0.0 @@ -77,6 +91,7 @@ func is_valid() -> bool: or uses_spawn_anchors or not surface_materials.is_empty() ) + and maximum_surface_y >= minimum_surface_y and ( not uses_diggable_area or catch_data.collection_method @@ -87,6 +102,10 @@ func is_valid() -> bool: maximum_anchor_population == 0 or maximum_anchor_population >= population ) + and ( + maximum_surface_population == 0 + or maximum_surface_population >= population + ) and movement_parameters_valid and _quality_multipliers_are_valid( quality_movement_speed_multipliers @@ -126,6 +145,24 @@ func target_population_for_anchor_count(anchor_count: int) -> int: return target +func target_population_for_surface_area(surface_area: float) -> int: + if surface_population_per_100_square_meters <= 0.0: + return population + if surface_area <= 0.0: + return 0 + var target := maxi( + population, + ceili( + surface_area + * surface_population_per_100_square_meters + / 100.0 + ), + ) + if maximum_surface_population > 0: + target = mini(target, maximum_surface_population) + return target + + func can_be_scared() -> bool: return not is_stationary_spawn() and scare_radius > 0.0 diff --git a/network/network_world_spawn_service.gd b/network/network_world_spawn_service.gd index a45ad37..8981237 100644 --- a/network/network_world_spawn_service.gd +++ b/network/network_world_spawn_service.gd @@ -43,6 +43,7 @@ var _entity_revisions: Dictionary = {} var _surface_triangles: Dictionary = {} var _surface_areas: Dictionary = {} var _surface_total_areas: Dictionary = {} +var _surface_height_ranges: Dictionary = {} var _spawn_anchor_positions: Dictionary = {} var _respawns: Array[Dictionary] = [] var _next_respawn_by_type: Dictionary[StringName, float] = {} @@ -322,10 +323,14 @@ func _cache_spawn_surface(entry: GatherableDataType) -> void: if not entry.diggable_area_id.is_empty(): triangles = _world.get_diggable_area_triangles(entry.diggable_area_id) else: + var height_range := _resolved_surface_height_range(entry) triangles = _world.get_spawn_surface_triangles( entry.surface_materials, - entry.minimum_surface_y, + height_range.x, + 0.6, + height_range.y, ) + _surface_height_ranges[entry.type_id] = height_range var areas := PackedFloat32Array() var total_area: float = 0.0 for triangle: PackedVector3Array in triangles: @@ -519,9 +524,18 @@ func _sample_surface_position( if triangles.is_empty() or total_area <= 0.0: return Vector3(INF, INF, INF) var validates_diggable_surface := not entry.diggable_area_id.is_empty() + var height_range: Vector2 = _surface_height_ranges.get( + entry.type_id, + Vector2(entry.minimum_surface_y, entry.maximum_surface_y), + ) + var validates_height_range := _surface_height_ranges.has(entry.type_id) var attempts: int = ( 48 - if validates_diggable_surface or is_finite(maximum_distance) + if ( + validates_diggable_surface + or validates_height_range + or is_finite(maximum_distance) + ) else 1 ) var fallback: Vector3 = Vector3(INF, INF, INF) @@ -551,9 +565,20 @@ func _sample_surface_position( point, ) ) - if within_requested_distance and valid_diggable_surface: + var valid_height := ( + not validates_height_range + or ( + point.y > height_range.x + and point.y < height_range.y + ) + ) + if ( + within_requested_distance + and valid_diggable_surface + and valid_height + ): return point - if validates_diggable_surface: + if validates_diggable_surface or validates_height_range: return Vector3(INF, INF, INF) if origin.is_finite() and is_finite(maximum_distance): return origin @@ -1405,8 +1430,12 @@ func _reconcile_seasonal_population() -> void: func _target_population(entry: GatherableDataType) -> int: - if entry == null or entry.spawn_anchor_set_id.is_empty(): - return entry.population if entry != null else 0 + if entry == null: + return 0 + if entry.spawn_anchor_set_id.is_empty(): + return entry.target_population_for_surface_area( + float(_surface_total_areas.get(entry.type_id, 0.0)) + ) var anchors: PackedVector3Array = _spawn_anchor_positions.get( entry.type_id, PackedVector3Array(), @@ -1414,6 +1443,25 @@ func _target_population(entry: GatherableDataType) -> int: return entry.target_population_for_anchor_count(anchors.size()) +func _resolved_surface_height_range(entry: GatherableDataType) -> Vector2: + var minimum_y := entry.minimum_surface_y + var maximum_y := entry.maximum_surface_y + var saltwater_height := _world.get_saltwater_surface_height() + if is_finite(saltwater_height): + match entry.surface_water_relation: + GatherableDataType.SurfaceWaterRelation.ABOVE_SALT_WATER: + minimum_y = maxf( + minimum_y, + saltwater_height + entry.waterline_margin, + ) + GatherableDataType.SurfaceWaterRelation.BELOW_SALT_WATER: + maximum_y = minf( + maximum_y, + saltwater_height - entry.waterline_margin, + ) + return Vector2(minimum_y, maximum_y) + + func _population_for_type(type_id: StringName) -> int: var count: int = 0 for state: Dictionary in _entities.values(): @@ -1445,6 +1493,7 @@ func _clear_world() -> void: _surface_triangles.clear() _surface_areas.clear() _surface_total_areas.clear() + _surface_height_ranges.clear() _spawn_anchor_positions.clear() _respawns.clear() _next_respawn_by_type.clear() diff --git a/tests/fish_catalog_content_validation.gd b/tests/fish_catalog_content_validation.gd index 3b31005..82f5604 100644 --- a/tests/fish_catalog_content_validation.gd +++ b/tests/fish_catalog_content_validation.gd @@ -40,39 +40,17 @@ const StarterRegionScene = preload( const SharedFishPlaceholder: Texture2D = preload( "res://art/exported/creatures/fish_placeholder.png" ) -const FINAL_CREATURE_TEXTURE_PATHS: Dictionary[StringName, String] = { - &"bowfin": "res://art/exported/creatures/101.png", - &"sturgeon_lake": "res://art/exported/creatures/102.png", - &"gar_longnose": "res://art/exported/creatures/103.png", - &"paddlefish": "res://art/exported/creatures/104.png", - &"sturgeon_shovelnose": "res://art/exported/creatures/105.png", - &"gar_spotted": "res://art/exported/creatures/106.png", - &"lungfish_west_african": "res://art/exported/creatures/107.png", - &"mudskipper_atlantic": "res://art/exported/creatures/201.png", - &"flounder_winter": "res://art/exported/creatures/403.png", - &"mackerel_atlantic": "res://art/exported/creatures/701.png", - &"mackerel_chub": "res://art/exported/creatures/704.png", - &"sand_lance_american": "res://art/exported/creatures/801.png", - &"menhaden_atlantic": "res://art/exported/creatures/802.png", - &"anchovy_european": "res://art/exported/creatures/805.png", - &"sardine_european": "res://art/exported/creatures/806.png", - &"anchovy_northern": "res://art/exported/creatures/808.png", - &"crab_brown": "res://art/exported/creatures/3906.png", - &"salmon_atlantic": "res://art/exported/creatures/4401.png", - &"mahi_mahi": "res://art/exported/creatures/4701.png", - &"clownfish_ocellaris": "res://art/exported/creatures/5702.png", - &"chromis_blue_green": "res://art/exported/creatures/5901.png", - &"hogfish": "res://art/exported/creatures/6103.png", - &"mullet_striped": "res://art/exported/creatures/6804.png", - &"sheepshead": "res://art/exported/creatures/6905.png", - &"milkfish": "res://art/exported/creatures/7101.png", - &"ladyfish": "res://art/exported/creatures/7403.png", - &"tilapia_nile": "res://art/exported/creatures/7506.png", - &"betta_siamese": "res://art/exported/creatures/7508.png", -} +const FINAL_CREATURE_CATALOG_NUMBERS: Array[int] = [ + 101, 102, 103, 104, 105, 106, 107, 201, 403, 701, 704, 801, + 802, 805, 806, 808, 2502, 2504, 2505, 2508, 2601, 2801, 2802, + 2803, 2804, 2806, 2807, 3002, 3102, 3103, 3104, 3107, 3201, + 3401, 3902, 3906, 4101, 4401, 4701, 5001, 5702, 5901, 5902, + 5903, 5904, 6001, 6103, 6406, 6601, 6801, 6804, 6807, 6901, + 6902, 6904, 6905, 7101, 7403, 7506, 7508, +] -const ACTIVE_CATALOG_COUNT: int = 313 -const INACTIVE_CATALOG_COUNT: int = 3 +const ACTIVE_CATALOG_COUNT: int = 314 +const INACTIVE_CATALOG_COUNT: int = 2 const FISHING_SPECIES_COUNT: int = 310 const GENERATED_POND_COUNT: int = 33 const GENERATED_LAKE_COUNT: int = 20 @@ -235,10 +213,15 @@ func _validate_catalog_and_pools() -> void: else: inactive_count += 1 assert(not fish.is_selectable()) - assert(fish.display_texture == null) - if FINAL_CREATURE_TEXTURE_PATHS.has(fish.id): + if fish.catalog_number not in FINAL_CREATURE_CATALOG_NUMBERS: + assert(fish.display_texture == null) + if fish.catalog_number in FINAL_CREATURE_CATALOG_NUMBERS: + var expected_path := ( + "res://art/exported/creatures/%d.png" + % fish.catalog_number + ) var expected_texture: Texture2D = load( - FINAL_CREATURE_TEXTURE_PATHS[fish.id] + expected_path ) as Texture2D assert(expected_texture != null) assert(fish.display_texture == expected_texture) @@ -246,14 +229,14 @@ func _validate_catalog_and_pools() -> void: if fish.collection_method == FishDataType.CollectionMethod.FISHING: fishing_count += 1 assert(fish.active) - if not FINAL_CREATURE_TEXTURE_PATHS.has(fish.id): + if fish.catalog_number not in FINAL_CREATURE_CATALOG_NUMBERS: assert(fish.display_texture == SharedFishPlaceholder) placeholder_fishing_count += 1 assert(active_count == ACTIVE_CATALOG_COUNT) assert(inactive_count == INACTIVE_CATALOG_COUNT) assert(fishing_count == FISHING_SPECIES_COUNT) - assert(final_art_count == FINAL_CREATURE_TEXTURE_PATHS.size()) - assert(placeholder_fishing_count == 283) + assert(final_art_count == FINAL_CREATURE_CATALOG_NUMBERS.size()) + assert(placeholder_fishing_count == 253) var chum: FishDataType = Catalog.get_fish_by_id(&"salmon_chum") assert(chum != null) assert(chum.get_season_text() == "fall") @@ -291,7 +274,7 @@ func _validate_catalog_and_pools() -> void: ) == chum ) seasonal_collection.free() - var inactive_fish: FishDataType = Catalog.get_fish_by_id(&"crab_blue") + var inactive_fish: FishDataType = Catalog.get_fish_by_id(&"crab_dungeness") assert(inactive_fish != null and not inactive_fish.active) var inactive_pool := FishPoolType.new() inactive_pool.candidates = [inactive_fish] diff --git a/tests/generated_world_runtime_validation.gd b/tests/generated_world_runtime_validation.gd index 6a3f6c8..076f1c9 100644 --- a/tests/generated_world_runtime_validation.gd +++ b/tests/generated_world_runtime_validation.gd @@ -12,6 +12,9 @@ const GeneratedLakePool: FishPool = preload( const GeneratedRiverPool: FishPool = preload( "res://fish/pools/generated_river_pool.tres" ) +const Gatherables: GatherableCatalog = preload( + "res://gathering/catalog/gatherable_catalog.tres" +) const PrecipitationOcclusionType = preload( "res://world/environment/precipitation_occlusion.gd" ) @@ -402,7 +405,7 @@ func _validate_generated_region( + generator.stacked_elevated_placement_keys().size() ) ) - _validate_elevated_cliff_feature(generator) + _validate_elevated_cliff_feature(region, generator) var shop := region.get_node("Interactables/FishingShopWorld") as Node3D var storage := region.get_node("Interactables/PlayerStorageBox") as Node3D @@ -536,6 +539,7 @@ func _validate_generated_region( -INF, 0.35, ) + _validate_crab_spawn_surfaces(region) _validate_water_recovery_positions( region, grass_prop_surface_triangles, @@ -691,6 +695,7 @@ func _validate_generated_region( func _validate_elevated_cliff_feature( + region: GeneratedWorldRegion, generator: TerrainChunkGenerator, ) -> void: var elevated_coordinates: Dictionary[Vector2i, StringName] = {} @@ -824,6 +829,27 @@ func _validate_elevated_cliff_feature( or generator.placement_keys()[low_index].begins_with("chunk_spawn@") ) assert(found_primary_ramp == not primary_is_third_tier) + var primary_surface_height := ( + generator.elevated_cliff_level_height + * (2.0 if primary_is_third_tier else 1.0) + ) + var primary_surface_position := generator.to_global( + generator.chunk_position(feature_center) + + Vector3.UP * primary_surface_height + ) + assert( + region.is_home_exterior_position_accessible(primary_surface_position) + == not primary_is_third_tier + ) + assert(region.is_home_exterior_position_accessible(generator.to_global( + generator.chunk_position(feature_center) + ))) + # A higher surface sharing a ramp-accessible base cell is still invalid + # unless that elevation has its own authored ramp connection. + assert(not region.is_home_exterior_position_accessible(generator.to_global( + generator.chunk_position(feature_center) + + Vector3.UP * (generator.elevated_cliff_level_height * 2.0) + ))) var generated := generator.get_generated_chunks_root() assert(generated != null) @@ -1251,6 +1277,58 @@ func _validate_decoration_transform( ) +func _validate_crab_spawn_surfaces(region: GeneratedWorldRegion) -> void: + var brown := Gatherables.get_entry(&"crab_brown") + var blue := Gatherables.get_entry(&"crab_blue") + assert(brown != null and blue != null) + assert(is_equal_approx( + region.get_saltwater_surface_height(), + GeneratedWorldRegion.WATER_HEIGHT, + )) + var brown_minimum := maxf( + brown.minimum_surface_y, + GeneratedWorldRegion.WATER_HEIGHT + brown.waterline_margin, + ) + var blue_maximum := minf( + blue.maximum_surface_y, + GeneratedWorldRegion.WATER_HEIGHT - blue.waterline_margin, + ) + assert(brown_minimum > blue_maximum) + var brown_triangles := region.get_spawn_surface_triangles( + brown.surface_materials, + brown_minimum, + 0.6, + brown.maximum_surface_y, + ) + var blue_triangles := region.get_spawn_surface_triangles( + blue.surface_materials, + blue.minimum_surface_y, + 0.6, + blue_maximum, + ) + assert(not brown_triangles.is_empty()) + assert(not blue_triangles.is_empty()) + assert( + brown.target_population_for_surface_area( + _surface_triangle_area(brown_triangles) + ) > brown.population + ) + assert( + blue.target_population_for_surface_area( + _surface_triangle_area(blue_triangles) + ) > blue.population + ) + + +func _surface_triangle_area(triangles: Array[PackedVector3Array]) -> float: + var area := 0.0 + for triangle: PackedVector3Array in triangles: + area += (triangle[1] - triangle[0]).cross( + triangle[2] - triangle[0] + ).length() * 0.5 + return area + + func _triangle_surface_height_at( position: Vector3, triangles: Array[PackedVector3Array], diff --git a/tests/logbook_validation.gd b/tests/logbook_validation.gd index 431ed2e..67747a5 100644 --- a/tests/logbook_validation.gd +++ b/tests/logbook_validation.gd @@ -46,7 +46,7 @@ func _run() -> void: func _validate_catalog() -> void: assert(CatalogResource.candidates.size() == 316) var ordered := LogbookCatalog.ordered_species(CatalogResource.candidates) - assert(ordered.size() == 313) + assert(ordered.size() == 314) var previous_number: int = 0 var catalog_numbers: Dictionary[int, bool] = {} for fish: FishDataType in CatalogResource.candidates: @@ -640,7 +640,10 @@ func _validate_page() -> void: page.call("_select_category", LogbookCatalog.Category.SHELLFISH) await create_timer(0.25).timeout - assert((page.get("_entry_buttons") as Dictionary).size() == 2) + assert((page.get("_entry_buttons") as Dictionary).size() == 3) + assert( + (page.get("_entry_buttons") as Dictionary).has(&"unknown_3902") + ) assert( (page.get("_entry_buttons") as Dictionary).has(&"unknown_3906") ) diff --git a/tests/world_spawn_multiplayer_validation.gd b/tests/world_spawn_multiplayer_validation.gd index 45be081..f5ffd2e 100644 --- a/tests/world_spawn_multiplayer_validation.gd +++ b/tests/world_spawn_multiplayer_validation.gd @@ -2,9 +2,10 @@ extends SceneTree const MainScene: PackedScene = preload("res://main/main.tscn") const TEST_PORT: int = 18170 -const EXPECTED_POPULATION: int = 8 +const EXPECTED_POPULATION: int = 12 const EXPECTED_BY_TYPE: Dictionary = { &"crab_brown": 2, + &"crab_blue": 4, &"clam_manila": 3, &"beetle_stag_common": 3, } @@ -161,6 +162,10 @@ func _validate_population( (position as Vector3).y >= entry.minimum_surface_y - 0.001 ) + if entry.type_id == &"crab_brown": + assert((position as Vector3).y > -0.45) + elif entry.type_id == &"crab_blue": + assert((position as Vector3).y < -0.45) if expect_authoritative_state: var quality: int = int(state.get("quality", -1)) assert(FishQuality.is_valid(quality)) @@ -196,7 +201,10 @@ func _validate_respawn_budget(service: Node) -> void: false, true, ) - assert((service.get("_entities") as Dictionary).size() == 6) + assert( + (service.get("_entities") as Dictionary).size() + == EXPECTED_POPULATION - crab_ids.size() + ) var now: float = Time.get_ticks_msec() / 1000.0 var respawns: Array = service.get("_respawns") @@ -209,18 +217,27 @@ func _validate_respawn_budget(service: Node) -> void: respawns[index] = respawn service.call("_update_respawns") - assert((service.get("_entities") as Dictionary).size() == 7) + assert( + (service.get("_entities") as Dictionary).size() + == EXPECTED_POPULATION - 1 + ) assert((service.get("_respawns") as Array).size() == 1) var next_by_type: Dictionary = service.get("_next_respawn_by_type") var next_allowed: float = float(next_by_type.get(&"crab_brown", 0.0)) assert(next_allowed - now >= 179.0) service.call("_update_respawns") - assert((service.get("_entities") as Dictionary).size() == 7) + assert( + (service.get("_entities") as Dictionary).size() + == EXPECTED_POPULATION - 1 + ) assert((service.get("_respawns") as Array).size() == 1) next_by_type[&"crab_brown"] = now - 1.0 service.call("_update_respawns") - assert((service.get("_entities") as Dictionary).size() == 8) + assert( + (service.get("_entities") as Dictionary).size() + == EXPECTED_POPULATION + ) assert((service.get("_respawns") as Array).is_empty()) _validate_population(service, true) diff --git a/tests/world_spawn_protocol_validation.gd b/tests/world_spawn_protocol_validation.gd index 0840f2d..e300808 100644 --- a/tests/world_spawn_protocol_validation.gd +++ b/tests/world_spawn_protocol_validation.gd @@ -55,6 +55,17 @@ func _validate_catalog_statuses() -> void: assert(is_equal_approx(brown.minimum_respawn_spacing_seconds, 180.0)) assert(brown.required_tool_id == &"crab_net") assert(is_equal_approx(brown.minimum_surface_y, -0.44)) + assert( + brown.surface_water_relation + == GatherableData.SurfaceWaterRelation.ABOVE_SALT_WATER + ) + assert(is_equal_approx( + brown.surface_population_per_100_square_meters, + 0.15, + )) + assert(brown.maximum_surface_population == 24) + assert(brown.target_population_for_surface_area(100.0) == 2) + assert(brown.target_population_for_surface_area(7500.0) == 12) assert(FishCatalog.get_fish_by_id(&"crab_brown") == brown.catch_data) assert(not brown.catch_data.is_fishable()) var clam: GatherableData = Gatherables.get_entry(&"clam_manila") @@ -86,11 +97,27 @@ func _validate_catalog_statuses() -> void: assert(FishCatalog.get_fish_by_id(&"beetle_stag_common") == beetle.catch_data) assert(not beetle.catch_data.is_fishable()) - for type_id: StringName in [ - &"crab_ghost", - &"crab_blue", - &"crab_dungeness", - ]: + var blue: GatherableData = Gatherables.get_entry(&"crab_blue") + assert(blue != null and blue.is_available()) + assert(blue.catch_data.active) + assert(blue.is_available(CalendarSeasonType.Season.SUMMER)) + assert(blue.is_available(CalendarSeasonType.Season.FALL)) + assert(not blue.is_available(CalendarSeasonType.Season.WINTER)) + assert( + blue.surface_water_relation + == GatherableData.SurfaceWaterRelation.BELOW_SALT_WATER + ) + assert(is_equal_approx( + blue.surface_population_per_100_square_meters, + 0.4, + )) + assert(blue.maximum_surface_population == 16) + assert(blue.target_population_for_surface_area(100.0) == 4) + assert(blue.target_population_for_surface_area(2250.0) == 9) + assert(FishCatalog.get_fish_by_id(&"crab_blue") == blue.catch_data) + assert(not blue.catch_data.is_fishable()) + + for type_id: StringName in [&"crab_ghost", &"crab_dungeness"]: var entry: GatherableData = Gatherables.get_entry(type_id) assert(entry != null) assert(entry.is_valid()) @@ -109,8 +136,9 @@ func _validate_catalog_statuses() -> void: ) var available: Array[GatherableData] = Gatherables.get_available_entries() - assert(available.size() == 3) + assert(available.size() == 4) assert(available.has(brown)) + assert(available.has(blue)) assert(available.has(clam)) assert(available.has(beetle)) var winter_available: Array[GatherableData] = ( @@ -118,6 +146,7 @@ func _validate_catalog_statuses() -> void: ) assert(winter_available.has(brown)) assert(winter_available.has(clam)) + assert(not winter_available.has(blue)) assert(not winter_available.has(beetle)) var rng := RandomNumberGenerator.new() rng.seed = 24680

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 R^PjhSi}l0Xc?Pww{~w$NsCWPX diff --git a/art/exported/system_icons/netfishing_1024.png b/art/exported/system_icons/netfishing_1024.png deleted file mode 100644 index a433e8053e5ec65806f7d3745b985316dc51d4f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76386 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%0D5h}fTcY(-{wUXqBsxiwM27UTRDOX-93sF2jg<<# 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ΜpIEE6U%-)_)YuH}ASt>f|HEtfWU8_*Aw! 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 diff --git a/art/exported/system_icons/straywild.ico b/art/exported/system_icons/straywild.ico new file mode 100644 index 0000000000000000000000000000000000000000..c03de8ec87209f5869d84eea6847992003125512 GIT binary patch literal 370326 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ʳw=SDIHCUG!RZ#h#;9836lDSO_zaIf9| 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 literal 0 HcmV?d00001 diff --git a/art/exported/system_icons/straywild_1024.png b/art/exported/system_icons/straywild_1024.png new file mode 100644 index 0000000000000000000000000000000000000000..2a3b204a310e9b2f80e780032cf2933f2b40f267 GIT binary patch literal 80419 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≀gb)_d`G-{$3u}%cD1%X4?ANP{8qV1su7;gMiQkW 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 JQf^>j{XZbYy|@4X delta 1574 zcmaLTQAkr^6bJA-Nh{Dag_hQX8`(n&gT``8cfX6p>Z$gyV5JWQlbEapa-|~Z3luX5 z1cx=K_oP6O(TlNrGrAPLHhL%<_SRDk6zL&c_y4s6m)re(`rUKRcfWJKvr+R^YQDDX zxm2P_QIyneMd@8>EBp3jvXgq@s_#^(z3KP<&e%ZkMmC?w=JfH&;OST_I#}p#JzmmU zm-g|ai%Ij{&jWAXp8dg`j&9Xe#3aroqGgrDd3`=_%EW)D%fvl)otuph^T`9Ip&{b* z$M=jx1H>}X0Cky>p^F;oWOyp1VX%Mlycpo~u&SYfQ(TCc#DG-K9=;_8f*92475hKL zB0LVL?uw(S`a9q3`1vDnHs>GKQVzm%2^AhJax*~BBn?mfi^ueD#;vYG4 z%!uBt#L2#1i~Tuxt}qx5_}iyfnX>h8_0r55D?Yd44GTBJ-5q>+NxfiAuS6Z?|ZfOuu>3s)_p=a^^~S#`n@+ zMILrob*8@h-(u(&Lj&@~ogER&MBh1`FNllh^ab%kr+5)!5*tu@M#^qcN1m+4*Tp%R zJFl0;#)RBn-LvUgk=RWPf;x$Yh-sjn<}vXAh?hCVV2Isf0FDAaATHd^mc{RErar5> c#YT{Ki-yR%ML*zl&T|6vtm+iv&^`o1kJ?hD1k!b*?@kwA6}kqZ`br${pv zTTG{rC3Qe>S$Ij4_omqV4N7JUQS4T+dQBS7=X=gGuzc=0_x$>vcPEctU3&ED(l2jb zexv?i`{2RhCl4Ne`_(twAKkrMe|UQH@;_J0;byu%+~k?j{+#FS-+g8O+;00|Gu~I# z!p?2uoX(ydyfq^p;&)DG&kr^obtm(c)esZ+W*f=d6cw_AaXMQ~<|+g&un#uQsl{l( zv4K%}x?fGMNC0Fo$RLnGAcF*x-_+b=W2unRk1`4BtjA)D{}uv_hW(&veYJ4lcn;U2wB>nHkVvLYh**Msdc{# zZ0)lkwCzd++ImpBlyW%Q1YV#2rOiO%A@`HDs)C1`LIVy{(Hjv! zqb+?B$Z9>VO~KB|tG=UxkVhM|Pl!DgsT;QL&0b^M_vew^Q6oqr4{TGg3%?RsJ+=*~ z0w}MlFEs#UfS{?zo{9_*w(c1K`%{#1U`3DtJg~JFtAh5DYESmjWS+>`CE&Jr!Yim$dzc1hUnEPPk z9AtC0etwQXf#d9_vw$9o3B_D$s2K#mRM*g%dAWPq@{uoXvRx9hmiil=e-6-Q%i8beoplw7%JgCC{BL>%}P z1WmzF;!#3Zij7hwMjT4zSDY(7O0HD(>{IO6L*;kAW4{`H=5VmbC)%6ZDSG`l{1q!O z0(f-tE0G4+G=Q$?ScNanL>mwyNVGvk8}wLxoCs08-4`7qpjM(QIaZ@6(7)V0S3`&r w=g>hm75=bm+0?<$z;SPn@~Zx)h1~CL+kt@b;@-*ovYnq>)5Yo6pFMu}KdK>aH~;_u delta 2582 zcmZYAJ&RRG7{KvsXJMl&9Bd415ezK0x)wRN2wEiw7Pq(vi!aCpwFqefhH32m0Fo_) zU>AaJt)~dWt*zF|53tyt!p8YM&l&F(i{U@d%=12T<~;py>gk75|D8X5Zhvq0(dzN_ z)x$sT|Gs-|fB)*0*FT>Abfz4yy5V@Wn14IEVK$rf)?U4T{5JQ-kj-;%?3>QczOGc{p4bPa`e1}L7jy2yU%_K=O{2Tz^0QNdu+pg>Mnv3+qP}KBw}3x zcyd&pha%x#WVe_&_GIfV`{dX+Cx=hw(KQq>rs1AMUrh7uw6U}Wc8a1N0tD#i+O`!NB|{(5es`TEv{zb==}W8zV14@-MYx61;ZsDy&j z@)lz^q}&ZYDT>G#>9uudWgXcy=4INf@v*JTKl$Kgx&6k(V8jVh$j7A{kb{)-kr9;K z^dv;)rzMY5m0ycvXT6PsGC5)Bj3nS(8yS!pIA`m~G1|wrFA;JU<@3>%W#}V)q>qJx z2?H000SbT&kO9)itkie!xOS#W$@v(uv(66LA-jB>x}ma!VJ_q=#gNPp86v}cp}GMj zn6l4i78e!SAvZfye@(f-t`h7v3n#UZ7OS>I5PSgevg^5fBALj*(;JCuP6lbn?MM_qdmKG+Py*YT9>ho@!9k{dY?fwsP?`%M{ z!T&A$K{QC5fuX@3Bo3lM;xPV>+}ry=d=L#%2cjq1uCxc~6W(^(9;6N=zG{Q814uuJ z2B`9&?Pb`UW{ZmkIRK;{nFd)1;$x#h9)x)qsE^TlvxUYIWdOGK+rj_< delta 462 zcmcaJo$=0e#toJnLY6v8xtV!xnK>n?MM_qdmKNrly*YT9>Sd+|>_763@4z9K7xo}J z`pbVi5DgM{v)F3~5(m*BaTvd(KW{&X528WpK=kx>dk2s{Q)_<*kUEff#Hr)jUe9(a}J27!ousK{Uu57!A@7;^U(0K@uR1F#3b{ tw1jJD99wwGaZm@O_Ewj1c@XAdpgu;+%@!IIG5M$7dXFP6hy)2<#^udb#gAZ zJ0SW*59i_Cq7d-#{YQ+6hLyb2-n#K+d+9TrO9;3YEHK!OwFRvDxvy*A1*5++h%`NSXFW5^1 z0g+eNo3r9XpSNp6m(6B7p@z%~x%%i6G93Z_f&e{Xit>cjB9HAG)R4d0E6b17XX*O0 zgSW_3d!dZ_$r)waxDdYd`SkGBtUn({bl)BrMnt{y*e-%PEl*HKME_Xp zxQ0F=#)WTvr@bW|CYblp!QTkRp+54yMV2<#X^s?^jPY;y%<{Xhg-QLX0(olRaYFMA zTL0^Dh3QJ)cm+N!ysErLX8G5%UR}rb=GqD$uC9-?sPnlN!{^PJk#=={;| z3wGyhCj$Z>HlBUZp^QSJ{L&;7Q;9N!PK2{TIh(V| z(D#+ZdgZ1xHj__MZ%AZjlS^ZZvKKEDzo%zF`ec@ntrs0^!wO*!iYiK^ndRjq>CJ+B zx_@uaL9MUaPd;e2&5w>wh>d4s*qRIJcc!k~*&iFku7JIO?TpnIS`!=3PKaI2n8J*d zT>(34R%ge~uBq+1C9Jk6q+$O6`K&ug`r|HXuICi;yZ;M4HIA`L@B^Q5-g*38F-)sQXq}mG*|&SkP8LW7C;u*;UP$;HXZVy5Nwb^ zZ3Yy91-#&<)(sDW50-+FS|cQb3m$-YYU3dltPlr@)FuK?|Mp@apW1v_4kj=|F{GKO X$%I&lhHPrH!2wIa0M34;s519&tn+Zv delta 2152 zcmbtSZD?Cn7=F{VO_rIpOV>8-mNZFYn{-Kg^Zn7>p8I3YO|W)je_R-48%?dPW7N!A zXT53Fs;rE{WiYWwW<^06*afD7q!}w?te~>}5OGXolv)u*_QU-ep7$=to~6wYyl~#< zInR0C_nh~fdwou`^nu1WIC5xj1pq8P3ox=^9M`t{I|IHzG!Tplp|C#~h{nPmzh|SE zyQtl!=@dMUmyW*bh$sD>kytno2}WX(sNW|9Lu!($g@i!ZABfRn%5Rl@8bQfxt;+LN zHp&u}*4+83H#HT4pjdRGNuc$Pji(2mOQl{ONIT+@kmA*O>Vl$KrmSn=pvOfh<@p%Z(DM$!YLj(98w-kn z3UB=4m3aQ`-+oocUW+{zdTl<|ugZ)4Zs3=*b~P9MJYTN~nIg9p=;mxfxlLL(sa)xI zdXhxKDg2q$@B8?qI5;7b#@~nI&FLxeE?vh3rgQm^c*ZSOj2Q#^wBp z8TqH~2VY90JL4jJXNj40o$ns``FV*fzwaV{Ts{yFFA(Cm=zioT%6WMG-}*A$7#G;} zZfYty9KSK&J+Jf6$3G44$LEks-a~y3{VjOjhoFO%TmDZ|7%LCx|=y z4MDt<+^^~kKl;nngFc3-`AfJilOiD>ww&t0M22%OTu}=$Y~GVp3*!dx;%qnK$=a02 z5c6>UIK(_$N5ls1pOvS@hvXr`S}K7ju01y`J`R}=5j!eH%tw7QymS9^g8sy3pX5QN zC%JJvN8W9CM=Zs3|583{8x%_sZvs0&#Euz00bZy80cxR!#v14X57a>;jg8=f7O;bp zMknk72Q-73Ml;AyLOa;NLZb!TV4{g#GyCOB3LXeB6iyqP!ic4nu(WUelm zJvUMpPR9(xxHw@L=brbh^xe5S>0~cwoe3xFWUe_g%cfNxG}AG2r2M$!#jct0Zp$1h z-|c?VDb+L~)Sr6Tyc@(YUk&=9j_syG{7B4=73%jW%GqzFD#qFIjy^)n8V2fb`=BtM zhUx`$ti8T}c1%Sg%Fp#9m@nAU)EmqbY`^?6Y!~VusXxM}J5E-A-(My6{FU8=n8nUx z8(sPY+KHVXot(GXv#B*3FtqsYHZ+RL2wos~{)?2ImbP)$uDClp>{b3%lVV)a~ zt2MA*CDdvd=6mXBrCQt)szFnoHHwWsh;&50r(@F(iJian!A1U74=f+l{VdjBO#4;! zBJ{tqIgqs<(WzXo%i_($30t(nxS<#1S>8f=K%Zn_g|;(sT+&NOY5(UEvZT&u4 zaGwni2o^hANc*&s`$~(i*CS1Iy`x`$Hi*TEAs zoo7q=T--2>ku!!-yw>?PQM5+Ko-99z$F^6mubJvdWi$O3tl^wh8XFqz-<{3w+IcxM zxiOim4kjxJTP;`x(<={|c7r(W9?o{@mvF%B@yQA^ReQ#3C0Md~{kzNgewlb;M%z z-1^1M_Q@?N_uamNd8w~pBJr=^JuWeJ-)t)KVI_~ZUffY4=WZMua)?o4yf-(XMfU0Q zyt39-H1Zbe&}_;)`mrn0iwBmKzS5(_@gwIQ&bK=9sY{a=`ToAyqQd~Iwf}BhJ@`^h zO^-Vw6Hw49laLpggc$3eoBlvZ!~a=(`b=rN@>BT>Pa07WWup8|mkUiLGTDg@chy8Z zX>Qs(9qHrOUsZncp%QswoJU(0VS7srJvVb-iA+W#bn|;OjgiL3zxPJE_~E^3lsdFX zL(Ye^|4HzhaX?h%dH-cXULNFK3Cp7=7I}iiA{Qral>t=Qo_B&p;QrcH|6hQ-rAWhe b(vZAJLt>GJ#I4egyzjb|MfKH=iEV!XsyI}g diff --git a/world/generation/chunks/assets/chunk_0017.glb b/world/generation/chunks/assets/chunk_0017.glb index 474fa97c1ef2da2dedeb07a19eb8f2e5cebe1b7b..c1fce77e2c51ab1ee20f99886d3ae7d1986dcb01 100644 GIT binary patch delta 1700 zcmZ{kT}V_x6vt<6O$k5JG&Q9*(;`{>(qt{JcOuh#s>q@sDk_u6R>`G@!0uYogT1(3 z%EYWqqO5$V)>5jycON1mG71tSH!8A-px6h42+QVwcV`_x_Tln7^FQazoEi4NJ#S5c zAya&HO=VdWAtZ2=kXTpz2Uo!13KXfAO&b|JnNeA0Px>%W*<9Z zFFR7>s5+j#uDIA%=qZSMZ&vKXMLzrR2@3ij{Lou^_vu)-udq)e^3Zu5h(1TOQ!Z=v zY9e=?dS|Ss67?yynKZNJn$D>3Ak4Itok&p5^-FX07YBwlPHcenCU=3MPbDt!w7k{0 z2#9(RgHNXtEKGmnm(d8K0Yt-0M1DhV1>OGjqCOM1+;kZ_C+bh{ZY{w}OyfM3z|$eY z>2W7JGUgIOeT2B_^VQdN#A=S!Vu(BYFBa!D4r+$@EG|o}vzm>>!6*w|d-hkby2)xu zK}F}^MLy^EDnmr9ZjDb@Uxhke{;Tzc_a6y$EU)j9xrkW($U0W#2hUhzs-yGwdHgG1@`e2^QeMxOlKi3u`T8=qBpn?0hID0GqOH^}&+=Z7`l|c1l!f*3f`N7^@m_}( zNf&Fxfg6$GW<{6>LDu7jKBbV}GjB-g>l1j)F7NUnp) zXR3|;MTYcf8G&c+s_rH1DJI*9S<0{#*I}_x?Bl;-IE?Fvxv5|K+GKlcX1st9|#8HI%4%sWiR`3l&(=TOHdl5lf{H>K-mX6^+yAF+Ur?P zb{L`H-lL`ZsF5QS9QfI%5vRju)H7lq>)1H^Zy^-K`u!iD(GT9PDAZ39yaJ(&NfZY> Oj3!0_=o#H%oBtmVjKa78 delta 1745 zcmZ{kdq`7J9LMi$WiNGVzDP+|6g9J{Io+sxZe&BEh)63)!E%zLHKR;=5LY84O2Sx$ zMPfxxp(yM2f@*g`|5%ung_GX&PeoJ&Wni!KJ=30HnD*UI2>ge%{xkJC zQQx>nkW!OZ6G~ZnKnsqzh6pDH9im#xdH38ZG>8Gk^$u0&xk^9`wo#uGbu}6NtR6)D z-k3fW7XncSKS()PSe4$!J_w>=+{q4t1`ve~>T@E$@_mkE+gVFMyih{R%rJ3)c&a&3 z-@VA>!;65J)6!HCWFiev*s7u8NT^FQ)TMY;K{z4Z$@Qv;J#S2z%v^b`)jF&3v5%R} z6VoRZG<{(eRZ*D|k3A*X!RodjQ~V9@s)Hl8h0J?DYyIK5T_JPkmQy5b20~_@Zj+Q; z{wml$c6M;)z_)fae1gi@ba{1^i#QtdMQ`AoFVL`)^d=FJ{=$Vw{;r$Li1%)WIJDG2 zwDpnvX7^fRw3x)_`q$#iquYsL|9sJ|4Brg-@`%J_vVmN>kSE?wyX@jIvgvGYr-s~@5$wpSVFg-pA6#G(*atWX z)$lo6+l}l3S|Se(dJ}ut1vtB?hEF+~1uE+)=wEP;RBocX814wRIZg3CI1G1UA}Sv diff --git a/world/generation/chunks/assets/chunk_0018.glb b/world/generation/chunks/assets/chunk_0018.glb index 114acef9f3b66b402f08671b8fd1df3d429679bf..cc8a4cb529961e5d0743e625e081cb61595b2d79 100644 GIT binary patch delta 2145 zcmZ`)3v5$W82($f?sdBY>sUv1>q^UG?Y4G(Z@u?i!Qc`W9>OpR!Vo$n&ay{&EP`z^ zz!5bD4u%1PHOev!EF?ApMtkoy1O+7y5JfXUK^_8GtcixH+2T2snhV&Z=X~G!|F8e~ z&$&0>9T`+a2Nn6Nn-|Si0zh;%z{R{B`B!%&LOT*}d_dvUY*-Nrv@LH7GzHoM!Ic3L zjxoyZ%2K<_YJ7FYMq|wqm(^xbEpFSGP1r#DR@d!@VDYxjAa4!g_kbU5tR3Wv3VMr{t8&*7@}dYm4Y%ZI0{ zIHl8@+-94ql+u0`tMpWpE$S5x{B)Kf7Rt(3jI(=fcx$##OVDb3sUsAa*VNP=2pMZ= zVtkIJp!$)x!%gGm1s>9(T<;|Mc{%=ZE|R~NtuJ(W+z$)f-ekpc?PD2_(}guTmO_Wu z`S4%7Hb*sWLhF1q;k3KSZsoDQ+?9%n^s?3jXRm1{PsLc{^Ld?kGGoF#W56336H_zi zoJbxdjNa~*aDp*SNo>8$(ZJ##dZj~I6+GpKCUuLt`#wZ@ebXTRLT$#81^(0s2Z!8J zaA-YG@$#`@aZhDXe6Z%}n#B3Y@ox58CMf4T7N}+e1DS;6 zgBo&S9OOVA88oH_6=_*XWGWJ4h$fq;av_7L@(AXDf@r8NA5^jUgyT9b056djn;(mx z6lV?g$0^5+jBW~l@mH26d#`l~a!v&_{{5c=cpp=YkCdD6S%x9QRK$-R5om6=w~&`{ zT%fjNubN4Y`D$I&jTUdR#*rWWqMWb4YT-|u?TYst-6_gAZdcojqMlXc0(j|o=YS~V z_^7%Ve@bf8(P+s?9>}zIKWCFhlf6)me^TpkM!v2&`}|xn+`2ZtG`xtD^KNr1if|vX zuG4*7L)46#pcdUrEa%e2xicojeK3>jJjJ3vPBx-D&oAVblwILYTY}t}>K9h3+kkKj z*-#$vEIh`2mFYmy!zHLSVnQSBGm$~{HJh$jI=#H9P4UfWWZeLJ^XGH%of;ka>C&aK zO{1%m_tSiLi}1#_6Rh669u;q?;*@n4xH)_P$u(!M%oJwz-{-8c7m!?!n>D&ddE@e= zym7fET`~C$$`6DkjV+umIezXZ?CS?#LlnVL&&pA{x!?chyVp^Kg#19p-k6`$}Ku{b((08deh0hJOBHBO-KeTT_k-}&FDXjXg6WMyI z*>w2Z^#n&7N#XUEvrrRhFog}5hB^2$Jna9MJdPc^^gM8jYPFNx0xg7hsd;+h(~C#r z^rW8|^?YIv!=})Ba=H-dxZzJ>Ym1b;p%i|s{RT-_8Gj1vH(x-8@K70>B>#g7D1-uH zDFsOrdJ-lRgPBaMhgyz_%qB1-&8Cvfl`tJ9f)=b~wn90Khe@C$GySaUp%kW(c^XUs z9XvryOP6%IGMEaM5-5WbC_9JdC*VWx-{ByTD|9s8 kN1bnD)X?rkw{{-mLXCI1sW3;FFT9h~5ozr21*3)k0DJrW@&Et; delta 2220 zcma)6eM}Q)7=K&ZQf);hg%(AqwMat?++9EJ4(;9ffl-WGdB-%?Ozb zng7g3)mpJaaO{dd1#E(SHqS4HcxMXu?F37~~c@Iwy7ZVBZ^Lw7> z_k6r9zn4UxVW7{DR#(4xwh!{$AQeQ!zy`xY`iG9)q9-FPmy&>*FNbGuF7( zSQ6v|o;538^OU|24p4z`6-2QHh>F62BC43;Xg98XhWj%R2Ne`T6(4D$FJQ!dUl z=MgtzjvCo8-e4AMn9!qPq&pmBDVFAVF3j>_o(=2g)5T$iXM*7fMTeL$&C-D)x|o3? zo??Scm<@#@L6U-)Vpxvi=}?f0L_+w0DGxg=c}6Cr-eS?P8!_kNHgJOxxQQE|wgkp$ z<0zU9(j3c#BW2ar~8B#(K4%1fN0T}SS)D*8>uxeFfZQN5z2+3OL2-3_* zf`?6#)$a&XBl9#9;_zMTG!q@7D7?Zp!NG8k&16{yi&lT;{|Jtv$Tq)&e{31Y@MK$| zgMFL`ab#Oz&w|k_4dck)GS)CVRv)ij?U&;UZdNMZ`j1SHM~3v*Q-P7N|Muqj0y~3uFO8Eh4e{JSnWseyc<<&N(HN zOSPijC&gM5yJ){~+#D1Wow?$=7OyzaI74(>evUp(4O!AwNPdZjDL^=OeJg$!lH_#5 z2XOnd@g%>qncIC|`RltG62VP74N2!Bk901!RLW}KCX@WheG{bf5MP;6Ce3-?kh};O zKinaoR`X7^{(Q`t3{-BDy<3O-Z~MDMGN*diA$j%@PN4Gpqy11n@v~0x6yRF}$7Qnb z?A&?H;x$i|5Ib^AC446;9wHe~Grvq7L~vu(OmWWZhGd2Jj+kDh^pZi|E&Z~FE~t;s zNXi=4ej5{S4R)w}_tBkEQb&;REmgZ7VDql%jaxQ>*P>(DWQX>qrX^P>P3?8 z*9)YPAi2=$E1Mpo5joH}WQ1daZ#f-}MPtxtlnXW&C7KdlJB_uwygKbdm#C9clY9{1^G_tewW+; z@pdj#()m~^$aeg?mXiqAb!nQS`8day<4CYIA{laE%U(tE@g`pm?)I572;qHYhd?EV z!GS%ti5+f9i-vr1=rL@4F}t|tGtF+KWI~V4TJwKRCx_&4%Vr> zhGx*N9dv4kN0OpSJ_Qu(0Qrwbegl93q&)^CodGrjUP?N=Ckt2$ysS)kCpNG)G^%HL z(cHUPmr&oldGi3lSoxlBvGeMgzz7GSo&=XYs8zM4=Ho!mq{BBS1L!1ZA$yf xSyIC&L$WIKL*?+R>%^NY_KAt|@0FJ6b#mGTlq%8=uuM3K;8{#_A~L zX67kbMeCaC=x(0GB*!FV0Ty!0%mHdpva+R delta 216 zcmdmEcEyZ0JtxGCiGhJ3M4Ex&%0%9)EGd~qB^y81Fd7)@8CjZ}S{j%e8=0D$n3x&s zn8xZTgb}&Z?0vMV-m6iD{;%rDM>9-va+J}_BkR=QkY?v$y z9X||`%n5!3W}<^>Hg?erQ)LEP+QoT8%`OD9F}Dz1jB{Sl=|Y5w@9Ea$pkeXH`#w+K z>-U|0Ph^yt{hZO))o& zVJ+LvvUZ;Kq?9r?I-ash{&6`apSsiqGTo>aS-XdJs|m|Fu&VemzRbi@$)R1N=*3}BJ;Nj=zT^<{cZKeN7xb2?Aq8x|QHNVB}bUPA9 z@cujDamdR`!UGxGnZWp+X+J3Z%u7XbLib6YE z-NWN!A@c2yIZ-7y3|@%5ay>*c%4#C}R&@9_oe7aq;G#EQuZjNA8zN(^r+p1qT=9l0 zO_Ge?4E`Lu4@#AT6R{63d={(wj*=v{6uq&YTolq{ND^p%=FgR}ubN2`aiAm*HdkBY z8MsIXX^;XsGyn!Pphm9-Eu;er8ITDoNDbFze_*72S_3_%Euz=8#tPQDJdXA7<-70s zm3%{WDaNI^99QzAFJ((|ys60?S8_UwpHQRIq7@mZm+Aa+5wr{qDLGw_-!_PLtXPYd z{dA%T`lR@&9^3|Se6CmO4|c_cbNx}xo%!7VS8rnT%*?CtFDjz`)gM1e=HC9rujFeE zEFr!-ZGx4lA~aWT3>`H0h^G%5iMqd%cv^3X-Jc8%XO^`PXv!n!&kDr-`vJe}L_N8| z)Cs?4f8*+i9 zxrK70vPpSzGUIge0Ckeu_*UX%`p5 z<&PdE+s0ocNh~X|OVJy9ND}|vBS@2%kBAFlah@nm>Su)FywF{u?U^CQPn$^+_uf`Z z&*~yV65nc5OAzc97s6fUs*&8mCenBH`4KQ=t?XFVFtTrWlbFPd^)1r1LwiYHLPvS1 zqg=>_hrqB7!GJtS(tP3hW45>FZM=`SQMrEcUWpOi{c2K4;8$`!a!9wc4OX^(ZC?Ifa5NBS;h gMsJbIPK07_VJxBvhE delta 1822 zcma)4X-r&I6uvXeFarz&mZi^@rA}EI7~pO57MOYW;ewc8sR2!ZP@xtIhBk^L)}-kJ zX;YiH&|DO%v4f#0HPMht3R+-h5EmF1L@dES28bqFYg6k+x77Q9XC4v~C%NZ4@B7X@ z_s%`vtx3a3$Y9^sR9<8R0J!S_5Ns#x-?(_*v7$kOPT8P-yq)3Lwypd-J^ zrV?>$}c|jmuE|zxYP`R|oyF`*_Xcy129OGOq z!bfwgAYxWPlcrR}ho>4TZutr=D`~Mg1)aw!&EjipLw|)k3$<<}#WR$^(=Kl9>8vQa zNReS!7st}1xc>Nodo6ZD7{igM%qqrVbUOAt@2xAXuYab_>&Ry~RBO$S!;i9-=jml$ zVAs+j?z1(*ZK6n)MNeCk;zfFG0nczO>ak|87hEn*72;^&KRb99`K;L}H7eG`3p|JW zXAL|R`GjGUxctgRjZNOVW=Fm#3OxET>bWQYdSq+`FxKCN0vYM3!Dd5q8EI%&CV{-_ zvXQ78bLtw&BuK3uV=&m?6;$`WbH^v^^FD89&^^^RYQ61~QEYS?nzyA9pBIlx_kZ#* zywiI{(&wmT2Z0L+6&1ZuCC*CKW0eqfza_Qib>vr!DKG?>(T!^MxADUlXB4=2DPgob zy~{K7HUZ6jB~af-UlTt#J@WDo3XIIH9$Bqd)@{%q3|f-m*B`qff9)0Nmy^|_fA|zQ z(>9c^=Py5aB49P&kW^fX?F?*$MOPwZRX_RqRABDDpFHPYmOFBn^2w(`Mphr{-tNHdoHH+7zWmItT%?ttOFMa6Nu&2`q)tfFHZI>J7KJuvl$bZ}_?|!jezFJIql0h_x z0Lgf51xX+Zm~b>+z}+AQ#~5JQ z1U7>(5IOL7^m)SS!4^7;t%R;-5YFrYx8uY3ncE8@O(hZ-i@~S?2BoS^eOZ6;X+zBra{_aVvDjS*J zaTxA-sR{1BZSlbHacLu7zc*&-0r=YBk&*5~2VCWq<)(T;-{}AF`b+3@{lUY*ak;hm z5%+xKEh$(N_AhpvQj+1WdIffzTER(wm3+Fg4Qg0%tW0ig%yMfO+V>|MZ)t@Z{u)|< zvN^%6VOeia@bQU*P+?97f&0+{n|VSu8{463fk? z6NQ}-fmhgoCHtZ6%kQtwWuqzUhpC^VHapa@vm`HUI6^-3m{m?OjrxhaEimBffi>@b f;QuPi4ktdlE;TH41XR6XC_)bPqJgN=-xB@-)?JjM diff --git a/world/generation/chunks/assets/chunk_0021.glb b/world/generation/chunks/assets/chunk_0021.glb index 5094b5b6aa2b59101569cfd02b1534a30cc08dd3..c7042ecb42acef149a585a9701c5f0a13444c3c8 100644 GIT binary patch delta 2974 zcma)83v5$W82($jzV_(YR@~U5W%3wfn{DsyZ98o5WeJ-`+=voQWPrdnx1>}UBS;v# z!=Q#}0^5~nAi_iwFp!AMOcT=HYaoadgD4sU#7KgGAdy5IM&jfDZ&y6s7|`UL?>qnd z+;ejNZW%UQ{MwN7LUd8R5dd1+0nTUk<^0%pqpRq(aGYP@LLomVEJ1Zg4As@BSI(H`8NIyn zgQ-mMXSj%3tYu0UQch5IWQgGZRnD>7@dkoHo(gl0-H{jbCsUrz%r^x+LQuJq>B^&X?1sqU6fT?!r|@Mv}BXp9c>1vd%O{En_I&PcC1>jEXyiUKFM-MkG$$qNjB@z%^JXf zL>y5|*^Y9Fq%7a`)himVMO}>cPn}$<^TmhOqkOfLlBf8F=exE3#_fuyu~3ek8&X#s z->JsV3EKIg>x9yRp|kp$kbFu0{lcNduPys@ebR179YryPhrauW^!j?~z(0}0dArp9 z={AYjGwbVDl?}hHtN zy3v60dPR|PFv}{l2gq_PNKbbA_BQRykLi#l?P%`WG*0%ExYXFKJqVBdwMU{j6tnxL zi@2=CxbD84Tq*|lr%*2(N* zVopKnYO>d~`{s)hCAj`)6gTicrz=Yd8m_L>?#ty-BT7JboW1XDiD)?5SucK*IZd40 z+?+U3Rww?lwN(83Od{e~7Zkre+` zt-5&edp#-}lWgR>8L`ROK&+hQY|sSP7nkPOi+irQMb@`@>CfR^BX#lL3VYas&1~Vq$Hf6o03BqZ&-y3|B0kFZNcrMb@VO+VAo9=jMx@ zHEuC!FOPR%jo5IQ_&yk;V3>4~mrdUPuLyp74sTN%v1-PEnKYpG4UbP8THCgz=g95N}wFvFj+>J37)1Y&) d;TJUHNh!vr%1k7%g5FR^gdlM&iVml;HfQk=P zB6UF#4HsJaK!^*qR0%3BNcF9vT7%lsR-r^u#RVu8$^i}t2|+=GP-dR9?#7h%0&BfD zGvE8>oAJ)mt}go)F8U&SW_J|)03b{QWLn>hToJO8B(rCH8cX}e++eS;Yi3`O&`Q+* zy5EwOO!~R0m(n9os~IUXtYo#kDJzn!DTXPlx-p5zGjn)6tY(I#tYqZOydf(JQWVM1 z*jeE|zpSte!WMQ{pwB0>LSW3VN$j-L*yqp5yoX&i_o2WRb{yS2HIihj!PHi7FaK0lZ&{h8LObxU zUBFszhmz=#{^d~0C$VdxQNL`kyf_k<4I`6&c7JjDvE930oGzwE5I-np;wF~%!m6&Z zSHz*1EN#XSUK6)98HT}*h&?RP(%z)Y5=oFR=y_GfyupO2HRLHK2@WQ-MnTn-*`MMd zn`ntO>6*$O7kf!6kkd3nq8>IP94HCI8z6qWK(=fH zJ~hr}f7=%yoIX)}3pq)q-<@JTt=%Q!(o^Gm{aS8K6Tp*Ot+A+9()QrC7bkzCPmXW& zW8L7FEu`Fwi#JVy+qB0AXggQ1j!&d4R&MQizzv8DaF7$p^WwMjNl0`_6qMY6l>SZi zzs5g&Fy&kx2w7-L+zG5-bXH+FSg z+|{9Yv18eyc(J3jY`Fj>&;i-G)kB;>md?q#I9UPOpaTS4aR@*Y#Bh&6JG4RzL~)OT z4}VecntKbHg_Ib&hSEs{7c1%OCsWnC;>(|I%0YQL|p_ z_wSEcoKxb(%AV^Ckp1?D)8pF@IH>u*`=#3zJLzLKJhePp_|cVz_p_)&@xYfW+`iBov?%Vs zy28(k%|VNJOT~;$cJQ~)d3=xW66gIizsTdC4=wU|TCe)*m_bP+iM>_uoW*DIK diff --git a/world/generation/chunks/assets/chunk_0022.glb b/world/generation/chunks/assets/chunk_0022.glb index 0d58f28df93777a6bd9cc649a73aee25f4f178e0..84ff40e6cefc19e8eb4a73cfb61e60d6664b05a5 100644 GIT binary patch delta 2311 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 g`FJ2z3BrL=dxNlnHP?o^HQOdcRu9=zo_#vML zK2Tp>Q(a$O`%E=4_ZqZ2v>FlZ8;8huMM5T;A8$sF=%%8Vy;TJ2(y&E|93bPJ-zxsv#wttI}MBw*Cu+Y>7_Ze{NWiPMP6)Ip6M{ajZ(&SrJGP`A#V zN`)nB^_GU}ikg~D)eTu5#r2l1Af?Fai1r9Jn}DcCaK(B=n+sjg7nodjTT%2PyH&I{ zTTqKGJ(-jp?Q=V<=uO>>l+g~-9La)m0SU-cb~@y zV5dwTQS#}Lc}>@@c=cd#)^Bzw`!J2HlT65OG#RR2nb4PeUxKZ3^(APHu_QaU{%UC2 zpa`3^ddNF@I~p{adIyc7#`L@N&q8mfIbnM81h`kT|9tzml0syeY*Kahu9&=2Bk|#C ziPX0LA@N@&{1dNu?KoDUgln(5+=z|HZDun34El#IKOrD<8b2_{ZX* zZ}!8s7j|Jrk~p%SP$CsmhwkG&s{CtHy8PtO5zO=A>=VlUSnSOHk#eGpTej}OZ(Mp2 zGm-)#4Z5&IJE0DXxJ#9!V_&3Wg@K`mzSTl2{yz2{*rNC;SALV_&-~=X2uWe&=x<{} zNf9*Q5In5}jKzu1U54vwwqwT5?Cr`CGE)1k3muAoESfEOvhhJb9?hJv0|2vfWQ;Vh zy{k`IK#A6+X8(9GcnXXIi^-)2PlG3c0X&Tkq@GL52Q$GEkWa3qpa9GQmE^k;EJBj= z_1^!aO*a{va{Tg|o<_N2(n6VPlxMYMoIFu1-@pG`xn*kuZmWD;?rNVmqEVgIJQDEL zFV_3rulZ$|(kL^Hj$6&fbpwye%P+5%*LNoRsYZjuxc16Cd7`jcPG8g}Q;iHZF;A#3 zmG|ebkl((mk(qwxbO2s!u8?=kt(2KY8*FCd@@sSCX;w+Tv#;GxHR`sB(vgE@a_M6M zIlr^m&$J;A$@=&G@~@KGWL~RHySO=p_;$tk;H5PloR_+&WZ6+~aKkAHH+}n#?`FR( z*uVFAHM@k5J)8nJf0_{-4lan&tv%hoq{EJ&vvCt%xE_T1;!1*=)6H1T&KHsM{Pa+w ztvL8feG@JSd=XlmpC5eW;2J#IE`=Rmp4;X9!0Qe6Wk|U7tUV+JJi))ew+*Y=`7R4I z8F1qVrr>qFAgW8=&KJ#}N~^?m$vdJt<_c1?^PQ=k1aD`JNwj1Bh?pbR&i_n&XKMBr zoOhrY?DU$xJR36IsD+H}AD#`h*b=-EO5V6r%doX-s=~W}S_NNTAMjo6ZyMo^!vSB_ zdvRXIIfZxNy}(kKT#sStV_QeKU<-!e-|=3?%8oYJn)^%0_{P3AI2_P=8MU{j;DeW? zjW8@WLg9-kxI=65G9GK}?E7ryJTGHM;hw%vKCXw1{@ikSuSJ54e|DBbGb;2l?kyRD zUr%d>jDIN|f;~I!UdHb8N1^<)#!DrNAcUum!nr4!AftAX2Y>j{TFBT{?!hg8nBry3 z0%kI*vdA?7WP%K!Bi}lZM21uzNB{*W*ZEU@8b~1nER9?V^5c?f-~SHy>0%nsrX)WxV>KyGi4Qj!tEF)F zY_jrGHdd1j;CCI5t=TZ<2Xm|jpiXI6DM;dPqI3`Dl8vePA+M&{z~_fQuO)gzj)?0_ zP1kY9IJRal68@zUs{t71at+VrZ$>o#@=?>=i>P|7v)ea zfBoNgeDBUa8j2-pz!zyCni7yBl}2-6&gW43xCzISY!Zo&=1UXy!hf_3gko8?=_X$P twFMUfBS;260r6luu#j1oq)fW00A*B(aUP&Yi>qd6fbyR#eN}PF{{hzD(qRAq delta 3648 zcmZ{kdr(wW9LLY{SQbSgWC0CnUDN~?x_jAOc2(}VO=J($te8n7Mn$lZF(TVcGr3Na zN-9X4nKCC6r=}=1vrWUt?zz20YVkE@Ha#rHv6ru2Qkm8{2M(USvVYwB`JUhJcYcra z$FKdO>G)aGu!k3xPl*8llrIKg>hr@+#T81DjOLg;$Zk^jp*F61!6HAk29jge#F!+s zF%FUc^X6twIP{>a=V_K6j4M}f0Y_7%H*QgM;&E_S&*MGki*aWAMN?gHjFq-;tkH+g9@ zt(GxF&|XxcBvfUY6zlUyXp6-+g3w{FTI#R4Xa4-hYy9?!J`dVq$xrjR40fkarVguY zbjWU!>hRD!v>`DyPWDO?!j>D;TwcR{pOf7m#6hmp#6_~JAE&M}X(KD<;eVvl3TODU z>9}RfF@^J}^(0nNP09FC4z>M@0woJM)Z@jqj0X>`WpQ=oKMio`4<|9T(|a_Yo@xBz zYyfE<&aW50S>pZZE)Dhzn0Bg8ssEry;iLuW1$v(9|C`wn;??s_XBE!9 zW5TQuC$*3L>T~9&JiOhk&dfa1PwkBI?(N&)ip~oI)G}AG1f100k@lrx@7fK2Xh?^g z-2U^A8*%&9R~62y>09w7xkuro_Pu3I%um^v)XD~6)X0RUC4YxX-3gF$g9?Lma?a_y z4}|nWJLIHs8{Y3#IQQN>rElVX{*_$?A2vzw_cb-}sdQc86z#QLCzxHMVtjI@YMHZd zfSNUtJw4~Bo-DO`cNgXT;2Ah-f}~k-mlT& zq}(ij#_Ra<<@NfCr~G(KO&5Nt`St;gTAa3lfS;bIRU3cXfuZ$Doof_!+EUKU2;qto zReEh}f=V^|ml#ji@5RaT5`E;1RXWwkA$un*Yukl4=02pqeaWPAJ#W`+c=G*jyr#5V z=Nhe(Z7Jb~_wX1=(=WW(tWu5k%U*5HfBW!lch1&xTPLYpYg!?WUAH-?!-+Wmx#r2g z`wj)qwKw3k6+4x0gC7LV=jx)`haMjVH}8BqSQ5A!i~1h4K?!+32~NA|aa?*9gqBu^ zgYRs6TEkHsSZrcf{8P&p9ZghW%zo#*5?qX6uXXQ7n>GeC7NBBIHI9a?b=gBIK;`Ky@Y5NClg;Nn*Ci9 zQo(~qCTUat#JJAi06Cj`Fs2U9XV1;m>G|tRb9EZ`fY|~?ewc58)X!&Lz^3!~=(Toh_u^ooZ8 zE$;j%I#5)(Cq@e|b*SNwb5zcSUnS$TM-O5nYde!MjWcrGiDS&pSwGqgXCOMSM4bT_Q){09 delta 236 zcmeB~!#HIQBX4?6h#M0F1A~Yk14GJ0-uo2%EIhzw0Z?Xwl>L}%A z=DB6&l%y6ZSy@_Im~Zyx;AN_pnHsSF$UD9Rhg@FRgXril|Ls6DNZie0uN_DnM1#a( z{F45>{UAPw2B`zl)7$MGK>AFr{T)E+K;jXnj@yIugJ_U?5Dk(C(Z;3v4nTbhU<0n% X*g1d{f@qLJ5DhXANN@hmCF%?S%1L77 diff --git a/world/generation/chunks/assets/chunk_0027.glb b/world/generation/chunks/assets/chunk_0027.glb index 6365ceab4962e2e7430fd12d99435284d0483e5d..8f12b947b64138be8d63a26527516515eda0e9d6 100644 GIT binary patch delta 2192 zcmbtSZA@EL7=GLG(IPNDIs}1IO8G9Oz5TpU?m0~8fI$lzI1Ix%6gC!M41vKGRwkRn zxy3Apuw*96j~P*n4p_D&lM6Z}jm|`)CK|}5bBT(X8h@zqYo6PYcrbR7_~Sh1Iq!Mi zbMAf4^YuB|WUn^gCpJH`SDKY+6~@h zB1gjV$!Fp5GM>y+mZ*$Z@K!4^D%0YqxU;>>-QLmL+M_Gtd8d`^RHj8ZxS{4DtyY^- zMV?X~jvU?X!2rYf-ERu#NsLOJT>4HmuG*5`X`)Tg@jE!uN1 z8A)~j^J*OESJ<$mf8~5UZs~dpc@AV@Nl*J_;_S%?Yf|C%<8Jy{fK%r@cpaR4pOKy| zpV^1wnrcg=zI$-u)hCf!eWI^($`QEZ_HT7~J-j+4G7V@cc}Kt&Kk32$#idk83At-yfRj6!l|CjV zY+`UZ$K$OdJ@{7BrvJrnY*bULhUw5QuspRVLo$L~$x0;)S&`(^tjOXx)kBi4ki^$x zmj7}i5E;5NvGC~4=s8KVzwJrPaFUjtw7Fp~#?oF!ODkr1_sx+&y`;i5&+5s8OR}n)CiaH1}G# z;2-CNVCNrh=|f^&4f!fNmbh{wi9R>6;>(pZM3fGcb#+3#b|M`u{#b@a%-2fTGuS(W z>B-Sty>IEdSaRi589M9MA=Zegxejr8Uojd{=+~Ib>RFBJufKn^ZQgb=8pSOHrh z6*fXG#agI`2#AIniZ!qW!axHJ6dRxt?uQ3p8^vu<2eF`nDvDL$fhdrHo1z=4K>_jL VrRast@N_NtHR8G1Hw$0V{ROxA+IRo} delta 2135 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 EKT3iP5C8xG delta 6321 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 T9%wwYahY%*YM}K0ClLA{L8G9I diff --git a/world/generation/chunks/assets/chunk_0030.glb b/world/generation/chunks/assets/chunk_0030.glb index e61c7f5d6c2e957c2bb828e41720fb02389ccd33..c02801b7b8260adeac1392197d18c5530a0a12c6 100644 GIT binary patch delta 5379 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 ZBL+K;biBee9KqPJgy5z3#G%7j{{e2|pw0jQ diff --git a/world/generation/chunks/assets/chunk_0031.glb b/world/generation/chunks/assets/chunk_0031.glb index 004f2f0d3e7c637310caa7ff1fa7bf058f2503fb..48153479a8c180ffaa54004a5a79b5c38400e1cb 100644 GIT binary patch delta 8163 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 delta 8044 zcma)B4OkUb8vceK1rp>>Kta9YA0`qammiavo0a`hn4z_arUnA8h5?!aGA!a>p^1|{ zy4iLsD=l+P%q->3wd`56EM05!skYM0$K6#TA1gDnJ@0VO+;fpJ^qKR%-_JSc`@T8c znK@_kR=@UF{6dT8=1=e=qIQiawJG%LfRxnK^ro|40!KHU&1k+NZ3~DTosw=JJvuWx zEyJFjY0tK&jc(r8<0dIGEybQX+HTLxO3TR3wr8bhXEcWf^_2X^WN9(MIa*R+j8+&8ia6aHvr6?ttG9zYL{4OLY?V(Kdd{`NJX`Pmg9AK+%y%%ZX?cTspE?!h(KR|4 z*WSy^4j&tn#L{#U?jfh#K(2LxN+M_qQ%A7hv@8}?M9z6yUInM-ok@EzMfIP_2q7(~ufhhF47E$F?RKfUmz z6geiFbLAub&X7LttGRl$!F*J9dbGw=%-7Ez)b+ONcz1U=4ZBEG3N;!`S~FipzTo{~l?~aZaC(SlBj$Ns7uk4L!*|V!yA9eD$>!S~Qxu)zdQSQz>C~GBC+lQRq zy;^?p_dm(oPnId4sl8er{;X8F!TGW5<5*MhT%a*-vu)b_QU_gEv`s6R9&ZXW#twJO zcke4yo^Gg-3vv(1RU`kb5c~K3{$n|1XDXGJf+yss&YjFDpId9_w{FXm&rf+&iC(`# zUU%<xLDnum9H)xLPyX8=CuBcnbh4V< zY7%kaQTHvA!$)?EBbLLSxktYIBfCO)~kB>sq&m=$E>}6rmHHtiLb|EQqK5$*>ZF@5#!hLM8N` z3fZaxqFyYkRe&C!j@vHQUM%ICE0@aiO6My_UN4o!1tpf)Do}A@rUm>f=V_CUyTYwHSS>d7pQH36z1HhiSn}dqdT!DI!+v4clO{s{ZulEIaD!U1yMr*qw^P)L zVUCU84^q&P<2!Fx$S>S=zix&6TaF|AEkcM6P*ETP+!wf1hRku!t?H)=6mxF%A{-$D6Lw!`3?L%c z0}m?+hFwIi2Y&d#PsTVRVm`<~r#e709Gn6g1||dj(so^i7#MmWDg{4|$n?waf)r#Z zA`*hk5eY$7IY9WR3^`GDidenIi(}RW(EBh=~(#E;Md&;>{{2UPK^putEd|yA>i(*sTzO!)~C; zNf(HW;An-&Xy3-=Mu|m4hLAZT5y%`7IAov-f=ER~WRN)`0LUCsTF4v`$TvN;aU8Mu zAX^~MCPztAu6#*sy7xL5E*xg zs>gs#;b4Wx6m}~_rm$NfGKRe~s+|?c7>-tm%(hho8b6^TB16a=kqBgt2plp;1j=O9 z_$h<|fry9zAag{iA#=pj5<8Y0G2o`_zi?S0b~eQw%_*@}^4Ti2-PJ*^Mhv`hdW$gu zFla@&^3CScE-Qrpg#22=ABYLt7tJ%V^VTWsbt>CK1&MxUugno83$HrvvO<(_PwS^H zD?}h6>bJ6pH072S$RZ*j6`Qv(VAGZ(ZbkdaZ(UZ1HLzv#F&9VNq6cn1;j%)kiE%++ zxw^nW!=SBwbdj`53of7PKb)3p#pUnYuh2_$g)Y(_+DC(=J?!cy>9m{rvbL{unYPeQ z`hm4S&@ky$+D>7t4bx^;L`?9{_aE`ez^Vbmt zZmx$9-x2A|`9_1)aSV=T_$EbL>ustim=mveoiO)naDKx(h-Wt7JfH(d(tP%GxPIry z8A#4ZW=+HY%sn0N{tnwig}|f6b_$=Y^WhKI;~FZy&frrLQ>(Mjau#8!H7GLegYMb3OwGc&P6 zcepr^7?8-taYTQwp5^Zqh{Vof2P?hU7eDo9@>c2`@ylzx#dTo31an4tLO|CosWceXxnJgo4Pgq@%F z0by5%eKN@~-~bScE#nu+z%#RpU6>dLf*dh19yS@;yG*+^n1iGx@>hz7H>MWRI3Cejeu{XPVvD3x~cJdg+ zt`G{RFm@Ul&aNKp*RcdU51q<*aJM+4~pw*G)j diff --git a/world/generation/chunks/assets/chunk_0032.glb b/world/generation/chunks/assets/chunk_0032.glb index b00e668f3d53def56265bdd18c3403cccee31bc3..7712aac9a3fb91316eed784416ff7a3ad3d108cf 100644 GIT binary patch delta 8136 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 t9?%OCu}_3J{7b} delta 8034 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 Xg4x!6*~az1j1lGMwZ-b?&ph}arN{Bx delta 1479 zcmZ`%Yitx%6uz_F?d-NoV@r`Gwotbcp=`^%cIM7*XYL3FYsyO#LXj9yQVi7AifdYE znq4dq)EFD?sxd8Q{UKDNP`VgQXgdok!4Sa27@KG`!5U*|o8k|CSbW?&^b0#lylb5;vDQ|-yMDb2e&4#(QqG}ikw?Ee%j%|-d>V*aYin9P?Mr+B$_9yC&gKSdxTm%$p7TgRovs(D|9syetv(Vb<^(Mue2t@F=9Rw zsPm`_KIe}wl*nLiFCoB#rFFPHP~jmQKXF!R5+|768^fxe)-6v5e~{$A%K= z9L0&nC+xYow{ru%X{(Xgi7hwd?RV^WI9Qb&IFWXgr$*8_H{P)9%kiZTOc+PQZODyJ zrQ7Ue&xA2Moip9|elhp6A36_F>TuU)qfTx@)%*c8e(6&)qwh10z}L)c(_Kh=lt;58 zDTB$Ue=9=bTrXnM2Rxt%_{igd7Zd}Id^rHJZDm_(u@wyAoEX8~!612|%Cld*XQja0 zc{)B@1sy-=z4658`#&equ8(gu;yWa(N}7L>1))d&J@DsfFL53;*ELRmxX`|_wh3KX z{<7)Dm;@#VuWUu$p;hRgn{@~r4aM&cXHa|kc8AI2TW|W&*{dap$)0W=0rjOglgG2) znlwITd}D(3-^JKY*bbQVkV$zmKM#VS6fCF!ej@y!gsi~}0(33e{nEKmlKy>q1^wmC zxsG{EuA(N#>~tLk3_t;A^6^t6V|F38a8ZA}y4Nb$Yn&sZTzil4%$}qth*;4jn~&s+ z0?_Fq&e$yGdT}Tpv+MI6$VHH^Lvr(E0LD2%DufL2@N%KZNI%y9d`WsRGHh%%pxS7?T zIr`etl%w~p7;x&o@q3?BFH_z%O5?u1cx#;GK|A(Wi<2<11UU&U9?og#gV!^T{%-pZ Yj{lj%l@=xHYYJI|8%}3SH*S0IKbi>?KL7v# diff --git a/world/generation/chunks/assets/chunk_0034.glb b/world/generation/chunks/assets/chunk_0034.glb index 0facbc52536e9343e67bf8d54f40b3290212d40d..eaea7d1f98ef71509279500872fe5a7025801300 100644 GIT binary patch delta 3313 zcmb7^dsGxv9LFz$s33}f%8KSjJT!4xc9+M(?)*kWJb}n6Sd@yEuSf*M2l-+at&V!s z)X@~5s0e0+3Wy$M_D;Ui)9E0DW{84EB~&<4`AUz{%*fRNcJ1`X?&mxA{$BTY=Qp+Y z?XKLnbD5Qr5Y+`CbR`oZ!v>eSBQ32CK^j$?Ue4~e)4?rFa*aw(nLi`LJ6x|1)0L=u-s;NS zacsnswijZ;)T<$UZCNuGNT*(1NY7q*7*tjNP=tRytbqDeK{TOgKc=h(3)Lghk8nng zGj2FD6BDLhEyFM4zT_{yd!V-NIs!8HIVUsTNy0vTCV< zuO9IOCfw-LLplJV5T`BiODZEM^--F1!5-&#})a}RgD_KCxpJj6bI3olxbOY0!{!c8d1yxxiTzICC?*Ic3=7B#>^_47^?6HM~IPu16`=pAcs zQfj0^TBH_!8Z<=EYT>`c)gw>AxV0Gh>A9Kw`aUtdHI0yxAC;-+5z3`)>s*s*9LMcKn5i z5&X8HllUSVdfL$`kU2V*Umcmi|6eU!ne6nPwU2nODP02Td&QA_qJCUE?RChWj+h!-F&3uL4KWC68pv}eCR;CV~gDy@K}A=ofd`2vq#2DCt=gI(S7| z)|f%8>zJOxFJ*|eDYQ0iY~C1?hqY;8m9d_}Pv;&?obF zCl{rGes2$h=GPLcEiWS_K2_m>{VOKGrTTCxBXA&Yx;7G$hJRvNGBXRbzwbM#oP3Lu z7bmyR8rKVN`5*y~T}t9?9mbY@vpzrtAB}b4ewrA8<;j}$*4EjiIE_l)TX~bLud|jo zji01-k{PQqpXr48+`LI zgJ>wS@azq0&@3|$s;Csa&psQTR+mCTr5PsHmO}lKDnowtTx?z*V-%n1*m&dCresVj yjGdmT;#`Z-Z;ARx4BcdG_C>mkv-!BYuKEAsQ#AmcpS5gok?DH=GuC&|$ delta 3298 zcmb7^e^e7!7RMhn)yfZv7HFtcC?G`TM}7jqnYp7y4vWhntcVmV4F&42R4mPIg=!{| zYO#0%GVY=tmF$sP`U`NuN`c86x77;%qSk7)%0>@mYgb#3TGzEbyPL$09RoQ%{bT0y zefQn_?tAy0`@a0%@8b7y3Bw3+Qu_ygfyJGwXBuZtnN|&b9 zDbmy`ZJI`ts!r4{O^kVI#p;-hB}v-EBxQ1{B2Ag5(xs*<6l#q!y(@Bp-fzlS^ZJRq zB~x{t(5w|kQ$!3Hl7yvT_Zuy`(`fv(Xl%?^r>sO?(8fa z^l>c+Y&9A1i`}d6O^1Rvoa-js{-zT;I;qefGF@>3pITK7<$b}l!0Px*o_T@NW+`^s zVi@jc!EL$OgWU@puG;HKES+_NbB_i7v@;yX-o6apEUAs9i&w_e0>hiaJO>bXT;AYG zEYSaR3AcfaPaIW!g`K5qusfb+Xd_D~V^JAAfA%Ej1?mbj1MPVVmz$pS~)kvqm|5gEL^UUePp>9@RT=cVhtW zS`&m#jMa>AvR|Ac^qcsRHN7}QwU+m#5n3ZUu`g}MqQv9scIJ*B|C;>(-Z}F*zTJl| zJMcVwdGG{&GqZsIt=e^EqSKGnaqfFH`lrx`Z2h=Mm;aES*6|2!_+KAphf>zboHLrq z(HsVUof$~fS@v<~CNQ`}gGjbqq0WCWGr9FFIeVKK8zfKmi?!>mL#?M7D12VVl`Wb} z&VQYOy8lFT;+1aiTj*$ew;Ee*c8-ly$eNTbVdE~$b}JK@2OAKFiS-Dx9nKnu!J8Ls z>%kbc0(-NkVAx|9=p3r1+^I#r;myAGXCZjPN${p6 zsJ?${-T?d>8_%yK-5d4hNp>m@?Q9uvxP_a0+BnaNSfe^8Yzj(1Nhlm8A}I<$@n|** zLxEk#)HA}R-VaPuj!84lqwuTm0Na+cTX>a%U48P~72w`CIH(UC?oz_AA;+BK+*zJ@f{VrY6o`G|qz-QMZWdhCM}gRX=UbKFAMt0x`dJtCb6&=i z`0uAAIN{VH_`;b%Ri#AYYnSFhNm8k!vCIrh@>2RY6pwJ?&58ZZ`IB*TVF4WcqJ;Bx z7+?MorHRRK4>xmj|CE8n$s$U}v$Mr{s$_9(#YGz5&i3Z1Wa8S0uZfM+%iLdzF9-29 zM1^F_^fL;4%wc`+8OMP`e}Mgu9ihf4xToIYql)XwuFI7%;vn&5__FUgu^7<)fjLLD zY7zww&LP%XFyGNa2;8On1kktXgus9w05;lcz*ZDO#r)0+JK7e5?D7V(;H5^=($v6^ zUItRWIE2zy7e64n@imFIOz+F?{VRv22N6`ovk-mWN~|0mqRy;)4FsOliEQV{+$no)itE|cwU8^;^%KA zK0BKYh+o=!RNF)98#>7wj~n5}@fuGvl%|@YXZx=Ap|{ix!*G78RE(ZEZmK=kUW<6ugP9ddXLQ) zhky;J1c9xCRvbN@C0*1A;vveMTDtQc3n_5vF%A7guoYH*r=ihsQrF&v+PMD%ZJ);w diff --git a/world/generation/chunks/assets/chunk_0035.glb b/world/generation/chunks/assets/chunk_0035.glb index 3da18d80d48d72808c4ff4fdd375260f2589c693..2eae4e76ede44301b261de85a2fe3080ef7802b4 100644 GIT binary patch delta 4315 zcma)`(`>LQCEY*6Ik-S;l+?pXyv1s~IrM5`9Z#%PopVld``Ug8*S zqf+Ild1xJU%;;E6tO%0m?!Aeb#wL@Av1;?`2s6fNH5D@*%#2Oa-&yvO!^)ce@%w$g z_nhDFye@aokKS9Vi?>voWsUXKF#u5i3_#ru%@x|Ga?nDRkFj%~DkfHCqx<9XEmn)u zZn4@NZnwqewm4jiO7egE#H#%A1*P_qQlZRjvpdWVr`v6JTii~wtEALU=O^USQSrI- zm4rN6AEK7plhP?gy(}q%PE6F%OQ<{I3aB9=$7C(D*ertGC0Jcfv)OLLL2PACn_v-a zR;$focMDc44(h{%IO>Ww(o;AA(`!)=pgs{_K%I%DW=omdYOy(SB)i3hc@|fReb{;< zXX@OUs8`XClhbHdQZZwU%|-i?i)n328oiTLN&~5Bv1W^lK9%f^G27_zL)vW+mx^wl!U#*Y#@Jn{H6= zD_9UP9bHe_Cj8k;>oQDqUWS?;%`h+%ZzNoo7VbGJDO~lXL;kA!8wu&J>;8gKX2icT zVC@Q*zLqLod;f7sA&Vc(>y{!&!p|Xo3JL!D|Ncn|Q)Cl_0|t5E``1a*=Q|~Z7h1C9 zi&KtC3foP|p#>_${P2W>eD3+3Qi*Guq;S=j-M;VwLTtG5qi>02qcliyql5#6R<3Z- z_xb(nAa zfo`$y>r@%=J+`V1^o-h20np+1esU;qxOu0%J*`%5DfG*ab*vqx)d{t7t9HKU%Jf#5 z)6^*x(SCI%^=qxLBQLnTL{>DtjzQmH05d^r$jq9%NnZBFG+AeP zR#r4Mn2mIzSsgO`mL^ZSsgmQ47z5vqT`K<{n%>rCO@4DgC0kZk%C8qKlzIJ|t_IS# zZjStNRlUql_A5arviwE3B)hjCFoxF}}Fbq0D-XPA8K zj}`ufl_vvx+{4Sl5-&KP-R{u=9Rd$e36%T|<-K-PSpG^3K7Y%r3a zNw_cmpKovTe&F>6&KN~$<0)%UY$y->{oNO&@wdi#>yFisqOWraAJg>Snn2rgHRRGM z+{`I)A_-9~l3d`FOrPTJAfwaZ>BPw<{EWq8cE*8y@j8 z<}H6!RD}1LU&Tp=|EwnpS;F=#l{XsA*I$x)m%Zv8MjZI%4H_TpwRse>{!Is0l3&cw z_-gMxJ4DvsdQZ#SxRwmmL(^ zsz#)!bjY*2JS>p$?!4^aTf1H)3XR=1a^%PhMB(G_+sIhn2rs!yu1K$pi7b+44bED}FE{4|t;kiUMaVRKSwZT^&Oe+gz z@k*h=7afrr7wT6wcE1(}cdry9d|?u)aboh*KqG6VUg2w(NDa{R)2WF3!!X?;ag&Xx z`5Gpg=IR-~wi(hQD|+x)xSd7QP24e#td+uuFOniPKtDHEzny;=(p-VW7fVCBbK`EOy6iI+q{HKM*MH1w2zCtz>#(~@~)k)S}XM;_Pnu3vJLD(-! zn|GWhmWNaCBThuZ6AokLzvdBB-=$zAalmlgaJF5$EL}Bfq)6iWa6=+nDHA*){5+ha z@63_%UXp{6+;I1VuV>1kU?gz^zVHSjD2Eq{{N>=pp@!PRt0ZQYL5d^}5>6P-&D!1M Pv(^uTk?hnjo;&(~StNz! delta 4345 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 N-x9*E$l9vp{{eOeylVge diff --git a/world/generation/chunks/assets/chunk_0036.glb b/world/generation/chunks/assets/chunk_0036.glb index 105c8cce9f6dba072dbf6ac7fd8d22b487f5883d..e063e0c0d6b96aa5c36184e8a855e35da6ae41cf 100644 GIT binary patch delta 2802 zcmb7^3rtg27=TYl* zFLc=`v3pF zPWyFH`*l&>?J==&GIg9<9H56gp>ZKP4svIFw^~I${E5no2YE``1+i#jE%o^?2?LjZQ zoQRiQUd5e5T)MFiWNiZ!;l2B<(7h=Z6P}s24?4T90%6DQK-~Gm9cE=sHSFkQY=pa} z+=D$c<=7qheB3&k$&Bg+K7cE;k4ECQn{k+sUvTNWSR7aEjg{5%5#+}wmS2SJjlMYg zVFxVDoq-G2c7gua9{76o)e-#rOMl#0G3Nqx|LApCB_A9?KH$RXeN=ac4DZ?6LtT9M zm7~xW6ytbeuC(TkE1XPs45qRf%fE-i-eWNFwp&u%yD*LIZ(7U}T{_G-F=q09F z=qgWU-{tzB-|3+R67(T_Ql@bv6Z&I&C`#ioN*r8mpkVOeZXGD zkog0&pb>z=oQs7XTI+#7(x*C#6C}n$@2&X)4+q6lC_lVobs8&YPclNUIWGdGKAE*m z)Uw2BVdKBN)I>wwTFUY6-T7U6sPoRIAPYtAQs|ZiT_D-=2D_nG$#PB$8_)F8Z6VB& zi^*)tZXw+-h z&Acc;$jA_So}C9-^;c-yu-K-S`9W^|l~Fksu@oPO@S&Y%_%Lm@#xalZzTIv^h&D1qVr2Y~(Gi%i=uEEezsiKREFN=cv29kZ$)ISL}Q)>|}uq5jAVNs&KyMxYQh3wd)_ zZzMqh$P>MYl*pGej^+kMOn??8qiF63Ln7|bTK`dOnjj?`IoZ_Bm2*^5*B#w_X-<~Z zbxSs@(zB$l+p&39x=PH)G`FXRiTSO_{2*N=b=_~wcy7FWf9ML>zGzZo*`04~T>&&4 z4Dx88LTYt2Y6WEa3^Zo!OJsy|%nRpEqRW>UAlqbVn4bS>Mz^nW2!mt5+E6X=?K~8NsQ} z09<6DH&siRiuJh=nOUoK*Z(w~+4rqr`e`$f5oT;Ljs@efW(}b^;ddPpw`-WFTY%ob zkyMPUA-Z=R5Ek?t)EQ5Ube;XTfj!Wtb!~SJ`ayY-0SKSWs{(YQl-3N3=4#PCK$(xU z?s#ZH0A)I20K%H0pLNLKqjSe@{dyhR`9wole*BznV~zoe|LB9X&FcVflR(&6y;wIS zBPqUBW#jL#pGjfRfgY`pr)0zZi}xOXdsZ=^Pdl}QxjriaNq1=WXBEQi{1tGzy^gBb lU@&jVeC?$m?(c~}LEQNY8qfV}zT6Ro0=a9T^;~9o#J~6ewV40_ delta 2802 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 diff --git a/world/generation/generated_world_region.gd b/world/generation/generated_world_region.gd index c816c3b..b090844 100644 --- a/world/generation/generated_world_region.gd +++ b/world/generation/generated_world_region.gd @@ -9,9 +9,6 @@ const FishingShopInteractionType = preload( const PlayerStorageInteractionType = preload( "res://world/player_storage_interaction.gd" ) -const MeshSurfaceAnchorSamplerType = preload( - "res://world/generation/mesh_surface_anchor_sampler.gd" -) const PrecipitationOcclusionType = preload( "res://world/environment/precipitation_occlusion.gd" ) @@ -699,40 +696,43 @@ func _instantiate_prop( ) _placed_prop_groups.append(definition.procedural_group) if definition.has_gatherable_surface(): - var surface_sample: Dictionary = ( - MeshSurfaceAnchorSamplerType.sample_vertical_surface( - visual_root, + var authored_sockets := _authored_beetle_sockets(visual_root) + for socket: Node3D in authored_sockets: + _add_tree_gatherable_anchor( prop, - definition.gatherable_surface_material_names, - definition.gatherable_surface_minimum_height, - definition.gatherable_surface_maximum_height, - definition.gatherable_surface_maximum_up_dot, - definition.gatherable_surface_clearance, - random, + socket.global_position, + definition, ) - ) - if surface_sample.is_empty(): - push_warning( - "No reachable gatherable mesh surface found on %s." - % definition.stable_id - ) - return true - var anchor := Marker3D.new() - anchor.name = "TreeAnchor_%d" % _tree_anchors.get_child_count() - var local_anchor_position: Vector3 = surface_sample["position"] - anchor.position = _tree_anchors.to_local( - prop.to_global(local_anchor_position) - ) - anchor.set_meta( - &"terrain_prop_id", - definition.stable_id, - ) - anchor.set_meta(&"terrain_prop_name", prop.name) - anchor.set_meta(&"mesh_surface_sampled", true) - _tree_anchors.add_child(anchor) return true +func _authored_beetle_sockets(root: Node) -> Array[Node3D]: + var sockets: Array[Node3D] = [] + var node_3d := root as Node3D + if ( + node_3d != null + and String(node_3d.name).to_lower().contains("beetle_socket") + ): + sockets.append(node_3d) + for child: Node in root.get_children(): + sockets.append_array(_authored_beetle_sockets(child)) + return sockets + + +func _add_tree_gatherable_anchor( + prop: Node3D, + global_anchor_position: Vector3, + definition: TerrainPropDefinition, +) -> void: + var anchor := Marker3D.new() + anchor.name = "TreeAnchor_%d" % _tree_anchors.get_child_count() + anchor.position = _tree_anchors.to_local(global_anchor_position) + anchor.set_meta(&"terrain_prop_id", definition.stable_id) + anchor.set_meta(&"terrain_prop_name", prop.name) + anchor.set_meta(&"authored_beetle_socket", true) + _tree_anchors.add_child(anchor) + + func _prop_yaw( definition: TerrainPropDefinition, ocean_facing_edges: int, diff --git a/world/generation/props/assets/prop_palm.glb b/world/generation/props/assets/prop_palm.glb index e62f1efffc2ba52bd62ead7d20905fb9bc6a3821..6c34fb95d528d5077b259b6f52c1ba585d2204a4 100644 GIT binary patch literal 26244 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 literal 26408 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 diff --git a/world/generation/props/assets/prop_pine.glb b/world/generation/props/assets/prop_pine.glb index 0290a48a6ee4ddad85da91a30a3c003d79352607..a9e560a82078591cc97545abdfec79e28d07c64a 100644 GIT binary patch literal 10168 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 diff --git a/world/generation/props/assets/prop_pine_large.glb b/world/generation/props/assets/prop_pine_large.glb index 99c9cd46061fb8f2b8f7dfc2d1db77f582d226a1..e501d2d700fd5fb66c88903a11a9c52a3ffa362b 100644 GIT binary patch literal 9500 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 M19X}U%nYpl4TObVTL1t6 diff --git a/world/generation/props/assets/prop_tree_1.glb b/world/generation/props/assets/prop_tree_1.glb index 5c798e9c17373226d631c122f0a9c46b8fcd3dee..936b6d3b256e5fefae3a9291e7a002a996202957 100644 GIT binary patch delta 4222 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 aL8ZG595zdZ@c-kWYIQNHX?B=0^8W!D8$ql9 delta 4224 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 Jlk0ERe*m5c8z=w( delta 2988 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 diff --git a/world/generation/props/assets/prop_tree_3.glb b/world/generation/props/assets/prop_tree_3.glb index b1f53b310be430efafc0a4d86aced9d15ec4368c..8011aa061b1aff7f175019fb7311fd46b95e95af 100644 GIT binary patch delta 3579 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 delta 3608 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 Ezr5vBO#lD@ diff --git a/world/generation/props/assets/prop_tree_large.glb b/world/generation/props/assets/prop_tree_large.glb index 7cf2c4fd795ba2ba0fe605e4012e7ec9063ef2e5..ebe797567d2242c5e5a1ae7738760fe464aa96c1 100644 GIT binary patch literal 13200 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 delta 2166 zcmc(dd2mfv9LG;yp1eeM5wu7mMufaP=iL4B-aXHfjHR`WSjr=4>=H{_OmTIc)EX{I zrO5Qy;h&5Yli*0N}gCKT_OiyCFY5TuBbAP|j?|aVqE$80s(Pb@yM^EUN zYykk2g#oZ)aq#R==$YlQ$EIg|nl?4I{opUOD4!OpJ$6b)=J3q18R=Al4vrNC#Bm}N z8OX>8arQ*$;CY^77zicEio75q`)dhFjLa~sz%mk*UL6&XEV4+3ETW~RjvPKAjpjuT znTHSx3@7k{Ac_oce=SA*k0u~SWOBT4iiL&RS!*|ybwH7&<#>ieJSPaO zopmrgE64%^S%yUtLNq_?pcN4-i;$KUWnO;QPVIIiFo<@AIC>-YM8+XNNn$x3@{pbv z1<9T$JD8efL8fy`kP~V$WX_nRt*Q6W!f@JhzxLq_NAGIHjLfuNqee|l%ZzQWwX``J z2>%i}Nn7ui@E=*=v^1O3BEp(gE!!4uMF>jTbsB{Ehx_tKsO8?2MM=`q{1a3Lioz_< zteBW){s469))T}jH(gBzJWv3L-)-jHT^0raR5tWZ7|j z;MXO3jc#UV;SGIz=s23cY?rf8eHZLqxYOmoBv1Lfbh=^Y@~lDygdFYgloxh+_feRB z68g-+)TnRZJ^7mYuR5vY>j6Iy2I|o_lF3TH+SHxh z<(yFgzxB309^}T!HnpH4sg2R$e3E-eRJn0`%XOUEeuHu%%2trowxg@$`w~*T!B#M> z?wl3~6 zkE$GvEH_Ho-o~6!$DEnj7mVs(B8j-kic^ZCai0UX^v@@#R(yK1gnv^j6}_6rIs0t* zu(n0nw!Ra-dLkGvNbn_XZs`gLNG4Od-Bi|IiNsfXB@no}P>+0YQvYUNU$Vy$h7X)P zqNm)DNy1-=k(N_dUsx-Ix8aw!H;ze8WaA=7iPZ2=%jQGH~)~=acxZ zWZ96;xPM^-(skPkJ=X6_*I=7Mf)BODW?mQ-NAiRO!W8_j?`RJ3EH=RvH&e!DwlC;T z0)lpVH&=X!KdF|8RyE$+asb5P&-*#!xdeRWBLzSDW2m>-B4KrII>MKFM&rZj9kDQ` zk3LA;?9$G(!^2A@lJfwO*os6v;_M{7by8c*mJ~Vv48df52d^u1Y9k^QeoSy)Jte|1 z6Q^p|y!$ObI&TEbaF$o9Bv-C-2@&ZeD|Lt7>0Etp=c9> bool: + if other == null: + return false + var first_surface := _points_at_or_above_height( + _upper_surface_points(), + minimum_height, + tolerance, + ) + var second_surface := _points_at_or_above_height( + other._upper_surface_points(), + minimum_height, + tolerance, + ) + if first_surface.is_empty() or second_surface.is_empty(): + return first_surface.is_empty() and second_surface.is_empty() + return _surfaces_match(first_surface, second_surface, tolerance) + + func _surfaces_match( first_surface: PackedVector2Array, second_surface: PackedVector2Array, @@ -103,6 +129,18 @@ func _points_above_height( return result +func _points_at_or_above_height( + surface: PackedVector2Array, + minimum_height: float, + tolerance: float, +) -> PackedVector2Array: + var result := PackedVector2Array() + for point: Vector2 in surface: + if point.y >= minimum_height - tolerance: + result.append(point) + return result + + func _upper_surface_points() -> PackedVector2Array: var result := PackedVector2Array() for point: Vector2 in points: diff --git a/world/generation/terrain_chunk_generator.gd b/world/generation/terrain_chunk_generator.gd index ee79821..0d1703c 100644 --- a/world/generation/terrain_chunk_generator.gd +++ b/world/generation/terrain_chunk_generator.gd @@ -19,6 +19,15 @@ const RIVER_FEATURE_CLEARANCE := 1 # Keep packed domain bits below the signed 64-bit sign bit. Catalogs larger # than this remain correct through the unpacked solver path. const MAX_PACKED_SOLVER_VARIANTS := 62 +const PROJECTED_GRASS_MATERIAL: Material = preload( + "res://world/materials/generated_terrain_grass.tres" +) +const PROJECTED_SAND_MATERIAL: Material = preload( + "res://world/materials/generated_terrain_sand.tres" +) +const PROJECTED_DIRT_MATERIAL: Material = preload( + "res://world/materials/generated_terrain_dirt.tres" +) @export var catalog: TerrainChunkCatalog @export var grid_size := Vector2i(7, 7) @@ -292,9 +301,14 @@ func _resolved_layout_validation_error( east, TerrainChunkTopology.Edge.WEST, ): - return "cells %d and %d have incompatible east/west edges." % [ + return ( + "cells %d (%s) and %d (%s) have incompatible " + + "east/west edges." + ) % [ index, + current.stable_key(), index + 1, + east.stable_key(), ] if coordinate.y + 1 < grid_size.y: var south := layout[index + grid_size.x] @@ -304,9 +318,14 @@ func _resolved_layout_validation_error( south, TerrainChunkTopology.Edge.NORTH, ): - return "cells %d and %d have incompatible south/north edges." % [ + return ( + "cells %d (%s) and %d (%s) have incompatible " + + "south/north edges." + ) % [ index, + current.stable_key(), index + grid_size.x, + south.stable_key(), ] var neighbor_error := _neighbor_requirement_validation_error(layout) if not neighbor_error.is_empty(): @@ -3427,6 +3446,12 @@ func _calculate_edge_compatibility( 0.0, profile_tolerance, ) + if not profiles_match and first_has_water and second_has_water: + profiles_match = first.profile(first_edge).matches_at_or_above_height( + second.profile(second_edge), + 0.0, + profile_tolerance, + ) if ( not profiles_match and first_has_water @@ -4072,6 +4097,7 @@ func _add_stacked_elevated_chunks(solution_root: Node3D) -> bool: &"terrain_chunk_coordinate", support_coordinate, ) + _apply_projected_surface_materials(stacked_root) support_root.add_child(stacked_root) if build_collision: _add_collision(stacked_root, variant.definition) @@ -4098,12 +4124,14 @@ func _instantiate_chunk_root( var terrain_visual := definition.packed_scene.instantiate() as Node3D if terrain_visual == null: return null + _apply_projected_surface_materials(terrain_visual) if definition.base_layer_scene == null: return terrain_visual var base_layer_visual := definition.base_layer_scene.instantiate() as Node3D if base_layer_visual == null: terrain_visual.free() return null + _apply_projected_surface_materials(base_layer_visual) var layered_root := Node3D.new() layered_root.name = "LayeredTerrainChunk" base_layer_visual.name = "TerrainBaseLayer" @@ -4116,6 +4144,41 @@ func _instantiate_chunk_root( return layered_root +func _apply_projected_surface_materials(root: Node) -> void: + var mesh_instance := root as MeshInstance3D + if mesh_instance != null and mesh_instance.mesh != null: + for surface_index: int in mesh_instance.mesh.get_surface_count(): + var source_material := mesh_instance.get_active_material(surface_index) + var projected_material := _projected_material_for(source_material) + if projected_material != null: + mesh_instance.set_surface_override_material( + surface_index, + projected_material, + ) + for child: Node in root.get_children(): + _apply_projected_surface_materials(child) + + +static func _projected_material_for(source_material: Material) -> Material: + if source_material == null: + return null + var material_name := source_material.resource_name + if material_name == "grass_lite" or material_name.begins_with( + "grass_lite." + ): + return PROJECTED_GRASS_MATERIAL + if material_name == "sand" or material_name.begins_with("sand."): + return PROJECTED_SAND_MATERIAL + if ( + material_name == "dirt" + or material_name.begins_with("dirt.") + or material_name == "water_reference" + or material_name.begins_with("water_reference.") + ): + return PROJECTED_DIRT_MATERIAL + return null + + func _replace_generated_chunks(solution_root: Node3D) -> void: _clear_generated_chunks() _generated_chunks = solution_root diff --git a/world/materials/generated_terrain_dirt.tres b/world/materials/generated_terrain_dirt.tres new file mode 100644 index 0000000..9f45993 --- /dev/null +++ b/world/materials/generated_terrain_dirt.tres @@ -0,0 +1,16 @@ +[gd_resource type="ShaderMaterial" load_steps=3 format=3] + +[ext_resource type="Shader" uid="uid://d2ju2vpykktuo" path="res://world/materials/terrain_surface_projection.gdshader" id="1_shader"] +[ext_resource type="Texture2D" uid="uid://rmlno7rb2e8p" path="res://world/generation/chunks/assets/chunk_0031_dirt.png" id="2_texture"] + +[resource] +resource_name = "dirt" +render_priority = 0 +shader = ExtResource("1_shader") +shader_parameter/albedo_texture = ExtResource("2_texture") +shader_parameter/albedo_tint = Color(1, 1, 1, 1) +shader_parameter/tile_world_size = 2.5 +shader_parameter/blend_sharpness = 6.0 +shader_parameter/top_projection_bias = 2.0 +shader_parameter/roughness = 1.0 +shader_parameter/specular = 0.5 diff --git a/world/materials/generated_terrain_grass.tres b/world/materials/generated_terrain_grass.tres new file mode 100644 index 0000000..5ee2266 --- /dev/null +++ b/world/materials/generated_terrain_grass.tres @@ -0,0 +1,16 @@ +[gd_resource type="ShaderMaterial" load_steps=3 format=3] + +[ext_resource type="Shader" uid="uid://d2ju2vpykktuo" path="res://world/materials/terrain_surface_projection.gdshader" id="1_shader"] +[ext_resource type="Texture2D" uid="uid://doju2lbj2ghwa" path="res://world/generation/chunks/assets/chunk_0000_grass_lite.png" id="2_texture"] + +[resource] +resource_name = "grass_lite" +render_priority = 0 +shader = ExtResource("1_shader") +shader_parameter/albedo_texture = ExtResource("2_texture") +shader_parameter/albedo_tint = Color(1, 1, 1, 1) +shader_parameter/tile_world_size = 1.75 +shader_parameter/blend_sharpness = 6.0 +shader_parameter/top_projection_bias = 2.0 +shader_parameter/roughness = 1.0 +shader_parameter/specular = 0.5 diff --git a/world/materials/generated_terrain_sand.tres b/world/materials/generated_terrain_sand.tres new file mode 100644 index 0000000..5a41422 --- /dev/null +++ b/world/materials/generated_terrain_sand.tres @@ -0,0 +1,16 @@ +[gd_resource type="ShaderMaterial" load_steps=3 format=3] + +[ext_resource type="Shader" uid="uid://d2ju2vpykktuo" path="res://world/materials/terrain_surface_projection.gdshader" id="1_shader"] +[ext_resource type="Texture2D" uid="uid://c3s1ebrqrsylj" path="res://world/generation/chunks/assets/chunk_0001_sand.png" id="2_texture"] + +[resource] +resource_name = "sand" +render_priority = 0 +shader = ExtResource("1_shader") +shader_parameter/albedo_texture = ExtResource("2_texture") +shader_parameter/albedo_tint = Color(1, 1, 1, 1) +shader_parameter/tile_world_size = 2.6 +shader_parameter/blend_sharpness = 6.0 +shader_parameter/top_projection_bias = 2.0 +shader_parameter/roughness = 1.0 +shader_parameter/specular = 0.5 From 7050ca2f232f72c18aeb980ad487fb736fa15382 Mon Sep 17 00:00:00 2001 From: Voyager Date: Mon, 24 Aug 2026 16:32:04 -0400 Subject: [PATCH 55/90] Track precipitation occlusion script UID --- world/environment/precipitation_occlusion.gd.uid | 1 + 1 file changed, 1 insertion(+) create mode 100644 world/environment/precipitation_occlusion.gd.uid diff --git a/world/environment/precipitation_occlusion.gd.uid b/world/environment/precipitation_occlusion.gd.uid new file mode 100644 index 0000000..5c28354 --- /dev/null +++ b/world/environment/precipitation_occlusion.gd.uid @@ -0,0 +1 @@ +uid://0kv6jdauv3m8 From ea4d38cb4910b14a2457e7bfd33038ee1f4db780 Mon Sep 17 00:00:00 2001 From: Voyager Date: Mon, 24 Aug 2026 20:20:58 -0400 Subject: [PATCH 56/90] Import latest creature artwork --- art/exported/creatures/103.png | Bin 2764 -> 2726 bytes art/exported/creatures/106.png | Bin 3777 -> 3843 bytes art/exported/creatures/201.png | Bin 0 -> 3865 bytes art/exported/creatures/201.png.import | 42 ++++++++++++++++++ art/exported/creatures/403.png | Bin 0 -> 5673 bytes art/exported/creatures/403.png.import | 42 ++++++++++++++++++ art/exported/creatures/4401.png | Bin 2936 -> 2989 bytes art/exported/creatures/5702.png | Bin 1760 -> 1760 bytes art/exported/creatures/6103.png | Bin 5998 -> 5948 bytes art/exported/creatures/6804.png | Bin 4219 -> 4263 bytes art/exported/creatures/701.png | Bin 0 -> 1840 bytes art/exported/creatures/701.png.import | 42 ++++++++++++++++++ art/exported/creatures/704.png | Bin 0 -> 1904 bytes art/exported/creatures/704.png.import | 42 ++++++++++++++++++ art/exported/creatures/7101.png | Bin 0 -> 4309 bytes art/exported/creatures/7101.png.import | 42 ++++++++++++++++++ art/exported/creatures/7506.png | Bin 0 -> 12452 bytes art/exported/creatures/7506.png.import | 42 ++++++++++++++++++ art/exported/creatures/7508.png | Bin 2019 -> 1992 bytes art/exported/creatures/801.png | Bin 0 -> 777 bytes art/exported/creatures/801.png.import | 42 ++++++++++++++++++ art/exported/creatures/802.png | Bin 0 -> 2084 bytes art/exported/creatures/802.png.import | 42 ++++++++++++++++++ art/exported/creatures/805.png | Bin 0 -> 1017 bytes art/exported/creatures/805.png.import | 42 ++++++++++++++++++ art/exported/creatures/806.png | Bin 0 -> 1614 bytes art/exported/creatures/806.png.import | 42 ++++++++++++++++++ art/exported/creatures/808.png | Bin 0 -> 1175 bytes art/exported/creatures/808.png.import | 42 ++++++++++++++++++ .../creatures/fish_placeholder.png.import | 12 ++--- .../anchovy_european/anchovy_european.tres | 2 +- .../anchovy_northern/anchovy_northern.tres | 2 +- .../flounder_winter/flounder_winter.tres | 2 +- .../mackerel_atlantic/mackerel_atlantic.tres | 2 +- fish/species/mackerel_chub/mackerel_chub.tres | 2 +- .../menhaden_atlantic/menhaden_atlantic.tres | 2 +- fish/species/milkfish/milkfish.tres | 2 +- .../mudskipper_atlantic.tres | 2 +- .../sand_lance_american.tres | 2 +- .../sardine_european/sardine_european.tres | 2 +- fish/species/tilapia_nile/tilapia_nile.tres | 2 +- tests/fish_catalog_content_validation.gd | 13 +++++- tests/logbook_validation.gd | 28 +++++++----- tools/art/export_creature_art.py | 38 +++++++++++++--- 44 files changed, 540 insertions(+), 35 deletions(-) create mode 100644 art/exported/creatures/201.png create mode 100644 art/exported/creatures/201.png.import create mode 100644 art/exported/creatures/403.png create mode 100644 art/exported/creatures/403.png.import create mode 100644 art/exported/creatures/701.png create mode 100644 art/exported/creatures/701.png.import create mode 100644 art/exported/creatures/704.png create mode 100644 art/exported/creatures/704.png.import create mode 100644 art/exported/creatures/7101.png create mode 100644 art/exported/creatures/7101.png.import create mode 100644 art/exported/creatures/7506.png create mode 100644 art/exported/creatures/7506.png.import create mode 100644 art/exported/creatures/801.png create mode 100644 art/exported/creatures/801.png.import create mode 100644 art/exported/creatures/802.png create mode 100644 art/exported/creatures/802.png.import create mode 100644 art/exported/creatures/805.png create mode 100644 art/exported/creatures/805.png.import create mode 100644 art/exported/creatures/806.png create mode 100644 art/exported/creatures/806.png.import create mode 100644 art/exported/creatures/808.png create mode 100644 art/exported/creatures/808.png.import diff --git a/art/exported/creatures/103.png b/art/exported/creatures/103.png index 1a16a388469cfa5068be6e4050d238575bf50229..98dd6180e49c91ccab9dba6664998afbdbecdc12 100644 GIT binary patch delta 2642 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 A;s5{u literal 2764 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 WD@hOa1pmHNfSHlCVa*-axc>otn_ZFs diff --git a/art/exported/creatures/106.png b/art/exported/creatures/106.png index 61285cbcfb617d3e4526c1b0c8eeba1e0db0e2bd..4227b4495a024916ee01d7dea9bcbc4bde9f524f 100644 GIT binary patch literal 3843 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 O7NDl2rC1|x9r-^XN^M>M literal 3777 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 F{ttQRICcO4 diff --git a/art/exported/creatures/201.png b/art/exported/creatures/201.png new file mode 100644 index 0000000000000000000000000000000000000000..3994912791c474ed32e2e4dfbe0479f4459059ad GIT binary patch literal 3865 zcmV+!59aWRP)wes#twvgo)Pa6oaagqX|rUB9tUUp*2w2)2h@CqM(N zQrV1ULTjJ^wd5jz{9SdDec@>Lcje5tr6PTVfI$D5osrC5Q$iF7QIx8-B0N`}CLKefOhN4<%J)=^yQ)>eu zG$ms8yM$0?YZCPQ=!~F87NhWIl?uOOeng*rCf*07viY)PSOH1%E4nkZ=vh(`CEl*b z(PTSje#WG$y0bQ@%2WbIv_z{)9(oH79E+mTO0aWu29-vHl#~CBhbXbHCMiQuP!NP7 zQcAUjOcq0dS1UX8kN!dN3jF=t_*+eagg5paRBmrV(9 z9En6p9GH&KVgkKgF3#`IqbqA85)yAtHsxqN!lB8K)|+7}{oG;=K`ltIyzJwqPp&}8x4{MQ-DgIO$6py+JhurangsKM44xw)Y9Ud8 zog_fp;K)%E#;mjBLSeeaz_?6zIb)cqiN^`Y;aZ4x#Nk*b`U@UxL!sVIuxqq|(U}k> zKZ}nH6tO64fl>+~1kPGs0Bnkg3-sh%w&lsUQhTXRa_v0Tyb_=>=fR^EgiYM8{}552Ir`M}e!dr)|xTHznVd=W55La}7VaR|y{MIw_! zhz} zlBxnh+$K2CY+$?@Kq>+q*E-U7asnYtBuo>bQUas^7*l8l47GLwF7+&(Xqa$`>1Kl0 z#%9opSo*AT-o?sN4vr3rBnF619~8JqC=|)vwQ-I5-7B)&W^)VUq-%hN&ihL}q)Y{A zNvVAO*{-Pymc?C=v||F=MzlaeP%vhtPECIH9gdVy3ksM6DG=o0nx0 z^yVD=&bME}?{B;ir}y-w<`S}L{My&H;k@NJ>>O!o1I*hUN6GD=;~H+hluX~h9oe~<*E38Hc$q&URe5Ee(l(YCC>rR==sc3&w7{W&9uCFzhNRchyPEFoN= z(oB#rnTA5wF!A8_aeU*}4KS$-NwmiBRQR!$Kx-tyjh8OPL~P)N9V5`ffAt2TgA{qQ zmRSVFuy$o`3j5k?#{%{;PLv6}n*=+na&a3C)1b&ZHcW1!9w+IpnuK%&79IOfg%tvf z6R^ZcL!w@-c8;7IV2O<|*4ooCp)MzbR>%=1H84~VCKH$(f9uHe8?6A(zjinkUgNG! zdLEE4vM_MQT3DumRfWg{l`r8$YruOoL4iXm?Z^mtNTHYf)WJizq`x1L;HmJbkrJAc z5pkZ9BUAkcq@;*r3t=n(nX(7p>SV){)iF4ZgZfkh!BlYM*;=n9ei3|MVf+M-$!pQhicTuR2YC# zpeLWh+SB@>2=MB}A+%VW?%ugQB@BG(20Z^Se~B{}`v|8hU@eix-v{?oT(^=S1jT<0 z3w*jCDER_W46p=>AUd#F+F382F}97{yjK2+5~rP{Q2#_ieXvCo`?PstBX1GbvxMq-5nTM3amJ1 z6=o{Kpj7(}3C6f{`?_NDPlhJ$INX$9J=$6+P7-{Nd(}8>9;mfcBi5CzLdK@>U5cXT zqB~>jZV^hpg$w!%SU*q(qY0Lkx?ouphGF5{k6(e>!8b6nrwS$sEJE@1Z+-{Ki~ok7 z`RLiW?#AoUU9fQbH6|{;<|@R^{cv3c+fHEH0-gtW@~}@7`O2}@Nlz95BO{2Yq3)}; z<4P?|-f5oB{hz(irl2#yCk`A$e|HXrav2%F8$w8&zIHCWe{W@!P-%LNGA zz~S*RjC8NWo!?`4<(Ws(clO1Y>b)80y#&(CbSfnZ@|$?yb zXSH9%C)TZo?Rwbt$}a5Kxfkd5HIOhP6}Z2^kg;T^4L7@nKO8a;XGzC2=Su_TP_4#q zRx4?;WVT`v9iE9*I}xe+U;A_G@kh7)N;*!Y?LlCC{k z!rsTXfU^WUUVIf>AAS;O1J#>?RJUK?(C1)g~3C9qb6Y~Dl8wXifFp~vTVvzkRMRA>u<8?M`c zd;ay|A29=ZDhTj0Zpyr_9du;SiIA@FbfjQhp&3Sqd4iAJ{AJXhc?9hpkK&A;E|f_d zQ4pg0v}IU&;RYP41eiE<0IV6NrKH(a#7vlA-xR^~hfGW~1!fYKmf`n2@bLWQ0Y45m zUVRz9HS`E^bSurEsXuUSikMlLYy|L>g-J1i=J+9))K1CKRpBCoqjbSK?0V^W4DZ_u z*Y{yIr{HxJ;P@Vb=?VfN(PFb*W|CGJ$e1Rm1msaV1r+m)U;NZX>+c6127AX7gC&`^efBx^e`yAjH1IZA?u!VP!LjrA*_B zF30nZDW`)rot!!aVes9U+Oflurg_E_&pzL?e&zB`J)m^a^Uj%KwZaYUsCIIinP93? zuQ%EBWDTu)8=Q%>p72e8$1zs)WU#d4qC00`NzuX7R16RdW<{ph>9CMvSurA2njulWr(L1m`F^ z6kDI&2dT-hJGU-bltY*ZcsWnc76&3`2^VivD}4Pi*Mxb5>@%%R8?Sy~%hn&ls>?u=$GK?p=FRWh+OAaiSLTE~@~Ut;IVryPLDxhvk62x+#h=~unOp5l zwtmYmY(m63eSgC=;aC=gl4R?@KlLS-Pn$zY5?JtaK0=7N&Bw8#&tPczUWWC(( ztmW<-92`8-MfyKQz~JB$!p_)l*siye*mmj#nL%ObCY}!7zCX0sT|7Qt>!Fx`s4&dF zW!UE3-}vjh%`blWixdC7b5GmMxZ6K}>o47uDHewY@4N4qJ-ibQf>VUM?;gz7D{QqQ z@ya-6Lb1l{aMbYN;C=Cl_~pm(g5VTFSBFc+#teOG+1J-6=F9FEuz&?DU;ztQzycP4 b1>k=GWbKdZA(Jwv00000NkvXXu0mjflbb)DWsGEk9?OTgn&fMRna=XW2O&%A$BDVd2P?yz|(R94z)hH`{U*CIY z)A!oyrl$TnTtO1F8iWK`0b=rujEtqz$g2JNe^cQB*X>;zf{Xef!NslW{R^c^Bcr~W z?dp);i@jx0HNN+H0`$pR{|gL|Q9`-h0W<&*(F20RhtW6*?c7vC#NZ-j2@OIM&`c1) zhyVc?2_*;)3H*S{HUw}QCzfbUfDK?Xhi{-80A5z+Upc9|xY-%3o(`K!28j=c?w6f3hT0Flm)b;21)ZV!NF9HFJ(TBg2lyQ-N^P z1DyudI5swlZ+=!zvTO)6spIh8@=um%=$3}wh!Q-sp>up0%MuDebQ9UQn$d<3HtwZh zgWi_3;YvX}jS{HjAH>qZJY4A#lmlZyjF|X1v@2+ZF_D07CEh>ljd}x$sF9kiOVSz?zR50F_?ZZN7;j z7Y7BcUdaI;b*ncW+PUrT$9Eci{)utDepu-qwGC zYj;QyE;0y~Uq*6>=hCa_n&U);$cgXY*HITQudGx=t#`K8lq1LHT))f>MmDuw!vGP$+cFf5>m-}T$#kf~En1`7;5b;v!ot@F<~+jhje|OZxH2QF%2*;oCx_Aes?^X z5vG5}R=M^}cHzd18q4Kw2NM7ZWEv$xiRMErJ1h*1)299&Yf&KVwELX*`P^~!wt2#w zU3QHD2l z`OKQ@1ErB2vTa(tISU|hxa4m_p#3WK)wfH7)o-$=c<9 zxMg)bUcP6gq@pe0bf4&LMgpiNJcmlHc`+{E@)xkPQ$#|gtzi|?W3uUQKu4fw5l!>R zqSz`UNaNjfV3=uMQS@*U&B`M5@#UVLun(-mGb#FJIsD};{QK%G{#0k&jTvxn*!^{t zDy>b+Z|qk2*jHo9z!hWP_9T&YkR?-r+ggsu&z_#;Kuj@hUMgXUg2+&YAgdX@=>1x8 z{XT5WBxv`(lB~VM<(3JRySsv)zE`!xTLUr4$g36fSB5vBJFb@wiEP)^dG(_sek&X= zAb#rg4Cx=IlELhnHB~yMDO`@d9eN5$fy5M;<)Rd^OFv9Zw*OhyNF2GEO-xua;po+x zcG%hey~#!aRf?O=O7`1nUw~RqUPfj$ znmH>qU01K>MLREfj<3QV9&kSg5~s=9R>$DiF&Dj&!!nGOv+)=YUR>I{$++#_7odBO zgVdRyV0S}nnn2mFD%n#ABTh57To_Ck8li{1iMB`mn888ZVVhmA`1f|BkQ`uykN=p= z(w`55_0)h9?Q-g|DN><7%?v7BSL*Xszi0Js7S}EXcxg}ftA;#SeylejOh;m@T00C#?`1p5Ep`8H-s*V0|9z0BB&3AoIyE)4Pr?dt$%>ef!x;3J z!9PnozfOT>pQS1&!6SU^1O2D8bKk`qY3RRilTNR- z!h+^EupUvzulDX+%Jg>D>%oJGy$L?I;GT<+tdIiIr3){9e>gV{86DL#MudxAl|jco z*7ai|{pJkMa1(M1&3Uq!61z>d$}wt#Dvt&t(T2?_a$nus9b2mmjazEK;^>gM*B;Lm zXvWb`MjP`!)VAlp<}&o@ZI1LHIkvma?-Ka=hFmOSO^@ZB4&ZS=6vehhf&cpS)tq;T z85w3W(dPS49E#-=u2}Ds2HHHyk1U2%Rye7*Wl=Mf>6HNoMtY-K*f^e;X+LE~_xbdu zh&4RS(;%!)_^Ucm@Jont|LPmufNuLJ)@RoMf`s!lr zNz>V~4JdVLaJY;=u}y_AMB>lQXmao3Z1@_aX;(>Hm<~;4X9dc9v{vsf(3e0Le9@dG zSU+L>29NnV_@HKs`xV#77DVHaomLGMXqeSJn0&jjlS6TQin{Ur;wUt%8U>Att;UFn!{ zWa*Ft-42iMpOwDuKxIYvQ6EjkHt-b_nZZDlW%}&iC3aX&x~B`OHj60kF{3iRD}dC_ zqi73ni7GZS%f!TSe8d^1z~9!pCbgAsPL55E7TPGd0{O*pvg@noT00hB`Z9dZ`fV}W zBV}$xn!QTJ!l8@_=fGFw@sMXK(uFjaJ1Lj`FRqFnXmrt_h5kSmi%R@bsrw^9#q1h3G1>+a9s*K? zJWTw|jymg>+f#)Ot`eWOQ1chsmm`GZIA+|+?RJU}&>ZF#S#Tk?oyu^NbvD)(v}6{f z!W`Kc0yXf5yy9F>AKw@D)?>LZLkKIHvuP{yJoAzCHqk(ZWJ@qU)9v#7k&8&+R-Nqa zS>^=OOP}>F@Qg_(&B4?m#vU1iB^+~Xbxfin4Kj3hw zPE_A{H|pmO8~qM>dR01oH3SGhk{l&on;~Q0b9Au&{!h<3Qi|o%l^@kB`uIFm6P!+D zJ5YBXAOC6GFL9MaB{H~QMA(m4u}`GyP36+DrUJ~)53d|p>$RW=L$r{GYVu{F#Vvw) zr6>60DB@Q{44fbS_V^4L^P;|fZaRjJQo?q1snTk+O+Gxn%m$Bu2PRe@uw2}1ZcW;a z>V=S}7s*9c3jw$g>A@h1J(PztO00mEy;kwO#QJxARBf%g=T8pt5s0_KedI^3->O`C zb2F*7if2{w`O}P@;NG>hN!y#j7psK8?sM0dSD~Sf_GeU~7ONu7`f*6w$K6EF(om=J zNk%1g`A-`E9h-q+@V_*MGt_T0pbL`WX|l9fk!mQ5=cDNZ<)sN&4P4qJ$7NEX7#Ws) z^9H63ZhX+B?MgW0#%8wbKIJaQDnx88p7 zS;vVgjg)s&K{H#4qsr%fO=Jx{6W<&Bw{_RFWFJ(Ad|Y5yER-pJtOoa7FvY5{=tg(L zW95W;(B;VM^b7SY^}xdwbDK+t-jOhXDUKC>wty*DtJ^$e_3iFBvrMZ$y1IVzc~48j zU!lTDI=6`1>u5MfY;YHB>z{|Q{7vD_w}Pd%O}3njjC}J?&YK{u{!b1kw|#%CjKU^9_?h_evpu2HgQ~}d zuaAg^o@>_^WYr%C9nd$4J}U@3OQ@kW($UCE^GIuhP&eL1B?HINtgkTAx<4;Yrh= zZg!YVMD6k*=HC_B$@I`t=&qt#dcgz@#5_X6BL8>mN_FR!%hBAvtim38r&#f4f}~vp zQf~bUute7A;`B_nP?|fW{IYXU5r41@j+t^Bn3-lI$Kkpv!u+{NPtMFQ*Y)zPA`%eb zkoB>R7{}gJoI0SvJOo0TQ>%U+-lHSSmI<^B9vtO0Tkp9u>TBOF0J=cK>Ncsqlx-dz z#pm+DWU)dVP3DNIo#WN?#JoX@=jI2>{n17~uIW5cp*3u`uhXHH=a2)1oc|r}Ae@Q8 z3&)a!re=J=*DKeNu(?EARoU_5wS2?tZ6onB2{xt)ejc>xTc~ElG#Bb;{LEO&My2>D zGwPcpN`2l4GlXQi;N)Na^*-|7*=&r#`ysAcJkP9cERAu-rzZPqDN7oNg0HaO6?Q=? zaVnHfx6JCNTNaV;h9HZ3u^waLmS#~ptb&NIeE2hUh+Mw>+!Va^?$*G*yWP#ewazcW z`M5-$^8-fK6GaD@fJc)1#lM|*w>PkM2o_>-mFr4CB$$aJ#syKm!6SDCpG-2;3mF%alu@hg_JlEX)r^5Xk1J z)$?_(wHE&gW0m$V{R{&<%ihfI$Etd$(JN?5`_h|P3nsQ7NkU^Vnz3M;;39G4ht&Q?+y>;dN~`GXqvN!ePOJ57dyU}?4Bqs z`D|&QNoXqr3i08WtE?A!l}rMy+c-z++TaIe4VJM*I05U#AiH9f>9<`z;y!TCO)wdQ z)Na(Qe`}!wzWO~h@P16P6tX?y0K27HF$3=%6UAS88he3!?TQ4IJx_p#e$J)S?( z+L;SLJsJ>$N@0&m$Pk756km7D4_5F)XQQ`&$a0O)!???x)&3HGs?kDD zHhqr}(Wyrl472aEJXfueL%h9A67&(Oj{-S^&o?8uITio1pQy^fh}P7qh=Nq8LOsb{ zvXg`RRRg9LQY-P7yzy6re~ad%20In^M{oB4<2!yj+%C_-SBikXCB^;VV2*(Hs0j7@ z%?156n@x9Vu|@^_@OlAlnf8KxW7C`}uQT8B`C_IWRWZp4LN&`BvUst@-5 zRQX-ar3`gyFc*1>@rnLWc6y{b_YfTJR+}=X#Qg~4K;kPQkSEsZ$He8ZYGsD_V!z>` z)D-+$3cRsdFxvgWo)0A9Hzb**5}8Egq5&Y4s8AAF8W$gvY!WS?BPi4~Vm`t-hmKP2 zsbY}14rGlpp*yif~-=A_?bf zDR94e`eE_J>febmYGAoy<6f|PUgNo}{nFyz zRp0oKnL`wo^0pEvdueLN;vlrC`ROm5qL_9=F?$RRf1%==Qavq1|CcjOvx(~k2=ouD zZSnU9fdXOpc8nWh=imOJ!Y3MTV1tUCrAG>Ck^7WTf^%N}lk&m>#~GFirKCNJ65%w) zxa=1h@o6d>%{4+1e@HBu??D_HAgNHV*P&{$x#~JJ28z=2C=qV{Sn7L1-g#)NzvYEN zl01{f`UDDJ&wtfpr1wv&OKlbF$Fyq?j<(onTE@zZ%BHk8&( O0DWyEt$GconEwFFrWE@C literal 0 HcmV?d00001 diff --git a/art/exported/creatures/403.png.import b/art/exported/creatures/403.png.import new file mode 100644 index 0000000..da790e8 --- /dev/null +++ b/art/exported/creatures/403.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bypagdb0ollh0" +path.s3tc="res://.godot/imported/403.png-57b9dd64545d97bbd63b86e7f3d61562.s3tc.ctex" +path.etc2="res://.godot/imported/403.png-57b9dd64545d97bbd63b86e7f3d61562.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://art/exported/creatures/403.png" +dest_files=["res://.godot/imported/403.png-57b9dd64545d97bbd63b86e7f3d61562.s3tc.ctex", "res://.godot/imported/403.png-57b9dd64545d97bbd63b86e7f3d61562.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/art/exported/creatures/4401.png b/art/exported/creatures/4401.png index 48078fdd2777efcc6f76be13e639548e2cb971e9..d043f4c9af39032834a0a156b3f42ced09b0697a 100644 GIT binary patch literal 2989 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 H{Tr_ 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 diff --git a/art/exported/creatures/5702.png b/art/exported/creatures/5702.png index 2da58085c4f18faaec6247554c7ac0cef8264627..aba6b8058710a223d4fabeb0e77af1b28a368b94 100644 GIT binary patch delta 1735 zcmV;&1~~cP4d4xsEq`ll6jc<*|95t_-9EP6S}Fx;5uqPIB{Wpv1I17isli}E!17R} zXe^)-W2M0mO~iy4AcB688j%l5l?0987v7MxJPHybZ$&7jg2f_jcY&66cdt1!y|XjB zGu!UcVrk}=+@0CkJ7?}W_ndRj+y!iGY;0_7Y;0_7Y;0_7Y=3%z7XWaRHUtBlXDt*r zYXc50T4RM%IW8-3^4U*kMl-?`3=j&!m8YXnp3Y0gMm5Ak4;P9HrH_@kxyPj*^@jL+ zxsx9#l{MuvGY5(DQQbYHcK>-UT5k@X^@0q;fE)}s^0GUk)3hCJXm0ZxuGQ{8k8>AK zV$tIH;9L{)8GnHCuJfSP7!U6`4TnR<#G=vnr333N#gCOlDs9Dttv<~F0x|^Q^LerC z{l(h#iP@P2@aqmV7xXa zFJC$Sdh#grvd2%ot(>1YkgA;@pX0_a^&MDR7{p`qi+`2yh}RRO82YAk&AO(1&8*m! zC&HE2^HzB&5+qf5nr))p$F%eMGl>|M)2=8_1UM)Ru(`78`@S$hn=V`57H*qAmJ&ZO zd7IB#u*8*t(!lj?SkAo&_ZJivk5i5{vqOe$x-7%j=bfh0w>s`ni z;YVYIQ-A37&6`sg?jj)$?^ovmdE2qTDmdGnL+Vuro5167E)sN z1(FQ#plMFf>%+g<_#GtX@GmTzt6C`r50I;utIE$B4A^3kB#rY5*@ z$%R3WtIx}N!tmU|`ubwg;#aV+Y_7byvWmxQfPV{xYdKa;a-m|p`ryDurZlG`H1m3{ zd804S`pj*{nRCA>OK3F62=!ftpwP(4ZHHsA;kk|Cggi-jQ)$^eOPS2#x+0YXd~mo8 z+sXr4C?v@YZGH|(l5k}2S>>8Ah=|8{X5Y&F!`b#{C)S)WhJ+rHAxTj3Ps3Fgp7|lP zqRt{302-Q~R zUTbB5vpZjvvFQ)L5?|!@Ln}CDjBsLE#p^h}YJ9{Ed$-pj-eoTydRlvsG4y@S%4o^t zz9);n^<(AFp}se~z>YdKhTlGTS95h?)qkne3$UUfl%&iGp9jT_#)OD#!U!$ie|uC3 za{6ffJQObE1tRf?cqSu=#CEss4rY#|hgeVb$t5!Ki$=$_3dF*_dy#YM?Nlezla`4d z=YZ72$ZHf5)VfP{W(;vN&1~1W>B?1UlCLE*q5J^39K0 z=Up$QB4>r#SF9eLUotEy0uoa=o_mVp>jmob!}CCM%PmcL`i%yx_rK{oZY$TiQ=XuH zqH+|<6HeJWY@-nrrDb3v<5Nd4Z8wL?%dQgBupK5#YTxiC`mO$Gy>eXtqJN~^Bbr{W z*j3svB`IPHjjo3`-QI-hwp+APn4x=8X`e!TA(t135>uZPt>XXC?$cQL$$L0hy$5yg zB%50neLip!;6r9yrpIHEcIkP zFhGP*J>fZ`y9BC_Z`$P%rGF}s=1zy#*Q$N5EJ{XxR;Y-e+Mn(rNO9epVB9-GERO!V z9Bky)dWQ6*P^L~?$|2EKR=E?`8(hlGq(p0r46j$#;?oSblVRUXay}p_DTuZ<)dNI= zTX!gcb%&Ip{BL`L=`;~Eab`a@e5$Sp*IIzwuH@Jaw0?zGAAGonp?~(xP`x(kD?hHZ zDDrrWJ6e4TkE2<7l8K@9_tE!$$#oiF`v!?u&vJ8#sRMQ}@R~PdeYWmbe}=GLmZvCp ztvmq^2iKBSa&iEH07LavuDne3!E@tA>ScL~V%d3}+7{N}><%O+2bGtU34^ta-fz4> z>I0cfEQ4f(#Ka(O-aw463VRT+K9p^kWm>=WJ2d?%4EmDc1M%Nr8yg!N8yg!N8yg!N d8yh^_{0BZ>GF%5L=9K^d002ovPDHLkV1fdfT(1BC delta 1735 zcmV;&1~~cP4d4xsEq{4zR7D)ezq3cX+tO`oIhLa>#{6bGZ{NN> zdy%HTPcnVS&YL&i-^}kfzj*~rOiWBnOiWBnOiWBnOicO-!+!zrFy#RZaCn^MJ`6DC zMiRSnQU>3cYZvFWh5nh>VQEnxGSF zZT!Yodyw$ct5SHH1L7#}84S@QSWg=uu|A)IS&Jq`szRN#be&e51%a3w>=W7e?sP;IJozn)+ffb)|RMjff zLDB8KyGoFf;u3X9xRKMVQlh@^$A<&IPe0TwPkB!aVL=Z@e&w2_LiF~Ti8!-51w+Ot zm^Qx!o~sTF$x-mbYrY^+R+cD)hZCP*?b`dPU4y~M5P!Swhylt<%Ma4X%jx)BzKT(q zZSY)36xUhVZD?y|+BtPJ!2&$Ld2PftJAB>g2~b%OWQ5I~hDh#H156k{bu}Gn^l7AN z+7BJ8!0Gg%?y3#R=_;D*tf>1V;9-?3{T{r#_|P?sR_b}Qg3VWJR)(;V0_!$IQd@^ZMg zSfmIqtx3_HL|(tsRpHvyFDSO+ z?SENLeVY6zE?+K-Bp&g-h0G@i5>I@8>>~CS?GxuN2k_lBMf5qE zF)hX$`ZSirO23XptR$wZ#99`={kkgT-kBZKu(9xIEYGoHL?IWhKyhl{Zwih+F5L8& zm_e|i>7R&#{;o~Hog!Ldv@O?x`O9)~;(wd7+H9p!b{E|i=SQvv$B{NlaZRHsqb)A$}k>I-6G)1M$w z7GvWb-ga?({Z#a+fAPvWT>kyMIQ9mAUcaJ^=I|8O<<&tXWn+{O@x&m1f*KZ^@qb4C zk||>IaBLyru!s(-Y7+w^*5@lqC z_E*1LcM@V*7Vd${W9Rvt#gj!GpbRfFGmzj!TLy_G*>=1!BYZ9(pQWvET53A#8~zRJ z`(x4>M!JAYbwEus4;tZ`1|a8UE`JPOR$49$Cykcs_8}pO$1R=+J7#v9UF$Gc{leoB zPgHokqTaG2l#cu1hP9t_9wJ`;_Q?|r3-9GfOy=0I0Pud~Pi*AW&fLaPv0{+++=2aH zYOc{(YlY`mnjocG%?FMko82U?Vd0;B` z!6z{;cZ4!wqRjDHbsz?utAF!h-Esf=Ot?}~(bU|iT~n$pvrQtJo5>tsk8YZGOB+Ma z;ag@~uw}MCbCH`Nr&C31t3SjnJluk2Z{$5a%_NsgL28;Jj7K#`WVRu@*b9{d?H@92 zg=uUB?s_rmw@^!0K9(}{4&-NSbQ;5{X9I4K_pt&`L)g7IB^xo*%75ye3?tJZB0mMc z2sF`$C$bIt0jY){NZ0WiFy8+P4Y+@d=n=wb)u?>N#;weMZDHUi3sQL79{*|qpa#7J zL;r$*FfR%DSqxSy$L-rzEx7u83?qv>dcEHk^dH2Oo<7VfHeE?cDu%f`w7}{f@9mR8 zv!I`H^QIk%iK@1$bU-e5y*^_Z`VWDmodv!`_0zugDaJ^j-M6nZF)=YQF)=YQF)=YQ dF~R?h{{XxqD)$xzU-|$5002ovPDHLkV1lhsO>zJL diff --git a/art/exported/creatures/6103.png b/art/exported/creatures/6103.png index b382c4bb2b386e227935d5ee4ca1e78cd057805f..f45e607c69d576721a135ef2cc9d3909115cd99f 100644 GIT binary patch delta 5894 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 delta 5941 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 R9+3b5002ovPDHLkV1kx#0+j#& literal 4219 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 M#N5kW~QuL_a2a9b~> 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 diff --git a/art/exported/creatures/801.png b/art/exported/creatures/801.png new file mode 100644 index 0000000000000000000000000000000000000000..f2e63902920cd11b58b75ce17ff3b52b39cb64a9 GIT binary patch literal 777 zcmV+k1NQuhP)772fPAK0r|iZ z;6gCB8?@g7+JX1qta~t6=dWnLY1e^%%d+e>HFNYxPByweJml!<>#SS7XjJFkc!GHU zAT8G);<{NzgdYk(lNovaralF@rLLqW<$J6$t zi&#YomihGuKkrqUo2k5!TH+VOt#Fv=j2S;|pQ!$9Rtfj+Kcr?}xgRSoo5|*_4Tph4 zL011f111+0p6~4LS*hx#X=2-9Y}>|lU3Tu+?x*3NhP@;b39OLGmO8)d4|0o!7ys9? zEDy_YdDPaynWh###6S9R!_fWXp^m8IxP+|`6{S;H5G$v&veG|-+jceb?)?YtPmX}6 zKGxPOrg&1p$S(dbp63zo>*v_Xv-I@5#m+Xy*Vex z?rOf=8g1`*woD~tCKs9zLI@#*5JCtcgb+dqA%qY@2*&mWig@MXppN__00000NkvXX Hu0mjfyMTEb literal 0 HcmV?d00001 diff --git a/art/exported/creatures/801.png.import b/art/exported/creatures/801.png.import new file mode 100644 index 0000000..3721440 --- /dev/null +++ b/art/exported/creatures/801.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dkocdkoyy2udh" +path.s3tc="res://.godot/imported/801.png-b0324ef8c10934464b8be69cb9eca981.s3tc.ctex" +path.etc2="res://.godot/imported/801.png-b0324ef8c10934464b8be69cb9eca981.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://art/exported/creatures/801.png" +dest_files=["res://.godot/imported/801.png-b0324ef8c10934464b8be69cb9eca981.s3tc.ctex", "res://.godot/imported/801.png-b0324ef8c10934464b8be69cb9eca981.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/art/exported/creatures/802.png b/art/exported/creatures/802.png new file mode 100644 index 0000000000000000000000000000000000000000..f786031de9ae8da98554cacfc74bcc0ffca984ff GIT binary patch literal 2084 zcmV+<2;29GP) za6wa3!GPGPh+9MyWeGMYCRB?wZUr%d%)rbbFf*^`K9-1#L8yA#`hMrknfvbj?)UC@ z?{~lZ-3JH=2nYxW2nYxW2nYxW2nYxW2s~#T0aW8fL#0xz0>A|a2Xe1Y3gZA6@Pgn) zQ4|*xB{vJ^*UPVzHyeVyWXe&XeOfh9VYn%{F>^YVq@7gD^PI4~1CY1vlSI#JfD@qtC5#k*@ta5^jh3V^=0I#5qIwjojpT{tI7 zgBraV(bN4=Z@3FqO1BAA>zbfaFpzpJ1=;Jiu$ry7alIVX)q3dl2GrIXU^bgOeR*4G)RXN~PSgZM_FHE_R@L1%jxJn2-#kv7U4iJx({(*~=w%6qk8& zHztgUhKOOn&{n*?&>h1ju6;z3L(FetFf!BwQL|UzKY_DysI08QH zWjLFCy-mrntXceI)I79`-C^KhUud;1yzwR9UPHfr0T79-7&@HgjVH{UIS(U3JyBC_ zhF)KXrY1|L#@qA&xtOV5KQ>5B_38@|M(}kxd3({@b1Yw;IwcOrPVV5#O7{rt+4>en zy%qqiJH_u#7Z(z=f$Y5KHl35gf7|xlx=O@Dh~CG+Fe3Q*_3p4ozsfI$kN0S>>`4CE zYHb895(Bu8^4qoO;n-#p>Dp;xMcJqmjSo?o4d{V)HjKgAmER!Yodx_}i(j@H8@7bC z6J8OUhIhCAiZ7S{s}?JkkO9GXbXHUrGB!G91GuefR znU{ddJNK-Nn5pHgmMa{GLB77dr1p|~m_Ne_J%^6r%_0XzdWs2&pQNk-kkF+GaBxuk zNvAV>F<@YyjL69GvXD_j+O=n&{tBO`97XuVP>dZn3{ojc4}gvDC86fN9ve2rVO>HZ zPJNk&BgeO6@E|`(ZR810%8KQGMAoT%+_+J}=N1x)U1>$d_kC=LUJ{F`0Sjk2;g#91 z^5!LeSdRVsj}y*BKkGfc znqvWBdekypE+JQht`R$b9VSJDA@Y}t!Lm~9OWT6T$&0TyH8s85NmpXmJ+&k2n09a~ zN{X#m6#M5<#EEPPc3{<-H_exeOGP?e9S$Deiq5F6)}f!@M8v!qg^xb?3(lPX3^YZ- z+H&zBmz=_{n^RnZm|;*=r9*D+Ma+w7jvs`bJNDy2eFI8L%8-|L5w~wuVoBUA`1-w! z-AM;fkYC)@)Sbxxlia;p%8ewo=`;^myCzX0m$O^OPY7N_CLwgh47h1suy)--{uWnJ zeiy%6x)}9;{4?;NU>ap7R=Libk!$$ma`>BA2oJMTexa8aEf%+bj4py(P6p+>$>a zCHV+EJls%PdIO7=%tXZG(fH!PDdJI*mX&)ZP~GVBS?}H+Gp0k?Qj%1wWJ%^MX98{L7s+!hRmE^FgE#=w?;UV&4nK`}y z{(=7i+=7DK2l6rFSq3iw0RaI40RaI40RaI40RaI40RaJYgMR~yP}Ocv96j*> O0000J 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 M07*qoM6N<$g380-;{X5v literal 0 HcmV?d00001 diff --git a/art/exported/creatures/806.png.import b/art/exported/creatures/806.png.import new file mode 100644 index 0000000..8078cb6 --- /dev/null +++ b/art/exported/creatures/806.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c31dw2wqjat40" +path.s3tc="res://.godot/imported/806.png-640099ab90a2d2daf3c4e7229634452c.s3tc.ctex" +path.etc2="res://.godot/imported/806.png-640099ab90a2d2daf3c4e7229634452c.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://art/exported/creatures/806.png" +dest_files=["res://.godot/imported/806.png-640099ab90a2d2daf3c4e7229634452c.s3tc.ctex", "res://.godot/imported/806.png-640099ab90a2d2daf3c4e7229634452c.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/art/exported/creatures/808.png b/art/exported/creatures/808.png new file mode 100644 index 0000000000000000000000000000000000000000..e218b8e3d96683f3ec95182fcdfc135d977f1215 GIT binary patch literal 1175 zcmV;I1Zew-P)7t7=uLRkst^P1qne6LVP9E#PTXN1}SZ&Ev0+sz1Gb3u4!$HrAjpB_enN)J2N}G z^Z3mS2qAWal;gu^zS*E-_ia9CwnsiFxW0{GKyQr}>jCZk5(hLz#xO4F}SBofhw(*Xt$ z_jkc22N&fpK2W^Ni1R$k4E_2zD6<;cZWCq zk%nPlcucH7HinsjZm7r@p3C(o$Q>7S>rDH(v4LnbdH`5B&@dOK;CQY8wFT>GI z9Dh#F{e|zpVDhYTrWIu|GGOv|6c!cY^LcOjxquPJZ?{mjRB{DSo0=g5 z@(hrsrb$9I{KEOO6cq=lJ#d8OE0zuV^0_mY@&0?;nNv1+nV~X0LksoNJIWXlP-B$h zB&q%I9TLd|UQMHTQi&w#gp=LV}s>zANuvE?h4x*gNn(#F0|Yk7Thh&Nt)n~Fsb zxp7%{x}Hrd%iZ$3zq{oAc6N5LZ|@-MFOu>gug*+4yvyPEfPpnU%{32J_gz?=Xdh1>}#Xr8tux%(Ekf!!xxBD^!ekzw# zxQ$qRchJqO>&ze#jpFmG#TPcL3sGJ3k~_M#9abwKKFdn&4BZt5^KK_USkQCdhvRU) z;Uo#WttaW1rr$XBO+7mgo+9A4SiAlOsyEd%sjB|e@L|zzkf#<7y|{QHcg-qe+VrXJ zs$En4Ce<}B_A9*oqfhv;?kDo|$MNLyrEUl8_;@cqugU5)t0*lkW#NKF`2BvWs@3-1 zt^LdoZdi4NBb++jK;GDF_8j?E^#y@Ui~HuzWx@Q1nK84B2OpTPwnZPH4ov?D?Jx4( z9V^4~QdvHm`S+LMBpvEHOqwoV;nJnc9RKnpv1p9aX;a+ke(2y)4%Y5>XMxh(+{}{7 z#|VrFV0U$qOm=UArs=^jJjCNM$LsZ7wQYNsuIp>Ie()~i#}|-HCaDUAIDYJF6>~e( zGQ+=2OPvYS3Zqu632FlXMx^fbULBg1ioH void: assert(inactive_count == INACTIVE_CATALOG_COUNT) assert(fishing_count == FISHING_SPECIES_COUNT) assert(final_art_count == FINAL_CREATURE_TEXTURE_PATHS.size()) - assert(placeholder_fishing_count == 294) + assert(placeholder_fishing_count == 283) var chum: FishDataType = Catalog.get_fish_by_id(&"salmon_chum") assert(chum != null) assert(chum.get_season_text() == "fall") diff --git a/tests/logbook_validation.gd b/tests/logbook_validation.gd index 74736fa..daa728e 100644 --- a/tests/logbook_validation.gd +++ b/tests/logbook_validation.gd @@ -162,8 +162,11 @@ func _validate_page() -> void: var shared_material: Material var silhouette_count: int = 0 - var smallest_silhouette_area: float = INF - var largest_silhouette_area: float = 0.0 + var target_silhouette_area: float = ( + LogbookPage.CATALOG_PORTRAIT_SIZE.x + * LogbookPage.CATALOG_PORTRAIT_SIZE.y + * LogbookPortraitType.UNIFORM_FOOTPRINT_AREA_RATIO + ) for category: LogbookCatalog.Category in [ LogbookCatalog.Category.FRESH_WATER, LogbookCatalog.Category.SALT_WATER, @@ -223,13 +226,17 @@ func _validate_page() -> void: * portrait.custom_minimum_size.y ) assert(silhouette_area > 0.0) - smallest_silhouette_area = minf( - smallest_silhouette_area, - silhouette_area, - ) - largest_silhouette_area = maxf( - largest_silhouette_area, - silhouette_area, + assert(silhouette_area <= target_silhouette_area * 1.05) + assert( + silhouette_area >= target_silhouette_area * 0.9 + or is_equal_approx( + portrait.custom_minimum_size.x, + LogbookPage.CATALOG_PORTRAIT_SIZE.x, + ) + or is_equal_approx( + portrait.custom_minimum_size.y, + LogbookPage.CATALOG_PORTRAIT_SIZE.y, + ) ) silhouette_count += 1 for candidate: FishDataType in CatalogResource.candidates: @@ -245,9 +252,6 @@ func _validate_page() -> void: ) ) assert(silhouette_count == 310) - assert( - largest_silhouette_area / smallest_silhouette_area <= 1.12 - ) page.call("_select_category", LogbookCatalog.Category.SHELLFISH) await create_timer(0.25).timeout diff --git a/tools/art/export_creature_art.py b/tools/art/export_creature_art.py index fb44e52..758be87 100644 --- a/tools/art/export_creature_art.py +++ b/tools/art/export_creature_art.py @@ -105,6 +105,7 @@ def catalog_lookup(records: list[dict[str, str]]) -> dict[str, dict[str, str]]: lookup: dict[str, dict[str, str]] = {} for record in records: keys = { + normalize_name(record["catalog_number"]), normalize_name(record["id"]), normalize_name(record["display_name"]), } @@ -173,8 +174,7 @@ def main() -> int: if not source_paths: raise ValueError(f"no PNG files found under {arguments.source}") - resolved: list[tuple[Path, dict[str, str]]] = [] - output_names: set[str] = set() + resolved_by_output: dict[str, tuple[Path, dict[str, str]]] = {} for source_path in source_paths: record = resolve_record(source_path, lookup) source_key = normalize_name(source_path.stem) @@ -183,10 +183,36 @@ def main() -> int: print(f"SKIP {source_path.name} -> {record['id']}") continue output_name = f"{record['catalog_number']}.png" - if output_name in output_names: - raise ValueError(f"duplicate output filename {output_name}") - output_names.add(output_name) - resolved.append((source_path, record)) + previous = resolved_by_output.get(output_name) + if previous is not None: + previous_path, _previous_record = previous + catalog_key = normalize_name(record["catalog_number"]) + previous_is_numbered = ( + normalize_name(previous_path.stem) == catalog_key + ) + current_is_numbered = source_key == catalog_key + if current_is_numbered and not previous_is_numbered: + print( + "SUPERSEDE " + f"{previous_path.name} with numbered source " + f"{source_path.name} -> {record['id']}" + ) + resolved_by_output[output_name] = (source_path, record) + continue + if previous_is_numbered and not current_is_numbered: + print( + "SKIP " + f"{source_path.name}; numbered source " + f"{previous_path.name} takes precedence -> {record['id']}" + ) + continue + raise ValueError( + f"duplicate sources for output filename {output_name}: " + f"{previous_path.name} and {source_path.name}" + ) + resolved_by_output[output_name] = (source_path, record) + + resolved = list(resolved_by_output.values()) if not arguments.dry_run: arguments.output.mkdir(parents=True, exist_ok=True) From 45c903bd24d429134b4cf8d75489f7f8a6075951 Mon Sep 17 00:00:00 2001 From: Voyager Date: Mon, 24 Aug 2026 20:21:15 -0400 Subject: [PATCH 57/90] Fix portable data folder reselection --- network/portable_data_migration.gd | 7 ++++++- tests/progression_archive_validation.gd | 26 +++++++++++++++++++++++++ ui/settings_panel.gd | 8 +++++++- 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/network/portable_data_migration.gd b/network/portable_data_migration.gd index 430fba8..17ded9f 100644 --- a/network/portable_data_migration.gd +++ b/network/portable_data_migration.gd @@ -100,7 +100,11 @@ static func migrate_active_to( ) -> Dictionary: var normalized: String = destination.simplify_path().trim_suffix("/") if normalized == data_root.root_path: - return {"ok": true, "message": "This data folder is already active."} + return { + "ok": true, + "changed": false, + "message": "This data folder is already active.", + } if DirAccess.dir_exists_absolute(normalized) and not _directory_empty(normalized): if FileAccess.file_exists(normalized.path_join(PlayerDataRoot.MANIFEST_FILENAME)): return { @@ -163,6 +167,7 @@ static func migrate_active_to( return {"ok": false, "message": "Migration copied data but did not change the pointer."} return { "ok": true, + "changed": true, "message": "Data folder changed. Previous data was preserved.", "previous_root": old_root, } diff --git a/tests/progression_archive_validation.gd b/tests/progression_archive_validation.gd index 3fd9eff..7f98066 100644 --- a/tests/progression_archive_validation.gd +++ b/tests/progression_archive_validation.gd @@ -134,6 +134,22 @@ func _run() -> void: for settings_panel: SettingsPanel in settings_panels: assert(settings_panel.get_node_or_null("%ExportProgression") == null) assert(settings_panel.get_node_or_null("%ImportProgression") == null) + var settings_panel: SettingsPanel = settings_panels.front() as SettingsPanel + var unchanged_root: String = data_root.root_path + settings_panel.call("_choose_data_folder") + var data_folder_dialog := ( + settings_panel.get("_data_folder_dialog") as FileDialog + ) + assert(data_folder_dialog != null) + assert(data_folder_dialog.current_dir == unchanged_root) + data_folder_dialog.hide() + settings_panel.call("_change_data_folder", unchanged_root + "/") + await process_frame + assert(data_root.root_path == unchanged_root) + assert( + (settings_panel.get_node("%SettingsFeedback") as Label).text + == "this data folder is already active." + ) var save_slots_page := main.find_child( "SaveSlotsPage", true, false ) as SaveSlotsPage @@ -141,6 +157,15 @@ func _run() -> void: assert(save_slots_page.get_node("%ExportSlotButton") is Button) assert(save_slots_page.get_node("%ImportSlotButton") is Button) + var unchanged_migration: Dictionary = ( + PortableDataMigration.migrate_active_to( + data_root, unchanged_root + "/" + ) + ) + assert(bool(unchanged_migration.get("ok", false))) + assert(not bool(unchanged_migration.get("changed", true))) + assert(data_root.root_path == unchanged_root) + var migrated_root: String = data_root.root_path.get_base_dir().path_join( "progression-migrated-data" ) @@ -148,6 +173,7 @@ func _run() -> void: data_root, migrated_root ) assert(bool(data_migration.get("ok", false))) + assert(bool(data_migration.get("changed", false))) var migrated_save: String = migrated_root.path_join( "player/player_save.nfsave" ) diff --git a/ui/settings_panel.gd b/ui/settings_panel.gd index 51d0c96..049b9c9 100644 --- a/ui/settings_panel.gd +++ b/ui/settings_panel.gd @@ -679,7 +679,7 @@ func _choose_data_folder() -> void: _data_folder_dialog.dir_selected.connect(_change_data_folder) _interface_fonts.apply_utility_theme(_data_folder_dialog) add_child(_data_folder_dialog) - _data_folder_dialog.current_dir = _data_root.root_path.get_base_dir() + _data_folder_dialog.current_dir = _data_root.root_path _interface_fonts.popup_file_dialog(_data_folder_dialog) @@ -691,6 +691,12 @@ func _change_data_folder(path: String) -> void: _show_existing_data_folder_choice(path) return if bool(result.get("ok", false)): + if not bool(result.get("changed", false)): + _feedback.text = str( + result.get("message", "this data folder is already active.") + ).to_lower() + _refresh_data_page() + return _feedback.text = "data folder changed. NETfishing will close safely." _refresh_data_page() get_tree().call_deferred("quit") From 8456093f8c44add80680d6455e8f433e93fb4508 Mon Sep 17 00:00:00 2001 From: Voyager Date: Mon, 24 Aug 2026 20:21:25 -0400 Subject: [PATCH 58/90] Keep rain above generated tree canopies --- tests/world_weather_validation.gd | 17 +++++++++++++++++ world/world_time_visual_controller.gd | 27 +++++++++++++++++++-------- 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/tests/world_weather_validation.gd b/tests/world_weather_validation.gd index 9a53eff..1f46adf 100644 --- a/tests/world_weather_validation.gd +++ b/tests/world_weather_validation.gd @@ -524,6 +524,15 @@ func _validate_weather_presentation() -> void: assert(rain.emitting) assert(rain.amount_ratio > 0.99) assert(rain.amount == WorldTimeVisualControllerType.RAIN_PARTICLE_AMOUNT) + assert( + WorldTimeVisualControllerType.RAIN_EMITTER_OFFSET.y + >= WorldTimeVisualControllerType.RAIN_SUPPORTED_CANOPY_HEIGHT + + WorldTimeVisualControllerType.RAIN_CANOPY_CLEARANCE + ) + assert(is_equal_approx( + rain.lifetime, + WorldTimeVisualControllerType.RAIN_LIFETIME_SECONDS, + )) assert(rain.visibility_aabb == ( WorldTimeVisualControllerType.RAIN_VISIBILITY_AABB )) @@ -548,6 +557,9 @@ func _validate_weather_presentation() -> void: rain_material.initial_velocity_max, WorldTimeVisualControllerType.RAIN_VELOCITY_MAX, )) + assert(rain_material.gravity.is_equal_approx( + WorldTimeVisualControllerType.RAIN_GRAVITY + )) var rain_mesh := rain.draw_pass_1 as BoxMesh assert(rain_mesh != null) assert(rain_mesh.size.is_equal_approx( @@ -569,6 +581,11 @@ func _validate_weather_presentation() -> void: assert(rain_collision.size.is_equal_approx( WorldTimeVisualControllerType.RAIN_COLLISION_SIZE )) + assert( + rain_collision.size.y * 0.5 + > WorldTimeVisualControllerType.RAIN_EMITTER_OFFSET.y + + WorldTimeVisualControllerType.RAIN_EMISSION_EXTENTS.y + ) assert( rain_collision.heightfield_mask == PrecipitationOcclusionType.RENDER_LAYER_MASK diff --git a/world/world_time_visual_controller.gd b/world/world_time_visual_controller.gd index 5328c54..ec67e85 100644 --- a/world/world_time_visual_controller.gd +++ b/world/world_time_visual_controller.gd @@ -5,20 +5,31 @@ const UPDATE_INTERVAL_SECONDS: float = 0.1 const LIGHT_UPDATE_INTERVAL_SECONDS: float = 0.25 const SUN_YAW_DEGREES: float = -32.0 const WEATHER_TRANSITION_SECONDS: float = 10.0 -const RAIN_EMITTER_OFFSET := Vector3(0.0, 7.0, 0.0) +# Large generated trees reach nearly 22 m at their maximum authored scale. +# Keep the rain source above those canopies so drops cannot be born underneath +# the height-field surface that is meant to hide them. +const RAIN_SUPPORTED_CANOPY_HEIGHT: float = 22.0 +const RAIN_CANOPY_CLEARANCE: float = 4.0 +const RAIN_EMITTER_OFFSET := Vector3( + 0.0, + RAIN_SUPPORTED_CANOPY_HEIGHT + RAIN_CANOPY_CLEARANCE, + 0.0, +) const RAIN_EMISSION_EXTENTS := Vector3(13.0, 1.0, 13.0) const RAIN_VISIBILITY_AABB := AABB( - Vector3(-13.5, -9.0, -13.5), - Vector3(27.0, 12.0, 27.0), + Vector3(-13.5, -36.0, -13.5), + Vector3(27.0, 40.0, 27.0), ) const RAIN_PARTICLE_AMOUNT: int = 2240 const LIGHT_RAIN_PARTICLE_AMOUNT: int = 48 const LIGHT_RAIN_FIXED_FPS: int = 8 -const RAIN_VELOCITY_MIN: float = 16.0 -const RAIN_VELOCITY_MAX: float = 20.0 +const RAIN_LIFETIME_SECONDS: float = 1.4 +const RAIN_VELOCITY_MIN: float = 20.0 +const RAIN_VELOCITY_MAX: float = 24.0 +const RAIN_GRAVITY := Vector3(0.0, -2.0, 0.0) const RAIN_DROP_SIZE := Vector3(0.014, 0.34, 0.014) const RAIN_COLLISION_BASE_SIZE: float = 0.08 -const RAIN_COLLISION_SIZE := Vector3(28.0, 24.0, 28.0) +const RAIN_COLLISION_SIZE := Vector3(28.0, 64.0, 28.0) const FOG_DAYLIGHT_SCENE_BRIGHTNESS: float = 0.42 const FOG_DAYLIGHT_FOG_LIGHT_BRIGHTNESS: float = 0.42 const FOG_DAYLIGHT_WATER_BRIGHTNESS: float = 0.42 @@ -212,7 +223,7 @@ func _prepare_rain() -> void: else RAIN_PARTICLE_AMOUNT ) _rain.amount_ratio = 0.0 - _rain.lifetime = 1.25 + _rain.lifetime = RAIN_LIFETIME_SECONDS _rain.fixed_fps = ( LIGHT_RAIN_FIXED_FPS if _light_performance_profile else 30 ) @@ -228,7 +239,7 @@ func _prepare_rain() -> void: process_material.spread = 5.0 process_material.initial_velocity_min = RAIN_VELOCITY_MIN process_material.initial_velocity_max = RAIN_VELOCITY_MAX - process_material.gravity = Vector3(0.0, -2.0, 0.0) + process_material.gravity = RAIN_GRAVITY process_material.collision_mode = ( ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT ) From e6f46dcad9b574859027902ad524de30af88646f Mon Sep 17 00:00:00 2001 From: Voyager Date: Mon, 24 Aug 2026 20:21:49 -0400 Subject: [PATCH 59/90] Improve generated river terrain --- docs/DEVELOPMENT.md | 8 +- scripts/normalize_texture_imports.gd | 12 ++ tests/generated_world_runtime_validation.gd | 87 ++++++++ tests/terrain_chunk_generator_validation.gd | 52 ++++- tests/texture_sampling_validation.gd | 14 +- .../assets/chunk_0000_grass_lite.png.import | 2 +- .../chunks/assets/chunk_0001_sand.png.import | 2 +- .../chunks/assets/chunk_0031_dirt.png.import | 2 +- world/generation/chunks/assets/chunk_0038.glb | Bin 0 -> 36704 bytes .../chunks/assets/chunk_0038.glb.import | 45 ++++ .../chunks/assets/chunk_0038_cliff_wall.png | Bin 0 -> 9025 bytes .../assets/chunk_0038_cliff_wall.png.import | 45 ++++ .../chunks/assets/chunk_0038_dirt.png | Bin 0 -> 5589 bytes .../chunks/assets/chunk_0038_dirt.png.import | 45 ++++ .../chunks/assets/chunk_0038_grass_lite.png | Bin 0 -> 6317 bytes .../assets/chunk_0038_grass_lite.png.import | 45 ++++ .../chunks/definitions/chunk_0038.tres | 23 +++ .../chunks/terrain_chunk_catalog.tres | 5 +- world/generation/generated_world_region.gd | 195 +++++++++++++++++- world/generation/terrain_chunk_generator.gd | 20 ++ .../terrain_surface_projection.gdshader | 2 +- 21 files changed, 586 insertions(+), 18 deletions(-) create mode 100644 world/generation/chunks/assets/chunk_0038.glb create mode 100644 world/generation/chunks/assets/chunk_0038.glb.import create mode 100644 world/generation/chunks/assets/chunk_0038_cliff_wall.png create mode 100644 world/generation/chunks/assets/chunk_0038_cliff_wall.png.import create mode 100644 world/generation/chunks/assets/chunk_0038_dirt.png create mode 100644 world/generation/chunks/assets/chunk_0038_dirt.png.import create mode 100644 world/generation/chunks/assets/chunk_0038_grass_lite.png create mode 100644 world/generation/chunks/assets/chunk_0038_grass_lite.png.import create mode 100644 world/generation/chunks/definitions/chunk_0038.tres diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index 9fbd5b9..09db779 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -261,9 +261,11 @@ copies of the entire customization catalog. ### Texture sampling -NETfishing artwork always uses nearest-neighbor sampling. Do not enable linear, -bilinear, trilinear, or anisotropic texture filtering, and do not generate -mipmaps. Shader samplers must declare `filter_nearest`. The +NETfishing artwork uses nearest-neighbor sampling. Do not enable linear, +bilinear, trilinear, or anisotropic texture filtering. Shader samplers must +declare `filter_nearest`. The three canonical repeating terrain textures are +the sole mipmap exception: their projected shader uses nearest-filtered +mipmaps to prevent distance aliasing without smoothing nearby pixels. The `TextureSamplingPolicy` autoload applies nearest sampling to 2D canvas items, Sprite3D presentations, imported 3D materials, and dynamically constructed mesh materials at runtime. diff --git a/scripts/normalize_texture_imports.gd b/scripts/normalize_texture_imports.gd index 5b78ec1..e7b2406 100644 --- a/scripts/normalize_texture_imports.gd +++ b/scripts/normalize_texture_imports.gd @@ -31,6 +31,11 @@ const FACIAL_FEATURE_IMPORT_PATH: String = ( "art/exported/characters/faces/" ) const FACIAL_FEATURE_SIZE_LIMIT: int = 512 +const PROJECTED_TERRAIN_TEXTURE_IMPORTS: Array[String] = [ + "res://world/generation/chunks/assets/chunk_0000_grass_lite.png.import", + "res://world/generation/chunks/assets/chunk_0001_sand.png.import", + "res://world/generation/chunks/assets/chunk_0031_dirt.png.import", +] var apply_changes: bool = false var verbose: bool = false @@ -153,6 +158,8 @@ func _handle_import_file(import_path: String) -> void: var desired: Variant = section_data[section_key] if section_key == "process/size_limit": desired = _size_limit_for(import_path) + elif section_key == "mipmaps/generate": + desired = _generates_mipmaps(import_path) var existing: Variant = null if cfg.has_section(section_name) and cfg.has_section_key(section_name, section_key): existing = cfg.get_value(section_name, section_key) @@ -187,6 +194,11 @@ func _size_limit_for(import_path: String) -> int: return int(DEFAULT_PROFILE["params"]["process/size_limit"]) +func _generates_mipmaps(import_path: String) -> bool: + var normalized_path := import_path.replace("\\", "/") + return normalized_path in PROJECTED_TERRAIN_TEXTURE_IMPORTS + + func print_summary() -> void: if apply_changes: _print( diff --git a/tests/generated_world_runtime_validation.gd b/tests/generated_world_runtime_validation.gd index ef933bf..0143322 100644 --- a/tests/generated_world_runtime_validation.gd +++ b/tests/generated_world_runtime_validation.gd @@ -247,6 +247,7 @@ func _validate_generated_region( assert(_placement_count(placements, "chunk_0034") == 1) assert(_placement_count(placements, "chunk_0035") == 1) assert(_placement_count(placements, "chunk_0036") == 1) + assert(_placement_count(placements, "chunk_0038") == 2) assert( _placement_count(placements, "chunk_0014") == (2 if has_secondary_elevation else 0) @@ -285,10 +286,31 @@ func _validate_generated_region( var river_edge_count := ( _placement_count(placements, "chunk_0024") + _placement_count(placements, "chunk_0025") + + _placement_count(placements, "chunk_0038") ) assert(river_coordinate_count >= 12) assert(generator._river_feature_placements.size() == river_coordinate_count) assert(river_edge_count == river_coordinate_count - 8) + var stone_bridge_specs: Array[Dictionary] = [] + for spec: Dictionary in generator._river_feature_placements: + if spec.get("id", &"") == &"chunk_0038": + stone_bridge_specs.append(spec) + assert(stone_bridge_specs.size() == 2) + var first_bridge_coordinate := stone_bridge_specs[0].get( + "coordinate", + Vector2i(-1, -1), + ) as Vector2i + var second_bridge_coordinate := stone_bridge_specs[1].get( + "coordinate", + Vector2i(-1, -1), + ) as Vector2i + var bridge_delta := second_bridge_coordinate - first_bridge_coordinate + assert(absi(bridge_delta.x) + absi(bridge_delta.y) == 1) + assert(posmod( + int(stone_bridge_specs[1].get("turns", -1)) + - int(stone_bridge_specs[0].get("turns", -1)), + 4, + ) == 2) var river_source_coordinates := generator._river_source_coordinates( generator._river_feature_origin, generator._river_feature_footprint_size, @@ -446,6 +468,20 @@ func _validate_generated_region( assert(fresh.surface_size.x <= 10.0 and fresh.surface_size.y <= 10.0) assert(not fresh.visual_surface_enabled) assert(not (fresh.get_node("VisualWater") as MeshInstance3D).visible) + var generated_bed := fresh.get_node_or_null( + "GeneratedBed", + ) as MeshInstance3D + assert(generated_bed != null and generated_bed.mesh != null) + assert( + is_equal_approx( + generated_bed.global_position.y, + GeneratedWorldRegion.GENERATED_FRESH_WATER_BED_HEIGHT, + ) + ) + assert( + generated_bed.material_override != null + and generated_bed.material_override.resource_name == "dirt" + ) var fresh_recovery := ( fresh.get_node("RecoveryRegion") as PlayerWaterTrigger ) @@ -486,6 +522,16 @@ func _validate_generated_region( ) var decorations := region.get_node("Decorations") as Node3D + var grass_prop_surface_triangles := region.get_spawn_surface_triangles( + [&"grass_lite"], + -INF, + 0.35, + ) + var sand_prop_surface_triangles := region.get_spawn_surface_triangles( + [&"sand"], + -INF, + 0.35, + ) var anchors := region.get_node( "GatherableAnchors/ReachableTreeTrunks" ) as GatherableAnchorSet3D @@ -540,6 +586,8 @@ func _validate_generated_region( region, child as Node3D, definition, + grass_prop_surface_triangles, + sand_prop_surface_triangles, ) if prop_id == &"prop_palm": var cluster_id := int( @@ -1063,6 +1111,8 @@ func _validate_decoration_transform( region: GeneratedWorldRegion, prop: Node3D, definition: TerrainPropDefinition, + grass_surface_triangles: Array[PackedVector3Array], + sand_surface_triangles: Array[PackedVector3Array], ) -> void: assert(prop != null) assert(prop.scale.is_equal_approx(Vector3.ONE)) @@ -1142,6 +1192,43 @@ func _validate_decoration_transform( ], ], ) + var required_surface_triangles: Array[PackedVector3Array] = ( + sand_surface_triangles + if definition.procedural_group == &"sand_tree" + else grass_surface_triangles + ) + var required_surface_height := _triangle_surface_height_at( + prop.global_position, + required_surface_triangles, + ) + assert( + required_surface_height > -INF + and absf(required_surface_height - prop.global_position.y) <= 0.01, + "%s (%s) is not rooted on its required terrain material at %s." + % [prop.name, definition.stable_id, prop.global_position], + ) + + +func _triangle_surface_height_at( + position: Vector3, + triangles: Array[PackedVector3Array], +) -> float: + var highest := -INF + var segment_start := position + Vector3.UP * 100.0 + var segment_end := position + Vector3.DOWN * 100.0 + for triangle: PackedVector3Array in triangles: + if triangle.size() != 3: + continue + var hit: Variant = Geometry3D.segment_intersects_triangle( + segment_start, + segment_end, + triangle[0], + triangle[1], + triangle[2], + ) + if hit is Vector3: + highest = maxf(highest, (hit as Vector3).y) + return highest func _validate_tree_gatherable_anchors( diff --git a/tests/terrain_chunk_generator_validation.gd b/tests/terrain_chunk_generator_validation.gd index b8d24cf..a46d1d7 100644 --- a/tests/terrain_chunk_generator_validation.gd +++ b/tests/terrain_chunk_generator_validation.gd @@ -42,6 +42,7 @@ const EXPECTED_IDS: Array[String] = [ "chunk_0035", "chunk_0036", "chunk_0037", + "chunk_0038", "chunk_9999", "chunk_9998", "chunk_9997", @@ -98,6 +99,7 @@ const EXPECTED_VARIANT_COUNTS: Dictionary[StringName, int] = { &"chunk_0035": 4, &"chunk_0036": 4, &"chunk_0037": 4, + &"chunk_0038": 4, &"chunk_9999": 4, &"chunk_9998": 4, &"chunk_9997": 4, @@ -163,6 +165,7 @@ func _validate_catalog() -> void: var lake_narrow_to_regular := CATALOG.definition_for_id(&"chunk_0023") var river_edge := CATALOG.definition_for_id(&"chunk_0024") var river_edge_variant := CATALOG.definition_for_id(&"chunk_0025") + var river_stone_bridge := CATALOG.definition_for_id(&"chunk_0038") var river_source_right := CATALOG.definition_for_id(&"chunk_0029") var river_source_left := CATALOG.definition_for_id(&"chunk_0030") var river_outlet_right := CATALOG.definition_for_id(&"chunk_0031") @@ -208,6 +211,7 @@ func _validate_catalog() -> void: and lake_narrow_to_regular != null and river_edge != null and river_edge_variant != null + and river_stone_bridge != null and river_source_right != null and river_source_left != null and river_outlet_right != null @@ -255,6 +259,7 @@ func _validate_catalog() -> void: and lake_narrow_to_regular != null and river_edge != null and river_edge_variant != null + and river_stone_bridge != null and river_source_right != null and river_source_left != null and river_outlet_right != null @@ -509,6 +514,8 @@ func _validate_catalog() -> void: ( not river_edge.participates_in_base_solver and not river_edge_variant.participates_in_base_solver + and not river_stone_bridge.participates_in_base_solver + and river_stone_bridge.maximum_placements == 2 and not river_source_right.participates_in_base_solver and not river_source_left.participates_in_base_solver and not river_outlet_right.participates_in_base_solver @@ -522,6 +529,8 @@ func _validate_catalog() -> void: and river_edge.water_outlet_edges == 14 and river_edge_variant.water_inlet_edges == 14 and river_edge_variant.water_outlet_edges == 14 + and river_stone_bridge.water_inlet_edges == 14 + and river_stone_bridge.water_outlet_edges == 14 and river_source_right.water_inlet_edges == 6 and river_source_right.water_outlet_edges == 6 and river_source_left.water_inlet_edges == 3 @@ -544,6 +553,7 @@ func _validate_catalog() -> void: and river_cap.water_outlet_edges == 6 and river_edge.water_surface_polygon.size() == 13 and river_edge_variant.water_surface_polygon.size() == 13 + and river_stone_bridge.water_surface_polygon.size() == 13 and river_source_right.water_surface_polygon.size() == 13 and river_source_left.water_surface_polygon.size() == 13 and river_outlet_right.water_surface_polygon.size() == 19 @@ -554,6 +564,8 @@ func _validate_catalog() -> void: and river_cap.primary_mesh_name == &"chunk_0020" and "river" in river_edge.tags and "river" in river_edge_variant.tags + and "river_bridge" in river_stone_bridge.tags + and "stepping_stones" in river_stone_bridge.tags and "river_source_right" in river_source_right.tags and "river_source_left" in river_source_left.tags and "river_outlet_right" in river_outlet_right.tags @@ -1461,6 +1473,10 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: var river_edge_variant_bottom := _find_variant(generator, &"chunk_0025", 2) var river_edge_vertical_left := _find_variant(generator, &"chunk_0024", 1) var river_edge_vertical_right := _find_variant(generator, &"chunk_0025", 3) + var river_stones_top := _find_variant(generator, &"chunk_0038", 0) + var river_stones_bottom := _find_variant(generator, &"chunk_0038", 2) + var river_stones_left := _find_variant(generator, &"chunk_0038", 1) + var river_stones_right := _find_variant(generator, &"chunk_0038", 3) var river_source_right := _find_variant(generator, &"chunk_0029", 0) var river_source_left := _find_variant(generator, &"chunk_0030", 0) var river_outlet_right := _find_variant(generator, &"chunk_0031", 0) @@ -1500,6 +1516,10 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: and river_edge_variant_bottom != null and river_edge_vertical_left != null and river_edge_vertical_right != null + and river_stones_top != null + and river_stones_bottom != null + and river_stones_left != null + and river_stones_right != null and river_source_right != null and river_source_left != null and river_outlet_right != null @@ -1525,6 +1545,10 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: and river_edge_variant_bottom != null and river_edge_vertical_left != null and river_edge_vertical_right != null + and river_stones_top != null + and river_stones_bottom != null + and river_stones_left != null + and river_stones_right != null and river_source_right != null and river_source_left != null and river_outlet_right != null @@ -1535,6 +1559,30 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: and river_bend_d != null and beach_east != null ): + _check( + generator._edges_are_compatible( + river_edge_top, + TerrainChunkTopology.Edge.EAST, + river_stones_top, + TerrainChunkTopology.Edge.WEST, + ) + and generator._edges_are_compatible( + river_stones_top, + TerrainChunkTopology.Edge.SOUTH, + river_stones_bottom, + TerrainChunkTopology.Edge.NORTH, + ) + and generator._edges_are_compatible( + river_stones_left, + TerrainChunkTopology.Edge.EAST, + river_stones_right, + TerrainChunkTopology.Edge.WEST, + ), + ( + "The stepping-stone banks must replace one paired straight river " + + "station in either orientation." + ), + ) _check( generator._edges_are_compatible( river_source_right, @@ -1750,8 +1798,8 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: func _validate_generation_summary(generator: TerrainChunkGenerator) -> void: var summary := generator._build_summary() _check( - int(summary.get("variant_count", 0)) == 170, - "The current catalog must expose all 170 authored rotations.", + int(summary.get("variant_count", 0)) == 174, + "The current catalog must expose all 174 authored rotations.", ) _check( int(summary.get("solver_variant_count", 0)) diff --git a/tests/texture_sampling_validation.gd b/tests/texture_sampling_validation.gd index deeabce..dcccc38 100644 --- a/tests/texture_sampling_validation.gd +++ b/tests/texture_sampling_validation.gd @@ -1,6 +1,11 @@ extends SceneTree const POLICY := preload("res://main/texture_sampling_policy.gd") +const PROJECTED_TERRAIN_TEXTURE_IMPORTS: Array[String] = [ + "res://world/generation/chunks/assets/chunk_0000_grass_lite.png.import", + "res://world/generation/chunks/assets/chunk_0001_sand.png.import", + "res://world/generation/chunks/assets/chunk_0031_dirt.png.import", +] var failures: Array[String] = [] @@ -83,9 +88,14 @@ func _validate_repository_files(path: String) -> void: func _validate_import_file(path: String) -> void: var source := FileAccess.get_file_as_string(path) + var expects_mipmaps := path in PROJECTED_TERRAIN_TEXTURE_IMPORTS _check( - "mipmaps/generate=true" not in source, - "Texture import generates mipmaps: %s" % path, + ("mipmaps/generate=true" in source) == expects_mipmaps, + ( + "Projected terrain mipmap policy mismatch: %s" + if expects_mipmaps + else "Texture import generates unapproved mipmaps: %s" + ) % path, ) diff --git a/world/generation/chunks/assets/chunk_0000_grass_lite.png.import b/world/generation/chunks/assets/chunk_0000_grass_lite.png.import index ff2855e..bff65f3 100644 --- a/world/generation/chunks/assets/chunk_0000_grass_lite.png.import +++ b/world/generation/chunks/assets/chunk_0000_grass_lite.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=false +mipmaps/generate=true mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0001_sand.png.import b/world/generation/chunks/assets/chunk_0001_sand.png.import index 3e91993..290b8f9 100644 --- a/world/generation/chunks/assets/chunk_0001_sand.png.import +++ b/world/generation/chunks/assets/chunk_0001_sand.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=false +mipmaps/generate=true mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0031_dirt.png.import b/world/generation/chunks/assets/chunk_0031_dirt.png.import index 3d13618..8e60684 100644 --- a/world/generation/chunks/assets/chunk_0031_dirt.png.import +++ b/world/generation/chunks/assets/chunk_0031_dirt.png.import @@ -28,7 +28,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=false +mipmaps/generate=true mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/world/generation/chunks/assets/chunk_0038.glb b/world/generation/chunks/assets/chunk_0038.glb new file mode 100644 index 0000000000000000000000000000000000000000..5fa83e3db2b6354ee4c5beaadafbb12a72eb474f GIT binary patch literal 36704 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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0038_dirt.png.import b/world/generation/chunks/assets/chunk_0038_dirt.png.import new file mode 100644 index 0000000..3a73467 --- /dev/null +++ b/world/generation/chunks/assets/chunk_0038_dirt.png.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cvffkp5rc3xnq" +path.s3tc="res://.godot/imported/chunk_0038_dirt.png-523fbe5835e3869864352e6e698e49e3.s3tc.ctex" +path.etc2="res://.godot/imported/chunk_0038_dirt.png-523fbe5835e3869864352e6e698e49e3.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "07d90b3c46a4c3d0c172bed143dc9436" +} + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0038_dirt.png" +dest_files=["res://.godot/imported/chunk_0038_dirt.png-523fbe5835e3869864352e6e698e49e3.s3tc.ctex", "res://.godot/imported/chunk_0038_dirt.png-523fbe5835e3869864352e6e698e49e3.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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=0 diff --git a/world/generation/chunks/assets/chunk_0038_grass_lite.png b/world/generation/chunks/assets/chunk_0038_grass_lite.png new file mode 100644 index 0000000000000000000000000000000000000000..52c7ccb8088ddfae88f9b861a807f1de2d38f855 GIT binary patch literal 6317 zcmV;e7*gknP)z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;(K){{a7>y{D4^000SaNLh0L04^f{04^f|c%?sf00007 zbV*G`2kHkM5+@%cHwl;k02lE|L_t(|+TC4ymZQ9ny^;+{RnIDB8?%ks|0;f6m4GeH zAGQfec-UZ)^l;91zV5C^0A1^OCDH%R^C0GxjrZKv=iJhw6+1SkaoC{+T1RWx1RFH=?sPk(j- zhie74TLyvME|r_gF+yM;PInD~-wU6>hQjG58a_7x12k=BzJ3|MU+W+s1xVIkI{Wa9 zQy(~hU<3$__ofIyN$*VO?m?+YI|>7`@NB|BZvheo_46{>41m)w;}mcHh>Iu)-x$7A z`;RCjA`mI`;XX+6K)_N#Luq;sw0v4NyaUw*^`D`oyH-KUu>JHs@cxHBLihwW3}YE= z=7b+!5L46)Q(qV0>xW?%PL?^=x7#fEr12&njWDbJr!+y=D*TKe!=L)_gJ3nDf*G(8 zV-^4jsOKMsbu_EmKl1sb*_%RuH@fJ9O=$wx=v}n1-v>D8QUz2MA^=2zd$T{7gCuk! z0yvzft0NDupP+7zIE0I~E^!g}7etoz3Bk z1SWu)httnY!8>0PrUq}GCB)7Ez?lx)C1?ZV=`cSgSKS9kHmdz7{Pe_g4j_$uFp8lC zjs8oHEy)c8G?O^_d;rXvig4mp0E$x7Okvud@GS;YezXz}1;tqC!F*wG_Qt+UGKG)N z#DXEea_5XI4MHxt|9=($cR<)6u&J27I|cK=5_1|pq^zk@q(I5J9SJ>wVNUbS0l3z+ z2mo&smoGunGn($b>hdKjd7NZn9UR60gpgzB9jR=JQOgkF(7f4GYy}L%0$jRmp35|d_8GMb320V%QAO}4!w#(C?&drO?c7( zln|rqMVU;qW1CRCc}(?Zn*gPdQ0N;UfNU8`UX z>Npn+stWIu@O5xp$G*T_CKUVS&rGn50TJN6?Dql2KxjKc(;W*0iGub5LXv+V%h-giYJ3d&yK@Pr+wsqGnjTp9BVt+Mbbogc#x#>VT9_NdGnXGi-$OrQAtMg$>^Xfy>V1^xnh{3uTv)mz-yB6m$X_7qle%bs&h3@-`zkfR@AC zakcbO;5pHfU6oG3LtoCo_g~5qx@&?;_Zv?6yzutN@GO8gb?!$A=o&@WcvwehyIcG| z3j$FnLb#Z7_-!nh~tl3|1B3LDe(1U z4#^v&vgfA&>HdAy3zJK(F$k)d03$*0?R8z{hYS=?df8t;^^-@YqR?uRL{1$o_8hzx z1hl~f#M<)d%J}{dXT4}hI4OJ&vO+Gw^hkHS=Cj&S~!8RL{N~OXlBD5#7n8y8h0I->U2+ho> z?FE7Lv`hF?6znY_+v!>;{NyWTrhSjN>|ViJ%k#Ya5^h>g_yTXr7H$#N8U?#FBe>RK zJm)Ba?Y??2tI;inK; zrA&Il!1XLcT}6y;ItaG>Uyk3VYAcm%*&J$nuW-^%#O2oaa;|6U5Vaq|F3 zb&#cZM-;q!X2w!iyJ{Zy&ozqcSs*hl;U(849x(g!9ca*P$5{-Pv3-}MHvR2^ZFBDo zGV>%CEyu2Z{{&62^l)v@I0qqPlQ`PbJ+dt98W?Q=|Qn0O~ zp+CSn+T?AkDx6cmNpLPPgA;_rWXT)t$} z4QZwJmSNb#Na#7Mj-nCe9x=LF8lody^S=XB*mcnO=s zz`lvS0I4bD4c$S>`RYz#K*F3>Vx~zFsyQ6v^00bp$ye&ruDk8uWltLR#(Mx4F9 z%kaF#d4OaZ+U|YbK_TNtv%(LjNtd<41`763AW&5p=1IV}S3=Vnbf+-fVspD$ub2ly>HX_Y01Qz>Y#eO7oe* zQVRClA7=!FN7GPx0I3E5?n0K>9dx=-Rd&vvd-66UJDQ%BK~O>R!E+aU{nFusr;=%C zuLiCOZR}h4nbiO=&My7@(cmav-s2x6!MoUMMhY0uo9p|z*YzwAR{VY`zWKw&FK2y|@PVdXrltrVUPJZ6BaJ<>lvl zJ3pzrs@-qOMae=NNue5ukh$?^DtnfaM3+3+_DV1=6o%HOj8J7iKnX=FX|5;5_d$M< ziDUJ*RNYxO_yA2GxbL~AFR@_~Qma0^4|9pq^o=;wrs48Hz6@qbHZn6!JF5r zIXn!K0st6^Y2HF4-;o}u{wW{{{fov^a15o zgj^Pao$7uuet%VOE*oVG-%+8C(+FW=r|ARXvt)kYJBT60SikFINPm#K>7arCNV8o> zB!D%Z2Ajr0I9+L%tqLKDnWZ`#%kW;SaRpa3!s0fs8O>$Qz$5(EF6RRGG0hJ&OmGX4 zm$iri5 z{`2(gxRb{i{%8;=-O|ygiT3(Ljb8*n#a9RKH2T{*P^?sSm}hH74VlIoc<=JFc+smq zy4EoETh^SYcV6R;AyVM9akjjzsdna0w5r0puZD9L06?uoYS&m@R1nyUXAaMzDtBzY0^a23p z-AZA_^%OLN^&yO`S?NljF}FcPDAd{6YiJhTyClL)k63>f2)tEX&SlNGvayqN767@E zH=R+qF9n}N*Gdf_C;?)zZ1W;3h-JSiuy(W}L{kfQ2x)I?X+yHZ7={WC%MYaGm0RA~ zmNjGZ8lYfG)}Vs4?&)9q?BowLx_!GR8yZ4b9Rz>(YG0=EO9n#B$$)DCAen)j1xf=$ z$kjRhe&zI!zt>rSL^o$M*BUclae1S-e9La`qOuk{1B+HB#|)&N{aQYNa@is&q31~9 zo!6KjkmcpKil0AHg}Azf_h^>^u&mcv!VsrwkpN*>5}5UcRJ=TbPqCs0)Avm2N%ZTzm0D^f`rMny3KEjt=?lsa00@dBbXw)+STVl z==QeJG@ZaTr&K8<+V<`zeEz-V%$L=zVa7lE0i_eMh4U#LwtZ^xGoEQaX5vpoZ_2sZs6koi{K(?Mq`?(z7mU zfUU!}-Ua~E6VPg)U~k;|MITPDT6NUoY+kMKyzP}BXZ;uruzDM5zt5H}VgGL~Ez348 z@ehp)gD>0eh-Ou-4*&qw)4c!M)pUe5lZQYV8ZXWI`SX{nj?+0r1AOFRWW03x2r1B9 z8Ev;7^^~Ng*@rcJwKj^*&Qmt?tz-6I6Mh=}lomTt3<;0+Ge{A$jl4Lxadv+3iiWkl z$sY{8@{S%qKWuifkufa)FaY@014y74G3d|(Kod2A$05u$KtN!0&9pbaXMJ6$sv7id zbULXH07MjQV=tj0xL$^L@^1lP6pKr2ZubhX3EIHOtwoIDyvVd1q86`@6tG>eLtT3h zf*kvw^ZVN?qv^0Z9dtefx&Hz2w>Dtru;9zNFf-Yn&NfuR($C89Bf3W ze>zD6@znNVvKSo{4X6UndDzC>o|kF18Y3@C$@614(PWT6wy;@-k!CA#sdF+r)vC4= zm`Jaww~_s^p`iD-6TkKzUNuAM34f;x!`bHfuqIG%IxruzKSY1#BaBgl&nDy}pONjpuzpz@=sGyXl;B7VCRM=o>9g6g>*ATGdhGAYWQH7c_G85^wNRu5qLz zqHn9nu5toT7lw7ZX$09)5@?S)&pq{_N|smYW2TS@d|@I=M8h1yH%?5=+86LCjUluW z4kmi|rc+Nq+l2bWs{|rGjG%evINE=T6`V%JPFCv1r{1GDyh}=|X$&0XB|;IAu+?M3 zl~&}QFZ;&!Rp&7Yhb`J-jyXj%Vg6adiBB25E#ckROxcFBriSgtvu+|3dFV@q0K*mvUxvY zbrX<;o^I?+TxA^nfLIMGew@)$)T!U6$>zh$u|X4v7kJSk2l4uqDBNYkG;+1eZ?tjon@SVm9;o_1v)G;smjJ8erw?1pItU z*2-F2Q!TA=3TvB#+Sk;69q%QUtJhy<+Gaipj8nbEky(u((Fgnbi<9m}i&b}7} zM1Y;zmFJ59Q1_<7A}C#DAQRI|>06KSd<}EepR~%Fozif3yt?qbT1EnCyG;=uZD9TC9)X3$}`(b?o7u8OOfbw~qNnz%xr9sKEYCm6`P{u>Uydm% void: _placed_group_coordinates.clear() var random := RandomNumberGenerator.new() random.seed = _current_seed ^ 0x5EED71 - var terrain_triangles := _terrain_surface_triangles() + var grass_surface_triangles_by_coordinate := ( + _terrain_surface_triangles_by_coordinate( + GRASS_PROP_SURFACE_MATERIALS, + ) + ) + var sand_surface_triangles_by_coordinate := ( + _terrain_surface_triangles_by_coordinate( + SAND_PROP_SURFACE_MATERIALS, + ) + ) var biomes: Array[TerrainBiomeDefinition] = [] if biome_catalog != null: biomes.assign(biome_catalog.definitions) @@ -250,6 +276,14 @@ func _on_generation_completed(summary: Dictionary) -> void: "tags", PackedStringArray(), ) + var terrain_triangles := _surface_triangles_for_coordinate( + ( + sand_surface_triangles_by_coordinate + if group == &"sand_tree" + else grass_surface_triangles_by_coordinate + ), + coordinate, + ) var definitions := _spawn_distance_eligible_definitions( _prop_definitions_for(rule, tags), coordinate, @@ -287,7 +321,8 @@ func _on_generation_completed(summary: Dictionary) -> void: eligible_records, group_counts, random, - terrain_triangles, + grass_surface_triangles_by_coordinate, + sand_surface_triangles_by_coordinate, ) _place_spawn_amenities(spawn_position) _configure_fresh_water(records) @@ -406,6 +441,11 @@ func _configure_fresh_water(records: Array[Dictionary]) -> void: body.surface_polygon = surface_polygon else: body.surface_size = surface_size + _add_generated_fresh_water_bed( + body, + surface_polygon, + surface_size, + ) body.visual_surface_enabled = false body.water_material = _fresh_water_material() body.water_type = WaterType.Type.FRESH_WATER @@ -418,6 +458,59 @@ func _configure_fresh_water(records: Array[Dictionary]) -> void: body.selection_priority = 10 +func _add_generated_fresh_water_bed( + body: WaterBodyAuthoring, + surface_polygon: PackedVector2Array, + surface_size: Vector2, +) -> void: + var polygon := surface_polygon + if polygon.size() < 3: + var half_size := surface_size * 0.5 + polygon = PackedVector2Array([ + Vector2(-half_size.x, -half_size.y), + Vector2(half_size.x, -half_size.y), + Vector2(half_size.x, half_size.y), + Vector2(-half_size.x, half_size.y), + ]) + var triangle_indices := Geometry2D.triangulate_polygon(polygon) + if triangle_indices.size() < 3: + return + var vertices := PackedVector3Array() + var normals := PackedVector3Array() + for offset: int in range(0, triangle_indices.size(), 3): + var triangle := PackedVector3Array() + for point_offset: int in 3: + var point := polygon[triangle_indices[offset + point_offset]] + triangle.append(Vector3(point.x, 0.0, point.y)) + if ( + (triangle[1] - triangle[0]).cross( + triangle[2] - triangle[0] + ).dot(Vector3.UP) < 0.0 + ): + var swap := triangle[1] + triangle[1] = triangle[2] + triangle[2] = swap + vertices.append_array(triangle) + normals.append_array(PackedVector3Array([ + Vector3.UP, + Vector3.UP, + Vector3.UP, + ])) + var arrays := [] + arrays.resize(Mesh.ARRAY_MAX) + arrays[Mesh.ARRAY_VERTEX] = vertices + arrays[Mesh.ARRAY_NORMAL] = normals + var mesh := ArrayMesh.new() + mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays) + var bed := MeshInstance3D.new() + bed.name = "GeneratedBed" + bed.cast_shadow = GeometryInstance3D.SHADOW_CASTING_SETTING_OFF + bed.position.y = GENERATED_FRESH_WATER_BED_HEIGHT - WATER_HEIGHT + bed.material_override = GENERATED_TERRAIN_DIRT_MATERIAL + bed.mesh = mesh + body.add_child(bed) + + func _fresh_water_location_tags(tags: PackedStringArray) -> Array[StringName]: var result: Array[StringName] = [&"generated_fresh_water"] if "pond" in tags: @@ -524,6 +617,7 @@ func _add_prop( ) var primary_scale := visual_scales[0] var scaled_clearance := definition.clearance_radius * primary_scale + var support_radius := clampf(scaled_clearance * 0.35, 0.25, 0.65) var placement := Vector3.ZERO var found_surface := false for _attempt: int in PROP_PLACEMENT_ATTEMPTS: @@ -541,6 +635,12 @@ func _add_prop( surface_height > -INF and surface_height > WATER_HEIGHT + PROP_MINIMUM_GROUND_CLEARANCE + and _surface_supports_prop_footprint( + placement, + surface_height, + support_radius, + terrain_triangles, + ) and _has_prop_clearance( placement, scaled_clearance, @@ -572,6 +672,11 @@ func _add_prop( for member_index: int in range(1, cluster_size): var member_scale := visual_scales[member_index] var member_clearance := definition.clearance_radius * member_scale + var member_support_radius := clampf( + member_clearance * 0.35, + 0.25, + 0.65, + ) for _attempt: int in PROP_CLUSTER_PLACEMENT_ATTEMPTS: var sector_angle := ( cluster_angle @@ -598,6 +703,12 @@ func _add_prop( ) if ( surface_height <= WATER_HEIGHT + PROP_MINIMUM_GROUND_CLEARANCE + or not _surface_supports_prop_footprint( + candidate, + surface_height, + member_support_radius, + terrain_triangles, + ) or not _has_prop_clearance(candidate, member_clearance) ): continue @@ -959,7 +1070,8 @@ func _ensure_minimum_props( eligible_records: Dictionary[StringName, Array], group_counts: Dictionary[StringName, int], random: RandomNumberGenerator, - terrain_triangles: Array[PackedVector3Array], + grass_surface_triangles_by_coordinate: Dictionary[Vector2i, Array], + sand_surface_triangles_by_coordinate: Dictionary[Vector2i, Array], ) -> void: if biome_catalog == null: return @@ -993,6 +1105,14 @@ func _ensure_minimum_props( "coordinate", Vector2i.ZERO, ) + var terrain_triangles := _surface_triangles_for_coordinate( + ( + sand_surface_triangles_by_coordinate + if group == &"sand_tree" + else grass_surface_triangles_by_coordinate + ), + coordinate, + ) var definitions := _spawn_distance_eligible_definitions( _prop_definitions_for(rule, tags), coordinate, @@ -1101,12 +1221,26 @@ func _apply_material_variant_to_meshes( ) -func _terrain_surface_triangles() -> Array[PackedVector3Array]: - var triangles: Array[PackedVector3Array] = [] +func _terrain_surface_triangles_by_coordinate( + material_names: Array[StringName], +) -> Dictionary[Vector2i, Array]: + var triangles_by_coordinate: Dictionary[Vector2i, Array] = {} + if material_names.is_empty(): + return triangles_by_coordinate for mesh_instance: MeshInstance3D in _generator.get_primary_terrain_meshes(): if mesh_instance.mesh == null: continue + var coordinate := _terrain_coordinate_for(mesh_instance) + if coordinate.x < 0 or coordinate.y < 0: + continue + var triangles: Array[PackedVector3Array] = [] for surface_index: int in mesh_instance.mesh.get_surface_count(): + var material := mesh_instance.get_active_material(surface_index) + if ( + material == null + or StringName(material.resource_name) not in material_names + ): + continue _append_surface_triangles( triangles, mesh_instance, @@ -1114,6 +1248,35 @@ func _terrain_surface_triangles() -> Array[PackedVector3Array]: -INF, 0.35, ) + if triangles.is_empty(): + continue + var coordinate_triangles: Array = triangles_by_coordinate.get( + coordinate, + [], + ) + coordinate_triangles.append_array(triangles) + triangles_by_coordinate[coordinate] = coordinate_triangles + return triangles_by_coordinate + + +func _terrain_coordinate_for(mesh_instance: MeshInstance3D) -> Vector2i: + var current: Node = mesh_instance + while current != null and current != _generator: + if current.has_meta(&"terrain_chunk_coordinate"): + return current.get_meta( + &"terrain_chunk_coordinate", + Vector2i(-1, -1), + ) as Vector2i + current = current.get_parent() + return Vector2i(-1, -1) + + +func _surface_triangles_for_coordinate( + triangles_by_coordinate: Dictionary[Vector2i, Array], + coordinate: Vector2i, +) -> Array[PackedVector3Array]: + var triangles: Array[PackedVector3Array] = [] + triangles.assign(triangles_by_coordinate.get(coordinate, [])) return triangles @@ -1139,6 +1302,28 @@ func _surface_height_at( return highest +func _surface_supports_prop_footprint( + position: Vector3, + surface_height: float, + radius: float, + triangles: Array[PackedVector3Array], +) -> bool: + for direction: Vector2 in PROP_SURFACE_SAMPLE_DIRECTIONS: + var sample_position := position + Vector3( + direction.x * radius, + 0.0, + direction.y * radius, + ) + var sample_height := _surface_height_at(sample_position, triangles) + if ( + sample_height <= -INF + or absf(sample_height - surface_height) + > PROP_MAXIMUM_SUPPORT_HEIGHT_DIFFERENCE + ): + return false + return true + + func _add_prop_collision( prop: Node3D, definition: TerrainPropDefinition, diff --git a/world/generation/terrain_chunk_generator.gd b/world/generation/terrain_chunk_generator.gd index 0d1703c..49bf693 100644 --- a/world/generation/terrain_chunk_generator.gd +++ b/world/generation/terrain_chunk_generator.gd @@ -64,6 +64,7 @@ const PROJECTED_DIRT_MATERIAL: Material = preload( @export var river_feature_enabled := false @export var river_edge_chunk_id: StringName = &"chunk_0024" @export var river_edge_variant_chunk_id: StringName = &"chunk_0025" +@export var river_stone_bridge_chunk_id: StringName = &"chunk_0038" @export var river_source_right_chunk_id: StringName = &"chunk_0029" @export var river_source_left_chunk_id: StringName = &"chunk_0030" @export var river_outlet_right_chunk_id: StringName = &"chunk_0031" @@ -1728,6 +1729,7 @@ func _prepare_river_feature_region(report_no_room_error := true) -> bool: for stable_id: StringName in [ river_edge_chunk_id, river_edge_variant_chunk_id, + river_stone_bridge_chunk_id, river_source_right_chunk_id, river_source_left_chunk_id, river_outlet_right_chunk_id, @@ -2190,6 +2192,16 @@ func _build_river_feature_candidate( + bend_origin.y, 2, ) + var straight_station_count := bend_distance + outlet_distance - 2 + var bridge_station_index := posmod( + generation_seed + + source_coordinates[0].x * 73856093 + + source_coordinates[0].y * 19349663 + + bend_origin.x * 83492791 + + bend_origin.y * 2971215073 + + bend_turns * 433494437, + straight_station_count, + ) var station_index := 0 for step: int in range(1, bend_distance): var pair: Array[Vector2i] = [] @@ -2200,6 +2212,7 @@ func _build_river_feature_candidate( pair, flow_direction, phase + station_index, + station_index == bridge_station_index, ) ) station_index += 1 @@ -2215,6 +2228,7 @@ func _build_river_feature_candidate( pair, outlet_direction, phase + station_index, + station_index == bridge_station_index, ) ) station_index += 1 @@ -2355,6 +2369,7 @@ func _river_edge_pair_specs( pair: Array[Vector2i], flow_direction: Vector2i, phase: int, + use_stone_bridge := false, ) -> Array[Dictionary]: var ordered := _river_sorted_pair(pair, flow_direction) if ordered.size() != 2: @@ -2363,6 +2378,11 @@ func _river_edge_pair_specs( river_edge_chunk_id, river_edge_variant_chunk_id, ] + if use_stone_bridge: + edge_ids.assign([ + river_stone_bridge_chunk_id, + river_stone_bridge_chunk_id, + ]) var first_index := posmod(phase, edge_ids.size()) var first_turns := 0 if flow_direction.x != 0 else 1 var second_turns := 2 if flow_direction.x != 0 else 3 diff --git a/world/materials/terrain_surface_projection.gdshader b/world/materials/terrain_surface_projection.gdshader index b879c63..a669a14 100644 --- a/world/materials/terrain_surface_projection.gdshader +++ b/world/materials/terrain_surface_projection.gdshader @@ -1,7 +1,7 @@ shader_type spatial; render_mode cull_back; -uniform sampler2D albedo_texture : source_color, repeat_enable, filter_nearest; +uniform sampler2D albedo_texture : source_color, repeat_enable, filter_nearest_mipmap; uniform vec4 albedo_tint : source_color = vec4(1.0); uniform float tile_world_size : hint_range(0.1, 20.0, 0.05) = 2.5; uniform float blend_sharpness : hint_range(1.0, 16.0, 0.25) = 6.0; From 549908b6b075bf980121b593783b926bea48b45c Mon Sep 17 00:00:00 2001 From: Voyager Date: Mon, 24 Aug 2026 21:07:51 -0400 Subject: [PATCH 60/90] test: refresh release validation fixtures --- tests/controller_world_interaction_validation.gd | 15 +++++++++++++-- tests/economy_regression_validation.gd | 3 +++ tests/player_gathering_animation_validation.gd | 2 +- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/tests/controller_world_interaction_validation.gd b/tests/controller_world_interaction_validation.gd index d9e77a5..3d684cb 100644 --- a/tests/controller_world_interaction_validation.gd +++ b/tests/controller_world_interaction_validation.gd @@ -23,13 +23,24 @@ func _run() -> void: bool(main.get("_application_initialized")), "application initialization failed", ) + var save_manager := main.get("_save_manager") as PlayerSaveManager + var world_layout: StringName = WorldLayout.GENERATED + var world_seed: int = PlayerSaveManager.DEFAULT_WORLD_SEED + _expect( + bool(main.call("_apply_world", world_layout, world_seed, true)), + "generated-world preparation failed", + ) + _expect( + bool(main.call("_prepare_host_world", world_layout, world_seed)), + "host-world preparation failed", + ) _expect( bool(main.call("_prepare_private_host")), "private host preparation failed", ) - var save_manager := main.get("_save_manager") as PlayerSaveManager _expect( - save_manager != null and save_manager.initialize_new_game(), + save_manager != null + and save_manager.initialize_new_game(world_seed, world_layout), "new-game initialization failed", ) main.call("_enter_gameplay") diff --git a/tests/economy_regression_validation.gd b/tests/economy_regression_validation.gd index c7e4a9e..de0133b 100644 --- a/tests/economy_regression_validation.gd +++ b/tests/economy_regression_validation.gd @@ -180,6 +180,9 @@ func _run_multiplayer_client() -> void: var fish_catch := _make_catch(fish) assert(player.inventory.add_catch(fish_catch)) catch_ids.append(fish_catch.catch_id) + if catch_ids.size() == NetworkSaleProtocol.MAX_CATCHES_PER_REQUEST: + break + assert(catch_ids.size() == NetworkSaleProtocol.MAX_CATCHES_PER_REQUEST) player.inventory.set_inventory_layout(player.inventory_layout) await create_timer(1.0).timeout _sale_result.clear() diff --git a/tests/player_gathering_animation_validation.gd b/tests/player_gathering_animation_validation.gd index 16e52c3..42f97ca 100644 --- a/tests/player_gathering_animation_validation.gd +++ b/tests/player_gathering_animation_validation.gd @@ -23,7 +23,7 @@ func _run() -> void: await process_frame assert(is_equal_approx( Player.get_catch_texture_resolution_scale(CrabBrown.display_texture), - 1.0, + 20.0, )) assert(is_equal_approx( Player.get_catch_texture_resolution_scale(ClamManila.display_texture), From 968fbe2421e0de5e8e8ed617344f368750068ffd Mon Sep 17 00:00:00 2001 From: Voyager Date: Mon, 24 Aug 2026 21:08:03 -0400 Subject: [PATCH 61/90] chore: prepare v0.18.0-alpha release --- docs/README-PLAYTEST.txt | 4 ++-- export_presets.cfg | 26 +++++++++++++------------- project.godot | 2 +- scripts/build_playtest.sh | 6 +++--- ui/title_screen.tscn | 2 +- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/README-PLAYTEST.txt b/docs/README-PLAYTEST.txt index 7b7e285..0268032 100644 --- a/docs/README-PLAYTEST.txt +++ b/docs/README-PLAYTEST.txt @@ -1,6 +1,6 @@ NETfishing -v0.17.1-alpha -Alpha 0.17.1 +v0.18.0-alpha +Alpha 0.18.0 Thank you for trying this early private playtest. diff --git a/export_presets.cfg b/export_presets.cfg index cc5d56a..340cce4 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -9,7 +9,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.17.1-alpha/windows-x86_64/NETfishing.exe" +export_path="builds/v0.18.0-alpha/windows-x86_64/NETfishing.exe" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -35,11 +35,11 @@ application/modify_resources=true application/icon="res://art/exported/system_icons/netfishing.ico" application/console_wrapper_icon="" application/icon_interpolation=4 -application/file_version="0.17.1.0" -application/product_version="0.17.1.0" +application/file_version="0.18.0.0" +application/product_version="0.18.0.0" application/company_name="Woofmeow" application/product_name="NETfishing" -application/file_description="NETfishing v0.17.1-alpha" +application/file_description="NETfishing v0.18.0-alpha" application/copyright="Copyright © 2026 Woofmeow" application/trademarks="NETfishing and Woofmeow branding is reserved; see TRADEMARKS.md" application/export_angle=0 @@ -62,7 +62,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.17.1-alpha/linux-arm64/NETfishing.arm64" +export_path="builds/v0.18.0-alpha/linux-arm64/NETfishing.arm64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -92,7 +92,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.17.1-alpha/macos/NETfishing.zip" +export_path="builds/v0.18.0-alpha/macos/NETfishing.zip" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -108,8 +108,8 @@ custom_template/release="" application/bundle_identifier="io.woofmeow.netfishing" application/icon="res://art/exported/system_icons/netfishing_1024.png" application/icon_interpolation=0 -application/short_version="0.17.1" -application/version="0.17.1" +application/short_version="0.18.0" +application/version="0.18.0" application/architecture="universal" codesign/enable=false notarization/enable=false @@ -125,7 +125,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*,tests/*" -export_path="builds/v0.17.1-alpha/server-linux-x86_64/NETfishingServer.x86_64" +export_path="builds/v0.18.0-alpha/server-linux-x86_64/NETfishingServer.x86_64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -155,7 +155,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.17.1-alpha/android/NETfishing.apk" +export_path="builds/v0.18.0-alpha/android/NETfishing.apk" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -176,8 +176,8 @@ architectures/armeabi-v7a=false architectures/arm64-v8a=true architectures/x86=false architectures/x86_64=false -version/code=170100 -version/name="v0.17.1-alpha" +version/code=180000 +version/name="v0.18.0-alpha" package/unique_name="io.woofmeow.netfishing" package/name="NETfishing" package/signed=true @@ -214,7 +214,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.17.1-alpha/linux-x86_64/NETfishing.x86_64" +export_path="builds/v0.18.0-alpha/linux-x86_64/NETfishing.x86_64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" diff --git a/project.godot b/project.godot index c0a7537..89bf703 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="NETFISHING" -config/version="0.17.1-alpha" +config/version="0.18.0-alpha" run/main_scene="res://main/main.tscn" config/features=PackedStringArray("4.7", "GL Compatibility") config/icon="res://art/exported/system_icons/netfishing_256.png" diff --git a/scripts/build_playtest.sh b/scripts/build_playtest.sh index ff0628c..fb00aec 100755 --- a/scripts/build_playtest.sh +++ b/scripts/build_playtest.sh @@ -4,14 +4,14 @@ 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.17.1-alpha" +readonly BUILD_ROOT="${PROJECT_ROOT}/builds/v0.18.0-alpha" readonly WINDOWS_DIR="${BUILD_ROOT}/windows-x86_64" readonly LINUX_DIR="${BUILD_ROOT}/linux-x86_64" readonly README_SOURCE="${PROJECT_ROOT}/docs/README-PLAYTEST.txt" readonly SOURCE_COMMIT="$(git -C "${PROJECT_ROOT}" rev-parse HEAD)" readonly SOURCE_URL="https://forge.makearmy.io/woofmeow/netfishing" -readonly WINDOWS_ZIP="${BUILD_ROOT}/NETfishing-v0.17.1-alpha-windows-x86_64.zip" -readonly LINUX_ZIP="${BUILD_ROOT}/NETfishing-v0.17.1-alpha-linux-x86_64.zip" +readonly WINDOWS_ZIP="${BUILD_ROOT}/NETfishing-v0.18.0-alpha-windows-x86_64.zip" +readonly LINUX_ZIP="${BUILD_ROOT}/NETfishing-v0.18.0-alpha-linux-x86_64.zip" readonly GODOT_BIN="${GODOT_BIN:-godot}" if [[ ! -f "${PROJECT_ROOT}/project.godot" ]]; then diff --git a/ui/title_screen.tscn b/ui/title_screen.tscn index c69f87b..653d13d 100644 --- a/ui/title_screen.tscn +++ b/ui/title_screen.tscn @@ -227,7 +227,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.17.1-alpha" +text = "v0.18.0-alpha" horizontal_alignment = 1 [node name="Spacer" type="Control" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent"] From da7f072365785c32e3201cd4c90f26bedd103669 Mon Sep 17 00:00:00 2001 From: Voyager Date: Tue, 25 Aug 2026 00:11:47 -0400 Subject: [PATCH 62/90] fix logbook scrolling focus --- tests/logbook_validation.gd | 3 +++ ui/logbook_page.gd | 27 --------------------------- 2 files changed, 3 insertions(+), 27 deletions(-) diff --git a/tests/logbook_validation.gd b/tests/logbook_validation.gd index daa728e..49b9459 100644 --- a/tests/logbook_validation.gd +++ b/tests/logbook_validation.gd @@ -103,6 +103,9 @@ func _validate_page() -> void: assert((page.get("_catalog_grid") as GridContainer).columns == 4) var catalog_scroll := page.get("_catalog_scroll") as ScrollContainer assert(catalog_scroll != null and catalog_scroll.follow_focus) + catalog_scroll.scroll_vertical = 37 + await create_timer(0.2).timeout + assert(catalog_scroll.scroll_vertical == 37) page.call( "_set_controller_zone", LogbookPage.ControllerZone.ENTRIES, diff --git a/ui/logbook_page.gd b/ui/logbook_page.gd index c5528e4..6319dd6 100644 --- a/ui/logbook_page.gd +++ b/ui/logbook_page.gd @@ -56,7 +56,6 @@ const COMPACT_BOOK_TOP: float = 65.0 const CATALOG_PORTRAIT_SIZE := Vector2(78.0, 36.0) const CATALOG_ENTRY_SIZE := Vector2(92.0, 92.0) const CATALOG_ROW_STEP: float = 98.0 -const CATALOG_SNAP_DELAY: float = 0.12 const DETAIL_PORTRAIT_SIZE := Vector2(160.0, 88.0) const DETAIL_SECTION_SEPARATION: int = 10 const DETAIL_QUALITY_SECTION_SIZE := Vector2(300.0, 104.0) @@ -86,8 +85,6 @@ var _detail_tween: Tween var _category_generation: int = 0 var _category_tween: Tween var _silhouette_material: ShaderMaterial -var _snapping_catalog_scroll: bool = false -var _catalog_scroll_snap_timer: Timer var _outer_margin: MarginContainer var _book: Control var _compact_presentation: bool = false @@ -475,11 +472,6 @@ func _center_scaled_content(control: Control) -> void: func _configure_catalog_scroll_bar() -> void: - _catalog_scroll_snap_timer = Timer.new() - _catalog_scroll_snap_timer.one_shot = true - _catalog_scroll_snap_timer.wait_time = CATALOG_SNAP_DELAY - _catalog_scroll_snap_timer.timeout.connect(_snap_catalog_scroll_to_row) - _catalog_scroll.add_child(_catalog_scroll_snap_timer) var scroll_bar: VScrollBar = _catalog_scroll.get_v_scroll_bar() scroll_bar.mouse_filter = Control.MOUSE_FILTER_IGNORE scroll_bar.focus_mode = Control.FOCUS_NONE @@ -525,25 +517,6 @@ func _make_scroll_indicator( func _on_catalog_scroll_value_changed(_value: float) -> void: - if _snapping_catalog_scroll: - return - _catalog_scroll_snap_timer.start() - _refresh_catalog_scroll_indicators() - - -func _snap_catalog_scroll_to_row() -> void: - var scroll_bar: VScrollBar = _catalog_scroll.get_v_scroll_bar() - var value: float = scroll_bar.value - var maximum_scroll: float = scroll_bar.max_value - scroll_bar.page - var snapped_value: float = clampf( - roundf(value / CATALOG_ROW_STEP) * CATALOG_ROW_STEP, - scroll_bar.min_value, - maximum_scroll, - ) - if not is_equal_approx(value, snapped_value): - _snapping_catalog_scroll = true - _catalog_scroll.scroll_vertical = roundi(snapped_value) - _snapping_catalog_scroll = false _refresh_catalog_scroll_indicators() From 1ab2a291d2db7546318e7eee5865a85c84d2e3bd Mon Sep 17 00:00:00 2001 From: Voyager Date: Tue, 25 Aug 2026 00:12:01 -0400 Subject: [PATCH 63/90] fix terrain collision and water recovery --- tests/fishing_surface_validation.gd | 29 +++++++++++++++ tests/generated_world_runtime_validation.gd | 37 +++++++++++++++++++ world/generation/generated_world_region.gd | 1 + .../props/definitions/prop_palm.tres | 5 ++- .../props/definitions/prop_pine.tres | 3 +- .../props/definitions/prop_pine_large.tres | 3 +- .../props/definitions/prop_tree_1.tres | 1 + .../props/definitions/prop_tree_2.tres | 3 +- .../props/definitions/prop_tree_3.tres | 1 + .../props/definitions/prop_tree_large.tres | 3 +- world/player_water_trigger.gd | 26 ++++++++++--- world/regions/starter_island_region.tscn | 1 + world/water_body_authoring.gd | 8 ++++ 13 files changed, 110 insertions(+), 11 deletions(-) diff --git a/tests/fishing_surface_validation.gd b/tests/fishing_surface_validation.gd index eb02c6c..8248c36 100644 --- a/tests/fishing_surface_validation.gd +++ b/tests/fishing_surface_validation.gd @@ -156,6 +156,7 @@ func _validate_portable_water_body() -> void: PlayerWaterTrigger.EntryHeightReference.PLAYER_ORIGIN, ) water_body.set("recovery_entry_depth_threshold", 0.1) + water_body.set("recovery_entry_confirmation_seconds", 0.2) water_body.set("fish_pool", PondPool) root.add_child(water_body) await process_frame @@ -183,6 +184,34 @@ func _validate_portable_water_body() -> void: == PlayerWaterTrigger.EntryHeightReference.PLAYER_ORIGIN ) assert(is_equal_approx(recovery_region.entry_depth_threshold, 0.1)) + assert(is_equal_approx(recovery_region.entry_confirmation_seconds, 0.2)) + + var recovery_player := PlayerScene.instantiate() as Player + assert(recovery_player != null) + root.add_child(recovery_player) + recovery_player.set_process(false) + recovery_player.set_physics_process(false) + var recovery_requests: Array[float] = [] + recovery_region.recovery_requested.connect( + func(_player: Player, requested_surface_height: float) -> void: + recovery_requests.append(requested_surface_height) + ) + recovery_region.call("_on_body_entered", recovery_player) + recovery_player.global_position.y = 6.8 + recovery_region.call("_physics_process", 0.1) + assert(recovery_requests.is_empty()) + # Breaking the submersion resets confirmation rather than carrying a stale + # partial fall into a later jump. + recovery_player.global_position.y = 7.0 + recovery_region.call("_physics_process", 0.1) + recovery_player.global_position.y = 6.8 + recovery_region.call("_physics_process", 0.11) + assert(recovery_requests.is_empty()) + recovery_region.call("_physics_process", 0.1) + assert(recovery_requests == [7.0]) + recovery_region.call("_on_body_exited", recovery_player) + recovery_player.queue_free() + await process_frame water_body.queue_free() await process_frame diff --git a/tests/generated_world_runtime_validation.gd b/tests/generated_world_runtime_validation.gd index 0143322..adec70b 100644 --- a/tests/generated_world_runtime_validation.gd +++ b/tests/generated_world_runtime_validation.gd @@ -490,6 +490,10 @@ func _validate_generated_region( == PlayerWaterTrigger.EntryHeightReference.PLAYER_ORIGIN ) assert(is_equal_approx(fresh_recovery.entry_depth_threshold, 0.1)) + assert(is_equal_approx( + fresh_recovery.entry_confirmation_seconds, + 0.2, + )) var coordinate_tokens := child.name.trim_prefix("FreshWater_").split("_") assert(coordinate_tokens.size() == 2) var coordinate := Vector2i( @@ -1043,6 +1047,25 @@ func _validate_prop_catalog(region: GeneratedWorldRegion) -> void: assert(palm.maximum_cluster_radius > palm.minimum_cluster_radius) assert(palm.prefer_ocean_facing) assert(not palm.local_overhang_direction.is_zero_approx()) + var aligned_tree_collisions: Dictionary[StringName, Vector2] = { + &"prop_tree_1": Vector2(0.08, 0.01), + &"prop_tree_2": Vector2(0.1, 0.075), + &"prop_tree_3": Vector2(-0.1, 0.18), + &"prop_tree_large": Vector2(0.084, 0.504), + &"prop_pine": Vector2(-0.044, 0.083), + &"prop_pine_large": Vector2(-0.04, 0.075), + &"prop_palm": Vector2(0.15, -0.1), + } + for tree_id: StringName in aligned_tree_collisions: + var aligned_tree := catalog.definition_for_id(tree_id) + assert(aligned_tree != null and aligned_tree.has_cylinder_collision()) + var collision_center := Vector2( + aligned_tree.collision_offset.x, + aligned_tree.collision_offset.z, + ) + assert(collision_center.is_equal_approx( + aligned_tree_collisions[tree_id] + )) var forest := region.get_biome_catalog().definition_for_id(&"biome_forest") var forest_rule := forest.prop_rule_for_group(&"grass_tree") var large_tree := catalog.definition_for_id(&"prop_tree_large") @@ -1139,6 +1162,20 @@ func _validate_decoration_transform( or collision.shape is BoxShape3D ) assert(collision.global_basis.get_scale().is_equal_approx(Vector3.ONE)) + if collision.shape is CylinderShape3D: + var cylinder := collision.shape as CylinderShape3D + assert(is_equal_approx( + cylinder.radius, + definition.collision_radius * visual_scale, + )) + assert(is_equal_approx( + cylinder.height, + definition.collision_height * visual_scale, + )) + assert(collision.position.is_equal_approx( + definition.collision_offset * visual_scale + + Vector3.UP * cylinder.height * 0.5 + )) else: assert(collision == null) var query := PhysicsRayQueryParameters3D.create( diff --git a/world/generation/generated_world_region.gd b/world/generation/generated_world_region.gd index 78188e0..8987caf 100644 --- a/world/generation/generated_world_region.gd +++ b/world/generation/generated_world_region.gd @@ -453,6 +453,7 @@ func _configure_fresh_water(records: Array[Dictionary]) -> void: PlayerWaterTrigger.EntryHeightReference.PLAYER_ORIGIN ) body.recovery_entry_depth_threshold = 0.1 + body.recovery_entry_confirmation_seconds = 0.2 body.fish_pool = _fresh_water_pool(tags) body.location_tags = _fresh_water_location_tags(tags) body.selection_priority = 10 diff --git a/world/generation/props/definitions/prop_palm.tres b/world/generation/props/definitions/prop_palm.tres index e586f3d..c8021d4 100644 --- a/world/generation/props/definitions/prop_palm.tres +++ b/world/generation/props/definitions/prop_palm.tres @@ -11,7 +11,7 @@ packed_scene = ExtResource("2_scene") procedural_group = &"sand_tree" required_chunk_tags = PackedStringArray("sand") minimum_spawn_chunk_distance = 2 -clearance_radius = 0.65 +clearance_radius = 0.75 minimum_visual_scale = 0.5 maximum_visual_scale = 1.0 minimum_cluster_size = 2 @@ -21,6 +21,7 @@ maximum_cluster_radius = 3.0 prefer_ocean_facing = true local_overhang_direction = Vector2(-0.883, 0.469) ocean_facing_spread_degrees = 55.0 -collision_radius = 0.4 +collision_radius = 0.7 collision_height = 6.0 +collision_offset = Vector3(0.15, 0, -0.1) gatherable_surface_material_names = PackedStringArray("wood_light") diff --git a/world/generation/props/definitions/prop_pine.tres b/world/generation/props/definitions/prop_pine.tres index b3224a9..5dd460a 100644 --- a/world/generation/props/definitions/prop_pine.tres +++ b/world/generation/props/definitions/prop_pine.tres @@ -15,5 +15,6 @@ minimum_spawn_chunk_distance = 2 clearance_radius = 1.55 minimum_visual_scale = 0.65 maximum_visual_scale = 1.2 -collision_radius = 0.5 +collision_radius = 0.85 collision_height = 4.0 +collision_offset = Vector3(-0.044, 0, 0.083) diff --git a/world/generation/props/definitions/prop_pine_large.tres b/world/generation/props/definitions/prop_pine_large.tres index df9076d..bc70868 100644 --- a/world/generation/props/definitions/prop_pine_large.tres +++ b/world/generation/props/definitions/prop_pine_large.tres @@ -15,5 +15,6 @@ minimum_spawn_chunk_distance = 2 clearance_radius = 1.65 minimum_visual_scale = 0.75 maximum_visual_scale = 1.2 -collision_radius = 0.65 +collision_radius = 0.75 collision_height = 9.5 +collision_offset = Vector3(-0.04, 0, 0.075) diff --git a/world/generation/props/definitions/prop_tree_1.tres b/world/generation/props/definitions/prop_tree_1.tres index 3553988..4688578 100644 --- a/world/generation/props/definitions/prop_tree_1.tres +++ b/world/generation/props/definitions/prop_tree_1.tres @@ -27,4 +27,5 @@ secondary_variant_material_slot_names = PackedStringArray("wood", "wood_light", secondary_material_variants = Array[Material]([ExtResource("6_wood_light"), ExtResource("7_wood_mid"), ExtResource("8_wood_dark")]) collision_radius = 0.4 collision_height = 3.2 +collision_offset = Vector3(0.08, 0, 0.01) gatherable_surface_material_names = PackedStringArray("wood", "wood_light", "wood_mid", "wood_dark") diff --git a/world/generation/props/definitions/prop_tree_2.tres b/world/generation/props/definitions/prop_tree_2.tres index 868e044..a6e7895 100644 --- a/world/generation/props/definitions/prop_tree_2.tres +++ b/world/generation/props/definitions/prop_tree_2.tres @@ -25,6 +25,7 @@ variant_material_slot_names = PackedStringArray("leaf_light", "leaf", "leaf_dark material_variants = Array[Material]([ExtResource("3_leaf_light"), ExtResource("4_leaf_mid"), ExtResource("5_leaf_dark")]) secondary_variant_material_slot_names = PackedStringArray("wood", "wood_light", "wood_mid") secondary_material_variants = Array[Material]([ExtResource("6_wood_light"), ExtResource("7_wood_mid"), ExtResource("8_wood_dark")]) -collision_radius = 0.5 +collision_radius = 0.55 collision_height = 3.8 +collision_offset = Vector3(0.1, 0, 0.075) gatherable_surface_material_names = PackedStringArray("wood", "wood_light", "wood_mid", "wood_dark") diff --git a/world/generation/props/definitions/prop_tree_3.tres b/world/generation/props/definitions/prop_tree_3.tres index 58e3549..9f833c9 100644 --- a/world/generation/props/definitions/prop_tree_3.tres +++ b/world/generation/props/definitions/prop_tree_3.tres @@ -27,4 +27,5 @@ secondary_variant_material_slot_names = PackedStringArray("wood", "wood_light", secondary_material_variants = Array[Material]([ExtResource("6_wood_light"), ExtResource("7_wood_mid"), ExtResource("8_wood_dark")]) collision_radius = 0.55 collision_height = 4.2 +collision_offset = Vector3(-0.1, 0, 0.18) gatherable_surface_material_names = PackedStringArray("wood", "wood_light", "wood_mid", "wood_dark") diff --git a/world/generation/props/definitions/prop_tree_large.tres b/world/generation/props/definitions/prop_tree_large.tres index 9092ad1..ee91d62 100644 --- a/world/generation/props/definitions/prop_tree_large.tres +++ b/world/generation/props/definitions/prop_tree_large.tres @@ -25,6 +25,7 @@ variant_material_slot_names = PackedStringArray("leaf_light", "leaf", "leaf_dark material_variants = Array[Material]([ExtResource("3_leaf_light"), ExtResource("4_leaf_mid"), ExtResource("5_leaf_dark")]) secondary_variant_material_slot_names = PackedStringArray("wood", "wood_light", "wood_mid") secondary_material_variants = Array[Material]([ExtResource("6_wood_light"), ExtResource("7_wood_mid"), ExtResource("8_wood_dark")]) -collision_radius = 0.85 +collision_radius = 1.05 collision_height = 7.5 +collision_offset = Vector3(0.084, 0, 0.504) gatherable_surface_material_names = PackedStringArray("wood", "wood_light", "wood_mid", "wood_dark") diff --git a/world/player_water_trigger.gd b/world/player_water_trigger.gd index 10fab14..ffe0582 100644 --- a/world/player_water_trigger.gd +++ b/world/player_water_trigger.gd @@ -29,9 +29,14 @@ enum EntryHeightReference { ) ## Recovery begins when the selected reference reaches this depth. @export_range(0.0, 2.0, 0.05) var entry_depth_threshold: float = 0.35 +## The player must remain below the threshold for this long before recovery. +## A short freshwater confirmation keeps jumps across stepping stones from +## being mistaken for a completed fall into the water. +@export_range(0.0, 1.0, 0.05) var entry_confirmation_seconds: float = 0.0 var _tracked_players: Array[Player] = [] var _triggered_players: Dictionary[StringName, bool] = {} +var _submerged_seconds: Dictionary[StringName, float] = {} func _ready() -> void: @@ -46,7 +51,7 @@ func _ready() -> void: set_physics_process(false) -func _physics_process(_delta: float) -> void: +func _physics_process(delta: float) -> void: var active_surface_height: float = get_surface_height() for player: Player in _tracked_players.duplicate(): if not is_instance_valid(player): @@ -58,9 +63,17 @@ func _physics_process(_delta: float) -> void: var entry_height := player.get_body_center_position().y if entry_height_reference == EntryHeightReference.PLAYER_ORIGIN: entry_height = player.global_position.y - if entry_height <= active_surface_height - entry_depth_threshold: - _triggered_players[player_key] = true - recovery_requested.emit(player, active_surface_height) + if entry_height > active_surface_height - entry_depth_threshold: + _submerged_seconds[player_key] = 0.0 + continue + var submerged_seconds: float = ( + _submerged_seconds.get(player_key, 0.0) + maxf(delta, 0.0) + ) + _submerged_seconds[player_key] = submerged_seconds + if submerged_seconds < entry_confirmation_seconds: + continue + _triggered_players[player_key] = true + recovery_requested.emit(player, active_surface_height) if _tracked_players.is_empty(): set_physics_process(false) @@ -86,6 +99,7 @@ func _on_body_entered(body: Node3D) -> void: if player == null or player in _tracked_players: return _tracked_players.append(player) + _submerged_seconds[StringName(str(player.get_instance_id()))] = 0.0 set_physics_process(true) @@ -94,6 +108,8 @@ func _on_body_exited(body: Node3D) -> void: if player == null: return _tracked_players.erase(player) - _triggered_players.erase(StringName(str(player.get_instance_id()))) + var player_key := StringName(str(player.get_instance_id())) + _triggered_players.erase(player_key) + _submerged_seconds.erase(player_key) if _tracked_players.is_empty(): set_physics_process(false) diff --git a/world/regions/starter_island_region.tscn b/world/regions/starter_island_region.tscn index b52b0ea..8f4bc4b 100644 --- a/world/regions/starter_island_region.tscn +++ b/world/regions/starter_island_region.tscn @@ -163,6 +163,7 @@ location_tags = Array[StringName]([&"starter_pond", &"pond"]) selection_priority = 1 recovery_entry_height_reference = 1 recovery_entry_depth_threshold = 0.1 +recovery_entry_confirmation_seconds = 0.2 [node name="VisualWater" type="MeshInstance3D" parent="WaterBodies/Pond" unique_id=1034265960] material_override = ExtResource("19_fresh_water") diff --git a/world/water_body_authoring.gd b/world/water_body_authoring.gd index a272d90..16636f7 100644 --- a/world/water_body_authoring.gd +++ b/world/water_body_authoring.gd @@ -80,6 +80,11 @@ var recovery_entry_depth_threshold: float = 0.35: set(value): recovery_entry_depth_threshold = clampf(value, 0.0, 2.0) _sync_owned_nodes() +@export_range(0.0, 1.0, 0.05) +var recovery_entry_confirmation_seconds: float = 0.0: + set(value): + recovery_entry_confirmation_seconds = clampf(value, 0.0, 1.0) + _sync_owned_nodes() @export_range(0.1, 20.0, 0.1, "or_greater", "suffix:m") var recovery_depth: float = 4.8: set(value): @@ -173,6 +178,9 @@ func _sync_owned_nodes() -> void: recovery_region.entry_depth_threshold = ( recovery_entry_depth_threshold ) + recovery_region.entry_confirmation_seconds = ( + recovery_entry_confirmation_seconds + ) if uses_polygon and _sync_polygon_collision_shapes( recovery_region, recovery_shape_node, From 135fd9110fcda86e3ec2a6881b20fab67d5d55e7 Mon Sep 17 00:00:00 2001 From: Voyager Date: Tue, 25 Aug 2026 00:12:11 -0400 Subject: [PATCH 64/90] stabilize movement reconciliation states --- player/player.gd | 63 ++++++++++++-- tests/movement_multiplayer_validation.gd | 102 ++++++++++++++++++++++- 2 files changed, 156 insertions(+), 9 deletions(-) diff --git a/player/player.gd b/player/player.gd index 5ae4cac..64d4ffe 100644 --- a/player/player.gd +++ b/player/player.gd @@ -1036,6 +1036,8 @@ func _simulate_movement_physics(delta: float) -> void: or (_network_authoritative_simulation and _network_jump_pending) ) ) + if jump_requested: + _cancel_sitting_for_jump() # Sitting deliberately stops movement processing, so never allow a stale # grounded flag or a reconciled network state to leave an airborne avatar in # that early-return path. Preserve the intent and sit once landing is real. @@ -1635,6 +1637,7 @@ func _complete_retract_animation() -> void: func toggle_sitting() -> void: if _sit_after_landing: _sit_after_landing = false + _set_sitting(false, local_control_enabled) return var should_sit: bool = not _sitting if should_sit: @@ -1667,12 +1670,12 @@ func _set_sitting( should_sit: bool, is_local_intent: bool = false, ) -> void: - if _sitting == should_sit: - return - _sitting = should_sit if is_local_intent: _sitting_intent_pending = true _sitting_intent_sequence = -1 + if _sitting == should_sit: + return + _sitting = should_sit if _sitting: velocity = Vector3.ZERO _character_animation_name = &"" @@ -1687,11 +1690,23 @@ func _can_begin_sitting() -> bool: return is_on_floor() and velocity.y <= 0.0 +func _cancel_sitting_for_jump() -> void: + if not _sitting and not _sit_after_landing: + return + _sit_after_landing = false + _set_sitting(false, local_control_enabled) + + func get_network_sitting_state() -> bool: return _sitting func get_network_sitting_intent() -> bool: + # Jumping is an explicit cancellation of both a current sit and a deferred + # sit. Input capture can run before the matching physics frame, so suppress + # the stale seated bit as soon as the reliable jump intent is queued. + if _local_network_jump_intent_pending: + return false return _sitting or _sit_after_landing @@ -2352,6 +2367,21 @@ func apply_local_prediction_correction( _local_prediction_hard_corrections += 1 _reset_local_prediction_error() return + if _should_defer_local_prediction_correction(parsed): + # A host and its client do not reach the apex or landing on the same + # frame. Correcting that expected vertical disagreement while either + # side is airborne can pull the local body off narrow platforms. + _reset_local_prediction_error() + return + # Both simulations agree the player is standing. Let ordinary floor motion + # and gravity resolve the vertical component; a stale height sample must not + # press a locally controlled player down or turn a horizontal correction + # into an early floor collision. + error_offset.y = 0.0 + error_distance = error_offset.length() + if error_distance <= LOCAL_PREDICTION_CORRECTION_THRESHOLD: + _reset_local_prediction_error() + return var error_direction: Vector3 = error_offset.normalized() if ( not _local_prediction_error_direction.is_zero_approx() @@ -2386,22 +2416,34 @@ func apply_local_prediction_correction( correction.normalized() * LOCAL_PREDICTION_MAX_SOFT_CORRECTION_STEP ) - _apply_camera_safe_local_correction(correction) - _local_prediction_soft_corrections += 1 + if _apply_camera_safe_local_correction(correction): + _local_prediction_soft_corrections += 1 -func _apply_camera_safe_local_correction(correction: Vector3) -> void: +func _should_defer_local_prediction_correction(parsed: Dictionary) -> bool: + if not bool(parsed.get("grounded", true)): + return true + return _local_network_jump_intent_pending or not is_on_floor() + + +func _apply_camera_safe_local_correction(correction: Vector3) -> bool: if correction.is_zero_approx(): - return + return false var previous_visual_position: Vector3 = _visuals.global_position var previous_camera_position: Vector3 = _camera_yaw.global_position + var previous_body_position: Vector3 = global_position var base_visual_local_position: Vector3 = ( _visuals.position - _local_reconciliation_visual_offset ) var base_camera_local_position: Vector3 = ( _camera_yaw.position - _local_reconciliation_camera_offset ) - global_position += correction + # Reconciliation is still physical movement. Going through the physics + # server prevents a delayed host audit from placing the capsule through a + # tree, cliff, or stepping stone on the way to the authoritative position. + move_and_collide(correction) + if global_position.is_equal_approx(previous_body_position): + return false _visuals.global_position = previous_visual_position _camera_yaw.global_position = previous_camera_position _local_reconciliation_visual_offset = ( @@ -2410,6 +2452,7 @@ func _apply_camera_safe_local_correction(correction: Vector3) -> void: _local_reconciliation_camera_offset = ( _camera_yaw.position - base_camera_local_position ) + return true func _reset_local_prediction_error() -> void: @@ -2625,6 +2668,9 @@ func _parse_network_snapshot(snapshot: Dictionary) -> Dictionary: if snapshot.has("casting") and typeof(snapshot.get("casting")) != TYPE_BOOL: return {} var casting: bool = bool(snapshot.get("casting", false)) + if snapshot.has("grounded") and typeof(snapshot.get("grounded")) != TYPE_BOOL: + return {} + var grounded: bool = bool(snapshot.get("grounded", true)) if ( not parsed_position.is_finite() or not parsed_velocity.is_finite() @@ -2636,6 +2682,7 @@ func _parse_network_snapshot(snapshot: Dictionary) -> Dictionary: "velocity": parsed_velocity, "visual_yaw": visual_yaw, "animation_state": animation_state, + "grounded": grounded, "acknowledged_input": acknowledged_input, "sitting": sitting, "casting": casting, diff --git a/tests/movement_multiplayer_validation.gd b/tests/movement_multiplayer_validation.gd index c9af294..7073bea 100644 --- a/tests/movement_multiplayer_validation.gd +++ b/tests/movement_multiplayer_validation.gd @@ -37,7 +37,7 @@ func _validate_latency_smoothing() -> void: _validate_compact_animation_encoding() _validate_animation_action_ordering(avatar) _validate_transit_estimation() - _validate_remote_snapshot_smoothing(avatar) + await _validate_remote_snapshot_smoothing(avatar) _validate_remote_locomotion_playback_recovery(avatar) _validate_reliable_jump_intent(avatar) _validate_airborne_sitting(avatar) @@ -145,11 +145,20 @@ func _validate_compact_animation_encoding() -> void: func _validate_airborne_sitting(avatar: Player) -> void: avatar.reset_network_movement_state() + avatar.set_local_control(true) avatar.set("_sit_after_landing", true) assert(avatar.get_network_sitting_intent()) assert(not avatar.get_network_sitting_state()) assert(not bool(avatar.make_network_snapshot(2)["sitting"])) assert(bool(avatar.capture_network_input(1)["sitting"])) + avatar.call("_queue_local_network_jump_intent") + var jumping_input: Dictionary = avatar.capture_network_input(2) + assert(bool(jumping_input["jump"])) + assert(not bool(jumping_input["sitting"])) + avatar.call("_cancel_sitting_for_jump") + assert(not bool(avatar.get("_sit_after_landing"))) + assert(bool(avatar.get("_sitting_intent_pending"))) + avatar.reset_network_movement_state() # Even a malformed or stale reconciliation that marks an airborne avatar as # seated must not bypass gravity and freeze it in place. @@ -304,8 +313,24 @@ func _validate_remote_snapshot_smoothing(avatar: Player) -> void: ) assert(avatar.global_position.x <= maximum_extrapolated_x + 0.1) + # Reconciliation only applies after both simulations report a grounded body. + # Give the unit avatar a real floor so this exercises the production path. + var floor := StaticBody3D.new() + floor.collision_layer = 1 + floor.collision_mask = 0 + floor.position = Vector3(0.0, -0.1, 0.0) + var floor_shape := CollisionShape3D.new() + var floor_box := BoxShape3D.new() + floor_box.size = Vector3(100.0, 0.2, 100.0) + floor_shape.shape = floor_box + floor.add_child(floor_shape) + root.add_child(floor) + await physics_frame avatar.set_local_control(true) avatar.global_position = Vector3(0.8, 0.0, 0.0) + avatar.velocity = Vector3.DOWN + avatar.move_and_slide() + assert(avatar.is_on_floor()) avatar.apply_local_prediction_correction( moving_snapshot, 2, @@ -358,6 +383,42 @@ func _validate_remote_snapshot_smoothing(avatar: Player) -> void: int(avatar.get("_local_prediction_soft_corrections")) == 1 ) + # Host and client jump timing naturally differs. An airborne authoritative + # snapshot must not drag the local capsule sideways or down before landing. + avatar.global_position = Vector3(3.0, 0.0, 0.0) + avatar.velocity = Vector3(0.0, 1.0, 0.0) + var airborne_snapshot: Dictionary = drift_snapshot.duplicate(true) + airborne_snapshot["grounded"] = false + for _audit: int in 6: + avatar.apply_local_prediction_correction( + airborne_snapshot, + 20, + 1.0 / 30.0, + 0.0, + 0.1, + ) + assert(avatar.global_position.is_equal_approx(Vector3(3.0, 0.0, 0.0))) + assert(int(avatar.get("_local_prediction_soft_corrections")) == 1) + avatar.velocity = Vector3.ZERO + + # The local body may reach its apex after the host has already landed. The + # local airborne state still owns presentation and must not be pulled toward + # the host until it has landed too. + avatar.global_position = Vector3(3.0, 2.0, 0.0) + avatar.velocity = Vector3.ZERO + avatar.move_and_slide() + assert(not avatar.is_on_floor()) + for _audit: int in 6: + avatar.apply_local_prediction_correction( + drift_snapshot, + 20, + 1.0 / 30.0, + 0.0, + 0.1, + ) + assert(avatar.global_position.is_equal_approx(Vector3(3.0, 2.0, 0.0))) + assert(int(avatar.get("_local_prediction_soft_corrections")) == 1) + # Genuine divergence still recovers immediately, as do the separate reliable # teleport and water-recovery paths used by gameplay transitions. avatar.global_position = Vector3(10.0, 0.0, 0.0) @@ -373,6 +434,45 @@ func _validate_remote_snapshot_smoothing(avatar: Player) -> void: int(avatar.get("_local_prediction_hard_corrections")) == 1 ) + # Soft reconciliation must respect the same terrain collision as ordinary + # player movement instead of phasing the capsule through a solid obstacle. + var blocker := StaticBody3D.new() + blocker.collision_layer = 1 + blocker.collision_mask = 0 + blocker.position = Vector3(1.0, 1.0, 0.0) + var blocker_shape := CollisionShape3D.new() + var blocker_box := BoxShape3D.new() + blocker_box.size = Vector3(0.2, 4.0, 4.0) + blocker_shape.shape = blocker_box + blocker.add_child(blocker_shape) + root.add_child(blocker) + await physics_frame + avatar.global_position = Vector3.ZERO + avatar.velocity = Vector3.ZERO + avatar.call("_clear_local_reconciliation_offsets") + var blocked_visual_position: Vector3 = ( + avatar.get_node("Visuals") as Node3D + ).global_position + var blocked_camera_position: Vector3 = ( + avatar.get_node("CameraYaw") as Node3D + ).global_position + assert(bool(avatar.call( + "_apply_camera_safe_local_correction", + Vector3(2.0, 0.0, 0.0), + ))) + assert(avatar.global_position.x > 0.0 and avatar.global_position.x < 0.6) + assert( + (avatar.get_node("Visuals") as Node3D).global_position + == blocked_visual_position + ) + assert( + (avatar.get_node("CameraYaw") as Node3D).global_position + == blocked_camera_position + ) + blocker.queue_free() + floor.queue_free() + await physics_frame + func _validate_remote_locomotion_playback_recovery(avatar: Player) -> void: avatar.configure_network_remote(false) From 046f5e0fdb527bc58ac2b5be787a613f14a854a9 Mon Sep 17 00:00:00 2001 From: Voyager Date: Tue, 25 Aug 2026 02:05:52 -0400 Subject: [PATCH 65/90] fix clam surface spawn validation --- network/network_world_spawn_service.gd | 21 ++- tests/digging_prototype_validation.gd | 42 ++++-- world/digging/diggable_area_3d.gd | 161 +++++++++++++++++++-- world/generation/generated_world_region.gd | 1 + world/test_world.gd | 10 ++ 5 files changed, 208 insertions(+), 27 deletions(-) diff --git a/network/network_world_spawn_service.gd b/network/network_world_spawn_service.gd index b27dd80..a45ad37 100644 --- a/network/network_world_spawn_service.gd +++ b/network/network_world_spawn_service.gd @@ -518,7 +518,12 @@ func _sample_surface_position( ) if triangles.is_empty() or total_area <= 0.0: return Vector3(INF, INF, INF) - var attempts: int = 48 if is_finite(maximum_distance) else 1 + var validates_diggable_surface := not entry.diggable_area_id.is_empty() + var attempts: int = ( + 48 + if validates_diggable_surface or is_finite(maximum_distance) + else 1 + ) var fallback: Vector3 = Vector3(INF, INF, INF) for _attempt: int in attempts: var roll: float = _rng.randf() * total_area @@ -534,12 +539,22 @@ func _sample_surface_position( + triangle[2] * barycentric_c ) fallback = point - if ( + var within_requested_distance := ( not is_finite(maximum_distance) or Vector2(point.x - origin.x, point.z - origin.z).length() <= maximum_distance - ): + ) + var valid_diggable_surface := ( + not validates_diggable_surface + or _world.is_diggable_surface_point_valid( + entry.diggable_area_id, + point, + ) + ) + if within_requested_distance and valid_diggable_surface: return point + if validates_diggable_surface: + return Vector3(INF, INF, INF) if origin.is_finite() and is_finite(maximum_distance): return origin return fallback diff --git a/tests/digging_prototype_validation.gd b/tests/digging_prototype_validation.gd index 21f8629..95917a0 100644 --- a/tests/digging_prototype_validation.gd +++ b/tests/digging_prototype_validation.gd @@ -14,11 +14,11 @@ const Gatherables: GatherableCatalog = preload( class PrimaryTerrainProvider: extends Node3D - var primary_mesh: MeshInstance3D + var primary_meshes: Array[MeshInstance3D] = [] func get_primary_terrain_meshes() -> Array[MeshInstance3D]: - return [primary_mesh] if primary_mesh != null else [] + return primary_meshes func _initialize() -> void: @@ -98,9 +98,17 @@ func _validate_primary_terrain_provider() -> void: var provider := PrimaryTerrainProvider.new() provider.name = "Provider" fixture.add_child(provider) - provider.primary_mesh = _flat_sand_triangle(0.0) - provider.add_child(provider.primary_mesh) - var buried_base := _flat_sand_triangle(10.0) + var clear_sand := _flat_surface_triangle(0.0, 0.0, &"sand") + var covered_sand := _flat_surface_triangle(10.0, 0.0, &"sand") + var covering_grass := _flat_surface_triangle(10.0, 0.01, &"grass_lite") + for mesh_instance: MeshInstance3D in [ + clear_sand, + covered_sand, + covering_grass, + ]: + provider.add_child(mesh_instance) + provider.primary_meshes.append(mesh_instance) + var buried_base := _flat_surface_triangle(20.0, 0.0, &"sand") buried_base.name = "BuriedSandBase" provider.add_child(buried_base) var area := DiggableArea3D.new() @@ -111,28 +119,34 @@ func _validate_primary_terrain_provider() -> void: area.generation_bounds = Rect2(-20.0, -20.0, 40.0, 40.0) fixture.add_child(area) var triangles := area.get_surface_triangles() - assert(triangles.size() == 1) - var center := (triangles[0][0] + triangles[0][1] + triangles[0][2]) / 3.0 - assert(center.x < 2.0) + assert(triangles.size() == 2) + var clear_center := Vector3(1.0 / 3.0, 0.0, 1.0 / 3.0) + var covered_center := Vector3(10.0 + 1.0 / 3.0, 0.0, 1.0 / 3.0) + assert(area.is_surface_point_valid(clear_center)) + assert(not area.is_surface_point_valid(covered_center)) fixture.free() -func _flat_sand_triangle(x_offset: float) -> MeshInstance3D: +func _flat_surface_triangle( + x_offset: float, + height: float, + material_name: StringName, +) -> MeshInstance3D: var arrays: Array = [] arrays.resize(Mesh.ARRAY_MAX) arrays[Mesh.ARRAY_VERTEX] = PackedVector3Array([ - Vector3(x_offset, 0.0, 0.0), - Vector3(x_offset, 0.0, 1.0), - Vector3(x_offset + 1.0, 0.0, 0.0), + Vector3(x_offset, height, 0.0), + Vector3(x_offset, height, 1.0), + Vector3(x_offset + 1.0, height, 0.0), ]) arrays[Mesh.ARRAY_INDEX] = PackedInt32Array([0, 1, 2]) var mesh := ArrayMesh.new() mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays) var material := StandardMaterial3D.new() - material.resource_name = "sand" + material.resource_name = str(material_name) mesh.surface_set_material(0, material) var mesh_instance := MeshInstance3D.new() - mesh_instance.name = "PrimarySand" + mesh_instance.name = "Primary%s" % str(material_name).capitalize() mesh_instance.mesh = mesh return mesh_instance diff --git a/world/digging/diggable_area_3d.gd b/world/digging/diggable_area_3d.gd index 47270b1..4290b44 100644 --- a/world/digging/diggable_area_3d.gd +++ b/world/digging/diggable_area_3d.gd @@ -2,6 +2,10 @@ class_name DiggableArea3D extends Node3D +const SURFACE_HEIGHT_TOLERANCE := 0.015 +const SURFACE_BOUNDS_TOLERANCE := 0.001 +const MINIMUM_VALIDATION_UP_DOT := 0.01 + @export var area_id: StringName @export_node_path("Node3D") var terrain_source: NodePath @export var surface_materials: Array[StringName] = [] @@ -10,9 +14,14 @@ extends Node3D @export_range(-100.0, 100.0, 0.01) var maximum_global_y: float = 100.0 @export_range(0.0, 1.0, 0.01) var minimum_up_dot: float = 0.6 +var _surface_validation_groups: Array[Dictionary] = [] +var _surface_validation_ready := false + func get_surface_triangles() -> Array[PackedVector3Array]: var triangles: Array[PackedVector3Array] = [] + _surface_validation_groups.clear() + _surface_validation_ready = false if area_id.is_empty() or surface_materials.is_empty(): return triangles var terrain_root: Node = get_node_or_null(terrain_source) @@ -22,25 +31,90 @@ func get_surface_triangles() -> Array[PackedVector3Array]: var mesh: Mesh = mesh_instance.mesh if mesh == null: continue + var validation_records: Array[Dictionary] = [] + var validation_bounds := Rect2() + var has_validation_bounds := false for surface_index: int in mesh.get_surface_count(): var material: Material = mesh_instance.get_active_material(surface_index) - if ( - material == null - or not surface_materials.has(StringName(material.resource_name)) - ): - continue + var allowed_surface := ( + material != null + and surface_materials.has(StringName(material.resource_name)) + ) _append_surface_triangles( triangles, + validation_records, mesh_instance, mesh.surface_get_arrays(surface_index), + allowed_surface, ) + for record: Dictionary in validation_records: + var record_bounds: Rect2 = record.get("bounds", Rect2()) + if not has_validation_bounds: + validation_bounds = record_bounds + has_validation_bounds = true + else: + validation_bounds = validation_bounds.merge(record_bounds) + if not validation_records.is_empty(): + _surface_validation_groups.append({ + "bounds": validation_bounds, + "records": validation_records, + }) + _surface_validation_ready = true return triangles +func invalidate_surface_cache() -> void: + _surface_validation_groups.clear() + _surface_validation_ready = false + + +func is_surface_point_valid(point: Vector3) -> bool: + if not point.is_finite(): + return false + if not _surface_validation_ready: + get_surface_triangles() + var sample := Vector2(point.x, point.z) + var highest_y := -INF + var highest_is_allowed := false + var found_surface := false + for group: Dictionary in _surface_validation_groups: + var group_bounds: Rect2 = group.get("bounds", Rect2()) + if not group_bounds.grow(SURFACE_BOUNDS_TOLERANCE).has_point(sample): + continue + var records: Array = group.get("records", []) + for record: Dictionary in records: + var record_bounds: Rect2 = record.get("bounds", Rect2()) + if not record_bounds.grow(SURFACE_BOUNDS_TOLERANCE).has_point(sample): + continue + var triangle := record.get( + "triangle", PackedVector3Array() + ) as PackedVector3Array + var surface_y := _surface_height_at_point(triangle, sample) + if not is_finite(surface_y): + continue + var allowed := bool(record.get("allowed", false)) + if surface_y > highest_y + SURFACE_HEIGHT_TOLERANCE: + highest_y = surface_y + highest_is_allowed = allowed + found_surface = true + elif absf(surface_y - highest_y) <= SURFACE_HEIGHT_TOLERANCE: + # Material seams may expose coplanar grass and sand triangles. + # Treat any tied disallowed surface as authoritative so a dig + # hotspot can never appear in visually grassy terrain. + highest_is_allowed = highest_is_allowed and allowed + return ( + found_surface + and highest_is_allowed + and absf(highest_y - point.y) <= SURFACE_HEIGHT_TOLERANCE + ) + + func _append_surface_triangles( result: Array[PackedVector3Array], + validation_records: Array[Dictionary], mesh_instance: MeshInstance3D, arrays: Array, + allowed_surface: bool, ) -> void: if arrays.size() <= Mesh.ARRAY_INDEX: return @@ -52,26 +126,49 @@ func _append_surface_triangles( for vertex_index: int in range(0, vertices.size() - 2, 3): _append_triangle( result, + validation_records, mesh_instance.to_global(vertices[vertex_index]), mesh_instance.to_global(vertices[vertex_index + 1]), mesh_instance.to_global(vertices[vertex_index + 2]), + allowed_surface, ) return for index_offset: int in range(0, indices.size() - 2, 3): _append_triangle( result, + validation_records, mesh_instance.to_global(vertices[indices[index_offset]]), mesh_instance.to_global(vertices[indices[index_offset + 1]]), mesh_instance.to_global(vertices[indices[index_offset + 2]]), + allowed_surface, ) func _append_triangle( result: Array[PackedVector3Array], + validation_records: Array[Dictionary], a: Vector3, b: Vector3, c: Vector3, + allowed_surface: bool, ) -> void: + var cross := (b - a).cross(c - a) + if cross.length_squared() <= 0.0000001: + return + var up_dot := absf(cross.normalized().dot(Vector3.UP)) + var triangle := PackedVector3Array([a, b, c]) + var projected_bounds := _projected_bounds(triangle) + if ( + up_dot >= MINIMUM_VALIDATION_UP_DOT + and generation_bounds.intersects(projected_bounds, true) + ): + validation_records.append({ + "allowed": allowed_surface, + "bounds": projected_bounds, + "triangle": triangle, + }) + if not allowed_surface: + return if ( a.y < minimum_global_y or b.y < minimum_global_y @@ -84,12 +181,56 @@ func _append_triangle( var center := (a + b + c) / 3.0 if not generation_bounds.has_point(Vector2(center.x, center.z)): return - var cross := (b - a).cross(c - a) - if cross.length_squared() <= 0.0000001: + if up_dot < minimum_up_dot: return - if absf(cross.normalized().dot(Vector3.UP)) < minimum_up_dot: - return - result.append(PackedVector3Array([a, b, c])) + result.append(triangle) + + +static func _projected_bounds(triangle: PackedVector3Array) -> Rect2: + var minimum := Vector2(triangle[0].x, triangle[0].z) + var maximum := minimum + for index: int in range(1, triangle.size()): + var point := Vector2(triangle[index].x, triangle[index].z) + minimum = minimum.min(point) + maximum = maximum.max(point) + return Rect2(minimum, maximum - minimum) + + +static func _surface_height_at_point( + triangle: PackedVector3Array, + point: Vector2, +) -> float: + if triangle.size() != 3: + return INF + var a := Vector2(triangle[0].x, triangle[0].z) + var b := Vector2(triangle[1].x, triangle[1].z) + var c := Vector2(triangle[2].x, triangle[2].z) + var denominator := ( + (b.y - c.y) * (a.x - c.x) + + (c.x - b.x) * (a.y - c.y) + ) + if absf(denominator) <= 0.0000001: + return INF + var weight_a := ( + (b.y - c.y) * (point.x - c.x) + + (c.x - b.x) * (point.y - c.y) + ) / denominator + var weight_b := ( + (c.y - a.y) * (point.x - c.x) + + (a.x - c.x) * (point.y - c.y) + ) / denominator + var weight_c := 1.0 - weight_a - weight_b + if ( + weight_a < -SURFACE_BOUNDS_TOLERANCE + or weight_b < -SURFACE_BOUNDS_TOLERANCE + or weight_c < -SURFACE_BOUNDS_TOLERANCE + ): + return INF + return ( + triangle[0].y * weight_a + + triangle[1].y * weight_b + + triangle[2].y * weight_c + ) func _terrain_mesh_instances(terrain_root: Node) -> Array[MeshInstance3D]: diff --git a/world/generation/generated_world_region.gd b/world/generation/generated_world_region.gd index 8987caf..aa27a65 100644 --- a/world/generation/generated_world_region.gd +++ b/world/generation/generated_world_region.gd @@ -191,6 +191,7 @@ func get_spawn_surface_triangles( func _on_generation_completed(summary: Dictionary) -> void: + _diggable_beach.invalidate_surface_cache() var records: Array[Dictionary] = _generator.placement_records() _assign_biomes(records, summary) var spawn_position := Vector3.ZERO diff --git a/world/test_world.gd b/world/test_world.gd index d5ac83c..d9d18dc 100644 --- a/world/test_world.gd +++ b/world/test_world.gd @@ -207,6 +207,16 @@ func get_diggable_area_triangles( return [] +func is_diggable_surface_point_valid( + area_id: StringName, + point: Vector3, +) -> bool: + if _active_region == null: + return false + var area: DiggableArea3D = _active_region.get_diggable_area(area_id) + return area != null and area.is_surface_point_valid(point) + + func get_gatherable_spawn_positions( anchor_set_id: StringName, ) -> PackedVector3Array: From 0cc3ae970911fbbe4ff5dedefbe11d5a7a45d829 Mon Sep 17 00:00:00 2001 From: Voyager Date: Tue, 25 Aug 2026 02:05:52 -0400 Subject: [PATCH 66/90] add bulk staging to shop sales --- tests/economy_regression_validation.gd | 25 ++++-- ui/shop_sell_inventory.gd | 102 ++++++++++++++++++++++++- 2 files changed, 119 insertions(+), 8 deletions(-) diff --git a/tests/economy_regression_validation.gd b/tests/economy_regression_validation.gd index de0133b..ec80d1b 100644 --- a/tests/economy_regression_validation.gd +++ b/tests/economy_regression_validation.gd @@ -971,12 +971,21 @@ func _test_fishing_shop_sale_ui( reserved_catch.catch_id, ) assert(staged.is_empty()) - sell_inventory.call( - "_stage", - PlayerInventoryLayout.EntryKind.CATCH, - fish_catch.catch_id, + var sell_button := sell_inventory.get("_sell_button") as Button + var all_button := sell_inventory.get("_all_button") as Button + assert(sell_button != null and sell_button.text == "sell") + assert(all_button != null and all_button.text == "all") + assert(sell_button.get_parent() == all_button.get_parent()) + assert( + sell_button.size_flags_horizontal == Control.SIZE_EXPAND_FILL + and all_button.size_flags_horizontal == Control.SIZE_EXPAND_FILL ) + sell_inventory.call("_stage_all_eligible") assert(staged.has(PlayerInventoryLayout.catch_key(fish_catch.catch_id))) + assert(not staged.has( + PlayerInventoryLayout.catch_key(reserved_catch.catch_id) + )) + assert(all_button.disabled) assert((sell_inventory.get("_feedback") as Label).text.is_empty()) var source_grid := sell_inventory.get("_inventory_grid") as GeneralInventoryGrid var staged_source_found := false @@ -985,17 +994,19 @@ func _test_fishing_shop_sale_ui( staged_source_found = bool(source_slot.get("_staged")) break assert(staged_source_found) + var expected_all_payout := int(sell_inventory.call("_calculate_total")) + assert(expected_all_payout >= fish_catch.sale_value) var feedback := sell_inventory.get("_feedback") as Label var total_label := sell_inventory.get("_total_label") as Label - var sell_button := sell_inventory.get("_sell_button") as Button + var sale_buttons := sell_button.get_parent() as HBoxContainer assert(feedback.get_index() < total_label.get_parent().get_index()) - assert(total_label.get_parent().get_index() < sell_button.get_index()) + assert(total_label.get_parent().get_index() < sale_buttons.get_index()) _sale_result.clear() sell_inventory.call("_submit_sale") await process_frame assert(not _sale_result.is_empty() and bool(_sale_result[1])) assert(not player.inventory.contains_catch_id(fish_catch.catch_id)) - assert(player.wallet.get_balance() == balance_before + fish_catch.sale_value) + assert(player.wallet.get_balance() == balance_before + expected_all_payout) assert(not sale_service.is_local_sale_pending()) assert(reservations.release(reservation_id)) await _activate_pointer_control(shop_tabs[0] as Button, ui_viewport) diff --git a/ui/shop_sell_inventory.gd b/ui/shop_sell_inventory.gd index 9e39850..f46bc6d 100644 --- a/ui/shop_sell_inventory.gd +++ b/ui/shop_sell_inventory.gd @@ -15,6 +15,7 @@ var _tray_grid: GridContainer var _total_label: Label var _feedback: Label var _sell_button: Button +var _all_button: Button var _staged: Dictionary[String, Dictionary] = {} @@ -135,6 +136,67 @@ func _on_remove_requested(key: String) -> void: _refresh_tray() +func _stage_all_eligible() -> void: + if _layout == null: + return + var added_count := 0 + for entry: Dictionary in _layout.get_entries( + PlayerInventoryLayout.InventoryContainer.INVENTORY + ): + var kind := int(entry.get("kind", -1)) + var identity := StringName(str(entry.get("identity", ""))) + if identity.is_empty(): + continue + var key := ( + PlayerInventoryLayout.catch_key(identity) + if kind == PlayerInventoryLayout.EntryKind.CATCH + else PlayerInventoryLayout.item_key(identity) + ) + if _staged.has(key): + continue + var record := _eligible_staged_record(kind, identity) + if record.is_empty(): + continue + _staged[key] = record + added_count += 1 + _feedback.text = ( + "" + if added_count > 0 + else "no additional items are eligible for sale" + ) + _refresh_tray() + + +func _eligible_staged_record(kind: int, identity: StringName) -> Dictionary: + if kind == PlayerInventoryLayout.EntryKind.CATCH: + var fish_catch := _fish_inventory.get_catch_by_id(identity) + if ( + fish_catch == null + or fish_catch.is_favorited + or ( + _reservations != null + and _reservations.is_fish_reserved(identity) + ) + ): + return {} + return {"kind": kind, "identity": identity, "quantity": 1} + if kind != PlayerInventoryLayout.EntryKind.ITEM: + return {} + var item := _item_catalog.get_item_by_id(identity) + if not ItemResalePolicy.is_sellable(item): + return {} + var available := _bag.get_quantity(identity) + if _reservations != null: + available = _reservations.get_available_item_quantity(identity) + if available < 1: + return {} + return { + "kind": kind, + "identity": identity, + "quantity": available, + } + + func _submit_sale() -> void: if _staged.is_empty() or _network_sale == null: return @@ -154,6 +216,7 @@ func _submit_sale() -> void: func _on_sale_pending(_request_id: String) -> void: _sell_button.disabled = true + _all_button.disabled = true _feedback.text = "selling…" @@ -243,6 +306,10 @@ func _refresh_tray() -> void: or _network_sale == null or _network_sale.is_local_sale_pending() ) + _all_button.disabled = ( + _network_sale != null + and _network_sale.is_local_sale_pending() + ) or not _has_unstaged_eligible_entries() call_deferred("_configure_focus") @@ -268,9 +335,32 @@ func _configure_focus() -> void: if control != null and control.focus_mode != Control.FOCUS_NONE: controls.append(control) controls.append(_sell_button) + controls.append(_all_button) ControllerFocusNavigation.configure_spatial_neighbors(controls) +func _has_unstaged_eligible_entries() -> bool: + if _layout == null: + return false + for entry: Dictionary in _layout.get_entries( + PlayerInventoryLayout.InventoryContainer.INVENTORY + ): + var kind := int(entry.get("kind", -1)) + var identity := StringName(str(entry.get("identity", ""))) + var key := ( + PlayerInventoryLayout.catch_key(identity) + if kind == PlayerInventoryLayout.EntryKind.CATCH + else PlayerInventoryLayout.item_key(identity) + ) + if ( + not identity.is_empty() + and not _staged.has(key) + and not _eligible_staged_record(kind, identity).is_empty() + ): + return true + return false + + func _calculate_total() -> int: var total: int = 0 for record: Dictionary in _staged.values(): @@ -347,9 +437,19 @@ func _build_ui() -> void: total_row.add_child(_total_label) _sell_button = Button.new() _sell_button.text = "sell" + _sell_button.size_flags_horizontal = Control.SIZE_EXPAND_FILL UtilityPageStyle.apply_ocean_button(_sell_button) _sell_button.pressed.connect(_submit_sale) - (tray as VBoxContainer).add_child(_sell_button) + var sale_buttons := HBoxContainer.new() + sale_buttons.add_theme_constant_override("separation", 8) + (tray as VBoxContainer).add_child(sale_buttons) + sale_buttons.add_child(_sell_button) + _all_button = Button.new() + _all_button.text = "all" + _all_button.size_flags_horizontal = Control.SIZE_EXPAND_FILL + UtilityPageStyle.apply_ocean_button(_all_button) + _all_button.pressed.connect(_stage_all_eligible) + sale_buttons.add_child(_all_button) func _build_panel(parent: HBoxContainer, title_text: String) -> VBoxContainer: From aaa5803e6b8074a72263dc3998c4e78e287a315f Mon Sep 17 00:00:00 2001 From: Voyager Date: Tue, 25 Aug 2026 02:05:52 -0400 Subject: [PATCH 67/90] repair generated terrain seams --- tests/generated_world_runtime_validation.gd | 2 +- tests/terrain_chunk_generator_validation.gd | 4 +++- world/generation/chunks/assets/chunk_0003.glb | Bin 24348 -> 23432 bytes world/generation/chunks/assets/chunk_0004.glb | Bin 25744 -> 25712 bytes world/generation/chunks/assets/chunk_0016.glb | Bin 26200 -> 25284 bytes world/generation/chunks/assets/chunk_0018.glb | Bin 26528 -> 26528 bytes world/generation/chunks/assets/chunk_0020.glb | Bin 25852 -> 25852 bytes world/generation/chunks/assets/chunk_0021.glb | Bin 26724 -> 26724 bytes world/generation/chunks/assets/chunk_0022.glb | Bin 26292 -> 26292 bytes world/generation/chunks/assets/chunk_0024.glb | Bin 28544 -> 28528 bytes world/generation/chunks/assets/chunk_0025.glb | Bin 30760 -> 30740 bytes world/generation/chunks/assets/chunk_0029.glb | Bin 36644 -> 36632 bytes world/generation/chunks/assets/chunk_0030.glb | Bin 36648 -> 36636 bytes world/generation/chunks/assets/chunk_0031.glb | Bin 38052 -> 38036 bytes world/generation/chunks/assets/chunk_0032.glb | Bin 38052 -> 38036 bytes world/generation/chunks/assets/chunk_0033.glb | Bin 25700 -> 25664 bytes world/generation/chunks/assets/chunk_0034.glb | Bin 30680 -> 30680 bytes world/generation/chunks/assets/chunk_0035.glb | Bin 30292 -> 30276 bytes world/generation/chunks/assets/chunk_0036.glb | Bin 29524 -> 29268 bytes world/generation/chunks/assets/chunk_0037.glb | Bin 27592 -> 27580 bytes world/generation/chunks/assets/chunk_0038.glb | Bin 36704 -> 36896 bytes .../chunks/definitions/chunk_9996.tres | 4 ++-- .../chunks/definitions/chunk_9997.tres | 4 ++-- .../chunks/definitions/chunk_9998.tres | 4 ++-- .../chunks/definitions/chunk_9999.tres | 4 ++-- 25 files changed, 12 insertions(+), 10 deletions(-) diff --git a/tests/generated_world_runtime_validation.gd b/tests/generated_world_runtime_validation.gd index adec70b..f487ae7 100644 --- a/tests/generated_world_runtime_validation.gd +++ b/tests/generated_world_runtime_validation.gd @@ -872,7 +872,7 @@ func _validate_elevated_cliff_feature( var overlay_mesh := TerrainChunkAnalyzer.find_primary_mesh( overlay, ( - &"chunk_0015" + &"chunk_0010" if stable_id in [ &"chunk_9999", &"chunk_9998", diff --git a/tests/terrain_chunk_generator_validation.gd b/tests/terrain_chunk_generator_validation.gd index a46d1d7..ec736d9 100644 --- a/tests/terrain_chunk_generator_validation.gd +++ b/tests/terrain_chunk_generator_validation.gd @@ -629,13 +629,14 @@ func _validate_catalog() -> void: ]: _check( transition.overlay_only + and transition.primary_mesh_name == &"chunk_0010" and transition.base_layer_scene != null and transition.base_layer_mesh_name == &"chunk_0007" and not transition.must_be_interior and transition.prefers_map_boundary and "transition" in transition.tags, ( - "Each raised-coast endpoint must layer the deep corner " + "Each raised-coast endpoint must layer the inland corner " + "over an authored level-one coastline." ), ) @@ -657,6 +658,7 @@ func _validate_catalog() -> void: ]: _check( transition.overlay_only + and transition.primary_mesh_name == &"chunk_0010" and transition.base_layer_scene != null and transition.base_layer_mesh_name == &"chunk_0008" and not transition.must_be_interior diff --git a/world/generation/chunks/assets/chunk_0003.glb b/world/generation/chunks/assets/chunk_0003.glb index 815aa8fcd40ae77b0e36737822df0caa64a46dd2..bb67914c315ec82a94d56dbfb06f2fb4a1fba3c5 100644 GIT binary patch delta 1634 zcmb7EU1-x#6uxcKF8x{8WE~R*v-ZXPw3?)Cn$4L6!NDAMRb($i)WIggCKCtU1|vm% zDEcB?5rrvz+1rFkQHPsLA2uIk=oBAR6d!yOVS7~=c#L|Q$1TT-B>vbZ83PT8e^*;?3h*pk`MaM5qMZ1TXBLbUX6A4ye*d&`wcE#ceyhcPE z2~2sSxY>Qs$+7r1(TWFkSjxFSIgI3ux^FHn#o=MHD-1ps9iE;X85kYCJ~A2Y))Lpq zjxfs$yAvrUsU`3MFXiIX9FBW?TmsAEJlTQ^UW(w8jGz+=UfKz8g6zZ|A4R0o6-9g! zHUh^maIyp6^3g7VPhf?NyV+!yPC4dgQz@<@@|mOwp0!HCCMgK|$!GpXg69()-tcD> zCcz7{=Vv34y8{TF=*vL6w4Yo?s3>d5z-5FYYBg?QEiTzOCYG<>K4b7vKE1wV;f)9H zdn$aCM@RvEy;wvOGDtd>%=pf{EE-sLKKZ_CVx>K6a^$Uxhm5mDDYsa(a51;IT;Ug` z>IW57>x2BLsJ?9P)kRB8r^n%xWxN(*aF`0=80Eu*R1l9*B)$jx1@Iri{{kPTLy8Z1 zkpuZ)xd8bQ0hWMW1ELTKmP8&D0xJ{$8x4RBpn5=V6a*X8 zcL6wE4=V(_AgBglHGq-_PS=INGy)_+)&q+!Ez{%aHsii>wV%Z@V53)6jI*Z%gIs$; z=CtslMXo(5vkDINo63=zBQwW`CoFR9*_m_1oBe`fT(CMs+YI5=TJzNK&qp)rmmgVp zK=2o^J*~d$%ZgVD_g?{)4163ol8y7vxJ^gdCG^&rQ~3|4#jV3}@$sD*b^T3Nd@jCT zncB`t7v?i!%ju?7dx2W=WN3Wa*f3$=)HG zj%x2#lTt0bJ5l}8y+T$2dxz`=>|NO>uInh!3Tcm!SwOY7(I)iY9kT2EX?B(KEAF0+ NIavl@x|w+x`U}_!1wjA+ delta 2913 zcmbVNU1%It6h6sLnoZKA*`!Hr8@to3nxAggouACi*4>>kNUYJuT2v5GQ?V7ql<20$ zl9XAC(jt_C^PmYq*9R2}#imh|Hrd$}G(MD4D}tgT;)D9s#{X6X&&=GJx!Gis)IiSp z?z!Ln&d)Aqk9|}&kuR%z`q>A2$^oF|34r>wlXb_Kn5aY}1AAYL?07UDQ#gSW1Wt)_ zA}5N8XeSp-hzhSrvdqb{$R~K?1BMOpvA86PA}1;FL|ozHf-zqaG5%u0#`Be|AytHp zGnMSr!HTnGp~V6gbx-AYfi77x_+Vl^`e@|ILqq%S-@iYzZz!_Ey0|mgVU*W21h_8V z#yDk^VN+3#St)$R5vh^fXzE)H3kxr;+G{0UB>m`cH>A*BO_bS$7=d?ju-gD zj~!-N_Uayh?tA)h=m3|(OaUOLmB4uCaS*fS3wy7b4&TF8TqSWDYX@F^z;yH>dqAfT zC9wR-$0Pw{X?)?0&y!99$kG^VBMq>aczLX2l}K`{UW7>pcHG1NzN4j`4p?n9xct=j zd8bfTqp{w;TX#h@Jb3s@|5h@hoVpr3d^%^6QL8l04WB;e#%b(-1bWW&52dj`_MA!M zv+X^kvz$re%=$ahg_9%d!J+;n;yl6ANsKd-BdYbWAkH&7InWOlk$ldQLVu#@-0LIi zT+a{Ff6RyT17D4*sS|9H{XLxD_2sBKIozM5HEF(H>OuExB7NrPL+UrXeoN7hF`g&! z8M^~g-2de3R)QJ2dn!SS9vzk7hWT{Ibi>`Vy4OvLPEh*6lKce|qQ_1(Gehb7d;z}* zr5;#c5&%uJo#(Tr@po-p|Ml(n@&H-2*k8NUh?^*@x_MGr^L(0| zZU5Ak@f4nQjete|;#J-f&|E)u^j+(r=K4oAy@dA#wUmz@2W+6Ax;`7NJ!hR=?=-9f z>3p$wItMZVP(M5R<_s3#`6dWKIW*ya1vJ72Sc7&A1Rw&pK^@vUsD@i%D^#Jaf?C)P zw?i}9W@vyYv_U=E`d(NM461HKyAf`NGN^75VHPXBoCbLz><YVM5c;PhII9tN#y}780fa diff --git a/world/generation/chunks/assets/chunk_0004.glb b/world/generation/chunks/assets/chunk_0004.glb index 4756e0f4996c041953fdd45c15098ea138c909b6..fa093c0ecf014c1c722d16f781d55c1b88fc5164 100644 GIT binary patch delta 198 zcmbPmlJUa{M&9(C5H}_U28MzZ28J6Od2g{WnZ{1;WtZP9!K%arV`sA;WtC=NSa5)W zL18}wg9DHTv+bem$^AZ(n^Sltq?myQZLU|3WK;pF0Lp>@SmgmQ6U<%!Gywz_9N4U& dxqxZ%0$!EP2ehXs=%Z>uD8pgt=4KyW2>^_9GV=fc delta 229 zcmexxf^ou0M&9(C5H}_U28IbK3=BUu^4?+*GSRaH15+boLo*`_6QkJ4x$N?rIarmL zaLIYIA7z#P|9}30|NrIpGcY&+X)xO!%ATC>Be~gyS3-(8@>${Lc=bp|6`%^BECT~n niso}!?Ssso`4hn<^~eRw4Ry82(S diff --git a/world/generation/chunks/assets/chunk_0016.glb b/world/generation/chunks/assets/chunk_0016.glb index 7953824a70bce8856e0aa2625a0e69aa444b8f88..dbf51a35689729850e59a0fc28dd430fd7292143 100644 GIT binary patch delta 1773 zcmaJ=YiJZ#6u$e+W*>R%ZZUAZov=vbyRYVu@kM687f`YC{K}8f>1O@R&M4_c1_T0NWdbf7G?7ipAchCLK zx#xa+|E6vHnk~@1Wz~E;LTG#wLUrc?dz=x0Z;EZ*_+6}J1K%8%MUj(|GS8*t6fZQ* zjN@@<)E39X71MB?D`FRTe6%8h*SMw-H{yw854c|2Xuw;CkQDHUM-GE+if!ua?OfW` z)zjGzz(wW5?Jxl!H_<0&bd?43L38G8_>X(S3`8OvtN(6~C`s^%qgI#@ z2(Aqco+P+dcjt3uU}8-D$vrpsdiQ;Gal2O~_UV-4Y5SipmGDcw7nFrt9xB9oQ6;h= zFH8q`J{>v1IN`Gz)glk99^^(fV9Dx66)1?p$Oo$r;zD4_S_uT?ui}T*j{@MiP!+6I z^ve&Y12Ajgs|r~CFsp&d4W|iT2s{t4x?$RaSeJgu9t;)I^>CYfQ7Rvo1paZkM1w!3 z2U8pPMJX8G9N10fa$NvUpA9csQDg?dQXr;S@aa-8QG}IJOx0ljN=YXd1Z6OiDN_uq z9wYYUc4Kt#u#%1cm7bIM#z^iRP{Mt_oU5Zp-R2)rKHJ=V`T3C@>VqfCs6MQ4hDR?W zx^Z`#vGc@`(s?VTeE)NgaenF%C9?kaOV8JSt1fTW6?fxc`q-6zwQqg}O<;vv@fi7T zBlh*EvSRX}QY=C*-iEC@+3|zgVsBK!k?FIo@DGWKJjdGB8Z+v5C{emWaI>+eWr4>=RhwRy_Yqa^y3YT(fVE MXd2k8v3jWHU!(mjg8%>k delta 2810 zcmb7FeQZ-z6hB+rwd-8FFQ8!Ex-qt~&%W2!_BFKc){z+rZhZJPG@B)eL>xi_L)qNk zm?EH=np|{_fGFrp%#6VBzwN!rrqP59QIthzhLW(5Ew~8Ap%J|AwXeC3Jsp4aoZmh7 zeE#ms>Cop1BWDs)H#IzTUm^h1J_Yc=iPZf@yvS_LXUaVRpU=&E1B}}r@H1>_8B@-) zoW~#V`aB*F<8yQPl+l&Omb-l%$1y(M9dPrk8$WH%$J54a++%iOpD71Vnq9q(rt1mm zOnHFgS>EUOGk!nE23Wk=d<)CgblhYqQMAG9_u*zsF-9pF2FA;(SR~l%@nLUrFi9!W zQi@kw7UHwXnFiJ$b$LBG!^r!XXsq3ukr?o)DQm3hCWefl1Q+8DYi1I|@_a18Eo-KM z%%|3ntt0`%bMfLlX+&v?6gLJKj>B)Jgp2_ajK5E*5j}2}YpH8-O|1i{Tv0=~1Nb_} zH~{c&SO=54xDUZDdFT2Ya@0SL6+4RAX&k;dzEaq_VOow9Jrg2Wqz|*=w(784wdaZ& zK;w*|lSs4EnDiDKz(orG9~KoSt?S!xYy#CD$A5ni7NQKf!gIliACE~kO!ue^DRvrbPtf1}wk*;IJ*?4Q z*EuZH_>;l?Y5~Pg`+~%7JkgAlXCYW3SX2*mz${LhPdrh| zmg&%swpR51g=2kr1lyghs?UUJtiQ9d6;=OH8N6y4>o@OeMe7d_Ez|cGXAk(M-6K3+ z)r4+VTFFn++0yZ6`t<^oj|3nbR#jZL$(Xab zotJZtg?3N1qnY~Pg)Rw4Y+1odgB>Xj(dhq@ZBq0$t_9p?%W^)MeK15W!ZY>o6f5C3 zNQJJw-GbuaIJZRDJ#`xC>5io3()AZdkfy66R)mk+vP7l##Gg&-4765e;CFl~XnJMC zsGyuRJrB|$5$2Jf2{K^;BoUbe2FQZ~uoG#A6vzh`SctU1T~GoQFrUczkO5_|6w-)H zgRJ|(NZNN0=>R7rfEjX#%z?Y%9#{yuMCQU0SOnQnNMs=_hEzy~A|i{R6s%x_aw5y2 z7*B9VdK1%zLq&7_AHdVqe37=hwS}VmA<%nV!??DFFOBWbff>6xzLSYPj`6la2R>ip zjI}e%(w(t$v11iqdM67M4-`4@fmKdX37YFtoGjQVr~Wc3yyv+bdbn@196T~0>|-s` zrS6TWV(_9c`D{)9mDAf1yZMmvU4fpR$|L?OQFkOF|CKNswH{be9c=?^Jp`*1;=vU(-Y5_gFUY^dnTKV|38-ndzy%23ej7~#${d@2^^xLVI zgz@hd_vzVhPZZ7b*tWHDN$#NV#L*FnW@ydmqv(|mGwP|7LNqIDM4b!0M6{h|h%P|0 sqG#9gh)Sn)B6>2KMw%7+3H0oGdH!5r7-;J=1#tqL|c`Xbr%}tCAP0dVuz|%nS?*Ca3c#g6PfNJX59APZ=%)Dp=qEQUlU} zgFQK3U2=1R`VU6Ems`^88dfsdiMW>A&&yS}(@gzqceyeOg^f@%xlMDG8?v%9cb)b* rFaK_*vpLEhp{(3K=T*zT_O>0i(yC=RjM`kL<)_9BbnoWl0XM|})!1a| delta 278 zcmZ2*o^io>#tqL|`3#H=ER9W#EX+;JO-(H)Z)cI;EX*d%$ZKh6VQy$-W@u_@W@Z5t zR@fZEeuahqo%i|uR^Au(GXTNg=kq6<^XM{%-JCx;okx*b`O*B%-8@sJ)NlM;3skVc z0i+0|0mQaBzkDx8+i7I>?Q>rK-A-q7ls!UOxqZ&7mVNDQJ8Y#@%WxRAxlGGXjTz|P&Bp_7 GiU9!Ot80J& diff --git a/world/generation/chunks/assets/chunk_0020.glb b/world/generation/chunks/assets/chunk_0020.glb index 831fa494de8974f56de947a209179b506a24a7a3..3a1894fdc983e3cbba9303bfb081928da312940e 100644 GIT binary patch delta 127 zcmex!lJU<;#tl1oSQr=lQT4NLB4>9Y2F qF4))ye(alUttrWc;7@MT_#}ql_SqrWoBK3>sW1bL*xc<`CjOD VeWs;`#N8~WeMl8-*6n~!aRBjbB&q-a delta 94 zcmaEIf$_-&#tlc*neBef-+Wv>l99)xj&pz5a+STuH-+z?9H1#N*+ugJ7ea6{pVm2K W?lUblB<^N0?L(?yvu+1;iUR=8ODWg@ diff --git a/world/generation/chunks/assets/chunk_0022.glb b/world/generation/chunks/assets/chunk_0022.glb index 84ff40e6cefc19e8eb4a73cfb61e60d6664b05a5..ea430c06154c82571117397e69858399cb8f12ed 100644 GIT binary patch delta 97 zcmdmTmT}8j#tk0o%nS?*HhZgUGIEJ;n!8Ur&T8*2x5;%HtCSGj;{E&cSogJRIPHDc aR=Xb|KG{oC4N2GLD$RGQVB@m=J;ed094G<+ delta 97 zcmdmTmT}8j#tk0o%yz%#Z}wK#WaM(&GZtaN7H> bt#&^`e6p9O8j`NfRhsWq!Nz6#dx`@9afB=w diff --git a/world/generation/chunks/assets/chunk_0024.glb b/world/generation/chunks/assets/chunk_0024.glb index 66a73ddde3ba5924225db998c9b4f252a96cd62c..3266df41dadd585dc84c96b9138ab0c2030ab05d 100644 GIT binary patch delta 346 zcmZp;&-mdUBX4?6h#M0F14BVR1B1p!-iNH*hL)CQmKK&qrUpivf3OBJGU`m`W>el= z%YKe!vJX!Pqxs~8Jj#sbn~(B*RseE#>RR)fpI^RrMah%{3=9hnFid9DGiL>|92hp+ z>V-3M6^Hiid%|F|_tJvN^Yp8@5!}+r)&`Q3Z47QGA&Kn|-#34s$ydw0l^=`tBg8kG z8QQ7ZGB7xR>~NTT#_j+kkZrrB3CLFfVu(1{emI)}2#~~q?h=*-y9+4#`*;6=qf62p zK&I?A1DoQ&F!^DaxGGG~y1YuT9jm)~faVt<+p(WvvTV3AFH9v+7O2-ZT%3_%b85J> F1ORJ)c0K?A delta 361 zcmexxkFnuCBX4?6h#M0F14BbT1B1mz-iNGQMkXdE21X_Z7G|4&vIa5=>KTB6k+Fq| zp@pfrrOsp?Hs#HE?B`e}Tl0i6+D@Lxqs(Z#c`MIn1t4dot~Iai`Q>|8luS9mz_8!| zHsdauy@$$k1&+z4*zWNib<$vOr%l#s;shwq!e z&*ZD+-pY?f`w`-s)eP-aZ5bIHKz2AxK4W(P#I{}21mr7#*&uPS{ZKUwKmbz@bC<9z z*j+#szkl~1IJzXw0ip4M#8qK>*5y@#&0XEq1GJ+6*^d2;lX=6Hd0{Gn RvOvAI;o^*pn?u8;B>;$xeHH)! diff --git a/world/generation/chunks/assets/chunk_0025.glb b/world/generation/chunks/assets/chunk_0025.glb index a0a0447592c8bd4932be25e774a951462f58e8df..0ff38e9a6964529e20181a82a25cb814316cfa0f 100644 GIT binary patch delta 1725 zcmZ`&Ye*DP6uzUuxD*S>dBibW>@4+>J`pg0!@v-5yGhrSj2((n_yX7AQz~ zr67AqOSll2GG*oNI7JWfPYw6m#OY$ ze0J>4O!hzs1r#D=YV=vfG6pV>{pCfis^wadM|ZBCxs6b*3F0`~rV0s)dsN5U_g70% z@%^uqG3V`b(=&3gDZ|(~MDXjcJx05&Dxr)acw2b`|Kg<@7j6y2^S-Ds!1TMHHl)Gl zO-s6048GRyi{W{|(+L06sUROm{DVDGKq3r+d|B_V=H`bbxH$hl5BXPZo=KJKjCjY+ z`J4Z*ZJO2ZBh!9*j>!QA60D>JqGaHLQipyC%t z8mZZ!r51xmy`n4#3mr3f>-sdog=x7VdX)UFDDO0U2mvXCdHEqNY*aj7vG<4ocsjID zTNR^O5Y7bQ+*S?$QGl7#gz2}RJ>*o|x`3PhnOT)gcCt}X7$>}le@ ziK`+lmh_tFu?_kaE>0)LlsLq-fQJ}~kD`}((YG+*nSQ1#t~0q|y3Y*bwb&JxF?E>r zOI=(6=mFwd!KE1=(=E{&x;uIfwOCY35YmA{6X62T>=;aMSYYG5AfJrskYy2BApU{J zpV=JQeRlq=j))rNDaET(&)-^eFe%Y?li*oXiX5euM*fmF!MQc7Ph^bH zSiPh<@rPi`-B71?<@?06yb^qL)3$htH+K^}|71IvDBye-yg#AmHNopsyPXgGG)bDE zVtnAa&FS9gPw@gT^{1M>l4BDYfndLL_nK=WRV{2qG5&kG#wiuk4G`Skl_FzBKdd1x z(e{3Vr`K7XO^559eV+;5Q?%FF;r)>Rbg=|~>1ve^;|~NkW`C2hqIcJfcVl5OQ7%%2my=#3x%Vw&nJu1iK~4Vo$at#nQ-tC}ywfnNndi8mTjIjbSGm z>$=r`x*MUUbcoYvM_^QV_~T}-Wmkhx?FLm5Gedzl6w9_9(XdO#2;QHmPCYu{O6}4R zeByfxCx0;)k3A2?CdW(+FzuafSh%FJ*EPQ{3D?Ng7(NeqnxNJ5-vl*i%9Ls&Dz9V*$lgD$))}NA{>8k%tu<$#ble2~a*VPa^ zHUw)#-GB7VvEVOqRUX=alqioL3h7ZfkqJ4`I+{}4$jA*ky)2Cy%qg>Aw(V^x^!?Td zy2q?nIYt}P`TtC#`G9PuV&yXTr`#Z}r-a5^Eg>!AVYsS4obzzmZh+}AtAQT3>eXKP z3VNUC9#{vX0Owv@9_3P*Q@A6QHEzJu4>kk+Xw%1oo^F#Y9GBhIbMM@fW&xhD*sEnK z6N*Lw$V8dMLRAb3K{044zv?-rV|nX>S^Og6X$j{gELpxaZmpLycKgRofQJ|%uU_Q& z&|;*(XrnoTM&}38^n7KQS7#LFPIwS8Ey|Ar^(O4CiCR9`^l%NnpnN~Y=t177_OOP{Dln%#aT7eOpUVbh z&vrfCQj6~^`bBf+zY?5NeObhk{;!63MdP0dme1&5Ga9b2+SdfPf4|8N>7H;S2kWrr zx{?#Nx%8CajYWD9OL||8zm0v9lQf9%O{M63MH3N;!=$KT5`rO#hp)+3BbkPYN~Vdw z&7{Hb0b!VQD*~2cgt0>np{Cf@X%5H}_U1_p_K1_p(Vyk^`?W=5NXxZkl&wihyF0ZK4zE)f!8;$E?M zl1(dPy?tuehRKsfY*F~PMLy~y$?sM1lHKihw$9%1`q8~5K2!I)@z&cvIcBvNNzLZp zqOQ`CAmb0NpMHRWVS$7B`Q>|8luUuJCr29IX9tNgFgR?sH`>dpbmNxT{)!aw{c3M` z_9L@jRqOAs72(4got2>L@UKa)P16*z%$}T|sf#35fMhQ+d%=E$xftxpw=)Bg%uv9= zEqRh|fdNxJNKMBye@kcY0a>Q-yWalNV|OqcrXHfE9-%1hXT81f z@{B#(s@LuL`m)}>u(D{+6^?UzU(BzwfAjb_ShM|;di#xu@4#%BdUQ3|e2gA)Ff|PI zAm>4Y4qXv6h`^S?f*Ls_KssUK$kBwZ2Igqw5QRCq9-Gf#79(o_Sq4ihAT}%*k%Jvs z4YD|Tl)*v{sNMn|H^{*bG6)uD$l^%xx_NSLq%1JUf^){?&t0b6$ANKkB%*E4Ue!aJ ajk`G+kp(8Z_nZ|+QecC`-mKmGlMw)}EfrA! delta 1403 zcmbO+k7>y~Cf@X%5H}_U1_qUW1_qstyk^||=0*mlCPpU41{UV#W)`NKUAf<}O*RoS zV98zlK-iOg4eztt{hIHvey#OpW23#SN=(;9_y4{kwO`AQYd7)%wDh`VJ-%H^7+g_By$yTunUmfhQXd3pM~ts4@hQ! z*^`%N>DE8`Rd4_Ktk0g?tNr)MudA|WfPyc7>+QeiGVXDX@Uoq>y57E?&u)*r>c+h( zEcN#Hbz=8`l$rgkw?F(g8_dS09;Bw>YrTE*l1Y2k|8TQ=BUcSK|MAUwd#SbD^?Pwh z?ENK`WD|R~-hTNWvAxrGN!e+9t+8Lk@*KmVZ9s<#cJl3Uk1@2pxWC^1tAywtHZOsF zmm+KJPcz>GJ8t2pdV8O$rC>HpJw#1CLec;C_4Z7hTlY9mS-D5>VZHtOZ#(yV5xcne zXIq^;-xij=Am1#xRBs;^F9Bx5)T67x=414bgQ;Pt2O0_sI&?+QAOc$k3u@$$067RI zjvP(sYG95=4pEq+>#_L^W-+n`kY%v60%F605johA)gX(br!82>0o7YDz~Tlu*g*zi z6Gw{I&F#67vg}hHTH2rF^qKs;%aq&jTRk{+_3i52tlrJZh%7MKy63Dok^&nf_GbCs GpNs&aTr0x> diff --git a/world/generation/chunks/assets/chunk_0030.glb b/world/generation/chunks/assets/chunk_0030.glb index c02801b7b8260adeac1392197d18c5530a0a12c6..9cd6c4d780ac5e1821075cd1e550f42fe2d5059e 100644 GIT binary patch delta 1423 zcmZ26k7>?4Cf@X%5H}_U1_qga1_qUlyzbmgW=5NnxgWAkb{6uK2TCv;TtD4`fnfm< zBiQEWm+xIsGG#Kqx#s38LMND&S1g`n)5=(HpW3y-_QowS`-&8Cd$l(_`;pj__lvc1 zBdOc$FV4y&fuvwRlBDhA4dN0grrtTpY}XfVWuKms7V>{#p^9y^i{m_gPnQBe+(RqirN7$JjhkMiR4E%U9mVZfL!?yQszoq!+YMU$3=9qjfEIwT1CTx0Iz!hUA*KKnhsh(eLF!@R$ZQ56aG1P2!xZM|$>rv< zlQIRQ5y}-D(Abl;Gj$aZVhfP0N3bW~F_)M;AyWWJvfuzh6Eb_jeuOv%d-DCvKqNC1 zaIg!I9Eri6oS&tO;12{Z@ISEI`Qj@y|WbRfofo&!9K`yu4Qn! zo$cZs_4bNfmDUY08}}~asJG_}J7^73wc=mB{okz@!E6QwO!Xi&ZGYt+$Wxd}VV?K*CN!rq;gf`eGY&hkgTk z;Fj(LD;761TgLtM_5yQ`Sk2bw*~i{pYyWTQY#Wee3cu^^FFke#vtjBXYU&Y+(tg(4 z3op;G*;c)7&)1jr_Jx&2Hdi>#?R_!7&i>8g<6zD9PwMSACcXo+Vd~M#X^1`BHBkO1j~i6ci7x*C|HkwX;b=z45EgISEM0c060t$^6DU_=gf zWHrd*=urj>IiPwAc-$ZdJIEkdoFR)N#p~wjxskHK+zZYblfQSFa@Rkp-(NPr)8=CE c!OiB~oQ%iANQ=3o_KiZ40ua`)~?hL#8xge53S2)a2@!cS%$ArQ*6 z@(2=!tuQpimfZS~y3OcQsFYSjB$XBPA*C>1QitnB?6R+i1NT7*)~d<3z^A7)(C=GY@oPaZ|N z^PuL1Yw>HU-5u|J+?W=ltE+>&@>K%bd|^Z>_8oqxiA!f7Q#w}^go#OS5X$un3Oz&t zK`I%>48HlfCn|gAiCk3UOoiozUgk)mntwXr9c=0*sFoo#Tcx&d+{p6`+k`rnr!}gB z>Hfu%Xz$DFTrz26$ds+>AFqUC$WiW-8E|NCgW0Ffw0YZ4w;1knEWz!fQA1p{6LYMsKY}nw-?JiKK;%>T=LKK`F7-R$G&(Ns=SYBztZ! zf~?6i)i--zH100thIAVdq%v~G)C`ID>xC$ zS;y${VqH*&<3*-*1*7x*U7Y7ffqh}unZNZvzQ)Kntik+$7WfV0DXwA~qk(Z9-!p2o zC$F@iTlD8`gSG_*jk}=b3d=M389zoVh6FC6DAqSyb{0*l-Uf%exr9-1^X;IP_&*Gm zpt?*`ZRe2oKFy1#>7T`@w9*jN5+BNhJ8@`o5<}rY zQ7O7mXe**%Gbw7AggB7o!)pp^S41tv2xEr~^h5tGDY*b| zrKG!ov5SSm`QToK_WH6!b@%)M)U=dOzFf3uGFP!*+}JtVA?$09R6v8EOVfG)a6k*@ Hj&;Rv>s&BU diff --git a/world/generation/chunks/assets/chunk_0031.glb b/world/generation/chunks/assets/chunk_0031.glb index 48153479a8c180ffaa54004a5a79b5c38400e1cb..1293a1937025b0bf50b6e1de0a278146cdd8990c 100644 GIT binary patch delta 770 zcmZ3ol4;6HCf@X%5H}_U28Jn97#Ku0@=CKZ8gI5@{msm8Y-VI&Ze(d*!=wRy(>zl9AIEr0K^Ule*f;DT>zhdrxt?>_=ix?iY}p zJV8K38A)uvc4wc>XUlVY->#@bQTtv%a`OiP2^$$yix?OVuAdIIl!0Nhithwo9uA@A zU1tC5?XP*v-97n0l!S8I&wKkk51HC$uI9BzmP8Vt{5xu;1QH)b-Q)>T5;!F{zlq*q z!~*j2i zqgO5mT8;$S!@_RUd9(dc_T=^bf&3t~?*z=@=I~Eg7%kFZx?kywl>J}Nop#Y~Q}(3w zaN1wE9d3^-uJY}WZNjxWpt%eT7vnqa{>&)@vysJxRh{-VroXq-V2ibficj7@QFD@+ zL_M-HT-r$$M>Z1|J9dJ%EzA1)$)_jE+Tc=y%U)#fPga@aVSsD^vL;+%wt3DZ4kiGg CPb&EU delta 787 zcmbQTl4;3GCf@X%5H}_U28Jb57#LJG@=CJ`8S0ss8XB5g8kw0|nwwgh8X0cZWc|&| zX9VIIm>V0JnwyxIZ8qjKWD}M-zkKhCk|_rm7#18T5ns0d_wWA6*}jI8SMaY8KmAO~ ze#VA%dp|7k+KXUlVY->#@bQF~uNa`OWL2^$$?i*gu# z?>@MGI@nSWd$Wk|1YVxLhsSrH_*ZW)zU|_U$s3|1l$Af++Nb;2(tiC_PJ3iYB=O0w zqgF~F@ln)GZite=DY^Mh^bR8yke4UV=(CVMD{6gU##vj3b>A2dR4>@Nf0kwp*m*$l z$*=ojnL)I7zpgq+-H{7M_L2c@2aI019B4TbWDg2EkoczaX8WP+$@BXI`9Wgu1kB;) z{O?~F?N{Toukw|G{pwr?`)Ic*d(wJ1?JwL8w?`KD%y6*VT2Ku%mx1A8e5c)?Ib~or zvbeCS)4s;^_jVd=vG!2$$?GR-PX1sjQID(+mwr;kk{lm;}Y-VI&Ze(dzlI503QIKaT*aNzgv{>jz8hLd;juMl@vQLzvE>Am+9r;9xjdvd>k zT4e5j>J|}`p2=)j20L>hzIFLO# zFhH3X<`SUo_D?rA1{ibka0oT;GW%a|f6ZgA_2dIl63T5q@9pzEWNM$ens-04B$D{# z-%%?ikoYL-CQpcxz$v-;P4pTg0lN!PFb4x^hXa#W^eK26y>bBy$_2C?fU#k*JL9bF z0Z>3!FW9<&mS&6tOdLc{5cED^q5}zGFnh9KzdJL~*vZlTy6Pa~k6bX?F9|f&0BA$Y zkswgKfUVth-pn4#p1i(4kRPP>oq##a^vV1a7DkISnC@5lB4z*AbLYNjw<&wldN}Pb z+z#K5EUxnHkZr=XI-pq$3>V`&?f%Ru1GACEg;kyQHKxC}(_o9;4;7!hf1>6jGl_a+ zWw^AHDvoR>E_Un$Z(El2^^;Fel(oU72A93a-k+>8$-@BI0Ax+L!ff-LNgPZ77b1wc delta 1035 zcmbQTl4;3GCf@X%5H}_U28Jb57#LJG@=CG_8S0ss8XB5g8kw0|nwwgh8X0a@XZ^#> zX9VIIm>V0JnwyxIZ8qXGViT4*zkKhCk|_=h3=0mFh%ej!`*;83Y+u94EBIH4pMEA~ zKV!qXy&sl%*(0$h*9%BaZV*sWMiR5v?(DPqY^EBeNM86dV%f z7eLhm*^>kPm3f~DHbF%S9G*>X1d3D?wL?XE94aPn^ta|+6Ilrr@o-o(`KQ0KYV!01 zsK^3)1p9-1jAjm09LS#R7@*7xa|zIP`wyE71B|(N`W_zNed1rez4*3^7LzwbNhm9S zxV2CBv8Da`tDO6hC6UA@zm8fdfy75qH@P870;lBWJJD;51UxQ8!5j>ZyvZ~A6g&-H zxqt=b0@@D1*r3onEoyyW##!3~pn$Gkuyy||%@_xmIEbDg=zYLm2NJ?y_GHF>cV?ij z$=?0C>LA@mE*R~XgqqrNBnT8QU{g1pH?xPbC(rK>#XU0|?6wwE1I=P!xESAQ_h(KSn2jthtm?F{G5x)r z23zcYsQBdd6E!D)FqNoBR)yjh)1k&)4Ob0qt77FD1T3g_+A)3PO1e6oX)0Vgv9BLgb~ z69dcUN~7%(^}q-{0E&tUg5E$H%m&g5Ft!6Iz+q|_zyP8iN&LW@O?&qv^ezDEaX0{s zm;*0Mv%qYKS_K%}A!`ylj9q^KC<*i!#8AnAHXt9&2GRvEwgXTN%mRn=Y!Wc>1Ib(C jVS0gL3NSWMeE|@|9Qpw+t~tpXCJu5SkiA*Y$4mkMSaSNV delta 754 zcmX?bg7L`-M!xi%5H}_U28NUr1_lM5jeOlKqPhlp1_tJ4rk0jwMkYX(rHO%&<>Xl` za{Q(S24)6^=4KWqmd0kLMw^eb*fa7P8d;hFg$yk$Ow7$U3$rOQ3L5EIf`O@#v7wof zg^AH-Q}*X9syPh5cOP6o{Qv{Q0tegk%lED*nS#M)ob1RWueoK%bcY6@YM{ykvumd~ z*Z@_dv){2yaA2I=$>T5n)2w9QJtq(Qt{`E1B=+R@Jd*WDeEYWxh4(*l_OL&#T4;xh z?Xf0jzXP|at-y_gcF1gGa}@p_-uH^r)K<|t2gOWe^-wheU`0q0o2T>sRAvE%#N;W4 zCLzckWqIVjXXd?n`{b1$ZIIdjt3K_i1&TM?x#1K?Rx??~$bgfDfr){YfsuiEbEwgF ziF!r`2XIhN5cEFq@4r2W4a5ouVB#P?g3SQb2vH9bhpB(FY43g*8z}AoQuF(F|ACjK zSq=zs1+X|sK5G&?OuQasp*_q{$$&Pvp$rTKNER>H4^wlVO#-ead275qk_B*cfO_GU ZF))09i)&7@hFN?7oJtrrbNQG_003KoVW&;|U(Pq*|IPo;|DBnIb=AVU zYIJRn&QVavBHxi~v)l9Sq;7Azn5ya5gaZvR5baULv?Xg@Yz5$UwUO3+Z=xgO+NTPB zWAysufRCKkIsYcyx`}jNvC)wt5B|80w8w^Io)@p^Yt3ZL~7-($i zNwbhdaz)j{bv*FWbuHo4IB@cKf*+p_pXlTu2V)Q@MJZn2h9@ zvDvG31vLQO)WDv#OGhiKj}#Bc7&T5-JM491@=zp3^YLmQ8&A~z}DsTB>=D-MKewx?^5m`JgPKOxWamW67RL-UjJF40L%Wr~OuRea?)FkW$D z+waZkd0zaP*P=3qLkb*(7>IyG(7=8wNCq`sn<pjSM=W7c-Y+e;Rsjr3`l*s~Bjg?nKcgHvi( zZRrI4TW%MR`McRh&Xo5ZxYcMvw!22z(<1mC-Vf6qAM;UqksfiFBv#}_1$CsRLWrsv zYeKh6wa&AT$^D9Nr-E6*zmibpY#&GR@;LVM{PT%B@|ti0wf0!}>S!09tX9tOZ6>Qq b(t=&Zl9n8k|I54MsNUKz&GClnN11;Bxk1bk delta 1269 zcmccdp7F+e#tm;-`7JEXEe%Y}j7?0;P0bA~Cdaa?Y*t{K!^V=s@O$^>13W7jdCR4_ z9T>o1fkXM^QoidveGiZCKJl;KUVPid9g`#YZBPXk@NZE;R`IVzZtue1b@tqjOZFm* zZ>|uCk#%t`w>-eWumEU-!U62;1xVt^Yz79H`pE@e5|a(|1ek#Wll#47CnxBcsKX?I zhTG#|Pu{JkizHuwWEnDh!G0t&(AksK^)sar@(M`if!UK+>&w3QN8HeVy1npb$6vS#N*%Z8n&VO+83W!`FKI z<|UK%tpDL=_eQST9wY_=k8jr7OReSJn;hzB>)KN9W8d*pVQ)vnGTZBH_4aWl40|7_ zPT%{?tKR;p3pY;9zoe3EV$aswFW)1!cls_VJB_b3_KR4aPo8ZkIeCqNK>d|J?D(=Q*lxwDO8dsX1-2kZVRJ0Hr(tS9>S3NnR|EB2;$DyasE3yXUP(}7JGJEqM!y-mmW(GM1O$J^D4hC@sHU=r6 zdD09lK)x(cM0j$yv81X911AF$gCv6t13!ZjgFJ%}gF1sCgD!&(gBXJVgBk-jgEj-# z=99+xV)8QQm+xIsGUWg;g&#m>gR<_y_0uQc=8**E3>i?a*xc{6lu32|E@p=q=PkfM zTi}4qMoyaLlOug+E1&-_ZGW^>X0P%-ul+7(@9y*cZe|}piN_v^Jz3n(kPD%1a*&@F zSLV8Wd&@v0_>C!wr;j7(wEu)=B|@{oNnSiByq98Luvqr4Cb2v diff --git a/world/generation/chunks/assets/chunk_0035.glb b/world/generation/chunks/assets/chunk_0035.glb index 2eae4e76ede44301b261de85a2fe3080ef7802b4..a05d0160d480c08cf3d01ba6d4a172c47aac3c38 100644 GIT binary patch delta 1662 zcma)5Ye-XJ7(P=$(dkBoO`ADW%+k5c&@$(%6f+l*waP1nP#Gm@VwTwagtS1TqOS|2 z(rStR2u)^D+s@7;P5Y6RiH6h>X^WL8Koc;+>=Y+^N zzhIxnjiRXSr4*Ie=DW*N6l*H*{O*AdiDRTJPj$53vQw0SeJRRh5ZgszUdzs#AN!(;FEHHesZp)Ae2a?t0zyG z&Ak<%FYKZT-ZU=h2n^r`a}Jpt|Eh^@F1c=J2TqR1UF&th1Y;+$GYeb9at~IXjCW@R z;gZNr?i@y0L8hKagWH;SL;i5~@Ja}u5Ce(F%2kYhg_urJ;hJcz#<)!m89g$(<&u`! z(mHIb8rcY82~r^Ox<*?4U|It$`-34&YNJ2>(7V&A4iSSQP z%xqHA1?`9-`Pc0?=&#yTIDIpCUdJVPd}YH+ozNzMdH=#a>2gK_sLeBG zD_vWBj`C^4SQ@>nGZ4B wI;vMRp-hVgn=a3otIv-b2(-EP;!NK^I``lS3{w zNz@Q9Rz%BiQH~Tvv%g@~fYFjS)lA=3AXdyjm9RIh;i>LSlG^wLL5O#mr82jTzUPI& z??8uzQ#H>b`2FaO15?yOJ*TiRfUVN~e#KKq6G)@G z4kA`H`4{I!RVGq}QTf|CUf-%>LEe8i!p8z72(>so z-4srB-j?29D7>1S$*~1F#VvYL*@2ui|ES|U88NMey%&^z6Q|)Z()1MyW3rqt?uQyq zZ_a|9yHfp@Tv(Op2+PPOC-xk4{)gUnDI;!ClqWuK`rHM$D0_?5>jX~4MeTd1v4!Gk z%rJu9%X`kG_MJ$r65dp~!Ei&W97|Fqc*rcCBfMK60OMa~HN{m^UTAD_QgwkCS8Ulp z^-xWNt0|xVVC>#P?=(vF5HOad$#Hp!488q{;A>wVTVAu?F?pjF7~gMf62Z6KB6fAL zN#Af40g@V6<$`vyLyX{cYAMUfmj6I-d!)jPgXuZV;c)~((V*q&3`hoFUxB^T`qL-P1RxGetgkI{OM(dgq+cJ0;-{eTm}xIBiPVUjrp z&4=JY=qsY=?CNt@*yuM1tP{7`vDg9fqrMKL9b&?5 z(=>=+Q<>b0d3~TJ*v5g$@frqsn)1;FihL1yhw)LPHsc4= q1>7+HTj4MtBON=fq4~gXi%-s@*D?HU=-9bN!FcMfw#04o*M=r)*bu`=8FH?6I# z745k>7|5i`=NMxHs~ellL6ORa+S+!E4TLd=ogky)ei8PAh$5S1-FwlrUzJ{X-+R9I zd)}Y>k~}y4d%^Ut1x)w$)~5^r(7O8!bI@dn3uMUTXV|#NB?X>kdGdwnMLqhx$xou@ zfDT*CgHch6gm!fHhf*8(C@)C@E5+lyAo3h5MH;xMln~=08|Pvy&r2Lf?wdOeqLeGL z&l1pKi`h>uSawEumScI$lob+!7-vP1PjUj!lR}F?4lTQG z;8?P?Fy-RdNNCeQ-{zLCuHMakp%l-N{=#}UmwY6iA z7+-0UOD-;x5Mv@4D6D&YC&}XwxZ@E7ZgGypB}fe;o1`Si6TYa9yv=xwET1GjOcj}6 zTn6#M4F551W9&f@lCipt_+)xPGH7*~LixY|a+xG{9!7hN+>zaY6 zwhzcnn@m`{mu$2jsom?ds`%aEH9R>r@~)bLFs#y;3_EJA?;L+&EPGE=w*BEJ8;YM_ zwEm`e9l7jqk~T+>>~h%9`pKWgHXD^A6OZ#1@}_eIIqP(iX=lIYh7u?PH(Dt$c-MU? zltU31pc;KOIKd79@Pil3U_x&K8#2l;R*F`M+|rz{1Rr=XUV^>^Tu=oCU_ozz3d|1R zjvvi~+yGXrL|X>FC<45pIiMJVPzXi{ffWZ~pay*no`f5%1U~?-(E^vdf&}aNVgPkg zKdsQn6$OB7s_)S9p<>vDp$FTua{;71j`h@heD7ylg*;vc!&L6hdCu(I0{&<2_(Yyh z;kA<`byK7@HqLy?=j5=a7Su*L``eABHoJU=nC(H|jjCVT+dEyYbUA zavq;PQ6ztUS5xl1r^(Ic59OKLn(||V^8y_YjT}s;_h`y%L%}h?%Xd>#s$w(pJ!>ZY zWl~do@dN2wy>FzAeVQT;?HJ4cd^_D58B~6|l$B%J$LYgiO*wh_I(eV9Kh2zbu4&zQ zO;NVX<8;5J>e4-^y5veUtS!}(u0?a`XQF%8z5HoY<(#GrX^E7ctIlf5zv~ZoI5Bwfo?!IzIU#1yl+ZVW?r%^IyCw)=mvD0++w}>%`HqtHyQcrjJ)xhrd+*w zO>VgMElp#m% z?m#gqLzM_Z6jdRJWWMB zmO~gdPD07CqF#B?dvP6sMwFfi8V3zfpVPC|z{4t#Ar5I2sVCq`6e|I}02xqGCF^kT zQXD%5YjLEtC~PV8DOfSu!*`c&IC0*nwyilkuK($2Op62k8aUN=Oig_EiOyGPOurKH zq7l!owEn&A_Ql@Lv~u<9JES`sUcT=Xr#PnWj_qa>6DI>b%Fzz**q*;mU!-{>*>9~B XkG%ElKqIxDptutR;2a>E0*>7c z5=}&ca)_ER!UT*VEDjif$+|}j|AJg1OWBx4x6_al6XJaZYVIb5-%}aPznmudd5&d%8V{8 ztuwZlNq(Q_l_l#v6$|(>J`fBD0g;tBe~{xuUnyG_WP=PZ`58$JiUP-xd&VV6(!U~Y z$u2FeGZv764uhNb<3BpTh`*K;IY2ZR6LPm1CK8R1H86C+^HFQ&d(AdHKOMO0kYPd zn;8(EP>}*mATIO2m4GOc4W^PzL3~nQKv8XjTJr>hpFuvKT0-72PtsAPF?IQhFD>-cq??@}OyfoOXXe$k_nItQ1xB5n|B|b;&$dQH*ln%Hzpz+4b zH7-Dhti?`tbfDvbDt|F+cc_co8@qN(mH7^7AaeFnZ0J{2UgOZ8*wsHTHhf!^tF|o& zcV#b)9lEQ^KkPbL@h~U3w#uyi$IkS(jHzA)C`lgP&Mr$Q@gg zZ#)2{9B#fSD$N&PQ%IYA1^Lm=xaNI2Rr&Thi$zg6cf_x-O(sR!&m``|k>06(38it; zByd13Ou~@^7QAaQ2lBuSdhlTMKnB>M5T-yrB!dy75p0Oa#aa#y7h-eb(FJbE#<~Ne z12SPUBtZ(s6evJ;A+Aipk&W0wu#0%Jg9$0Fcr?KTNCz*Zf&rd^G{^!gOa&)Q106;k zOhie5%)ZJAj%*Sxwvzf{-qt>&`ohyKf>G}`!Bycwr4njr}7yic5pu;)48ixudH8L9dC}>SfTS9J=+x& zCC5uTT?z35=#D-mC#!wgWQ|WTCDzDkpA$!onkek3+Wn}J%RfCEPSlUx`8@pKhAPi( zdo?sab|IW{MU@X6SP`akPw$pUq*aw)-|mh9{?6UrB#*jv(N1}Dq?J|W$-gO)nk%;= z^}crb+NqlGUzx?x8LQgl>jf=o;iAFWQE}f!xqs{P5%O-SbC#y?^PzUR;oR4Q^zIbv zG1557WVF<)j@Q9>UDEr}Pk3V1&T!VBs(dvzDWq}d4XW}Vp9Lax^EBq6&a(Ki(F9sF z|3XhV|DY<@ejJI=jnWUQaTA9@Z$Q_Hm2r~va)X-aiWcrYc{to~9)0Kf`N!Vb+-+Hr z)VEdnRDETH#?y7WDf%JkoZ{*tB#fQ(lsn^R^t86=^QBd&VtFmIhPK-{R7eg7kUNH_1%Apkf(*ac=z;uWJ4^i~hX=rh&AYv3j z1_iCJ1ZJT38i0jrY^fT3GK4V%MSW|z#;gVVPUw||RYwOkv!HX@ROoNthu)n^-Z!6U zc!kdC?_k1gxH(0ZvKMX)EnHG5-*o>@8s~VY^aMG%F7HHcICdrmwu#>-`4_i87M_ diff --git a/world/generation/chunks/assets/chunk_0037.glb b/world/generation/chunks/assets/chunk_0037.glb index ea7950552754bcec6d5767276dddbad9e95c1c0f..2d9a236147b56c9568526c82c8b693710a7e306e 100644 GIT binary patch delta 43 zcmX?copH}~M&9(C5H}_U28KP^3=CH`^6q71Ny#iKnVi6Awwa&l3Fqc7+*jfOPH7LH delta 54 zcmdmUo$I K=jP|!SK|R0J`^bc diff --git a/world/generation/chunks/assets/chunk_0038.glb b/world/generation/chunks/assets/chunk_0038.glb index 5fa83e3db2b6354ee4c5beaadafbb12a72eb474f..2807d4e4c53214f2c44b9124f3fba064a854c951 100644 GIT binary patch delta 1745 zcmZ`$eM}o=9R9UMKFY^+1KYwF97VQ{p}StcDc3s~D!A;!C^6bG0mn4T7-EeBrH3&_ zwlP3nO#G*;i&Gc3X_iJ4Mvrz;V;p3Yn3x!KF~nrq&}4D`F@uTzu3@_uwfE+I-sgSp zckl0c-uro4AB*XY&-Oh2kRAZoiSx#5+4&B?-{bfBc{j($SF)RRdM`&BbH{aFGMrOM zZsxMck~x)eE-#p6@VPkhVxeHhwa(Tx5boZ6;J{1WVOu@VIh;K4Gqq;7=RdFf-t;SS zC4YUE!;N*#MM1sSOHLM)lUPxS-svHW1$AVps94WCiI3SzY)o;M!@>FRM8V*6d&mH@ z&*bA>L+wK>>l+4WYTX5sChMe0LVJy-YMnRUZQ5+Z&2c`!c&~h@oDNT=0Ae^Law4>m z{J~pua4+FLUhHhs<)1kfAGCAfdC8I8@x#!$h!XsaASLD|sNsW^WE`Cip z<1Qs8cZ*FciQpBz7i`-WP-Z&%=}!mUy*8>-^49qibJJWvdHeVNq^8G>o?wkZwYnoz zCE}`DN2{!Af0d`Bta8BTj!yG*jT-k(RPuSKiqUFW2|2kHs@kh*vAg{~?j1;Vjs{a_ zj*g~i4$zm<>S-QJYP!Zr%E^V${N01s@;=oB9;gP?_^;6sNo}6+97)j};3joWnv?mx zC&|R1l^kwgkY8bf4R5Z!bRo4(b~I{6Q8EFByc_ElabOpJegX(|UofX=29&`!^AB_x=%uZD$l6C(Gj0 zp-F)@!M8^J3)uKNHr|qbR*70`7-6P+YvD;e;`agc}cO&4vCSgp9(*| zAqhL*m&JG5E+)LcEnk?vEsIZ7gx3VSeB)6q0iBq3O{b@m(P^j}a_H$&nZ6C$2pu9* zXj-R@)0aVqruEfc_H^p+O*O%Ti@oAo*H6u5GCSXq*(?<*K?kS9(K;QJ{+8BhPpjeV z>EH4{DgOQI$b5%TK-ZCy&gV$Dv(IFHVIn#8$;IT3wvpuYm#jp7>D*&lIG!h|8+O4W znOA0$#ML!S&UU>kvtWY)U~v|K0j$6wa^QvyphIRrwiU+)WEJoL@Q6HQg9Yw|T*O?s z2krwO1P}vI3|XLu62uZPLk>8>f#`rzsD$-UkHZ6YL_4@(8)~S?X$p`J)c`oFpavKy z#IYF~!H+wYtL%Q*0$xNf2v7#KP={Ct4bTL6$keqAf*`>r#7$s=2SJ2&i0fb@Y=>qj eM=S>;9NDw$;X-4X5!)5EwvZya% zeD~aQzH^gVUUuHP;Pk!v`b*C^0gTOG^ZnrQ$%>*#vLa>F(x09|hf`J9K=r(}eP7kg z?o~Hi@Va+fDOsbtUEOMiP5ZSF?Va)5v6+c|hY!CwF%$2VB}tW7uh70Fos=Ix%E+uo z=wLT%H@lN5MPg6a>s9HDG~3Dk@`c&$`UZD*vRk%pQxJ4Xielr0(BPJOk}3t7D@ihr z3kNo-DS38eHX4n-T>u95?8QPrTnO|#G`2gCaA>88KwF%G({i7n-MD04o;kM;EU%9j zb#^5iVZX?tSO0yf-->T!BPA)7anznVbY`tl*UYPnZ?X54Fe@rzXz-ISwO>CRG;0d^ zas{)`6?sFtkPfpzdMI8=$(Oy&AL%de>@zAdmdbBn96zd6I&c5^(N3yQ25tP=;KXS5wR^TxhIC(P)GU^=9N zaqh^1W+k-zky|lu|4fJbJsT?VJbPhO6emA*Ye%jZjQurtS8uI^Ru0@R7+v;SB-@GYWFnkoZkyRo=m|WDF7jRQAczKd$$L?SX2?jB zPh&G&aL|d1R* Date: Tue, 25 Aug 2026 02:13:31 -0400 Subject: [PATCH 68/90] chore: prepare v0.18.1-alpha release --- docs/README-PLAYTEST.txt | 4 ++-- export_presets.cfg | 26 +++++++++++++------------- project.godot | 2 +- scripts/build_playtest.sh | 6 +++--- ui/title_screen.tscn | 2 +- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/README-PLAYTEST.txt b/docs/README-PLAYTEST.txt index 0268032..f1839ea 100644 --- a/docs/README-PLAYTEST.txt +++ b/docs/README-PLAYTEST.txt @@ -1,6 +1,6 @@ NETfishing -v0.18.0-alpha -Alpha 0.18.0 +v0.18.1-alpha +Alpha 0.18.1 Thank you for trying this early private playtest. diff --git a/export_presets.cfg b/export_presets.cfg index 340cce4..e917d48 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -9,7 +9,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.18.0-alpha/windows-x86_64/NETfishing.exe" +export_path="builds/v0.18.1-alpha/windows-x86_64/NETfishing.exe" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -35,11 +35,11 @@ application/modify_resources=true application/icon="res://art/exported/system_icons/netfishing.ico" application/console_wrapper_icon="" application/icon_interpolation=4 -application/file_version="0.18.0.0" -application/product_version="0.18.0.0" +application/file_version="0.18.1.0" +application/product_version="0.18.1.0" application/company_name="Woofmeow" application/product_name="NETfishing" -application/file_description="NETfishing v0.18.0-alpha" +application/file_description="NETfishing v0.18.1-alpha" application/copyright="Copyright © 2026 Woofmeow" application/trademarks="NETfishing and Woofmeow branding is reserved; see TRADEMARKS.md" application/export_angle=0 @@ -62,7 +62,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.18.0-alpha/linux-arm64/NETfishing.arm64" +export_path="builds/v0.18.1-alpha/linux-arm64/NETfishing.arm64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -92,7 +92,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.18.0-alpha/macos/NETfishing.zip" +export_path="builds/v0.18.1-alpha/macos/NETfishing.zip" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -108,8 +108,8 @@ custom_template/release="" application/bundle_identifier="io.woofmeow.netfishing" application/icon="res://art/exported/system_icons/netfishing_1024.png" application/icon_interpolation=0 -application/short_version="0.18.0" -application/version="0.18.0" +application/short_version="0.18.1" +application/version="0.18.1" application/architecture="universal" codesign/enable=false notarization/enable=false @@ -125,7 +125,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*,tests/*" -export_path="builds/v0.18.0-alpha/server-linux-x86_64/NETfishingServer.x86_64" +export_path="builds/v0.18.1-alpha/server-linux-x86_64/NETfishingServer.x86_64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -155,7 +155,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.18.0-alpha/android/NETfishing.apk" +export_path="builds/v0.18.1-alpha/android/NETfishing.apk" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -176,8 +176,8 @@ architectures/armeabi-v7a=false architectures/arm64-v8a=true architectures/x86=false architectures/x86_64=false -version/code=180000 -version/name="v0.18.0-alpha" +version/code=180100 +version/name="v0.18.1-alpha" package/unique_name="io.woofmeow.netfishing" package/name="NETfishing" package/signed=true @@ -214,7 +214,7 @@ custom_features="" export_filter="all_resources" include_filter="LICENSE,ASSET-LICENSE.md,TRADEMARKS.md,docs/ATTRIBUTION.md,ui/fonts/*LICENSE.txt" exclude_filter="builds/*,scripts/*" -export_path="builds/v0.18.0-alpha/linux-x86_64/NETfishing.x86_64" +export_path="builds/v0.18.1-alpha/linux-x86_64/NETfishing.x86_64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" diff --git a/project.godot b/project.godot index 89bf703..054e584 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="NETFISHING" -config/version="0.18.0-alpha" +config/version="0.18.1-alpha" run/main_scene="res://main/main.tscn" config/features=PackedStringArray("4.7", "GL Compatibility") config/icon="res://art/exported/system_icons/netfishing_256.png" diff --git a/scripts/build_playtest.sh b/scripts/build_playtest.sh index fb00aec..1aa067c 100755 --- a/scripts/build_playtest.sh +++ b/scripts/build_playtest.sh @@ -4,14 +4,14 @@ 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.18.0-alpha" +readonly BUILD_ROOT="${PROJECT_ROOT}/builds/v0.18.1-alpha" readonly WINDOWS_DIR="${BUILD_ROOT}/windows-x86_64" readonly LINUX_DIR="${BUILD_ROOT}/linux-x86_64" readonly README_SOURCE="${PROJECT_ROOT}/docs/README-PLAYTEST.txt" readonly SOURCE_COMMIT="$(git -C "${PROJECT_ROOT}" rev-parse HEAD)" readonly SOURCE_URL="https://forge.makearmy.io/woofmeow/netfishing" -readonly WINDOWS_ZIP="${BUILD_ROOT}/NETfishing-v0.18.0-alpha-windows-x86_64.zip" -readonly LINUX_ZIP="${BUILD_ROOT}/NETfishing-v0.18.0-alpha-linux-x86_64.zip" +readonly WINDOWS_ZIP="${BUILD_ROOT}/NETfishing-v0.18.1-alpha-windows-x86_64.zip" +readonly LINUX_ZIP="${BUILD_ROOT}/NETfishing-v0.18.1-alpha-linux-x86_64.zip" readonly GODOT_BIN="${GODOT_BIN:-godot}" if [[ ! -f "${PROJECT_ROOT}/project.godot" ]]; then diff --git a/ui/title_screen.tscn b/ui/title_screen.tscn index 653d13d..4d02718 100644 --- a/ui/title_screen.tscn +++ b/ui/title_screen.tscn @@ -227,7 +227,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.18.0-alpha" +text = "v0.18.1-alpha" horizontal_alignment = 1 [node name="Spacer" type="Control" parent="ResponsiveTitleStage/TitlePresentationScaleRoot/Center/MainContent"] From 7ae20789a90798b5b8086c7e3eca4bfbcca16777 Mon Sep 17 00:00:00 2001 From: Voyager Date: Tue, 25 Aug 2026 17:14:12 -0400 Subject: [PATCH 69/90] Rebrand project and refresh title presentation --- ASSET-LICENSE.md | 96 +-- CONTRIBUTING.md | 6 +- CONTRIBUTOR-TERMS.md | 14 +- README.md | 28 +- TRADEMARKS.md | 20 +- .../plugin.cfg | 2 +- .../shoreline_auto_baker.gd | 0 .../shoreline_auto_baker.gd.uid | 0 ...acter.glb => straywild_base_character.glb} | Bin ...rt => straywild_base_character.glb.import} | 6 +- ...wild_base_character_eyes_simple_shine.png} | Bin ...se_character_eyes_simple_shine.png.import} | 8 +- ... straywild_base_character_mouth_three.png} | Bin ...ild_base_character_mouth_three.png.import} | 8 +- ...raywild_base_character_nose_dog_round.png} | Bin ..._base_character_nose_dog_round.png.import} | 8 +- art/exported/system_icons/netfishing.ico | Bin 370326 -> 0 bytes art/exported/system_icons/netfishing_1024.png | Bin 76386 -> 0 bytes art/exported/system_icons/netfishing_256.png | Bin 48436 -> 0 bytes art/exported/system_icons/straywild.ico | Bin 0 -> 370326 bytes art/exported/system_icons/straywild_1024.png | Bin 0 -> 80419 bytes ...4.png.import => straywild_1024.png.import} | 6 +- art/exported/system_icons/straywild_256.png | Bin 0 -> 51987 bytes ...56.png.import => straywild_256.png.import} | 6 +- ...r.blend => straywild_base_character.blend} | Bin ... => straywild_base_character.blend.import} | 6 +- ...rt => straywild_base_character.glb.import} | 6 +- ...blend => straywild_character_source.blend} | Bin ...> straywild_character_source.blend.import} | 6 +- ... => straywild_character_source.glb.import} | 6 +- ...wild_character_source_eyes1_eyebrows1.png} | Bin ...aracter_source_eyes1_eyebrows1.png.import} | 8 +- ...ld_character_source_eyes_simple_shine.png} | Bin ...acter_source_eyes_simple_shine.png.import} | 8 +- ... => straywild_character_source_mouth1.png} | Bin ...aywild_character_source_mouth1.png.import} | 8 +- ...traywild_character_source_mouth_three.png} | Bin ...d_character_source_mouth_three.png.import} | 8 +- ...=> straywild_character_source_nose1.2.png} | Bin ...ywild_character_source_nose1.2.png.import} | 8 +- ...ywild_character_source_nose_dog_round.png} | Bin ...haracter_source_nose_dog_round.png.import} | 8 +- docs/ATTRIBUTION.md | 26 +- docs/DEVELOPMENT.md | 10 +- docs/PORTMASTER.md | 66 +- docs/README-PLAYTEST.txt | 10 +- docs/README.md | 6 +- export_presets.cfg | 32 +- main/main.gd | 29 +- main/main.tscn | 22 +- main/runtime_performance_profile.gd | 4 +- main/texture_sampling_policy.gd | 2 +- network/discovery_client.gd | 24 +- network/identity_backup_service.gd | 4 +- network/network_identity_crypto.gd | 2 +- network/network_protocol.gd | 10 +- network/network_session.gd | 6 +- network/network_surface_drawing_service.gd | 4 +- network/player_data_root.gd | 28 +- network/player_relationship_store.gd | 4 +- network/portable_data_migration.gd | 12 +- player/player.tscn | 2 +- player/player_visual_presenter.gd | 4 +- project.godot | 8 +- save/progression_save_codec.gd | 4 +- scripts/build_android_debug.sh | 2 +- scripts/build_playtest.sh | 24 +- scripts/build_portmaster.sh | 128 +-- scripts/import_animalese_voice.sh | 4 +- scripts/normalize_texture_profiles.sh | 2 +- scripts/portmaster/gameinfo.xml | 8 +- ...unch-netfishing.sh => launch-straywild.sh} | 0 scripts/portmaster/port.json | 8 +- .../{netfishing.gptk => straywild.gptk} | 2 +- .../{NETfishing.sh => straywild.sh} | 74 +- scripts/run_validations.sh | 4 +- scripts/setup_android_build.sh | 4 +- scripts/test_player_data_root_paths.gd | 24 +- server/dedicated_server_config.gd | 28 +- settings/player_settings_manager.gd | 2 +- tests/character_rig_validation.gd | 2 +- tests/controller_mapping_validation.gd | 10 +- ...ontroller_menu_accessibility_validation.gd | 63 +- tests/controller_ui_navigation_validation.gd | 12 +- tests/dedicated_server_config_validation.gd | 6 +- tests/fish_hotbar_showcase_validation.gd | 2 +- tests/fish_quality_validation.gd | 2 +- tests/inventory_notepad_art_validation.gd | 4 +- tests/light_performance_profile_validation.gd | 3 - tests/logbook_runtime_validation.gd | 4 +- tests/logbook_validation.gd | 4 +- .../terrain_chunk_generator_test.tscn | 2 +- tests/title_credits_validation.gd | 77 +- tests/ui_scaling_runtime_validation.gd | 30 +- tests/world_spawn_protocol_validation.gd | 2 +- tests/world_time_validation.gd | 4 +- tests/world_weather_validation.gd | 2 +- tools/blender/export_terrain_chunks.py | 2 +- ui/assets/title/netfishing_logo.png | Bin 22579 -> 0 bytes ui/assets/title/straywild_logo.png | Bin 0 -> 27266 bytes ui/assets/title/straywild_logo.png.import | 42 + ui/components/bubble_menu/bubble_button.gd | 121 ++- ui/components/bubble_menu/bubble_cluster.gd | 66 +- .../bubble_menu/bubble_gradient_background.gd | 79 ++ .../bubble_gradient_background.gd.uid | 1 + .../bubble_menu/bubble_hover_drawer.gd | 97 +++ .../bubble_menu/bubble_hover_drawer.gd.uid | 1 + .../bubble_menu/bubble_menu_profile.gd | 10 +- .../bubble_menu/title_menu_profile.tres | 22 + .../title_secondary_menu_profile.tres | 22 + ui/controller_focus_presentation.gd | 2 +- ui/controller_mapping_panel.gd | 2 +- ui/icons/new_menu/close.png | Bin 0 -> 13893 bytes ui/icons/new_menu/close.png.import | 42 + ui/icons/new_menu/credits.png | Bin 0 -> 24978 bytes ui/icons/new_menu/credits.png.import | 42 + ui/icons/new_menu/online.png | Bin 0 -> 9636 bytes ui/icons/new_menu/online.png.import | 42 + ui/icons/new_menu/play.png | Bin 0 -> 25535 bytes .../new_menu/play.png.import} | 16 +- ui/icons/new_menu/settings.png | Bin 0 -> 8161 bytes ui/icons/new_menu/settings.png.import | 42 + ui/save_slots_page.gd | 6 +- ui/settings_panel.gd | 12 +- ui/title_credits_page.tscn | 2 +- ui/title_screen.gd | 736 +++--------------- ui/title_screen.tscn | 346 ++++---- ui/title_water_background.gdshader | 97 --- ui/title_water_background.gdshader.uid | 1 - ...onment.tres => straywild_environment.tres} | 2 +- ...ng_sky.gdshader => straywild_sky.gdshader} | 2 +- ...dshader.uid => straywild_sky.gdshader.uid} | 0 ...netfishing_sky.tres => straywild_sky.tres} | 6 +- ...erinc => straywild_sky_clouds.gdshaderinc} | 0 ...d => straywild_sky_clouds.gdshaderinc.uid} | 0 world/interactables/fishing_shop_world.tscn | 2 +- world/test_world.tscn | 2 +- world/world_time_visual_controller.gd | 2 +- 138 files changed, 1511 insertions(+), 1498 deletions(-) rename addons/{netfishing_shoreline_baker => straywild_shoreline_baker}/plugin.cfg (81%) rename addons/{netfishing_shoreline_baker => straywild_shoreline_baker}/shoreline_auto_baker.gd (100%) rename addons/{netfishing_shoreline_baker => straywild_shoreline_baker}/shoreline_auto_baker.gd.uid (100%) rename art/exported/characters/base/{netfishing_base_character.glb => straywild_base_character.glb} (100%) rename art/exported/characters/base/{netfishing_base_character.glb.import => straywild_base_character.glb.import} (77%) rename art/exported/characters/base/{netfishing_base_character_eyes_simple_shine.png => straywild_base_character_eyes_simple_shine.png} (100%) rename art/exported/characters/base/{netfishing_base_character_eyes_simple_shine.png.import => straywild_base_character_eyes_simple_shine.png.import} (58%) rename art/exported/characters/base/{netfishing_base_character_mouth_three.png => straywild_base_character_mouth_three.png} (100%) rename art/exported/characters/base/{netfishing_base_character_mouth_three.png.import => straywild_base_character_mouth_three.png.import} (59%) rename art/exported/characters/base/{netfishing_base_character_nose_dog_round.png => straywild_base_character_nose_dog_round.png} (100%) rename art/exported/characters/base/{netfishing_base_character_nose_dog_round.png.import => straywild_base_character_nose_dog_round.png.import} (59%) delete mode 100644 art/exported/system_icons/netfishing.ico delete mode 100644 art/exported/system_icons/netfishing_1024.png delete mode 100644 art/exported/system_icons/netfishing_256.png create mode 100644 art/exported/system_icons/straywild.ico create mode 100644 art/exported/system_icons/straywild_1024.png rename art/exported/system_icons/{netfishing_1024.png.import => straywild_1024.png.import} (74%) create mode 100644 art/exported/system_icons/straywild_256.png rename art/exported/system_icons/{netfishing_256.png.import => straywild_256.png.import} (74%) rename art/source/characters/base/{netfishing_base_character.blend => straywild_base_character.blend} (100%) rename art/source/characters/base/{netfishing_base_character.blend.import => straywild_base_character.blend.import} (84%) rename art/source/characters/base/{netfishing_base_character.glb.import => straywild_base_character.glb.import} (77%) rename art/source/characters/base/{netfishing_character_source.blend => straywild_character_source.blend} (100%) rename art/source/characters/base/{netfishing_character_source.blend.import => straywild_character_source.blend.import} (84%) rename art/source/characters/base/{netfishing_character_source.glb.import => straywild_character_source.glb.import} (76%) rename art/source/characters/base/{netfishing_character_source_eyes1_eyebrows1.png => straywild_character_source_eyes1_eyebrows1.png} (100%) rename art/source/characters/base/{netfishing_character_source_eyes1_eyebrows1.png.import => straywild_character_source_eyes1_eyebrows1.png.import} (58%) rename art/source/characters/base/{netfishing_character_source_eyes_simple_shine.png => straywild_character_source_eyes_simple_shine.png} (100%) rename art/source/characters/base/{netfishing_character_source_eyes_simple_shine.png.import => straywild_character_source_eyes_simple_shine.png.import} (58%) rename art/source/characters/base/{netfishing_character_source_mouth1.png => straywild_character_source_mouth1.png} (100%) rename art/source/characters/base/{netfishing_character_source_mouth1.png.import => straywild_character_source_mouth1.png.import} (60%) rename art/source/characters/base/{netfishing_character_source_mouth_three.png => straywild_character_source_mouth_three.png} (100%) rename art/source/characters/base/{netfishing_character_source_mouth_three.png.import => straywild_character_source_mouth_three.png.import} (59%) rename art/source/characters/base/{netfishing_character_source_nose1.2.png => straywild_character_source_nose1.2.png} (100%) rename art/source/characters/base/{netfishing_character_source_nose1.2.png.import => straywild_character_source_nose1.2.png.import} (60%) rename art/source/characters/base/{netfishing_character_source_nose_dog_round.png => straywild_character_source_nose_dog_round.png} (100%) rename art/source/characters/base/{netfishing_character_source_nose_dog_round.png.import => straywild_character_source_nose_dog_round.png.import} (59%) rename scripts/portmaster/{launch-netfishing.sh => launch-straywild.sh} (100%) rename scripts/portmaster/{netfishing.gptk => straywild.gptk} (87%) rename scripts/portmaster/{NETfishing.sh => straywild.sh} (70%) delete mode 100644 ui/assets/title/netfishing_logo.png create mode 100644 ui/assets/title/straywild_logo.png create mode 100644 ui/assets/title/straywild_logo.png.import create mode 100644 ui/components/bubble_menu/bubble_gradient_background.gd create mode 100644 ui/components/bubble_menu/bubble_gradient_background.gd.uid create mode 100644 ui/components/bubble_menu/bubble_hover_drawer.gd create mode 100644 ui/components/bubble_menu/bubble_hover_drawer.gd.uid create mode 100644 ui/components/bubble_menu/title_menu_profile.tres create mode 100644 ui/components/bubble_menu/title_secondary_menu_profile.tres create mode 100644 ui/icons/new_menu/close.png create mode 100644 ui/icons/new_menu/close.png.import create mode 100644 ui/icons/new_menu/credits.png create mode 100644 ui/icons/new_menu/credits.png.import create mode 100644 ui/icons/new_menu/online.png create mode 100644 ui/icons/new_menu/online.png.import create mode 100644 ui/icons/new_menu/play.png rename ui/{assets/title/netfishing_logo.png.import => icons/new_menu/play.png.import} (55%) create mode 100644 ui/icons/new_menu/settings.png create mode 100644 ui/icons/new_menu/settings.png.import delete mode 100644 ui/title_water_background.gdshader delete mode 100644 ui/title_water_background.gdshader.uid rename world/environment/{netfishing_environment.tres => straywild_environment.tres} (87%) rename world/environment/{netfishing_sky.gdshader => straywild_sky.gdshader} (98%) rename world/environment/{netfishing_sky.gdshader.uid => straywild_sky.gdshader.uid} (100%) rename world/environment/{netfishing_sky.tres => straywild_sky.tres} (89%) rename world/environment/{netfishing_sky_clouds.gdshaderinc => straywild_sky_clouds.gdshaderinc} (100%) rename world/environment/{netfishing_sky_clouds.gdshaderinc.uid => straywild_sky_clouds.gdshaderinc.uid} (100%) diff --git a/ASSET-LICENSE.md b/ASSET-LICENSE.md index c438995..9519836 100644 --- a/ASSET-LICENSE.md +++ b/ASSET-LICENSE.md @@ -1,15 +1,15 @@ -# NETfishing Asset License 1.1 +# straywild Asset License 1.1 Copyright © 2026 Woofmeow. All rights reserved except for the permissions expressly granted below. ## 1. Scope -This license applies to original NETfishing artwork, graphics, textures, +This license applies to original straywild artwork, graphics, textures, models, animations, music, sound recordings, narrative content, visual -designs, characters, and other creative assets owned by the NETfishing owners +designs, characters, and other creative assets owned by the straywild owners or licensed to them with authority to sublicense, publishing as Woofmeow (the -**“NETfishing Assets”**). +**“straywild Assets”**). It does not apply to: @@ -17,77 +17,77 @@ It does not apply to: - third-party material identified in the source repository's `docs/ATTRIBUTION.md` or the packaged `ATTRIBUTION.md` notice; - material accompanied by a different license; or -- the NETfishing and Woofmeow names and logos, which are addressed in +- the straywild and Woofmeow names and logos, which are addressed in `TRADEMARKS.md`. Repository location alone does not change third-party ownership or licensing. ## 2. Definitions -**Official NETfishing Software** means: +**Official straywild Software** means: -- an unmodified binary release published by the NETfishing owners through an - official NETfishing distribution channel; or -- a build made from an unmodified official NETfishing source release or tagged +- an unmodified binary release published by the straywild owners through an + official straywild distribution channel; or +- a build made from an unmodified official straywild source release or tagged revision. **Mod** means a non-standalone add-on created to operate with Official -NETfishing Software. A Mod may add, replace, or alter content loaded by the -Official NETfishing Software, but it may not redistribute a replacement copy +straywild Software. A Mod may add, replace, or alter content loaded by the +Official straywild Software, but it may not redistribute a replacement copy of the game or represent a fork, clone, sequel, or separate game. **Contribution Fork** means a source-control fork or clone of an official -NETfishing source repository that is created and maintained in good faith +straywild source repository that is created and maintained in good faith primarily to prepare, test, review, or submit changes for possible inclusion -in Official NETfishing Software. It does not include a fork presented or +in Official straywild Software. It does not include a fork presented or developed as an independent game, community edition, replacement distribution, -or ongoing product separate from the official NETfishing project. +or ongoing product separate from the official straywild project. ## 3. Permission to use the official game -You may reproduce NETfishing Assets as technically necessary to install, run, -back up, and privately modify a lawfully obtained copy of Official NETfishing +You may reproduce straywild Assets as technically necessary to install, run, +back up, and privately modify a lawfully obtained copy of Official straywild Software. You may capture, publish, and monetize screenshots, gameplay videos, livestreams, reviews, tutorials, and similar commentary showing a lawfully -obtained copy of NETfishing. This permission does not authorize redistribution +obtained copy of straywild. This permission does not authorize redistribution of the source asset files or imply endorsement. ## 4. Community Mod license -Subject to this license, you may create, modify, and distribute NETfishing -Assets solely as part of a Mod for Official NETfishing Software. +Subject to this license, you may create, modify, and distribute straywild +Assets solely as part of a Mod for Official straywild Software. This permission is worldwide, nonexclusive, royalty-free, and available for as long as you comply with this license. It permits only the copies of -NETfishing Assets reasonably necessary for the Mod to function. It does not +straywild Assets reasonably necessary for the Mod to function. It does not permit distributing the original game, a substantially complete collection of its assets, or a general-purpose asset pack. A distributed Mod must: -1. require a separately obtained copy of Official NETfishing Software; +1. require a separately obtained copy of Official straywild Software; 2. be presented as unofficial community content; 3. include the following notice in its documentation or distribution page: - > Contains or adapts NETfishing assets © 2026 Woofmeow, used under the - > NETfishing Asset License 1.1. This Mod is unofficial and is not endorsed + > Contains or adapts straywild assets © 2026 Woofmeow, used under the + > straywild Asset License 1.1. This Mod is unofficial and is not endorsed > by Woofmeow. -4. identify material created by the Mod author separately from NETfishing +4. identify material created by the Mod author separately from straywild Assets; and 5. comply with `TRADEMARKS.md`. Mods may be shared without charge and may accept voluntary donations that do not purchase access, features, or preferential treatment. Selling a Mod, -charging for access to it, licensing it commercially, or using NETfishing +charging for access to it, licensing it commercially, or using straywild Assets in paid products requires separate written permission from both -NETfishing owners. +straywild owners. ## 5. Contribution Fork license -Subject to this license, you may reproduce, modify, and distribute NETfishing +Subject to this license, you may reproduce, modify, and distribute straywild Assets within a Contribution Fork. You may also make the nonpublic builds reasonably necessary to develop, test, and review its proposed contribution. @@ -99,8 +99,8 @@ fork are permitted distributions. A Contribution Fork must: 1. remain primarily directed toward preparing changes for possible inclusion - in the official NETfishing project; -2. preserve this license and the official NETfishing project's applicable + in the official straywild project; +2. preserve this license and the official straywild project's applicable attribution, third-party license, and copyright notices; 3. remain visibly linked to or identified as a fork of the official source repository and not be presented as official or endorsed; @@ -109,63 +109,63 @@ A Contribution Fork must: contribution; 5. not publish general-audience binaries, releases, packages, or downloads, operate a persistent public alternative service, or monetize access; -6. not distribute the NETfishing Assets as a standalone extraction, archive, +6. not distribute the straywild Assets as a standalone extraction, archive, or general-purpose asset pack; and 7. comply with `TRADEMARKS.md`. Temporary access-controlled servers may be operated when reasonably necessary to test a proposed contribution. They may not be promoted or maintained as a -public alternative to Official NETfishing Software or its services. +public alternative to Official straywild Software or its services. Submitting work from a Contribution Fork is governed separately by -`CONTRIBUTOR-TERMS.md` and does not require the NETfishing owners to accept the +`CONTRIBUTOR-TERMS.md` and does not require the straywild owners to accept the work. Declining or closing a proposed contribution does not retroactively invalidate good-faith use under this section. A compliant Contribution Fork may remain publicly accessible as an archival development record, but it may not be repurposed for continued development or distribution of a separate -product containing NETfishing Assets. +product containing straywild Assets. ## 6. Uses not permitted Except as expressly permitted by Sections 3, 4, and 5 or by separate written -permission from both NETfishing owners, you may not use or distribute -NETfishing Assets: +permission from both straywild owners, you may not use or distribute +straywild Assets: - in a fork, clone, remake, sequel, or standalone game that is not a qualifying Contribution Fork; -- with a modified distribution of the GPL-covered NETfishing code that is not - Official NETfishing Software, except for nonpublic contribution-testing +- with a modified distribution of the GPL-covered straywild code that is not + Official straywild Software, except for nonpublic contribution-testing builds permitted by Section 5; - in another game, application, asset library, template, or merchandise; - as a substantially complete asset extraction or archive; - in a way that implies sponsorship, endorsement, or official status; - to register a confusingly similar trademark, domain, account, or product identity; or -- under terms that claim ownership of the NETfishing Assets themselves. +- under terms that claim ownership of the straywild Assets themselves. The GPL permits forks and redistribution of the GPL-covered code. Except for a qualifying Contribution Fork under Section 5, this asset license does not -permit those forks to carry NETfishing Assets. A code fork that is not a -Contribution Fork must remove or replace the NETfishing Assets and reserved +permit those forks to carry straywild Assets. A code fork that is not a +Contribution Fork must remove or replace the straywild Assets and reserved branding unless both owners grant separate written permission. ## 7. Ownership of Mods and contribution work You retain ownership of your original Mod material and original material -created in a Contribution Fork. The NETfishing owners retain ownership of the -NETfishing Assets and adaptations of those assets to the extent provided by +created in a Contribution Fork. The straywild owners retain ownership of the +straywild Assets and adaptations of those assets to the extent provided by applicable law. This license does not require you to assign or submit your original material. -It also does not grant you ownership of the underlying NETfishing Assets. If -you intentionally submit material for inclusion in NETfishing, +It also does not grant you ownership of the underlying straywild Assets. If +you intentionally submit material for inclusion in straywild, `CONTRIBUTOR-TERMS.md` applies separately. ## 8. Termination and cure Your permissions under this license terminate automatically if you violate its terms. They are reinstated provisionally when you stop the violation and -permanently if both NETfishing owners do not notify you of the violation +permanently if both straywild owners do not notify you of the violation within sixty days after it has been cured. Termination does not limit remedies available for activity outside this @@ -173,15 +173,15 @@ license. ## 9. No warranty -THE NETFISHING ASSETS ARE PROVIDED “AS IS,” WITHOUT WARRANTY OF ANY KIND, +THE straywild ASSETS ARE PROVIDED “AS IS,” WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, OR NON-INFRINGEMENT. TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE OWNERS WILL NOT BE LIABLE FOR ANY CLAIM, DAMAGES, OR -OTHER LIABILITY ARISING FROM THIS LICENSE OR USE OF THE NETFISHING ASSETS. +OTHER LIABILITY ARISING FROM THIS LICENSE OR USE OF THE straywild ASSETS. ## 10. Additional permission -Uses not granted here require written permission from both NETfishing owners. +Uses not granted here require written permission from both straywild owners. A permission granted to one person or project does not amend this license for others. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7017110..2dc5724 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ # Contribution policy -NETfishing is an owner-directed Woofmeow project and is not accepting +straywild is an owner-directed Woofmeow project and is not accepting unsolicited contributions. Please do not submit pull requests, patches, code, artwork, models, audio, writing, documentation, translations, designs, or other implementation work. Pull requests are disabled for the official @@ -17,7 +17,7 @@ work; it is not a standing invitation to contribute. ## Contribution forks -The [NETfishing Asset License](ASSET-LICENSE.md) contains limited permissions +The [straywild Asset License](ASSET-LICENSE.md) contains limited permissions for qualifying Contribution Forks. Those permissions do not promise review or acceptance and do not override the policy above. Keep the hosting platform's fork relationship visible, preserve all license and attribution notices, and @@ -79,4 +79,4 @@ using display strings as persistent identifiers. New standalone source files should use `SPDX-License-Identifier: GPL-3.0-or-later` where the file format permits comments. Do not add that -identifier to asset files governed by the NETfishing Asset License. +identifier to asset files governed by the straywild Asset License. diff --git a/CONTRIBUTOR-TERMS.md b/CONTRIBUTOR-TERMS.md index e0d801a..261de60 100644 --- a/CONTRIBUTOR-TERMS.md +++ b/CONTRIBUTOR-TERMS.md @@ -1,6 +1,6 @@ -# NETfishing contributor terms +# straywild contributor terms -NETfishing does not accept unsolicited contributions. These terms are retained +straywild does not accept unsolicited contributions. These terms are retained as the governing record for contributions previously accepted after their publication and for specific future work that both Owners expressly invite in writing before submission. They are not a request or standing invitation for @@ -9,9 +9,9 @@ patches, pull requests, assets, or other material. These terms do not retroactively change ownership of earlier work or replace a separately signed agreement. -“Owners” means the two NETfishing co-owners who publish the Project as +“Owners” means the two straywild co-owners who publish the Project as Woofmeow and are publicly credited as Voyager and Endeavour. “Project” means -the official NETfishing game, its servers, tools, documentation, websites, +the official straywild game, its servers, tools, documentation, websites, ports, updates, and promotional materials. ## 1. Your ownership and authority @@ -56,8 +56,8 @@ royalty-free, transferable, and sublicensable license to: - license it to Project users under `ASSET-LICENSE.md` or a later Project asset license jointly approved by the Owners. -This grant is limited to NETfishing, its promotion, and official successor or -derived NETfishing products. It does not transfer your copyright or authorize +This grant is limited to straywild, its promotion, and official successor or +derived straywild products. It does not transfer your copyright or authorize the Owners to sell your contribution as an unrelated standalone asset. ## 4. Documentation accompanying code @@ -78,7 +78,7 @@ or release. ## 6. No automatic ownership, employment, or payment -Submitting a contribution does not provide ownership of NETfishing, create an +Submitting a contribution does not provide ownership of straywild, create an employment, agency, partnership, or fiduciary relationship, or create a right to compensation. Any payment, ownership, or employment arrangement requires a separate written agreement signed by the appropriate parties. diff --git a/README.md b/README.md index 132b3f8..e228e7b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# NETfishing +# straywild -NETfishing is a multiplayer-first fishing game built with Godot 4.7. The +straywild is a multiplayer-first fishing game built with Godot 4.7. The current pre-alpha includes host-authoritative fishing and economy flows, freshwater and saltwater habitats, persistent player data, social features, customization, jobs, and a controller-aware interface. @@ -8,39 +8,39 @@ customization, jobs, and a controller-aware interface. The project is under active development. Interfaces, balance, content, and save migrations may continue to change before a stable release. -NETfishing is developed and published by **Woofmeow**, the independent team of +straywild is developed and published by **Woofmeow**, the independent team of co-owners publicly credited as Voyager and Endeavour. ## Links Patreon: https://www.patreon.com/cw/woofmeowgames -Steam: https://store.steampowered.com/app/5068950/NETfishing/ +Steam: https://store.steampowered.com/app/5068950/straywild/ -Itch.io: https://sol6-vi.itch.io/netfishing +Itch.io: https://sol6-vi.itch.io/straywild Discord: https://discord.gg/5gP22447kc -Matrix: https://matrix.to/#/#netfishing:matrix.makearmy.io +Matrix: https://matrix.to/#/#straywild:matrix.makearmy.io -Repo: https://forge.makearmy.io/woofmeow/netfishing +Repo: https://forge.makearmy.io/woofmeow/straywild -Releases: https://forge.makearmy.io/woofmeow/netfishing/releases +Releases: https://forge.makearmy.io/woofmeow/straywild/releases ## Installing release builds Download and extract the archive for your platform from the official release -page, then run NETfishing from the extracted platform folder. +page, then run straywild from the extracted platform folder. ### macOS Current macOS builds are not signed or notarized. macOS may block the first -launch because it cannot verify the developer. Control-click the NETfishing +launch because it cannot verify the developer. Control-click the straywild application, choose **Open**, then confirm **Open**. If that option is not available, attempt to open the application once, then use **System Settings → Privacy & Security → Open Anyway**. -Only bypass this warning for a NETfishing build downloaded from an official +Only bypass this warning for a straywild build downloaded from an official project release. ## Requirements @@ -110,10 +110,10 @@ world and UI authoring, and testing are consolidated in - Project-owned software code is licensed under [GPL-3.0-or-later](LICENSE). - Project-owned artwork, models, music, and other creative assets are covered - by the [NETfishing Asset License](ASSET-LICENSE.md). It permits community - Mods for official NETfishing software and narrowly scoped contribution forks, + by the [straywild Asset License](ASSET-LICENSE.md). It permits community + Mods for official straywild software and narrowly scoped contribution forks, but not independent forks, clones, or unrelated products. -- The NETfishing and Woofmeow names and branding are reserved as described in +- The straywild and Woofmeow names and branding are reserved as described in [TRADEMARKS.md](TRADEMARKS.md). - Third-party materials retain their own terms; see the consolidated [credits, notices, and provenance record](docs/ATTRIBUTION.md). diff --git a/TRADEMARKS.md b/TRADEMARKS.md index 363248b..fbf49d5 100644 --- a/TRADEMARKS.md +++ b/TRADEMARKS.md @@ -1,7 +1,7 @@ -# NETfishing and Woofmeow branding +# straywild and Woofmeow branding -The NETfishing and Woofmeow names, logos, icons, trade dress, and other source -identifiers are reserved by the NETfishing owners, publishing as Woofmeow. +The straywild and Woofmeow names, logos, icons, trade dress, and other source +identifiers are reserved by the straywild owners, publishing as Woofmeow. Their presence in a GPL-licensed repository does not grant trademark rights or imply permission to represent another product as official. @@ -10,30 +10,30 @@ exist through use and other law. ## Permitted references -You may use the names NETfishing and Woofmeow truthfully to: +You may use the names straywild and Woofmeow truthfully to: - refer to the official game or development team; -- state that software interoperates with or is a Mod for NETfishing; +- state that software interoperates with or is a Mod for straywild; - link to an official repository or distribution page; and - discuss, review, criticize, or report on the Project. Use only the amount of branding reasonably necessary to identify the Project. Do not imply sponsorship, certification, endorsement, or official status. -An unofficial Mod may use wording such as “Example Mod for NETfishing” if its +An unofficial Mod may use wording such as “Example Mod for straywild” if its name and presentation remain clearly distinct and it displays an unofficial notice. ## Contribution forks A qualifying Contribution Fork under `ASSET-LICENSE.md` may retain the -NETfishing and Woofmeow names, logos, icons, and trade dress already present in +straywild and Woofmeow names, logos, icons, and trade dress already present in the official source repository solely as necessary to reproduce, modify, and test the Project while preparing a proposed contribution. The source-control host's visible fork relationship or an equivalent repository notice must make its unofficial contribution purpose clear. -This permission does not allow a Contribution Fork to use NETfishing or +This permission does not allow a Contribution Fork to use straywild or Woofmeow branding to advertise a public build, release, service, community edition, or independent product. It does not imply acceptance, sponsorship, endorsement, or official status. @@ -44,7 +44,7 @@ The GNU GPL permits forks and redistribution of covered code. A fork or modified distribution that is not a qualifying Contribution Fork must: - use a distinct product name; -- remove NETfishing and Woofmeow logos, icons, and official trade dress; +- remove straywild and Woofmeow logos, icons, and official trade dress; - avoid confusingly similar names, domains, package identifiers, and account names; and - clearly identify itself as independent and unofficial. @@ -53,4 +53,4 @@ These branding terms do not limit rights granted by the GPL to the software code or lawful nominative, descriptive, comparative, or fair use. Permission for broader branding use must be obtained in writing from both -NETfishing owners. +straywild owners. diff --git a/addons/netfishing_shoreline_baker/plugin.cfg b/addons/straywild_shoreline_baker/plugin.cfg similarity index 81% rename from addons/netfishing_shoreline_baker/plugin.cfg rename to addons/straywild_shoreline_baker/plugin.cfg index c8c4d06..c3f4e47 100644 --- a/addons/netfishing_shoreline_baker/plugin.cfg +++ b/addons/straywild_shoreline_baker/plugin.cfg @@ -1,6 +1,6 @@ [plugin] -name="NETfishing Shoreline Auto-Baker" +name="straywild Shoreline Auto-Baker" description="Rebuilds configured static shoreline ribbons after authored terrain reimports." author="woofmeow" version="1.0.0" diff --git a/addons/netfishing_shoreline_baker/shoreline_auto_baker.gd b/addons/straywild_shoreline_baker/shoreline_auto_baker.gd similarity index 100% rename from addons/netfishing_shoreline_baker/shoreline_auto_baker.gd rename to addons/straywild_shoreline_baker/shoreline_auto_baker.gd diff --git a/addons/netfishing_shoreline_baker/shoreline_auto_baker.gd.uid b/addons/straywild_shoreline_baker/shoreline_auto_baker.gd.uid similarity index 100% rename from addons/netfishing_shoreline_baker/shoreline_auto_baker.gd.uid rename to addons/straywild_shoreline_baker/shoreline_auto_baker.gd.uid diff --git a/art/exported/characters/base/netfishing_base_character.glb b/art/exported/characters/base/straywild_base_character.glb similarity index 100% rename from art/exported/characters/base/netfishing_base_character.glb rename to art/exported/characters/base/straywild_base_character.glb diff --git a/art/exported/characters/base/netfishing_base_character.glb.import b/art/exported/characters/base/straywild_base_character.glb.import similarity index 77% rename from art/exported/characters/base/netfishing_base_character.glb.import rename to art/exported/characters/base/straywild_base_character.glb.import index b1409e1..96925de 100644 --- a/art/exported/characters/base/netfishing_base_character.glb.import +++ b/art/exported/characters/base/straywild_base_character.glb.import @@ -4,12 +4,12 @@ importer="scene" importer_version=1 type="PackedScene" uid="uid://w7n4gjqq1juc" -path="res://.godot/imported/netfishing_base_character.glb-0167c087f16181d405afb962dc877d2c.scn" +path="res://.godot/imported/straywild_base_character.glb-65021653e51a906d3b4a3494f170317f.scn" [deps] -source_file="res://art/exported/characters/base/netfishing_base_character.glb" -dest_files=["res://.godot/imported/netfishing_base_character.glb-0167c087f16181d405afb962dc877d2c.scn"] +source_file="res://art/exported/characters/base/straywild_base_character.glb" +dest_files=["res://.godot/imported/straywild_base_character.glb-65021653e51a906d3b4a3494f170317f.scn"] [params] diff --git a/art/exported/characters/base/netfishing_base_character_eyes_simple_shine.png b/art/exported/characters/base/straywild_base_character_eyes_simple_shine.png similarity index 100% rename from art/exported/characters/base/netfishing_base_character_eyes_simple_shine.png rename to art/exported/characters/base/straywild_base_character_eyes_simple_shine.png diff --git a/art/exported/characters/base/netfishing_base_character_eyes_simple_shine.png.import b/art/exported/characters/base/straywild_base_character_eyes_simple_shine.png.import similarity index 58% rename from art/exported/characters/base/netfishing_base_character_eyes_simple_shine.png.import rename to art/exported/characters/base/straywild_base_character_eyes_simple_shine.png.import index 4141bca..ddf8bb7 100644 --- a/art/exported/characters/base/netfishing_base_character_eyes_simple_shine.png.import +++ b/art/exported/characters/base/straywild_base_character_eyes_simple_shine.png.import @@ -3,8 +3,8 @@ importer="texture" type="CompressedTexture2D" uid="uid://dyjwgkgw0syo8" -path.s3tc="res://.godot/imported/netfishing_base_character_eyes_simple_shine.png-140bfa3aa0b6f662e8ff9e5721213a61.s3tc.ctex" -path.etc2="res://.godot/imported/netfishing_base_character_eyes_simple_shine.png-140bfa3aa0b6f662e8ff9e5721213a61.etc2.ctex" +path.s3tc="res://.godot/imported/straywild_base_character_eyes_simple_shine.png-200a946ddace2078bbe44addb4e4524c.s3tc.ctex" +path.etc2="res://.godot/imported/straywild_base_character_eyes_simple_shine.png-200a946ddace2078bbe44addb4e4524c.etc2.ctex" metadata={ "imported_formats": ["s3tc_bptc", "etc2_astc"], "vram_texture": true @@ -15,8 +15,8 @@ generator_parameters={ [deps] -source_file="res://art/exported/characters/base/netfishing_base_character_eyes_simple_shine.png" -dest_files=["res://.godot/imported/netfishing_base_character_eyes_simple_shine.png-140bfa3aa0b6f662e8ff9e5721213a61.s3tc.ctex", "res://.godot/imported/netfishing_base_character_eyes_simple_shine.png-140bfa3aa0b6f662e8ff9e5721213a61.etc2.ctex"] +source_file="res://art/exported/characters/base/straywild_base_character_eyes_simple_shine.png" +dest_files=["res://.godot/imported/straywild_base_character_eyes_simple_shine.png-200a946ddace2078bbe44addb4e4524c.s3tc.ctex", "res://.godot/imported/straywild_base_character_eyes_simple_shine.png-200a946ddace2078bbe44addb4e4524c.etc2.ctex"] [params] diff --git a/art/exported/characters/base/netfishing_base_character_mouth_three.png b/art/exported/characters/base/straywild_base_character_mouth_three.png similarity index 100% rename from art/exported/characters/base/netfishing_base_character_mouth_three.png rename to art/exported/characters/base/straywild_base_character_mouth_three.png diff --git a/art/exported/characters/base/netfishing_base_character_mouth_three.png.import b/art/exported/characters/base/straywild_base_character_mouth_three.png.import similarity index 59% rename from art/exported/characters/base/netfishing_base_character_mouth_three.png.import rename to art/exported/characters/base/straywild_base_character_mouth_three.png.import index 10d0721..ba0ec2c 100644 --- a/art/exported/characters/base/netfishing_base_character_mouth_three.png.import +++ b/art/exported/characters/base/straywild_base_character_mouth_three.png.import @@ -3,8 +3,8 @@ importer="texture" type="CompressedTexture2D" uid="uid://dt5gitdtjdvcd" -path.s3tc="res://.godot/imported/netfishing_base_character_mouth_three.png-90b4a98403d2a291a56a8ed42aaa8473.s3tc.ctex" -path.etc2="res://.godot/imported/netfishing_base_character_mouth_three.png-90b4a98403d2a291a56a8ed42aaa8473.etc2.ctex" +path.s3tc="res://.godot/imported/straywild_base_character_mouth_three.png-5bcf329b31a11eff496760a63e62d0e2.s3tc.ctex" +path.etc2="res://.godot/imported/straywild_base_character_mouth_three.png-5bcf329b31a11eff496760a63e62d0e2.etc2.ctex" metadata={ "imported_formats": ["s3tc_bptc", "etc2_astc"], "vram_texture": true @@ -15,8 +15,8 @@ generator_parameters={ [deps] -source_file="res://art/exported/characters/base/netfishing_base_character_mouth_three.png" -dest_files=["res://.godot/imported/netfishing_base_character_mouth_three.png-90b4a98403d2a291a56a8ed42aaa8473.s3tc.ctex", "res://.godot/imported/netfishing_base_character_mouth_three.png-90b4a98403d2a291a56a8ed42aaa8473.etc2.ctex"] +source_file="res://art/exported/characters/base/straywild_base_character_mouth_three.png" +dest_files=["res://.godot/imported/straywild_base_character_mouth_three.png-5bcf329b31a11eff496760a63e62d0e2.s3tc.ctex", "res://.godot/imported/straywild_base_character_mouth_three.png-5bcf329b31a11eff496760a63e62d0e2.etc2.ctex"] [params] diff --git a/art/exported/characters/base/netfishing_base_character_nose_dog_round.png b/art/exported/characters/base/straywild_base_character_nose_dog_round.png similarity index 100% rename from art/exported/characters/base/netfishing_base_character_nose_dog_round.png rename to art/exported/characters/base/straywild_base_character_nose_dog_round.png diff --git a/art/exported/characters/base/netfishing_base_character_nose_dog_round.png.import b/art/exported/characters/base/straywild_base_character_nose_dog_round.png.import similarity index 59% rename from art/exported/characters/base/netfishing_base_character_nose_dog_round.png.import rename to art/exported/characters/base/straywild_base_character_nose_dog_round.png.import index 71d25b6..cb2c573 100644 --- a/art/exported/characters/base/netfishing_base_character_nose_dog_round.png.import +++ b/art/exported/characters/base/straywild_base_character_nose_dog_round.png.import @@ -3,8 +3,8 @@ importer="texture" type="CompressedTexture2D" uid="uid://bmho1ryst3smt" -path.s3tc="res://.godot/imported/netfishing_base_character_nose_dog_round.png-0008adff5271dd0403e610ef13dd52cf.s3tc.ctex" -path.etc2="res://.godot/imported/netfishing_base_character_nose_dog_round.png-0008adff5271dd0403e610ef13dd52cf.etc2.ctex" +path.s3tc="res://.godot/imported/straywild_base_character_nose_dog_round.png-e6909a2c139cf4a2748c2b79d1e12d92.s3tc.ctex" +path.etc2="res://.godot/imported/straywild_base_character_nose_dog_round.png-e6909a2c139cf4a2748c2b79d1e12d92.etc2.ctex" metadata={ "imported_formats": ["s3tc_bptc", "etc2_astc"], "vram_texture": true @@ -15,8 +15,8 @@ generator_parameters={ [deps] -source_file="res://art/exported/characters/base/netfishing_base_character_nose_dog_round.png" -dest_files=["res://.godot/imported/netfishing_base_character_nose_dog_round.png-0008adff5271dd0403e610ef13dd52cf.s3tc.ctex", "res://.godot/imported/netfishing_base_character_nose_dog_round.png-0008adff5271dd0403e610ef13dd52cf.etc2.ctex"] +source_file="res://art/exported/characters/base/straywild_base_character_nose_dog_round.png" +dest_files=["res://.godot/imported/straywild_base_character_nose_dog_round.png-e6909a2c139cf4a2748c2b79d1e12d92.s3tc.ctex", "res://.godot/imported/straywild_base_character_nose_dog_round.png-e6909a2c139cf4a2748c2b79d1e12d92.etc2.ctex"] [params] diff --git a/art/exported/system_icons/netfishing.ico b/art/exported/system_icons/netfishing.ico deleted file mode 100644 index dc5bdae44f0e878ab1ef377195fd128abd87e4cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 370326 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

L5C7DU|9AD{Kl=Mee?QJnztjJB^`V1oktIAW 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 (|N$JpKmbZon0$1_%5y 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 v^Qn7J>b{>$CZ6p(OiHG<5 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