少年修仙传客户端代码仓库
client_Wu Xijin
2018-10-16 ad739bd4dea8b8f103832229613d30fd7b47a37e
4208 【前端】Boss之家和古神禁地从封魔坛界面前往异兽之地逻辑
2个文件已修改
131 ■■■■ 已修改文件
Fight/MapTransferUtility.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DogzDungeon/DogzDungeonWin.cs 108 ●●●● 补丁 | 查看 | 原始文档 | 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");
@@ -359,7 +356,7 @@
                    var mapId = _npcLocation.mapId;
                    var position = new Vector3(_mapConfig.BornPoints[0].x, 0, _mapConfig.BornPoints[0].y);
                    Send_WorldTransfer(mapId, position, MapTransferType.WorldTransport, (byte)_lineID, npcID);
                    forceMove = true;
                    if (BossFakeLineUtility.Instance.IsShuntBoss(npcID))
@@ -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,28 +108,107 @@
        private void GotoKillBoss()
        {
            if (PlayerDatas.Instance.baseData.MapID == DogzDungeonModel.DATA_MAPID)
            var error = 0;
            if (TestGotoKillBoss(out error))
            {
                WindowJumpMgr.Instance.ClearJumpData();
                WindowCenter.Instance.Close<LootPreciousFrameWin>();
                WindowCenter.Instance.Open<MainInterfaceWin>();
                if (PlayerDatas.Instance.baseData.MapID == DogzDungeonModel.DATA_MAPID)
                {
                    WindowJumpMgr.Instance.ClearJumpData();
                    WindowCenter.Instance.Close<LootPreciousFrameWin>();
                    WindowCenter.Instance.Open<MainInterfaceWin>();
                }
                var config = Config.Instance.Get<DogzDungeonConfig>(model.selectedBoss);
                switch (config.MonsterType)
                {
                    case 1:
                    case 2:
                    case 3:
                        if (PlayerDatas.Instance.baseData.MapID != DogzDungeonModel.DATA_MAPID)
                        {
                            var map = Config.Instance.Get<MapConfig>(DogzDungeonModel.DATA_MAPID);
                            var position = new Vector3(map.BornPoints[0].x, 0, map.BornPoints[0].y);
                            MapTransferUtility.Send_WorldTransfer(DogzDungeonModel.DATA_MAPID, position, MapTransferType.WorldTransport, 0, 0);
                        }
                        break;
                    case 4:
                        MapTransferUtility.Instance.MoveToNPC(model.selectedBoss);
                        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 config = Config.Instance.Get<DogzDungeonConfig>(model.selectedBoss);
            switch (config.MonsterType)
            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:
                case 2:
                case 3:
                    if (PlayerDatas.Instance.baseData.MapID != DogzDungeonModel.DATA_MAPID)
                    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 map = Config.Instance.Get<MapConfig>(DogzDungeonModel.DATA_MAPID);
                        var position = new Vector3(map.BornPoints[0].x, 0, map.BornPoints[0].y);
                        MapTransferUtility.Send_WorldTransfer(DogzDungeonModel.DATA_MAPID, position, MapTransferType.WorldTransport, 0, 0);
                        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 4:
                    MapTransferUtility.Instance.MoveToNPC(model.selectedBoss);
                case 2:
                    SysNotifyMgr.Instance.ShowTip("InDungeon_CantGo");
                    break;
            }
        }