Fix SettingsControl.checkSettings method length

git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@419 72836036-5685-4462-b002-a69064685172
This commit is contained in:
Matthias Schiffer 2011-06-13 17:19:26 +02:00
parent 9f2d3aa5cd
commit a4faa8db23

View file

@ -34,9 +34,9 @@ public class SettingsControl {
* Create a new settings control * Create a new settings control
* *
* @param view * @param view
* the view to use * the view to use
* @param settings * @param settings
* initial game settings * initial game settings
*/ */
public SettingsControl(IView view, GameSettings settings) { public SettingsControl(IView view, GameSettings settings) {
this.view = view; this.view = view;
@ -44,8 +44,8 @@ public class SettingsControl {
} }
/** /**
* the start game event is emitted when the user wants to start a game and * the start game event is emitted when the user wants to start a game and the
* the settings made are valid * settings made are valid
* *
* @return the event * @return the event
*/ */
@ -78,8 +78,7 @@ public class SettingsControl {
private void addOptionListeners1() { private void addOptionListeners1() {
connections.add(view.getSettingsPanel() connections.add(view.getSettingsPanel()
.getChangeInitialMeldThresholdEvent() .getChangeInitialMeldThresholdEvent().add(new IListener1<Integer>() {
.add(new IListener1<Integer>() {
@Override @Override
public void handle(Integer value) { public void handle(Integer value) {
settings.setInitialMeldThreshold(value); settings.setInitialMeldThreshold(value);
@ -104,8 +103,7 @@ public class SettingsControl {
update(); update();
} }
})); }));
connections.add(view.getSettingsPanel() connections.add(view.getSettingsPanel().getChangeNumberOfStonesDealtEvent()
.getChangeNumberOfStonesDealtEvent()
.add(new IListener1<Integer>() { .add(new IListener1<Integer>() {
@Override @Override
public void handle(Integer value) { public void handle(Integer value) {
@ -248,8 +246,7 @@ public class SettingsControl {
break; break;
} }
settings.getPlayerList().add( settings.getPlayerList().add(new PlayerSettings("Spieler " + num, color));
new PlayerSettings("Spieler " + num, color));
update(); update();
} }
@ -290,9 +287,8 @@ public class SettingsControl {
protected void update() { protected void update() {
view.getSettingsPanel().enableRemovePlayerButtons( view.getSettingsPanel().enableRemovePlayerButtons(
settings.getPlayerList().size() > 2); settings.getPlayerList().size() > 2);
view.getSettingsPanel() view.getSettingsPanel().enableAddPlayerButton(
.enableAddPlayerButton( settings.getPlayerList().size() < ISettingsPanel.PLAYER_COLORS.length);
settings.getPlayerList().size() < ISettingsPanel.PLAYER_COLORS.length);
checkSettings(); checkSettings();
@ -300,6 +296,19 @@ public class SettingsControl {
} }
private boolean checkSettings() { private boolean checkSettings() {
if (!checkErrors()) {
return false;
}
view.getSettingsPanel().setError(ISettingsPanel.SettingsError.NO_ERROR);
view.getSettingsPanel().enableStartGameButton(true);
checkWarnings();
return true;
}
private boolean checkErrors() {
for (PlayerSettings player : settings.getPlayerList()) { for (PlayerSettings player : settings.getPlayerList()) {
if (player.getName().isEmpty()) { if (player.getName().isEmpty()) {
view.getSettingsPanel().setError( view.getSettingsPanel().setError(
@ -313,9 +322,8 @@ 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() view.getSettingsPanel().setError(
.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;
} }
@ -324,8 +332,7 @@ public class SettingsControl {
int totalStonesDealt = settings.getNumberOfStonesDealt() int totalStonesDealt = settings.getNumberOfStonesDealt()
* settings.getPlayerList().size(); * settings.getPlayerList().size();
int totalStones = settings.getHighestValue() int totalStones = settings.getHighestValue() * settings.getStoneSetNumber()
* settings.getStoneSetNumber()
* settings.getStoneColors().size() + settings.getJokerNumber(); * settings.getStoneColors().size() + settings.getJokerNumber();
if (totalStones <= totalStonesDealt) { if (totalStones <= totalStonesDealt) {
@ -342,11 +349,6 @@ public class SettingsControl {
return false; return false;
} }
view.getSettingsPanel().setError(ISettingsPanel.SettingsError.NO_ERROR);
view.getSettingsPanel().enableStartGameButton(true);
checkWarnings();
return true; return true;
} }