From 7d99991f910c483b50975ee963e046af4579e347 Mon Sep 17 00:00:00 2001 From: Max Robinson Date: Thu, 2 Dec 2021 17:25:04 -0600 Subject: [PATCH 1/6] added clear button, food drop default mode --- dist/index.html | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/dist/index.html b/dist/index.html index 0166f53..99fba39 100644 --- a/dist/index.html +++ b/dist/index.html @@ -20,9 +20,9 @@
- + - +
@@ -32,12 +32,13 @@

Target FPS: 60

- - + + +
+

Auto reset count:

-

Grid Size

@@ -46,7 +47,6 @@
-
@@ -266,9 +266,9 @@
- + - + From baadda8a7598871577add1e335ab08388d64e854 Mon Sep 17 00:00:00 2001 From: Max Robinson Date: Thu, 2 Dec 2021 17:25:59 -0600 Subject: [PATCH 2/6] control panel minimized by default --- dist/css/style.css | 4 ++-- src/Controllers/EnvironmentController.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dist/css/style.css b/dist/css/style.css index 1714871..3b15873 100644 --- a/dist/css/style.css +++ b/dist/css/style.css @@ -37,7 +37,7 @@ body{ bottom: 0; position: fixed; background-color: #3a4b68; - display: grid; + display: none; grid-template-columns: repeat(3, 1fr); /* opacity: 0.8; */ } @@ -236,7 +236,7 @@ button:active{ position: fixed; bottom: 10px; padding-left: 10px; - display: none; + /* display: none; */ } #headless-notification { diff --git a/src/Controllers/EnvironmentController.js b/src/Controllers/EnvironmentController.js index 73aa0fc..828fe08 100644 --- a/src/Controllers/EnvironmentController.js +++ b/src/Controllers/EnvironmentController.js @@ -9,7 +9,7 @@ const Hyperparams = require("../Hyperparameters"); class EnvironmentController extends CanvasController{ constructor(env, canvas) { super(env, canvas); - this.mode = Modes.Drag; + this.mode = Modes.FoodDrop; this.org_to_clone = null; this.add_new_species = false; this.defineZoomControls(); From 77a8b0530b594f38eaeb98ea7f9a5b5f87482eac Mon Sep 17 00:00:00 2001 From: Max Robinson Date: Thu, 2 Dec 2021 17:26:31 -0600 Subject: [PATCH 3/6] default food prod prob set to 5 from 4 --- src/Hyperparameters.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Hyperparameters.js b/src/Hyperparameters.js index 64073f8..4199cd9 100644 --- a/src/Hyperparameters.js +++ b/src/Hyperparameters.js @@ -5,8 +5,7 @@ const Hyperparams = { this.headless = false; this.lifespanMultiplier = 100; - this.foodProdProb = 4; - this.foodProdProbScalar = 4; + this.foodProdProb = 5; this.killableNeighbors = Neighbors.adjacent; this.edibleNeighbors = Neighbors.adjacent; this.growableNeighbors = Neighbors.adjacent; From b4ca97902bdc7a5a3ad221b7a652ebd83f4f4c91 Mon Sep 17 00:00:00 2001 From: Max Robinson Date: Thu, 2 Dec 2021 17:27:05 -0600 Subject: [PATCH 4/6] 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) { From 754703a935a2d0b4aff6c65fd873fce6975133f6 Mon Sep 17 00:00:00 2001 From: Max Robinson Date: Thu, 2 Dec 2021 17:56:39 -0600 Subject: [PATCH 5/6] added warning on tab close/reload --- src/Controllers/ControlPanel.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Controllers/ControlPanel.js b/src/Controllers/ControlPanel.js index b2dd295..a6e633b 100644 --- a/src/Controllers/ControlPanel.js +++ b/src/Controllers/ControlPanel.js @@ -336,7 +336,16 @@ class ControlPanel { $('#clear-editor').click( function() { this.engine.organism_editor.clear(); this.editor_controller.setEditorPanel(); - }.bind(this)); + }.bind(this)) + + window.onbeforeunload = function (e) { + e = e || window.event; + let return_str = 'this will cause a confirmation on page close' + if (e) { + e.returnValue = return_str; + } + return return_str; + }; } defineChallenges() { From f1897768bb3d4bb9e26e9d338238eb246f9b9660 Mon Sep 17 00:00:00 2001 From: Max Robinson Date: Thu, 2 Dec 2021 18:58:02 -0600 Subject: [PATCH 6/6] fixed hyperparams reset --- src/Controllers/ControlPanel.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Controllers/ControlPanel.js b/src/Controllers/ControlPanel.js index a6e633b..5396a9e 100644 --- a/src/Controllers/ControlPanel.js +++ b/src/Controllers/ControlPanel.js @@ -249,8 +249,8 @@ class ControlPanel { $('#food-blocks').change( function() { Hyperparams.foodBlocksReproduction = this.checked; }); - $('#reset-rules').click( function() { - this.setHyperparamDefaults; + $('#reset-rules').click(() => { + this.setHyperparamDefaults(); }); }