parser/lotheader.js
2024-06-24 21:17:23 +12:00

57 lines
1.6 KiB
JavaScript

const Reader = require("./reader");
module.exports = (path) => {
let buf = new Reader(path);
let data = {};
data.version = buf.read_i32();
data.num_tiles = buf.read_i32();
data.strings = [];
for (let i = 0; i < data.num_tiles; i++) {
data.strings[i] = buf.read_string();
}
buf.read_u8();
data.lot_width = buf.read_i32();
data.lot_height = buf.read_i32();
data.levels = buf.read_i32();
data.num_rooms = buf.read_i32();
data.rooms = [];
for (let i = 0; i < data.num_rooms; i++) {
let room = {};
room.name = buf.read_string();
room.level = buf.read_i32();
room.num_rects = buf.read_i32();
room.rects = [];
for (let j = 0; j < room.num_rects; j++) {
room.rects[j] = {
x: buf.read_i32(), y: buf.read_i32(),
width: buf.read_i32(), height: buf.read_i32()
};
}
room.num_objects = buf.read_i32();
room.objects = [];
for (let j = 0; j < room.num_objects; j++) {
room.objects[j] = {
type: buf.read_i32(),
x: buf.read_i32(), y: buf.read_i32()
}
}
data.rooms[i] = room;
}
data.num_buildings = buf.read_i32();
data.buildings = [];
for (let i = 0; i < data.num_buildings; i++) {
let building = {};
building.num_rooms = buf.read_i32();
building.room_indices = [];
for (let j = 0; j < building.num_rooms; j++) {
building.room_indices[j] = buf.read_i32();
}
data.buildings[i] = building;
}
return data;
}