31 lines
2.0 KiB
GDScript
31 lines
2.0 KiB
GDScript
## 战斗屏布局表 schema:分区几何与明细带高度的单行类型化读取(呈现层布局配置,非玩法数值)。
|
|
## 消费面 = BattleStageView / BattleLogView / HeroInfoPanelView / ApBarView(经 ConfigDb.presentation.battle_layout);
|
|
## 文档只写结构关系与表名,不复制数值。validate() 违例加载期致命(fail-fast)。
|
|
class_name BattleLayoutTable
|
|
extends Resource
|
|
|
|
@export var stage_h: int = 252 # B 区高(全宽战斗画面,含底部明细带)
|
|
@export var info_panel_w: int = 240 # C 区宽(左下角色信息列)
|
|
@export var ap_bar_h: int = 44 # D 区 AP 条高
|
|
@export var log_band_h_dig: int = 24 # 明细带挖掘期收起高(单行上轮摘要)
|
|
@export var log_band_h_settle: int = 84 # 明细带结算期展开高(实时结算流)
|
|
|
|
|
|
func validate() -> Array:
|
|
var errs: Array[Dictionary] = []
|
|
if stage_h < 120 or stage_h > 600:
|
|
errs.append({"category": "domain", "message": "stage_h 越域 [120,600]: %d" % stage_h})
|
|
if info_panel_w < 120 or info_panel_w > 480:
|
|
errs.append({"category": "domain", "message": "info_panel_w 越域 [120,480]: %d" % info_panel_w})
|
|
if ap_bar_h < 24 or ap_bar_h > 96:
|
|
errs.append({"category": "domain", "message": "ap_bar_h 越域 [24,96]: %d" % ap_bar_h})
|
|
if log_band_h_dig < 16 or log_band_h_dig > 80:
|
|
errs.append({"category": "domain", "message": "log_band_h_dig 越域 [16,80]: %d" % log_band_h_dig})
|
|
if log_band_h_settle < 24 or log_band_h_settle > 160:
|
|
errs.append({"category": "domain", "message": "log_band_h_settle 越域 [24,160]: %d" % log_band_h_settle})
|
|
if log_band_h_settle < log_band_h_dig:
|
|
errs.append({"category": "cross_field", "message": "log_band_h_settle(%d) < log_band_h_dig(%d)——展开态不得矮于收起态" % [log_band_h_settle, log_band_h_dig]})
|
|
if log_band_h_settle >= stage_h:
|
|
errs.append({"category": "cross_field", "message": "log_band_h_settle(%d) ≥ stage_h(%d)——明细带不得占满 B 区" % [log_band_h_settle, stage_h]})
|
|
return errs
|