UNPKG

sc4

Version:

A command line utility for automating SimCity 4 modding tasks & modifying savegames

42 lines (41 loc) 1.15 kB
import FileType from './file-types.js'; import { kFileType } from './symbols.js'; import { isLittleEndian } from 'sc4/utils'; import WriteBuffer from './write-buffer.js'; // # TerrainFlags // A data structure that holds which terrain tiles get rendered. export default class TerrainFlags { static [kFileType] = FileType.TerrainFlags; major = 0x0001; raw; parse(rs) { this.major = rs.word(); let buffer = rs.readArrayBuffer(); let size = Math.sqrt(buffer.byteLength / 2); let raw; if (isLittleEndian()) { raw = new Uint16Array(buffer); } else { raw = new Uint16Array(size ** 2); for (let i = 0; i < raw.length; i++) { raw[i] = rs.uint16(); } } this.raw = raw; rs.assert(); return this; } toBuffer() { const ws = new WriteBuffer(); ws.word(this.major); for (let i = 0; i < this.raw.length; i++) { ws.uint16(this.raw[i]); } return ws.toUint8Array(); } clear() { this.raw.fill(0); return null; } }