added saving/loading sim controls

This commit is contained in:
MaxRobinsonTheGreat
2021-12-18 15:05:35 -06:00
parent 9691583f73
commit 302eeae2fb
4 changed files with 38 additions and 5 deletions

View File

@@ -269,10 +269,37 @@ class ControlPanel {
$('#reset-rules').click(() => {
this.setHyperparamDefaults();
});
$('#save-controls').click(() => {
let data = "data:text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(Hyperparams));
let downloadEl = document.getElementById('download-el');
downloadEl.setAttribute("href", data);
downloadEl.setAttribute("download", "controls.json");
downloadEl.click();
});
$('#load-controls').click(() => {
$('#upload-el').click();
});
$('#upload-el').change((e)=>{
let files = e.target.files;
if (!files.length) {return;};
let reader = new FileReader();
reader.onload = (e) => {
let result=JSON.parse(e.target.result);
Hyperparams.loadJsonObj(result);
this.updateHyperparamUIValues();
// have to clear the value so change() will be triggered if the same file is uploaded again
$('#upload-el')[0].value = '';
};
reader.readAsText(files[0]);
});
}
setHyperparamDefaults() {
Hyperparams.setDefaults();
this.updateHyperparamUIValues();
}
updateHyperparamUIValues(){
$('#food-prod-prob').val(Hyperparams.foodProdProb);
$('#lifespan-multiplier').val(Hyperparams.lifespanMultiplier);
$('#rot-enabled').prop('checked', Hyperparams.rotationEnabled);

View File

@@ -2,8 +2,6 @@ const Neighbors = require("./Grid/Neighbors");
const Hyperparams = {
setDefaults: function() {
this.headless = false;
this.lifespanMultiplier = 100;
this.foodProdProb = 5;
this.killableNeighbors = Neighbors.adjacent;
@@ -27,6 +25,12 @@ const Hyperparams = {
this.foodDropProb = 0;
},
loadJsonObj(obj) {
for (let key in obj) {
this[key] = obj[key];
}
}
}
Hyperparams.setDefaults();