refactor(ui): C 区精简批——信息归属拍板代码实装(2026-09-26):①C 区面板=攻击+护甲AC 数据框+魔法道具槽(预留 4 空槽)+本关强化列表(预留空态隐藏)——HP 条/立绘占位/状态槽/RAP/GP/钥石退役;②状态效果唯一展示面=B 区站桩(compact 档 StatusSlotRow 整体迁入——16px 图标+层数角标+悬停 tooltip 义务随迁,BUG-0001 回归组件同源;清空反馈逐槽化光+微文案随迁站桩);③RAP 读数迁 D 区 AP 条贴弃图刷新消费口(点阵+数字+清零脉冲微文案+拒绝脉冲载体随迁);④hud_presenter 单投喂改造(B/C 双投喂重复展示退役)+钱包投喂退役(GP/钥石迁出战斗屏,去向=关卡画面/结算/营地归对应 UX 批);冒烟 557/0+五探针全绿
This commit is contained in:
1 parent
d6eee49945
commit
effb98e57d
9 files changed
+203
-224
No files matched your search
@@ -15,30 +15,24 @@ extends RefCounted
|
||||
|
||||
|
||||
# 每次结算行/轮次/节点变化/动作返回后调用(组合根全量重查装配)
|
||||
# 2026-09-26 C 区精简批:钱包 GP/钥石投喂退役(中/大循环资源迁出战斗屏——信息归属拍板);
|
||||
# HP/状态效果单投喂 B 区站桩(原 B/C 双投喂为重复展示——信息归属拍板单一展示面原则)
|
||||
static func refresh(stage: BattleStageView, info: HeroInfoPanelView, ap_bar: ApBarView,
|
||||
settlement, runner, level_active: bool, db, refresh_remaining: int, gp_label: Label = null,
|
||||
keystone_label: Label = null, keystone_balance: int = 0) -> void:
|
||||
# GP 余额常驻(GP+商店房实施批 2026-09-21——A 区顶栏邻接位;runner 缺位 = 非冒险态按 0 读数)
|
||||
if gp_label != null:
|
||||
gp_label.text = "金币 %d" % (int(runner.gp) if runner != null else 0)
|
||||
# 钥石余额常驻(元进度实现批 2026-09-21——A 区顶栏邻接位;数据源 MetaProgression 账本,购买/收束后随全量重查刷新)
|
||||
if keystone_label != null:
|
||||
keystone_label.text = "钥石 %d" % keystone_balance
|
||||
settlement, runner, level_active: bool, db, refresh_remaining: int) -> void:
|
||||
if settlement == null:
|
||||
_refresh_out_of_battle(stage, info, runner, level_active, db)
|
||||
_refresh_out_of_battle(stage, info, ap_bar, runner, level_active, db)
|
||||
return
|
||||
var s: Dictionary = settlement.presentation_snapshot()
|
||||
var hero: Dictionary = s.hero
|
||||
if hero.is_empty() or not bool(hero.get("alive", false)):
|
||||
_refresh_out_of_battle(stage, info, runner, level_active, db)
|
||||
_refresh_out_of_battle(stage, info, ap_bar, runner, level_active, db)
|
||||
return
|
||||
_refresh_hero(stage, info, s)
|
||||
_refresh_economy(info, ap_bar, s, db, refresh_remaining)
|
||||
_refresh_economy(ap_bar, s, db, refresh_remaining)
|
||||
stage.set_enemies(s.enemies)
|
||||
info.set_status_effects(s.hero_effects)
|
||||
|
||||
|
||||
# ---- B 区主角站桩 + C 区数据框 ----
|
||||
# ---- B 区主角站桩(HP/状态唯一展示面)+ C 区数据框(攻击/AC) ----
|
||||
|
||||
static func _refresh_hero(stage: BattleStageView, info: HeroInfoPanelView, s: Dictionary) -> void:
|
||||
var hero: Dictionary = s.hero
|
||||
@@ -55,19 +49,19 @@ static func _refresh_hero(stage: BattleStageView, info: HeroInfoPanelView, s: Di
|
||||
var mod_text := ""
|
||||
if mod_total != 0:
|
||||
mod_text = "(%+d%% %s)" % [mod_total, "·".join(sources)]
|
||||
# B 区站桩只挂血条+状态小图标(2026-09-20 全站桩拍板)——攻击值等规划数据归 C 区数据框
|
||||
# B 区站桩 = HP 与状态效果唯一展示面(2026-09-26 信息归属拍板)——C 区不再重复投喂
|
||||
stage.hero_standee.set_hero(hp, max_hp)
|
||||
stage.hero_standee.set_effects(s.hero_effects)
|
||||
info.set_hero(hp, max_hp)
|
||||
info.set_attack(atk, mod_text)
|
||||
# 我方 AC 唯一展示面 = C 区(2026-09-26 二轮拍板补入)——快照 armor_class 含战斗内 ac_up 折算
|
||||
info.set_armor(int(hero.get("armor_class", 0)))
|
||||
|
||||
|
||||
# ---- 行动经济(AP 点阵 / RAP / 弃图刷新按钮态) ----
|
||||
# ---- 行动经济(AP 点阵 / RAP / 弃图刷新按钮态——RAP 读数 2026-09-26 自 C 区迁入本条) ----
|
||||
|
||||
static func _refresh_economy(info: HeroInfoPanelView, ap_bar: ApBarView, s: Dictionary, db, refresh_remaining: int) -> void:
|
||||
static func _refresh_economy(ap_bar: ApBarView, s: Dictionary, db, refresh_remaining: int) -> void:
|
||||
ap_bar.set_ap(int(s.ap), int(db.action_economy.ap_per_round))
|
||||
# RAP 活值投影(C 区点阵)——清零反馈分支(行动经济 D1 义务)依赖本处持续投喂才会可达
|
||||
info.set_rap(int(s.rap), int(db.action_economy.rap_refresh_cost))
|
||||
ap_bar.set_rap(int(s.rap))
|
||||
var digging := String(s.phase) == ActionEconomy.PHASE_ACTIVE
|
||||
ap_bar.set_refresh_state(refresh_remaining,
|
||||
bool(s.can_refresh) and digging) # Waiting 代理已随 OQ12 退役——UI 仅挖掘期受理
|
||||
@@ -76,16 +70,16 @@ static func _refresh_economy(info: HeroInfoPanelView, ap_bar: ApBarView, s: Dict
|
||||
|
||||
# 战斗外(节点间隙/关卡结束)——HP 读 runner 携带值
|
||||
static func _refresh_out_of_battle(stage: BattleStageView, info: HeroInfoPanelView,
|
||||
runner, level_active: bool, db) -> void:
|
||||
ap_bar: ApBarView, runner, level_active: bool, db) -> void:
|
||||
if not level_active:
|
||||
return
|
||||
if runner != null:
|
||||
info.set_hero(runner.hero_hp, runner.effective_max_hp())
|
||||
info.set_attack(runner.effective_atk(), "(关卡推进中)")
|
||||
info.set_armor(runner.effective_ac())
|
||||
stage.hero_standee.set_hero(runner.hero_hp, runner.effective_max_hp())
|
||||
stage.hero_standee.set_effects([])
|
||||
stage.clear_enemies() # 节点间隙清敌方站桩残位(死亡瞬间的灰化呈现已在结算行驱动完成)
|
||||
info.set_rap(0, int(db.action_economy.rap_refresh_cost)) # battle_over RAP 清零反馈(行动经济 义务)
|
||||
ap_bar.set_rap(0) # battle_over RAP 清零反馈(行动经济 义务——载体 2026-09-26 迁 AP 条)
|
||||
|
||||
|
||||
# 三源拒绝可感知(排雷玩法 reject_reason/sub_reason → 玩家文案;pattern 1 双源拒绝反馈)
|
||||
|
||||
Reference in new issue
Block a user