Tested and implemented player type selection in the settings panel
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@317 72836036-5685-4462-b002-a69064685172
This commit is contained in:
parent
d9b651828a
commit
f3f52956f7
5 changed files with 59 additions and 5 deletions
|
@ -2,6 +2,8 @@ package jrummikub.view;
|
|||
|
||||
import java.awt.Color;
|
||||
|
||||
import jrummikub.control.turn.TurnControlFactory;
|
||||
import jrummikub.control.turn.TurnControlFactory.Type;
|
||||
import jrummikub.model.GameSettings;
|
||||
import jrummikub.util.IEvent;
|
||||
import jrummikub.util.IEvent1;
|
||||
|
@ -21,6 +23,8 @@ public class MockSettingsPanel implements ISettingsPanel {
|
|||
public MockEvent2<Integer, Color> changePlayerColorEvent = new MockEvent2<Integer, Color>();
|
||||
/** */
|
||||
public MockEvent2<Integer, String> changePlayerNameEvent = new MockEvent2<Integer, String>();
|
||||
/** */
|
||||
public MockEvent2<Integer, TurnControlFactory.Type> changePlayerTypeEvent = new MockEvent2<Integer, TurnControlFactory.Type>();
|
||||
/** */
|
||||
public MockEvent startGameEvent = new MockEvent();
|
||||
/** */
|
||||
|
@ -43,7 +47,6 @@ public class MockSettingsPanel implements ISettingsPanel {
|
|||
public int initialMeldThreshold;
|
||||
/** */
|
||||
public int jokerNumber;
|
||||
|
||||
@Override
|
||||
public IEvent getAddPlayerEvent() {
|
||||
return addPlayerEvent;
|
||||
|
@ -119,4 +122,9 @@ public class MockSettingsPanel implements ISettingsPanel {
|
|||
this.jokerNumber = jokerNumber;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IEvent2<Integer, Type> getChangePlayerTypeEvent() {
|
||||
return changePlayerTypeEvent;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -4,6 +4,8 @@ import java.awt.Color;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import jrummikub.control.turn.TurnControlFactory;
|
||||
import jrummikub.control.turn.TurnControlFactory.Type;
|
||||
import jrummikub.model.GameSettings;
|
||||
import jrummikub.model.PlayerSettings;
|
||||
import jrummikub.util.Connection;
|
||||
|
@ -118,6 +120,13 @@ public class SettingsControl {
|
|||
setPlayerName(i, name);
|
||||
}
|
||||
}));
|
||||
connections.add(view.getSettingsPanel().getChangePlayerTypeEvent()
|
||||
.add(new IListener2<Integer, TurnControlFactory.Type>() {
|
||||
@Override
|
||||
public void handle(Integer i, TurnControlFactory.Type type) {
|
||||
setPlayerType(i, type);
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
private void addPlayer() {
|
||||
|
@ -186,6 +195,11 @@ public class SettingsControl {
|
|||
update();
|
||||
}
|
||||
|
||||
private void setPlayerType(Integer i, Type type) {
|
||||
settings.getPlayerList().get(i).setTurnControlType(type);
|
||||
update();
|
||||
}
|
||||
|
||||
private void update() {
|
||||
view.getSettingsPanel().enableRemovePlayerButtons(
|
||||
settings.getPlayerList().size() > 2);
|
||||
|
|
|
@ -2,6 +2,8 @@ package jrummikub.view;
|
|||
|
||||
import java.awt.Color;
|
||||
|
||||
import jrummikub.control.turn.TurnControlFactory;
|
||||
import jrummikub.control.turn.TurnControlFactory.Type;
|
||||
import jrummikub.model.GameSettings;
|
||||
import jrummikub.util.IEvent;
|
||||
import jrummikub.util.IEvent1;
|
||||
|
@ -64,6 +66,14 @@ public interface ISettingsPanel {
|
|||
*/
|
||||
public IEvent2<Integer, String> getChangePlayerNameEvent();
|
||||
|
||||
/**
|
||||
* The change player color event is emitted when the user wants change a
|
||||
* player's type
|
||||
*
|
||||
* @return the event
|
||||
*/
|
||||
public IEvent2<Integer, TurnControlFactory.Type> getChangePlayerTypeEvent();
|
||||
|
||||
/**
|
||||
* The change initial meld threshold event is emitted when the user wants
|
||||
* change the initial meld threshold
|
||||
|
|
|
@ -41,6 +41,7 @@ import javax.swing.event.DocumentEvent;
|
|||
import javax.swing.event.DocumentListener;
|
||||
|
||||
import jrummikub.control.turn.TurnControlFactory;
|
||||
import jrummikub.control.turn.TurnControlFactory.Type;
|
||||
import jrummikub.model.GameSettings;
|
||||
import jrummikub.model.PlayerSettings;
|
||||
import jrummikub.util.Event;
|
||||
|
@ -312,10 +313,12 @@ class SettingsPanel extends JPanel implements ISettingsPanel {
|
|||
nameField.setText(settings.getName());
|
||||
}
|
||||
// playerType.setSelectedIndex(0);
|
||||
playerType.setSelectedIndex(Arrays.binarySearch(
|
||||
int index = Arrays.binarySearch(
|
||||
TurnControlFactory.Type.values(),
|
||||
settings.getTurnControlType()));
|
||||
|
||||
settings.getTurnControlType());
|
||||
if (index != playerType.getSelectedIndex()) {
|
||||
playerType.setSelectedIndex(index);
|
||||
}
|
||||
colorButton.setIcon(ImageUtil.createColorIcon(settings.getColor(),
|
||||
16, 2));
|
||||
}
|
||||
|
@ -494,4 +497,9 @@ class SettingsPanel extends JPanel implements ISettingsPanel {
|
|||
public void setJokerNumber(int jokerNumber) {
|
||||
jokerNumberSpinner.setValue(jokerNumber);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IEvent2<Integer, Type> getChangePlayerTypeEvent() {
|
||||
return changePlayerTypeEvent;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ import static org.junit.Assert.*;
|
|||
|
||||
import java.awt.Color;
|
||||
|
||||
import jrummikub.control.turn.TurnControlFactory;
|
||||
import jrummikub.model.GameSettings;
|
||||
import jrummikub.util.IListener1;
|
||||
import jrummikub.view.ISettingsPanel;
|
||||
|
@ -194,5 +195,18 @@ public class SettingsControlTest {
|
|||
view.settingsPanel.startGameEvent.emit();
|
||||
assertEquals(25, gameSettings.getJokerNumber());
|
||||
}
|
||||
|
||||
|
||||
/** */
|
||||
@Test
|
||||
public void typeChangeTest() {
|
||||
view.settingsPanel.changePlayerTypeEvent.emit(0, TurnControlFactory.Type.COMPUTER);
|
||||
view.settingsPanel.changePlayerTypeEvent.emit(1, TurnControlFactory.Type.COMPUTER);
|
||||
view.settingsPanel.changePlayerTypeEvent.emit(1, TurnControlFactory.Type.HUMAN);
|
||||
view.settingsPanel.startGameEvent.emit();
|
||||
assertNotNull(gameSettings);
|
||||
assertEquals(2, gameSettings.getPlayerList().size());
|
||||
assertSame(TurnControlFactory.Type.COMPUTER, gameSettings.getPlayerList().get(0).getTurnControlType());
|
||||
assertSame(TurnControlFactory.Type.HUMAN, gameSettings.getPlayerList().get(1).getTurnControlType());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Reference in a new issue