package model.Elements; import model.Elements.Extinguisher.Cloud; import model.Elements.Extinguisher.Extinguisher; import model.Elements.Extinguisher.FireFighter; import model.Elements.Extinguisher.MotorizedFireFighter; import model.Elements.Obstacle.Mountain; import model.Elements.Obstacle.Obstacle; import model.Elements.Obstacle.Road; import model.Elements.Obstacle.Rocaille; import util.Position; public enum ModelElement { FIREFIGHTER(5), FIRE(25), CLOUD(10), ROAD(5), MOUNTAIN(5), ROCAILLE(3), MOTORIZEDFIREFIGHTER(3); private final int initialNumber; ModelElement(int initialNumber) { this.initialNumber = initialNumber; } public int getInitialNumber(){ return this.initialNumber; } public Element getModelElementClass(Position position){ return switch (this){ case FIRE -> new Fire(position); case ROAD -> new Road(position); case FIREFIGHTER -> new FireFighter(position); case CLOUD -> new Cloud(position); case MOUNTAIN -> new Mountain(position); case ROCAILLE -> new Rocaille(position); case MOTORIZEDFIREFIGHTER -> new MotorizedFireFighter(position); default -> throw new IllegalArgumentException("Unknown ModelElement: " + this); }; } public boolean isObstacle() { return this.getModelElementClass(null) instanceof Obstacle; } public boolean isExtinguisher(){ return this.getModelElementClass(null) instanceof Extinguisher; } }