added world saving/loading

This commit is contained in:
MaxRobinsonTheGreat
2022-04-15 13:13:19 -05:00
parent dabeb4463d
commit 8df3accff7
9 changed files with 184 additions and 25 deletions

View File

@@ -47,6 +47,8 @@ class ControlPanel {
defineHotkeys() {
$('body').keydown( (e) => {
let focused = document.activeElement;
if (focused.tagName === "INPUT" && focused.type === "text") return;
switch (e.key.toLowerCase()) {
// hot bar controls
case 'a':
@@ -205,6 +207,43 @@ class ControlPanel {
this.env_controller.add_new_species = true;
this.env_controller.dropOrganism(org, center[0], center[1])
});
$('#save-env').click( () => {
let was_running = this.engine.running;
this.setPaused(true);
let env = this.engine.env.serialize();
let data = "data:text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(env));
let downloadEl = document.getElementById('download-el');
downloadEl.setAttribute("href", data);
downloadEl.setAttribute("download", $('#save-env-name').val()+".json");
downloadEl.click();
if (was_running)
this.setPaused(false);
});
$('#load-env').click(() => {
$('#upload-env').click();
});
$('#upload-env').change((e)=>{
let files = e.target.files;
if (!files.length) {return;};
let reader = new FileReader();
reader.onload = (e) => {
try {
let was_running = this.engine.running;
this.setPaused(true);
let env = JSON.parse(e.target.result);
this.engine.env.loadRaw(env);
if (was_running)
this.setPaused(false);
this.updateHyperparamUIValues();
this.env_controller.resetView();
} catch(except) {
console.error(except)
alert('Failed to load world');
}
$('#upload-env')[0].value = '';
};
reader.readAsText(files[0]);
});
}
defineHyperparameterControls() {