use of de.gg.event.ConnectionEstablishedEvent in project ProjektGG by eskalon.
the class NetworkHandler method setUpConnectionAsClient.
/**
* Connects the client to the server. After it is finished a
* {@link ConnectionEstablishedEvent} is posted on the
* {@linkplain ProjektGG#getEventBus() event bus}.
*
* @param ip
* The server's ip.
* @param port
* The server's port.
*/
public void setUpConnectionAsClient(String ip, int port) {
client = new Client();
client.start();
NetworkRegisterer.registerClasses(client.getKryo());
TypeListener listener = new TypeListener();
// GAME SETUP MESSAGE (ON CLIENT CONNECT)
listener.addTypeHandler(GameSetupMessage.class, (con, msg) -> {
eventBus.post(new GameSessionSetupEvent(msg.getPlayers(), msg.getId(), msg.getSettings()));
localClientId = msg.getId();
Gdx.app.log("Client", "Netzwerk ID: " + localClientId);
});
// NEW CHAT MESSAGE
listener.addTypeHandler(ChatMessageSentMessage.class, (con, msg) -> {
eventBus.post(new NewChatMessagEvent(msg.getSenderId(), msg.getMessage()));
});
// PLAYER CHANGED
listener.addTypeHandler(PlayerChangedMessage.class, (con, msg) -> {
eventBus.post(new PlayerChangedEvent(msg.getId(), msg.getPlayer()));
});
// PLAYER JOINED
listener.addTypeHandler(PlayerJoinedMessage.class, (con, msg) -> {
eventBus.post(new PlayerConnectedEvent(msg.getId(), msg.getPlayer()));
});
// PLAYER LEFT
listener.addTypeHandler(PlayerLeftMessage.class, (con, msg) -> {
eventBus.post(new PlayerDisconnectedEvent(msg.getId()));
});
client.addListener(listener);
Thread t = new Thread(new Runnable() {
public void run() {
IOException ex = null;
try {
client.connect(6000, ip, port);
Gdx.app.log("Client", "Lobby beigetreten");
} catch (IOException e) {
ex = e;
e.printStackTrace();
}
eventBus.post(new ConnectionEstablishedEvent(ex));
}
});
t.start();
}
Aggregations