Merge branch 'master' into m3-iter10-20261001
# Conflicts: # game/smoke/level_autoplay.gd # game/smoke/smoke_all.gd
This commit is contained in:
commit
bc737fb0cb
24 files changed
+1471
-112
No files matched your search
@@ -73,7 +73,7 @@ var review_overlay: SettlementReviewOverlay
|
||||
var node_overlay: NodeOverlay
|
||||
var shop_overlay: ShopOverlay # 商店覆盖层(GP+商店房实施批——商店房节点兑付呈现)
|
||||
var _adventure_gp_view := 0 # GP 冒险钱包呈现侧影子(迭代 6 T7——终局面板 GP 行取数面,
|
||||
# wallet_changed gain/buy 载荷=入账后总额 level_runner.gd:482/539)
|
||||
# wallet_changed gain/buy 载荷=入账后总额 level_runner.gd:482/539)
|
||||
var _adventure_gp_final := 0 # 收束清零拍暂存的最终合计("clear" 到达时自影子转存)
|
||||
var _aux_use_selection := 0 # 魔法道具选中句柄(迭代 7 T4——0=未选中;选中期棋盘点击=使用目标拾取)
|
||||
var _aux_unlocked := {} # aux 解锁门控集(迭代 7 T5——工坊解锁×活行交集,冒险开始组装)
|
||||
@@ -610,7 +610,7 @@ func _on_battle_end_continue() -> void:
|
||||
func _on_end_review() -> void:
|
||||
review_overlay.open(log_view.parsed_text())
|
||||
_open_modal(review_overlay) # 迭代 6 T7——走模态栈:终局层在册上方的可见遮挡被显式隐藏,
|
||||
# 修复「回看层被终局层全屏 STOP 遮罩压死」(直开绕栈缺陷)
|
||||
# 修复「回看层被终局层全屏 STOP 遮罩压死」(直开绕栈缺陷)
|
||||
|
||||
|
||||
# ==================== 调试模式(连续两层——编排归 debug_session.gd;
|
||||
|
||||
@@ -130,6 +130,10 @@ var _floor_tiles: Array[Texture2D] = [] # 地面瓦片五变体(下标 0..4
|
||||
var _tiles_ok := false # false = 素材缺位/未装载——bg_sb 程序化平色原路径
|
||||
var _flag_tex: Texture2D = null # 封印旗纹理(缺盘=null=字形「旗」回退——独立可选件不连瓦片整批)
|
||||
var _tiles_board_type := "dungeon" # 当前装载瓦片套的 board_type(rebuild 按板切换——T6 换色批)
|
||||
var _digit_dark_ink := true # 数字墨族按板自适应(true=深墨三档)。缺盘平色回退态 #B39A78 裸土
|
||||
# 为中明度底——深墨族 CR 4.96 达标、亮墨族仅 2.2,故缺盘默认深墨;瓦片装载后按实测分位数覆写
|
||||
var _digit_plate := false # 数字色牌垫底模式(双峰纹理板——直画两族皆不过门槛时落牌,
|
||||
# 素牌+深墨 12:1 纹理免疫;2026-10-01 渲染帧取证 underdark 系深墨直画隐形后启用)
|
||||
|
||||
var cell_size: float: # 只读属性(ui_layout_probe 断言面——旧私有名 _cell 的契约化出口)
|
||||
get:
|
||||
@@ -647,9 +651,16 @@ func _badge_glyph(category: String) -> String:
|
||||
|
||||
# ---- 格态渲染(灰度截图可辨:完整覆尘 / 碎裂裸土 / 已开数字) ----
|
||||
|
||||
# 数字亮墨三档色温(圣经 v3.5 冻结④ 2026-09-30 批 B2——直画已开格底:1-3 冷亮/4-5 暖白/6-8 金亮,
|
||||
# 色温承袭密度语义;实测对比 6.0–6.3:1。旧深墨三档转色牌后备路径专用〔牌上深墨族 12:1〕)
|
||||
# 数字三档色温(按板自适应双族——v3.5 冻结④ 修订 2026-10-01):亮墨族 1-3 冷亮/4-5 暖白/6-8 金亮
|
||||
#(dungeon 瓦片实测达标维持);深墨族 1-3 青墨/4-5 赭墨/6-8 锈墨(色温语义同构——underdark/
|
||||
# deep_underdark 亮白筋纹瓦片上亮墨对亮斑 CR 1.0–1.9 融字,深墨族 5.7–11.1;选族判据见 _digit_ink_mode)
|
||||
func _digit_ink(d: int) -> Color:
|
||||
if _digit_dark_ink:
|
||||
if d <= 3:
|
||||
return UiKit.INK_COLD
|
||||
if d <= 5:
|
||||
return UiKit.INK_OCHRE
|
||||
return UiKit.INK_RUST
|
||||
if d <= 3:
|
||||
return UiKit.INK_L_COLD
|
||||
if d <= 5:
|
||||
@@ -697,16 +708,20 @@ func _paint_cell(c: Vector2i, hero: Vector2i) -> void:
|
||||
# 瓦片模式(高墙接线批 2026-09-26):tex_base = 查表瓦片(未开=墙瓦片/已开=地面瓦片),
|
||||
# bg_sb 降级为透明描边载体——只承载呼吸微光/主角蓝框(CellUnit 瓦片态画在瓦片之上),
|
||||
# 程序化平色退役;瓦片分配=格坐标哈希,初始化落定后逐拍稳定(禁逐轮重掷——圣经原则三)
|
||||
var sb: StyleBoxFlat
|
||||
# draw calls 批优化(2026-10-01):透明载体 sb 视觉贡献=零(透明底+零描边——不可见),但
|
||||
# StyleBoxFlat 多边形命令不可合批,每格打断棋盘批——实测 100 格满负荷帧 ~402 DC(A/B 探针
|
||||
# 阶梯:纹理统一 0 增益/去 glyph −23/去叠层 −23/去隐形 sb −402)。非英雄格 sb 直接置 null
|
||||
#(绘制路径零像素变化),仅英雄格保留蓝框载体。
|
||||
var sb: StyleBoxFlat = null
|
||||
var tile: Texture2D = null
|
||||
if _tiles_ok:
|
||||
# Color.TRANSPARENT 载体(引擎常量——视图禁内联色字面量纪律;透明+零描边=瓦片上不画任何东西)
|
||||
sb = UiKit.panel_flat(Color.TRANSPARENT, Color.TRANSPARENT, 3, 0)
|
||||
tile = _floor_tile_for(c) if revealed else _wall_tile_for(c)
|
||||
else:
|
||||
# 素材整批缺位回退 = 现行程序化平色路径(fresh checkout 冒烟不炸——任务书 §2.2)
|
||||
sb = UiKit.panel_flat(bg, bg.darkened(0.15), 3)
|
||||
if is_hero:
|
||||
if sb == null:
|
||||
sb = UiKit.panel_flat(Color.TRANSPARENT, Color.TRANSPARENT, 3, 0)
|
||||
sb.set_border_width_all(3)
|
||||
sb.border_color = COL_HERO
|
||||
if glyph == "" and _hero_tex_idle == null:
|
||||
@@ -717,7 +732,13 @@ func _paint_cell(c: Vector2i, hero: Vector2i) -> void:
|
||||
u.bg_sb = sb
|
||||
u.glyph = glyph
|
||||
u.glyph_color = digit_col
|
||||
u.plate = revealed and (glyph == "雷" or glyph == "?") # 色牌后备(v3.5 批 B2——数字直画退牌;雷/「?」维持牌载保读性;复杂格底〔物件纹样/装饰变体格〕判定随装饰瓦片自产批扩)
|
||||
# 色牌后备(v3.5 批 B2——数字直画退牌;雷/「?」维持牌载保读性)+ 2026-10-01 v3.4:双峰纹理板
|
||||
#(_digit_plate——underdark 系亮白筋+近黑斑并存的直画不可救纹理)数字落牌,牌上深墨 12:1
|
||||
var plate_digit := _digit_plate and glyph != "" and glyph != "雷" and glyph != "?" and glyph != "旗" and glyph != "人"
|
||||
if plate_digit:
|
||||
digit_col = COL_DIGIT # 牌上深墨族(素牌 12:1——双峰纹理免疫)
|
||||
u.glyph_color = digit_col
|
||||
u.plate = revealed and (glyph == "雷" or glyph == "?" or plate_digit)
|
||||
u.outline_sides.assign([]) # typed Array[int](代码审查批 3 类型收紧——assign 保持引用语义)
|
||||
u.facade_south = false
|
||||
u.proj_band = 0.0
|
||||
@@ -867,9 +888,14 @@ func _load_board_tiles(board_type: String = "dungeon") -> void:
|
||||
return
|
||||
# 地板归一(圣经 v3.5 冻结①/§1.4 样张 v3 记录——已开格底归一世界底层档 L≈0.10,带 0.08–0.14):
|
||||
# 方向稿 _v3_darken_floors 同式移植;现行瓦片 L≈0.036 低于带下沿故实为提亮;素材重产归资产批,
|
||||
# 本归一为程序代役(逐批装载时对 freshly-loaded 原图测光,幂等)
|
||||
# 本归一为程序代役(逐批装载时对 freshly-loaded 原图测光,幂等)。归一后逐像素明度顺路采集,
|
||||
# 驱动数字墨族按板自适应(_digit_ink_mode——均值分位同源同像素,禁二次解码)
|
||||
var lumas: Array = []
|
||||
for i in range(floors.size()):
|
||||
floors[i] = _normalize_floor_luma(floors[i])
|
||||
floors[i] = _normalize_floor_luma(floors[i], 0.10, lumas)
|
||||
var ink_mode := _digit_ink_mode(lumas)
|
||||
_digit_dark_ink = bool(ink_mode.dark)
|
||||
_digit_plate = bool(ink_mode.plate)
|
||||
# 六镜像件(词表 §二:wall_e←wall_w / wall_ne←wall_nw / wall_se←wall_sw /
|
||||
# wall_end_e←wall_end_w / wall_in_ne←wall_in_nw / wall_in_se←wall_in_sw;只水平翻转禁旋转
|
||||
# ——北受光不受损)
|
||||
@@ -907,7 +933,7 @@ static func _flip_tex(tex: Texture2D) -> Texture2D:
|
||||
# 地板瓦片明度归一(v3.5 批 B1——方向稿 _v3_darken_floors 同式移植):8×8 双线性重采样均值测光
|
||||
# (sRGB→线性域,Rec.709 系数),增益 k=(目标/实测)^(1/2.2) 钳 [0.6,1.8],逐通道 sRGB 域线性拉伸。
|
||||
# 输入恒为 freshly-loaded 原图(load_tex 每次盘读)——幂等可重入;32×32 五变体开销可忽略
|
||||
static func _normalize_floor_luma(tex: Texture2D, target_l: float = 0.10) -> Texture2D:
|
||||
static func _normalize_floor_luma(tex: Texture2D, target_l: float = 0.10, lumas_out = null) -> Texture2D:
|
||||
var img: Image = tex.get_image()
|
||||
if img.is_compressed():
|
||||
img.decompress()
|
||||
@@ -924,7 +950,12 @@ static func _normalize_floor_luma(tex: Texture2D, target_l: float = 0.10) -> Tex
|
||||
for y in range(img.get_height()):
|
||||
for x in range(img.get_width()):
|
||||
var c := img.get_pixel(x, y)
|
||||
img.set_pixel(x, y, Color(minf(c.r * k, 1.0), minf(c.g * k, 1.0), minf(c.b * k, 1.0), c.a))
|
||||
var nr := minf(c.r * k, 1.0)
|
||||
var ng := minf(c.g * k, 1.0)
|
||||
var nb := minf(c.b * k, 1.0)
|
||||
img.set_pixel(x, y, Color(nr, ng, nb, c.a))
|
||||
if lumas_out != null:
|
||||
lumas_out.append(0.2126 * _srgb_lin(nr) + 0.7152 * _srgb_lin(ng) + 0.0722 * _srgb_lin(nb))
|
||||
return ImageTexture.create_from_image(img)
|
||||
|
||||
|
||||
@@ -932,6 +963,56 @@ static func _srgb_lin(c: float) -> float:
|
||||
return c / 12.92 if c <= 0.04045 else pow((c + 0.055) / 1.055, 2.4)
|
||||
|
||||
|
||||
# ---- 数字墨族按板自适应(L2/L3 亮瓦融字缺陷修复 2026-10-01——甲案:墨色按关自适应+三关对比断言)----
|
||||
|
||||
const DIGIT_INK_CR_P90 := 4.5 # 墨族对地板 p90 亮斑对比度门槛(失效模式=亮白筋纹冲字,WCAG 数字体同源)
|
||||
const DIGIT_INK_CR_MEAN_BRIGHT := 2.5 # 亮族对地板均值门槛(中调防吃字)
|
||||
const DIGIT_INK_CR_MEAN_DARK := 3.0 # 深族对地板均值门槛(大字 AA 级——2.4 的实测观感=隐形,v3.4 收紧)
|
||||
|
||||
# 归一后地板逐像素明度 → 选数字呈现模式。三态:亮族直画(暗纹理板)/深族直画(中暗板)/
|
||||
# 色牌垫底(双峰纹理板——近黑斑与近白筋并存时任何墨族直画必融一峰,2026-10-01 渲染帧取证
|
||||
# 实证 underdark 系深墨隐形,牌上深墨 12:1 纹理免疫)。家族最弱成员(亮族=金亮/深族=锈墨)
|
||||
# 对 p90 与均值双门槛;亮族过选亮族,否则深族(均值门 3.0),两族皆不过落牌。
|
||||
# 实测(2026-10-01):dungeon p90=0.121 亮族 4.79/5.80 ✓ 直画;underdark p90=0.406 亮族 ✗、
|
||||
# 深族 5.34/**2.41**(均值 <3.0 ✗)→ 落牌;deep_underdark 同→落牌
|
||||
static func _digit_ink_mode(lumas: Array) -> Dictionary:
|
||||
var sorted := lumas.duplicate()
|
||||
sorted.sort()
|
||||
var n := sorted.size()
|
||||
if n == 0:
|
||||
return {"dark": false, "plate": false, "cr_p90_bright": 0.0, "cr_mean_bright": 0.0, "cr_p90_dark": 0.0, "cr_mean_dark": 0.0}
|
||||
var p90: float = sorted[int(n * 0.9)]
|
||||
var mean := 0.0
|
||||
for v in sorted:
|
||||
mean += v
|
||||
mean /= n
|
||||
var cr_p90_b := _contrast_y(UiKit.INK_L_GOLD, p90)
|
||||
var cr_mean_b := _contrast_y(UiKit.INK_L_GOLD, mean)
|
||||
var cr_p90_d := _contrast_y(UiKit.INK_RUST, p90)
|
||||
var cr_mean_d := _contrast_y(UiKit.INK_RUST, mean)
|
||||
var bright_ok := cr_p90_b >= DIGIT_INK_CR_P90 and cr_mean_b >= DIGIT_INK_CR_MEAN_BRIGHT
|
||||
var dark_ok := cr_p90_d >= DIGIT_INK_CR_P90 and cr_mean_d >= DIGIT_INK_CR_MEAN_DARK
|
||||
var plate := false
|
||||
var dark := false
|
||||
if bright_ok:
|
||||
dark = false
|
||||
elif dark_ok:
|
||||
dark = true
|
||||
else:
|
||||
plate = true # 双峰纹理:直画不可救,色牌兜底(素牌+深墨 12:1)
|
||||
return {"dark": dark, "plate": plate, "cr_p90_bright": cr_p90_b, "cr_mean_bright": cr_mean_b,
|
||||
"cr_p90_dark": cr_p90_d, "cr_mean_dark": cr_mean_d}
|
||||
|
||||
|
||||
static func _contrast_y(ink: Color, bg: float) -> float:
|
||||
var y := _ink_y(ink)
|
||||
return (maxf(y, bg) + 0.05) / (minf(y, bg) + 0.05)
|
||||
|
||||
|
||||
static func _ink_y(c: Color) -> float:
|
||||
return 0.2126 * _srgb_lin(c.r) + 0.7152 * _srgb_lin(c.g) + 0.0722 * _srgb_lin(c.b)
|
||||
|
||||
|
||||
# 格坐标确定性散列(禁 RNG/禁 randomize 纪律——「初始化随机落定禁逐轮重掷」圣经原则三落点:
|
||||
# 同格坐标恒同值,refresh/重绘/逐轮不变)。乘加混合 + 移位雪崩;64 位整型乘法回绕即哈希语义
|
||||
#(GDScript int 溢出静默回绕),板域 10×10/12×12 内 mod 10/mod 5 分布均匀
|
||||
|
||||
@@ -7,11 +7,12 @@ extends RefCounted
|
||||
|
||||
# ── 色板(语义族;值 = 2026-09-20 收敛时现值) ──
|
||||
const INK := Color8(51, 38, 27) # 墨族——正文/数字(对格底 ≥4.5:1)
|
||||
const INK_COLD := Color8(19, 46, 54) # 青墨 1-3 #132E36(数字墨三档·冷=稀疏——样张 v2 定稿 2026-09-28;v3.5 起转色牌后备路径专用)
|
||||
const INK_OCHRE := Color8(60, 37, 12) # 赭墨 4-5 #3C250C(数字墨三档·中;v3.5 起转色牌后备路径专用)
|
||||
const INK_RUST := Color8(74, 30, 20) # 锈墨 6-8 #4A1E14(数字墨三档·暖=密集;v3.5 起转色牌后备路径专用)
|
||||
const INK_COLD := Color8(19, 46, 54) # 青墨 1-3 #132E36(数字墨三档·冷=稀疏——样张 v2 定稿 2026-09-28;亮瓦自适应深墨族档兼色牌后备路径)
|
||||
const INK_OCHRE := Color8(60, 37, 12) # 赭墨 4-5 #3C250C(数字墨三档·中;亮瓦自适应深墨族档兼色牌后备路径)
|
||||
const INK_RUST := Color8(74, 30, 20) # 锈墨 6-8 #4A1E14(数字墨三档·暖=密集;亮瓦自适应深墨族档兼色牌后备路径)
|
||||
# ── 亮墨三档(圣经 v3.5 冻结④ 2026-09-30——数字直画已开格底:色温承袭密度语义,冷亮/暖白/金亮;
|
||||
# 实测对比 6.0–6.3:1(A3a);金亮低饱和避奖励金语义;色牌后备组用深墨族上牌〔12:1〕)──
|
||||
# 实测对比 6.0–6.3:1(A3a);金亮低饱和避奖励金语义;色牌后备组用深墨族上牌〔12:1〕。
|
||||
# 2026-10-01 修订:亮墨族限暗纹理板(dungeon),亮筋纹板按 _digit_ink_mode 自适应切深墨三档)──
|
||||
const INK_L_COLD := Color8(216, 236, 240) # 冷亮 1-3 #D8ECF0
|
||||
const INK_L_WARM := Color8(240, 226, 200) # 暖白 4-5 #F0E2C8(关卡屏 WARM 同族)
|
||||
const INK_L_GOLD := Color8(248, 227, 168) # 金亮 6-8 #F8E3A8
|
||||
|
||||
Reference in new issue
Block a user