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 }