View Javadoc

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      // get the current (old) level
30      Level oldLevel = board.getLevel();
31  
32      // get the next level
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      // set new level in board and gameLogic
40      board.setNewLevel(nextLevel);
41      gameLogic.setLevel(nextLevel);
42    }
43  }