package backend; import java.util.ArrayList; import java.util.HashSet; import java.util.Set; public class World { private Matrix matrix; private Set entities; public World(int width, int height) { this.matrix = new Matrix(width, height); this.entities = new HashSet<>(); } public Matrix getGrid() { return matrix; } public Set getEntities() { return entities; } public void addAgent(Agent Agent) { entities.add(Agent); } public void removeAgent(Agent Agent) { entities.remove(Agent); } public void updateGrid(ArrayList surviveRules, ArrayList birthRules, boolean loopingBorder) { matrix.updateCells(surviveRules, birthRules, loopingBorder); } public Set processAgentTurns(Simulator simulator) { Set survivingEntities = new HashSet<>(); for (Agent agent : entities) { if (agent.performAction(simulator.getNeighbors(agent), simulator)) { survivingEntities.add(agent); } } entities = survivingEntities; return entities; } }