Example #1
0
        public static void SceneLoaded(int clientID, Packet packet)
        {
            string sceneName  = packet.ReadString();
            string prefabName = packet.ReadString(); //到时候删

            Debug.Log($"客户端{clientID}加载好了场地{sceneName}");

            ServerLogic.InitClientPlayer(clientID, prefabName);
            //ServerSend.PlayerSpawned(clientID, prefabName);
        }
Example #2
0
        public void StartServer(int port = 6960)
        {
            Server.Start(50, port);

            //下面是临时处理措施
            void LoadDemo(int cid)
            {
                if (Server.state == ServerState.Started && Server.PlayerCount == 1 && cid > 0)
                {
                    Debug.Log($"服务端尝试加载DemoStage...");
                    ServerLogic.RefreshBeforeLoad();
                    GameManager.instance.RefreshBeforeLoad();
                    GameManager.instance.BeginLoadScene("DemoStage", (string name) =>
                    {
                        Debug.Log($"DemoStage加载完成!");
                        //ThreadManager.ExecuteOnMainThread(()=> {
                        //    ServerLogic.AttachRigidbodyToAll(StageObjectCategory.Ball);
                        //});
                        ThreadManager.ExecuteOnMainThread(ServerLogic.AttachInfoSendersToAll);
                        //ThreadManager.ExecuteOnMainThread(() =>
                        //{
                        //});
                        ServerLogic.InitBall("DemoBall");
                    });
                    //暂且先载入DemoStage
                    Server.state = ServerState.InStage;
                    Actions.PlayerCountUpatedAction = NoPlayer;
                    //Actions.ClientTCPConnectedAction -= LoadDemo;
                }
            }

            void NoPlayer(int playerNum)
            {
                if (Server.PlayerCount == 0)
                {
                    GameManager.instance.StopAllCoroutines();
                    GameManager.instance.BeginLoadScene("TestScene", (string name) =>
                    {
                        Debug.Log($"TestStage加载完成!");
                    });
                    Server.state = ServerState.Started;
                }
            }

            Actions.ClientTCPConnectedAction += LoadDemo;
            Actions.ClientUDPConnectedAction += (int cid) =>
            {
                if (!string.IsNullOrEmpty(Server.clients[cid].username))
                {
                    ServerSend.SceneLoadingStarted(cid, "DemoStage");
                }
            };
            Actions.ClientDisconnectedAction += ServerLogic.PlayerDisconnected;
        }
Example #3
0
        public static void StageSituation(int clientID, Packet packet)
        {
            List <StageObjectPair> clientObjs = new List <StageObjectPair>();

            while (packet.UnreadLength() > 0)
            {
                clientObjs.Add(new StageObjectPair {
                    category = (StageObjectCategory)packet.ReadInt(), id = packet.ReadInt()
                });
            }
            ServerLogic.StageSynchronize(clientID, clientObjs);
        }