少年修仙传客户端代码仓库
client_Wu Xijin
2018-10-16 ad739bd4dea8b8f103832229613d30fd7b47a37e
4208 【前端】Boss之家和古神禁地从封魔坛界面前往异兽之地逻辑
2个文件已修改
101 ■■■■ 已修改文件
Fight/MapTransferUtility.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DogzDungeon/DogzDungeonWin.cs 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/MapTransferUtility.cs
@@ -18,14 +18,11 @@
        Fight,
    }
    private E_MapTransferDoType m_MapTransferType;
    public E_MapTransferDoType MapTransferDoType
    {
        get
        {
    public E_MapTransferDoType MapTransferDoType {
        get {
            return m_MapTransferType;
        }
        set
        {
        set {
            m_MapTransferType = value;
#if UNITY_EDITOR
            // Debug.LogFormat("设置方式: {0}", m_MapTransferType);
@@ -124,8 +121,7 @@
    #endregion
    #region npc
    public int NpcID
    {
    public int NpcID {
        get; set;
    }
    #endregion
@@ -267,13 +263,14 @@
        MapModel _model = ModelCenter.Instance.GetModel<MapModel>();
        GActor _npc = null;
        // 加入判断是否世界BOSS判断
        WorldBossConfig _worldBoss = Config.Instance.Get<WorldBossConfig>(npcID);
        var _worldBoss = Config.Instance.Get<WorldBossConfig>(npcID);
        var dogzBoss = Config.Instance.Get<DogzDungeonConfig>(npcID);
        if (_findLocation)
        {
            var _mapConfig = Config.Instance.Get<MapConfig>(_npcLocation.mapId);
            // 中立地图
            if (_mapConfig.Camp == 5 && _worldBoss != null)
            if (_mapConfig.Camp == 5 && (_worldBoss != null || dogzBoss != null))
            {
                if (_npcLocation.mapId == PlayerDatas.Instance.baseData.MapID)
                {
@@ -292,7 +289,7 @@
        }
        FairyGrabBossConfig _fairyBoss = Config.Instance.Get<FairyGrabBossConfig>(npcID);
        bool _isBoss = _worldBoss != null || _fairyBoss != null;
        bool _isBoss = _worldBoss != null || _fairyBoss != null || dogzBoss != null;
        if (_isBoss && _findLocation)
        {
            //Debug.LogFormat("目标是boss");
@@ -471,7 +468,7 @@
            // 副本中不可以传送
            if (_curMapConfig.MapFBType != 0)
            {
                SysNotifyMgr.Instance.ShowTip("Map_Delivery");
                SysNotifyMgr.Instance.ShowTip("InDungeon_CantGo");
                return;
            }
System/DogzDungeon/DogzDungeonWin.cs
@@ -34,6 +34,7 @@
        DogzDungeonModel model { get { return ModelCenter.Instance.GetModel<DogzDungeonModel>(); } }
        FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
        DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
        BossHomeModel bossHomeModel { get { return ModelCenter.Instance.GetModel<BossHomeModel>(); } }
        #region Built-in
        protected override void BindController()
@@ -107,6 +108,9 @@
        private void GotoKillBoss()
        {
            var error = 0;
            if (TestGotoKillBoss(out error))
            {
            if (PlayerDatas.Instance.baseData.MapID == DogzDungeonModel.DATA_MAPID)
            {
                WindowJumpMgr.Instance.ClearJumpData();
@@ -132,6 +136,82 @@
                    break;
            }
        }
            else
            {
                ProcessGotoKillBossError(error);
            }
        }
        private bool TestGotoKillBoss(out int error)
        {
            var mapId = PlayerDatas.Instance.baseData.MapID;
            var dataMapId = dungeonModel.GetDataMapIdByMapId(mapId);
            if (dataMapId == BossHomeModel.BOSSHOME_MAPID || dataMapId == ElderGodAreaModel.ELDERGODAREA_MAPID)
            {
                error = 1;
                return false;
            }
            var mapConfig = Config.Instance.Get<MapConfig>(mapId);
            if (mapConfig.MapFBType != (int)MapType.OpenCountry)
            {
                error = 2;
                return false;
            }
            error = 0;
            return true;
        }
        private void ProcessGotoKillBossError(int _error)
        {
            switch (_error)
            {
                case 1:
                    var dataMapId = dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);
                    var config = Config.Instance.Get<DungeonOpenTimeConfig>(dataMapId);
                    var tip = string.Empty;
                    if (dataMapId == BossHomeModel.BOSSHOME_MAPID)
                    {
                        var vipLevel = PlayerDatas.Instance.baseData.VIPLv;
                        var vipNeed = bossHomeModel.GetFloorVipRequirement(PlayerDatas.Instance.baseData.dungeonLineId + 1);
                        if (vipLevel < vipNeed)
                        {
                            var moneyNeed = bossHomeModel.GetVipLackCost(PlayerDatas.Instance.baseData.dungeonLineId + 1);
                            var dungeonId = dungeonModel.GetDungeonId(BossHomeModel.BOSSHOME_MAPID, PlayerDatas.Instance.baseData.dungeonLineId);
                            var dungeonConfig = Config.Instance.Get<DungeonConfig>(dungeonId);
                            tip = Language.Get("QuitRemindBossHome", dungeonConfig.FBName, vipNeed, moneyNeed);
                        }
                        else
                        {
                            tip = Language.Get(config.ExitDescription);
                        }
                    }
                    else
                    {
                        tip = Language.Get(config.ExitDescription);
                    }
                    ConfirmCancel.ShowPopConfirm(
                        Language.Get("Mail101"),
                        tip,
                        (bool _ok) =>
                        {
                            if (_ok)
                            {
                                WindowCenter.Instance.Close<FindPreciousFrameWin>();
                                MapTransferUtility.Instance.MoveToNPC(model.selectedBoss);
                            }
                        }
                        );
                    break;
                case 2:
                    SysNotifyMgr.Instance.ShowTip("InDungeon_CantGo");
                    break;
            }
        }
        private void OnSubscribeBoss(int _bossId)
        {