View Javadoc

1   package de.jos.game.objects.state;
2   
3   import java.util.HashMap;
4   import java.util.Map;
5   
6   /***
7    * Klasse welche den Zustand der einzelnen PuzzleLevel verwaltet
8    * 
9    * @author root
10   * 
11   */
12  public class PuzzleLevelState {
13  
14    private final Map<Integer, Boolean> puzzleLevelToSolvedStatusMap = new HashMap<Integer, Boolean>();
15  
16    private Integer currentlySelectedLevel = null;
17  
18    private PuzzleLevelStateChangedListener puzzleLevelStateChangedListener = null;
19  
20    public PuzzleLevelState(int numberLevels) {
21      // initial alle levels als nicht geloest betrachten
22      for (int i = 1; i <= numberLevels; i++) {
23        setLevelSolved(Integer.valueOf(i), false);
24      }
25    }
26  
27    public Integer getCurrentlySelectedLevel() {
28      return currentlySelectedLevel;
29    }
30  
31    public void setCurrentlySelectedLevel(Integer currentlySelectedLevel) {
32      this.currentlySelectedLevel = currentlySelectedLevel;
33    }
34  
35    /***
36     * aktualisiert den Status des Levels und fuehrt Aktion des Listeners aus.
37     * 
38     * @param level
39     * @param solved
40     */
41    public void setLevelSolved(Integer level, boolean solved) {
42      puzzleLevelToSolvedStatusMap.put(level, Boolean.valueOf(solved));
43      // Listener aufrufen
44      if (puzzleLevelStateChangedListener != null) {
45        puzzleLevelStateChangedListener.levelStateChanged(level);
46      }
47    }
48  
49    public boolean isLevelSolved(Integer level) {
50      return puzzleLevelToSolvedStatusMap.get(level).booleanValue();
51    }
52  
53    public void registerPuzzleLevelStateChangedListener(PuzzleLevelStateChangedListener puzzleLevelStateChangedListener) {
54      this.puzzleLevelStateChangedListener = puzzleLevelStateChangedListener;
55    }
56  
57  }