mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-05-31 16:31:54 +08:00
feat(武器系统): 添加武器背包功能及武器展示组件
实现武器背包功能,用于存储已获得的武器名称。新增WeaponShow组件,根据操作类型显示不同的武器信息。修改Feed.gd以支持武器展示逻辑,包括获取和提炼两种操作状态。
This commit is contained in:
@@ -98,6 +98,7 @@ var lastDirection: int = 1
|
||||
var currentFocusedBoss: EntityBase = null
|
||||
var charginup: bool = false
|
||||
var weapons: Array[Weapon] = []
|
||||
var weaponBag: Array[String] = []
|
||||
var canRunAi: bool = true
|
||||
var currentStage: int = 0
|
||||
var spawnTime: float = 0
|
||||
@@ -115,6 +116,7 @@ func _ready():
|
||||
for i in weaponStore.get_children():
|
||||
i.hide()
|
||||
weapons.append(i)
|
||||
weaponBag.append(i.displayName)
|
||||
statebar.levelLabels.hide()
|
||||
UIState.player = self
|
||||
energyChanged.connect(
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
@tool
|
||||
extends HBoxContainer
|
||||
class_name WeaponShow
|
||||
|
||||
enum Operation {
|
||||
GET,
|
||||
EXTRACT,
|
||||
}
|
||||
|
||||
@export var weapon: PackedScene = null
|
||||
@export var operation: Operation = Operation.GET
|
||||
|
||||
@onready var operationLabel: Label = $"%operation"
|
||||
@onready var avatarRect: TextureRect = $"%avatar"
|
||||
@onready var nameLabel: Label = $"%name"
|
||||
@onready var soulShow: ItemShow = $"%soul"
|
||||
|
||||
func _ready():
|
||||
var weaponInstance = weapon.instantiate() as Weapon
|
||||
avatarRect.texture = weaponInstance.avatarTexture
|
||||
nameLabel.text = weaponInstance.displayName
|
||||
soulShow.count = weaponInstance.soulLevel
|
||||
if operation == Operation.GET:
|
||||
operationLabel.text = "获得"
|
||||
avatarRect.visible = true
|
||||
nameLabel.visible = true
|
||||
soulShow.visible = false
|
||||
else:
|
||||
operationLabel.text = "提炼"
|
||||
avatarRect.visible = false
|
||||
nameLabel.visible = false
|
||||
soulShow.visible = true
|
||||
@@ -79,6 +79,15 @@ func rebuildInfo():
|
||||
fieldsBox.add_child(fieldShow)
|
||||
if noField:
|
||||
fieldsBox.add_child(QuickUI.smallText("无词条"))
|
||||
for i in weaponsBox.get_children():
|
||||
i.queue_free()
|
||||
for weapon in weapons:
|
||||
var weaponShow: WeaponShow = ComponentManager.getUIComponent("WeaponShow").instantiate()
|
||||
weaponShow.weapon = weapon
|
||||
if is_instance_valid(UIState.player):
|
||||
weaponShow.operation = WeaponShow.Operation.EXTRACT if UIState.player.weaponBag.has(weapon.instantiate().displayName) else WeaponShow.Operation.GET
|
||||
weaponShow.visible = true
|
||||
weaponsBox.add_child(weaponShow)
|
||||
for i in costsBox.get_children():
|
||||
i.queue_free()
|
||||
for i in range(min(costs.size(), costCounts.size())):
|
||||
|
||||
Reference in New Issue
Block a user