Moved displaying of win panel in game control

git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@270 72836036-5685-4462-b002-a69064685172
This commit is contained in:
Jannis Harder 2011-05-24 23:15:21 +02:00
parent 79bffeba5d
commit 6df3d5fe32
7 changed files with 50 additions and 40 deletions

View file

@ -32,7 +32,7 @@ public class MockView implements IView {
/** */ /** */
public MockEvent quitEvent = new MockEvent(); public MockEvent quitEvent = new MockEvent();
/** */ /** */
public MockEvent newGameEvent = new MockEvent(); public MockEvent newRoundEvent = new MockEvent();
@Override @Override
public MockTablePanel getTablePanel() { public MockTablePanel getTablePanel() {
@ -75,13 +75,13 @@ public class MockView implements IView {
} }
@Override @Override
public IEvent getQuitEvent() { public IEvent getFinalScoreEvent() {
return quitEvent; return quitEvent;
} }
@Override @Override
public IEvent getNewGameEvent() { public IEvent getNewRoundEvent() {
return newGameEvent; return newRoundEvent;
} }
} }

View file

@ -1,9 +1,13 @@
package jrummikub.control; package jrummikub.control;
import java.util.ArrayList;
import java.util.List;
import jrummikub.model.GameSettings; import jrummikub.model.GameSettings;
import jrummikub.model.GameState; import jrummikub.model.GameState;
import jrummikub.model.IRoundState; import jrummikub.model.IRoundState;
import jrummikub.model.RoundState; import jrummikub.model.RoundState;
import jrummikub.util.Connection;
import jrummikub.util.IListener; import jrummikub.util.IListener;
import jrummikub.view.IView; import jrummikub.view.IView;
@ -15,6 +19,7 @@ public class GameControl {
private IView view; private IView view;
private RoundControl roundControl; private RoundControl roundControl;
private GameState gameState; private GameState gameState;
private List<Connection> connections = new ArrayList<Connection>();
/** /**
* Constructor * Constructor
@ -31,18 +36,18 @@ public class GameControl {
gameState = new GameState(); gameState = new GameState();
gameState.setFirstRoundFirstPlayer((int)(Math.random() * gameSettings.getPlayerList().size())); gameState.setFirstRoundFirstPlayer((int)(Math.random() * gameSettings.getPlayerList().size()));
view.getNewGameEvent().add(new IListener() { connections.add(view.getNewRoundEvent().add(new IListener() {
@Override @Override
public void handle() { public void handle() {
startRound(); startRound();
} }
}); }));
view.getQuitEvent().add(new IListener() { connections.add(view.getFinalScoreEvent().add(new IListener() {
@Override @Override
public void handle() { public void handle() {
quitProgram(); finalScore();
} }
}); }));
} }
/** /**
@ -67,14 +72,19 @@ public class GameControl {
@Override @Override
public void handle() { public void handle() {
roundControl = null; endOfRound();
} }
}); });
roundControl.startRound(); roundControl.startRound();
} }
private void endOfRound() {
roundControl = null;
view.enableWinPanel(true);
}
private void quitProgram() { private void finalScore() {
System.exit(0); System.exit(0);
} }

View file

@ -242,7 +242,6 @@ public class RoundControl {
c.remove(); c.remove();
} }
endOfRoundEvent.emit(); endOfRoundEvent.emit();
view.enableWinPanel(true);
roundFinished = true; roundFinished = true;
} }
} }

View file

@ -72,12 +72,12 @@ public interface IView {
* *
* @return the event * @return the event
*/ */
IEvent getQuitEvent(); IEvent getFinalScoreEvent();
/** /**
* The new game event is emitted when the player wants to start a new game * The new round event is emitted when the player wants to start a new round
* *
* @return the event * @return the event
*/ */
IEvent getNewGameEvent(); IEvent getNewRoundEvent();
} }

View file

@ -136,13 +136,13 @@ public class View extends JFrame implements IView {
} }
@Override @Override
public IEvent getNewGameEvent() { public IEvent getNewRoundEvent() {
return winPanel.getNewGameEvent(); return winPanel.getNewRoundEvent();
} }
@Override @Override
public IEvent getQuitEvent() { public IEvent getFinalScoreEvent() {
return winPanel.getQuitEvent(); return winPanel.getFinalScoreEvent();
} }
} }

