1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-29 07:21:54 +08:00
Files
Dog-Lynx-And-HCN/scripts/Statemachine/FieldShow.gd
T
fallingshrimp 1904edd623 refactor(MathTool): 重命名随机数生成方法并优化蘑菇矿挖爪属性
将 randomVector2In 重命名为 sampleInCircle,randomRingPoint 重命名为 sampleInRing,randChoiceWeightsFrom 重命名为 randomChoiceFromWeights,signBeforeStr 重命名为 toSigned
调整蘑菇矿挖爪的攻击力和掉落率,减少基础伤害至0.5,固定掉落率为0.1,优化物品掉落逻辑
2026-01-18 15:31:52 +08:00

55 lines
2.2 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
@export var maxed: bool = false
@export var showAdvantage: bool = false
@onready var icon: TextureRect = $"%icon"
@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]
icon.texture = ComponentManager.getFieldTexture(FieldStore.entityMap.get(field))
var formattedValue: String
var dataType = FieldStore.entityMapType[field]
if dataType == FieldStore.DataType.VALUE:
formattedValue = "%s" % (MathTool.toSigned(value) if showSign else str(value))
elif dataType == FieldStore.DataType.INTEGER:
formattedValue = "%s" % (MathTool.toSigned(int(value)) if showSign else str(int(value)))
elif dataType == FieldStore.DataType.ANGLE:
formattedValue = "%s°" % (MathTool.toSigned(value) if showSign else str(value))
elif dataType == FieldStore.DataType.PERCENT:
formattedValue = (MathTool.toSigned(value * 100) if showSign else str(value * 100)) + "%"
valueLabel.label_settings = valueLabel.label_settings.duplicate()
valueLabel.text = formattedValue
if maxed:
valueLabel.label_settings.font_color = Color(1, 0.3, 0.3)
valueLabel.text = "MAX%s" % valueLabel.text
elif showAdvantage:
if field in FieldStore.entityNegativeFields:
valueLabel.label_settings.font_color = Color.RED if value > 0 else Color.GREEN
else:
valueLabel.label_settings.font_color = Color.GREEN if value > 0 else Color.RED
else:
valueLabel.label_settings.font_color = Color(1, 1, 1)
static func create(newField: FieldStore.Entity, newValue: float, newShowSign: bool, newEntity: EntityBase, newUseViewCast: bool) -> FieldShow:
var fieldShow = ComponentManager.getUIComponent("FieldShow").instantiate()
fieldShow.field = newField
fieldShow.value = newValue
fieldShow.showSign = newShowSign
fieldShow.entity = newEntity
fieldShow.useViewCast = newUseViewCast
return fieldShow