@tool extends HBoxContainer class_name FeedName @export var displayName: String = "未命名" @export var quality: CategoryStore.Quality = CategoryStore.Quality.COMMON @export var topic: CategoryStore.Topic = CategoryStore.Topic.SURVIVAL @export var qualityColorMap = { CategoryStore.Quality.WASTE: Color(), CategoryStore.Quality.COMMON: Color(), CategoryStore.Quality.RARE: Color(), CategoryStore.Quality.EPIC: Color(), CategoryStore.Quality.LEGENDARY: Color() } @export var qualityNameMap = { CategoryStore.Quality.WASTE: "常见", CategoryStore.Quality.COMMON: "普通", CategoryStore.Quality.RARE: "稀有", CategoryStore.Quality.EPIC: "史诗", CategoryStore.Quality.LEGENDARY: "传说" } @export var qualityRandomWeight = { CategoryStore.Quality.WASTE: 20, CategoryStore.Quality.COMMON: 100, CategoryStore.Quality.RARE: 30, CategoryStore.Quality.EPIC: 10, CategoryStore.Quality.LEGENDARY: 5 } @export var luckInfluence = { CategoryStore.Quality.WASTE: - 0.5, CategoryStore.Quality.COMMON: - 1, CategoryStore.Quality.RARE: 0, CategoryStore.Quality.EPIC: 1, CategoryStore.Quality.LEGENDARY: 2, } @export var topicNameMap = { CategoryStore.Topic.SURVIVAL: "生存", CategoryStore.Topic.ENERGY: "能量", CategoryStore.Topic.BULLET: "子弹", CategoryStore.Topic.SPEED: "速度", CategoryStore.Topic.DAMAGE: "伤害", CategoryStore.Topic.PROBABILITY: "幸运", CategoryStore.Topic.FEED: "增益", CategoryStore.Topic.DROP: "掉落物", CategoryStore.Topic.WEAPON: "武器", CategoryStore.Topic.SUMMON: "召唤", } @export var topicColorMap = { CategoryStore.Topic.SURVIVAL: Color(), CategoryStore.Topic.ENERGY: Color(), CategoryStore.Topic.BULLET: Color(), CategoryStore.Topic.SPEED: Color(), CategoryStore.Topic.DAMAGE: Color(), CategoryStore.Topic.PROBABILITY: Color(), CategoryStore.Topic.FEED: Color(), CategoryStore.Topic.DROP: Color(), CategoryStore.Topic.WEAPON: Color(), CategoryStore.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))