Skip to content
Snippets Groups Projects
Select Git revision
  • 709906a3b3dac774f571dcc8453f0892dc7800c9
  • main default protected
  • variant
3 results

Fire.java

Blame
  • Forked from COUETOUX Basile / FirefighterStarter
    11 commits ahead of the upstream repository.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    Fire.java 1.39 KiB
    package model;
    
    import util.Position;
    
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.stream.Stream;
    
    public abstract class Fire implements Element,Updatable{
        int delay;
        ModelElement type;
        Position position;
        static Behavior behavior=new FireBehavior();
        Map<ModelElement,ModelElement> FireDictionary=new HashMap<>(); //.put(MAISON,FEUMAISON)
    
        public Fire(int delay, ModelElement type, Position position) {
            this.delay = delay;
            this.type = type;
            this.position = position;
        }
        @Override
        public Position getPosition() {
            return position;
        }
        @Override
        public ModelElement getType() {
            return type;
        }
        private Fire getNewFireByType(BoardData boardData,Position position){
            List<ModelElement> s = boardData.getCell(position).Content.stream().map(x -> x.getType()).toList();
            for(Map.Entry<ModelElement,ModelElement> entry: FireDictionary.entrySet()){
                if (s.contains(entry.getKey())) return (Fire) entry.getValue().instanciate(position);
            }
            return new StandardFire(position);
        }
        @Override
        public List<Position> updateSelf(BoardData boardData) {
            List<Position> positions=behavior.update(boardData,this);
            for (Position p:positions) {
    
                boardData.addElement(new StandardFire(p));
            }
            return positions;
        }
    }