1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-28 06:51:54 +08:00

feat: 添加武器升华系统及相关UI组件

实现武器升华功能,包括:
- 新增SublimateOption类处理升华选项
- 添加SublimateOptionHandler UI组件
- 在武器卡片中集成升华界面
- 重构武器描述生成逻辑
- 新增钻石资源消耗机制
- 优化UI布局和样式
- 修复多处类型引用错误
This commit is contained in:
2026-05-10 11:49:17 +08:00
parent 1071e87da6
commit 7a0cf96d7d
39 changed files with 558 additions and 147 deletions
+1 -1
View File
@@ -68,7 +68,7 @@ var inventory = {
ItemStore.ItemType.BEACHBALL: 0,
ItemStore.ItemType.SOUL: 0,
ItemStore.ItemType.CRYSTAL: 0,
ItemStore.ItemType.DIAMOND: 0
ItemStore.ItemType.DIAMOND: 10
}
var inventoryMax = {
ItemStore.ItemType.BASEBALL: INF, # 无限
+42 -62
View File
@@ -2,80 +2,60 @@
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 quality: CategoryStore.Quality = CategoryStore.Quality.COMMON
@export var topic: CategoryStore.Topic = CategoryStore.Topic.SURVIVAL
@export var qualityColorMap = {
Quality.WASTE: Color(),
Quality.COMMON: Color(),
Quality.RARE: Color(),
Quality.EPIC: Color(),
Quality.LEGENDARY: Color()
CategoryStore.Quality.WASTE: Color(),
CategoryStore.Quality.COMMON: Color(),
CategoryStore.Quality.RARE: Color(),
CategoryStore.Quality.EPIC: Color(),
CategoryStore.Quality.LEGENDARY: Color()
}
@export var qualityNameMap = {
Quality.WASTE: "常见",
Quality.COMMON: "普通",
Quality.RARE: "稀有",
Quality.EPIC: "史诗",
Quality.LEGENDARY: "传说"
CategoryStore.Quality.WASTE: "常见",
CategoryStore.Quality.COMMON: "普通",
CategoryStore.Quality.RARE: "稀有",
CategoryStore.Quality.EPIC: "史诗",
CategoryStore.Quality.LEGENDARY: "传说"
}
@export var qualityRandomWeight = {
Quality.WASTE: 20,
Quality.COMMON: 100,
Quality.RARE: 30,
Quality.EPIC: 10,
Quality.LEGENDARY: 5
CategoryStore.Quality.WASTE: 20,
CategoryStore.Quality.COMMON: 100,
CategoryStore.Quality.RARE: 30,
CategoryStore.Quality.EPIC: 10,
CategoryStore.Quality.LEGENDARY: 5
}
@export var luckInfluence = {
Quality.WASTE: - 0.5,
Quality.COMMON: - 1,
Quality.RARE: 0,
Quality.EPIC: 1,
Quality.LEGENDARY: 2,
CategoryStore.Quality.WASTE: - 0.5,
CategoryStore.Quality.COMMON: - 1,
CategoryStore.Quality.RARE: 0,
CategoryStore.Quality.EPIC: 1,
CategoryStore.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: "召唤",
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 = {
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(),
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"
@@ -0,0 +1,30 @@
@tool
extends Control
class_name SublimateOptionHandler
signal apply()
@onready var nameLabel: Label = $%name
@onready var applyBtn: Button = $%applyBtn
@onready var costItemShow: ItemShow = $%costItem
var use: SublimateOption;
func _ready():
nameLabel.label_settings = nameLabel.label_settings.duplicate()
applyBtn.pressed.connect(
func():
if UIState.player.useItem({ItemStore.ItemType.DIAMOND: use.cost}):
apply.emit()
else:
UIState.showTip("钻石数量不足!", TipBox.MessageType.ERROR)
)
rebuildInfo()
func rebuildInfo():
if is_instance_valid(use):
nameLabel.label_settings.font_color = CategoryStore.qualityColorMap[use.quality]
nameLabel.label_settings.outline_color = CategoryStore.qualityColorMap[use.quality]
nameLabel.text = use.displayName
applyBtn.text = use.description
costItemShow.count = use.cost
@@ -0,0 +1 @@
uid://qpx600iiwgae
+13
View File
@@ -0,0 +1,13 @@
@tool
extends Button
class_name TextSwitchButton
@export var pressedText: String = "已按下"
@export var unpressedText: String = "未按下"
func _ready():
updateText()
toggled.connect(updateText)
func updateText():
text = [unpressedText, pressedText][int(button_pressed)]
@@ -0,0 +1 @@
uid://5r8mvbag4m0q