Kommentare und kleinere Umbauten

git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@426 72836036-5685-4462-b002-a69064685172
This commit is contained in:
Ida Massow 2011-06-13 23:31:47 +02:00
parent 570187c950
commit f5a05f2c8d
12 changed files with 231 additions and 70 deletions

View file

@ -1,5 +1,6 @@
package jrummikub.view; package jrummikub.view;
import jrummikub.util.GameData;
import jrummikub.util.IEvent; import jrummikub.util.IEvent;
import jrummikub.util.IEvent1; import jrummikub.util.IEvent1;
import jrummikub.util.MockEvent; import jrummikub.util.MockEvent;

View file

@ -71,8 +71,8 @@ public class SettingsControl {
} }
/** /**
* the start game event is emitted when the user wants to start a game and the * the start game event is emitted when the user wants to start a game and
* settings made are valid * the settings made are valid
* *
* @return the event * @return the event
*/ */
@ -89,7 +89,8 @@ public class SettingsControl {
private void addOptionListeners1() { private void addOptionListeners1() {
connections.add(view.getSettingsPanel() connections.add(view.getSettingsPanel()
.getChangeInitialMeldThresholdEvent().add(new IListener1<Integer>() { .getChangeInitialMeldThresholdEvent()
.add(new IListener1<Integer>() {
@Override @Override
public void handle(Integer value) { public void handle(Integer value) {
settings.setInitialMeldThreshold(value); settings.setInitialMeldThreshold(value);
@ -114,7 +115,8 @@ public class SettingsControl {
update(); update();
} }
})); }));
connections.add(view.getSettingsPanel().getChangeNumberOfStonesDealtEvent() connections.add(view.getSettingsPanel()
.getChangeNumberOfStonesDealtEvent()
.add(new IListener1<Integer>() { .add(new IListener1<Integer>() {
@Override @Override
public void handle(Integer value) { public void handle(Integer value) {
@ -303,7 +305,8 @@ public class SettingsControl {
view.getSettingsPanel().enableRemovePlayerButtons( view.getSettingsPanel().enableRemovePlayerButtons(
Collections.nCopies(settings.getPlayerList().size(), Collections.nCopies(settings.getPlayerList().size(),
enableRemoveButtons)); enableRemoveButtons));
view.getSettingsPanel().enableAddPlayerButton( view.getSettingsPanel()
.enableAddPlayerButton(
settings.getPlayerList().size() < ISettingsPanel.PLAYER_COLORS.length); settings.getPlayerList().size() < ISettingsPanel.PLAYER_COLORS.length);
checkSettings(); checkSettings();
@ -317,6 +320,9 @@ public class SettingsControl {
} }
protected boolean checkSettings() { protected boolean checkSettings() {
if (!checkName()) {
return false;
}
if (!checkErrors()) { if (!checkErrors()) {
return false; return false;
} }
@ -329,7 +335,7 @@ public class SettingsControl {
return true; return true;
} }
private boolean checkErrors() { private boolean checkName() {
for (PlayerSettings player : settings.getPlayerList()) { for (PlayerSettings player : settings.getPlayerList()) {
if (player.getName().isEmpty()) { if (player.getName().isEmpty()) {
view.getSettingsPanel().setError( view.getSettingsPanel().setError(
@ -350,17 +356,22 @@ public class SettingsControl {
for (int j = i + 1; j < settings.getPlayerList().size(); ++j) { for (int j = i + 1; j < settings.getPlayerList().size(); ++j) {
PlayerSettings player2 = settings.getPlayerList().get(j); PlayerSettings player2 = settings.getPlayerList().get(j);
if (player2.getName().equals(name) && player2.getType() == type) { if (player2.getName().equals(name) && player2.getType() == type) {
view.getSettingsPanel().setError( view.getSettingsPanel()
.setError(
ISettingsPanel.SettingsError.DUPLICATE_PLAYER_NAME_ERROR); ISettingsPanel.SettingsError.DUPLICATE_PLAYER_NAME_ERROR);
view.getSettingsPanel().enableStartGameButton(false); view.getSettingsPanel().enableStartGameButton(false);
return false; return false;
} }
} }
} }
return true;
}
private boolean checkErrors() {
int totalStonesDealt = settings.getNumberOfStonesDealt() int totalStonesDealt = settings.getNumberOfStonesDealt()
* settings.getPlayerList().size(); * settings.getPlayerList().size();
int totalStones = settings.getHighestValue() * settings.getStoneSetNumber() int totalStones = settings.getHighestValue()
* settings.getStoneSetNumber()
* settings.getStoneColors().size() + settings.getJokerNumber(); * settings.getStoneColors().size() + settings.getJokerNumber();
if (totalStones <= totalStonesDealt) { if (totalStones <= totalStonesDealt) {

View file

@ -7,10 +7,10 @@ import javax.swing.SwingUtilities;
import jrummikub.model.GameSettings; import jrummikub.model.GameSettings;
import jrummikub.util.Event; import jrummikub.util.Event;
import jrummikub.util.Event1; import jrummikub.util.Event1;
import jrummikub.util.GameData;
import jrummikub.util.IEvent; import jrummikub.util.IEvent;
import jrummikub.util.IEvent1; import jrummikub.util.IEvent1;
import jrummikub.util.LoginData; import jrummikub.util.LoginData;
import jrummikub.view.IGameListPanel.GameData;
import org.jivesoftware.smack.Connection; import org.jivesoftware.smack.Connection;
import org.jivesoftware.smack.PacketListener; import org.jivesoftware.smack.PacketListener;

View file

@ -9,12 +9,11 @@ import java.util.UUID;
import jrummikub.model.GameSettings; import jrummikub.model.GameSettings;
import jrummikub.util.Connection; import jrummikub.util.Connection;
import jrummikub.util.Event; import jrummikub.util.Event;
import jrummikub.util.GameData;
import jrummikub.util.IEvent; import jrummikub.util.IEvent;
import jrummikub.util.IListener; import jrummikub.util.IListener;
import jrummikub.util.IListener1; import jrummikub.util.IListener1;
import jrummikub.util.LoginData; import jrummikub.util.LoginData;
import jrummikub.view.IGameListPanel;
import jrummikub.view.IGameListPanel.GameData;
import jrummikub.view.IView; import jrummikub.view.IView;
/** /**
@ -45,7 +44,7 @@ public class NetworkControl {
addConnectionControlListeners(loginData, view); addConnectionControlListeners(loginData, view);
connections.add(view.getGameListPanel().getJoinEvent() connections.add(view.getGameListPanel().getJoinEvent()
.add(new IListener1<IGameListPanel.GameData>() { .add(new IListener1<GameData>() {
@Override @Override
public void handle(GameData value) { public void handle(GameData value) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
@ -107,7 +106,7 @@ public class NetworkControl {
})); }));
connections.add(connectionControl.getGameOfferEvent().add( connections.add(connectionControl.getGameOfferEvent().add(
new IListener1<IGameListPanel.GameData>() { new IListener1<GameData>() {
@Override @Override
public void handle(GameData value) { public void handle(GameData value) {
GameData game = gameMap.get(value.getGameID()); GameData game = gameMap.get(value.getGameID());

View file

@ -21,8 +21,8 @@ public class NetworkSettingsControl extends SettingsControl {
/** /**
* Creates a new network settings control * Creates a new network settings control
* *
* @param connectionControl * @param nickname
* for gameOffers * to be set as player name
* @param view * @param view
* for events and handlers * for events and handlers
* @param settings * @param settings
@ -45,7 +45,8 @@ public class NetworkSettingsControl extends SettingsControl {
@Override @Override
protected void update() { protected void update() {
view.getSettingsPanel().enableAddPlayerButton( view.getSettingsPanel()
.enableAddPlayerButton(
settings.getPlayerList().size() < ISettingsPanel.PLAYER_COLORS.length); settings.getPlayerList().size() < ISettingsPanel.PLAYER_COLORS.length);
checkSettings(); checkSettings();

View file

@ -3,8 +3,6 @@ package jrummikub.model;
import java.awt.Color; import java.awt.Color;
import java.io.Serializable; import java.io.Serializable;
import jrummikub.control.turn.TurnControlFactory;
/** /**
* The settings of a player * The settings of a player
*/ */

View file

@ -0,0 +1,81 @@
package jrummikub.util;
import java.util.UUID;
import jrummikub.model.GameSettings;
/**
* Class summarizing the game data important for unique and sensible network
* representation and use
*/
public class GameData {
private UUID gameID;
private String host;
private GameSettings gameSettings;
/**
* Creates new game data
*
* @param gameID
* unique gameID
* @param settings
* game settings (serialized)
*/
public GameData(UUID gameID, GameSettings settings) {
this(gameID, settings, null);
}
/**
* Creates new game data
*
* @param gameID
* unique gameID
* @param settings
* game settings (serialized)
* @param host
* name of the player offering the game
*/
public GameData(UUID gameID, GameSettings settings, String host) {
this.gameID = gameID;
this.gameSettings = settings;
this.host = host;
}
/**
* Sets the game settings
*
* @param settings
* game settings after adjustment
*/
public void setGameSettings(GameSettings settings) {
gameSettings = settings;
}
/**
* Getter for game settings
*
* @return returns game settings
*/
public GameSettings getGameSettings() {
return gameSettings;
}
/**
* Getter for host name
*
* @return host user name
*/
public String getHost() {
return host;
}
/**
* Getter for gameID
*
* @return gameID
*/
public UUID getGameID() {
return gameID;
}
}

View file

@ -1,11 +1,26 @@
package jrummikub.util; package jrummikub.util;
/**
* Data needed for the login in one data type (name, server, password, channel)
*/
public class LoginData { public class LoginData {
private String userName; private String userName;
private String serverName; private String serverName;
private String password; private String password;
private String channelName; private String channelName;
/**
* Creates a new set of login data
*
* @param userName
* user name in channel, player name in game
* @param serverName
* server of the user account specified in user name
* @param password
* for account with user name on server
* @param channelName
* channel in which games can be offered and played
*/
public LoginData(String userName, String serverName, String password, public LoginData(String userName, String serverName, String password,
String channelName) { String channelName) {
this.userName = userName; this.userName = userName;
@ -14,18 +29,38 @@ public class LoginData {
this.channelName = channelName; this.channelName = channelName;
} }
/**
* Getter for user name
*
* @return user name
*/
public String getUserName() { public String getUserName() {
return userName; return userName;
} }
/**
* Getter for server name
*
* @return server name
*/
public String getServerName() { public String getServerName() {
return serverName; return serverName;
} }
/**
* Getter for password
*
* @return password
*/
public String getPassword() { public String getPassword() {
return password; return password;
} }
/**
* Getter for channel name
*
* @return channel name
*/
public String getChannelName() { public String getChannelName() {
return channelName; return channelName;
} }

View file

@ -1,54 +1,55 @@
package jrummikub.view; package jrummikub.view;
import java.util.UUID; import jrummikub.util.GameData;
import jrummikub.model.GameSettings;
import jrummikub.util.IEvent; import jrummikub.util.IEvent;
import jrummikub.util.IEvent1; import jrummikub.util.IEvent1;
/**
* Panel showing all offered games in the chosen channel
*/
public interface IGameListPanel { public interface IGameListPanel {
public static class GameData { /**
private UUID gameID; * Emitted when a new game is offered
private String host; *
private GameSettings gameSettings; * @return the event
*/
public GameData(UUID gameID, GameSettings settings) {
this(gameID, settings, null);
}
public GameData(UUID gameID, GameSettings settings, String host) {
this.gameID = gameID;
this.gameSettings = settings;
this.host = host;
}
public void setGameSettings(GameSettings settings) {
gameSettings = settings;
}
public GameSettings getGameSettings() {
return gameSettings;
}
public String getHost() {
return host;
}
public UUID getGameID() {
return gameID;
}
}
public IEvent getOpenNewGameEvent(); public IEvent getOpenNewGameEvent();
/**
* Emitted when the network game is canceled
*
* @return the event
*/
public IEvent getCancelEvent(); public IEvent getCancelEvent();
/**
* Emitted when the user chose to join an existing, open game
*
* @return the event
*/
public IEvent1<GameData> getJoinEvent(); public IEvent1<GameData> getJoinEvent();
/**
* Emitted when an open game is removed by the host
*
* @param game
* game data of the open game
*/
public void removeGame(GameData game); public void removeGame(GameData game);
/**
* Adds a game to the list of open games
*
* @param game
* game data of the new game
*/
public void addGame(GameData game); public void addGame(GameData game);
/**
* Sets the channel name
*
* @param name
* channel name
*/
public void setChannelName(String name); public void setChannelName(String name);
} }

View file

@ -17,6 +17,11 @@ public interface ILoginPanel {
*/ */
public IEvent1<LoginData> getLoginEvent(); public IEvent1<LoginData> getLoginEvent();
/**
* Emitted when the user cancels the login process
*
* @return the event
*/
public IEvent getCancelEvent(); public IEvent getCancelEvent();
} }

View file

@ -36,11 +36,17 @@ public interface ISettingsPanel {
new Color(1.0f, 1.0f, 1.0f), // white new Color(1.0f, 1.0f, 1.0f), // white
}; };
/**
* enables the start of a network game at a given point in game
*
* @param enable
* starting a network game
*/
public void enableNetworkMode(boolean enable); public void enableNetworkMode(boolean enable);
/** /**
* The add player event is emitted when the user wants to add a player to the * The add player event is emitted when the user wants to add a player to
* player list * the player list
* *
* @return the event * @return the event
*/ */
@ -87,8 +93,8 @@ public interface ISettingsPanel {
public IEvent1<Integer> getChangeInitialMeldThresholdEvent(); public IEvent1<Integer> getChangeInitialMeldThresholdEvent();
/** /**
* The change StoneSet number event is emitted when the user wants to use more * The change StoneSet number event is emitted when the user wants to use
* or less than 2 StoneSets per color * more or less than 2 StoneSets per color
* *
* @return number of SoneSets * @return number of SoneSets
*/ */
@ -201,12 +207,34 @@ public interface ISettingsPanel {
*/ */
public IEvent getSetVariantChildrenEvent(); public IEvent getSetVariantChildrenEvent();
/**
* Emitted when the user wants to go back to the panel before
*
* @return the event
*/
public IEvent getBackEvent(); public IEvent getBackEvent();
/**
* Sets the types of players allowed at the given point in game
*
* @param choices
* list of types for each player
*/
public void setPlayerTypeChoices(List<List<Type>> choices); public void setPlayerTypeChoices(List<List<Type>> choices);
/**
* Sets the names of players editable if allowed at the given point in game
*
* @param editable
* states if the players name is editable for each player
*/
public void setPlayerNamesEditable(List<Boolean> editable); public void setPlayerNamesEditable(List<Boolean> editable);
/**
* Emitted when a new game is started and looking for players
*
* @return the event
*/
public IEvent getOfferGameEvent(); public IEvent getOfferGameEvent();
/** /**

View file

@ -23,6 +23,7 @@ import javax.swing.border.LineBorder;
import jrummikub.util.Event; import jrummikub.util.Event;
import jrummikub.util.Event1; import jrummikub.util.Event1;
import jrummikub.util.GameData;
import jrummikub.util.IEvent; import jrummikub.util.IEvent;
import jrummikub.util.IEvent1; import jrummikub.util.IEvent1;
import jrummikub.view.IGameListPanel; import jrummikub.view.IGameListPanel;