Separated anatomy from org / made species tracker
This commit is contained in:
@@ -4,7 +4,6 @@ const GridMap = require('../Grid/GridMap');
|
||||
const Renderer = require('../Rendering/Renderer');
|
||||
const CellStates = require('../Organism/Cell/CellStates');
|
||||
const EditorController = require("../Controllers/EditorController");
|
||||
const Directions = require('../Organism/Directions');
|
||||
|
||||
class OrganismEditor extends Environment{
|
||||
constructor() {
|
||||
@@ -37,13 +36,13 @@ class OrganismEditor extends Environment{
|
||||
var center = this.grid_map.getCenter();
|
||||
var loc_c = c - center[0];
|
||||
var loc_r = r - center[1];
|
||||
var prev_cell = this.organism.getLocalCell(loc_c, loc_r)
|
||||
var prev_cell = this.organism.anatomy.getLocalCell(loc_c, loc_r)
|
||||
if (prev_cell != null) {
|
||||
var new_cell = this.organism.replaceCell(state, prev_cell.loc_col, prev_cell.loc_row, false);
|
||||
var new_cell = this.organism.anatomy.replaceCell(state, prev_cell.loc_col, prev_cell.loc_row, false);
|
||||
this.changeCell(c, r, state, new_cell);
|
||||
}
|
||||
else if (this.organism.canAddCellAt(loc_c, loc_r)){
|
||||
this.changeCell(c, r, state, this.organism.addDefaultCell(state, loc_c, loc_r));
|
||||
else if (this.organism.anatomy.canAddCellAt(loc_c, loc_r)){
|
||||
this.changeCell(c, r, state, this.organism.anatomy.addDefaultCell(state, loc_c, loc_r));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,9 +54,9 @@ class OrganismEditor extends Environment{
|
||||
alert("Cannot remove center cell");
|
||||
return;
|
||||
}
|
||||
var prev_cell = this.organism.getLocalCell(loc_c, loc_r)
|
||||
var prev_cell = this.organism.anatomy.getLocalCell(loc_c, loc_r)
|
||||
if (prev_cell != null) {
|
||||
if (this.organism.removeCell(loc_c, loc_r)) {
|
||||
if (this.organism.anatomy.removeCell(loc_c, loc_r)) {
|
||||
this.changeCell(c, r, CellStates.empty, null);
|
||||
}
|
||||
}
|
||||
@@ -80,7 +79,7 @@ class OrganismEditor extends Environment{
|
||||
this.grid_map.fillGrid(CellStates.empty);
|
||||
var center = this.grid_map.getCenter();
|
||||
this.organism = new Organism(center[0], center[1], this, null);
|
||||
this.organism.addDefaultCell(CellStates.mouth, 0, 0);
|
||||
this.organism.anatomy.addDefaultCell(CellStates.mouth, 0, 0);
|
||||
this.organism.updateGrid();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ const Organism = require('../Organism/Organism');
|
||||
const CellStates = require('../Organism/Cell/CellStates');
|
||||
const EnvironmentController = require('../Controllers/EnvironmentController');
|
||||
const Hyperparams = require('../Hyperparameters.js');
|
||||
const Cell = require('../Organism/Cell/GridCell');
|
||||
const FossilRecord = require('../Stats/FossilRecord');
|
||||
|
||||
class WorldEnvironment extends Environment{
|
||||
constructor(cell_size) {
|
||||
@@ -21,9 +21,12 @@ class WorldEnvironment extends Environment{
|
||||
this.auto_reset = true;
|
||||
this.largest_cell_count = 0;
|
||||
this.reset_count = 0;
|
||||
this.total_ticks = 0;
|
||||
FossilRecord.setEnv(this);
|
||||
}
|
||||
|
||||
update(delta_time) {
|
||||
this.total_ticks ++;
|
||||
var to_remove = [];
|
||||
for (var i in this.organisms) {
|
||||
var org = this.organisms[i];
|
||||
@@ -56,21 +59,19 @@ class WorldEnvironment extends Environment{
|
||||
OriginOfLife() {
|
||||
var center = this.grid_map.getCenter();
|
||||
var org = new Organism(center[0], center[1], this);
|
||||
// org.addDefaultCell(CellStates.eye, 0, 0);
|
||||
// org.addDefaultCell(CellStates.mouth, 1, 1);
|
||||
// org.addDefaultCell(CellStates.mover, 1, -1);
|
||||
org.addDefaultCell(CellStates.mouth, 0, 0);
|
||||
org.addDefaultCell(CellStates.producer, 1, 1);
|
||||
org.addDefaultCell(CellStates.producer, -1, -1);
|
||||
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);
|
||||
}
|
||||
|
||||
addOrganism(organism) {
|
||||
organism.updateGrid();
|
||||
this.total_mutability += organism.mutability;
|
||||
this.organisms.push(organism);
|
||||
if (organism.cells.length > this.largest_cell_count)
|
||||
this.largest_cell_count = organism.cells.length;
|
||||
if (organism.anatomy.cells.length > this.largest_cell_count)
|
||||
this.largest_cell_count = organism.anatomy.cells.length;
|
||||
}
|
||||
|
||||
averageMutability() {
|
||||
@@ -119,6 +120,7 @@ class WorldEnvironment extends Environment{
|
||||
this.grid_map.fillGrid(CellStates.empty);
|
||||
this.renderer.renderFullGrid(this.grid_map.grid);
|
||||
this.total_mutability = 0;
|
||||
this.total_ticks = 0;
|
||||
this.OriginOfLife();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user