Files
gplan-2/game/presentation/views/node_overlay.gd
T
DKChan 9553d6b182 feat(t5): 奖励节点三选一+工坊解锁门控+封存呈现+node-reward spec 出生
①node_overlay:show_reward_items 三选一(池≤3 全列——当前三件即全列;池空直通=切片期合法空态保留;选择前继续隐藏=强制构筑点语义)+item_chosen 信号+close_reward 收屏
②main:奖励分支接三选一(活行∩解锁集,注册序前 3,呈现侧零 RNG)+_on_reward_item_chosen(入库存来源归因 reward_node→toast→_on_node_continue 兑付确认回选路零自动推进)+_reward_node_choices
③解锁门控链(拍板③甲=解锁进投放池):main _aux_unlocked_set(工坊解锁∩活行;罗盘退役/失义件不入集)→adventure params.aux_unlocked→LevelRunner.set_aux_unlocked→BattleOrchestrator 公有 setter→RewardEconomy.set_aux_unlocked+_rollable_rows aux 行过滤——空集默认零投放=白板/夹具态模拟读数零扰动
④工坊呈现:workshop_status 投影+deferred/retired 状态面;camp 文案=已解锁·能力封存中(失义件)/已退役(罗盘)
⑤node-reward.md spec v1.0 出生(06 条目兑现)
坑一轮:BattleOrchestrator 无公有 reward_economy(E1/E3 封装)——公有 setter 转发;竖线锚四处拼接病自愈
闸:冒烟 577/0+四探针 PASS(click 问题=0)+单测 0 FAIL
2026-09-29 07:43:51 +08:00

64 lines
2.3 KiB
GDScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# VERTICAL SLICE - NOT FOR PRODUCTION
# Date: 2026-09-11
# 关卡节点覆盖层(模态):奖励点/恢复点兑付结果的确认呈现。
# 高内聚边界:节点文案的玩家可读化(谁获得什么/回复多少)内聚于此;"继续"意图经信号外发。
class_name NodeOverlay
extends Control
signal continue_pressed
signal item_chosen(item_id: String) # 迭代 7 T5——奖励节点三选一兑付(拍板②丙:奖励屏=小构筑点)
var _label: Label
var _btn: Button
var _choice_box: HBoxContainer # 道具三选一按钮区(show_reward_items 时呈现)
func _init() -> void:
var dim := ColorRect.new()
dim.color = Color(0, 0, 0, 0.6)
dim.set_anchors_preset(Control.PRESET_FULL_RECT)
add_child(dim)
var center := CenterContainer.new()
center.set_anchors_preset(Control.PRESET_FULL_RECT)
dim.add_child(center)
var box := VBoxContainer.new()
box.add_theme_constant_override("separation", 12)
center.add_child(box)
_label = UiKit.label("", 20, true)
_label.add_theme_color_override("font_color", UiKit.WARM)
_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
box.add_child(_label)
_btn = UiKit.button("继续")
_choice_box = HBoxContainer.new()
_choice_box.add_theme_constant_override("separation", 12)
_choice_box.alignment = BoxContainer.ALIGNMENT_CENTER
box.add_child(_choice_box)
_btn.pressed.connect(func(): continue_pressed.emit())
box.add_child(_btn)
visible = false
func show_reward() -> void:
# 格面资源批(2026-09-15):奖励点内容随可选类道具删除悬置(功能道具渠道 P1 待拍板)——直通节点确认
_label.text = "关卡奖励点\n(节点内容待定——冒险结构/关卡节点地图 定稿批裁决)"
_btn.text = "继续"
visible = true
func show_rest(healed: int, hp_after: int, max_hp: int) -> void:
_label.text = "血量恢复点\n休息回复 %d HP(%d → %d / %d)" % [
healed, hp_after - healed, hp_after, max_hp]
_btn.text = "休息完毕,继续"
visible = true
# 选择完成收屏(组合根在 item_chosen 处理毕调——入库存+确认后回选路由同拍)
func close_reward() -> void:
_choice_box.visible = false
_btn.visible = true
visible = false
# 探针复用:以真实按钮路径触发继续
func press_continue() -> void:
_btn.pressed.emit()