@tool extends HBoxContainer class_name FeedName enum Quality { WASTE, COMMON, RARE, EPIC, LEGENDARY, } enum Topic { SURVIVAL, ENERGY, BULLET, SPEED, DAMAGE, PROBABILITY, FEED, DROP, WEAPON, SUMMON, } @export var displayName: String = "未命名饲料" @export var quality: Quality = Quality.COMMON @export var topic: Topic = Topic.SURVIVAL @export var qualityColorMap = { Quality.WASTE: Color(), Quality.COMMON: Color(), Quality.RARE: Color(), Quality.EPIC: Color(), Quality.LEGENDARY: Color() } @export var qualityNameMap = { Quality.WASTE: "常见", Quality.COMMON: "普通", Quality.RARE: "稀有", Quality.EPIC: "史诗", Quality.LEGENDARY: "传说" } @export var qualityRandomWeight = { Quality.WASTE: 20, Quality.COMMON: 100, Quality.RARE: 30, Quality.EPIC: 10, Quality.LEGENDARY: 5 } @export var luckInfluence = { Quality.WASTE: - 0.5, Quality.COMMON: - 1, Quality.RARE: 0, Quality.EPIC: 1, Quality.LEGENDARY: 2, } @export var topicNameMap = { Topic.SURVIVAL: "生存", Topic.ENERGY: "能量", Topic.BULLET: "子弹", Topic.SPEED: "速度", Topic.DAMAGE: "伤害", Topic.PROBABILITY: "幸运", Topic.FEED: "饲料", Topic.DROP: "掉落物", Topic.WEAPON: "武器", Topic.SUMMON: "召唤", } @export var topicColorMap = { Topic.SURVIVAL: Color(), Topic.ENERGY: Color(), Topic.BULLET: Color(), Topic.SPEED: Color(), Topic.DAMAGE: Color(), Topic.PROBABILITY: Color(), Topic.FEED: Color(), Topic.DROP: Color(), Topic.WEAPON: Color(), Topic.SUMMON: Color(), } @onready var qualityLabel: Label = $"%quality" @onready var topicLabel: Label = $"%topic" @onready var nameLabel: RichTextLabel = $"%label" func _ready(): qualityLabel.label_settings = qualityLabel.label_settings.duplicate() topicLabel.label_settings = topicLabel.label_settings.duplicate() func _physics_process(_delta): qualityLabel.text = "[%s]" % qualityNameMap[quality] qualityLabel.label_settings.font_color = qualityColor() topicLabel.text = "[%s]" % topicNameMap[topic] topicLabel.label_settings.font_color = topicColor() nameLabel.text = "[b]%s[/b]" % displayName func qualityColor(): return qualityColorMap[quality] as Color func topicColor(): return topicColorMap[topic] as Color func weight(player: EntityBase) -> int: return floor(clamp(qualityRandomWeight[quality] + luckInfluence[quality] * player.fields[FieldStore.Entity.LUCK_VALUE], 1, INF))