world config + improved wall clearing

This commit is contained in:
MaxRobinsonTheGreat
2021-12-18 11:53:30 -06:00
parent fe2d6aae7c
commit c319ed9dc5
7 changed files with 24 additions and 16 deletions

View File

@@ -1,6 +1,7 @@
const Hyperparams = require("../Hyperparameters");
const Modes = require("./ControlModes");
const StatsPanel = require("../Stats/StatsPanel");
const WorldConfig = require("../WorldConfig");
class ControlPanel {
constructor(engine) {
@@ -137,14 +138,14 @@ class ControlPanel {
$('.headless').click(function() {
$('.headless').find("i").toggleClass("fa fa-eye");
$('.headless').find("i").toggleClass("fa fa-eye-slash");
if (Hyperparams.headless){
if (WorldConfig.headless){
$('#headless-notification').css('display', 'none');
this.engine.env.renderFull();
}
else {
$('#headless-notification').css('display', 'block');
}
Hyperparams.headless = !Hyperparams.headless;
WorldConfig.headless = !WorldConfig.headless;
}.bind(this));
}
@@ -411,7 +412,7 @@ class ControlPanel {
$('#fps-actual').text("Actual FPS: " + Math.floor(this.engine.actual_fps));
$('#reset-count').text("Auto reset count: " + this.engine.env.reset_count);
this.stats_panel.updateDetails();
if (Hyperparams.headless)
if (WorldConfig.headless)
this.updateHeadlessIcon(delta_time);
}

View File

@@ -4,7 +4,7 @@ const Modes = require("./ControlModes");
const CellStates = require("../Organism/Cell/CellStates");
const Neighbors = require("../Grid/Neighbors");
const FossilRecord = require("../Stats/FossilRecord");
const Hyperparams = require("../Hyperparameters");
const WorldConfig = require("../WorldConfig");
const Perlin = require("../Utils/Perlin");
class EnvironmentController extends CanvasController{
@@ -98,7 +98,7 @@ class EnvironmentController extends CanvasController{
}
performModeAction() {
if (Hyperparams.headless && this.mode != Modes.Drag)
if (WorldConfig.headless && this.mode != Modes.Drag)
return;
var mode = this.mode;
var right_click = this.right_click;

View File

@@ -6,6 +6,7 @@ const CellStates = require('../Organism/Cell/CellStates');
const EnvironmentController = require('../Controllers/EnvironmentController');
const Hyperparams = require('../Hyperparameters.js');
const FossilRecord = require('../Stats/FossilRecord');
const WorldConfig = require('../WorldConfig');
class WorldEnvironment extends Environment{
constructor(cell_size) {
@@ -45,7 +46,7 @@ class WorldEnvironment extends Environment{
}
render() {
if (Hyperparams.headless) {
if (WorldConfig.headless) {
this.renderer.cells_to_render.clear();
return;
}
@@ -136,7 +137,7 @@ class WorldEnvironment extends Environment{
return;
this.organisms = [];
this.grid_map.fillGrid(CellStates.empty);
this.grid_map.fillGrid(CellStates.empty, !WorldConfig.clear_walls_on_reset);
this.renderer.renderFullGrid(this.grid_map.grid);
this.total_mutability = 0;
this.total_ticks = 0;

View File

@@ -21,9 +21,10 @@ class GridMap {
}
}
fillGrid(state) {
fillGrid(state, ignore_walls=false) {
for (var col of this.grid) {
for (var cell of col) {
if (ignore_walls && cell.state===CellStates.wall) continue;
cell.setType(state);
cell.owner = null;
cell.cell_owner = null;

View File

@@ -5,7 +5,7 @@ const Hyperparams = require("../../Hyperparameters");
class Cell{
constructor(state, col, row, x, y){
this.owner = null; // owner organism
this.cell_owner = null; // owner cell of ^that organism
this.cell_owner = null; // specific body cell of the owner organism that occupies this grid cell
this.setType(state);
this.col = col;
this.row = row;

6
src/WorldConfig.js Normal file
View File

@@ -0,0 +1,6 @@
const WorldConfig = {
headless: false,
clear_walls_on_reset: false,
}
module.exports = WorldConfig;