encodeTerrains 编码地形
encodeTerrains
类型: MethodDeclaration
定义位置: codec.ts
描述
编码地形
参数 terrains
: 地形数组
返回值:地形数据编码
参数
参数名 | 类型 | 描述 | 默认值 |
---|---|---|---|
terrains | Uint8Array | - | - |
返回值
类型: string
地形数据编码
源代码
位置: 第 133 行
public encodeTerrains(terrains: Uint8Array): string {
const {encodeClone} = this
const TERRAINS = terrains
const LENGTH = TERRAINS.length
const BYTES = GL.arrays[0].uint8
let Bi = 0
let Ti = 0
while (Ti < LENGTH) {
if (TERRAINS[Ti] === 0) {
let blankCount = 1
Ti += 1
while (TERRAINS[Ti] === 0) {
blankCount++
Ti++
}
if (blankCount <= 49) {
BYTES[Bi++] = blankCount + 76
} else if (blankCount <= 98) {
BYTES[Bi++] = 125
BYTES[Bi++] = blankCount - 49 + 76
} else {
BYTES[Bi++] = 126
Bi = encodeClone(BYTES, Bi, blankCount)
}
} else if (
TERRAINS[Ti] === TERRAINS[Ti - 1] &&
TERRAINS[Ti] === TERRAINS[Ti + 1]) {
let cloneCount = 2
Ti += 2
while (TERRAINS[Ti] === TERRAINS[Ti - 1]) {
cloneCount++
Ti++
}
if (cloneCount <= 25) {
BYTES[Bi++] = cloneCount + 50
} else if (cloneCount <= 50) {
BYTES[Bi++] = 75
BYTES[Bi++] = cloneCount - 25 + 50
} else {
BYTES[Bi++] = 76
Bi = encodeClone(BYTES, Bi, cloneCount)
}
} else {
BYTES[Bi++] = TERRAINS[Ti++] + 35
}
}
return this.textDecoder.decode(
new Uint8Array(BYTES.buffer, 0, Bi)
)
}
文档生成时间:2025/7/7 12:07:06