blob: e00952de5061d08442cb12cfc595152f81a08333 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
package jrummikub.control;
import jrummikub.model.GameSettings;
import jrummikub.model.GameState;
import jrummikub.model.IRoundState;
import jrummikub.util.IListener;
import jrummikub.util.IListener1;
import jrummikub.util.IListener3;
import jrummikub.view.IView;
import jrummikub.view.IView.BottomPanelType;
/**
* The application control controls the settings for a new games and create the
* game control
*/
public class ApplicationControl {
private SaveControl saveControl;
private IView view;
private GameControl gameControl;
/**
* Creates a new application control
*
* @param view
* the view to use
*/
public ApplicationControl(IView view) {
this.view = view;
saveControl = new SaveControl(view);
view.getMenuQuitEvent().add(new IListener() {
@Override
public void handle() {
System.exit(0);
}
});
}
/**
* Starts the application by showing the game settings dialog panel
*/
public void startApplication() {
view.showScorePanel(false);
view.setBottomPanel(BottomPanelType.START_GAME_PANEL);
saveControl.setGameSettings(null);
saveControl.setGameState(null);
final SettingsControl settingsControl = new SettingsControl(view,
new GameSettings());
saveControl.getLoadEvent().add(
new IListener3<GameSettings, GameState, IRoundState>() {
@Override
public void handle(GameSettings settings, GameState gameState,
IRoundState roundState) {
settingsControl.abort();
if (gameControl != null) {
gameControl.abortGame();
}
gameControl = new GameControl(settings, saveControl, view);
addGameControlListeners(gameControl);
gameControl.continueGame(gameState, roundState);
}
});
settingsControl.getStartGameEvent().add(new IListener1<GameSettings>() {
@Override
public void handle(GameSettings settings) {
saveControl.setGameSettings(settings);
gameControl = new GameControl(settings, saveControl, view);
addGameControlListeners(gameControl);
gameControl.startGame();
}
});
settingsControl.startSettings();
}
private void addGameControlListeners(GameControl gameControl) {
gameControl.getEndOfGameEvent().add(new IListener() {
@Override
public void handle() {
startApplication();
}
});
}
}
|