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.
338 lines
11 KiB
Text
338 lines
11 KiB
Text
[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"]
|
|
|
|
[node name="JoinGamePage" 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 = "join game"
|
|
horizontal_alignment = 1
|
|
|
|
[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 = 8
|
|
alignment = 1
|
|
|
|
[node name="DiscoverButton" type="Button" parent="MainPanel/OuterMargin/Layout/TabBar"]
|
|
unique_name_in_owner = true
|
|
custom_minimum_size = Vector2(165, 52)
|
|
layout_mode = 2
|
|
focus_mode = 2
|
|
text = "discover"
|
|
script = ExtResource("3_tab")
|
|
|
|
[node name="FriendsButton" 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 = "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="MainPanel/OuterMargin/Layout/TabBar"]
|
|
unique_name_in_owner = true
|
|
custom_minimum_size = Vector2(140, 52)
|
|
layout_mode = 2
|
|
focus_mode = 2
|
|
text = "saved"
|
|
script = ExtResource("3_tab")
|
|
palette_index = 2
|
|
|
|
[node name="RecentButton" 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 = "recent"
|
|
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="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
|
|
allow_reselect = true
|
|
same_column_width = true
|
|
|
|
[node name="DetailsPanel" type="PanelContainer" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/PageStack/ListContent"]
|
|
unique_name_in_owner = true
|
|
custom_minimum_size = Vector2(0, 100)
|
|
layout_mode = 2
|
|
|
|
[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="DirectContent" type="VBoxContainer" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/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 = 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_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="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_font_sizes/font_size = 13
|
|
text = "Only visible on this device."
|
|
horizontal_alignment = 1
|
|
|
|
[node name="Spacer" type="Control" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/PageStack/DirectContent"]
|
|
layout_mode = 2
|
|
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="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/Actions"]
|
|
unique_name_in_owner = true
|
|
visible = false
|
|
custom_minimum_size = Vector2(120, 46)
|
|
layout_mode = 2
|
|
focus_mode = 2
|
|
text = "refresh"
|
|
|
|
[node name="JoinButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/Actions"]
|
|
unique_name_in_owner = true
|
|
custom_minimum_size = Vector2(120, 46)
|
|
layout_mode = 2
|
|
focus_mode = 2
|
|
text = "join"
|
|
|
|
[node name="SaveButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/Actions"]
|
|
unique_name_in_owner = true
|
|
custom_minimum_size = Vector2(130, 46)
|
|
layout_mode = 2
|
|
focus_mode = 2
|
|
text = "save server"
|
|
|
|
[node name="EditButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/Actions"]
|
|
unique_name_in_owner = true
|
|
visible = false
|
|
custom_minimum_size = Vector2(110, 46)
|
|
layout_mode = 2
|
|
focus_mode = 2
|
|
text = "edit"
|
|
|
|
[node name="FavoriteButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/Actions"]
|
|
unique_name_in_owner = true
|
|
visible = false
|
|
custom_minimum_size = Vector2(130, 46)
|
|
layout_mode = 2
|
|
focus_mode = 2
|
|
text = "favorite"
|
|
|
|
[node name="DeleteButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/Actions"]
|
|
unique_name_in_owner = true
|
|
visible = false
|
|
custom_minimum_size = Vector2(110, 46)
|
|
layout_mode = 2
|
|
focus_mode = 2
|
|
text = "delete"
|
|
|
|
[node name="CancelButton" type="Button" parent="MainPanel/OuterMargin/Layout/ContentPanel/ContentMargin/ContentLayout/Actions"]
|
|
unique_name_in_owner = true
|
|
visible = false
|
|
custom_minimum_size = Vector2(120, 46)
|
|
layout_mode = 2
|
|
focus_mode = 2
|
|
text = "cancel"
|
|
|
|
[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")]
|
|
unique_name_in_owner = true
|