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 }