This commit is contained in:
Anuken
2019-08-22 17:38:00 -04:00
parent d97fe47206
commit 988e1d6e30

View File

@@ -8,8 +8,8 @@ import io.anuke.arc.*;
import io.anuke.arc.collection.*; import io.anuke.arc.collection.*;
import io.anuke.arc.function.*; import io.anuke.arc.function.*;
import io.anuke.arc.util.*; import io.anuke.arc.util.*;
import io.anuke.arc.util.async.*;
import io.anuke.arc.util.pooling.*; import io.anuke.arc.util.pooling.*;
import io.anuke.mindustry.game.EventType.*;
import io.anuke.mindustry.net.Net; import io.anuke.mindustry.net.Net;
import io.anuke.mindustry.net.*; import io.anuke.mindustry.net.*;
import io.anuke.mindustry.net.Net.*; import io.anuke.mindustry.net.Net.*;
@@ -20,7 +20,7 @@ import java.io.*;
import java.nio.*; import java.nio.*;
import java.util.concurrent.*; import java.util.concurrent.*;
import static io.anuke.mindustry.Vars.*; import static io.anuke.mindustry.Vars.ui;
public class SteamNetImpl implements SteamNetworkingCallback, SteamMatchmakingCallback, SteamFriendsCallback, ClientProvider, ServerProvider{ public class SteamNetImpl implements SteamNetworkingCallback, SteamMatchmakingCallback, SteamFriendsCallback, ClientProvider, ServerProvider{
final SteamNetworking snet = new SteamNetworking(this); final SteamNetworking snet = new SteamNetworking(this);
@@ -39,12 +39,13 @@ public class SteamNetImpl implements SteamNetworkingCallback, SteamMatchmakingCa
SteamID currentLobby, currentServer; SteamID currentLobby, currentServer;
public SteamNetImpl(){ public SteamNetImpl(){
Events.on(GameLoadEvent.class, e -> Core.app.addListener(new ApplicationListener(){
//start recieving packets //read packets
Threads.daemon(() -> {
int length; int length;
SteamID from = new SteamID(); SteamID from = new SteamID();
while(true){
@Override
public void update(){
while((length = snet.isP2PPacketAvailable(0)) != 0){ while((length = snet.isP2PPacketAvailable(0)) != 0){
try{ try{
readBuffer.position(0); readBuffer.position(0);
@@ -63,7 +64,7 @@ public class SteamNetImpl implements SteamNetworkingCallback, SteamMatchmakingCa
}else{ }else{
Log.err("Unknown user with ID: {0}", fromID); Log.err("Unknown user with ID: {0}", fromID);
} }
}else if(Net.client() && currentServer != null && fromID == currentServer.getAccountID()){ }else if(currentServer != null && fromID == currentServer.getAccountID()){
Core.app.post(() -> Net.handleClientReceived(output)); Core.app.post(() -> Net.handleClientReceived(output));
} }
}); });
@@ -71,10 +72,8 @@ public class SteamNetImpl implements SteamNetworkingCallback, SteamMatchmakingCa
e.printStackTrace(); e.printStackTrace();
} }
} }
Threads.sleep(1000 / 10);
} }
}); }));
} }
@Override @Override
@@ -84,7 +83,6 @@ public class SteamNetImpl implements SteamNetworkingCallback, SteamMatchmakingCa
@Override @Override
public void sendClient(Object object, SendMode mode){ public void sendClient(Object object, SendMode mode){
Log.info("Attempt to send {0} {1}", object, mode);
if(currentServer == null){ if(currentServer == null){
Log.info("Not connected, quitting."); Log.info("Not connected, quitting.");
return; return;
@@ -236,7 +234,7 @@ public class SteamNetImpl implements SteamNetworkingCallback, SteamMatchmakingCa
@Override @Override
public void onLobbyKicked(SteamID steamID, SteamID steamID1, boolean b){ public void onLobbyKicked(SteamID steamID, SteamID steamID1, boolean b){
Log.info("Kicked: {0} {1} {2}", steamID, steamID1, b);
} }
@Override @Override
@@ -365,7 +363,7 @@ public class SteamNetImpl implements SteamNetworkingCallback, SteamMatchmakingCa
writeBuffer.flip(); writeBuffer.flip();
//Log.info("Send {0} to {1} mode {2}", object, sid.getAccountID(), mode); //Log.info("Send {0} to {1} mode {2}", object, sid.getAccountID(), mode);
snet.sendP2PPacket(sid, writeBuffer, mode == SendMode.tcp ? P2PSend.Reliable : P2PSend.UnreliableNoDelay, 0); snet.sendP2PPacket(sid, writeBuffer, mode == SendMode.tcp ? object instanceof StreamChunk ? P2PSend.ReliableWithBuffering : P2PSend.Reliable : P2PSend.UnreliableNoDelay, 0);
}catch(Exception e){ }catch(Exception e){
Log.err(e); Log.err(e);
Log.info("Error sending packet. Disconnecting invalid client!"); Log.info("Error sending packet. Disconnecting invalid client!");