Пример #1
0
        public IEnumerator ChangeSceneOverCoroutine()
        {
            using (var blockingLayer = new BlockingLayerHelper(0))
            {
                var data = PlayerDataManager.Instance.mInitBaseAttr;

                var msg = NetManager.Instance.ChangeSceneOver(data.SceneId, data.SceneGuid);

                yield return(msg.SendAndWaitUntilDone());

                Logger.Debug("ChangeSceneOver-------" + msg.State);
                if (msg.State == MessageState.Reply)
                {
                    if (msg.ErrorCode == (int)ErrorCodes.OK)
                    {
                        PlayerDataManager.Instance.TeamInviteClickFubenID = 0;
                        SendSceneChangeEvent();
                        if (ObjManager.Instance != null && ObjManager.Instance.MyPlayer != null)
                        {
                            //ObjManager.Instance.MyPlayer.Position =
                            //    GameLogic.GetTerrainPosition(PlayerDataManager.Instance.mInitBaseAttr.X,
                            //        PlayerDataManager.Instance.mInitBaseAttr.Y);
                        }

                        var sceneExtData = msg.Response;

                        if (GameLogic.Instance != null && GameLogic.Instance.Scene != null)
                        {
                            var scene = GameLogic.Instance.Scene;

                            if (scene.TableScene.Type == (int)eSceneType.Fuben)
                            {
                                var listTb = new List <TriggerAreaRecord>();
                                Table.ForeachTriggerArea(table =>
                                {
                                    if (scene.SceneTypeId != table.SceneId ||
                                        -1 == table.OffLineTrigger ||
                                        !BitFlag.GetLow(sceneExtData, table.OffLineTrigger))
                                    {
                                        return(true);
                                    }
                                    listTb.Add(table);

                                    return(true);
                                });

                                if (listTb.Count > 0)
                                {
                                    OptList <SceneAnimationTrigger> .List.Clear();

                                    scene.transform.GetComponentsInChildren(OptList <SceneAnimationTrigger> .List);
                                    var triggers = OptList <SceneAnimationTrigger> .List;

                                    var __array2       = triggers;
                                    var __arrayLength2 = __array2.Count;
                                    for (var __i2 = 0; __i2 < __arrayLength2; ++__i2)
                                    {
                                        var trigger = __array2[__i2];
                                        {
                                            foreach (var tb in listTb)
                                            {
                                                if (trigger.TriggerId == tb.ClientAnimation)
                                                {
                                                    trigger.RunToEnd();
                                                    break;
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                            else if (scene.TableScene.Type == (int)eSceneType.Pvp)
                            {
                                if (sceneExtData == 1)
                                {
                                    var e = new PvpFightReadyEent();
                                    EventDispatcher.Instance.DispatchEvent(e);
                                }
                            }
                        }
                    }
                    else
                    {
                        UIManager.Instance.ShowNetError(msg.ErrorCode);
                    }
                }
            }

            //yield return new WaitForSeconds(1);
            ShowChangeSceneMessage();
        }
Пример #2
0
    // 问服务器要场景状态
    public IEnumerator AskSceneExtData()
    {
        var msg = NetManager.Instance.ApplySceneExdata(0);

        yield return(msg.SendAndWaitUntilDone());

        if (msg.State != MessageState.Reply)
        {
            Logger.Debug("AskSceneExtData-------msg.State != MessageState.Reply");
            yield break;
        }

        if (msg.ErrorCode != (int)ErrorCodes.OK)
        {
            UIManager.Instance.ShowNetError(msg.ErrorCode);
            Logger.Debug("AskSceneExtData-------msg.ErrorCode[{0}]", msg.ErrorCode);
            yield break;
        }

        var data = msg.Response;

        var tbScene = Table.GetScene(Scene.SceneTypeId);

        if (tbScene.Type == (int)eSceneType.Fuben)
        {
            OptList <SceneAnimationTrigger> .List.Clear();

            gameObject.transform.GetComponentsInChildren(OptList <SceneAnimationTrigger> .List);
            var triggers = OptList <SceneAnimationTrigger> .List;
            if (triggers.Count <= 0)
            {
                yield break;
                ;
            }

            Table.ForeachTriggerArea(table =>
            {
                if (Scene.SceneTypeId != table.SceneId ||
                    -1 == table.OffLineTrigger ||
                    !BitFlag.GetLow(data, table.OffLineTrigger))
                {
                    return(true);
                }
                {
                    var __array2       = triggers;
                    var __arrayLength2 = __array2.Count;
                    for (var __i2 = 0; __i2 < __arrayLength2; ++__i2)
                    {
                        var trigger = __array2[__i2];
                        {
                            if (trigger.TriggerId == table.ClientAnimation)
                            {
                                trigger.RunToEnd();
                                break;
                            }
                        }
                    }
                }
                return(true);
            });
        }
        else if (tbScene.Type == (int)eSceneType.Pvp)
        {
            if (data == 1)
            {
                var e = new PvpFightReadyEent();
                EventDispatcher.Instance.DispatchEvent(e);
            }
        }
    }