package ge.edu.freeuni.sdp.snake.model; public class ObservableSnakeAdapter extends Snake implements PositionObserver { private DirectionObserver directionObserver; public ObservableSnakeAdapter(Point head) { this(head,Direction.RIGHT); } public ObservableSnakeAdapter(Point head, Direction direction) { super(head); super.setDirection(direction); } @Override public void setDirection(Direction direction) { if (directionObserver!=null) { directionObserver.notifyDirectionSet(direction); } } public void setDirectionObserver(DirectionObserver directionObserver) { this.directionObserver = directionObserver; } @Override public void notifyMoveTo(Point point) { Point from = this.getHead(); Point to = point; Direction direction = Direction.getDirection(from, to); super.setDirection(direction); } }