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:
parent
570187c950
commit
f5a05f2c8d
12 changed files with 231 additions and 70 deletions
|
@ -1,5 +1,6 @@
|
|||
package jrummikub.view;
|
||||
|
||||
import jrummikub.util.GameData;
|
||||
import jrummikub.util.IEvent;
|
||||
import jrummikub.util.IEvent1;
|
||||
import jrummikub.util.MockEvent;
|
||||
|
|
|
@ -35,9 +35,9 @@ public class SettingsControl {
|
|||
* Create a new settings control
|
||||
*
|
||||
* @param view
|
||||
* the view to use
|
||||
* the view to use
|
||||
* @param settings
|
||||
* initial game settings
|
||||
* initial game settings
|
||||
*/
|
||||
public SettingsControl(IView view, GameSettings settings) {
|
||||
this.view = view;
|
||||
|
@ -71,8 +71,8 @@ public class SettingsControl {
|
|||
}
|
||||
|
||||
/**
|
||||
* the start game event is emitted when the user wants to start a game and the
|
||||
* settings made are valid
|
||||
* the start game event is emitted when the user wants to start a game and
|
||||
* the settings made are valid
|
||||
*
|
||||
* @return the event
|
||||
*/
|
||||
|
@ -89,7 +89,8 @@ public class SettingsControl {
|
|||
|
||||
private void addOptionListeners1() {
|
||||
connections.add(view.getSettingsPanel()
|
||||
.getChangeInitialMeldThresholdEvent().add(new IListener1<Integer>() {
|
||||
.getChangeInitialMeldThresholdEvent()
|
||||
.add(new IListener1<Integer>() {
|
||||
@Override
|
||||
public void handle(Integer value) {
|
||||
settings.setInitialMeldThreshold(value);
|
||||
|
@ -114,7 +115,8 @@ public class SettingsControl {
|
|||
update();
|
||||
}
|
||||
}));
|
||||
connections.add(view.getSettingsPanel().getChangeNumberOfStonesDealtEvent()
|
||||
connections.add(view.getSettingsPanel()
|
||||
.getChangeNumberOfStonesDealtEvent()
|
||||
.add(new IListener1<Integer>() {
|
||||
@Override
|
||||
public void handle(Integer value) {
|
||||
|
@ -303,8 +305,9 @@ public class SettingsControl {
|
|||
view.getSettingsPanel().enableRemovePlayerButtons(
|
||||
Collections.nCopies(settings.getPlayerList().size(),
|
||||
enableRemoveButtons));
|
||||
view.getSettingsPanel().enableAddPlayerButton(
|
||||
settings.getPlayerList().size() < ISettingsPanel.PLAYER_COLORS.length);
|
||||
view.getSettingsPanel()
|
||||
.enableAddPlayerButton(
|
||||
settings.getPlayerList().size() < ISettingsPanel.PLAYER_COLORS.length);
|
||||
|
||||
checkSettings();
|
||||
|
||||
|
@ -317,6 +320,9 @@ public class SettingsControl {
|
|||
}
|
||||
|
||||
protected boolean checkSettings() {
|
||||
if (!checkName()) {
|
||||
return false;
|
||||
}
|
||||
if (!checkErrors()) {
|
||||
return false;
|
||||
}
|
||||
|
@ -329,7 +335,7 @@ public class SettingsControl {
|
|||
return true;
|
||||
}
|
||||
|
||||
private boolean checkErrors() {
|
||||
private boolean checkName() {
|
||||
for (PlayerSettings player : settings.getPlayerList()) {
|
||||
if (player.getName().isEmpty()) {
|
||||
view.getSettingsPanel().setError(
|
||||
|
@ -350,17 +356,22 @@ public class SettingsControl {
|
|||
for (int j = i + 1; j < settings.getPlayerList().size(); ++j) {
|
||||
PlayerSettings player2 = settings.getPlayerList().get(j);
|
||||
if (player2.getName().equals(name) && player2.getType() == type) {
|
||||
view.getSettingsPanel().setError(
|
||||
ISettingsPanel.SettingsError.DUPLICATE_PLAYER_NAME_ERROR);
|
||||
view.getSettingsPanel()
|
||||
.setError(
|
||||
ISettingsPanel.SettingsError.DUPLICATE_PLAYER_NAME_ERROR);
|
||||
view.getSettingsPanel().enableStartGameButton(false);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean checkErrors() {
|
||||
int totalStonesDealt = settings.getNumberOfStonesDealt()
|
||||
* settings.getPlayerList().size();
|
||||
int totalStones = settings.getHighestValue() * settings.getStoneSetNumber()
|
||||
int totalStones = settings.getHighestValue()
|
||||
* settings.getStoneSetNumber()
|
||||
* settings.getStoneColors().size() + settings.getJokerNumber();
|
||||
|
||||
if (totalStones <= totalStonesDealt) {
|
||||
|
|
|
@ -7,10 +7,10 @@ import javax.swing.SwingUtilities;
|
|||
import jrummikub.model.GameSettings;
|
||||
import jrummikub.util.Event;
|
||||
import jrummikub.util.Event1;
|
||||
import jrummikub.util.GameData;
|
||||
import jrummikub.util.IEvent;
|
||||
import jrummikub.util.IEvent1;
|
||||
import jrummikub.util.LoginData;
|
||||
import jrummikub.view.IGameListPanel.GameData;
|
||||
|
||||
import org.jivesoftware.smack.Connection;
|
||||
import org.jivesoftware.smack.PacketListener;
|
||||
|
|
|
@ -9,12 +9,11 @@ import java.util.UUID;
|
|||
import jrummikub.model.GameSettings;
|
||||
import jrummikub.util.Connection;
|
||||
import jrummikub.util.Event;
|
||||
import jrummikub.util.GameData;
|
||||
import jrummikub.util.IEvent;
|
||||
import jrummikub.util.IListener;
|
||||
import jrummikub.util.IListener1;
|
||||
import jrummikub.util.LoginData;
|
||||
import jrummikub.view.IGameListPanel;
|
||||
import jrummikub.view.IGameListPanel.GameData;
|
||||
import jrummikub.view.IView;
|
||||
|
||||
/**
|
||||
|
@ -45,7 +44,7 @@ public class NetworkControl {
|
|||
addConnectionControlListeners(loginData, view);
|
||||
|
||||
connections.add(view.getGameListPanel().getJoinEvent()
|
||||
.add(new IListener1<IGameListPanel.GameData>() {
|
||||
.add(new IListener1<GameData>() {
|
||||
@Override
|
||||
public void handle(GameData value) {
|
||||
// TODO Auto-generated method stub
|
||||
|
@ -107,7 +106,7 @@ public class NetworkControl {
|
|||
}));
|
||||
|
||||
connections.add(connectionControl.getGameOfferEvent().add(
|
||||
new IListener1<IGameListPanel.GameData>() {
|
||||
new IListener1<GameData>() {
|
||||
@Override
|
||||
public void handle(GameData value) {
|
||||
GameData game = gameMap.get(value.getGameID());
|
||||
|
|
|
@ -21,12 +21,12 @@ public class NetworkSettingsControl extends SettingsControl {
|
|||
/**
|
||||
* Creates a new network settings control
|
||||
*
|
||||
* @param connectionControl
|
||||
* for gameOffers
|
||||
* @param nickname
|
||||
* to be set as player name
|
||||
* @param view
|
||||
* for events and handlers
|
||||
* for events and handlers
|
||||
* @param settings
|
||||
* for playerNumber, color...
|
||||
* for playerNumber, color...
|
||||
*/
|
||||
public NetworkSettingsControl(String nickname, IView view,
|
||||
GameSettings settings) {
|
||||
|
@ -45,8 +45,9 @@ public class NetworkSettingsControl extends SettingsControl {
|
|||
|
||||
@Override
|
||||
protected void update() {
|
||||
view.getSettingsPanel().enableAddPlayerButton(
|
||||
settings.getPlayerList().size() < ISettingsPanel.PLAYER_COLORS.length);
|
||||
view.getSettingsPanel()
|
||||
.enableAddPlayerButton(
|
||||
settings.getPlayerList().size() < ISettingsPanel.PLAYER_COLORS.length);
|
||||
|
||||
checkSettings();
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@ package jrummikub.model;
|
|||
import java.awt.Color;
|
||||
import java.io.Serializable;
|
||||
|
||||
import jrummikub.control.turn.TurnControlFactory;
|
||||
|
||||
/**
|
||||
* The settings of a player
|
||||
*/
|
||||
|
|
81
src/jrummikub/util/GameData.java
Normal file
81
src/jrummikub/util/GameData.java
Normal 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;
|
||||
}
|
||||
}
|
|
@ -1,11 +1,26 @@
|
|||
package jrummikub.util;
|
||||
|
||||
/**
|
||||
* Data needed for the login in one data type (name, server, password, channel)
|
||||
*/
|
||||
public class LoginData {
|
||||
private String userName;
|
||||
private String serverName;
|
||||
private String password;
|
||||
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,
|
||||
String channelName) {
|
||||
this.userName = userName;
|
||||
|
@ -14,18 +29,38 @@ public class LoginData {
|
|||
this.channelName = channelName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for user name
|
||||
*
|
||||
* @return user name
|
||||
*/
|
||||
public String getUserName() {
|
||||
return userName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for server name
|
||||
*
|
||||
* @return server name
|
||||
*/
|
||||
public String getServerName() {
|
||||
return serverName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for password
|
||||
*
|
||||
* @return password
|
||||
*/
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for channel name
|
||||
*
|
||||
* @return channel name
|
||||
*/
|
||||
public String getChannelName() {
|
||||
return channelName;
|
||||
}
|
||||
|
|
|
@ -1,54 +1,55 @@
|
|||
package jrummikub.view;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import jrummikub.model.GameSettings;
|
||||
import jrummikub.util.GameData;
|
||||
import jrummikub.util.IEvent;
|
||||
import jrummikub.util.IEvent1;
|
||||
|
||||
/**
|
||||
* Panel showing all offered games in the chosen channel
|
||||
*/
|
||||
public interface IGameListPanel {
|
||||
public static class GameData {
|
||||
private UUID gameID;
|
||||
private String host;
|
||||
private GameSettings gameSettings;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Emitted when a new game is offered
|
||||
*
|
||||
* @return the event
|
||||
*/
|
||||
public IEvent getOpenNewGameEvent();
|
||||
|
||||
/**
|
||||
* Emitted when the network game is canceled
|
||||
*
|
||||
* @return the event
|
||||
*/
|
||||
public IEvent getCancelEvent();
|
||||
|
||||
/**
|
||||
* Emitted when the user chose to join an existing, open game
|
||||
*
|
||||
* @return the event
|
||||
*/
|
||||
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);
|
||||
|
||||
/**
|
||||
* Adds a game to the list of open games
|
||||
*
|
||||
* @param game
|
||||
* game data of the new game
|
||||
*/
|
||||
public void addGame(GameData game);
|
||||
|
||||
/**
|
||||
* Sets the channel name
|
||||
*
|
||||
* @param name
|
||||
* channel name
|
||||
*/
|
||||
public void setChannelName(String name);
|
||||
}
|
||||
|
|
|
@ -17,6 +17,11 @@ public interface ILoginPanel {
|
|||
*/
|
||||
public IEvent1<LoginData> getLoginEvent();
|
||||
|
||||
/**
|
||||
* Emitted when the user cancels the login process
|
||||
*
|
||||
* @return the event
|
||||
*/
|
||||
public IEvent getCancelEvent();
|
||||
|
||||
}
|
|
@ -36,11 +36,17 @@ public interface ISettingsPanel {
|
|||
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);
|
||||
|
||||
/**
|
||||
* The add player event is emitted when the user wants to add a player to the
|
||||
* player list
|
||||
* The add player event is emitted when the user wants to add a player to
|
||||
* the player list
|
||||
*
|
||||
* @return the event
|
||||
*/
|
||||
|
@ -87,8 +93,8 @@ public interface ISettingsPanel {
|
|||
public IEvent1<Integer> getChangeInitialMeldThresholdEvent();
|
||||
|
||||
/**
|
||||
* The change StoneSet number event is emitted when the user wants to use more
|
||||
* or less than 2 StoneSets per color
|
||||
* The change StoneSet number event is emitted when the user wants to use
|
||||
* more or less than 2 StoneSets per color
|
||||
*
|
||||
* @return number of SoneSets
|
||||
*/
|
||||
|
@ -129,7 +135,7 @@ public interface ISettingsPanel {
|
|||
* Sets an error to display
|
||||
*
|
||||
* @param error
|
||||
* the kind of error
|
||||
* the kind of error
|
||||
*/
|
||||
public void setError(SettingsError error);
|
||||
|
||||
|
@ -137,7 +143,7 @@ public interface ISettingsPanel {
|
|||
* Enables or disables the start game button
|
||||
*
|
||||
* @param enable
|
||||
* specifies if the button is to be enabled or disabled
|
||||
* specifies if the button is to be enabled or disabled
|
||||
*/
|
||||
public void enableStartGameButton(boolean enable);
|
||||
|
||||
|
@ -145,7 +151,7 @@ public interface ISettingsPanel {
|
|||
* Enables or disables the add player button
|
||||
*
|
||||
* @param enable
|
||||
* specifies if the button is to be enabled or disabled
|
||||
* specifies if the button is to be enabled or disabled
|
||||
*/
|
||||
public void enableAddPlayerButton(boolean enable);
|
||||
|
||||
|
@ -153,7 +159,7 @@ public interface ISettingsPanel {
|
|||
* Enables or disables the remove player buttons
|
||||
*
|
||||
* @param enable
|
||||
* specifies if the buttons are to be enabled or disabled
|
||||
* specifies if the buttons are to be enabled or disabled
|
||||
*/
|
||||
|
||||
public void enableRemovePlayerButtons(List<Boolean> enable);
|
||||
|
@ -162,7 +168,7 @@ public interface ISettingsPanel {
|
|||
* Sets the game settings to display
|
||||
*
|
||||
* @param gameSettings
|
||||
* the settings
|
||||
* the settings
|
||||
*/
|
||||
public void setGameSettings(GameSettings gameSettings);
|
||||
|
||||
|
@ -201,12 +207,34 @@ public interface ISettingsPanel {
|
|||
*/
|
||||
public IEvent getSetVariantChildrenEvent();
|
||||
|
||||
/**
|
||||
* Emitted when the user wants to go back to the panel before
|
||||
*
|
||||
* @return the event
|
||||
*/
|
||||
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);
|
||||
|
||||
/**
|
||||
* 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);
|
||||
|
||||
/**
|
||||
* Emitted when a new game is started and looking for players
|
||||
*
|
||||
* @return the event
|
||||
*/
|
||||
public IEvent getOfferGameEvent();
|
||||
|
||||
/**
|
||||
|
|
|
@ -23,6 +23,7 @@ import javax.swing.border.LineBorder;
|
|||
|
||||
import jrummikub.util.Event;
|
||||
import jrummikub.util.Event1;
|
||||
import jrummikub.util.GameData;
|
||||
import jrummikub.util.IEvent;
|
||||
import jrummikub.util.IEvent1;
|
||||
import jrummikub.view.IGameListPanel;
|
||||
|
|
Reference in a new issue