mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-06-08 20:57:13 +08:00
feat: 更新饲料和物品显示逻辑,添加香蕉饲料场景,重构字段显示功能
This commit is contained in:
@@ -56,7 +56,7 @@ static func generate(
|
||||
var instance: BulletBase = bullet.instantiate()
|
||||
instance.launcher = launchBy
|
||||
instance.position = spawnPosition
|
||||
instance.rotation = spawnRotation
|
||||
instance.rotation = spawnRotation + randf_range(-launchBy.fields.get(FieldStore.Entity.OFFSET_SHOOT), launchBy.fields.get(FieldStore.Entity.OFFSET_SHOOT))
|
||||
if addToWorld:
|
||||
WorldManager.rootNode.add_child(instance)
|
||||
return instance
|
||||
|
||||
@@ -9,6 +9,7 @@ var fields = {
|
||||
FieldStore.Entity.CRIT_RATE: 0.05,
|
||||
FieldStore.Entity.CRIT_DAMAGE: 1,
|
||||
FieldStore.Entity.PENERATE: 0,
|
||||
FieldStore.Entity.OFFSET_SHOOT: 3
|
||||
}
|
||||
|
||||
@export var cooldownUnit: float = 100 # 100毫秒每次攻击
|
||||
|
||||
@@ -1,12 +1,21 @@
|
||||
@tool
|
||||
extends HBoxContainer
|
||||
class_name FieldShow
|
||||
|
||||
@export var field: FieldStore.Entity = FieldStore.Entity.MAX_HEALTH
|
||||
@export var value: String = ""
|
||||
@export var value: float = 0
|
||||
|
||||
@onready var nameLabel: Label = $"%name"
|
||||
@onready var valueLabel: Label = $"%value"
|
||||
|
||||
func _process(_delta):
|
||||
func _ready():
|
||||
nameLabel.text = FieldStore.entityMap[field]
|
||||
valueLabel.text = value
|
||||
var formattedValue: String
|
||||
var dataType = FieldStore.entityMapType[field]
|
||||
if dataType == FieldStore.DataType.VALUE:
|
||||
formattedValue = str(value)
|
||||
elif dataType == FieldStore.DataType.ANGLE:
|
||||
formattedValue = str(value) + "°"
|
||||
elif dataType == FieldStore.DataType.PERCENT:
|
||||
formattedValue = "%.1f" % (value * 100) + "%"
|
||||
valueLabel.text = formattedValue
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
@tool
|
||||
extends HBoxContainer
|
||||
class_name ItemShow
|
||||
|
||||
@export var type: ItemStore.ItemType = ItemStore.ItemType.BASEBALL
|
||||
@export var count: int = 0
|
||||
@@ -7,6 +8,6 @@ extends HBoxContainer
|
||||
@onready var avatarTexture: TextureRect = $"%avatar"
|
||||
@onready var countLabel: Label = $"%count"
|
||||
|
||||
func _process(_delta):
|
||||
func _ready():
|
||||
avatarTexture.texture = load("res://resources/items/%s.svg" % ItemStore.idMap[type])
|
||||
countLabel.text = str(count)
|
||||
|
||||
+26
-4
@@ -5,11 +5,33 @@ class_name Feed
|
||||
@export var avatarTexture: Texture2D = null
|
||||
@export var displayName: String = "未命名饲料"
|
||||
@export var fields: Array[FieldStore.Entity] = []
|
||||
@export var values: Array[float] = []
|
||||
@export var fieldValues: Array[float] = []
|
||||
@export var costs: Array[ItemStore.ItemType] = []
|
||||
@export var counts: Array[int] = []
|
||||
@export var costCounts: Array[int] = []
|
||||
|
||||
@onready var avatar: TextureRect = $"%avatar"
|
||||
@onready var avatarRect: TextureRect = $"%avatar"
|
||||
@onready var nameLabel: Label = $"%name"
|
||||
@onready var fieldsBox: VBoxContainer = $"%fields"
|
||||
@onready var costsBox: VBoxContainer = $"%costs"
|
||||
@onready var costsBox: GridContainer = $"%costs"
|
||||
|
||||
func _ready():
|
||||
avatarRect.texture = avatarTexture
|
||||
nameLabel.text = displayName
|
||||
for i in fieldsBox.get_children():
|
||||
i.queue_free()
|
||||
for i in range(min(fields.size(), fieldValues.size())):
|
||||
var field = fields[i]
|
||||
var value = fieldValues[i]
|
||||
var fieldShow: FieldShow = preload("res://components/UI/FieldShow.tscn").instantiate()
|
||||
fieldShow.field = field
|
||||
fieldShow.value = str(value)
|
||||
fieldsBox.add_child(fieldShow)
|
||||
for i in costsBox.get_children():
|
||||
i.queue_free()
|
||||
for i in range(min(costs.size(), costCounts.size())):
|
||||
var cost = costs[i]
|
||||
var count = costCounts[i]
|
||||
var costShow: ItemShow = preload("res://components/UI/ItemShow.tscn").instantiate()
|
||||
costShow.type = cost
|
||||
costShow.count = count
|
||||
costsBox.add_child(costShow)
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
@tool
|
||||
class_name FieldStore
|
||||
|
||||
enum DataType {
|
||||
VALUE,
|
||||
PERCENT,
|
||||
ANGLE
|
||||
}
|
||||
enum Entity {
|
||||
MAX_HEALTH,
|
||||
DAMAGE_MULTIPILER,
|
||||
@@ -8,7 +13,8 @@ enum Entity {
|
||||
ATTACK_SPEED,
|
||||
CRIT_RATE,
|
||||
CRIT_DAMAGE,
|
||||
PENERATE
|
||||
PENERATE,
|
||||
OFFSET_SHOOT
|
||||
}
|
||||
static var entityMap = {
|
||||
Entity.MAX_HEALTH: "最大生命值",
|
||||
@@ -17,7 +23,18 @@ static var entityMap = {
|
||||
Entity.ATTACK_SPEED: "攻击速度",
|
||||
Entity.CRIT_RATE: "暴击率",
|
||||
Entity.CRIT_DAMAGE: "暴击伤害",
|
||||
Entity.PENERATE: "穿透"
|
||||
Entity.PENERATE: "穿透",
|
||||
Entity.OFFSET_SHOOT: "散射角"
|
||||
}
|
||||
static var entityMapType = {
|
||||
Entity.MAX_HEALTH: DataType.VALUE,
|
||||
Entity.DAMAGE_MULTIPILER: DataType.PERCENT,
|
||||
Entity.MOVEMENT_SPEED: DataType.PERCENT,
|
||||
Entity.ATTACK_SPEED: DataType.PERCENT,
|
||||
Entity.CRIT_RATE: DataType.PERCENT,
|
||||
Entity.CRIT_DAMAGE: DataType.PERCENT,
|
||||
Entity.PENERATE: DataType.PERCENT,
|
||||
Entity.OFFSET_SHOOT: DataType.ANGLE
|
||||
}
|
||||
|
||||
enum Bullet {
|
||||
@@ -29,4 +46,9 @@ static var bulletMap = {
|
||||
Bullet.SPEED: "速度",
|
||||
Bullet.DAMAGE: "伤害",
|
||||
Bullet.PENERATE: "穿透"
|
||||
}
|
||||
static var bulletMapType = {
|
||||
Bullet.SPEED: DataType.VALUE,
|
||||
Bullet.DAMAGE: DataType.VALUE,
|
||||
Bullet.PENERATE: DataType.PERCENT
|
||||
}
|
||||
Reference in New Issue
Block a user