Kommentare

git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@559 72836036-5685-4462-b002-a69064685172
This commit is contained in:
Ida Massow 2011-06-22 00:12:04 +02:00
parent fd378778d1
commit 1823fb1610
5 changed files with 144 additions and 76 deletions

View file

@ -43,7 +43,7 @@ public class GameOfferControl extends AbstractGameBeginControl {
.add(new IListener() {
@Override
public void handle() {
List<PlayerSettings> players = gameData.getGameSettings()
gameData.getGameSettings()
.getPlayerList();
if (checkPlayers()) {
startGame();

View file

@ -45,11 +45,13 @@ public class NetworkControl {
* Creates a new network control
*
* @param loginData
* user's login data
* user's login data
* @param connectionControl
* current connection for events and messages
* current connection for events and messages
* @param saveControl
* save control if saving will ever be allowed
* @param view
* for events and handlers
* for events and handlers
*/
public NetworkControl(final LoginData loginData,
IConnectionControl connectionControl, SaveControl saveControl,
@ -79,6 +81,10 @@ public class NetworkControl {
}
}
}));
addViewEventListeners();
}
private void addViewEventListeners() {
connections.add(view.getQuitWarningPanel().getCancelEvent()
.add(new IListener() {
@Override
@ -126,7 +132,7 @@ public class NetworkControl {
* Adds the listeners for connection control events
*
* @param view
* view for events
* view for events
*/
public void addConnectionControlListeners(final IView view) {
connections.add(connectionControl.getGameOfferEvent().add(
@ -165,7 +171,6 @@ public class NetworkControl {
if (ack) {
createGameJoinControl();
} else {
// TODO Error message
view.showGameListPanel(true);
}
}
@ -174,14 +179,16 @@ public class NetworkControl {
private void addConnectionSetupListeners(final LoginData loginData,
final IView view) {
connections.add(connectionControl.getConnectedEvent().add(new IListener() {
@Override
public void handle() {
view.getGameListPanel().setChannelName(loginData.getChannelName());
view.showConnectPanel(false);
view.showGameListPanel(true);
}
}));
connections.add(connectionControl.getConnectedEvent().add(
new IListener() {
@Override
public void handle() {
view.getGameListPanel().setChannelName(
loginData.getChannelName());
view.showConnectPanel(false);
view.showGameListPanel(true);
}
}));
connections.add(connectionControl.getConnectionFailedEvent().add(
new IListener1<LoginError>() {
@ -324,7 +331,8 @@ public class NetworkControl {
if (gameOfferControl != null) {
return;
}
gameOfferControl = new GameOfferControl(connectionControl, settings, view);
gameOfferControl = new GameOfferControl(connectionControl, settings,
view);
gameOfferControl.getBackEvent().add(new IListener() {
@Override
public void handle() {
@ -332,14 +340,15 @@ public class NetworkControl {
view.showGameListPanel(true);
}
});
gameOfferControl.getStartGameEvent().add(new IListener1<GameSettings>() {
@Override
public void handle(GameSettings settings) {
gameControl = new NetworkGameControl(settings, saveControl, view,
connectionControl, true);
gameControl.startGame();
}
});
gameOfferControl.getStartGameEvent().add(
new IListener1<GameSettings>() {
@Override
public void handle(GameSettings settings) {
gameControl = new NetworkGameControl(settings,
saveControl, view, connectionControl, true);
gameControl.startGame();
}
});
gameOfferControl.startGameOffer();
}

View file

@ -9,12 +9,30 @@ import jrummikub.util.IListener;
import jrummikub.view.IView;
import jrummikub.view.IView.BottomPanelType;
/**
* Class controlling network games
*/
public class NetworkGameControl extends GameControl {
private IConnectionControl connectionControl;
private boolean host;
public NetworkGameControl(GameSettings gameSettings, SaveControl saveControl,
IView view, IConnectionControl connectionControl, boolean host) {
/**
* Creates new network game control
*
* @param gameSettings
* current game settings
* @param saveControl
* if there should ever be saving in network mode
* @param view
* the view
* @param connectionControl
* the current connection
* @param host
* of the current game
*/
public NetworkGameControl(GameSettings gameSettings,
SaveControl saveControl, IView view,
IConnectionControl connectionControl, boolean host) {
super(gameSettings, saveControl, view);
this.connectionControl = connectionControl;
@ -23,12 +41,13 @@ public class NetworkGameControl extends GameControl {
@Override
protected void startRound() {
connections.add(connectionControl.getRoundStartEvent().add(new IListener() {
@Override
public void handle() {
NetworkGameControl.super.startRound();
}
}));
connections.add(connectionControl.getRoundStartEvent().add(
new IListener() {
@Override
public void handle() {
NetworkGameControl.super.startRound();
}
}));
if (host) {
connectionControl.startRound();
@ -42,7 +61,8 @@ public class NetworkGameControl extends GameControl {
@Override
protected RoundControl createRoundControl(IRoundState roundState) {
return new NetworkRoundControl(roundState, view, connectionControl, host);
return new NetworkRoundControl(roundState, view, connectionControl,
host);
}
@Override

View file

@ -9,10 +9,25 @@ import jrummikub.util.IListener;
import jrummikub.util.IListener1;
import jrummikub.view.IView;
/**
* Round control for network games
*/
public class NetworkRoundControl extends RoundControl {
private IConnectionControl connectionControl;
private boolean currentlyActive;
/**
* Creates new network round control
*
* @param roundState
* current round state
* @param view
* the view
* @param connectionControl
* connection control for the current connection
* @param startActive
* true for host
*/
public NetworkRoundControl(IRoundState roundState, IView view,
final IConnectionControl connectionControl, boolean startActive) {
super(roundState, view, false);
@ -27,18 +42,20 @@ public class NetworkRoundControl extends RoundControl {
setRoundState(state);
}
}));
connections.add(connectionControl.getTurnStartEvent().add(new IListener() {
@Override
public void handle() {
startTurn();
}
}));
connections.add(connectionControl.getNextPlayerEvent().add(new IListener() {
@Override
public void handle() {
NetworkRoundControl.super.nextPlayer();
}
}));
connections.add(connectionControl.getTurnStartEvent().add(
new IListener() {
@Override
public void handle() {
startTurn();
}
}));
connections.add(connectionControl.getNextPlayerEvent().add(
new IListener() {
@Override
public void handle() {
NetworkRoundControl.super.nextPlayer();
}
}));
}
@Override
@ -54,12 +71,12 @@ public class NetworkRoundControl extends RoundControl {
@Override
protected ITurnControl createTurnControl(Type type) {
switch (type) {
case HUMAN:
currentlyActive = true;
break;
case NETWORK:
currentlyActive = false;
break;
case HUMAN:
currentlyActive = true;
break;
case NETWORK:
currentlyActive = false;
break;
}
if (!currentlyActive) {