少年修仙传客户端代码仓库
client_Wu Xijin
2019-06-06 41a6e87783d042bf3e0ecebfa772443f2b5ed95d
System/FindPrecious/BossHomeModel.cs
@@ -7,9 +7,10 @@
namespace Snxxz.UI
{
    [XLua.LuaCallCSharp]
   public class BossHomeModel : Model, IMapInitOk
    public class BossHomeModel : Model, IMapInitOk
    {
        public const int BOSSHOME_MAPID = 31020;
        public const int BOSSHOME_REDPOINT = 76002;
        int m_SelectedFloor = 0;
        public int selectedFloor {
@@ -45,9 +46,24 @@
            }
        }
        int m_WearyValue = 0;
        public int wearyValue {
            get { return m_WearyValue; }
            set {
                m_WearyValue = value;
                UpdateRedpoint();
                if (bossWearyValueChangeEvent != null)
                {
                    bossWearyValueChangeEvent();
                }
            }
        }
        public event Action<int> bossHomeFloorSelectedEvent;
        public event Action<int> bossSelectedEvent;
        public event Action bossWearyValueChangeEvent;
        public Redpoint bossHomeRedpoint = new Redpoint(FindPreciousModel.FINDPRECIOUS_REDPOINTID, BOSSHOME_REDPOINT);
        Dictionary<int, BossHomeData> bossHomes = new Dictionary<int, BossHomeData>();
        Dictionary<int, int> vipLackFloorCost = new Dictionary<int, int>();
        List<int> sortedBosses = new List<int>();
@@ -56,10 +72,12 @@
        public override void Init()
        {
            ParseConfig();
            PlayerDatas.Instance.playerDataRefreshEvent += OnPlayerDataChange;
        }
        public override void UnInit()
        {
            PlayerDatas.Instance.playerDataRefreshEvent -= OnPlayerDataChange;
        }
        public bool TryGetBossHomeData(int _layer, out BossHomeData _data)
@@ -127,6 +145,21 @@
            {
                return 0;
            }
        }
        private void OnPlayerDataChange(PlayerDataType _type)
        {
            if (_type == PlayerDataType.VIPLv)
            {
                UpdateRedpoint();
            }
        }
        private void UpdateRedpoint()
        {
            var count = vipModel.GetVipPrivilegeCnt(VipPrivilegeType.BossHomeAwardLimit) - m_WearyValue;
            bossHomeRedpoint.count = count;
            bossHomeRedpoint.state = count > 0 ? RedPointState.Quantity : RedPointState.None;
        }
        private void ParseConfig()
@@ -200,7 +233,7 @@
        public void OnMapInitOk()
        {
            var dataMapId = ModelCenter.Instance.GetModel<DungeonModel>().GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);
            var dataMapId = MapUtility.GetDataMapId(PlayerDatas.Instance.baseData.MapID);
            if (dataMapId == BOSSHOME_MAPID)
            {
                MapTransferUtility.Instance.MoveToNPC(selectedBoss);
@@ -213,29 +246,49 @@
        public int id { get; private set; }
        public List<int> bossIds = new List<int>();
        FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
        public BossHomeData(int _id)
        {
            this.id = _id;
        }
        public List<int> GetShowBosses()
        {
            var bosses = new List<int>();
            for (var i = 0; i < bossIds.Count; i++)
            {
                var bossId = bossIds[i];
                if (findPreciousModel.IsBossUnlockOrUnlockSoon(bossId))
                {
                    bosses.Add(bossId);
                }
            }
            if (bosses.Count == 0)
            {
                bosses.Add(bossIds[0]);
            }
            return bosses;
        }
        public int GetRecommendNpc()
        {
            var playerLevel = PlayerDatas.Instance.baseData.LV;
            var recommendNpc = bossIds[bossIds.Count - 1];
            for (int i = 0; i < bossIds.Count; i++)
            var recommendNpc = bossIds[0];
            for (var i = bossIds.Count - 1; i >= 0; i--)
            {
                var bossHomeConfig = BossHomeConfig.Get(bossIds[i]);
                var npcConfig = NPCConfig.Get(bossIds[i]);
                if (bossHomeConfig.MonsterType == 2 && playerLevel < npcConfig.NPCLV)
                var bossId = bossIds[i];
                var bossHomeConfig = BossHomeConfig.Get(bossId);
                if (bossHomeConfig.MonsterType == 2 && findPreciousModel.IsBossUnlock(bossId))
                {
                    recommendNpc = bossIds[i];
                    break;
                }
            }
            return recommendNpc;
        }
    }
}