package ge.edu.freeuni.sdp.snake; import ge.edu.freeuni.sdp.snake.model.CompositePopulator; import ge.edu.freeuni.sdp.snake.model.EvilSnakePopulator; import ge.edu.freeuni.sdp.snake.model.GhostMousePopulator; import ge.edu.freeuni.sdp.snake.model.GhostPoisonPopulator; import ge.edu.freeuni.sdp.snake.model.HungrySnakeFactory; import ge.edu.freeuni.sdp.snake.model.Level; import ge.edu.freeuni.sdp.snake.model.MovingMousePopulator; import ge.edu.freeuni.sdp.snake.model.MovingPoisonPopulator; import ge.edu.freeuni.sdp.snake.model.ObservableSnakeFactory; import ge.edu.freeuni.sdp.snake.model.Populator; import ge.edu.freeuni.sdp.snake.model.RandomWormHole; import ge.edu.freeuni.sdp.snake.model.SingleMousePopulator; import ge.edu.freeuni.sdp.snake.model.SinglePoisonPopulator; import ge.edu.freeuni.sdp.snake.model.SphericTopology; import ge.edu.freeuni.sdp.snake.model.SwapSidesPopulator; import ge.edu.freeuni.sdp.snake.model.ThreeLivesSnakeFactory; import ge.edu.freeuni.sdp.snake.model.WormHolePopulator; import ge.edu.freeuni.sdp.snake.model.WormHoleTopology; import java.util.ArrayList; import java.util.List; public class LevelRegistry { public static List<Level> getLevels() { List<Level> levels = new ArrayList<Level>(); Level levelVerySimple = new Level( "Very simple", "Mice appair one by one on random positions.", new SphericTopology(), new SingleMousePopulator()); Populator[] array = {new MovingMousePopulator(),new MovingPoisonPopulator()}; Level levelMoving = new Level( "Moving Poison & Mouse", new SphericTopology(), new CompositePopulator(array)); Level levelPoisonFood = new Level( "Poison food", "Snake has three lives.", new SphericTopology(), new SinglePoisonPopulator(), new ThreeLivesSnakeFactory()); Level levelHungrySnake = new Level( "Hungry snake", "Snake will shrink if it will get no food during 10 moves.", new SphericTopology(), new SingleMousePopulator(), new HungrySnakeFactory() ); Level levelGhostMouse = new Level( "Ghost mouse and poison", new SphericTopology(), new CompositePopulator( new Populator[] { new GhostMousePopulator(), new GhostPoisonPopulator()})); RandomWormHole wormhole = new RandomWormHole(); Level levelWormhole = new Level( "Wormhole", new WormHoleTopology(wormhole), new CompositePopulator( new Populator[] { new SingleMousePopulator(), new WormHolePopulator(wormhole)})); Level levelEvilSnake = new Level( "Evil snake", new SphericTopology(), new CompositePopulator( new Populator[] { new SingleMousePopulator(), new EvilSnakePopulator()})); ObservableSnakeFactory snakeFactory = new ObservableSnakeFactory(); Level levelSwapSides = new Level( "Swap sides", new SphericTopology(), new SwapSidesPopulator(snakeFactory), snakeFactory); levels.add(levelVerySimple); levels.add(levelMoving); levels.add(levelPoisonFood); levels.add(levelHungrySnake); levels.add(levelGhostMouse); levels.add(levelWormhole); levels.add(levelEvilSnake); levels.add(levelSwapSides); return levels; } }