package model;

import util.Position;

import java.util.ArrayList;
import java.util.List;

public enum ModelElement {

  FIREFIGHTER(10),
  FIRE(10),
  CLOUD(10),
  ROAD(5),
  MOUNTAIN(5),
  ROCAILLE(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 Montain(position);
      case ROCAILLE -> new Rocaille(position);
      default -> throw new IllegalArgumentException("Unknown ModelElement: " + this);
      };

    }




  public static List<Integer> getInitialNumbers(){
    List<Integer>listIninitalNumbers = new ArrayList<>();
    for(ModelElement modelElement : ModelElement.values()){
      listIninitalNumbers.add(modelElement.getInitialNumber());
    }
    return listIninitalNumbers;
  }

  public boolean isObstacle(){
    if(this.getModelElementClass(null) instanceof Obstacle){
      return true;
    }
    return false;
  }

  public boolean isExtinguisher(){
    if(this.getModelElementClass(null) instanceof Extinguisher){
      return true;
    }
    return false;
  }





}