Skip to content
Snippets Groups Projects
Select Git revision
  • 624828aac3919a16c558df26c7a2056cecd2f6cb
  • main default protected
2 results

GrayGrid.java

Blame
  • Forked from TRAVERS Corentin / flooding-template
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    IndustrialFireFighterBehavior.java 1.54 KiB
    package model.firefighter.behaviors;
    
    import model.BoardData;
    import model.Element;
    import model.elementTokens.Chargable;
    import model.elementTokens.ChargeTarget;
    import model.firefighter.ModelElement;
    import model.firefighter.elements.Fire;
    import model.firefighter.elements.FireFighter;
    import model.firefighter.elements.IndustrialFireFighter;
    import model.genericBehavior.ChargerBehavior;
    import model.genericBehavior.RemoverBehavior;
    import model.genericBehavior.TangibleBehavior;
    import util.Position;
    import util.TargetStrategy;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    public class IndustrialFireFighterBehavior extends FireFighterBehavior {
        private TargetStrategy ts=new TargetStrategy();
    
    
        @Override
        public List<Position> update(BoardData boardData,Element element) {
            Position position=element.getPosition();
            List<Position> targets=initializeTargets(boardData);
            ((Chargable)element).incrementCounter();
            if (((Chargable)element).isCharged()){
                ((Chargable)element).resetCounter();
                for (int i = 0; i<((FireFighter)element).speed; i++) {
                    position=ts.neighborClosestToFire(position,targets,allLegalNeighbors(boardData));
                    targets.remove(position);
                    targets.removeAll(boardData.getNeighbor(position));
                }
                for(Position p:legalNeighbors(boardData,position))
                {
                    extinguish(boardData,p);
    
                }
            }
    
            return List.of(position);
        }
    }