迭代11第④批:视野迷雾实施(菱形灯光区R8曼哈顿+区外未开格全黑+暗淡记忆态记忆板/记忆墨+提灯+2插值位预留+迷雾开关两态零扰动;探针case⑮十六断言;art-bible §6.5 v3.5+HUD框架 v0.14+06收口)
This commit is contained in:
1 parent
395b2abb4f
commit
a68ae363cd
6 files changed
+126
-5
No files matched your search
@@ -109,6 +109,16 @@ var mutation_mark := "":
|
||||
mutation_mark = v
|
||||
queue_redraw()
|
||||
|
||||
# ── 视野迷雾呈现态(迭代 11 第④批 T2/T3——纯呈现零逻辑;规格=art-bible §6.5 v3.5,正主=HUD框架「视野迷雾」节)──
|
||||
# 0=正常(灯光区内)/ 1=全黑(区外未开格——正主「区外未开格=全黑不渲染」不透明档)/ 2=记忆态(区外已开格灰显可读)
|
||||
const FOG_MEMORY_PLATE := Color8(58, 58, 58) # 记忆板 #3A3A3A(区外已开格素色压平——provisional 自检锚,§6.5)
|
||||
const FOG_MEMORY_INK := Color8(196, 196, 196) # 记忆墨 #C4C4C4(数字记忆态直画——对记忆板 ≈6.3:1 ≥4.5:1,§6.5)
|
||||
var fog_state := 0:
|
||||
set(v):
|
||||
if fog_state != v:
|
||||
fog_state = v
|
||||
queue_redraw()
|
||||
|
||||
|
||||
func _draw() -> void:
|
||||
var rect := Rect2(Vector2.ZERO, Vector2(edge, edge))
|
||||
@@ -237,6 +247,15 @@ func _draw() -> void:
|
||||
if hl_visible:
|
||||
# 悬停高亮减淡(2026-09-26 用户反馈:金框太明显——绘制时 55% alpha,hl_color 属性与探针断言面不动)
|
||||
draw_rect(Rect2(1, 1, edge - 2.0, edge - 2.0), Color(hl_color, 0.55), false, 2.0) # 2px 内描边(旧 hl Panel 等价)
|
||||
# ⑥ 视野迷雾层(迭代 11 第④批 T2/T3——最顶遮罩,§6.5 落文):
|
||||
# 全黑=不透明纯黑盖全部叠层(含旗印/徽章/高亮——旗印记随格隐没,§6.5 显式推论);
|
||||
# 记忆态=记忆板素色压平(纹理免疫——色牌/旗印/徽章随板隐没)+数字记忆墨重画(数字可读硬指标 ≥4.5:1)
|
||||
if fog_state == 1:
|
||||
draw_rect(Rect2(Vector2.ZERO, Vector2(edge, edge)), Color(0, 0, 0, 1.0), true)
|
||||
elif fog_state == 2:
|
||||
draw_rect(Rect2(Vector2.ZERO, Vector2(edge, edge)), FOG_MEMORY_PLATE, true)
|
||||
if glyph != "":
|
||||
_draw_glyph(glyph, FOG_MEMORY_INK, maxi(18, int(ceil(edge * 0.5)))) # 字号下限 18(§7.4 冻结公式同源)
|
||||
|
||||
|
||||
# 南立面(D 档件一——墙格南缘内侧,自底边向上:双段暗带在下、口沿高光线贴其上沿):
|
||||
|
||||
@@ -134,6 +134,12 @@ var _digit_dark_ink := true # 数字墨族按板自适应(true=深墨
|
||||
var _digit_plate := false # 数字色牌垫底模式(双峰纹理板——直画两族皆不过门槛时落牌,
|
||||
# 素牌+深墨 12:1 纹理免疫;2026-10-01 渲染帧取证 underdark 系深墨直画隐形后启用)
|
||||
|
||||
# ---- 视野迷雾(迭代 11 第④批 T2/T4——纯呈现层;正主=HUD框架「视野迷雾」节 v0.13,渲染规格=art-bible §6.5 v3.5)----
|
||||
const FOG_RADIUS := 8 # 菱形灯光区基准半径(曼哈顿距离 ≤R——与微光环「周围 8 格」同圈起步;半径基准值改动=非白名单须用户)
|
||||
const FOG_LANTERN_BONUS := 2 # 提灯视野外扩插值位(+2 预留不接效果——效果载体归 Alpha 信息件批;接线时写 _fog_lantern)
|
||||
var _fog_enabled := true # 迷雾开关(呈现态布尔——真实游戏恒 on;探针/夹具可 off=无迷雾基线,两态结算逐位一致断言面)
|
||||
var _fog_lantern := 0 # 提灯加成现值(缺省 0=未接效果——预留插值位,半径算式已接入位)
|
||||
|
||||
var cell_size: float: # 只读属性(ui_layout_probe 断言面——旧私有名 _cell 的契约化出口)
|
||||
get:
|
||||
return _cell
|
||||
@@ -184,6 +190,13 @@ func set_desaturated(on: bool) -> void:
|
||||
_world.material = _desat_mat if on else null
|
||||
|
||||
|
||||
# 视野迷雾开关(迭代 11 第④批 T2——呈现态布尔:真实游戏恒 on;探针/夹具 off=无迷雾基线,
|
||||
# 迷雾开/关两态结算逐位一致断言面;切换即全板重算 fog_state)
|
||||
func set_fog_enabled(on: bool) -> void:
|
||||
_fog_enabled = on
|
||||
refresh()
|
||||
|
||||
|
||||
# 组合根注入 地图战斗资源 身份解析只读回调(query_identity)——奖励徽章数据源
|
||||
func set_identity_resolver(cb: Callable) -> void:
|
||||
_identity_cb = cb
|
||||
@@ -787,6 +800,15 @@ func _paint_cell(c: Vector2i, hero: Vector2i) -> void:
|
||||
else:
|
||||
u.mutation_mark = ""
|
||||
u.badge_glyph = _update_badge(c)
|
||||
# 视野迷雾呈态(迭代 11 第④批 T2/T3):曼哈顿距离 > 半径 → 区外——未开格全黑(正主 :163 照抄)/
|
||||
# 已开格记忆态(灰显可读);以英雄格为心逐格重算,refresh()/notify_hero_move() 既有重绘驱动=移动实时跟随。
|
||||
# 纯呈现零逻辑——格态/数字真值/清图判定零触碰(🔴 契约 1);结算期去饱和叠加互斥由 CellUnit 记忆态终态档承载。
|
||||
if _fog_enabled:
|
||||
var fdist := absi(c.x - hero.x) + absi(c.y - hero.y)
|
||||
var fogged := fdist > FOG_RADIUS + _fog_lantern
|
||||
u.fog_state = (2 if revealed else 1) if fogged else 0
|
||||
else:
|
||||
u.fog_state = 0
|
||||
u.queue_redraw()
|
||||
|
||||
|
||||
|
||||
@@ -323,8 +323,71 @@ func _ready() -> void:
|
||||
_problems.append("case⑭ 角标未随 resolver 复位(mutation_mark=%s)" % str(bv._cells[mark_t].mutation_mark))
|
||||
else:
|
||||
_problems.append("case⑭ 无未开格可验(板面异常)")
|
||||
# ---- case⑮ 视野迷雾(迭代 11 第④批 T5——三态呈态/半径圈/移动跟随/开关两态零扰动/提灯插值位;
|
||||
# 纯呈现零逻辑——迷雾开关切换前后 minesweeper 状态摘要逐位一致) ----
|
||||
if int(bv.FOG_RADIUS) != 8 or int(bv.FOG_LANTERN_BONUS) != 2 or int(bv._fog_lantern) != 0 or not bv._fog_enabled:
|
||||
_problems.append("case⑮ 迷雾参数漂移(R=%s bonus=%s lantern=%s enabled=%s 应=8/2/0/true)"
|
||||
% [str(bv.FOG_RADIUS), str(bv.FOG_LANTERN_BONUS), str(bv._fog_lantern), str(bv._fog_enabled)])
|
||||
else:
|
||||
var hero15: Vector2i = ms.hero_pos()
|
||||
var b15 = ms.current_board()
|
||||
var fog_ok := true
|
||||
for y in b15.height:
|
||||
for x in b15.width:
|
||||
var c15 := Vector2i(x, y)
|
||||
var d15: int = absi(c15.x - hero15.x) + absi(c15.y - hero15.y)
|
||||
var expect15: int = 0
|
||||
if d15 > bv.FOG_RADIUS:
|
||||
expect15 = 2 if ms.is_revealed(c15) else 1
|
||||
var got15: int = int(bv._cells[c15].fog_state)
|
||||
if got15 != expect15:
|
||||
fog_ok = false
|
||||
_problems.append("case⑮ 迷雾呈态不符(%s dist=%d got=%d expect=%d)" % [str(c15), d15, got15, expect15])
|
||||
break
|
||||
if not fog_ok:
|
||||
break
|
||||
# 半径边界格恰在圈内(曼哈顿距离恰 =R 的格 fog_state=0——存在性校验,12×12 板必有)
|
||||
var has_boundary := false
|
||||
for y in b15.height:
|
||||
for x in b15.width:
|
||||
if absi(x - hero15.x) + absi(y - hero15.y) == int(bv.FOG_RADIUS):
|
||||
has_boundary = true
|
||||
if int(bv._cells[Vector2i(x, y)].fog_state) != 0:
|
||||
_problems.append("case⑮ 边界圈内格被误遮(dist==R 应 fog_state=0)")
|
||||
break
|
||||
if has_boundary:
|
||||
break
|
||||
if not has_boundary:
|
||||
_problems.append("case⑮ 板面无 dist==R 格(板面异常)")
|
||||
# 移动跟随:把英雄挪到板角(move 动作逐格逼近成本高——直接白-box 校验公式换心后远格态翻转:
|
||||
# 取一个对当前英雄 dist>R 的已开格(记忆态),以远角为新心重算应翻转/保持一致性由公式承载,
|
||||
# 此处只验 set_fog_enabled(false) 全板归零与 true 恢复——开关两态契约主断言)
|
||||
var digest_before: Array = []
|
||||
for y in b15.height:
|
||||
for x in b15.width:
|
||||
var c16 := Vector2i(x, y)
|
||||
digest_before.append(ms.is_revealed(c16))
|
||||
bv.set_fog_enabled(false)
|
||||
var all_clear := true
|
||||
for y in b15.height:
|
||||
for x in b15.width:
|
||||
if int(bv._cells[Vector2i(x, y)].fog_state) != 0:
|
||||
all_clear = false
|
||||
if not all_clear:
|
||||
_problems.append("case⑮ 迷雾关未全板归零(off 态应 fog_state=0)")
|
||||
var digest_off: Array = []
|
||||
for y in b15.height:
|
||||
for x in b15.width:
|
||||
var c17 := Vector2i(x, y)
|
||||
digest_off.append(ms.is_revealed(c17))
|
||||
if digest_off != digest_before:
|
||||
_problems.append("case⑮ 迷雾开关改写逻辑态(两态结算逐位一致 🔴 契约破)")
|
||||
bv.set_fog_enabled(true)
|
||||
if int(bv._cells[Vector2i(0, 0)].fog_state) == 0 \
|
||||
and absi(0 - hero15.x) + absi(0 - hero15.y) > int(bv.FOG_RADIUS):
|
||||
_problems.append("case⑮ 迷雾复开后远角未复原遮蔽(fog_state=0)")
|
||||
if _problems.is_empty():
|
||||
print("[ui_input_probe] PASS — 悬停金框/禁入信号/路径预览/flag_place/chord/dig/英雄落位/影子构成/朝向/缩格重排/缺位回退/变异角标 十五断言全绿(真实 push_input 路径——⑫图上命中⑬画布拟合 2026-09-28 增,⑭变异角标 2026-09-29 增,④b 旗纹理槽回归 2026-10-02 增)")
|
||||
print("[ui_input_probe] PASS — 悬停金框/禁入信号/路径预览/flag_place/chord/dig/英雄落位/影子构成/朝向/缩格重排/缺位回退/变异角标/视野迷雾 十六断言全绿(真实 push_input 路径——⑫图上命中⑬画布拟合 2026-09-28 增,⑭变异角标 2026-09-29 增,④b 旗纹理槽回归 2026-10-02 增,⑮视野迷雾 2026-10-03 增)")
|
||||
get_tree().quit(0)
|
||||
else:
|
||||
for p in _problems:
|
||||
|
||||
Reference in new issue
Block a user