Files

43 lines
2.0 KiB
GDScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## VERTICAL SLICE - NOT FOR PRODUCTION
## SealMarkLayer——封印印记的独占承载子件(挂 BoardCellUnit 之下、1:1 贴格;复用 cell_type_glow_layer
## 的子件模式:材质独占、全幅 draw_rect、非零 alpha 触发——不复制其函数体,微光层件零改动)。
## 层序:印记层在 CellUnit 子树内(低于 BoardView 层的小人精灵——hero 精灵同层后挂天然在上);
## 迷雾态(fog_state != 0)整层隐藏由宿主 fog_state setter 联动承载(§6.5「封印随格隐没」)。
## 零动效(不呼吸不脉冲——§2.1 挖掘期唯一在动=接触带微光);参数与色全由 gd 注入
##(单点 = ui_kit SEAL_* 常量——本件禁内联色值与参数字面值)。
extends Node2D
const _SEAL_SHADER := preload("res://presentation/views/seal_mark.gdshader")
var _mat: ShaderMaterial = null
var _edge := 0.0
# 作用集侧唯一入口(on=false 仅隐不撤——子件生命周期归宿主 _sync_seal_layer)
func setup(edge: float, on: bool) -> void:
_edge = edge
visible = on
if not on:
return
if _mat == null:
_mat = ShaderMaterial.new()
_mat.shader = _SEAL_SHADER
material = _mat
_mat.set_shader_parameter("cell_px", edge)
_mat.set_shader_parameter("ring_frac", UiKit.SEAL_RING_FRAC)
_mat.set_shader_parameter("wall_frac", UiKit.SEAL_WALL_FRAC)
_mat.set_shader_parameter("arm_frac", UiKit.SEAL_ARM_FRAC)
_mat.set_shader_parameter("halo_frac", UiKit.SEAL_HALO_FRAC)
_mat.set_shader_parameter("halo_alpha", UiKit.SEAL_HALO_ALPHA)
_mat.set_shader_parameter("halo_gamma", UiKit.SEAL_HALO_GAMMA)
_mat.set_shader_parameter("mark_col", UiKit.SEAL_BLACK)
queue_redraw()
func _draw() -> void:
if _edge <= 0.0:
return
# 一格全幅:片元着色器按距离场产出环+十字+环外光圈。
# 输入 alpha 取 1/255(非零)——全透明几何在部分批次路径下会被整条跳过,着色器就跑不到。
draw_rect(Rect2(Vector2.ZERO, Vector2(_edge, _edge)), Color(1, 1, 1, 1.0 / 255.0))