no message

This commit is contained in:
2026-07-06 09:43:46 +08:00
parent 4564ac5f47
commit ff1542c24f
22 changed files with 8771 additions and 309 deletions

View File

@@ -16,16 +16,29 @@ function ensureLayer(root: Node, name: 'Ground' | 'Border'): Node {
return layer;
}
function ensureTile(layer: Node, layerKind: 'ground' | 'border', x: number, y: number): Node {
/** 砖块可能在 Tiles排序合并后优先 Tiles 避免在 Ground/Border 重复创建 */
function findTileNode(levelRoot: Node, layerKind: 'ground' | 'border', x: number, y: number): Node | null {
const nodeName = tileNodeName(layerKind, x, y);
let node = layer.getChildByName(nodeName);
if (!node) {
node = new Node(nodeName);
node.parent = layer;
node.layer = UI_LAYER;
node.addComponent(UITransform);
node.addComponent(Sprite);
for (const parentName of ['Tiles', 'Ground', 'Border'] as const) {
const parent = levelRoot.getChildByName(parentName);
const node = parent?.getChildByName(nodeName) ?? null;
if (node?.isValid) return node;
}
return null;
}
function ensureTile(levelRoot: Node, layer: Node, layerKind: 'ground' | 'border', x: number, y: number): Node {
const existing = findTileNode(levelRoot, layerKind, x, y);
if (existing) {
existing.active = true;
return existing;
}
const nodeName = tileNodeName(layerKind, x, y);
const node = new Node(nodeName);
node.parent = layer;
node.layer = UI_LAYER;
node.addComponent(UITransform);
node.addComponent(Sprite);
node.active = true;
return node;
}
@@ -41,13 +54,13 @@ export function syncTileNodesFromConfig(levelRoot: Node, config: LevelConfig): n
for (const key of wantGround) {
const p = parseCellKey(key);
if (!p) continue;
ensureTile(ground, 'ground', p.x, p.y);
ensureTile(levelRoot, ground, 'ground', p.x, p.y);
n++;
}
for (const key of wantBorder) {
const p = parseCellKey(key);
if (!p) continue;
ensureTile(border, 'border', p.x, p.y);
ensureTile(levelRoot, border, 'border', p.x, p.y);
n++;
}