T2(迭代22秘宝批): 核心层解锁服务换代+槽位档位约束——工坊渠道面退役(_workshop_progress/workshop_status/refresh_workshop_unlocks/meta_workshop_items/WORKSHOP_ITEM_IDS/workshop_items行族全删)换解锁混合制(buy_treasure_unlock钥石购买=余额闸+重复购拒+条件件误购拒/refresh_treasure_unlocks条件刷新=AND谓词+幂等/treasure_shop_status柜台投影); 计数读数单点_treasure_unlock_progress(adventure_cleared/boss_kill_count/vision_used); save_manager新增vision_used生涯计数域(add_vision_used收束入账+缺键补零不升版本); toggle_attunement三重校验(未解锁拒+满位禁选+件档rank≤装入位序档位格——卸下恒可效果面只读装配集); pause/camp两视图秘宝匣呈现换代+UiKit计数键与档位标签单点; smoke工坊段换V3/V4/V5断言(独立档[11]防路径污染)+meta表段行族规模换代3/3/2。冒烟895/0+单元21套+探针全绿〔秘宝批 V3/V4/V5/V14/V19数据源〕
This commit is contained in:
1 parent
48b0696158
commit
a7bd4e4132
13 files changed
+235
-194
No files matched your search
@@ -307,23 +307,29 @@ func refresh_camp(data: Dictionary) -> void:
|
||||
var row: Dictionary = ws_by_id.get(String(card.item_id), {})
|
||||
if row.is_empty():
|
||||
continue
|
||||
var th := int(row.get("threshold", 0))
|
||||
var prog := int(row.get("progress", 0))
|
||||
var unlocked := bool(row.get("unlocked", false))
|
||||
card.progress_l.text = "累计通关 %d / %d 次" % [prog, th]
|
||||
# 迭代 7 T5——失义件(显影尘/地穴全图卷 Alpha 重定)与退役件(探宝罗盘 2026-09-29 拍板①乙)呈现口径;
|
||||
# 状态色随卡⑭ 亮板双色墨制(深墨族替代暖白族——亮板上暖白不可读)
|
||||
# 秘宝匣进度列(迭代 22 T2——解锁混合制三形态:钥石购买价/条件进度拼接/已入手;
|
||||
# 旧「累计通关 N/M 次」单一渠道文案随工坊行族退役)
|
||||
var prog_text := ""
|
||||
var mode := String(row.get("mode", ""))
|
||||
if unlocked:
|
||||
prog_text = "已入手"
|
||||
elif mode == "keystone":
|
||||
prog_text = "钥石 %d" % int(row.get("price", 0))
|
||||
elif mode == "condition":
|
||||
var parts: Array[String] = []
|
||||
for req_v in (row.get("reqs", []) as Array):
|
||||
var req: Dictionary = req_v as Dictionary
|
||||
var lbl := String(UiKit.TREASURE_REQ_LABELS.get(String(req.get("key", "")), "条件"))
|
||||
parts.append("%s %d/%d" % [lbl, int(req.get("progress", 0)), int(req.get("threshold", 0))])
|
||||
prog_text = "、".join(parts)
|
||||
card.progress_l.text = prog_text
|
||||
# 状态色随卡⑭ 亮板双色墨制(深墨族替代暖白族——亮板上暖白不可读);失义/退役行随新目录退役
|
||||
var st_text := "未解锁"
|
||||
var st_col: Color = UiKit.STONE
|
||||
if bool(row.get("retired", false)):
|
||||
st_text = "已退役"
|
||||
st_col = UiKit.STONE
|
||||
elif bool(row.get("deferred", false)) and unlocked:
|
||||
st_text = "已解锁 · 能力封存中"
|
||||
st_col = UiKit.GOLD_INK # 尾裁微批a 2026-10-08——GOLD_DEEP 对行板 3.00:1 越带,换深金墨 5.84:1
|
||||
elif unlocked:
|
||||
if unlocked:
|
||||
st_text = "已解锁"
|
||||
st_col = UiKit.GOLD_INK # 同上
|
||||
st_col = UiKit.GOLD_INK # 尾裁微批a 2026-10-08——GOLD_DEEP 对行板 3.00:1 越带,换深金墨 5.84:1
|
||||
card.status_l.text = st_text
|
||||
card.status_l.add_theme_color_override("font_color", st_col)
|
||||
card.status_l.tooltip_text = st_text # 截断兜底(状态列 EXPAND_FILL 吸余宽——悬停看全文)
|
||||
|
||||
@@ -82,6 +82,8 @@ func open_pause(data: Dictionary) -> void:
|
||||
|
||||
|
||||
# 道具工坊六行(解锁态文案与营地柜台同口径——退役/封存/已解锁/未解锁;进度=解锁判定量读数)
|
||||
# 秘宝匣 12 行只读概览(迭代 22 T2 换代——旧工坊六行退役;数据源=treasure_shop_status 投影,
|
||||
# 解锁态文案与营地柜台同口径;进度列=解锁混合制三形态:钥石价/条件进度拼接/已入手)
|
||||
func _rebuild_workshop(data: Dictionary) -> void:
|
||||
for c in _workshop_holder.get_children():
|
||||
c.queue_free()
|
||||
@@ -93,28 +95,29 @@ func _rebuild_workshop(data: Dictionary) -> void:
|
||||
name_l.clip_text = true
|
||||
name_l.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS
|
||||
line.add_child(name_l)
|
||||
var prog_l := UiKit.label("累计通关 %d/%d 次" % [int(row.get("progress", 0)), int(row.get("threshold", 0))],UiKit.FS_HINT, false, UiKit.INK_HINT)
|
||||
var unlocked := bool(row.get("unlocked", false))
|
||||
var prog_text := "已入手"
|
||||
if not unlocked:
|
||||
if String(row.get("mode", "")) == "keystone":
|
||||
prog_text = "钥石 %d" % int(row.get("price", 0))
|
||||
else:
|
||||
var parts: Array[String] = []
|
||||
for req_v in (row.get("reqs", []) as Array):
|
||||
var req: Dictionary = req_v as Dictionary
|
||||
var lbl := String(UiKit.TREASURE_REQ_LABELS.get(String(req.get("key", "")), "条件"))
|
||||
parts.append("%s %d/%d" % [lbl, int(req.get("progress", 0)), int(req.get("threshold", 0))])
|
||||
prog_text = "、".join(parts)
|
||||
var prog_l := UiKit.label(prog_text,UiKit.FS_HINT, false, UiKit.INK_HINT)
|
||||
prog_l.custom_minimum_size = Vector2(150, 0)
|
||||
prog_l.clip_text = true
|
||||
prog_l.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS
|
||||
line.add_child(prog_l)
|
||||
var st_l := UiKit.label(_workshop_state_text(row),UiKit.FS_HINT, true, UiKit.INK_LABEL)
|
||||
var st_l := UiKit.label("已解锁" if unlocked else "未解锁",UiKit.FS_HINT, true, UiKit.INK_LABEL)
|
||||
st_l.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||||
line.add_child(st_l)
|
||||
_workshop_holder.add_child(line)
|
||||
|
||||
|
||||
# 解锁态文案(camp_overlay_view.refresh_camp 同款判据——退役 > 封存 > 已解锁 > 未解锁)
|
||||
func _workshop_state_text(row: Dictionary) -> String:
|
||||
if bool(row.get("retired", false)):
|
||||
return "已退役"
|
||||
if bool(row.get("deferred", false)) and bool(row.get("unlocked", false)):
|
||||
return "已解锁 · 能力封存中"
|
||||
if bool(row.get("unlocked", false)):
|
||||
return "已解锁"
|
||||
return "未解锁"
|
||||
|
||||
|
||||
# 天赋树已购概览(单条聚合文案——已购节点等级 + Fork 组激活侧;零已购=空态句)
|
||||
func _rebuild_tree(data: Dictionary) -> void:
|
||||
var owned: Array[String] = []
|
||||
|
||||
@@ -318,6 +318,12 @@ const FS_SUB := 18 # 副标题/小组标题(=棋盘数字下限同值)
|
||||
const FS_TITLE := 24 # 屏标题/横幅/价格
|
||||
const FS_H1 := 34 # 主标题/演算暴击
|
||||
|
||||
# ── 秘宝解锁条件计数键 → 呈现标签(迭代 22 秘宝批 T4——秘宝匣柜台条件进度文案单点;键域=
|
||||
# TreasureItemTable.UNLOCK_COUNTER_KEYS 封闭枚举,键出域走「条件」兜底不炸)──
|
||||
const TREASURE_REQ_LABELS := {"adventure_cleared": "通关", "boss_kill_count": "Boss击杀", "vision_used": "真视使用"}
|
||||
# 秘宝档位 → 呈现名(契约 2 三档;legendary 传说空集合法不在柜)
|
||||
const TREASURE_TIER_LABELS := {"common": "普通", "excellent": "优秀", "rare": "稀有", "legendary": "传说"}
|
||||
|
||||
# ── StyleBox 工厂 ──
|
||||
# margin = (左, 上, 右, 下);border_w = 0 即无边框(根底/遮罩用)
|
||||
# 圆角率单点(UI 设计对齐批 P5 甲 2026-10-06——容器/按钮全站唯一圆角值;数据框/数字牌/AP 点阵/准线/血条
|
||||
|
||||
Reference in new issue
Block a user