少年修仙传客户端代码仓库
client_Zxw
2018-09-12 8843128d654c5823ab68576c6e22227eeb3373c3
Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts
23个文件已修改
12个文件已添加
859 ■■■■ 已修改文件
Core/GameEngine/DataToCtl/PackageRegedit.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA514_tagCMPrayElixir.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA514_tagCMPrayElixir.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA321_tagMCPrayElixirResult.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA321_tagMCPrayElixirResult.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HA3_Function/HA321_tagMCPrayElixirResult.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HA3_Function/HA321_tagMCPrayElixirResult.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/MapTransferUtility.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Stage/Dungeon/MapTransfer.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/AssetVersion/AssetVersionUtility.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/LingDanTips.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/PrayDrugCell.cs 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/PrayDrugCell.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/PrayForDurgModel.cs 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/PrayForDurgModel.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/PrayforDrugWin.cs 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/PrayforDrugWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DailyQuest/DailyQuestModel.cs 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dogz/DogzItemCell.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dungeon/DungeonModel.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyGrabBossModel.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/WorldBossModel.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Message/RichMoveEvent.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Rune/RuneModel.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Rune/RuneMosaicWin.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Team/TeamData.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Team/TeamModel.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowBase/ModelCenter.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WorldMap/LocalMapEventPointToggle.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WorldMap/LocalMapFindPath.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WorldMap/LocalMapTag.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WorldMap/LocalMapWin.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WorldMap/MapModel.cs 212 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WorldMap/WorldMapAreaBehaviour.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WorldMap/WorldMapWin.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/DataToCtl/PackageRegedit.cs
@@ -164,6 +164,7 @@
        Register(typeof(HA309_tagMCEquipPartSuiteLVInfo), typeof(DTCA309_tagMCEquipPartSuiteLVInfo));   //得到套装数据
        Register(typeof(HA814_tagMCMakeItemAnswer), typeof(DTCA814_tagMCMakeItemAnswer));   //得到合成结果回应
        Register(typeof(HA317_tagMCAllEquipAttrActiveInfo), typeof(DTCA317_tagMCAllEquipAttrActiveInfo));   //得到激活全身星级和全身强化的信息
        Register(typeof(HA321_tagMCPrayElixirResult), typeof(DTCA321_tagMCPrayElixirResult)); //祈福丹药结果
        #region 背包
        Register(typeof(H0724_tagRolePackCanUseCount), typeof(DTC0724_tagRolePackCanUseCount));
Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA514_tagCMPrayElixir.cs
New file
@@ -0,0 +1,16 @@
using UnityEngine;
using System.Collections;
// A5 14 祈福丹药 #tagCMPrayElixir
public class CA514_tagCMPrayElixir : GameNetPackBasic {
    public CA514_tagCMPrayElixir () {
        combineCmd = (ushort)0x03FE;
        _cmd = (ushort)0xA514;
    }
    public override void WriteToBytes () {
    }
}
Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA514_tagCMPrayElixir.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 5bde2875341bd7c49962b151d98e4195
timeCreated: 1536719781
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA321_tagMCPrayElixirResult.cs
New file
@@ -0,0 +1,21 @@
using UnityEngine;
using System.Collections;
using Snxxz.UI;
// A3 21 祈福丹药结果 #tagMCPrayElixirResult
public class DTCA321_tagMCPrayElixirResult : DtcBasic {
    PrayForDurgModel prayModel { get { return ModelCenter.Instance.GetModel<PrayForDurgModel>(); } }
    public override void Done(GameNetPackBasic vNetPack) {
        base.Done(vNetPack);
        HA321_tagMCPrayElixirResult vNetData = vNetPack as HA321_tagMCPrayElixirResult;
        prayModel.SetPrayResult(vNetData);
    }
}
Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA321_tagMCPrayElixirResult.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 0388f4972c8e8d84c93f7797c0ce87a2
timeCreated: 1536719781
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ServerPack/HA3_Function/HA321_tagMCPrayElixirResult.cs
New file
@@ -0,0 +1,19 @@
using UnityEngine;
using System.Collections;
// A3 21 祈福丹药结果 #tagMCPrayElixirResult
public class HA321_tagMCPrayElixirResult : GameNetPackBasic {
    public uint ItemID;    // 物品ID
    public byte PrayCnt;    // 今日祈福次数
    public HA321_tagMCPrayElixirResult () {
        _cmd = (ushort)0xA321;
    }
    public override void ReadFromBytes (byte[] vBytes) {
        TransBytes (out ItemID, vBytes, NetDataType.DWORD);
        TransBytes (out PrayCnt, vBytes, NetDataType.BYTE);
    }
}
Core/NetworkPackage/ServerPack/HA3_Function/HA321_tagMCPrayElixirResult.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 047cdded69879da4181bd2c1bbd0e426
timeCreated: 1536719781
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Fight/MapTransferUtility.cs
@@ -80,7 +80,7 @@
        if (mapID != PlayerDatas.Instance.baseData.MapID)
        {
            if (_model.IsMapUnLocked(mapID) == false)
            if (_model.IsMapUnlocked(mapID) == false)
            {
                SysNotifyMgr.Instance.ShowTip("Map_Delivery");
                return;
@@ -408,7 +408,7 @@
            }
            // 判断地图是否解锁
            if (_model.IsMapUnLocked(_npcLocation.mapId) == false)
            if (_model.IsMapUnlocked(_npcLocation.mapId) == false)
            {
                SysNotifyMgr.Instance.ShowTip("Map_Delivery");
                return;
@@ -642,7 +642,7 @@
                return;
            }
            if (_model.IsMapUnLocked(npcLocation.mapId) == false)
            if (_model.IsMapUnlocked(npcLocation.mapId) == false)
            {
                SysNotifyMgr.Instance.ShowTip("Map_Delivery");
                return;
@@ -722,7 +722,7 @@
            MapModel _model = ModelCenter.Instance.GetModel<MapModel>();
            if (_model.IsMapUnLocked(mapID) == false)
            if (_model.IsMapUnlocked(mapID) == false)
            {
                SysNotifyMgr.Instance.ShowTip("Map_Delivery");
                return;
@@ -747,7 +747,7 @@
    public static bool Send_WorldTransfer(int mapId, Vector3 position, MapTransferType type, byte lineID = 255, int _npcId = 0)
    {
        if (!AssetSource.sceneFromEditor && VersionConfig.Get().assetAccess != InstalledAsset.IngoreDownLoad && !AssetVersionUtility.unPriorAssetDownLoadDone)
        if (!AssetSource.sceneFromEditor && !AssetVersionUtility.IsUnpriorAssetDownLoadOk())
        {
            var mapResConfig = DTCA127_tagMCStartChangeMap.GetMapResourcesConfig(mapId, 0);
            var assetVersion = AssetVersionUtility.GetAssetVersion(StringUtility.Contact("maps/", mapResConfig.MapResources.ToLower()));
Fight/Stage/Dungeon/MapTransfer.cs
@@ -73,7 +73,7 @@
        if (transportModel.TransportType == 1)
        {
            if (_model.IsMapUnLocked(transportModel.TargetMapID))
            if (_model.IsMapUnlocked(transportModel.TargetMapID))
            {
                C0807_tagCChangeMap _proto = new C0807_tagCChangeMap();
                _proto.TransportID = TransportID;
System/AssetVersion/AssetVersionUtility.cs
@@ -185,4 +185,15 @@
        return path;
    }
    public static bool IsUnpriorAssetDownLoadOk()
    {
        if (VersionConfig.Get().assetAccess == InstalledAsset.IngoreDownLoad)
        {
            return true;
        }
        return unPriorAssetDownLoadDone;
    }
}
System/BlastFurnace/LingDanTips.cs
@@ -49,6 +49,7 @@
        [SerializeField]
        private Button _makeDanBtn;
        [SerializeField] Button prayDurgBtn;
        [SerializeField] FurnaceFireChooseWin ChooseWin;
        [SerializeField] UIEffect bgEffect;
@@ -95,6 +96,10 @@
            _danDrugCtrl.lockType = EnhanceLockType.KeepVertical;
            _toggleGroup = _danDrugCtrl.GetComponent<ToggleGroup>();
            _makeDanBtn.onClick.AddListener(OnClickMakeDan);
            prayDurgBtn.AddListener(()=>
            {
                WindowCenter.Instance.Open<PrayforDrugWin>();
            });
            FurnaceModel.RefreshStoveModelEvent += RefreshStoveModel;
            FurnaceModel.RefreshAddSpecMatEvent += SetSpecMatItemCell;
            _randomLineCtrl.OnRefreshCell += RefreshRandomLineCell;
System/BlastFurnace/PrayDrugCell.cs
New file
@@ -0,0 +1,55 @@
using UnityEngine;
using UnityEngine.UI;
using EnhancedUI.EnhancedScroller;
using TableConfig;
namespace Snxxz.UI
{
    public class PrayDrugCell : MonoBehaviour
    {
        [SerializeField] CommonItemBaisc itemBaisc;
        [SerializeField] UIEffect effect;
        ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
        PrayForDurgModel prayModel { get { return ModelCenter.Instance.GetModel<PrayForDurgModel>(); } }
        public void SetDisplayModel(int itemId)
        {
            ItemConfig itemConfig = Config.Instance.Get<ItemConfig>(itemId);
            if(itemConfig == null)
            {
                itemBaisc.gameObject.SetActive(false);
                if(effect.IsPlaying)
                {
                    effect.Stop();
                }
            }
            else
            {
                int effectId = prayModel.GetEffectIdById(itemId);
                if(effectId != 0)
                {
                    effect.effect = effectId;
                    effect.Play();
                }
                else
                {
                    if(effect.IsPlaying)
                    {
                        effect.Stop();
                    }
                }
                itemBaisc.gameObject.SetActive(true);
                ItemCellModel cellModel = new ItemCellModel(itemId);
                itemBaisc.Init(cellModel);
                itemBaisc.cellBtn.RemoveAllListeners();
                itemBaisc.cellBtn.AddListener(()=>
                {
                    ItemAttrData attrData = new ItemAttrData(itemId);
                    tipsModel.SetItemTipsModel(attrData);
                });
            }
        }
    }
}
System/BlastFurnace/PrayDrugCell.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: cf5babd996559ba41b01936b0a94c660
timeCreated: 1536667518
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/BlastFurnace/PrayForDurgModel.cs
New file
@@ -0,0 +1,116 @@
using LitJson;
using System;
using System.Collections.Generic;
using System.Linq;
using TableConfig;
namespace Snxxz.UI
{
    public class PrayForDurgModel : Model
    {
        BlastFurnaceModel blastModel { get { return ModelCenter.Instance.GetModel<BlastFurnaceModel>(); } }
        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
        Dictionary<int, int> prayDrugDict = new Dictionary<int, int>(); //丹药id 特效id
        public override void Init()
        {
            SetPrayDrugCondi();
            SetPrayDrugDict();
        }
        public override void UnInit()
        {
        }
        #region 读取本地配置
        public int costMoney { get; private set; }
        public int everyDayNum { get; private set; }
        private void SetPrayDrugCondi()
        {
            FuncConfigConfig func = Config.Instance.Get<FuncConfigConfig>("GodAlchemy");
            costMoney = int.Parse(func.Numerical2);
            everyDayNum = int.Parse(func.Numerical3);
        }
        /// <summary>
        /// 得到所有祈求丹药数据
        /// </summary>
        private Dictionary<int, int> SetPrayDrugDict()
        {
            FuncConfigConfig funcConfig = Config.Instance.Get<FuncConfigConfig>("GodAlchemyShow");
            JsonData jsonData = JsonMapper.ToObject(funcConfig.Numerical1);
            prayDrugDict.Clear();
            if (jsonData.IsArray)
            {
                for (int i = 0; i < jsonData.Count; i++)
                {
                    if (jsonData[i].IsArray)
                    {
                        int itemId = int.Parse(jsonData[i][0].ToString());
                        if (jsonData[i].Count > 1)
                        {
                            int effectId = int.Parse(jsonData[i][1].ToString());
                            prayDrugDict.Add(itemId, effectId);
                        }
                        else
                        {
                            prayDrugDict.Add(itemId, 0);
                        }
                    }
                }
            }
            return prayDrugDict;
        }
        #endregion
        #region 协议
        public int itemId { get; private set; }
        public int alreadyPrayNum { get; private set;}
        public void SetPrayResult(HA321_tagMCPrayElixirResult elixirResult)
        {
            itemId = (int)elixirResult.ItemID;
            alreadyPrayNum = elixirResult.PrayCnt;
        }
        public void SendPrayElixir()
        {
            CA514_tagCMPrayElixir prayElixir = new CA514_tagCMPrayElixir();
            GameNetSystem.Instance.SendInfo(prayElixir);
        }
        #endregion
        List<int> prayIdlist = new List<int>();
        public List<int> GetPrayDruglist()
        {
            prayIdlist.Clear();
            List<AlchemyConfig> configs = blastModel.alchemyModellist;
            foreach(var key in prayDrugDict.Keys)
            {
                for (int i = 0; i < configs.Count; i++)
                {
                    if (blastModel.StoveLV >= configs[i].BlastFurnaceLV)
                    {
                        List<int> idlist = blastModel.GetPreviewMakeDruglist(configs[i]).Keys.ToList();
                        if(idlist.Contains(key))
                        {
                            AttrFruitConfig fruitConfig = Config.Instance.Get<AttrFruitConfig>(key);
                            if (!playerPack.IsReachMaxUseDrug(fruitConfig))
                            {
                                prayIdlist.Add(key);
                            }
                            break;
                        }
                    }
                }
            }
            return prayIdlist;
        }
        public int GetEffectIdById(int drugId)
        {
            int effectId = 0;
            prayDrugDict.TryGetValue(drugId,out effectId);
            return effectId;
        }
    }
}
System/BlastFurnace/PrayForDurgModel.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 9daef4307100edf43a11679d8c407d48
timeCreated: 1536671165
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/BlastFurnace/PrayforDrugWin.cs
New file
@@ -0,0 +1,116 @@
using System;
using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;
namespace Snxxz.UI
{
    public class PrayforDrugWin : Window
    {
        [SerializeField] ScrollerController ctrl;
        [SerializeField] Button prayBtn;
        [SerializeField] Text costText;
        [SerializeField] Button closeBtn;
        [Header("最大格子数")]
        [SerializeField] int gridCount = 100;
        [Header("每行数量")]
        [SerializeField] int columnCout = 5;
        PrayForDurgModel PrayModel { get { return ModelCenter.Instance.GetModel<PrayForDurgModel>(); } }
        List<int> praylist;
        protected override void BindController()
        {
            ctrl.OnRefreshCell += RefreshPrayDrug;
        }
        protected override void AddListeners()
        {
            closeBtn.AddListener(CloseClick);
            prayBtn.AddListener(ClickPrayBtn);
        }
        protected override void OnPreOpen()
        {
            praylist = PrayModel.GetPrayDruglist();
            UpdatePrayPack();
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
        }
        protected override void OnAfterClose()
        {
        }
        private void SetDisplayUI()
        {
            costText.text = PrayModel.costMoney.ToString();
        }
        private void ClickPrayBtn()
        {
            if(PrayModel.alreadyPrayNum >= PrayModel.everyDayNum)
            {
                MessageWin.Inst.ShowFixedTip("今日祈福次数已满");
                return;
            }
            if(UIHelper.GetMoneyCnt(1) >= (ulong)PrayModel.costMoney)
            {
                PrayModel.SendPrayElixir();
            }
            else
            {
                WindowCenter.Instance.Open<RechargeTipWin>();
            }
        }
        private void UpdatePrayPack()
        {
            if (ctrl.GetNumberOfCells(ctrl.m_Scorller) == 0)
            {
                ctrl.Refresh();
                var _line = gridCount / columnCout;
                for (int i = 0; i < _line; i++)
                {
                    ctrl.AddCell(ScrollerDataType.Header, i);
                }
                ctrl.Restart();
            }
            else
            {
                ctrl.m_Scorller.RefreshActiveCellViews();
            }
        }
        private void RefreshPrayDrug(ScrollerDataType type, CellView cell)
        {
            var _line = cell.index;
            int length = cell.transform.childCount;
            for (int i = 0; i < length; i++)
            {
                var _index = _line * length + i;
                PrayDrugCell prayCell = cell.transform.GetChild(i).GetComponent<PrayDrugCell>();
                if(_index < praylist.Count)
                {
                    prayCell.SetDisplayModel(praylist[_index]);
                }
                else
                {
                    prayCell.SetDisplayModel(0);
                }
            }
        }
    }
}
System/BlastFurnace/PrayforDrugWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: e78dc3625a4636348b8ef7501bdb51a2
timeCreated: 1536667028
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/DailyQuest/DailyQuestModel.cs
@@ -30,31 +30,26 @@
        public Redpoint trialExchangeRedpoint = new Redpoint(EVERYDAY_REDPOINTID, TRIALEXCHANGE_REDPOINTID);
        int m_DailyQuestTotalActiveValue = 150;
        public int dailyQuestTotalActiveValue
        {
        public int dailyQuestTotalActiveValue {
            get { return m_DailyQuestTotalActiveValue; }
        }
        int m_CurrentDailyQuest = 0;
        public int currentDailyQuest
        {
        public int currentDailyQuest {
            get { return this.m_CurrentDailyQuest; }
            set { this.m_CurrentDailyQuest = value; }
        }
        int m_CurrentRewardStageIndex = 0;
        public int currentRewardStageIndex
        {
        public int currentRewardStageIndex {
            get { return m_CurrentRewardStageIndex; }
            private set { m_CurrentRewardStageIndex = value; }
        }
        int m_TotalActiveValue = 0;
        public int totalActiveValue
        {
        public int totalActiveValue {
            get { return m_TotalActiveValue; }
            private set
            {
            private set {
                if (m_TotalActiveValue != value)
                {
                    m_TotalActiveValue = value;
@@ -68,11 +63,9 @@
        }
        int m_GotableRealmPoint;
        public int gotableRealmPoint
        {
        public int gotableRealmPoint {
            get { return m_GotableRealmPoint; }
            private set
            {
            private set {
                if (m_GotableRealmPoint != value)
                {
                    m_GotableRealmPoint = value;
@@ -210,29 +203,26 @@
            return false;
        }
        public bool TestDailyQuestUnLock(int _dailyQuestId)
        public bool IsDailyQuestUnLock(int _dailyQuestId)
        {
            var config = Config.Instance.Get<DailyQuestConfig>(_dailyQuestId);
            var unlockFunctionId = config.UnLockFuncID;
            var defaultUnlock = unlockFunctionId == 0 || FuncOpen.Instance.IsFuncOpen(unlockFunctionId);
            switch ((DailyQuestType)_dailyQuestId)
            {
                case DailyQuestType.FairyFeast:
                case DailyQuestType.FairyTask:
                case DailyQuestType.FairyGrabBoss:
                    var _dailyConfig = Config.Instance.Get<DailyQuestConfig>(_dailyQuestId);
                    return PlayerDatas.Instance.baseData.Family > 0 &&
                        (_dailyConfig.UnLockFuncID == 0 || FuncOpen.Instance.IsFuncOpen(_dailyConfig.UnLockFuncID));
                    return defaultUnlock && PlayerDatas.Instance.baseData.Family > 0;
                case DailyQuestType.RuneTowerSweep:
                    return ModelCenter.Instance.GetModel<RuneTowerModel>().yesterdayPassFloor > 0;
                case DailyQuestType.GuardSky:
                    var _dailyGuardSkyConfig = Config.Instance.Get<DailyQuestConfig>(_dailyQuestId);
                    bool _isGuardSkyOpen = _dailyGuardSkyConfig.UnLockFuncID == 0 || FuncOpen.Instance.IsFuncOpen(_dailyGuardSkyConfig.UnLockFuncID);
                    return fairyModel.SatisfyGuardSkyFairyLv() && _isGuardSkyOpen;
                    return defaultUnlock && fairyModel.SatisfyGuardSkyFairyLv();
                case DailyQuestType.FairyLeague:
                    var _dailyFairyLeagueConfig = Config.Instance.Get<DailyQuestConfig>(_dailyQuestId);
                    bool _isFairyLeagueOpen = _dailyFairyLeagueConfig.UnLockFuncID == 0 || FuncOpen.Instance.IsFuncOpen(_dailyFairyLeagueConfig.UnLockFuncID);
                    return fairyModel.SatisfyOpenFairyLeagueLv() && _isFairyLeagueOpen;
                    return defaultUnlock && fairyModel.SatisfyOpenFairyLeagueLv();
                default:
                    var dailyConfig = Config.Instance.Get<DailyQuestConfig>(_dailyQuestId);
                    return dailyConfig.UnLockFuncID == 0 || FuncOpen.Instance.IsFuncOpen(dailyConfig.UnLockFuncID);
                    return defaultUnlock;
            }
        }
@@ -267,14 +257,7 @@
                            case 16:
                                return ModelCenter.Instance.GetModel<VipModel>().GetVipPrivilegeCnt(VipPrivilegeType.BossHomeAwardLimit);
                            default:
                                if (dailyQuestOpenTime.DayReKind > 0)
                                {
                                    return dailyQuestOpenTime.DayTimes;
                                }
                                else
                                {
                                    return dailyQuestOpenTime.WeekTimes;
                                }
                                return dailyQuestOpenTime.DayReKind > 0 ? dailyQuestOpenTime.DayTimes : dailyQuestOpenTime.WeekTimes;
                        }
                    }
                    else
@@ -705,8 +688,8 @@
        private int TimeLimitQuestCompare(int _lhs, int _rhs)
        {
            var unLock1 = TestDailyQuestUnLock(_lhs);
            var unLock2 = TestDailyQuestUnLock(_rhs);
            var unLock1 = IsDailyQuestUnLock(_lhs);
            var unLock2 = IsDailyQuestUnLock(_rhs);
            if (unLock1 && !unLock2)
            {
@@ -794,7 +777,7 @@
        public DailyQuestState GetQuestState(int _dailyQuestId)
        {
            var isUnLocked = TestDailyQuestUnLock(_dailyQuestId);
            var isUnLocked = IsDailyQuestUnLock(_dailyQuestId);
            if (!isUnLocked)
            {
                return DailyQuestState.Locked;
System/Dogz/DogzItemCell.cs
@@ -15,7 +15,6 @@
        {
            dogzModel.GetDogzItemList();
            ItemModel model = null;
            DebugEx.Log("Display:" + index + "数据长度:" + dogzModel.dogzItemList.Count);
            if (index < dogzModel.dogzItemList.Count)
            {
                model = dogzModel.dogzItemList[index];
System/Dungeon/DungeonModel.cs
@@ -1165,7 +1165,7 @@
        public void RequestChallangeDungeon(int _dataMapId, int _lineId)
        {
            if (!AssetSource.sceneFromEditor && VersionConfig.Get().assetAccess != InstalledAsset.IngoreDownLoad && !AssetVersionUtility.unPriorAssetDownLoadDone)
            if (!AssetSource.sceneFromEditor && !AssetVersionUtility.IsUnpriorAssetDownLoadOk())
            {
                var mapResConfig = DTCA127_tagMCStartChangeMap.GetMapResourcesConfig(_dataMapId, _lineId);
                var assetVersion = AssetVersionUtility.GetAssetVersion(StringUtility.Contact("maps/", mapResConfig.MapResources.ToLower()));
System/FairyAu/FairyGrabBossModel.cs
@@ -414,7 +414,7 @@
            var config = Config.Instance.Get<BossInfoConfig>(bossId);
            if (config != null)
            {
                if (!mapModel.IsMapUnLocked(config.MapID))
                if (!mapModel.IsMapUnlocked(config.MapID))
                {
                    _error = 6;
                    return false;
System/FindPrecious/WorldBossModel.cs
@@ -87,7 +87,7 @@
                var bossId = sortedBossIds[i];
                var config = Config.Instance.Get<WorldBossConfig>(bossId);
                var mapId = config.MapID;
                if (mapModel.IsMapUnLocked(mapId))
                if (mapModel.IsMapUnlocked(mapId))
                {
                    activedBossIds.Add(bossId);
                }
@@ -156,7 +156,7 @@
        public bool isUnLocked {
            get {
                var config = Config.Instance.Get<WorldBossConfig>(id);
                var mapUnLocked = mapModel.IsMapUnLocked(config.MapID);
                var mapUnLocked = mapModel.IsMapUnlocked(config.MapID);
                return mapUnLocked;
            }
        }
System/Message/RichMoveEvent.cs
@@ -145,7 +145,7 @@
                return;
            }
            if (mapModel.IsMapUnLocked(_mapId) == false)
            if (mapModel.IsMapUnlocked(_mapId) == false)
            {
                SysNotifyMgr.Instance.ShowTip("Map_Delivery");
                return;
System/Rune/RuneModel.cs
@@ -691,10 +691,6 @@
                    }
                }
            }
            if (OnRefreshRuneHole != null)
            {
                OnRefreshRuneHole();
            }
            for (int i = 0; i < RUNE_HOLE_COUNT; i++)
            {
                if (!serverInited)
@@ -702,7 +698,7 @@
                    break;
                }
                int k = 1 << i;
                var oldOpen = (holeState & k) == k;
                var oldOpen = (oldHoleState & k) == k;
                if (!oldOpen && IsRuneHoleOpen(i))
                {
                    if (openNewHoleEvent != null)
@@ -711,6 +707,10 @@
                    }
                }
            }
            if (OnRefreshRuneHole != null)
            {
                OnRefreshRuneHole();
            }
            UpdateRedpoint();
            UpdateBreakRedpoint();
            UpdateSpecialHoleRedpoint();
System/Rune/RuneMosaicWin.cs
@@ -67,6 +67,8 @@
        }
        bool m_IsRuneLvUp = false;
        int m_SpecialHoleUnlocking = -1;
        Coroutine m_CacheCoroutine;
        #region Built-in
        protected override void BindController()
        {
@@ -102,6 +104,7 @@
            m_ContainerSpecial.gameObject.SetActive(false);
            OpenOrCloseSelect(false);
            model.sltRuneHole = -1;
            m_SpecialHoleUnlocking = -1;
            foreach (var _hole in runeHoleDatas)
            {
                _hole.SetSelect(false);
@@ -123,6 +126,14 @@
            model.OnRefreshRuneHole -= OnRuneHoleRefresh;
            model.OnRefreshRuneExp -= OnUpdateRuneHoleInfo;
            model.openNewHoleEvent -= OpenNewHoleEvent;
            m_SpecialHoleUnlocking = -1;
            if (m_CacheCoroutine != null)
            {
                StopCoroutine(m_CacheCoroutine);
                m_CacheCoroutine = null;
            }
        }
        protected override void OnAfterClose()
@@ -134,8 +145,17 @@
        {
            if (model.IsSpeicalHole(hole))
            {
                m_SpecialHoleUnlocking = hole;
                EffectMgr.Instance.PlayUIEffect(3068, 2500, runeHoleDatas[hole].Container.parent, false);
                m_CacheCoroutine = StartCoroutine(Co_RefreshHole());
            }
        }
        IEnumerator Co_RefreshHole()
        {
            yield return WaitingForSecondConst.WaitMS800;
            m_SpecialHoleUnlocking = -1;
            OnRuneHoleRefresh();
        }
        private void UnlockSpecialHole()
@@ -227,7 +247,7 @@
        void OnRuneHoleClick(int _hole)
        {
            if (model.IsRuneHoleOpen(_hole))
            if (model.IsRuneHoleOpen(_hole) && m_SpecialHoleUnlocking != _hole)
            {
                for (int i = 0; i < runeHoleDatas.Count; i++)
                {
@@ -284,6 +304,10 @@
            model.runeLevelUpRedpoint.state = RedPointState.None;
            model.runeReplaceRedpoint.state = RedPointState.None;
            if (model.sltRuneHole == -1 || !model.IsRuneHoleOpen(model.sltRuneHole))
            {
                return;
            }
            if (model.sltRuneHole == m_SpecialHoleUnlocking)
            {
                return;
            }
@@ -403,7 +427,7 @@
            for (int i = 0; i < runeHoleDatas.Count; i++)
            {
                RuneData data = model.GetHoleRune(i);
                runeHoleDatas[i].SetRuneHole(!model.IsRuneHoleOpen(i));
                runeHoleDatas[i].SetRuneHole(!model.IsRuneHoleOpen(i) || m_SpecialHoleUnlocking == i);
                if (data == null || !model.IsRuneHoleOpen(i))
                {
                    runeHoleDatas[i].Display(0, 0);
System/Team/TeamData.cs
@@ -49,6 +49,11 @@
            this.levelMax = _serverInfo.ReqMaxLV;
        }
        public static int Sort(TheirTeam lhs, TheirTeam rhs)
        {
            return lhs.memberCount < 4 && lhs.memberCount > rhs.memberCount ? -1 : 1;
        }
    }
    public class MyTeam
@@ -108,7 +113,7 @@
                for (int i = 0; i < members.Count; i++)
                {
                    var member = members[i];
                    if (member.id != PlayerDatas.Instance.baseData.PlayerID
                    if (member.id != PlayerDatas.Instance.baseData.PlayerID
                        && member.mapId == PlayerDatas.Instance.baseData.MapID)
                    {
                        count++;
System/Team/TeamModel.cs
@@ -598,7 +598,7 @@
        public void RequestAssistAutoMatch()
        {
            if (!myTeam.inTeam)
            if (!myTeam.inTeam && !isMatching)
            {
                var sendInfo = new CB907_tagCGAutoMatchTeam();
                sendInfo.TagMapID = 2;
@@ -693,19 +693,12 @@
        public void OnGetTheirTeams(HB904_tagGCSceneTeamRefresh _teamInfo)
        {
            theirTeams.Clear();
            for (int i = 0; i < _teamInfo.SceneTeamList.Length; i++)
            {
                theirTeams.Add(new TheirTeam(_teamInfo.SceneTeamList[i]));
            }
            theirTeams.Sort(
                (TheirTeam a, TheirTeam b) =>
                {
                    return a.memberCount < 4 && a.memberCount > b.memberCount ? -1 : 1;
                }
                );
            theirTeams.Sort(TheirTeam.Sort);
            if (theirTeamListRefreshEvent != null)
            {
                theirTeamListRefreshEvent();
@@ -715,19 +708,16 @@
        public void OnGetTheirTeams(HB909_tagGCTagMapTeamList _teamInfo)
        {
            theirTeams.Clear();
            for (int i = 0; i < _teamInfo.TeamList.Length; i++)
            {
                theirTeams.Add(new TheirTeam((int)_teamInfo.TagMapID, _teamInfo.IsTagEx == 1 ? _teamInfo.TagMapEx : -1, _teamInfo.MatchState == 1, _teamInfo.TeamList[i]));
                var mapId = (int)_teamInfo.TagMapID;
                var isTagEx = _teamInfo.IsTagEx == 1 ? _teamInfo.TagMapEx : -1;
                var matchState = _teamInfo.MatchState == 1;
                theirTeams.Add(new TheirTeam(mapId, isTagEx, matchState, _teamInfo.TeamList[i]));
            }
            theirTeams.Sort(
                (TheirTeam a, TheirTeam b) =>
                {
                    return a.memberCount < 4 && a.memberCount > b.memberCount ? -1 : 1;
                }
                );
            theirTeams.Sort(TheirTeam.Sort);
            if (theirTeamListRefreshEvent != null)
            {
                theirTeamListRefreshEvent();
@@ -997,7 +987,7 @@
        public void OnUpdateDungeonPrepareState(HB911_tagGCTeamEnterFBPrepare _serverInfo)
        {
            if (!AssetSource.sceneFromEditor && VersionConfig.Get().assetAccess != InstalledAsset.IngoreDownLoad && !AssetVersionUtility.unPriorAssetDownLoadDone)
            if (!AssetSource.sceneFromEditor && !AssetVersionUtility.IsUnpriorAssetDownLoadOk())
            {
                RequestPrepareEnterDungeon(false);
                return;
System/WindowBase/ModelCenter.cs
@@ -192,6 +192,7 @@
            RegisterModel<TreasureSoulModel>();
            RegisterModel<FairyGrabBossModel>();
            RegisterModel<GodBeastModel>();
            RegisterModel<PrayForDurgModel>();
            inited = true;
        }
System/WorldMap/LocalMapEventPointToggle.cs
@@ -38,14 +38,14 @@
            m_LayoutLeft.gameObject.SetActive(mapConfig.MapFBType == (int)MapType.OpenCountry);
            DrawEventInfo();
            OnSelected(model.selectedLocalMapEventPoint);
            model.selectLocalMapEventPointEvent += OnSelected;
            OnSelected(model.selectedMapEventPoint);
            model.selectMapEventPointEvent += OnSelected;
        }
        public override void Dispose()
        {
            base.Dispose();
            model.selectLocalMapEventPointEvent -= OnSelected;
            model.selectMapEventPointEvent -= OnSelected;
        }
        private void Awake()
@@ -89,8 +89,8 @@
        private void MoveToNpc()
        {
            var mapNPCConfig = Config.Instance.Get<MapEventPointConfig>(m_EventId);
            MapTransferUtility.Instance.MissionFlyTo(PlayerDatas.Instance.baseData.MapID, mapNPCConfig.NPCID);
            var config = Config.Instance.Get<MapEventPointConfig>(m_EventId);
            MapTransferUtility.Instance.MissionFlyTo(PlayerDatas.Instance.baseData.MapID, config.NPCID);
            WindowCenter.Instance.Close<WorldMapWin>();
            WindowCenter.Instance.Close<LocalMapWin>();
@@ -99,7 +99,7 @@
        private void SelectEventPoint()
        {
            model.selectedLocalMapEventPoint = m_EventId;
            model.selectedMapEventPoint = m_EventId;
        }
        private void OnSelected(int _event)
System/WorldMap/LocalMapFindPath.cs
@@ -64,11 +64,11 @@
            DrawFunctionNPCs();
            DrawEventPoints();
            m_HeroHead.transform.SetAsLastSibling();
            FoucsEventPoint(model.selectedLocalMapEventPoint);
            FoucsEventPoint(model.selectedMapEventPoint);
            m_BoundDrag.onBeginDrag.RemoveAllListeners();
            m_BoundDrag.onBeginDrag.AddListener(OnBeginDrag);
            model.selectLocalMapEventPointEvent += FoucsEventPoint;
            model.selectMapEventPointEvent += FoucsEventPoint;
            var hero = PlayerDatas.Instance.hero;
            if (hero != null)
@@ -95,7 +95,7 @@
                hero.OnPathFindStop -= OnHeroStopMove;
            }
            model.selectLocalMapEventPointEvent -= FoucsEventPoint;
            model.selectMapEventPointEvent -= FoucsEventPoint;
            m_BoundDrag.onBeginDrag.RemoveAllListeners();
            for (int i = 0; i < tagBehaviours.Count; i++)
@@ -138,7 +138,7 @@
            if (RectTransformUtility.RectangleContainsScreenPoint((RectTransform)this.transform, Input.mousePosition, CameraManager.uiCamera)
                && !RectTransformUtility.RectangleContainsScreenPoint(m_EventPointInstroduce.containerDetails, Input.mousePosition, CameraManager.uiCamera))
            {
                model.selectedLocalMapEventPoint = -1;
                model.selectedMapEventPoint = -1;
            }
        }
@@ -384,7 +384,7 @@
        private void FoucsEventPoint(int _eventPoint)
        {
            if (model.selectedLocalMapEventPoint != -1)
            if (model.selectedMapEventPoint != -1)
            {
                var config = Config.Instance.Get<MapEventPointConfig>(_eventPoint);
                var monsterRefreshConfig = Config.Instance.Get<MonsterRefreshPointConfig>(config.NPCID);
@@ -403,7 +403,7 @@
                }
                m_EventPointInstroduce.gameObject.SetActive(true);
                m_EventPointInstroduce.Display(model.selectedLocalMapEventPoint, m_SelecteEventPointSign);
                m_EventPointInstroduce.Display(model.selectedMapEventPoint, m_SelecteEventPointSign);
            }
            else
            {
@@ -447,7 +447,7 @@
        private void OnBeginDrag()
        {
            model.selectedLocalMapEventPoint = -1;
            model.selectedMapEventPoint = -1;
        }
        public struct LocalMap
System/WorldMap/LocalMapTag.cs
@@ -150,7 +150,7 @@
                        WindowCenter.Instance.Close<LocalMapWin>();
                        WindowCenter.Instance.Open<MainInterfaceWin>();
                        MapTransferUtility.Instance.MoveToNPC(npcId);
                        model.selectedLocalMapEventPoint = -1;
                        model.selectedMapEventPoint = -1;
                    }
                    break;
            }
System/WorldMap/LocalMapWin.cs
@@ -143,12 +143,12 @@
            var recommendHangPoint = model.GetRecommendHangPoint(mapId);
            if (recommendHangPoint == 0)
            {
                model.selectedLocalMapEventPoint = -1;
                model.selectedMapEventPoint = -1;
            }
            else
            {
                model.selectedLocalMapEventPoint = recommendHangPoint;
                m_EventPointToggleGroup.MoveToCenter(visableEventPoints.IndexOf(model.selectedLocalMapEventPoint));
                model.selectedMapEventPoint = recommendHangPoint;
                m_EventPointToggleGroup.MoveToCenter(visableEventPoints.IndexOf(model.selectedMapEventPoint));
            }
        }
@@ -176,16 +176,16 @@
        private void GotoHangUp()
        {
            if (model.selectedLocalMapEventPoint != -1)
            if (model.selectedMapEventPoint != -1)
            {
                var config = Config.Instance.Get<MapEventPointConfig>(this.model.selectedLocalMapEventPoint);
                var config = Config.Instance.Get<MapEventPointConfig>(this.model.selectedMapEventPoint);
                WindowCenter.Instance.Close<WorldMapWin>();
                WindowCenter.Instance.Close<LocalMapWin>();
                WindowCenter.Instance.Open<MainInterfaceWin>();
                MapTransferUtility.Instance.MoveToNPC(config.NPCID);
            }
            model.selectedLocalMapEventPoint = -1;
            model.selectedMapEventPoint = -1;
        }
        private void GotoWorldMap()
@@ -210,7 +210,7 @@
        private void UnSelectedEventPoint()
        {
            model.selectedLocalMapEventPoint = -1;
            model.selectedMapEventPoint = -1;
        }
        private void DisplayLines(List<MapLine> _mapLines)
System/WorldMap/MapModel.cs
@@ -13,50 +13,49 @@
    public class MapModel : Model, IBeforePlayerDataInitialize, IAfterPlayerDataInitialize, IPlayerLoginOk, IMapInitOk
    {
        int m_SelectedLocalMapEventPoint;
        public int selectedLocalMapEventPoint {
            get { return this.m_SelectedLocalMapEventPoint; }
            set {
                if (m_SelectedLocalMapEventPoint != value)
                {
                    m_SelectedLocalMapEventPoint = value;
                    if (selectLocalMapEventPointEvent != null)
                    {
                        selectLocalMapEventPointEvent(this.m_SelectedLocalMapEventPoint);
                    }
                }
            }
        }
        Dictionary<int, WorldMapArea> worldMapAreas = new Dictionary<int, WorldMapArea>();
        Dictionary<int, bool> worldMapUnLockStates = new Dictionary<int, bool>();
        Dictionary<int, List<int>> localMapEventPoints = new Dictionary<int, List<int>>();
        Dictionary<int, List<string>> mapFunctionNPCsToRefreshID = new Dictionary<int, List<string>>();
        Dictionary<int, List<string>> mapCollectNPCsToRefreshID = new Dictionary<int, List<string>>();
        Dictionary<int, List<MapLine>> mapLines = new Dictionary<int, List<MapLine>>();
        Dictionary<int, List<MapLine>> allMapLines = new Dictionary<int, List<MapLine>>();
        List<int> sortedMapEventPoints = new List<int>();
        List<int> sortedHangUpPoints = new List<int>();
        List<int> sortedMaps = new List<int>();
        List<MapLine> sortedMapLines = new List<MapLine>();
        int m_NewUnLockedMap = 0;
        public int newUnLockedMap {
            get { return m_NewUnLockedMap; }
            set { m_NewUnLockedMap = value; }
        PlayerTaskDatas taskModel { get { return ModelCenter.Instance.GetModel<PlayerTaskDatas>(); } }
        FairyGrabBossModel fairyGrabBossModel { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } }
        int m_NewUnlockedMap = 0;
        public int newUnlockedMap {
            get { return m_NewUnlockedMap; }
            set { m_NewUnlockedMap = value; }
        }
        public int newUnLockMapsTip {
        public int newUnlockMapTip {
            get { return LocalSave.GetInt(StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "NewUnLockMapsTip")); }
            set { LocalSave.SetInt(StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "NewUnLockMapsTip"), value); }
        }
        int m_SelectedMapEventPoint;
        public int selectedMapEventPoint {
            get { return this.m_SelectedMapEventPoint; }
            set {
                if (m_SelectedMapEventPoint != value)
                {
                    m_SelectedMapEventPoint = value;
                    if (selectMapEventPointEvent != null)
                    {
                        selectMapEventPointEvent(this.m_SelectedMapEventPoint);
                    }
                }
            }
        }
        public int wannaLookLocalMap { get; set; }
        int mapUnLockIndex = 0;
        PlayerTaskDatas taskModel { get { return ModelCenter.Instance.GetModel<PlayerTaskDatas>(); } }
        FairyGrabBossModel fairyGrabBossModel { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } }
        public event Action<int> selectLocalMapEventPointEvent;
        public event Action<int> selectMapEventPointEvent;
        public event Action<int> mapLinesUpdateEvent;
        public override void Init()
@@ -77,7 +76,7 @@
        public void OnBeforePlayerDataInitialize()
        {
            mapUnLockIndex = 0;
            newUnLockedMap = 0;
            newUnlockedMap = 0;
        }
        public void OnAfterPlayerDataInitialize()
@@ -86,15 +85,15 @@
        public void OnPlayerLoginOk()
        {
            UpdateMapsUnLockedState();
            newUnLockedMap = 0;
            UpdateMapsUnlockedState();
            newUnlockedMap = 0;
        }
        public void OnMapInitOk()
        {
            if (newUnLockMapsTip == PlayerDatas.Instance.baseData.MapID)
            if (newUnlockMapTip == PlayerDatas.Instance.baseData.MapID)
            {
                newUnLockMapsTip = 0;
                newUnlockMapTip = 0;
            }
        }
@@ -113,17 +112,14 @@
                return;
            }
            if (worldMapUnLockStates.ContainsKey(_mapId))
            if (!worldMapUnLockStates.ContainsKey(_mapId))
            {
                if (!worldMapUnLockStates[_mapId])
                {
                    SysNotifyMgr.Instance.ShowTip("Map_Delivery");
                    return;
                }
                return;
            }
            else
            if (!worldMapUnLockStates[_mapId])
            {
                //未知的地图
                SysNotifyMgr.Instance.ShowTip("Map_Delivery");
                return;
            }
@@ -132,26 +128,13 @@
            MapTransferUtility.Send_WorldTransfer(_mapId, position, MapTransferType.WorldTransport, (byte)_lineId, 0);
        }
        public void RequestFlyToEventPoint(int _eventPoint)
        {
            GA_Hero _hero = PlayerDatas.Instance.hero;
            if (_hero != null)
            {
                _hero.Behaviour.StopHandupAI();
                _hero.Behaviour.StopKillUntilDieAI();
            }
            var mapNPCConfig = Config.Instance.Get<MapEventPointConfig>(_eventPoint);
            MapTransferUtility.Instance.MissionFlyTo(wannaLookLocalMap, mapNPCConfig.NPCID);
        }
        public void RequestSelectedLine(int _lineId)
        {
            GA_Hero _hero = PlayerDatas.Instance.hero;
            if (_hero != null)
            var hero = PlayerDatas.Instance.hero;
            if (hero != null)
            {
                _hero.Behaviour.StopHandupAI();
                _hero.Behaviour.StopKillUntilDieAI();
                hero.Behaviour.StopHandupAI();
                hero.Behaviour.StopKillUntilDieAI();
            }
            if (PlayerDatas.Instance.baseData.FBID != _lineId)
@@ -186,13 +169,13 @@
        public List<MapLine> GetMapLines(int _mapId)
        {
            sortedMapLines.Clear();
            if (mapLines.ContainsKey(_mapId))
            var mapLines = new List<MapLine>();
            if (allMapLines.ContainsKey(_mapId))
            {
                sortedMapLines.AddRange(mapLines[_mapId]);
                CheckActivityLine(_mapId);
                sortedMapLines.Sort(SortMaplines);
                return sortedMapLines;
                mapLines.AddRange(allMapLines[_mapId]);
                CheckActivityLine(_mapId, mapLines);
                mapLines.Sort(SortMaplines);
                return mapLines;
            }
            else
            {
@@ -200,27 +183,32 @@
            }
        }
        void CheckActivityLine(int _mapId)
        void CheckActivityLine(int _mapId, List<MapLine> mapLines)
        {
            var activityLine = 0;
            fairyGrabBossModel.TryGetFairyGrabBossLine(out activityLine);
            if (activityLine != 0)
            {
                var index = sortedMapLines.FindIndex((x) =>
                var index = mapLines.FindIndex((x) =>
                {
                    return activityLine + 1 == x.lineIndex;
                });
                if (fairyGrabBossModel.InActivityTime ||
                    PlayerDatas.Instance.baseData.FBID == activityLine)
                bool needDisplayActivityLine = fairyGrabBossModel.InActivityTime ||
                    PlayerDatas.Instance.baseData.FBID == activityLine;
                if (index == -1)
                {
                    if (index == -1)
                    if (needDisplayActivityLine)
                    {
                        sortedMapLines.Add(new MapLine(_mapId, activityLine + 1, 0, 0));
                        mapLines.Add(new MapLine(_mapId, activityLine + 1, 0, 0));
                    }
                }
                else if (index != -1)
                else
                {
                    sortedMapLines.RemoveAt(index);
                    if (!needDisplayActivityLine)
                    {
                        mapLines.RemoveAt(index);
                    }
                }
            }
        }
@@ -231,10 +219,12 @@
            {
                var mapState = _serverInfo.MapStateList[i];
                var mapId = (int)mapState.MapID;
                var lines = mapLines[mapId] = new List<MapLine>();
                var lines = allMapLines[mapId] = new List<MapLine>();
                for (int j = 0; j < mapState.LineCnt; j++)
                {
                    lines.Add(new MapLine(mapId, j + 1, (int)mapState.LineCurPlayerCntList[j], (int)mapState.LineMaxPlayerCntList[j]));
                    var playerCount = (int)mapState.LineCurPlayerCntList[j];
                    var playerMaxCount = (int)mapState.LineMaxPlayerCntList[j];
                    lines.Add(new MapLine(mapId, j + 1, playerCount, playerMaxCount));
                }
                if (mapLinesUpdateEvent != null)
@@ -247,7 +237,7 @@
        public void UpdateDungeonMapLines(HA007_tagGCFBLinePlayerCnt _serverInfo)
        {
            var mapId = (int)_serverInfo.MapID;
            var lines = mapLines[mapId] = new List<MapLine>();
            var lines = allMapLines[mapId] = new List<MapLine>();
            for (int i = 0; i < _serverInfo.Count; i++)
            {
@@ -301,35 +291,6 @@
            }
            return null;
        }
        public int GetNextMap(int _mapId)
        {
            for (int i = sortedMaps.Count - 1; i >= 0; i--)
            {
                int mapId = sortedMaps[i];
                if (_mapId == mapId)
                {
                    var nextMap = sortedMaps[Mathf.Clamp(i - 1, 0, sortedMaps.Count - 1)];
                    return nextMap;
                }
            }
            return -1;
        }
        public int GetLatestUnLockHangUpMap()
        {
            for (int i = 0; i < sortedMaps.Count; i++)
            {
                int mapId = sortedMaps[i];
                if (GeneralConfig.Instance.autoOnHookMap.Contains(mapId) && IsMapUnLocked(mapId))
                {
                    return mapId;
                }
            }
            return GeneralConfig.Instance.autoOnHookMap[GeneralConfig.Instance.autoOnHookMap.Count - 1];
        }
        public int GetRecommendHangPoint(int _mapId)
@@ -414,7 +375,7 @@
            for (int i = 0; i < sortedHangUpPoints.Count; i++)
            {
                var config = Config.Instance.Get<MapEventPointConfig>(sortedHangUpPoints[i]);
                if (IsMapUnLocked(config.MapID))
                if (IsMapUnlocked(config.MapID))
                {
                    unLockedHangeUpPoints.Add(sortedHangUpPoints[i]);
                }
@@ -476,11 +437,7 @@
            return recommendPoint;
        }
        public void ConfirmNewMap(int _mapId)
        {
        }
        public bool IsMapUnLocked(int _mapId)
        public bool IsMapUnlocked(int _mapId)
        {
            if (worldMapUnLockStates.ContainsKey(_mapId))
            {
@@ -492,27 +449,29 @@
            }
        }
        private void UpdateMapsUnLockedState()
        private void UpdateMapsUnlockedState()
        {
            foreach (var mapId in worldMapAreas.Keys)
            {
                var unLocked = CheckMapUnLocked(mapId);
                if (worldMapUnLockStates.ContainsKey(mapId) && !worldMapUnLockStates[mapId] && unLocked && mapId != 10010)
                var canUnlock = CanMapUnlock(mapId);
                if (worldMapUnLockStates.ContainsKey(mapId)
                    && !worldMapUnLockStates[mapId]
                    && canUnlock && mapId != 10010)
                {
                    newUnLockedMap = mapId;
                    newUnLockMapsTip = mapId;
                    newUnlockedMap = mapId;
                    newUnlockMapTip = mapId;
                }
                worldMapUnLockStates[mapId] = unLocked;
                worldMapUnLockStates[mapId] = canUnlock;
            }
        }
        private bool CheckMapUnLocked(int _mapId)
        private bool CanMapUnlock(int _mapId)
        {
            var config = Config.Instance.Get<MapConfig>(_mapId);
            var playerLevel = PlayerDatas.Instance.baseData.LV;
            var level = PlayerDatas.Instance.baseData.LV;
            if (playerLevel >= config.LV)
            if (level >= config.LV)
            {
                if (config.MainTaskID > 0)
                {
@@ -534,7 +493,7 @@
            switch (refreshType)
            {
                case PlayerDataRefresh.LV:
                    UpdateMapsUnLockedState();
                    UpdateMapsUnlockedState();
                    break;
            }
        }
@@ -552,7 +511,7 @@
                    mapUnLockIndex = 0;
                }
                UpdateMapsUnLockedState();
                UpdateMapsUnlockedState();
            }
        }
@@ -563,7 +522,7 @@
            {
                if (mapConfig.MapFBType == 0)
                {
                    worldMapAreas.Add(mapConfig.MapID, new WorldMapArea(mapConfig.MapID, true, WorldMapCamp.Neutral));
                    worldMapAreas.Add(mapConfig.MapID, new WorldMapArea(mapConfig.MapID, true));
                    sortedMaps.Add(mapConfig.MapID);
                }
            }
@@ -661,11 +620,12 @@
        {
            var activityline = 0;
            fairyGrabBossModel.TryGetFairyGrabBossLine(out activityline);
            bool _isActivityLinex = activityline != 0 && x.lineIndex == activityline + 1;
            bool _isActivityLiney = activityline != 0 && y.lineIndex == activityline + 1;
            if (_isActivityLinex != _isActivityLiney)
            var isActivityLinex = activityline != 0 && x.lineIndex == activityline + 1;
            var isActivityLiney = activityline != 0 && y.lineIndex == activityline + 1;
            if (isActivityLinex != isActivityLiney)
            {
                return -_isActivityLinex.CompareTo(_isActivityLiney);
                return -isActivityLinex.CompareTo(isActivityLiney);
            }
            return x.lineIndex.CompareTo(y.lineIndex);
        }
@@ -675,13 +635,11 @@
    {
        public int id;
        public bool unLocked;
        public WorldMapCamp camp;
        public WorldMapArea(int _id, bool _unLocked, WorldMapCamp _camp)
        public WorldMapArea(int _id, bool _unLocked)
        {
            this.id = _id;
            this.unLocked = _unLocked;
            this.camp = _camp;
        }
    }
System/WorldMap/WorldMapAreaBehaviour.cs
@@ -61,11 +61,11 @@
            m_MapArea = _area;
            m_ScaleTween.SetStartState();
            DrawArea();
            m_PressTip.enabled = !model.IsMapUnLocked(m_MapArea.id);
            m_PressTip.enabled = !model.IsMapUnlocked(m_MapArea.id);
            if (m_NewUnLockTip != null)
            {
                m_NewUnLockTip.gameObject.SetActive(m_MapArea.id != model.newUnLockedMap && model.newUnLockMapsTip == m_MapArea.id);
                m_NewUnLockTip.gameObject.SetActive(m_MapArea.id != model.newUnlockedMap && model.newUnlockMapTip == m_MapArea.id);
            }
            CheckAchievementGuide();
@@ -85,7 +85,7 @@
        {
            try
            {
                var unLocked = model.IsMapUnLocked(m_MapArea.id);
                var unLocked = model.IsMapUnlocked(m_MapArea.id);
                var mapConfig = Config.Instance.Get<MapConfig>(m_MapArea.id);
                m_AreaName.text = mapConfig.Name;
                m_AreaLevel.text = mapConfig.LV.ToString();
@@ -108,7 +108,7 @@
            m_ScaleTween.Play(false);
            downTime = Time.time;
            var mapId = m_MapArea.id;
            if (!model.IsMapUnLocked(mapId))
            if (!model.IsMapUnlocked(mapId))
            {
                m_UnLockTip.Display(mapId);
            }
@@ -121,7 +121,7 @@
        private void OnPointerClick()
        {
            var isUnLocked = model.IsMapUnLocked(m_MapArea.id);
            var isUnLocked = model.IsMapUnlocked(m_MapArea.id);
            if (isUnLocked || Time.time - downTime < 0.3f)
            {
                if (isUnLocked)
@@ -139,7 +139,6 @@
                        MapTransferUtility.Instance.Clear();
                        model.RequestMapTransport(m_MapArea.id);
                        model.ConfirmNewMap(m_MapArea.id);
                    }
                }
            }
System/WorldMap/WorldMapWin.cs
@@ -115,11 +115,11 @@
                }
            }
            if (model.newUnLockedMap != 0)
            if (model.newUnlockedMap != 0)
            {
                StopCoroutine("Co_MapUnLockShow");
                StartCoroutine("Co_MapUnLockShow", model.newUnLockedMap);
                model.newUnLockedMap = 0;
                StartCoroutine("Co_MapUnLockShow", model.newUnlockedMap);
                model.newUnlockedMap = 0;
            }
            else
            {