mirror of
https://github.com/motajs/template.git
synced 2026-10-18 21:00:19 +08:00
docs(10-10): 引导式重写 map-tiles、flags
This commit is contained in:
parent
3836afe5d9
commit
5be78db471
@ -1,6 +1,6 @@
|
||||
# Flag 变量
|
||||
|
||||
Flag 系统(`state.flags`)是数据端提供的**全局可存档变量**。任何需要跨事件、跨楼层保留的简单状态,都可以存进 Flag;它会随存档一起保存与恢复。
|
||||
有些状态要跨事件、跨楼层一直保留,还要跟着存档走——比如「Boss 是否已被击败」「这道门开过没有」「某处计数到了几」。这些状态放哪?Flag 系统(`state.flags`)就是数据端提供的**全局可存档变量**:任何需要跨事件、跨楼层保留的简单状态,都可以存进 Flag,它会随存档一起保存与恢复。
|
||||
|
||||
## 字段
|
||||
|
||||
|
||||
@ -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)。
|
||||
|
||||
Loading…
Reference in New Issue
Block a user