Select Git revision
NextGenerationInitializer.class.uniqueId1
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;
}
}