1 package net.sourceforge.simplegamenet.framework.gui; 2 3 import java.io.IOException; 4 import java.net.InetAddress; 5 import javax.swing.*; 6 import net.sourceforge.simplegamenet.framework.model.ServerEngineImpl; 7 import net.sourceforge.simplegamenet.framework.transport.RemovePlayerType; 8 import net.sourceforge.simplegamenet.specs.model.GameFactory; 9 import net.sourceforge.simplegamenet.specs.to.GameSettings; 10 import net.sourceforge.simplegamenet.specs.to.PlayerSettings; 11 import net.sourceforge.simplegamenet.specs.to.PlayerSettingsMap; 12 13 public class ServerGUIFacade { 14 15 protected SimpleGameNetFrame simpleGameNetFrame; 16 17 protected JTextArea logTextArea; 18 19 private ServerEngineImpl serverEngineImpl = null; 20 21 public ServerGUIFacade(SimpleGameNetFrame simpleGameNetFrame, JTextArea logTextArea) { 22 this.simpleGameNetFrame = simpleGameNetFrame; 23 this.logTextArea = logTextArea; 24 } 25 26 public void hostGame(ConnectionConfig connectionConfig, GameFactory gameFactory) 27 throws IOException { 28 serverEngineImpl = new ServerEngineImpl(this, connectionConfig.getPort(), 29 connectionConfig.isBadLanguageFiltered(), gameFactory, 30 connectionConfig.getGameSettings()); 31 InetAddress hostInetAddress = InetAddress.getLocalHost(); 32 logTextArea.append("Hosting " + gameFactory.getName() + " server at " 33 + hostInetAddress.getHostAddress() + " on port " + connectionConfig.getPort() 34 + "\n"); 35 } 36 37 public void gameSettingsUpdated(GameSettings gameSettings) { 38 logTextArea.append("Game settings updated.\n"); 39 } 40 41 public void playerAdded(PlayerSettingsMap playerSettingsMap, PlayerSettings playerSettings) { 42 logTextArea.append("New player added: " + playerSettings.getNickname() + "\n"); 43 } 44 45 public void playerSettingsUpdated(PlayerSettingsMap playerSettingsMap, 46 PlayerSettings updatedPlayerSettings) { 47 logTextArea.append("Player settings updated for " 48 + updatedPlayerSettings.getNickname() 49 + "\n"); 50 } 51 52 public void removePlayer(PlayerSettingsMap playerSettingsMap, PlayerSettings playerSettings, 53 int removePlayerType) { 54 switch (removePlayerType) { 55 case RemovePlayerType.LEFT: 56 logTextArea.append("Player left: " + playerSettings.getNickname() + "\n"); 57 break; 58 case RemovePlayerType.PROTOCOL_VIOLATION_LEFT: 59 logTextArea.append("Player left due to server protocol violation: " 60 + playerSettings.getNickname() + "\n"); 61 break; 62 case RemovePlayerType.KICKED: 63 logTextArea.append("Player kicked: " + playerSettings.getNickname() + "\n"); 64 break; 65 case RemovePlayerType.BANNED: 66 logTextArea.append("Player banned: " + playerSettings.getNickname() + "\n"); 67 break; 68 case RemovePlayerType.DISCONNECTED: 69 logTextArea.append("Player disconnected: " + playerSettings.getNickname() 70 + "\n"); 71 break; 72 case RemovePlayerType.PROTOCOL_VIOLATION_KICKED: 73 logTextArea.append("Protocol violating player kicked: " 74 + playerSettings.getNickname() + "\n"); 75 break; 76 } 77 } 78 79 public void gameStarted() { 80 logTextArea.append("Game started.\n"); 81 } 82 83 public void gameStopping() { 84 logTextArea.append("Game stopping...\n"); 85 } 86 87 public void gameAborting() { 88 logTextArea.append("Game aborting...\n"); 89 } 90 91 public void gameEnded() { 92 logTextArea.append("Game ended.\n"); 93 } 94 95 public void closeServer() { 96 serverEngineImpl.closeServerInServerThread(); 97 } 98 99 public void hostedGameQuit() { 100 logTextArea.append("Stopped hosting.\n"); 101 SwingUtilities.invokeLater(new Runnable() { 102 public void run() { 103 simpleGameNetFrame.disconnected(); 104 } 105 }); 106 } 107 108 }