LAden und Speichern geht jetzt immer sauber
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@388 72836036-5685-4462-b002-a69064685172
This commit is contained in:
parent
41fe3c93b3
commit
70af06e1bf
5 changed files with 87 additions and 44 deletions
|
@ -16,6 +16,7 @@ import jrummikub.view.IView.BottomPanelType;
|
|||
public class ApplicationControl {
|
||||
private SaveControl saveControl;
|
||||
private IView view;
|
||||
private GameControl gameControl;
|
||||
|
||||
/**
|
||||
* Creates a new application control
|
||||
|
@ -53,8 +54,10 @@ public class ApplicationControl {
|
|||
public void handle(GameSettings settings,
|
||||
GameState gameState, IRoundState roundState) {
|
||||
settingsControl.abort();
|
||||
// TODO alles ordentlich beenden (controls)
|
||||
GameControl gameControl = new GameControl(settings,
|
||||
if (gameControl != null){
|
||||
gameControl.abortGame();
|
||||
}
|
||||
gameControl = new GameControl(settings,
|
||||
saveControl, view);
|
||||
addGameControlListeners(gameControl);
|
||||
gameControl.continueGame(gameState, roundState);
|
||||
|
@ -67,7 +70,7 @@ public class ApplicationControl {
|
|||
public void handle(GameSettings settings) {
|
||||
saveControl.setGameSettings(settings);
|
||||
|
||||
GameControl gameControl = new GameControl(settings,
|
||||
gameControl = new GameControl(settings,
|
||||
saveControl, view);
|
||||
addGameControlListeners(gameControl);
|
||||
|
||||
|
|
|
@ -83,10 +83,14 @@ public class GameControl {
|
|||
}
|
||||
|
||||
private void endGame() {
|
||||
removeListeners();
|
||||
endOfGameEvent.emit();
|
||||
}
|
||||
|
||||
private void removeListeners() {
|
||||
for (Connection c : connections) {
|
||||
c.remove();
|
||||
}
|
||||
endOfGameEvent.emit();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -106,6 +110,16 @@ public class GameControl {
|
|||
}
|
||||
}
|
||||
|
||||
public void abortGame() {
|
||||
removeListeners();
|
||||
if (roundControl != null) {
|
||||
roundControl.abortRound();
|
||||
roundControl = null;
|
||||
}
|
||||
|
||||
view.clearView();
|
||||
}
|
||||
|
||||
private void startRound() {
|
||||
if (roundControl != null) {
|
||||
return;
|
||||
|
|
|
@ -84,6 +84,14 @@ public class RoundControl {
|
|||
prepareTurn();
|
||||
}
|
||||
|
||||
public void abortRound() {
|
||||
removeListeners();
|
||||
if (turnControl != null) {
|
||||
turnControl.abortTurn();
|
||||
turnControl = null;
|
||||
}
|
||||
}
|
||||
|
||||
private void prepareTurn() {
|
||||
boolean isHuman = roundState.getActivePlayer().getPlayerSettings()
|
||||
.getTurnControlType() == HUMAN;
|
||||
|
@ -294,14 +302,18 @@ public class RoundControl {
|
|||
}
|
||||
|
||||
void endOfRound() {
|
||||
for (Connection c : connections) {
|
||||
c.remove();
|
||||
}
|
||||
removeListeners();
|
||||
Score roundScore = score();
|
||||
endOfRoundEvent.emit(roundScore);
|
||||
roundFinished = true;
|
||||
}
|
||||
|
||||
private void removeListeners() {
|
||||
for (Connection c : connections) {
|
||||
c.remove();
|
||||
}
|
||||
}
|
||||
|
||||
private Score score() {
|
||||
List<Boolean> winners = new ArrayList<Boolean>();
|
||||
List<Integer> points = new ArrayList<Integer>();
|
||||
|
|
|
@ -108,8 +108,8 @@ public interface IView {
|
|||
public void setCurrentPlayerColor(Color color);
|
||||
|
||||
/**
|
||||
* Is used for the PlayerPanel to display if a player has laid out along with
|
||||
* the name
|
||||
* Is used for the PlayerPanel to display if a player has laid out along
|
||||
* with the name
|
||||
*
|
||||
* @param hasLaidOut
|
||||
* specifies if the current player has laid out or not
|
||||
|
@ -148,8 +148,8 @@ public interface IView {
|
|||
}
|
||||
|
||||
/**
|
||||
* The menu new game event is emitted when the user selects the new game menu
|
||||
* entry
|
||||
* The menu new game event is emitted when the user selects the new game
|
||||
* menu entry
|
||||
*
|
||||
* @return the event
|
||||
*/
|
||||
|
@ -168,7 +168,7 @@ public interface IView {
|
|||
*
|
||||
* @return the event
|
||||
*/
|
||||
IEvent1<File> getLoadEvent();
|
||||
public IEvent1<File> getLoadEvent();
|
||||
|
||||
/**
|
||||
* The save event is emitted when the user wants to save the current game
|
||||
|
@ -176,5 +176,7 @@ public interface IView {
|
|||
*
|
||||
* @return the event
|
||||
*/
|
||||
IEvent1<File> getSaveEvent();
|
||||
public IEvent1<File> getSaveEvent();
|
||||
|
||||
public void clearView();
|
||||
}
|
||||
|
|
|
@ -114,6 +114,17 @@ public class View extends JFrame implements IView {
|
|||
return saveEvent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearView() {
|
||||
showScorePanel(false);
|
||||
showSettingsPanel(false);
|
||||
getHandPanel().setStones(
|
||||
Collections.<Pair<Stone, Position>> emptyList());
|
||||
getTablePanel().setStoneSets(
|
||||
Collections.<Pair<StoneSet, Position>> emptyList());
|
||||
setSelectedStones(Collections.<Stone> emptyList());
|
||||
}
|
||||
|
||||
private void createFileChooser() {
|
||||
chooser = new JFileChooser();
|
||||
FileNameExtensionFilter filter = new FileNameExtensionFilter(
|
||||
|
@ -208,8 +219,8 @@ public class View extends JFrame implements IView {
|
|||
mainLayer.add(table);
|
||||
|
||||
playerPanel = new PlayerPanel();
|
||||
playerPanel.setBorder(new MatteBorder(PLAYER_PANEL_BORDER_WIDTH, 0, 0, 0,
|
||||
Color.BLACK));
|
||||
playerPanel.setBorder(new MatteBorder(PLAYER_PANEL_BORDER_WIDTH, 0, 0,
|
||||
0, Color.BLACK));
|
||||
mainLayer.add(playerPanel);
|
||||
|
||||
startTurnPanel = new StartTurnPanel();
|
||||
|
@ -318,24 +329,24 @@ public class View extends JFrame implements IView {
|
|||
|
||||
@SuppressWarnings("unchecked")
|
||||
private List<Pair<Stone, Position>> createDecorationStones() {
|
||||
Pair<Stone, Position> stoneJ = new Pair<Stone, Position>(new Stone(-'J',
|
||||
StoneColor.BLACK), new Position(2.5f, 0));
|
||||
Pair<Stone, Position> stoneR = new Pair<Stone, Position>(new Stone(-'R',
|
||||
StoneColor.ORANGE), new Position(3.5f, 0));
|
||||
Pair<Stone, Position> stoneu1 = new Pair<Stone, Position>(new Stone(-'u',
|
||||
StoneColor.BLUE), new Position(4.5f, 0));
|
||||
Pair<Stone, Position> stonem1 = new Pair<Stone, Position>(new Stone(-'m',
|
||||
StoneColor.RED), new Position(5.5f, 0));
|
||||
Pair<Stone, Position> stonem2 = new Pair<Stone, Position>(new Stone(-'m',
|
||||
StoneColor.GREEN), new Position(6.5f, 0));
|
||||
Pair<Stone, Position> stonei = new Pair<Stone, Position>(new Stone(-'i',
|
||||
StoneColor.VIOLET), new Position(7.5f, 0));
|
||||
Pair<Stone, Position> stonek = new Pair<Stone, Position>(new Stone(-'k',
|
||||
StoneColor.AQUA), new Position(8.5f, 0));
|
||||
Pair<Stone, Position> stoneu2 = new Pair<Stone, Position>(new Stone(-'u',
|
||||
StoneColor.GRAY), new Position(9.5f, 0));
|
||||
Pair<Stone, Position> stoneb = new Pair<Stone, Position>(new Stone(-'b',
|
||||
StoneColor.BLACK), new Position(10.5f, 0));
|
||||
Pair<Stone, Position> stoneJ = new Pair<Stone, Position>(new Stone(
|
||||
-'J', StoneColor.BLACK), new Position(2.5f, 0));
|
||||
Pair<Stone, Position> stoneR = new Pair<Stone, Position>(new Stone(
|
||||
-'R', StoneColor.ORANGE), new Position(3.5f, 0));
|
||||
Pair<Stone, Position> stoneu1 = new Pair<Stone, Position>(new Stone(
|
||||
-'u', StoneColor.BLUE), new Position(4.5f, 0));
|
||||
Pair<Stone, Position> stonem1 = new Pair<Stone, Position>(new Stone(
|
||||
-'m', StoneColor.RED), new Position(5.5f, 0));
|
||||
Pair<Stone, Position> stonem2 = new Pair<Stone, Position>(new Stone(
|
||||
-'m', StoneColor.GREEN), new Position(6.5f, 0));
|
||||
Pair<Stone, Position> stonei = new Pair<Stone, Position>(new Stone(
|
||||
-'i', StoneColor.VIOLET), new Position(7.5f, 0));
|
||||
Pair<Stone, Position> stonek = new Pair<Stone, Position>(new Stone(
|
||||
-'k', StoneColor.AQUA), new Position(8.5f, 0));
|
||||
Pair<Stone, Position> stoneu2 = new Pair<Stone, Position>(new Stone(
|
||||
-'u', StoneColor.GRAY), new Position(9.5f, 0));
|
||||
Pair<Stone, Position> stoneb = new Pair<Stone, Position>(new Stone(
|
||||
-'b', StoneColor.BLACK), new Position(10.5f, 0));
|
||||
|
||||
Pair<Stone, Position> stone1 = new Pair<Stone, Position>(new Stone(
|
||||
StoneColor.RED), new Position(2, 1));
|
||||
|
@ -350,9 +361,9 @@ public class View extends JFrame implements IView {
|
|||
Pair<Stone, Position> stone6 = new Pair<Stone, Position>(new Stone(
|
||||
StoneColor.BLACK), new Position(11, 1));
|
||||
|
||||
return Arrays
|
||||
.asList(stoneJ, stoneR, stoneu1, stonem1, stonem2, stonei, stonek,
|
||||
stoneu2, stoneb, stone1, stone2, stone3, stone4, stone5, stone6);
|
||||
return Arrays.asList(stoneJ, stoneR, stoneu1, stonem1, stonem2, stonei,
|
||||
stonek, stoneu2, stoneb, stone1, stone2, stone3, stone4,
|
||||
stone5, stone6);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -363,7 +374,8 @@ public class View extends JFrame implements IView {
|
|||
&& type != BottomPanelType.WIN_PANEL);
|
||||
|
||||
if (type == BottomPanelType.START_GAME_PANEL) {
|
||||
table.setStoneSets(Collections.<Pair<StoneSet, Position>> emptyList());
|
||||
table.setStoneSets(Collections
|
||||
.<Pair<StoneSet, Position>> emptyList());
|
||||
playerPanel.getHandPanel().setStones(createDecorationStones());
|
||||
}
|
||||
|
||||
|
|
Reference in a new issue