diff --git a/docs/intermediate/flags.md b/docs/intermediate/flags.md index 4f85a3b..fb5e17e 100644 --- a/docs/intermediate/flags.md +++ b/docs/intermediate/flags.md @@ -1,6 +1,6 @@ # Flag 变量 -Flag 系统(`state.flags`)是数据端提供的**全局可存档变量**。任何需要跨事件、跨楼层保留的简单状态,都可以存进 Flag;它会随存档一起保存与恢复。 +有些状态要跨事件、跨楼层一直保留,还要跟着存档走——比如「Boss 是否已被击败」「这道门开过没有」「某处计数到了几」。这些状态放哪?Flag 系统(`state.flags`)就是数据端提供的**全局可存档变量**:任何需要跨事件、跨楼层保留的简单状态,都可以存进 Flag,它会随存档一起保存与恢复。 ## 字段 diff --git a/docs/intermediate/map-tiles.md b/docs/intermediate/map-tiles.md index 1a61b64..b9e44f6 100644 --- a/docs/intermediate/map-tiles.md +++ b/docs/intermediate/map-tiles.md @@ -1,10 +1,10 @@ # 地图图块 -地图图块存放在图层(`IMapLayer`)上。本篇讲解图块的读取、写入、批量操作与迭代,接口都定义在图层的静态部分(`ILayerStatic`)。 +想在地图上摆一格、擦掉一格,或者整片地读写图块,该找谁?答案是**图层**——地图图块存放在图层(`IMapLayer`)上,图块的读取、写入、批量操作与迭代都由图层负责。这些接口都定义在图层的静态部分(`ILayerStatic`)。 ## 取到图层 -图块操作针对图层。你可以从楼层的 `layerList` 中取到图层,事件层则通过 `eventLayer` 取得: +图块操作针对图层,所以第一步是拿到图层对象。你可以从楼层的 `layerList` 中取到图层,事件层则通过 `eventLayer` 取得: ```ts const map = state.maps.getMap('floor-1')!; @@ -13,8 +13,12 @@ for (const layer of map.layerList) { } ``` +楼层的三层结构见[地图结构](./map-structure.md)。 + ## 读取与写入单点 +单格操作有三个接口: + - `getBlock(x, y)`:取指定点的静态图块数字(无图块返回 0,不在地图上返回 -1); - `setBlock(block, x, y)`:设置指定点的静态图块; - `removeBlock(x, y)`:移除指定点的静态图块。 @@ -27,6 +31,8 @@ layer.removeBlock(3, 5); ## 批量读写 +要一次处理一片区域,用批量接口: + - `putMapData(array, x, y, width)`:把一维数组写入地图,数组第一项对应 `(x, y)`,`width` 为矩形范围的宽度; - `getMapData()`:取整张地图的图块数组; - `getMapData(x, y, width, height)`:取指定矩形区域的图块数组。 @@ -47,4 +53,6 @@ for (const block of layer.iterateBlocks()) { } ``` +若需要读取某一点的全部图块信息(静态、动态、事件等),图层还提供 `getLocationData(x, y)`;它面向更底层的需求,留到高级教程。 + 图层与事件层的结构见[地图结构](./map-structure.md);想从 `state` 出发找到地图对象,见[数据端总览](./data-state-overview.md)。