Random random = new Random();
//Handle the zones in this environment.
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
Zone zone = new Zone(-1);
zone.setOrder(i * 3 + j);
zone.setEnvID(env.getID());
zone.setEnvironment(env);
zone.setRow(i);
zone.setColumn(j);
zone.setCurrentTimeStep(1);
zone.setType(random.nextInt(3) + 1);
int zone_id = ZoneDAO.createZone(zone);
zone.setID(zone_id);
ParamTableDAO.createParameters(zone_id);
PreyPredatorRatioDAO.createParameters(world.getCreatorID(),zone_id);
zone.setParameters(ParamTableDAO.getByZoneID(zone_id));
ZoneType zoneType = ZoneTypeDAO.getZoneType(zone.getType());
if (zoneType.containsWater()) {
WaterSource waterSource = new WaterSource(-1);
waterSource.setMaxWater(100);
waterSource.setWater(100);
waterSource.setZoneID(zone_id);
int water_source_id = WaterSourceDAO.createWaterSource(waterSource);
waterSource.setID(water_source_id);
zone.setWaterSource(waterSource);
}
env.setZone(zone);
}
}
for (Environment e : world.getEnvironments()) {
for (Zone zone : e.getZones()) {
if (zone.isEnable()) {
for (Organism organism : zone.getOrganisms()) {
if (organism.getOrganismType() == Constants.ORGANISM_TYPE_PLANT) {
ResponseBirthPlant responseBirthPlant = new ResponseBirthPlant();
responseBirthPlant.setPlant((Plant) organism);
responses.add(responseBirthPlant);
} else if (organism.getOrganismType() == Constants.ORGANISM_TYPE_ANIMAL) {
ResponseBirthAnimal responseBirthAnimal = new ResponseBirthAnimal();
responseBirthAnimal.setAnimal((Animal) organism);
responses.add(responseBirthAnimal);
}
}
}
}
}
ResponseCreateEnv responseCreateEnv = new ResponseCreateEnv();
responseCreateEnv.setEnvironment(env);
client.getServer().addResponseToOtherPeopleInTheSameWorld(client.getId(), world.getID(), responseCreateEnv);
Zone startZone = env.getZones().get(0);
SimulationEngine se = startZone.getSimulationEngine();
String networkName = "WoB-" + env.getID() + "." + startZone.getOrder() + "-" + System.currentTimeMillis() % 100000;
int nodeList[] = {13, 20, 31};
startZone.setManipulationID(se.createAndRunSeregenttiSubFoodweb(nodeList, networkName, 0, 0, false));
ZoneDAO.updateManipulationID(startZone.getID(), startZone.getManipulationID());
List<NodeBiomass> lNodeBiomass = new ArrayList<NodeBiomass>();
lNodeBiomass.add(new NodeBiomass(GameServer.getInstance().getSpeciesTypeByNodeID(13).getAvgBiomass() * 10 / Constants.BIOMASS_SCALE, 13));
lNodeBiomass.add(new NodeBiomass(GameServer.getInstance().getSpeciesTypeByNodeID(20).getAvgBiomass() * 10 / Constants.BIOMASS_SCALE, 20));
lNodeBiomass.add(new NodeBiomass(GameServer.getInstance().getSpeciesTypeByNodeID(31).getAvgBiomass() * 10 / Constants.BIOMASS_SCALE, 31));
if (!lNodeBiomass.isEmpty()) {
System.out.println("Updating Initial Biomass...");
se.updateBiomass(startZone.getManipulationID(), lNodeBiomass, 0);
}
se.getBiomass(startZone.getManipulationID(), 0, 0);
world.setEnvironment(env);
world.setPlayer(client.getPlayer());
responseGetEnv.setWorld(world);
client.setWorld(world);
WorldDAO.updateLastPlayed(world.getID());
WorldDAO.updateWorldProperties(world);
int initialAmount = 3;
for (SpeciesZoneType szt : se.getSpecies().values()) {
int species_id = GameServer.getInstance().getSpeciesTypeByNodeID(szt.getNodeIndex()).getID();
se.setParameter(0, szt, startZone.getManipulationID(), Constants.PARAMETER_X, szt.getParamX());
world.getGameEngine().createOrganisms(species_id, startZone.getID(), initialAmount, Constants.CREATE_STATUS_DEFAULT);
world.getGameEngine().createOrganismsByBirth(species_id, startZone.getID(), szt.getSpeciesCount() - initialAmount);
}
try {
String csv = null;
while (true) {
csv = se.getBiomassCSVString(startZone.getManipulationID());
if (!csv.isEmpty()) {
break;
} else {
System.out.println("Error: CSV [" + startZone.getManipulationID() + "] Retrieval Failed!");
}
}
BiomassCSVDAO.createCSV(startZone.getManipulationID(), GameServer.removeNodesFromCSV(csv));
SpeciesCSVDAO.createCSV(startZone.getManipulationID(), GameServer.convertBiomassCSVtoSpeciesCSV(csv));
String score_csv = ",\"Environment Score\"\n1,0";
ScoreCSVDAO.createCSV(startZone.getID(), score_csv);
startZone.setScoreCSV(score_csv);
} catch (Exception ex) {
ex.printStackTrace();
System.err.println(ex.getMessage());
}
}