package ge.edu.freeuni.sdp.snake.model; /* * Levels differ in their name, topology, and the way their are populated with beeings. * Level class aggregates and encapsulates all that. */ public class Level implements GameLevel{ private final String _name; private final String _description; private final Topology _topology; private final Populator _populator; private final SnakeFactory _snakeFactory; public Level(String name, Topology topology, Populator generator) { this(name, topology, generator, new SimpleSnakeFactory()); } public Level(String name, String description, Topology topology, Populator generator) { this(name, description, topology, generator, new SimpleSnakeFactory()); } public Level(String name, Topology topology, Populator generator, SnakeFactory snakeFactory) { this(name, "No description provided.", topology, generator, snakeFactory); } public Level(String name, String description, Topology topology, Populator generator, SnakeFactory snakeFactory) { _name = name; _description = description; _topology = topology; _populator = generator; _snakeFactory = snakeFactory; } @Override public String getDescription() { return _description; } @Override public String getName() { return _name; } @Override public Topology getTopology() { return _topology; } @Override public Populator getFoodGenerator() { return _populator; } @Override public Snake getSnake(Point head){ return _snakeFactory.createSnake(head); } }