From b4ca97902bdc7a5a3ad221b7a652ebd83f4f4c91 Mon Sep 17 00:00:00 2001 From: Max Robinson Date: Thu, 2 Dec 2021 17:27:05 -0600 Subject: [PATCH] implemented clear button and reset warning --- src/Controllers/ControlPanel.js | 68 ++++++++++++++++------------ src/Environments/WorldEnvironment.js | 11 +++-- 2 files changed, 47 insertions(+), 32 deletions(-) diff --git a/src/Controllers/ControlPanel.js b/src/Controllers/ControlPanel.js index 5ec9e54..b2dd295 100644 --- a/src/Controllers/ControlPanel.js +++ b/src/Controllers/ControlPanel.js @@ -23,6 +23,7 @@ class ControlPanel { this.headless_opacity = 1; this.opacity_change_rate = -0.8; this.paused=false; + this.setHyperparamDefaults(); } defineMinMaxControls(){ @@ -249,32 +250,36 @@ class ControlPanel { Hyperparams.foodBlocksReproduction = this.checked; }); $('#reset-rules').click( function() { - Hyperparams.setDefaults(); - $('#food-prod-prob').val(Hyperparams.foodProdProb); - $('#lifespan-multiplier').val(Hyperparams.lifespanMultiplier); - $('#mover-rot').prop('checked', Hyperparams.moversCanRotate); - $('#offspring-rot').prop('checked', Hyperparams.offspringRotate); - $('#insta-kill').prop('checked', Hyperparams.instaKill); - $('#evolved-mutation').prop('checked', !Hyperparams.useGlobalMutability); - $('#add-prob').val(Hyperparams.addProb); - $('#change-prob').val(Hyperparams.changeProb); - $('#remove-prob').val(Hyperparams.removeProb); - $('#movers-produce').prop('checked', Hyperparams.moversCanProduce); - $('#food-blocks').prop('checked', Hyperparams.foodBlocksReproduction); - $('#food-drop-rate').val(Hyperparams.foodDropProb); - $('#look-range').val(Hyperparams.lookRange); - - if (!Hyperparams.useGlobalMutability) { - $('.global-mutation-in').css('display', 'none'); - $('#avg-mut').css('display', 'block'); - } - else { - $('.global-mutation-in').css('display', 'block'); - $('#avg-mut').css('display', 'none'); - } + this.setHyperparamDefaults; }); } + setHyperparamDefaults() { + Hyperparams.setDefaults(); + $('#food-prod-prob').val(Hyperparams.foodProdProb); + $('#lifespan-multiplier').val(Hyperparams.lifespanMultiplier); + $('#mover-rot').prop('checked', Hyperparams.moversCanRotate); + $('#offspring-rot').prop('checked', Hyperparams.offspringRotate); + $('#insta-kill').prop('checked', Hyperparams.instaKill); + $('#evolved-mutation').prop('checked', !Hyperparams.useGlobalMutability); + $('#add-prob').val(Hyperparams.addProb); + $('#change-prob').val(Hyperparams.changeProb); + $('#remove-prob').val(Hyperparams.removeProb); + $('#movers-produce').prop('checked', Hyperparams.moversCanProduce); + $('#food-blocks').prop('checked', Hyperparams.foodBlocksReproduction); + $('#food-drop-rate').val(Hyperparams.foodDropProb); + $('#look-range').val(Hyperparams.lookRange); + + if (!Hyperparams.useGlobalMutability) { + $('.global-mutation-in').css('display', 'none'); + $('#avg-mut').css('display', 'block'); + } + else { + $('.global-mutation-in').css('display', 'block'); + $('#avg-mut').css('display', 'none'); + } + } + defineModeControls() { var self = this; $('.edit-mode-btn').click( function() { @@ -313,16 +318,20 @@ class ControlPanel { var env = this.engine.env; $('#reset-env').click( function() { - this.engine.env.reset(); + env.reset(); this.stats_panel.reset(); }.bind(this)); + $('#clear-env').click( () => { + env.reset(true, false); + this.stats_panel.reset(); + env.auto_reset = false; + $('#auto-reset').prop('checked', false);; + }); $('#auto-reset').change(function() { env.auto_reset = this.checked; }); $('#clear-walls').click( function() { - if (confirm("Are you sure you want to clear all the walls?")) { - this.engine.env.clearWalls(); - } + this.engine.env.clearWalls(); }.bind(this)); $('#clear-editor').click( function() { this.engine.organism_editor.clear(); @@ -367,9 +376,10 @@ class ControlPanel { updateHeadlessIcon(delta_time) { if (this.paused) return; + const min_opacity = 0.4; var op = this.headless_opacity + (this.opacity_change_rate*delta_time/1000); - if (op <= 0.4){ - op=0.4; + if (op <= min_opacity){ + op=min_opacity; this.opacity_change_rate = -this.opacity_change_rate; } else if (op >= 1){ diff --git a/src/Environments/WorldEnvironment.js b/src/Environments/WorldEnvironment.js index da7bb40..1da6c73 100644 --- a/src/Environments/WorldEnvironment.js +++ b/src/Environments/WorldEnvironment.js @@ -64,7 +64,7 @@ class WorldEnvironment extends Environment{ } if (this.organisms.length == 0 && this.auto_reset){ this.reset_count++; - this.reset(); + this.reset(false); } } @@ -130,14 +130,19 @@ class WorldEnvironment extends Environment{ } } - reset() { + reset(confirm_reset=true, reset_life=true) { + if (confirm_reset && !confirm('The current environment will be lost. Proceed?')) + return; + this.organisms = []; this.grid_map.fillGrid(CellStates.empty); this.renderer.renderFullGrid(this.grid_map.grid); this.total_mutability = 0; this.total_ticks = 0; FossilRecord.clear_record(); - this.OriginOfLife(); + if (reset_life) + this.OriginOfLife(); + } resizeGridColRow(cell_size, cols, rows) {