1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-28 06:51:54 +08:00

feat(UI): 添加武器面板功能

实现武器面板的打开关闭逻辑,包括:
- 创建WeaponPanel脚本处理武器转移
- 在UIState中添加武器面板输入控制
- 更新UI场景添加武器面板节点
- 简化武器面板场景结构
This commit is contained in:
2025-09-06 11:23:11 +08:00
parent a083069848
commit 81c84e4dc8
5 changed files with 34 additions and 14 deletions
+4 -13
View File
@@ -1,25 +1,16 @@
[gd_scene load_steps=5 format=3 uid="uid://dekcqdhrjs07u"]
[gd_scene load_steps=3 format=3 uid="uid://dekcqdhrjs07u"]
[ext_resource type="PackedScene" uid="uid://d3qojeqa3difn" path="res://components/Abstracts/FullscreenPanelBase.tscn" id="1_yodmq"]
[ext_resource type="PackedScene" uid="uid://c0n3igy4hucrg" path="res://components/Weapons/PurpleCrystal.tscn" id="2_5r0we"]
[ext_resource type="PackedScene" uid="uid://cxabqjo7skxev" path="res://components/Weapons/BigLaser.tscn" id="3_6xf37"]
[ext_resource type="PackedScene" uid="uid://wl8u5m52708w" path="res://components/Weapons/LGBT.tscn" id="4_s13oq"]
[ext_resource type="Script" path="res://scripts/Contents/Panels/WeaponPanel.gd" id="2_6alu1"]
[node name="Weapon" instance=ExtResource("1_yodmq")]
script = ExtResource("2_6alu1")
[node name="wrapper" parent="content" index="0"]
theme_override_constants/separation = 50
[node name="box" type="HBoxContainer" parent="content/wrapper" index="0"]
unique_name_in_owner = true
layout_mode = 2
theme_override_constants/separation = 20
alignment = 1
[node name="PurpleCrystal" parent="content/wrapper/box" index="0" instance=ExtResource("2_5r0we")]
layout_mode = 2
[node name="BigLaser" parent="content/wrapper/box" index="1" instance=ExtResource("3_6xf37")]
layout_mode = 2
[node name="???" parent="content/wrapper/box" index="2" instance=ExtResource("4_s13oq")]
layout_mode = 2
+6 -1
View File
@@ -1,4 +1,4 @@
[gd_scene load_steps=18 format=3 uid="uid://dfwg750a47ggx"]
[gd_scene load_steps=19 format=3 uid="uid://dfwg750a47ggx"]
[ext_resource type="PackedScene" uid="uid://ofpg5s3j7esv" path="res://components/UI/BossBar.tscn" id="1_2pe58"]
[ext_resource type="Script" path="res://scripts/Statemachine/UIState.gd" id="1_f00a6"]
@@ -12,6 +12,7 @@
[ext_resource type="PackedScene" uid="uid://d1ulrvupa76ap" path="res://components/UI/ColorBar.tscn" id="9_44nw8"]
[ext_resource type="StyleBox" uid="uid://ddnjus87wwlm8" path="res://styleboxes/leftPanel.tres" id="11_67ghp"]
[ext_resource type="PackedScene" uid="uid://cksonrrx38k36" path="res://components/Scenes/FullscreenPanels/Pause.tscn" id="12_jkm6o"]
[ext_resource type="PackedScene" uid="uid://dekcqdhrjs07u" path="res://components/Scenes/FullscreenPanels/Weapon.tscn" id="13_bmc24"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ri8gw"]
content_margin_left = 20.0
@@ -272,3 +273,7 @@ layout_mode = 1
[node name="Pause" parent="root/panels" instance=ExtResource("12_jkm6o")]
layout_mode = 1
[node name="Weapon" parent="root/panels" instance=ExtResource("13_bmc24")]
visible = false
layout_mode = 1
+1
View File
@@ -1,3 +1,4 @@
@tool
extends FullscreenPanelBase
@onready var audio = $"%audio"
+13
View File
@@ -0,0 +1,13 @@
@tool
extends FullscreenPanelBase
@onready var box = $"%box"
func beforeOpen():
for weapon in UIState.player.weapons:
UIState.player.weaponStore.remove_child(weapon)
box.add_child(weapon)
func afterClose():
for weapon in box.get_children():
box.remove_child(weapon)
UIState.player.weaponStore.add_child(weapon)
+10
View File
@@ -49,6 +49,16 @@ func _physics_process(_delta):
closeCurrentPanel()
else:
setPanel("Pause")
if Input.is_action_just_pressed("openWeapon"):
var canOpen = true
if currentPanel:
if currentPanel.name == "Weapon":
closeCurrentPanel()
canOpen = false
elif ["MakeFeed", "GameOver"].has(currentPanel.name):
canOpen = false
if canOpen:
setPanel("Weapon")
static func setPanel(targetName: String = ""):
currentPanel = null