Skip to content
Snippets Groups Projects
Select Git revision
  • c17e781e321565dc97f7304d55684af99957fd0f
  • main default protected
  • correction_video
  • going_further
  • ImprovedMouseInteraction
  • final2023
  • template
  • ModifGUI
8 results

NextGenerationInitializer.class.uniqueId1

Blame
  • Forked from YAGOUBI Rim / Game of life Template
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    Fire.java 1.46 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;
            fireDictionary.put(ModelElement.MOUNTAIN,null);
        }
        @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(getNewFireByType(boardData,p));
            }
            return positions;
        }
    }