iter16ui T4a:N4a裸色全量收ui_kit(T0普查实数25处/10文件原值搬运——任务书N4a记5处系漏记)+N4c类型色五族TG_*立项(四族实机值+第五族TG_AOE #E25676 demo补族)+tg_band()同源分族判定(Q4甲三选一/货架同判;aoe/blast归AOE=reward.tres现成spark_aoe/clear_blast消费面;max_hp归回复族)+商店货架固定默认带改分族;探针白名单清零=呈现层裸Color8=0;轻闸冒烟782/0+三探针绿

This commit is contained in:
DKChan committed 2026-10-06 03:19:13 +08:00
1 parent 4e7aa83367
commit af5f317aea
12 files changed
+63 -46

No files matched your search

+2 -2
View File
@@ -128,7 +128,7 @@ static func build_start_overlay(host: Control, db = null) -> Dictionary:
box.add_theme_constant_override("separation", 10)
pad.add_child(box)
var title := UiKit.label("Dungeon Sweeper", 40, true, Color8(246, 238, 218))
var title := UiKit.label("Dungeon Sweeper", 40, true, UiKit.INK_ON_DEEP)
box.add_child(title)
var sub := UiKit.label("扫雷的因 · 逐行兑现的果", 16, false, UiKit.WARM_SOFT)
box.add_child(sub)
@@ -188,7 +188,7 @@ static func build_start_overlay(host: Control, db = null) -> Dictionary:
foe_row.add_child(tr)
stage.add_child(foe_row)
var pedestal := Panel.new()
var ped_sb := UiKit.panel_flat(Color8(90, 74, 56), Color8(58, 46, 34), 17, 2)
var ped_sb := UiKit.panel_flat(UiKit.TITLE_PEDESTAL, UiKit.BG_ROOT, 17, 2)
pedestal.add_theme_stylebox_override("panel", ped_sb)
pedestal.custom_minimum_size = Vector2(240, 22)
pedestal.size_flags_horizontal = Control.SIZE_SHRINK_CENTER
+4 -4
View File
@@ -239,8 +239,8 @@ class Dot:
extends Control
var px := 10.0
var lit := false
var lit_color := Color8(246, 198, 103)
var core_color := Color8(248, 226, 168)
var lit_color := UiKit.CANDLE
var core_color := UiKit.RAP_DOT_CORE_WARM
var off_color := UiKit.DOT_OFF
func _init(p: float, rap := false) -> void:
px = p
@@ -248,8 +248,8 @@ class Dot:
size_flags_vertical = Control.SIZE_SHRINK_CENTER if rap else Control.SIZE_FILL
mouse_filter = Control.MOUSE_FILTER_IGNORE
if rap:
lit_color = Color8(105, 161, 232)
core_color = Color8(156, 194, 240)
lit_color = UiKit.RAP_DOT_LIT_BLUE
core_color = UiKit.RAP_DOT_CORE_BLUE
func _draw() -> void:
draw_rect(Rect2(Vector2.ZERO, Vector2(px, px)), lit_color if lit else off_color)
if lit:
@@ -239,7 +239,7 @@ func _play_victory_dust() -> void:
var c := _fx_center()
for i in 10:
var mote := ColorRect.new()
mote.color = Color8(246, 198, 103)
mote.color = UiKit.CANDLE
mote.size = Vector2(5, 5)
mote.mouse_filter = Control.MOUSE_FILTER_IGNORE
mote.position = c + Vector2((float(i % 5) - 2.0) * 44.0, -40.0 - 10.0 * float(i / 5))
+4 -7
View File
@@ -76,7 +76,6 @@ const PROJECTION_EDGE_COL := Color(0, 0, 0, 0.06) # 投影远段(渐隐收
# 直贴零暗档零阴影〔用户终裁「它们是同样颜色的」〕;墙脚阴线只画地面/墙面交界;(b)-(c) 交界
# 无边框由 BoardView 侧跳过墙格北向描边承载)──
const E_FACADE_FRAC := 0.30 # 墙面承接高(格边比——用户指令 30%)
const E_FACADE_FOOT_COL := Color8(52, 42, 32) # 墙脚阴线(方向稿同色)
# ── 素材槽位(本批全 null = 程序化占位服役;art-bible §8.2 格面 32×32 暂定档)──
var tex_base: Texture2D = null # ① 砖面底
var tex_mutation: Texture2D = null # ② 变异纹带
@@ -111,8 +110,6 @@ var mutation_mark := "":
# ── 视野迷雾呈现态(迭代 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:
@@ -135,7 +132,7 @@ func _draw() -> void:
# 坐标推导:各边内贴 2px 矩形,相邻边矩形全长相交=周界闭合)
if not outline_sides.is_empty():
var ow := 2.0
var oc := Color8(30, 24, 18)
var oc := UiKit.FOG_OUTLINE
for b in outline_sides:
var or_ := Rect2()
match int(b):
@@ -257,9 +254,9 @@ func _draw() -> void:
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)
draw_rect(Rect2(Vector2.ZERO, Vector2(edge, edge)), UiKit.FOG_MEMORY_PLATE, true)
if glyph != "":
_draw_glyph(glyph, FOG_MEMORY_INK, maxi(18, int(ceil(edge * 0.5)))) # 字号下限 18(§7.4 冻结公式同源)
_draw_glyph(glyph, UiKit.FOG_MEMORY_INK, maxi(18, int(ceil(edge * 0.5)))) # 字号下限 18(§7.4 冻结公式同源)
# ⑦ 中立移除退色层(迭代 13 T8/D6——P2 甲退色降档:暗幕压顶全层覆盖,暗淡记忆态同族呈现语义;
# 顶层于迷雾之上——移除格不再参与迷雾语义。本实现移除集=未揭示雷格(无数字无旗印))
if removed_dim:
@@ -305,7 +302,7 @@ func _draw_e_facade() -> void:
var ts := tex_facade.get_size()
draw_texture_rect_region(tex_facade, Rect2(0.0, y0, edge, strip_h),
Rect2(0.0, 0.0, ts.x, ts.y * E_FACADE_FRAC))
draw_rect(Rect2(0.0, y0, edge, 1.0), E_FACADE_FOOT_COL, true)
draw_rect(Rect2(0.0, y0, edge, 1.0), UiKit.E_FACADE_FOOT_COL, true)
# 文字位绘制:水平居中 + 垂直居中(基线 = (格高 − 字高)/2 + 上伸部——旧 Button 居中对齐等价)
+1 -1
View File
@@ -45,7 +45,7 @@ func _init() -> void:
# 旧 chord 一次性 toast 提示退役归此常驻条;审计第 7 条用户批)
var hint := PanelContainer.new()
hint.add_theme_stylebox_override("panel", UiKit.panel_flat(
Color(0.09, 0.07, 0.05, 0.82), Color8(74, 62, 48), 0, 1, Vector4(12, 2, 12, 2)))
Color(0.09, 0.07, 0.05, 0.82), UiKit.HINT_STRIP_EDGE, 0, 1, Vector4(12, 2, 12, 2)))
hint.size_flags_horizontal = Control.SIZE_SHRINK_CENTER
hint.mouse_filter = Control.MOUSE_FILTER_IGNORE
vb.add_child(hint)
+1 -1
View File
@@ -330,7 +330,7 @@ func _build_forge_row(holder: VBoxContainer, row: Dictionary) -> Dictionary:
var name_l := UiKit.label("%s %+d/级" % [String(row.get("display_name", "")), int(row.get("flat", 0))], 14, true, UiKit.INK)
name_l.custom_minimum_size = Vector2(112, 0)
line.add_child(name_l)
var level_l := UiKit.label("", 13, true, Color8(246, 238, 218))
var level_l := UiKit.label("", 13, true, UiKit.INK_ON_DEEP)
# M3:Lv 章化(木底小章——demo lvtag;Label normal 槽挂样式盒)
level_l.add_theme_stylebox_override("normal", UiKit.panel_flat(UiKit.CAMP_HEADER_BAND, Color(0, 0, 0, 0), 2, 0, Vector4(6, 0, 6, 0)))
level_l.custom_minimum_size = Vector2(44, 0)
@@ -93,13 +93,7 @@ func open_pick(header: String, cards: Array) -> void:
var title := lines[0]
var desc := "\n".join(lines.slice(1)) if lines.size() > 1 else ""
var idl := cid.to_lower()
var band := Color8(194, 178, 100) # 通用增益(默认——§4.2 类型微光族色)
if idl.contains("heal"):
band = Color8(102, 164, 87)
elif idl.contains("magic") or idl.contains("blast"):
band = Color8(138, 114, 196)
elif idl.contains("pierce"):
band = Color8(87, 160, 160)
var band := UiKit.tg_band(idl) # 类型色带单点(N4c 2026-10-06——TG_* 五族同源判定;aoe/blast 归 TG_AOE)
var card := UiKit.bcard(title, desc, band, _icon_for_id(idl))
card.gui_input.connect(func(ev: InputEvent) -> void:
if ev is InputEventMouseButton and ev.pressed and ev.button_index == MOUSE_BUTTON_LEFT:
+5 -6
View File
@@ -34,7 +34,6 @@ const NODE_TYPE_NAMES := {"battle": "战斗", "reward": "奖励", "rest": "休
const TEX_NODE_ICONS := {"battle": UiKit.TEX_NODE_BATTLE, "reward": UiKit.TEX_NODE_REWARD,
"rest": UiKit.TEX_NODE_REST, "boss": UiKit.TEX_NODE_BOSS, "shop": UiKit.TEX_NODE_SHOP}
const NODE_ICON_PX := 20.0 # 节点图标边长(样张 v1 冻结——20px 烘焙 1:1 消费零缩放)
const ICON_TINT_ON_GOLD := Color(24.0 / 240.0, 20.0 / 226.0, 16.0 / 200.0) # 当前金底图标墨 = INK_ROUTE 乘法调制(双色墨制——暗底系 WARM 原色)
const TITLE_ENTRY := "出发——选择首个节点" # 入口停点(布局决策 1——台账 143 遗留清偿)
const TITLE_SINGLE := "继续前进" # 单链停点
const TITLE_FORK := "选择下一节点" # 岔路停点
@@ -124,7 +123,7 @@ func _init() -> void:
# _hp_value/_attr_value/_bonus_value/_feat_value 投喂键全部保留)
var bottom := PanelContainer.new()
bottom.add_theme_stylebox_override("panel",
UiKit.panel_flat(Color8(240, 228, 200), UiKit.CAMP_HEADER_BAND, 0, 2, Vector4(12, 6, 12, 6)))
UiKit.panel_flat(UiKit.MAP_BAR_PLATE, UiKit.CAMP_HEADER_BAND, 0, 2, Vector4(12, 6, 12, 6)))
box.add_child(bottom)
var strip := HBoxContainer.new()
strip.add_theme_constant_override("separation", 18)
@@ -140,7 +139,7 @@ func _init() -> void:
strip.add_child(face)
var life_box := VBoxContainer.new()
strip.add_child(life_box)
life_box.add_child(UiKit.label("生命", 11, false, Color8(110, 69, 52)))
life_box.add_child(UiKit.label("生命", 11, false, UiKit.INK_HINT))
_hp_value = UiKit.label("", 15, true, UiKit.INK_TITLE)
life_box.add_child(_hp_value)
_hp_bar = Control.new()
@@ -150,7 +149,7 @@ func _init() -> void:
strip.add_child(_vdiv())
var attr_box := VBoxContainer.new()
strip.add_child(attr_box)
attr_box.add_child(UiKit.label("属性", 11, false, Color8(110, 69, 52)))
attr_box.add_child(UiKit.label("属性", 11, false, UiKit.INK_HINT))
_attr_value = UiKit.label("", 15, true, UiKit.INK_TITLE)
attr_box.add_child(_attr_value)
strip.add_child(_vdiv())
@@ -182,7 +181,7 @@ func _init() -> void:
# 竖分隔线(M5 底栏分组线——亮面板上低对比细线)
static func _vdiv() -> ColorRect:
var v := ColorRect.new()
v.color = Color8(201, 184, 142)
v.color = UiKit.MAP_VDIV
v.custom_minimum_size = Vector2(1, 44)
return v
@@ -457,7 +456,7 @@ func _draw_graph(canvas: Control) -> void:
# 贴图缺位 → 字形回退=贴图在位字形退役惯例)
var icon: Texture2D = _node_icons.get(t)
if icon != null:
var tint := ICON_TINT_ON_GOLD if col == COL_ROOM_CURRENT else Color(1.0, 1.0, 1.0)
var tint := UiKit.ICON_TINT_ON_GOLD if col == COL_ROOM_CURRENT else Color(1.0, 1.0, 1.0)
canvas.draw_texture_rect(icon, Rect2(p - Vector2(NODE_ICON_PX, NODE_ICON_PX) / 2.0,
Vector2(NODE_ICON_PX, NODE_ICON_PX)), false, tint)
else:
+2 -2
View File
@@ -42,7 +42,7 @@ func _build() -> void:
var title := UiKit.label("设置", 24, true, UiKit.INK_TITLE)
title.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
box.add_child(title)
var hint := UiKit.label("系统级设置——独立存储不随存档(一安装一份,删游戏才消失)", 13, false, Color8(110, 69, 52))
var hint := UiKit.label("系统级设置——独立存储不随存档(一安装一份,删游戏才消失)", 13, false, UiKit.INK_HINT)
hint.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
box.add_child(hint)
box.add_child(HSeparator.new())
@@ -81,7 +81,7 @@ func _build() -> void:
motion_row.add_child(_motion_btn)
_motion_st = UiKit.label("完整", 14, true, UiKit.INK_LABEL)
motion_row.add_child(_motion_st)
var why := UiKit.label("快速 = 时长减半(运动敏感 / 演示用)", 12, false, Color8(110, 69, 52))
var why := UiKit.label("快速 = 时长减半(运动敏感 / 演示用)", 12, false, UiKit.INK_HINT)
why.position.y = 0
box.add_child(why)
+1 -1
View File
@@ -186,7 +186,7 @@ func _build_shelf_card(holder: Control, c: Dictionary) -> Dictionary:
icon_key = UiKit.TEX_ICON_POUCH
var card := UiKit.bcard(String(c.get("display_name", kind)),
"%s %+d(本冒险)" % [String(KIND_LABELS.get(kind, kind)), int(c.get("value", 0))],
Color8(194, 178, 100), icon_key,
UiKit.tg_band(kl), icon_key, # 类型色带单点(N4c/Q4 甲——货架与三选一同源判定,原固定默认带)
"%d ◈" % int(c.get("price", 0)), String(KIND_LABELS.get(kind, kind)))
var btn := UiKit.button("购买")
btn.pressed.connect(_emit_shelf_buy.bind(kind))
+38
View File
@@ -44,6 +44,44 @@ const HERO_BLUE_DEEP := Color8(30, 90, 150) # 小人蓝同族深档(意图
const BOSS_PURPLE := Color8(143, 47, 106) # 紫赤(Boss 专属)
const DEBUFF_PURPLE := Color8(122, 66, 148) # 妨害紫(意图 ☠)
# ── 类型色五族(UI 设计对齐批 N4c 2026-10-06——值 = demo --tg-* 冻结抄录〔任务书 §2.2 抄录表〕;
# 前四族 = 实机现值搬运、第五族群伤 demo 值补族——实机原完全缺位,消费面 = tg_band() 同源判定)──
const TG_BUFF := Color8(194, 178, 100) # 通用增益/默认带
const TG_HEAL := Color8(102, 164, 87) # 回复
const TG_MAGIC := Color8(138, 114, 196) # 魔法
const TG_PIERCE := Color8(87, 160, 160) # 穿甲
const TG_AOE := Color8(226, 86, 118) # 群伤/AOE #E25676(demo --tg-aoe)
# 类型色带分族判定(N4c/Q4 甲——三选一与商店货架同源同判:id/kind 小写子串匹配,默认=通用增益带;
# blast=爆裂群伤归 TG_AOE(reward.tres 现成 clear_blast/spark_aoe 消费面);max_hp 含 hp 归回复族)
static func tg_band(id_lower: String) -> Color:
if id_lower.contains("heal") or id_lower.contains("hp"):
return TG_HEAL
if id_lower.contains("aoe") or id_lower.contains("blast"):
return TG_AOE
if id_lower.contains("magic"):
return TG_MAGIC
if id_lower.contains("pierce"):
return TG_PIERCE
return TG_BUFF
# ── 呈现散件裸色搬运(UI 设计对齐批 N4a 2026-10-06——原值搬运零观感;本节立后 ui_kit 之外
# 呈现层裸 Color8 = 0,守卫 = ui_contrast_probe 静态段)──
const INK_HINT := Color8(110, 69, 52) # 提示/警示暖棕墨(设置警示文/地图底栏组标)
const INK_ON_DEEP := Color8(246, 238, 218) # 深底标题亮墨(主菜单标题/营地柜台等级章字)
const TITLE_PEDESTAL := Color8(90, 74, 56) # 标题屏底座石台面(椭圆 17 底座;描边=BG_ROOT)
const MAP_BAR_PLATE := Color8(240, 228, 200) # 关卡地图底栏亮板
const MAP_VDIV := Color8(201, 184, 142) # 关卡地图底栏竖分隔线(1px)
const HINT_STRIP_EDGE := Color8(74, 62, 48) # 棋盘底提示条描边(半透明罩层板边)
const RAP_DOT_CORE_WARM := Color8(248, 226, 168) # AP 点阵亮心(烛光黄族)
const RAP_DOT_LIT_BLUE := Color8(105, 161, 232) # RAP 点阵亮面(小人蓝族)
const RAP_DOT_CORE_BLUE := Color8(156, 194, 240) # RAP 点阵亮心(小人蓝族)
const E_FACADE_FOOT_COL := Color8(52, 42, 32) # 墙脚阴线(方向稿同色——原 board_cell_unit 局部)
const FOG_MEMORY_PLATE := Color8(58, 58, 58) # 记忆板 #3A3A3A(§6.5——原 board_cell_unit 局部)
const FOG_MEMORY_INK := Color8(196, 196, 196) # 记忆墨 #C4C4C4(对记忆板 ≈6.3:1——原局部)
const FOG_OUTLINE := Color8(30, 24, 18) # 雾面轮廓墨(原 board_cell_unit _draw 局部 oc)
const ICON_TINT_ON_GOLD := Color(24.0 / 240.0, 20.0 / 226.0, 16.0 / 200.0) # 当前金底图标墨 = WARM 分量乘法调制(双色墨制——原 level_map_screen 局部)
const DUSK := Color8(90, 108, 140) # 暮蓝(全作唯一暮蓝档——失败终局)
const WARM := Color8(240, 226, 200) # 暖白(暗底正文)
+3 -14
View File
@@ -9,20 +9,9 @@ extends Node
const MIN_RATIO := 4.5
# R1 过渡白名单:呈现层(ui_kit.gd 之外)允许的裸 Color8( 在册处——file→恰计数。
# T0 实测全量=25 处/10 文件(任务书 N4a 普查 5 处系漏记);UI 设计对齐批 T4a 全量原值搬运收 ui_kit
# 后本表应为空表。新增裸取色 = 本闸红(先立常量再消费)。
const BARE_COLOR8_WL := {
"res://presentation/views/board_cell_unit.gd": 4, # N4a:E_FACADE_FOOT_COL/FOG_MEMORY_PLATE/FOG_MEMORY_INK/oc
"res://presentation/views/level_map_screen.gd": 4, # N4a:ICON_TINT_ON_GOLD + 3 处(T0 普查补记)
"res://presentation/ui_assembler.gd": 3,
"res://presentation/views/ap_bar_view.gd": 4,
"res://presentation/views/battle_end_overlay.gd": 1,
"res://presentation/views/board_zone_view.gd": 1,
"res://presentation/views/camp_overlay_view.gd": 1,
"res://presentation/views/curio_pick_overlay.gd": 4, # F3 类型色内联四族(bonus_pick 随 15② 改名)
"res://presentation/views/settings_overlay.gd": 2,
"res://presentation/views/shop_overlay_view.gd": 1, # F3 货架卡固定默认值
}
# T4a 已把 T0 实测全量 25 处/10 文件全部原值搬运收 ui_kit(2026-10-06)——本表应为空表;
# 新增裸取色 = 本闸红(先立常量再消费)。
const BARE_COLOR8_WL := {}
# 测点表:[名称, 墨色, 直背景, 墨α](语义见行尾;新增文字位随批入表,白名单豁免须注理由)