feat: engine readAsset
This commit is contained in:
parent
d8528ad7a5
commit
c8622c6814
|
@ -48,8 +48,9 @@ export default class Inventory extends Component {
|
||||||
if (!(slot in slots)) {
|
if (!(slot in slots)) {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
const {Engine: {readAsset}} = Component.ecs.get(1);
|
||||||
const json = await (
|
const json = await (
|
||||||
fetch([slots[slot].source, 'item.json'].join('/'))
|
readAsset([slots[slot].source, 'item.json'].join('/'))
|
||||||
.then((response) => (response.ok ? response.json() : {}))
|
.then((response) => (response.ok ? response.json() : {}))
|
||||||
);
|
);
|
||||||
const item = {
|
const item = {
|
||||||
|
|
|
@ -217,11 +217,11 @@ export default class Engine {
|
||||||
}
|
}
|
||||||
|
|
||||||
async loadEcs(path) {
|
async loadEcs(path) {
|
||||||
this.ecses[path] = Ecs.deserialize(
|
const ecs = this.ecses[path] = await Ecs.deserialize(
|
||||||
this.createEcs(),
|
this.createEcs(),
|
||||||
await this.server.readData(path),
|
await this.server.readData(path),
|
||||||
);
|
);
|
||||||
this.ecses[path].get(1).Engine.engine = this;
|
ecs.get(1).Engine.readAsset = (uri) => this.server.readAsset(uri);
|
||||||
}
|
}
|
||||||
|
|
||||||
async loadPlayer(id) {
|
async loadPlayer(id) {
|
||||||
|
|
|
@ -154,6 +154,9 @@ export default function Ui({disconnected}) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
await ecs.apply(payload.ecs);
|
await ecs.apply(payload.ecs);
|
||||||
|
if (payload.ecs[1]) {
|
||||||
|
ecs.get(1).Engine.readAsset = (uri) => fetch(new URL(uri, window.location.origin));
|
||||||
|
}
|
||||||
for (const listener of client.listeners[':Ecs'] ?? []) {
|
for (const listener of client.listeners[':Ecs'] ?? []) {
|
||||||
listener(payload.ecs);
|
listener(payload.ecs);
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,6 +48,14 @@ class SocketServer extends Server {
|
||||||
static qualify(path) {
|
static qualify(path) {
|
||||||
return join(import.meta.dirname, 'data', 'remote', 'UNIVERSE', path);
|
return join(import.meta.dirname, 'data', 'remote', 'UNIVERSE', path);
|
||||||
}
|
}
|
||||||
|
async readAsset(path) {
|
||||||
|
const url = new URL(path, 'https://localhost:3000')
|
||||||
|
console.log({url});
|
||||||
|
if ('production' === process.env.NODE_ENV) {
|
||||||
|
url.protocol = 'http:';
|
||||||
|
}
|
||||||
|
return fetch(url.href);
|
||||||
|
}
|
||||||
async readData(path) {
|
async readData(path) {
|
||||||
const qualified = this.constructor.qualify(path);
|
const qualified = this.constructor.qualify(path);
|
||||||
await this.ensurePath(dirname(qualified));
|
await this.ensurePath(dirname(qualified));
|
||||||
|
|
Loading…
Reference in New Issue
Block a user