mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-06-25 04:52:29 +08:00
feat(UI): 添加物品收集显示功能
- 新增CameraManager脚本用于相机管理 - 在UI场景中添加物品收集容器VBoxContainer - 扩展ItemShow类支持生成物品显示实例 - 修改EntityBase添加物品收集信号和处理逻辑 - 调整BossBar位置和布局属性
This commit is contained in:
@@ -118,3 +118,18 @@ text = "100.0"
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(0, 5)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="itemCollect" type="VBoxContainer" parent="root"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 1
|
||||
anchors_preset = -1
|
||||
anchor_left = 0.05
|
||||
anchor_top = 0.85
|
||||
anchor_right = 0.15
|
||||
anchor_bottom = 0.95
|
||||
offset_left = 0.399998
|
||||
offset_top = 45.2
|
||||
offset_right = -80.8
|
||||
offset_bottom = 0.400024
|
||||
grow_vertical = 0
|
||||
theme_override_constants/separation = 10
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://dmxi1ikn6avig"]
|
||||
[gd_scene load_steps=6 format=3 uid="uid://dmxi1ikn6avig"]
|
||||
|
||||
[ext_resource type="Script" path="res://scripts/Tools/WorldManager.gd" id="1_lxsxj"]
|
||||
[ext_resource type="PackedScene" uid="uid://dfwg750a47ggx" path="res://components/Scenes/UI.tscn" id="2_04cdd"]
|
||||
[ext_resource type="PackedScene" uid="uid://bm7ymrri6pykb" path="res://components/Characters/Rooster.tscn" id="3_5ui6q"]
|
||||
[ext_resource type="Script" path="res://scripts/Tools/CameraManager.gd" id="5_mk7bv"]
|
||||
[ext_resource type="Texture2D" uid="uid://ckk8kahhof06u" path="res://resources/maps/Castle 2.png" id="6_p0nkj"]
|
||||
|
||||
[node name="world" type="Node2D"]
|
||||
@@ -24,3 +25,4 @@ process_mode = 3
|
||||
position = Vector2(0, -100)
|
||||
process_callback = 0
|
||||
position_smoothing_enabled = true
|
||||
script = ExtResource("5_mk7bv")
|
||||
|
||||
@@ -27,9 +27,9 @@ anchor_left = 0.2
|
||||
anchor_top = 1.0
|
||||
anchor_right = 0.8
|
||||
anchor_bottom = 1.0
|
||||
offset_top = -40.0
|
||||
offset_top = -65.0
|
||||
offset_right = 0.0
|
||||
offset_bottom = -20.0
|
||||
offset_bottom = -40.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 0
|
||||
|
||||
@@ -48,19 +48,16 @@ layout_mode = 2
|
||||
[node name="name" type="Label" parent="health/panel/label"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 8
|
||||
text = "BossName"
|
||||
label_settings = SubResource("LabelSettings_esyuk")
|
||||
|
||||
[node name="value" type="Label" parent="health/panel/label"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 8
|
||||
text = "percent"
|
||||
label_settings = SubResource("LabelSettings_esyuk")
|
||||
|
||||
[node name="percent" type="Label" parent="health/panel/label"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 8
|
||||
text = "%"
|
||||
label_settings = SubResource("LabelSettings_esyuk")
|
||||
|
||||
@@ -7,6 +7,8 @@ signal healthChanged(health: float)
|
||||
|
||||
signal energyChanged(energy: float)
|
||||
|
||||
signal itemCollected(itemType: ItemStore.ItemType, amount: int)
|
||||
|
||||
var fields = {
|
||||
FieldStore.Entity.MAX_HEALTH: 100,
|
||||
FieldStore.Entity.DAMAGE_MULTIPILER: 1,
|
||||
@@ -72,6 +74,7 @@ func _ready():
|
||||
if body is ItemDropped:
|
||||
inventory[body.item] += body.stackCount
|
||||
playSound("collect")
|
||||
itemCollected.emit(body.item, body.stackCount)
|
||||
body.queue_free()
|
||||
)
|
||||
energyChanged.connect(
|
||||
@@ -79,6 +82,10 @@ func _ready():
|
||||
UIState.energyPercent.maxValue = fields.get(FieldStore.Entity.MAX_ENERGY)
|
||||
UIState.energyPercent.setCurrent(newEnergy)
|
||||
)
|
||||
itemCollected.connect(
|
||||
func(itemType, amount):
|
||||
UIState.itemCollect.add_child(ItemShow.generate(itemType, amount))
|
||||
)
|
||||
else:
|
||||
currentFocusedBoss = get_tree().get_nodes_in_group("players")[0]
|
||||
healthChanged.emit(health)
|
||||
|
||||
@@ -11,3 +11,9 @@ class_name ItemShow
|
||||
func _physics_process(_delta):
|
||||
avatarTexture.texture = ItemStore.getTexture(type)
|
||||
countLabel.text = str(count)
|
||||
|
||||
static func generate(itemType: ItemStore.ItemType, itemCount: int = 1):
|
||||
var item = preload("res://components/UI/ItemShow.tscn").instantiate()
|
||||
item.type = itemType
|
||||
item.count = itemCount
|
||||
return item
|
||||
|
||||
@@ -13,11 +13,13 @@ static var bossbar: EntityStateBar
|
||||
static var currentPanel: FullscreenPanelBase = null
|
||||
static var panels: Control
|
||||
static var energyPercent: ColorBar
|
||||
static var itemCollect: VBoxContainer
|
||||
|
||||
func _ready():
|
||||
bossbar = $"%bossbar"
|
||||
panels = $"%panels"
|
||||
energyPercent = $"%percent"
|
||||
itemCollect = $"%itemCollect"
|
||||
func _process(_delta):
|
||||
bossbar.visible = !!bossbar.entity
|
||||
func _physics_process(_delta):
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
extends Camera2D
|
||||
Reference in New Issue
Block a user