跳到主要内容

encodeTerrains 编码地形

encodeTerrains

类型: MethodDeclaration

定义位置: codec.ts

描述

编码地形

参数 terrains: 地形数组

返回值:地形数据编码

参数

参数名类型描述默认值
terrainsUint8Array--

返回值

类型: 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