1 package net.sourceforge.simplegamenet.specs.tools;
2
3 import net.sourceforge.simplegamenet.specs.gui.GameSettingsPanel;
4 import net.sourceforge.simplegamenet.specs.to.GameSettings;
5 import net.sourceforge.simplegamenet.specs.to.PlayerSettings;
6
7 public class TwoPlayerGameSettings extends GameSettings {
8
9 private int maximumConnectionsAmount;
10
11 private int minimumMaximumConnectionsAmount;
12 private int maximumMaximumConnectionsAmount;
13
14 public TwoPlayerGameSettings() {
15 this(8, 2, 8);
16 }
17
18 public TwoPlayerGameSettings(int defaultMaximumConnectionsAmount)
19 throws IllegalArgumentException {
20 this(defaultMaximumConnectionsAmount, 2, defaultMaximumConnectionsAmount);
21 }
22
23 public TwoPlayerGameSettings(int defaultMaximumConnectionsAmount,
24 int minimumMaximumConnectionsAmount,
25 int maximumMaximumConnectionsAmount) {
26 this.maximumConnectionsAmount = defaultMaximumConnectionsAmount;
27 this.minimumMaximumConnectionsAmount = minimumMaximumConnectionsAmount;
28 this.maximumMaximumConnectionsAmount = maximumMaximumConnectionsAmount;
29 }
30
31 public GameSettingsPanel createGameSettingsPanel() {
32 return new TwoPlayerGameSettingsPanel(maximumConnectionsAmount,
33 minimumMaximumConnectionsAmount,
34 maximumMaximumConnectionsAmount);
35 }
36
37 public GameSettings createChangedGameSettings(GameSettingsPanel gameSettingsPanel) {
38 TwoPlayerGameSettingsPanel twoPlayerGameSettingsPanel =
39 (TwoPlayerGameSettingsPanel) gameSettingsPanel;
40 return new TwoPlayerGameSettings(twoPlayerGameSettingsPanel.getMaximumConnectionsAmount(),
41 minimumMaximumConnectionsAmount, maximumMaximumConnectionsAmount);
42 }
43
44 public boolean isChangeGameSettingsAllowed(GameSettings changedGameSettings) {
45 TwoPlayerGameSettings changedTwoPlayerGameSettings = (TwoPlayerGameSettings)
46 changedGameSettings;
47 if (engine.getPlayerSettingsMap().getConnectionsAmount()
48 > changedTwoPlayerGameSettings.maximumConnectionsAmount) {
49 return false;
50 } else {
51 return true;
52 }
53 }
54
55 public boolean isCreateDefaultPlayerSettingsAllowed(int playerType) {
56 if (engine.getPlayerSettingsMap().getConnectionsAmount()
57 >= maximumConnectionsAmount) {
58 return false;
59 }
60 return true;
61 }
62
63 public PlayerSettings createDefaultPlayerSettings(Integer playerID, int playerType,
64 String nickname) {
65 int playingState = engine.isGamePlaying() ? PlayerSettings.OBSERVING
66 : PlayerSettings.PARTICIPATING;
67 if (engine.getPlayerSettingsMap().getParticipantsAmount() > 1) {
68 playingState = PlayerSettings.OBSERVING;
69 }
70 return new StandardPlayerSettings(engine, playerID, playerType, nickname,
71 playingState);
72 }
73
74 public boolean isChangePlayerSettingsAllowed(PlayerSettings currentPlayerSettings,
75 PlayerSettings changedPlayerSettings) {
76 if (currentPlayerSettings.getPlayingState() == PlayerSettings.OBSERVING
77 && changedPlayerSettings.getPlayingState() == PlayerSettings.PARTICIPATING
78 && engine.getPlayerSettingsMap().getParticipantsAmount() >= 2) {
79 return false;
80 } else {
81 return true;
82 }
83 }
84
85 public boolean isStartGameAllowed() {
86 if (engine.getPlayerSettingsMap().getParticipantsAmount() < 2) {
87 return false;
88 }
89 return true;
90 }
91
92 public int getMaximumConnectionsAmount() {
93 return maximumConnectionsAmount;
94 }
95
96 public void setMaximumConnectionsAmount(int maximumConnectionsAmount) {
97 this.maximumConnectionsAmount = maximumConnectionsAmount;
98 }
99
100 public int getMinimumMaximumConnectionsAmount() {
101 return minimumMaximumConnectionsAmount;
102 }
103
104 public void setMinimumMaximumConnectionsAmount(int minimumMaximumConnectionsAmount) {
105 this.minimumMaximumConnectionsAmount = minimumMaximumConnectionsAmount;
106 }
107
108 public int getMaximumMaximumConnectionsAmount() {
109 return maximumMaximumConnectionsAmount;
110 }
111
112 public void setMaximumMaximumConnectionsAmount(int maximumMaximumConnectionsAmount) {
113 this.maximumMaximumConnectionsAmount = maximumMaximumConnectionsAmount;
114 }
115
116 }