1 package de.jos.game.actions.cleanup;
2
3 import java.util.Collections;
4
5 import org.apache.commons.logging.Log;
6 import org.apache.commons.logging.LogFactory;
7
8 import de.jos.game.logic.AbstractGameBoard;
9 import de.jos.game.logic.InfiniteGameBoard;
10 import de.jos.game.logic.InfiniteGameLogic;
11 import de.jos.game.xml.Combination;
12 import de.jos.game.xml.Level;
13
14 public class CleanupActionLevelAdvancement extends AbstractCleanupAction {
15
16 private static Log log = LogFactory.getLog(CleanupActionLevelAdvancement.class);
17
18 private InfiniteGameLogic gameLogic = null;
19
20 public CleanupActionLevelAdvancement(AbstractGameBoard board, InfiniteGameLogic logic) {
21 super(board);
22 gameLogic = logic;
23 }
24
25 public void cleanup() {
26 log.debug("Level advanced.");
27 InfiniteGameBoard board = (InfiniteGameBoard) getGameBoard();
28
29
30 Level oldLevel = board.getLevel();
31
32
33 int nextLevelId = board.getLevel().getNextLevelId().intValue();
34 Level nextLevel = getResourceContainer().getInfiniteLevels().get(nextLevelId - 1);
35 nextLevel.getAccumulatedCombinations().addAll(nextLevel.getCombinations());
36 nextLevel.getAccumulatedCombinations().addAll(oldLevel.getAccumulatedCombinations());
37 Collections.sort(nextLevel.getAccumulatedCombinations(), Combination.COMBINATION_COMPARATOR);
38
39
40 board.setNewLevel(nextLevel);
41 gameLogic.setLevel(nextLevel);
42 }
43 }