57 lines
1.6 KiB
JavaScript
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;
|
|
} |