diff --git a/dist/index.html b/dist/index.html index 935c500..cd08a34 100644 --- a/dist/index.html +++ b/dist/index.html @@ -33,7 +33,7 @@

Target FPS: 60

- +
@@ -169,16 +169,18 @@

Reset Options

- -
-

Auto reset count:

+ + +

diff --git a/src/Controllers/ControlPanel.js b/src/Controllers/ControlPanel.js index 83dc3a8..7bf1269 100644 --- a/src/Controllers/ControlPanel.js +++ b/src/Controllers/ControlPanel.js @@ -195,12 +195,18 @@ class ControlPanel { }.bind(this)); $('#auto-reset').change(function() { - env.auto_reset = this.checked; + WorldConfig.auto_reset = this.checked; + }); + $('#auto-pause').change(function() { + WorldConfig.auto_pause = this.checked; }); - $('#clear-walls-reset').change(function() { WorldConfig.clear_walls_on_reset = this.checked; }) + + $('#start-state').change ( function() { + WorldConfig.start_state = $("#start-state").val(); + }.bind(this)); } defineHyperparameterControls() { @@ -338,8 +344,6 @@ class ControlPanel { $('#clear-env').click( () => { env.reset(true, false); this.stats_panel.reset(); - env.auto_reset = false; - $('#auto-reset').prop('checked', false);; }); $('#random-walls').click( function() { this.env_controller.randomizeWalls(); diff --git a/src/Environments/WorldEnvironment.js b/src/Environments/WorldEnvironment.js index ed07327..5c3f9b9 100644 --- a/src/Environments/WorldEnvironment.js +++ b/src/Environments/WorldEnvironment.js @@ -19,7 +19,6 @@ class WorldEnvironment extends Environment{ this.organisms = []; this.walls = []; this.total_mutability = 0; - this.auto_reset = true; this.largest_cell_count = 0; this.reset_count = 0; this.total_ticks = 0; @@ -59,24 +58,37 @@ class WorldEnvironment extends Environment{ } removeOrganisms(org_indeces) { + let start_pop = this.organisms.length; for (var i of org_indeces.reverse()){ this.total_mutability -= this.organisms[i].mutability; this.organisms.splice(i, 1); } - if (this.organisms.length == 0 && this.auto_reset){ - this.reset_count++; - this.reset(false); + if (this.organisms.length === 0 && start_pop > 0) { + if (WorldConfig.auto_pause) + $('.pause-button')[0].click(); + else if(WorldConfig.auto_reset) { + this.reset_count++; + this.reset(false); + } } } OriginOfLife() { var center = this.grid_map.getCenter(); - var org = new Organism(center[0], center[1], this); - org.anatomy.addDefaultCell(CellStates.mouth, 0, 0); - org.anatomy.addDefaultCell(CellStates.producer, 1, 1); - org.anatomy.addDefaultCell(CellStates.producer, -1, -1); - this.addOrganism(org); - FossilRecord.addSpecies(org, null); + switch (WorldConfig.start_state){ + case 'simple-prod': + var org = new Organism(center[0], center[1], this); + org.anatomy.addDefaultCell(CellStates.mouth, 0, 0); + org.anatomy.addDefaultCell(CellStates.producer, 1, 1); + org.anatomy.addDefaultCell(CellStates.producer, -1, -1); + this.addOrganism(org); + FossilRecord.addSpecies(org, null); + break; + case 'random-orgs': + break; + case 'no-orgs': + break; + } } addOrganism(organism) { diff --git a/src/WorldConfig.js b/src/WorldConfig.js index 91910d3..1923453 100644 --- a/src/WorldConfig.js +++ b/src/WorldConfig.js @@ -1,6 +1,9 @@ const WorldConfig = { headless: false, clear_walls_on_reset: false, + start_state: 'simple-prod', + auto_reset: true, + auto_pause: false, } module.exports = WorldConfig; \ No newline at end of file