Warnings tauchen auf, wenn man beim Einstellen Unfug macht
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@325 72836036-5685-4462-b002-a69064685172
This commit is contained in:
parent
498c2529bd
commit
ae9ce59d36
5 changed files with 96 additions and 19 deletions
|
@ -216,7 +216,7 @@ public class SettingsControl {
|
||||||
for (PlayerSettings player : settings.getPlayerList()) {
|
for (PlayerSettings player : settings.getPlayerList()) {
|
||||||
if (player.getName().isEmpty()) {
|
if (player.getName().isEmpty()) {
|
||||||
view.getSettingsPanel().setError(
|
view.getSettingsPanel().setError(
|
||||||
ISettingsPanel.SettingsError.NO_PLAYER_NAME);
|
ISettingsPanel.SettingsError.NO_PLAYER_NAME_ERROR);
|
||||||
view.getSettingsPanel().enableStartGameButton(false);
|
view.getSettingsPanel().enableStartGameButton(false);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -226,16 +226,50 @@ public class SettingsControl {
|
||||||
|
|
||||||
for (int j = i + 1; j < settings.getPlayerList().size(); ++j) {
|
for (int j = i + 1; j < settings.getPlayerList().size(); ++j) {
|
||||||
if (settings.getPlayerList().get(j).getName().equals(name)) {
|
if (settings.getPlayerList().get(j).getName().equals(name)) {
|
||||||
view.getSettingsPanel().setError(
|
view.getSettingsPanel()
|
||||||
ISettingsPanel.SettingsError.DUPLICATE_PLAYER_NAME);
|
.setError(
|
||||||
|
ISettingsPanel.SettingsError.DUPLICATE_PLAYER_NAME_ERROR);
|
||||||
view.getSettingsPanel().enableStartGameButton(false);
|
view.getSettingsPanel().enableStartGameButton(false);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int totalStonesDealt = settings.getNumberOfStonesDealt()
|
||||||
|
* settings.getPlayerList().size();
|
||||||
|
int totalStones = settings.getHighestCard() * settings.getStoneSetNumber()
|
||||||
|
* settings.getStoneColors().size() + settings.getJokerNumber();
|
||||||
|
|
||||||
|
if (totalStones <= totalStonesDealt) {
|
||||||
|
view.getSettingsPanel().setError(
|
||||||
|
ISettingsPanel.SettingsError.NOT_ENOUGH_STONES_ERROR);
|
||||||
|
view.getSettingsPanel().enableStartGameButton(false);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
view.getSettingsPanel().setError(ISettingsPanel.SettingsError.NO_ERROR);
|
view.getSettingsPanel().setError(ISettingsPanel.SettingsError.NO_ERROR);
|
||||||
view.getSettingsPanel().enableStartGameButton(true);
|
view.getSettingsPanel().enableStartGameButton(true);
|
||||||
|
|
||||||
|
if (settings.getInitialMeldThreshold() >= 100) {
|
||||||
|
view.getSettingsPanel().setError(
|
||||||
|
ISettingsPanel.SettingsError.TOO_HIGH_THRESHOLD_WARNING);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean humanPlayerFound = false;
|
||||||
|
for (PlayerSettings player : settings.getPlayerList()) {
|
||||||
|
if (player.getTurnControlType() == TurnControlFactory.Type.HUMAN) {
|
||||||
|
humanPlayerFound = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!humanPlayerFound) {
|
||||||
|
view.getSettingsPanel().setError(
|
||||||
|
ISettingsPanel.SettingsError.COMPUTER_PLAYERS_ONLY_WARNING);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,8 @@ public class GameSettings {
|
||||||
private int jokerPoints;
|
private int jokerPoints;
|
||||||
private int jokerNumber;
|
private int jokerNumber;
|
||||||
private int highestCard;
|
private int highestCard;
|
||||||
private int stoneSets;
|
private int stoneSetNumber;
|
||||||
|
private int numberOfStonesDealt;
|
||||||
private boolean noLimits;
|
private boolean noLimits;
|
||||||
private Set<StoneColor> stoneColors;
|
private Set<StoneColor> stoneColors;
|
||||||
|
|
||||||
|
@ -29,7 +30,8 @@ public class GameSettings {
|
||||||
jokerPoints = 50;
|
jokerPoints = 50;
|
||||||
jokerNumber = 2;
|
jokerNumber = 2;
|
||||||
highestCard = 13;
|
highestCard = 13;
|
||||||
stoneSets = 2;
|
stoneSetNumber = 2;
|
||||||
|
numberOfStonesDealt = 14;
|
||||||
noLimits = false;
|
noLimits = false;
|
||||||
stoneColors = new HashSet<StoneColor>(Arrays.asList(BLACK, BLUE,
|
stoneColors = new HashSet<StoneColor>(Arrays.asList(BLACK, BLUE,
|
||||||
ORANGE, RED));
|
ORANGE, RED));
|
||||||
|
@ -124,8 +126,8 @@ public class GameSettings {
|
||||||
*
|
*
|
||||||
* @return sets of stones in use
|
* @return sets of stones in use
|
||||||
*/
|
*/
|
||||||
public int getStoneSets() {
|
public int getStoneSetNumber() {
|
||||||
return stoneSets;
|
return stoneSetNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -134,8 +136,8 @@ public class GameSettings {
|
||||||
* @param stoneSets
|
* @param stoneSets
|
||||||
* sets of stones in use
|
* sets of stones in use
|
||||||
*/
|
*/
|
||||||
public void setStoneSets(int stoneSets) {
|
public void setStoneSetNumber(int stoneSets) {
|
||||||
this.stoneSets = stoneSets;
|
this.stoneSetNumber = stoneSets;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -175,4 +177,22 @@ public class GameSettings {
|
||||||
public void setStoneColors(Set<StoneColor> stoneColors) {
|
public void setStoneColors(Set<StoneColor> stoneColors) {
|
||||||
this.stoneColors = stoneColors;
|
this.stoneColors = stoneColors;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get number of stones dealt at game start
|
||||||
|
*
|
||||||
|
* @return numberOfStonesDealt
|
||||||
|
*/
|
||||||
|
public int getNumberOfStonesDealt() {
|
||||||
|
return numberOfStonesDealt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set number of stones dealt at game start
|
||||||
|
*
|
||||||
|
* @param number
|
||||||
|
*/
|
||||||
|
public void setNumberOfStonesDealt(int number) {
|
||||||
|
numberOfStonesDealt = number;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -136,9 +136,17 @@ public interface ISettingsPanel {
|
||||||
/** Everything is ok */
|
/** Everything is ok */
|
||||||
NO_ERROR,
|
NO_ERROR,
|
||||||
/** A player name is used twice */
|
/** A player name is used twice */
|
||||||
DUPLICATE_PLAYER_NAME,
|
DUPLICATE_PLAYER_NAME_ERROR,
|
||||||
/** A player has an empty name */
|
/** A player has an empty name */
|
||||||
NO_PLAYER_NAME
|
NO_PLAYER_NAME_ERROR,
|
||||||
|
/** More Stones than present would be dealed */
|
||||||
|
NOT_ENOUGH_STONES_ERROR,
|
||||||
|
|
||||||
|
// warnings
|
||||||
|
/** threshold higher 100 */
|
||||||
|
TOO_HIGH_THRESHOLD_WARNING,
|
||||||
|
/** Only computer players added */
|
||||||
|
COMPUTER_PLAYERS_ONLY_WARNING
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -112,14 +112,31 @@ class SettingsPanel extends JPanel implements ISettingsPanel {
|
||||||
case NO_ERROR:
|
case NO_ERROR:
|
||||||
errorMessageLabel.setText(" ");
|
errorMessageLabel.setText(" ");
|
||||||
break;
|
break;
|
||||||
case DUPLICATE_PLAYER_NAME:
|
case DUPLICATE_PLAYER_NAME_ERROR:
|
||||||
errorMessageLabel
|
errorMessageLabel
|
||||||
.setText("Jeder Spielername darf nur einmal verwendet werden.");
|
.setText("Jeder Spielername darf nur einmal verwendet werden.");
|
||||||
|
errorMessageLabel.setForeground(Color.RED);
|
||||||
break;
|
break;
|
||||||
case NO_PLAYER_NAME:
|
case NO_PLAYER_NAME_ERROR:
|
||||||
errorMessageLabel.setText("Jeder Spieler muss einen Namen haben.");
|
errorMessageLabel.setText("Jeder Spieler muss einen Namen haben.");
|
||||||
|
errorMessageLabel.setForeground(Color.RED);
|
||||||
|
break;
|
||||||
|
case NOT_ENOUGH_STONES_ERROR:
|
||||||
|
errorMessageLabel
|
||||||
|
.setText("Es gibt nicht genug Steine f\u00fcr die gew\u00e4hlte Spieleranzahl.");
|
||||||
|
errorMessageLabel.setForeground(Color.RED);
|
||||||
|
break;
|
||||||
|
case COMPUTER_PLAYERS_ONLY_WARNING:
|
||||||
|
errorMessageLabel.setText("Es gibt keinen menschlichen Spieler.");
|
||||||
|
errorMessageLabel.setForeground(Color.ORANGE.darker());
|
||||||
|
break;
|
||||||
|
case TOO_HIGH_THRESHOLD_WARNING:
|
||||||
|
errorMessageLabel
|
||||||
|
.setText("Die gew\u00e4hlte Schranke ist m\u00f6glicherweise zu hoch");
|
||||||
|
errorMessageLabel.setForeground(Color.ORANGE.darker());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -284,7 +301,6 @@ class SettingsPanel extends JPanel implements ISettingsPanel {
|
||||||
add(tabbedPane, c);
|
add(tabbedPane, c);
|
||||||
|
|
||||||
errorMessageLabel = new JLabel(" ");
|
errorMessageLabel = new JLabel(" ");
|
||||||
errorMessageLabel.setForeground(Color.RED);
|
|
||||||
c.weighty = 0;
|
c.weighty = 0;
|
||||||
add(errorMessageLabel, c);
|
add(errorMessageLabel, c);
|
||||||
|
|
||||||
|
@ -313,8 +329,7 @@ class SettingsPanel extends JPanel implements ISettingsPanel {
|
||||||
nameField.setText(settings.getName());
|
nameField.setText(settings.getName());
|
||||||
}
|
}
|
||||||
// playerType.setSelectedIndex(0);
|
// playerType.setSelectedIndex(0);
|
||||||
int index = Arrays.binarySearch(
|
int index = Arrays.binarySearch(TurnControlFactory.Type.values(),
|
||||||
TurnControlFactory.Type.values(),
|
|
||||||
settings.getTurnControlType());
|
settings.getTurnControlType());
|
||||||
if (index != playerType.getSelectedIndex()) {
|
if (index != playerType.getSelectedIndex()) {
|
||||||
playerType.setSelectedIndex(index);
|
playerType.setSelectedIndex(index);
|
||||||
|
|
|
@ -131,7 +131,7 @@ public class SettingsControlTest {
|
||||||
view.settingsPanel.changePlayerNameEvent.emit(1, name1);
|
view.settingsPanel.changePlayerNameEvent.emit(1, name1);
|
||||||
|
|
||||||
assertFalse(view.settingsPanel.startButtonEnabled);
|
assertFalse(view.settingsPanel.startButtonEnabled);
|
||||||
assertSame(ISettingsPanel.SettingsError.DUPLICATE_PLAYER_NAME,
|
assertSame(ISettingsPanel.SettingsError.DUPLICATE_PLAYER_NAME_ERROR,
|
||||||
view.settingsPanel.error);
|
view.settingsPanel.error);
|
||||||
|
|
||||||
view.settingsPanel.startGameEvent.emit();
|
view.settingsPanel.startGameEvent.emit();
|
||||||
|
@ -146,7 +146,7 @@ public class SettingsControlTest {
|
||||||
view.settingsPanel.changePlayerNameEvent.emit(1, name1);
|
view.settingsPanel.changePlayerNameEvent.emit(1, name1);
|
||||||
|
|
||||||
assertFalse(view.settingsPanel.startButtonEnabled);
|
assertFalse(view.settingsPanel.startButtonEnabled);
|
||||||
assertSame(ISettingsPanel.SettingsError.DUPLICATE_PLAYER_NAME,
|
assertSame(ISettingsPanel.SettingsError.DUPLICATE_PLAYER_NAME_ERROR,
|
||||||
view.settingsPanel.error);
|
view.settingsPanel.error);
|
||||||
|
|
||||||
view.settingsPanel.startGameEvent.emit();
|
view.settingsPanel.startGameEvent.emit();
|
||||||
|
@ -169,7 +169,7 @@ public class SettingsControlTest {
|
||||||
view.settingsPanel.changePlayerNameEvent.emit(0, name1);
|
view.settingsPanel.changePlayerNameEvent.emit(0, name1);
|
||||||
|
|
||||||
assertFalse(view.settingsPanel.startButtonEnabled);
|
assertFalse(view.settingsPanel.startButtonEnabled);
|
||||||
assertSame(ISettingsPanel.SettingsError.NO_PLAYER_NAME,
|
assertSame(ISettingsPanel.SettingsError.NO_PLAYER_NAME_ERROR,
|
||||||
view.settingsPanel.error);
|
view.settingsPanel.error);
|
||||||
|
|
||||||
view.settingsPanel.startGameEvent.emit();
|
view.settingsPanel.startGameEvent.emit();
|
||||||
|
|
Reference in a new issue