refactor: better gen
This commit is contained in:
parent
a8d345eebe
commit
dcf6fff66d
|
@ -3,8 +3,6 @@ import {createNoise2D} from 'simplex-noise';
|
|||
|
||||
import {createRandom, Generator} from '@/util/math.js';
|
||||
|
||||
import createEcs from './create-ecs.js';
|
||||
|
||||
const seed = 42069;
|
||||
const prng = alea(seed);
|
||||
const rawNoise = createNoise2D(prng);
|
||||
|
@ -54,10 +52,10 @@ const Forest = new Generator({
|
|||
],
|
||||
});
|
||||
|
||||
export default async function createForest(Ecs) {
|
||||
const ecs = createEcs(Ecs);
|
||||
export default async function createForest() {
|
||||
const area = {x: w, y: h};
|
||||
const master = ecs.get(await ecs.create({
|
||||
const entities = [];
|
||||
entities.push({
|
||||
AreaSize: {x: area.x * 16, y: area.y * 16},
|
||||
Ticking: {},
|
||||
TileLayers: {
|
||||
|
@ -78,8 +76,9 @@ export default async function createForest(Ecs) {
|
|||
},
|
||||
Time: {},
|
||||
Water: {},
|
||||
}));
|
||||
});
|
||||
Forest.generate();
|
||||
const master = entities[0];
|
||||
const layer0 = master.TileLayers.layers[0];
|
||||
layer0.data = Forest.matrix;
|
||||
for (let y = 0; y < h; ++y) {
|
||||
|
@ -110,7 +109,7 @@ export default async function createForest(Ecs) {
|
|||
if (v > 0.2) {
|
||||
v = noise(x * (1 / 7), y * (1 / 7));
|
||||
if (v < 0.15) {
|
||||
await ecs.create({
|
||||
entities.push({
|
||||
Position: entityPosition(x, y),
|
||||
Sprite: {
|
||||
anchorY: 0.7,
|
||||
|
@ -120,7 +119,7 @@ export default async function createForest(Ecs) {
|
|||
});
|
||||
}
|
||||
else if (v < 0.17) {
|
||||
await ecs.create({
|
||||
entities.push({
|
||||
Position: entityPosition(x, y),
|
||||
Sprite: {
|
||||
anchorY: 0.875,
|
||||
|
@ -131,7 +130,7 @@ export default async function createForest(Ecs) {
|
|||
}
|
||||
v = noise(x * (1 / 12), y * (1 / 12));
|
||||
if (v < 0.08) {
|
||||
await ecs.create({
|
||||
entities.push({
|
||||
Position: entityPosition(x, y),
|
||||
Sprite: {
|
||||
anchorY: 0.7,
|
||||
|
@ -143,6 +142,6 @@ export default async function createForest(Ecs) {
|
|||
}
|
||||
}
|
||||
}
|
||||
return ecs;
|
||||
return entities;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
import createEcs from './create-ecs.js';
|
||||
|
||||
export default async function createHomestead(Ecs, id) {
|
||||
const ecs = createEcs(Ecs);
|
||||
export default async function createHomestead(id) {
|
||||
const area = {x: 100, y: 60};
|
||||
await ecs.create({
|
||||
const entities = [];
|
||||
entities.push({
|
||||
AreaSize: {x: area.x * 16, y: area.y * 16},
|
||||
Ticking: {},
|
||||
TileLayers: {
|
||||
|
@ -25,7 +23,7 @@ export default async function createHomestead(Ecs, id) {
|
|||
Time: {},
|
||||
Water: {water: {}},
|
||||
});
|
||||
await ecs.create({
|
||||
entities.push({
|
||||
Collider: {
|
||||
bodies: [
|
||||
{
|
||||
|
@ -61,5 +59,5 @@ export default async function createHomestead(Ecs, id) {
|
|||
Ticking: {},
|
||||
VisibleAabb: {},
|
||||
});
|
||||
return ecs;
|
||||
return entities;
|
||||
}
|
||||
|
|
|
@ -267,7 +267,10 @@ export default class Engine {
|
|||
if ('ENOENT' !== error.code) {
|
||||
throw error;
|
||||
}
|
||||
const homestead = await createHomestead(this.Ecs, id);
|
||||
const homestead = createEcs(this.Ecs);
|
||||
for (const entity of await createHomestead(id)) {
|
||||
await homestead.create(entity);
|
||||
}
|
||||
await this.saveEcs(
|
||||
['homesteads', `${id}`].join('/'),
|
||||
homestead,
|
||||
|
@ -277,7 +280,10 @@ export default class Engine {
|
|||
['houses', `${id}`].join('/'),
|
||||
house,
|
||||
);
|
||||
const forest = await createForest(this.Ecs, id);
|
||||
const forest = createEcs(this.Ecs);
|
||||
for (const entity of await createForest()) {
|
||||
await forest.create(entity);
|
||||
}
|
||||
await this.saveEcs(
|
||||
['forests', `${id}`].join('/'),
|
||||
forest,
|
||||
|
|
|
@ -2,6 +2,7 @@ import {del, get, set} from 'idb-keyval';
|
|||
|
||||
import {encode} from '@/packets/index.js';
|
||||
|
||||
import createEcs from '../../create-ecs.js';
|
||||
import '../../create-forest.js';
|
||||
import '../../create-homestead.js';
|
||||
import '../../create-player.js';
|
||||
|
@ -82,15 +83,15 @@ if (import.meta.hot) {
|
|||
const resolver = createResolver();
|
||||
resolvers.push(resolver);
|
||||
await beforeResolver;
|
||||
// const oldBuffer = await engine.server.readData('players/0');
|
||||
// const oldPlayer = JSON.parse((new TextDecoder()).decode(oldBuffer));
|
||||
// const buffer = await createPlayer(0);
|
||||
// const player = JSON.parse((new TextDecoder()).decode(buffer));
|
||||
// // Less jarring
|
||||
// player.Ecs = oldPlayer.Ecs;
|
||||
// player.Direction = oldPlayer.Direction;
|
||||
// player.Position = oldPlayer.Position;
|
||||
// await engine.server.writeData('players/0', (new TextEncoder()).encode(JSON.stringify(player)));
|
||||
const oldBuffer = await engine.server.readData('players/0');
|
||||
const oldPlayer = JSON.parse((new TextDecoder()).decode(oldBuffer));
|
||||
const buffer = await createPlayer(0);
|
||||
const player = JSON.parse((new TextDecoder()).decode(buffer));
|
||||
// Less jarring
|
||||
player.Ecs = oldPlayer.Ecs;
|
||||
player.Direction = oldPlayer.Direction;
|
||||
player.Position = oldPlayer.Position;
|
||||
await engine.server.writeData('players/0', (new TextEncoder()).encode(JSON.stringify(player)));
|
||||
resolver.resolve();
|
||||
});
|
||||
import.meta.hot.accept('../../create-forest.js', async ({default: createForest}) => {
|
||||
|
@ -99,9 +100,10 @@ if (import.meta.hot) {
|
|||
await beforeResolver;
|
||||
delete engine.ecses['forests/0'];
|
||||
await engine.server.removeData('forests/0');
|
||||
const last = performance.now();
|
||||
const forest = await createForest(engine.Ecs, '0');
|
||||
console.log((performance.now() - last) / 1000);
|
||||
const forest = createEcs(engine.Ecs);
|
||||
for (const entity of await createForest()) {
|
||||
await forest.create(entity);
|
||||
}
|
||||
await engine.saveEcs('forests/0', forest);
|
||||
resolver.resolve();
|
||||
});
|
||||
|
@ -109,10 +111,13 @@ if (import.meta.hot) {
|
|||
const resolver = createResolver();
|
||||
resolvers.push(resolver);
|
||||
await beforeResolver;
|
||||
// delete engine.ecses['homesteads/0'];
|
||||
// await engine.server.removeData('homesteads/0');
|
||||
// const homestead = await createHomestead(engine.Ecs, '0');
|
||||
// await engine.saveEcs('homesteads/0', homestead);
|
||||
delete engine.ecses['homesteads/0'];
|
||||
await engine.server.removeData('homesteads/0');
|
||||
const homestead = createEcs(engine.Ecs);
|
||||
for (const entity of await createHomestead('0')) {
|
||||
await homestead.create(entity);
|
||||
}
|
||||
await engine.saveEcs('homesteads/0', homestead);
|
||||
resolver.resolve();
|
||||
});
|
||||
import.meta.hot.on('vite:afterUpdate', async () => {
|
||||
|
|
Loading…
Reference in New Issue
Block a user