Пример #1
0
        //某个场景要结束了
        private void CleanScene(FightQueueScene scene)
        {
            foreach (var i in scene.team1)
            {
                QueueSceneManager.characters.Remove(i.Key);
                QueueTeamManager.LeaveScene(i.Key);
#if DEBUG
                PlayerLog.WriteLog((int)LogType.BattleLog, "SSCharacterLeaveBattle  CleanScene c={0},s={1}", i.Key,
                                   scene.mSceneGuid);
#endif
            }
            foreach (var i in scene.team2)
            {
                QueueSceneManager.characters.Remove(i.Key);
                QueueTeamManager.LeaveScene(i.Key);
#if DEBUG
                PlayerLog.WriteLog((int)LogType.BattleLog, "SSCharacterLeaveBattle  CleanScene c={0},s={1}", i.Key,
                                   scene.mSceneGuid);
#endif
            }
            foreach (var character in scene.FollowCharacters)
            {
                foreach (var data in character.mDatas)
                {
                    TeamServer.Instance.ServerControl.TeamServerMessage(data.Id, (int)eLeaveMatchingType.SceneOver,
                                                                        string.Empty);
                }
                character.mLogic.PushFront(character);
            }
            scene.FollowCharacters.Clear();
#if DEBUG
            PlayerLog.WriteLog((int)LogType.QueueMessage, "CleanScene(). scene.FollowCharacters.Clear(). scene={0}",
                               scene.mSceneGuid);
#endif
            switch (scene.State)
            {
            case SceneState.Init:
            {
            }
            break;

            case SceneState.Full:
            {
            }
            break;

            case SceneState.NoFull:
            {
            }
            break;
            }
        }
Пример #2
0
        //开始创建副本
        private static IEnumerator NotifyCreateChangeSceneCoroutine(Coroutine co,
                                                                    FightQueueScene _this,
                                                                    List <ulong> characters,
                                                                    int serverId)
        {
            //排队创建场景时,根据合服ID进行
            var serverLogicId = SceneExtension.GetServerLogicId(serverId);

            PlayerLog.WriteLog((int)LogType.QueueMessage, "NotifyCreateChangeSceneCoroutine  Team={0}",
                               characters.GetDataString());
            var sceneInfo = new ChangeSceneInfo
            {
                SceneId   = -1,
                ServerId  = serverLogicId,
                SceneGuid = _this.mSceneGuid,
                Type      = (int)eScnenChangeType.EnterDungeon
            };

            sceneInfo.Guids.AddRange(characters);
            var msgChgScene = TeamServer.Instance.SceneAgent.SBChangeSceneByTeam(characters[0], sceneInfo);

            yield return(msgChgScene.SendAndWaitUntilDone(co));

            if (msgChgScene.State != MessageState.Reply)
            {
                yield break;
            }
            if (msgChgScene.Response == 0)
            {
                foreach (var characterGuid in characters)
                {
                    PlayerLog.WriteLog((int)LogType.BattleLog, "SSCharacterEnterBattle   Faild   c={0},s={1}",
                                       characterGuid, _this.mSceneGuid);
                    QueueTeamManager.LeaveScene(characterGuid);
                    QueueSceneManager.LeaveScene(characterGuid, _this.mSceneGuid);
                }
            }
        }