68 lines
1.5 KiB
JavaScript
68 lines
1.5 KiB
JavaScript
|
import {World} from '@avocado/physics/matter/world';
|
||
|
import {Room} from '@avocado/topdown';
|
||
|
// A flower barrel.
|
||
|
function flowerBarrelJSON(position) {
|
||
|
return {
|
||
|
traits: {
|
||
|
pictured: {
|
||
|
params: {
|
||
|
images: {
|
||
|
initial: {
|
||
|
offset: [0, -8],
|
||
|
size: [32, 32], // Derive?
|
||
|
uri: '/flower-barrel.png',
|
||
|
},
|
||
|
}
|
||
|
},
|
||
|
},
|
||
|
existent: {},
|
||
|
graphical: {},
|
||
|
physical: {
|
||
|
params: {
|
||
|
shape: {
|
||
|
type: 'rectangle',
|
||
|
position: [0, 0],
|
||
|
size: [20, 10],
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
positioned: {
|
||
|
state: {
|
||
|
x: position[0],
|
||
|
y: position[1],
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
};
|
||
|
}
|
||
|
// Room.
|
||
|
const roomJSON = {
|
||
|
layers: [
|
||
|
{
|
||
|
entities: [],
|
||
|
tiles: {
|
||
|
size: [12, 6],
|
||
|
data: [
|
||
|
1, 5, 6, 7, 1, 2, 3, 4, 1, 5, 6, 7,
|
||
|
1, 5, 6, 7, 1, 66, 67, 68, 1, 5, 6, 7,
|
||
|
1, 5, 6, 7, 1, 5, 6, 7, 1, 5, 6, 7,
|
||
|
1, 5, 6, 7, 1, 5, 6, 7, 1, 5, 6, 7,
|
||
|
1, 5, 6, 7, 1, 5, 6, 7, 1, 5, 6, 7,
|
||
|
1, 5, 6, 7, 1, 5, 6, 7, 1, 5, 6, 7,
|
||
|
],
|
||
|
},
|
||
|
tilesetUri: '/tileset.json',
|
||
|
},
|
||
|
],
|
||
|
};
|
||
|
for (let i = 0; i < 10; ++i) {
|
||
|
const x = Math.floor(Math.random() * 200) + 50;
|
||
|
const y = Math.floor(Math.random() * 75) + 50;
|
||
|
roomJSON.layers[0].entities.push(flowerBarrelJSON([x, y]));
|
||
|
}
|
||
|
export function createRoom() {
|
||
|
const room = new Room()
|
||
|
room.world = new World();
|
||
|
return room.fromJSON(roomJSON);
|
||
|
}
|