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
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
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 }