Tilorswift levels will be loaded asynchronously now

This commit is contained in:
Mal
2023-09-19 11:44:56 +02:00
parent c6b0baa533
commit f02fb4d411
5 changed files with 117 additions and 98 deletions

View File

@@ -4,7 +4,8 @@ export default class FileLoader
{
this.filename = filename;
this.content = '';
this.loadContent();
this.onLoad = () => {};
}
getContent()
@@ -19,10 +20,11 @@ export default class FileLoader
request.onreadystatechange = () => {
if (request.status === 200 && request.readyState === 4) {
this.content = request.responseText;
this.onLoad(this.content);
}
};
request.open('GET', this.filename, false);
request.send();
}
}
}

View File

@@ -74,15 +74,17 @@ export default class Level
this.gravity = gravity;
}
static createFromFile(filename)
static createFromFile(filename, callback = () => {})
{
let loader = new FileLoader(filename);
let levelData = JSON.parse(loader.getContent());
let terrain = Terrain.createFromJson(levelData);
let level = new Level(terrain);
level.setGravity(levelData.gravity);
loader.onLoad = (data) => {
const json = JSON.parse(data);
const level = new Level(Terrain.createFromJson(json));
level.setGravity(json.gravity);
return level;
callback(level);
}
loader.loadContent();
}
static createFromJson(json)

View File

@@ -36,4 +36,9 @@ export class LoadLevelDialog extends Dialog
}
);
}
openFileBrowser()
{
this.fileInput.click();
}
}