批末修复: 类缓存陈旧暴露的解析错九处清偿——meta_progression六处Variant推断显式类型化/ battle_orchestrator:683 last_round_end属性→方法调用(K5漏网消费点,卡面实查只记minesweeper_rules:495)/ui_kit _paint_beams静态化/_build_curio括号配平+gp_summary lambda提_gp_summary_cb承载/curio_interact_controller补ctx成员+_init垃圾行清除+八处旧成员读点改ctx束地址/curio_pick_overlay _build_body重复段删除/board_zone_view悬空调用删+vb传参/board_cell_unit treasure_mark改st.前缀;根因=T2a-T4改写期套件停跑+editor扫描被main_ui_build解析错级联遮蔽,gdstyle宽松解析不拦;--editor --quit全量扫描0错
This commit is contained in:
1 parent
7beb9bfdd5
commit
078979410a
17 files changed
+40
-57
No files matched your search
@@ -8,18 +8,16 @@ extends RefCounted
|
||||
const Narrator := preload("res://presentation/battle_narrator.gd")
|
||||
|
||||
var db
|
||||
# u13 引用束注入:16 个 _init 抄写成员删除——正文读点改址 ctx 束(u20 三束键名;
|
||||
# _pending_curio/_curio_context 纯内部态保持宿主)
|
||||
var ctx: CurioFlowContext # u13 引用束注入:构造注入 context 活引用(views/getters/flow 三束键名)
|
||||
# _pending_curio/_curio_context 纯内部态保持宿主
|
||||
|
||||
var _pending_curio := {} # 三选一停点载荷暂存(战斗总结结算确认后开三选一面;续玩停点复用)
|
||||
var _curio_context := "level_clear" # 三选一面上下文(level_clear=关卡完成停点→推进下一关 / reward_node=奖励节点→回图选路)
|
||||
|
||||
|
||||
func _init(ctx: CurioFlowContext) -> void:
|
||||
# 构造参数收拢 context 对象(16 参长签名收一处命名面)
|
||||
func _init(ctx_ref: CurioFlowContext) -> void:
|
||||
ctx = ctx_ref
|
||||
db = ctx.db
|
||||
ctx.flow.fatal_screen = ctx.fatal_screen
|
||||
ctx.flow.gp_summary = ctx.gp_summary
|
||||
|
||||
|
||||
# 停点在途判据(组合根 _on_battle_end_continue 分派面——战斗总结确认后开三选一)
|
||||
@@ -41,7 +39,7 @@ func resume_if_pending() -> bool:
|
||||
#(continue_to_next_level 的「停点未兑付拒推进」守卫因此放行)。
|
||||
func _skip_empty_stop() -> bool:
|
||||
ctx.views.toast.show_toast("可用战利品为空——本次三选一跳过", "info")
|
||||
var adventure = _adventure_get.call()
|
||||
var adventure = ctx.getters.adventure_get.call()
|
||||
if adventure != null:
|
||||
adventure.stop().skip_empty_curio() # core 停点消化(其守卫=仅空候选放行)
|
||||
if _curio_context == "reward_node":
|
||||
@@ -88,7 +86,7 @@ func on_presented(payload: Dictionary) -> void:
|
||||
# 奖励节点三选一(与关卡完成三选一共享同池同权重同上限;CurioPickOverlay 共用面)。
|
||||
# 无替换子交互(同调装配不可变,见类头)。
|
||||
func present_node_curio() -> void:
|
||||
var adventure = _adventure_get.call()
|
||||
var adventure = ctx.getters.adventure_get.call()
|
||||
_curio_context = "reward_node"
|
||||
var node_draw: Dictionary[Variant, Variant] = adventure.stop().node_curio_candidates()
|
||||
var node_cands: Array[Variant] = node_draw.get("candidates", []) as Array
|
||||
@@ -111,7 +109,7 @@ func show_pick() -> void:
|
||||
var payload: Dictionary[Variant, Variant] = _pending_curio
|
||||
ctx.flow.open_modal.call(ctx.views.curio_overlay)
|
||||
ctx.views.curio_overlay.open_pick(Narrator.curio_pick_header(payload), _curio_card_texts(payload.get("candidates", []) as Array))
|
||||
var adventure = _adventure_get.call()
|
||||
var adventure = ctx.getters.adventure_get.call()
|
||||
if adventure != null:
|
||||
_feed_refresh_display(adventure) # 刷新面投喂单点
|
||||
ctx.flow.refresh_presentations.call()
|
||||
@@ -119,7 +117,7 @@ func show_pick() -> void:
|
||||
|
||||
# 刷新呈现投喂单点(免费余量 X/Y + GP 付费价 + 冒险钱包可付——读数与商店 set_refresh_display 同构)
|
||||
func _feed_refresh_display(adventure: AdventureRunner) -> void:
|
||||
var runner = _runner_get.call()
|
||||
var runner = ctx.getters.runner_get.call()
|
||||
var gp := int(runner.gp) if runner != null else 0
|
||||
var cost: int = adventure.refresh_bank().gp_cost()
|
||||
ctx.views.curio_overlay.set_refresh_display(adventure.refresh_bank().free_left(), cost, gp >= cost)
|
||||
@@ -154,10 +152,10 @@ func _curio_card_texts(candidates: Array) -> Array:
|
||||
# 同 shop_refresh_cost_base/curve 旋钮、同冒险钱包 runner.gp;关卡完成停点经重发 curio_choice_presented 直落
|
||||
# 选择面,节点停点在此读在途态重 present——零自动推进契约不破,停点仍在途)
|
||||
func on_refresh() -> void:
|
||||
var adventure = _adventure_get.call()
|
||||
var adventure = ctx.getters.adventure_get.call()
|
||||
if adventure == null or not adventure.stop().curio_stop_pending():
|
||||
return
|
||||
var runner = _runner_get.call()
|
||||
var runner = ctx.getters.runner_get.call()
|
||||
var refreshed: bool = adventure.stop().refresh_curio()
|
||||
if not refreshed:
|
||||
# 免费位(X/Y)已穷——GP 付费档(先扣钱包后重抽,余额不足拒绝零副作用)
|
||||
@@ -176,7 +174,7 @@ func on_refresh() -> void:
|
||||
|
||||
|
||||
func on_pick_confirmed(item_id: String) -> void:
|
||||
var adventure = _adventure_get.call()
|
||||
var adventure = ctx.getters.adventure_get.call()
|
||||
if adventure == null:
|
||||
return
|
||||
# TP0 令牌池——卡片 id "kind|tier|feat_id" 拆键(缺 | = 旧载荷防御归普通档;relic 三段)
|
||||
@@ -206,7 +204,7 @@ func on_resolved(result: Dictionary) -> void:
|
||||
func on_continue() -> void:
|
||||
ctx.flow.close_modal.call(ctx.views.curio_overlay)
|
||||
ctx.views.curio_overlay.close_pick()
|
||||
var adventure = _adventure_get.call()
|
||||
var adventure = ctx.getters.adventure_get.call()
|
||||
if _curio_context == "feat_ticket":
|
||||
return # T5 店内专长凭证面——专长兑付完成后关面回店(无推进/无回图)
|
||||
if _curio_context == "reward_node":
|
||||
@@ -223,7 +221,7 @@ func on_continue() -> void:
|
||||
# 数据源=treasure 装配词表 12 件
|
||||
func item_name_lookup() -> Dictionary:
|
||||
var lookup := {}
|
||||
var meta = _meta_get.call()
|
||||
var meta = ctx.getters.meta_get.call()
|
||||
if meta != null:
|
||||
for row in db.crossrun.treasure_items.attunement_rows():
|
||||
lookup[String(row.get("item_id", ""))] = String(row.get("display_name", ""))
|
||||
|
||||
@@ -144,7 +144,7 @@ static func _build_curio(root: Variant) -> void:
|
||||
{"open_modal": root._open_modal, "open_modal_after_playback": root._open_modal_after_playback,
|
||||
"close_modal": root._close_modal, "refresh_presentations": root._refresh_presentations,
|
||||
"fatal_screen": root._fatal_screen,
|
||||
"gp_summary": func() -> String: return root._gp_summary_text({"gp_dropped": root.run_scope.last_gain_amount}}))) # 构造参数收拢 context(u20 三束)
|
||||
"gp_summary": _gp_summary_cb(root)})) # 构造参数收拢 context(u20 三束)
|
||||
root.curio_overlay.pick_confirmed.connect(root._bonus.on_pick_confirmed)
|
||||
root.curio_overlay.continue_pressed.connect(root._bonus.on_continue)
|
||||
root.curio_overlay.refresh_requested.connect(root._bonus.on_refresh)
|
||||
@@ -251,3 +251,8 @@ static func fatal_screen(root: Variant, msg: String) -> void:
|
||||
var l := UiKit.label(msg,UiKit.FS_SUB, true, UiKit.RED_ALERT)
|
||||
l.set_anchors_preset(Control.PRESET_CENTER)
|
||||
root.add_child(l)
|
||||
|
||||
|
||||
# GP 总结行回调(gp_summary 束键——单行 lambda 内嵌字典实参收尾歧义,提函数承载)
|
||||
static func _gp_summary_cb(root: Variant) -> Callable:
|
||||
return func() -> String: return root._gp_summary_text({"gp_dropped": root.run_scope.last_gain_amount})
|
||||
@@ -271,12 +271,7 @@ func _spawn_seal_dot(i: int, base: Vector2) -> void:
|
||||
tw.tween_callback(dot.queue_free)
|
||||
|
||||
|
||||
# ---- 演出密度(程序化 tween,确定性散布,零新帧资产) ----
|
||||
|
||||
var st._crest_bricks: Array[ColorRect] = [] # 纹章碎砖驻留面(close 时回收)
|
||||
var st._fx_crest_shards := 0
|
||||
var st._fx_dust_motes := 0
|
||||
var st._fx_seal_dots := 0
|
||||
# ---- 演出密度(程序化 tween,确定性散布,零新帧资产;计数与碎砖驻留面在 _EndOverlayState) ----
|
||||
|
||||
|
||||
# 碎砖拼纹章(胜利 §2.4——蜡封落定后十枚碎砖自四周向蜡封外环收拢拼成纹章环,驻留至 close)
|
||||
|
||||
@@ -323,7 +323,7 @@ func _draw_bevel() -> void:
|
||||
|
||||
## 变异标记域:真视格=危险红内缩框/未开格伤害型变异=左下角危险红三角
|
||||
func _draw_mutation_marks() -> void:
|
||||
if treasure_mark == "mine_reveal":
|
||||
if st.treasure_mark == "mine_reveal":
|
||||
var inset := st.edge * 0.14
|
||||
draw_rect(Rect2(inset, inset, st.edge - inset * 2.0, st.edge - inset * 2.0),
|
||||
Color(UiKit.RED_MINE, 0.9), false, 2.0)
|
||||
|
||||
@@ -24,7 +24,6 @@ func _init() -> void:
|
||||
vb.add_theme_constant_override("separation", 4)
|
||||
add_child(vb)
|
||||
_build_views(vb)
|
||||
_build_status_corner()
|
||||
|
||||
|
||||
## 视图三件域:AP 条+棋盘区(含动效与 toast 叠层)
|
||||
@@ -37,11 +36,11 @@ func _build_views(vb: VBoxContainer) -> void:
|
||||
vb.add_child(board_area)
|
||||
_board_area = board_area
|
||||
board_area.resized.connect(_on_board_area_resized)
|
||||
_build_board_children(board_area)
|
||||
_build_board_children(board_area, vb)
|
||||
|
||||
|
||||
## 棋盘子件域:视图+动效+toast 三叠层挂接
|
||||
func _build_board_children(board_area: Control) -> void:
|
||||
## 棋盘子件域:视图+动效+toast 三叠层挂接+状态角标+操作提示条(hint 回挂 vb——树序与拆分前一致)
|
||||
func _build_board_children(board_area: Control, vb: VBoxContainer) -> void:
|
||||
board_view = BoardView.new()
|
||||
board_view.set_anchors_preset(Control.PRESET_FULL_RECT)
|
||||
board_area.add_child(board_view)
|
||||
|
||||
@@ -62,28 +62,6 @@ func _build_top_row(top: HBoxContainer) -> void:
|
||||
|
||||
## 主体域:入账信息行+三竖卡列+底部确认/继续钮与免费选择注记
|
||||
func _build_body(box: VBoxContainer) -> void:
|
||||
_label = UiKit.label("",UiKit.FS_BODY, false, UiKit.WARM_SOFT)
|
||||
_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||
box.add_child(_label)
|
||||
_choice_box = HBoxContainer.new()
|
||||
_choice_box.add_theme_constant_override("separation", 26) # demo .cards gap 26(T7 对齐)
|
||||
_choice_box.alignment = BoxContainer.ALIGNMENT_CENTER
|
||||
_choice_box.size_flags_vertical = Control.SIZE_EXPAND_FILL
|
||||
box.add_child(_choice_box)
|
||||
var foot := HBoxContainer.new()
|
||||
foot.alignment = BoxContainer.ALIGNMENT_CENTER
|
||||
foot.add_theme_constant_override("separation", 16)
|
||||
box.add_child(foot)
|
||||
_confirm_btn = UiKit.primary_button("确认选择")
|
||||
_confirm_btn.pressed.connect(_on_confirm_pressed)
|
||||
_confirm_btn.visible = false
|
||||
foot.add_child(_confirm_btn)
|
||||
_continue_btn = UiKit.button("继续")
|
||||
_continue_btn.pressed.connect(_emit_continue_pressed)
|
||||
_continue_btn.visible = false
|
||||
foot.add_child(_continue_btn)
|
||||
_foot_hint = UiKit.label("免费选择 · 刷新不消耗 AP",UiKit.FS_HINT, false, UiKit.WARM_FAINT)
|
||||
foot.add_child(_foot_hint)
|
||||
_label = UiKit.label("",UiKit.FS_BODY, false, UiKit.WARM_SOFT)
|
||||
_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||
box.add_child(_label)
|
||||
|
||||
@@ -351,7 +351,7 @@ const BEAMS_PEAK := 0.05
|
||||
|
||||
|
||||
## 光带像素域(循环体提函数——12° 斜向光带双三角衰减:带内峰值×纵向衰减逐像素着色)
|
||||
func _paint_beams(img: Image) -> void:
|
||||
static func _paint_beams(img: Image) -> void:
|
||||
var ca := BEAMS_TILT_CA
|
||||
var sa := BEAMS_TILT_SA
|
||||
var beam_col := Color(1.0, 236.0 / 255.0, 200.0 / 255.0)
|
||||
|
||||
Reference in new issue
Block a user