mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-05-28 23:11:54 +08:00
efa2912ae5
为FieldShow组件添加useViewCast参数和entity引用,支持通过视图转换函数动态计算显示值 新增DROPPED_ITEM_GRAVITY相关字段到FieldStore 调整ItemDropped状态机的物品移动速度计算参数
38 lines
1.4 KiB
GDScript
38 lines
1.4 KiB
GDScript
@tool
|
|
extends HBoxContainer
|
|
class_name FieldShow
|
|
|
|
@export var field: FieldStore.Entity = FieldStore.Entity.MAX_HEALTH
|
|
@export var value: float = 0
|
|
@export var showSign: bool = true
|
|
@export var entity: EntityBase = null
|
|
@export var useViewCast: bool = false
|
|
|
|
@onready var nameLabel: Label = $"%name"
|
|
@onready var valueLabel: Label = $"%value"
|
|
|
|
func _ready():
|
|
if useViewCast:
|
|
var caster = FieldStore.entityViewCastMap.get(field)
|
|
if caster:
|
|
value = caster.call(entity, value)
|
|
nameLabel.text = FieldStore.entityMap[field]
|
|
var formattedValue: String
|
|
var dataType = FieldStore.entityMapType[field]
|
|
if dataType == FieldStore.DataType.VALUE:
|
|
formattedValue = "%s" % (MathTool.signBeforeStr(value) if showSign else str(value))
|
|
elif dataType == FieldStore.DataType.ANGLE:
|
|
formattedValue = "%s°" % (MathTool.signBeforeStr(value) if showSign else str(value))
|
|
elif dataType == FieldStore.DataType.PERCENT:
|
|
formattedValue = (MathTool.signBeforeStr(value * 100) if showSign else str(value * 100)) + "%"
|
|
valueLabel.text = formattedValue
|
|
|
|
static func create(newField: FieldStore.Entity, newValue: float, newShowSign: bool, newEntity: EntityBase, newUseViewCast: bool) -> FieldShow:
|
|
var fieldShow = preload("res://components/UI/FieldShow.tscn").instantiate()
|
|
fieldShow.field = newField
|
|
fieldShow.value = newValue
|
|
fieldShow.showSign = newShowSign
|
|
fieldShow.entity = newEntity
|
|
fieldShow.useViewCast = newUseViewCast
|
|
return fieldShow
|