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 MultiPlayerGameSettings extends GameSettings {
8
9 private int minimumParticipantsAmount;
10
11 private int maximumParticipantsAmount;
12 private int maximumConnectionsAmount;
13
14 private int minimumMaximumParticipantsAmount;
15 private int maximumMaximumParticipantsAmount;
16 private int minimumMaximumConnectionsAmount;
17 private int maximumMaximumConnectionsAmount;
18
19 public MultiPlayerGameSettings() {
20 this(2, 2, 2, 8, 8, 2, 16);
21 }
22
23 public MultiPlayerGameSettings(int maximumParticipantsAmount, int maximumConnectionsAmount) {
24 this(2, maximumParticipantsAmount, 2, maximumParticipantsAmount,
25 maximumConnectionsAmount, 2, maximumConnectionsAmount);
26 }
27
28 public MultiPlayerGameSettings(int defaultMaximumParticipantsAmount,
29 int minimumMaximumParticipantsAmount,
30 int maximumMaximumParticipantsAmount,
31 int defaultMaximumConnectionsAmount,
32 int minimumMaximumConnectionsAmount,
33 int maximumMaximumConnectionsAmount) {
34 this(minimumMaximumParticipantsAmount,
35 defaultMaximumParticipantsAmount,
36 minimumMaximumParticipantsAmount, maximumMaximumParticipantsAmount,
37 defaultMaximumConnectionsAmount,
38 minimumMaximumConnectionsAmount, maximumMaximumConnectionsAmount);
39 }
40
41 public MultiPlayerGameSettings(int minimumParticipantsAmount,
42 int defaultMaximumParticipantsAmount,
43 int minimumMaximumParticipantsAmount,
44 int maximumMaximumParticipantsAmount,
45 int defaultMaximumConnectionsAmount,
46 int minimumMaximumConnectionsAmount,
47 int maximumMaximumConnectionsAmount) {
48 this.minimumParticipantsAmount = minimumParticipantsAmount;
49 this.maximumParticipantsAmount = defaultMaximumParticipantsAmount;
50 this.minimumMaximumParticipantsAmount = minimumMaximumParticipantsAmount;
51 this.maximumMaximumParticipantsAmount = maximumMaximumParticipantsAmount;
52 this.maximumConnectionsAmount = defaultMaximumConnectionsAmount;
53 this.minimumMaximumConnectionsAmount = minimumMaximumConnectionsAmount;
54 this.maximumMaximumConnectionsAmount = maximumMaximumConnectionsAmount;
55 }
56
57 public GameSettingsPanel createGameSettingsPanel() {
58 return new MultiPlayerGameSettingsPanel(maximumParticipantsAmount,
59 minimumMaximumParticipantsAmount,
60 maximumMaximumParticipantsAmount,
61 maximumConnectionsAmount,
62 minimumMaximumConnectionsAmount,
63 maximumMaximumConnectionsAmount);
64 }
65
66 public GameSettings createChangedGameSettings(GameSettingsPanel gameSettingsPanel) {
67 MultiPlayerGameSettingsPanel multiPlayerGameSettingsPanel =
68 (MultiPlayerGameSettingsPanel) gameSettingsPanel;
69 return new MultiPlayerGameSettings(minimumParticipantsAmount,
70 multiPlayerGameSettingsPanel.getMaximumParticipantsAmount(),
71 minimumMaximumParticipantsAmount, maximumMaximumParticipantsAmount,
72 multiPlayerGameSettingsPanel.getMaximumConnectionsAmount(),
73 minimumMaximumConnectionsAmount, maximumMaximumConnectionsAmount);
74 }
75
76 public boolean isChangeGameSettingsAllowed(GameSettings changedGameSettings) {
77 MultiPlayerGameSettings changedMultiPlayerGameSettings = (MultiPlayerGameSettings)
78 changedGameSettings;
79 if (engine.getPlayerSettingsMap().getConnectionsAmount()
80 > changedMultiPlayerGameSettings.maximumConnectionsAmount
81 || engine.getPlayerSettingsMap().getParticipantsAmount()
82 > changedMultiPlayerGameSettings.maximumParticipantsAmount) {
83 return false;
84 } else {
85 return true;
86 }
87 }
88
89 public boolean isCreateDefaultPlayerSettingsAllowed(int playerType) {
90 if (engine.getPlayerSettingsMap().getConnectionsAmount()
91 >= maximumConnectionsAmount) {
92 return false;
93 }
94 return true;
95 }
96
97 public PlayerSettings createDefaultPlayerSettings(Integer playerID, int playerType,
98 String nickname) {
99 int playingState = engine.isGamePlaying() ? PlayerSettings.OBSERVING
100 : PlayerSettings.PARTICIPATING;
101 if (engine.getPlayerSettingsMap().getParticipantsAmount()
102 >= maximumParticipantsAmount) {
103 playingState = PlayerSettings.OBSERVING;
104 }
105 return new StandardPlayerSettings(engine, playerID, playerType, nickname,
106 playingState);
107 }
108
109 public boolean isChangePlayerSettingsAllowed(PlayerSettings currentPlayerSettings,
110 PlayerSettings changedPlayerSettings) {
111 if (currentPlayerSettings.getPlayingState() == PlayerSettings.OBSERVING
112 && changedPlayerSettings.getPlayingState() == PlayerSettings.PARTICIPATING
113 && engine.getPlayerSettingsMap().getParticipantsAmount()
114 >= maximumParticipantsAmount) {
115 return false;
116 } else {
117 return true;
118 }
119 }
120
121 public boolean isStartGameAllowed() {
122 if (engine.getPlayerSettingsMap().getParticipantsAmount()
123 < minimumParticipantsAmount) {
124 return false;
125 }
126 return true;
127 }
128
129 public int getMinimumParticipantsAmount() {
130 return minimumParticipantsAmount;
131 }
132
133 public void setMinimumParticipantsAmount(int minimumParticipantsAmount) {
134 this.minimumParticipantsAmount = minimumParticipantsAmount;
135 }
136
137 public int getMaximumParticipantsAmount() {
138 return maximumParticipantsAmount;
139 }
140
141 public void setMaximumParticipantsAmount(int maximumParticipantsAmount) {
142 this.maximumParticipantsAmount = maximumParticipantsAmount;
143 }
144
145 public int getMaximumConnectionsAmount() {
146 return maximumConnectionsAmount;
147 }
148
149 public void setMaximumConnectionsAmount(int maximumConnectionsAmount) {
150 this.maximumConnectionsAmount = maximumConnectionsAmount;
151 }
152
153 public int getMinimumMaximumParticipantsAmount() {
154 return minimumMaximumParticipantsAmount;
155 }
156
157 public void setMinimumMaximumParticipantsAmount(int minimumMaximumParticipantsAmount) {
158 this.minimumMaximumParticipantsAmount = minimumMaximumParticipantsAmount;
159 }
160
161 public int getMaximumMaximumParticipantsAmount() {
162 return maximumMaximumParticipantsAmount;
163 }
164
165 public void setMaximumMaximumParticipantsAmount(int maximumMaximumParticipantsAmount) {
166 this.maximumMaximumParticipantsAmount = maximumMaximumParticipantsAmount;
167 }
168
169 public int getMinimumMaximumConnectionsAmount() {
170 return minimumMaximumConnectionsAmount;
171 }
172
173 public void setMinimumMaximumConnectionsAmount(int minimumMaximumConnectionsAmount) {
174 this.minimumMaximumConnectionsAmount = minimumMaximumConnectionsAmount;
175 }
176
177 public int getMaximumMaximumConnectionsAmount() {
178 return maximumMaximumConnectionsAmount;
179 }
180
181 public void setMaximumMaximumConnectionsAmount(int maximumMaximumConnectionsAmount) {
182 this.maximumMaximumConnectionsAmount = maximumMaximumConnectionsAmount;
183 }
184
185 }