private void ConnectToServer() { Console.WriteLine($"In client mode, connecting to {TargetHost}"); var wsc = new WebSocketClient(); wsc.ConnectToUrl($"ws://{TargetHost}/", new string[] { "ludus" }, true); peer = wsc; GetTree().NetworkPeer = peer; //wsc.Connect("connected_to_server", this, nameof(ConnectedToServer)); wsc.Connect("connection_failed", this, nameof(ConnectionFailed)); wsc.Connect("server_disconnected", this, nameof(ServerDisconnected)); }
// Called when the node enters the scene tree for the first time. public override void _Ready() { Console.WriteLine(String.Join(", ", OS.GetCmdlineArgs())); int nextSpawnableId = 0; foreach (var ps in Spawnables) { var t = ps.Instance(); Console.WriteLine($"Registering {t.GetType()} in slot {nextSpawnableId}"); TypeToTypeIdMapping[t.GetType()] = nextSpawnableId++; } TargetHost = "auto"; foreach (var arg in OS.GetCmdlineArgs()) { var parts = arg.Split("="); if (parts.Length == 2) { if (parts[0] == "--server") { int port = Int32.Parse(parts[1]); Console.WriteLine($"In server mode, port {port}"); var wss = new WebSocketServer(); wss.Listen(port, new string[] { "ludus" }, true); peer = wss; GetTree().NetworkPeer = peer; GetTree().Connect("network_peer_connected", this, nameof(NetworkPeerConnected)); GetTree().Connect("network_peer_disconnected", this, nameof(NetworkPeerDisconnected)); IsServer = true; return; } if (parts[0] == "--connect") { TargetHost = parts[1]; } if (parts[0] == "--name") { Console.WriteLine($"Global name set to {parts[1]} by command line params"); ClientPlayerName = parts[1]; } } if (parts.Length == 1 && parts[0] == "--test") { Console.WriteLine("Unexpected number of command line args"); byte[][] byteArray1 = new byte[2][]; byteArray1[0] = new byte[] { 1, 2, 3 }; byteArray1[1] = Util.ObjToBytes("SOME STRING GOES HERE"); Console.WriteLine($"byteArray1: {byteArray1}"); Console.WriteLine($"ToMixedHex: {Util.ObjToBytes(byteArray1).ToMixedHex()}"); byte[][] byteArray2 = Util.BytesToObj <byte[][]>(Util.ObjToBytes(byteArray1)); Console.WriteLine($"byteArray2: {byteArray2}"); GetTree().Quit(); } } if (TargetHost != "auto") { ConnectToServer(); } else { CallDeferred(nameof(StartAutoRequest)); } }