耳内有灰:
嗒啦啦终于修复:继续修复地形纹理渲染为条纹的 bug。问题已定位:nvgImagePattern 使用了原始纹理尺寸(如 512×512)作为 pattern 大小,但每个 tile 只有 64×64,导致只显示纹理的一小部分。让我先读取当前代码确认状态。问题清晰了。三个渲染路径都需要修复:普通渲染:nvgImagePattern(nvg, ox, oy, texW, texH, ...) → 应改为 (x, y, ts, ts)镜像渲染:同样使用了 texW, texH → 应改为 ts, tsdiagShift 路径:使用 pw = texW * 13,这个逻辑是特殊的大尺寸纹理映射,暂不改动核心修复:将 pattern 大小从原始纹理尺寸改为 tile 尺寸,pattern 起点改为 tile 位置,这样每个 tile 恰好显示一张完整纹理。构建成功。修复内容总结:问题:地形纹理渲染为条纹/斜线,完全看不到素材样貌。根因:nvgImagePattern 的 pattern 尺寸使用了原始纹理尺寸(如 512×512),但每个 tile 的矩形只有 64×64。纹理被映射到 512px 宽的区域上,而 tile 只截取了其中 1/8 的窄条,导致出现条纹。修复:普通渲染:nvgImagePattern(nvg, x, y, ts, ts, ...) — pattern 大小改为 tile 大小,起点改为 tile 位置,每个 tile 恰好显示一张完整纹理镜像渲染:同样改为 nvgImagePattern(nvg, fx, y, ts, ts, ...)diagShift 路径:保持不变(该路径使用 13 倍放大纹理,是专门的对角线纹理逻辑)
:
问题原因:拆除屋檐/柱子时调用的是旧版全局方法 mapData:UninstallRoof(),它只检查已弃用的 self.roofInstalled 全局字段。而实际屋檐数据存储在 wallParts[wk].roofInstalled 中。修复:从 piece.data.wallKey 解析出 anchorRow, anchorCol,改为调用 mapData:UninstallWallParts(row, col),这个方法会正确清除对应墙段的 pillarsInstalled 和 roofInstalled。












