From 5efa92f5df8a58272fec2a3c46353290f24c3d82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=A8=E8=90=BD=E5=9F=BA=E5=9B=B4=E8=99=BE?= <3161880837@qq.com> Date: Wed, 5 Nov 2025 22:29:11 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E5=A4=9A=E4=BA=BA=E6=B8=B8=E6=88=8F):=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=A4=9A=E4=BA=BA=E6=B8=B8=E6=88=8F=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=8F=8A=E7=9B=B8=E5=85=B3UI=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在WorldManager中初始化ENetMultiplayerPeer - 移除EntityBase中冗余的peer初始化 - 添加多人游戏面板及相关输入控件 - 更新难度显示格式为范围表示 - 为主题添加LineEdit字体大小设置 --- .../Scenes/FullscreenPanels/Starter.tscn | 97 ++++++++++++++++--- scripts/Contents/Panels/Starter.gd | 2 +- scripts/Statemachine/EntityBase.gd | 1 - scripts/Tools/Managers/WorldManager.gd | 2 + themes/main.tres | 1 + 5 files changed, 90 insertions(+), 13 deletions(-) diff --git a/components/Scenes/FullscreenPanels/Starter.tscn b/components/Scenes/FullscreenPanels/Starter.tscn index fc7edcd..9c0c459 100644 --- a/components/Scenes/FullscreenPanels/Starter.tscn +++ b/components/Scenes/FullscreenPanels/Starter.tscn @@ -1,14 +1,23 @@ -[gd_scene load_steps=5 format=3 uid="uid://c0r1i5tdbwljj"] +[gd_scene load_steps=8 format=3 uid="uid://c0r1i5tdbwljj"] [ext_resource type="PackedScene" uid="uid://d3qojeqa3difn" path="res://components/Abstracts/FullscreenPanelBase.tscn" id="1_o0yse"] -[ext_resource type="Script" path="res://scripts/Contents/Panels/Starter.gd" id="2_ic0aq"] +[ext_resource type="Script" uid="uid://codlmfbuyis33" path="res://scripts/Contents/Panels/Starter.gd" id="2_ic0aq"] [ext_resource type="FontFile" uid="uid://v3frxpuvtj5o" path="res://resources/fonts/syht-bold.ttf" id="3_sopoi"] +[ext_resource type="Theme" uid="uid://dhvs6urgf6jr5" path="res://themes/main.tres" id="4_lfxcn"] [sub_resource type="LabelSettings" id="LabelSettings_ch0dv"] font = ExtResource("3_sopoi") font_size = 45 outline_size = 2 +[sub_resource type="LabelSettings" id="LabelSettings_lfxcn"] +font_size = 20 +outline_size = 1 + +[sub_resource type="LabelSettings" id="LabelSettings_sdsu8"] +font_size = 12 +outline_size = 1 + [node name="Starter" instance=ExtResource("1_o0yse")] offset_top = 0.0 offset_bottom = 0.0 @@ -25,32 +34,98 @@ label_settings = SubResource("LabelSettings_ch0dv") [node name="starter" type="VBoxContainer" parent="content/wrapper" index="1"] layout_mode = 2 -theme_override_constants/separation = 10 +theme_override_constants/separation = 30 -[node name="diffs" type="HBoxContainer" parent="content/wrapper/starter" index="0"] +[node name="singleplayer" type="VBoxContainer" parent="content/wrapper/starter" index="0"] +layout_mode = 2 + +[node name="diffs" type="HBoxContainer" parent="content/wrapper/starter/singleplayer" index="0"] layout_mode = 2 alignment = 1 -[node name="tip" type="Label" parent="content/wrapper/starter/diffs" index="0"] +[node name="tip" type="Label" parent="content/wrapper/starter/singleplayer/diffs" index="0"] layout_mode = 2 text = "选择难度:" -[node name="diffEdit" type="HSlider" parent="content/wrapper/starter/diffs" index="1"] +[node name="diffEdit" type="HSlider" parent="content/wrapper/starter/singleplayer/diffs" index="1"] unique_name_in_owner = true custom_minimum_size = Vector2(100, 0) layout_mode = 2 size_flags_vertical = 4 -min_value = -3.0 +min_value = -5.0 max_value = 5.0 value = 1.0 -[node name="levelShow" type="Label" parent="content/wrapper/starter/diffs" index="2"] +[node name="levelShow" type="Label" parent="content/wrapper/starter/singleplayer/diffs" index="2"] unique_name_in_owner = true layout_mode = 2 -text = "1/10" +text = "1 ∈ [-5, 5]" -[node name="startBtn" type="Button" parent="content/wrapper/starter" index="1"] +[node name="startBtn" type="Button" parent="content/wrapper/starter/singleplayer" index="1"] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 4 -text = "开始" +theme = ExtResource("4_lfxcn") +text = "单人游戏" + +[node name="multiplayer" type="VBoxContainer" parent="content/wrapper/starter" index="1"] +layout_mode = 2 +theme_override_constants/separation = 5 +alignment = 1 + +[node name="title" type="Label" parent="content/wrapper/starter/multiplayer" index="0"] +layout_mode = 2 +size_flags_horizontal = 4 +text = "多人游戏" +label_settings = SubResource("LabelSettings_lfxcn") + +[node name="host" type="HBoxContainer" parent="content/wrapper/starter/multiplayer" index="1"] +layout_mode = 2 +alignment = 1 + +[node name="tip" type="Label" parent="content/wrapper/starter/multiplayer/host" index="0"] +layout_mode = 2 +text = "地址" +label_settings = SubResource("LabelSettings_sdsu8") + +[node name="hostInput" type="LineEdit" parent="content/wrapper/starter/multiplayer/host" index="1"] +unique_name_in_owner = true +layout_mode = 2 +theme = ExtResource("4_lfxcn") +text = "127.0.0.1" +placeholder_text = "主机" +expand_to_text_length = true +emoji_menu_enabled = false +virtual_keyboard_type = 7 +select_all_on_focus = true + +[node name="separator" type="Label" parent="content/wrapper/starter/multiplayer/host" index="2"] +layout_mode = 2 +text = ":" + +[node name="portInput" type="LineEdit" parent="content/wrapper/starter/multiplayer/host" index="3"] +unique_name_in_owner = true +layout_mode = 2 +theme = ExtResource("4_lfxcn") +text = "1145" +placeholder_text = "端口" +expand_to_text_length = true +emoji_menu_enabled = false +virtual_keyboard_type = 2 +select_all_on_focus = true + +[node name="operation" type="HBoxContainer" parent="content/wrapper/starter/multiplayer" index="2"] +layout_mode = 2 +alignment = 1 + +[node name="launchBtn" type="Button" parent="content/wrapper/starter/multiplayer/operation" index="0"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +text = "启动服务器" + +[node name="connectBtn" type="Button" parent="content/wrapper/starter/multiplayer/operation" index="1"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +text = "连接服务器" diff --git a/scripts/Contents/Panels/Starter.gd b/scripts/Contents/Panels/Starter.gd index b377f1f..2360a76 100644 --- a/scripts/Contents/Panels/Starter.gd +++ b/scripts/Contents/Panels/Starter.gd @@ -12,5 +12,5 @@ func _ready(): UIState.closeCurrentPanel() ) func _physics_process(_delta): - levelShow.text = "%s/10" % diffEdit.value + levelShow.text = "%d ∈ [%d, %d]" % [diffEdit.value, diffEdit.min_value, diffEdit.max_value] GameRule.difficulty = diffEdit.value diff --git a/scripts/Statemachine/EntityBase.gd b/scripts/Statemachine/EntityBase.gd index 56fc9aa..5bef567 100644 --- a/scripts/Statemachine/EntityBase.gd +++ b/scripts/Statemachine/EntityBase.gd @@ -104,7 +104,6 @@ var currentStage: int = 0 var spawnTime: float = 0 func _ready(): - var peer=ENetMultiplayerPeer.new() spawnTime = WorldManager.getTime() register() var selfStatebar: EntityStateBar = $"%statebar" diff --git a/scripts/Tools/Managers/WorldManager.gd b/scripts/Tools/Managers/WorldManager.gd index c8b3609..c5eddfc 100644 --- a/scripts/Tools/Managers/WorldManager.gd +++ b/scripts/Tools/Managers/WorldManager.gd @@ -4,11 +4,13 @@ class_name WorldManager static var rootNode: Node2D static var tree: SceneTree static var runningTime: int = 0 +static var peer: ENetMultiplayerPeer func _ready(): tree = get_tree() rootNode = self ComponentManager.init() + peer = ENetMultiplayerPeer.new() func _physics_process(delta): runningTime += delta * 1000 if EntityBase.mobCount() == 0 and runningTime > 3000: diff --git a/themes/main.tres b/themes/main.tres index 2801177..7cc2da5 100644 --- a/themes/main.tres +++ b/themes/main.tres @@ -102,5 +102,6 @@ Button/styles/hover = SubResource("StyleBoxFlat_4j7ii") Button/styles/hover_pressed = SubResource("StyleBoxFlat_mt3v0") Button/styles/normal = SubResource("StyleBoxFlat_3nqwh") Button/styles/pressed = SubResource("StyleBoxFlat_iekfp") +LineEdit/font_sizes/font_size = 12 ProgressBar/styles/background = SubResource("StyleBoxFlat_a507o") ProgressBar/styles/fill = SubResource("StyleBoxFlat_ef7vq")