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 }