View file

@ -26,11 +26,11 @@ class WinPanel extends JPanel {
private final static float MAX_BUTTON_FONT_SIZE = 12; private final static float MAX_BUTTON_FONT_SIZE = 12;
private JLabel winLabel; private JLabel winLabel;
private JButton newGameButton; private JButton newRoundButton;
private JButton quitButton; private JButton finalScoreButton;
private Event quitEvent = new Event(); private Event finalScoreEvent = new Event();
private Event newGameEvent = new Event(); private Event newRoundEvent = new Event();
/** /**
* Creates a new WinPanel * Creates a new WinPanel
@ -47,23 +47,23 @@ class WinPanel extends JPanel {
winLabel.setVerticalTextPosition(JLabel.CENTER); winLabel.setVerticalTextPosition(JLabel.CENTER);
add(winLabel); add(winLabel);
newGameButton = new JButton("Neues Spiel"); newRoundButton = new JButton("Neue Runde");
newGameButton.addActionListener(new ActionListener() { newRoundButton.addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent arg0) { public void actionPerformed(ActionEvent arg0) {
newGameEvent.emit(); newRoundEvent.emit();
} }
}); });
add(newGameButton); add(newRoundButton);
quitButton = new JButton("Beenden"); finalScoreButton = new JButton("Endauswertung");
quitButton.addActionListener(new ActionListener() { finalScoreButton.addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent arg0) { public void actionPerformed(ActionEvent arg0) {
quitEvent.emit(); finalScoreEvent.emit();
} }
}); });
add(quitButton); add(finalScoreButton);
addComponentListener(new ComponentAdapter() { addComponentListener(new ComponentAdapter() {
@Override @Override
@ -84,12 +84,12 @@ class WinPanel extends JPanel {
} }
/** /**
* The new game event is emitted when the player wants to start a new game * The new round event is emitted when the player wants to start a new round
* *
* @return the event * @return the event
*/ */
IEvent getNewGameEvent() { IEvent getNewRoundEvent() {
return newGameEvent; return newRoundEvent;
} }
/** /**
@ -97,8 +97,8 @@ class WinPanel extends JPanel {
* *
* @return the event * @return the event
*/ */
IEvent getQuitEvent() { IEvent getFinalScoreEvent() {
return quitEvent; return finalScoreEvent;
} }
private void rescale() { private void rescale() {
@ -119,12 +119,12 @@ class WinPanel extends JPanel {
fontSize = MAX_BUTTON_FONT_SIZE; fontSize = MAX_BUTTON_FONT_SIZE;
winLabel.setBounds(x, y, width, firstLineHeight); winLabel.setBounds(x, y, width, firstLineHeight);
newGameButton.setBounds(x, y + firstLineHeight + PANEL_SEPARATOR, newRoundButton.setBounds(x, y + firstLineHeight + PANEL_SEPARATOR,
buttonWidth, buttonHeight); buttonWidth, buttonHeight);
newGameButton.setFont(newGameButton.getFont().deriveFont(fontSize)); newRoundButton.setFont(newRoundButton.getFont().deriveFont(fontSize));
quitButton.setBounds(x + buttonWidth + PANEL_SEPARATOR, y + firstLineHeight finalScoreButton.setBounds(x + buttonWidth + PANEL_SEPARATOR, y + firstLineHeight
+ PANEL_SEPARATOR, buttonWidth, buttonHeight); + PANEL_SEPARATOR, buttonWidth, buttonHeight);
quitButton.setFont(quitButton.getFont().deriveFont(fontSize)); finalScoreButton.setFont(finalScoreButton.getFont().deriveFont(fontSize));
} }
} }

View file

@ -155,6 +155,7 @@ public class RoundControlTest {
assertEquals(14 + 6, hand.getSize()); assertEquals(14 + 6, hand.getSize());
} }
/** */
@Test @Test
public void laidOutValidUnchanged() { public void laidOutValidUnchanged() {
roundControl.startRound(); roundControl.startRound();