コード例 #1
0
ファイル: Net.cs プロジェクト: Stenodyon/SkyOfSteel
    public static void Disconnect(bool BuildMenu = true)
    {
        World.Close();

        NetworkedMultiplayerENet EN = Self.GetTree().GetNetworkPeer() as NetworkedMultiplayerENet;

        if (EN != null)
        {
            EN.CloseConnection();
        }

        Self.GetTree().SetNetworkPeer(null);
        PeerList.Clear();
        Net.Players.Clear();
        Nicknames.Clear();
        Net.Players.Clear();

        IsWaitingForServer    = false;
        WaitingForServerTimer = MaxWaitForServerDelay;

        if (BuildMenu)
        {
            Menu.BuildMain();
        }
    }
コード例 #2
0
        public void Disconnect()
        {
            MDLog.Info(LOG_CAT, "Disconnected from server");
            IsSessionStarted = false;
            foreach (int PeerId in Players.Keys)
            {
                MDPlayerInfo Player = Players[PeerId];
                OnPlayerLeftEvent(PeerId);
                Player.RemoveAndFree();
            }

            NetworkedMultiplayerENet peer = GetPeer();

            if (peer != null)
            {
                peer.CloseConnection();
                SetNetworkPeer(null);
            }

            StopUPNP();
            Players.Clear();
            ClearNetworkedNodes();
            OnSessionEndedEvent();
            SceneBuffer.Clear();
        }
コード例 #3
0
    public void _ConnectionFailed()
    {
        NetworkedMultiplayerENet peer = (NetworkedMultiplayerENet)GetTree().NetworkPeer;

        peer.CloseConnection();
        GetTree().NetworkPeer = null;
    }
コード例 #4
0
    public void _ServerDisconnected()
    {
        if (ClientVariables.NetworkOptions.DMRole)
        {
            Session sessionScene = (Session)Root.GetChild(Root.GetChildCount() - 1);
            sessionScene.SaveSession();
        }
        Global.GotoScene("res://GUI/MainMenu.tscn");
        NetworkedMultiplayerENet peer = (NetworkedMultiplayerENet)GetTree().NetworkPeer;

        peer.CloseConnection();
        GetTree().NetworkPeer = null;
    }
コード例 #5
0
        public override void _Notification(int notification)
        {
            switch (notification)
            {
            case NotificationExitTree:
                Server?.CloseConnection();
                break;

            case NotificationEnterTree:
                GetTree().Connect(NodeAdded, this, nameof(OnNodeAdded));
                CustomizeChildren();
                break;
            }
        }
コード例 #6
0
ファイル: Session.cs プロジェクト: Vargdidan/DunjanTools
    public override void _Notification(int what)
    {
        if (what == MainLoop.NotificationWmQuitRequest)
        {
            NetworkedMultiplayerENet peer = (NetworkedMultiplayerENet)GetTree().NetworkPeer;
            peer.CloseConnection();
            GetTree().NetworkPeer = null;

            if (ClientVariables.NetworkOptions.DMRole)
            {
                SaveSession();
            }
        }
    }
コード例 #7
0
ファイル: Session.cs プロジェクト: Vargdidan/DunjanTools
    public void OnBackButtonPressed()
    {
        if (ClientVariables.NetworkOptions.DMRole)
        {
            SaveSession();
        }

        NetworkedMultiplayerENet peer = (NetworkedMultiplayerENet)GetTree().NetworkPeer;

        peer.CloseConnection();
        GetTree().NetworkPeer = null;

        Global.GotoScene("res://GUI/MainMenu.tscn");
    }