package ge.edu.freeuni.sdp.snake.model;
public class SwapSidesPopulator extends RandomPositionPopulator {
private ObservableMouseBeing _mouse;
private ObservableSnakeFactory snakeFactory;
private ObservableSnakeAdapter _snake;
public SwapSidesPopulator(ObservableSnakeFactory snakeFactory) {
this.snakeFactory = snakeFactory;
}
@Override
public void populate(Universe universe) {
if (_mouse == null || !_mouse.isAlive()) {
Point point = getRandomUnocupied(universe);
_mouse = new ObservableMouseBeing(point);
universe.addBeing(_mouse);
ensureSnake(universe);
_mouse.setPositionObserver(_snake);
_snake.setDirectionObserver(_mouse);
}
}
public void ensureSnake(Universe universe) {
if (_snake==null) {
Point point = this.getRandomUnocupied(universe);
_snake = (ObservableSnakeAdapter)snakeFactory.createSnake(point);
}
}
}