Program Listing for File WorldSetup.cc¶
↰ Return to documentation for file (source/default_mode/WorldSetup.cc
)
#ifndef WORLD_SETUP_C
#define WORLD_SETUP_C
#include "SymWorld.h"
#include "Host.h"
#include "Symbiont.h"
void SymWorld::SetupHosts(long unsigned int* POP_SIZE){
for (size_t i = 0; i < *POP_SIZE; i++) {
emp::Ptr<Host> new_org;
new_org.New(&GetRandom(), this, my_config, my_config->HOST_INT());
InjectHost(new_org);
}
}
void SymWorld::SetupSymbionts(long unsigned int *total_syms) {
for (size_t j = 0; j < *total_syms; j++) {
emp::Ptr<Symbiont> new_sym = emp::NewPtr<Symbiont>(&GetRandom(), this, my_config, my_config->SYM_INT(), 0);
InjectSymbiont(new_sym);
}
}
void SymWorld::Setup() {
double start_moi = my_config->START_MOI();
long unsigned int POP_SIZE;
if (my_config->POP_SIZE() == -1) {
POP_SIZE = my_config->GRID_X() * my_config->GRID_Y();
} else {
POP_SIZE = my_config->POP_SIZE();
}
// set world structure (either mixed or a grid with some dimensions) and set synchronous generations to false
if (my_config->GRID() == 0) {SetPopStruct_Mixed(false);}
else SetPopStruct_Grid(my_config->GRID_X(), my_config->GRID_Y(), false);
SetupHosts(&POP_SIZE);
Resize(my_config->GRID_X(), my_config->GRID_Y());
long unsigned int total_syms = POP_SIZE * start_moi;
SetupSymbionts(&total_syms);
}
#endif