Added full Kryonet server/client implementation

This commit is contained in:
Anuken
2017-12-30 12:28:17 -05:00
parent f6e9710b33
commit e24179cd4c
6 changed files with 256 additions and 91 deletions

View File

@@ -13,11 +13,18 @@ import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration;
import com.badlogic.gdx.utils.Array;
import com.esotericsoftware.kryonet.Client;
import com.esotericsoftware.kryonet.Connection;
import com.esotericsoftware.kryonet.Listener;
import com.esotericsoftware.kryonet.Server;
import io.anuke.mindustry.Mindustry;
import io.anuke.mindustry.Net;
import io.anuke.mindustry.Net.ClientProvider;
import io.anuke.mindustry.net.Net;
import io.anuke.mindustry.net.Net.ClientProvider;
import io.anuke.mindustry.net.Net.SendMode;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.io.PlatformFunction;
import io.anuke.mindustry.net.Net.ServerProvider;
import io.anuke.mindustry.net.packets.Connect;
import io.anuke.mindustry.net.packets.Disconnect;
import io.anuke.ucore.scene.ui.TextField;
public class DesktopLauncher {
@@ -66,16 +73,51 @@ public class DesktopLauncher {
{
client = new Client();
client.start();
client.addListener(new Listener(){
@Override
public void connected (Connection connection) {
Connect c = new Connect();
c.id = connection.getID();
c.addressTCP = connection.getRemoteAddressTCP().toString();
Net.handleClientReceived(c);
}
@Override
public void disconnected (Connection connection) {
Disconnect c = new Disconnect();
Net.handleClientReceived(c);
}
@Override
public void received (Connection connection, Object object) {
Net.handleClientReceived(object);
}
});
}
@Override
public void connect(String ip, String port) throws IOException {
public void connect(String ip, int port) throws IOException {
client.connect(5000, ip, port, port);
}
@Override
public void send(Object object) {
public void send(Object object, SendMode mode) {
if(mode == SendMode.tcp){
client.sendTCP(object);
}else{
client.sendUDP(object);
}
}
@Override
public void updatePing() {
client.updateReturnTripTime();
}
@Override
public int getPing() {
return client.getReturnTripTime();
}
@Override
@@ -85,6 +127,76 @@ public class DesktopLauncher {
}
}
});
Net.setServerProvider(new ServerProvider() {
Server server;
{
server = new Server();
server.start();
server.addListener(new Listener(){
@Override
public void connected (Connection connection) {
Connect c = new Connect();
c.id = connection.getID();
c.addressTCP = connection.getRemoteAddressTCP().toString();
Net.handleClientReceived(c);
}
@Override
public void disconnected (Connection connection) {
Disconnect c = new Disconnect();
c.id = connection.getID();
c.addressTCP = connection.getRemoteAddressTCP().toString();
Net.handleClientReceived(c);
}
@Override
public void received (Connection connection, Object object) {
Net.handleServerReceived(object);
}
});
}
@Override
public void host(int port) throws IOException {
server.bind(port, port);
}
@Override
public void send(Object object, SendMode mode) {
if(mode == SendMode.tcp){
server.sendToAllTCP(object);
}else{
server.sendToAllUDP(object);
}
}
@Override
public void sendTo(int id, Object object, SendMode mode) {
if(mode == SendMode.tcp){
server.sendToTCP(id, object);
}else{
server.sendToUDP(id, object);
}
}
@Override
public void sendExcept(int id, Object object, SendMode mode) {
if(mode == SendMode.tcp){
server.sendToAllExceptTCP(id, object);
}else{
server.sendToAllExceptUDP(id, object);
}
}
@Override
public void register(Class<?>... types) {
for(Class<?> c : types){
server.getKryo().register(c);
}
}
});
new Lwjgl3Application(new Mindustry(), config);
}