Files
gplan-2/game/core/settlement/verdict_segment.gd
T

34 lines
1.5 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.
class_name VerdictSegment
extends RefCounted
# ⑤ 判定段 Segment(P1-1 结算巨函数拆段;段边界=审计五段〔裁点③甲〕)。
# 职责:防御性优先级 hero 先判(双死结构不可达的纵深防御)→ 全量状态快照(despawn 前
# 组装——终局含 result)→ 终局行+收束分派 / 下一轮出口分发。
# 返回值 = 裁定("victory"/"defeat"/"continue")——宿主 _settle 据此保持旧早退语义
#(终局不回置 _settling,_battle_over 接管);本段零算法改动(🔴 零行为变更契约)。
var oc: BattleOrchestrator # 宿主(类型标注=段内 := 推断前提;循环类名引用 Godot 4 全局类安全) 宿主
func _init(host) -> void:
oc = host
func run(ri: int) -> String:
var verdict := "continue"
if int(oc._enemy_system.hero_unit().get("hp", 0)) <= 0:
verdict = "defeat"
elif oc._enemy_system.query_alive("enemy").is_empty():
verdict = "victory"
oc._emit_settlement_snapshot(verdict) # 全量状态快照(despawn 前组装——终局含 result)
if verdict == "defeat":
oc._emit_row("verdict", "", Vector2i(-1, -1), ri, "战斗失败", 0, {}, "")
oc._battle_over("defeat")
return verdict
if verdict == "victory":
oc._emit_row("verdict", "", Vector2i(-1, -1), ri, "战斗胜利", 1, {}, "")
oc._battle_over("victory")
return verdict
oc._emit_row("verdict", "", Vector2i(-1, -1), ri, "下一轮次", 0, {}, "")
oc._exit_distribution()
return verdict