sc4
Version:
A command line utility for automating SimCity 4 modding tasks & modifying savegames
42 lines (41 loc) • 1.15 kB
JavaScript
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;
}
}