Пример #1
0
    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));
    }
Пример #2
0
    // 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));
        }
    }