少年修仙传客户端代码仓库
client_linchunjie
2018-08-27 d106f11e7f44c748f595da36e0cdfd54849649e6
System/FindPrecious/WorldBossModel.cs
@@ -1,179 +1,179 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using TableConfig;
namespace Snxxz.UI
{
    public class WorldBossModel : Model
    {
        public const int WORLDBOSS_REDPOINT = 76001;
        int m_SelectedBoss = 0;
        public int selectedBoss {
            get {
                return this.m_SelectedBoss;
            }
            set {
                if (this.m_SelectedBoss != value)
                {
                    this.m_SelectedBoss = value;
                    if (bossSelectedEvent != null)
                    {
                        bossSelectedEvent(value);
                    }
                }
            }
        }
        public event Action<int> bossSelectedEvent;
        public event Action bossWearyValueChangeEvent;
        int m_WearyValue = 0;
        public int wearyValue {
            get { return m_WearyValue; }
            set {
                m_WearyValue = value;
                var count = GeneralConfig.Instance.bossWearyValues[0] + extraBossWearyValue - m_WearyValue;
                worldBossRedPoint.count = count;
                worldBossRedPoint.state = count > 0 ? RedPointState.Quantity : RedPointState.None;
                if (bossWearyValueChangeEvent != null)
                {
                    bossWearyValueChangeEvent();
                }
            }
        }
        int m_ExtraBossWearyValue = 0;
        public int extraBossWearyValue {
            get { return m_ExtraBossWearyValue; }
            set {
                m_ExtraBossWearyValue = value;
                if (bossWearyValueChangeEvent != null)
                {
                    bossWearyValueChangeEvent();
                }
            }
        }
        List<int> sortedBossIds = new List<int>();
        Dictionary<int, WorldBossData> worldBosses = new Dictionary<int, WorldBossData>();
        public Redpoint worldBossRedPoint = new Redpoint(FindPreciousModel.FINDPRECIOUS_REDPOINTID, WORLDBOSS_REDPOINT);
        FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
        public override void Init()
        {
            ParseConfig();
        }
        public override void UnInit()
        {
        }
        public bool TryGetBossData(int _bossId, out WorldBossData _data)
        {
            return worldBosses.TryGetValue(_bossId, out _data);
        }
        public List<int> GetWorldBosses()
        {
            var activedBossIds = new List<int>();
            var mapModel = ModelCenter.Instance.GetModel<MapModel>();
            for (int i = 0; i < sortedBossIds.Count; i++)
            {
                var bossId = sortedBossIds[i];
                var config = ConfigManager.Instance.GetTemplate<WorldBossConfig>(bossId);
                var mapId = config.MapID;
                if (mapModel.IsMapUnLocked(mapId))
                {
                    activedBossIds.Add(bossId);
                }
            }
            return activedBossIds;
        }
        public List<int> GetWorldBosses(int _mapId)
        {
            var bosses = new List<int>();
            var mapModel = ModelCenter.Instance.GetModel<MapModel>();
            for (int i = 0; i < sortedBossIds.Count; i++)
            {
                var bossId = sortedBossIds[i];
                var config = ConfigManager.Instance.GetTemplate<WorldBossConfig>(bossId);
                var mapId = config.MapID;
                if (mapId == _mapId)
                {
                    bosses.Add(bossId);
                }
            }
            return bosses;
        }
        public bool IsBossUnLocked(int _bossId)
        {
            return worldBosses.ContainsKey(_bossId) && worldBosses[_bossId].isUnLocked;
        }
        public int GetLatestUnLockBoss()
        {
            var playerLevel = PlayerDatas.Instance.baseData.LV;
            for (int i = sortedBossIds.Count - 1; i >= 0; i--)
            {
                var bossId = sortedBossIds[i];
                var npcConfig = ConfigManager.Instance.GetTemplate<NPCConfig>(bossId);
                if (IsBossUnLocked(bossId) && findPreciousModel.IsBossAlive(bossId) && playerLevel >= npcConfig.NPCLV)
                {
                    return bossId;
                }
            }
            return sortedBossIds[0];
        }
        private void ParseConfig()
        {
            var worldBossConfigs = ConfigManager.Instance.GetAllValues<WorldBossConfig>();
            foreach (var config in worldBossConfigs)
            {
                var bossData = worldBosses[config.NPCID] = new WorldBossData(config.NPCID);
            }
            sortedBossIds.AddRange(worldBosses.Keys);
            sortedBossIds.Sort(WorldBossData.LevelCompare);
        }
    }
    public class WorldBossData
    {
        MapModel mapModel { get { return ModelCenter.Instance.GetModel<MapModel>(); } }
        public int id { get; private set; }
        public bool isUnLocked {
            get {
                var config = ConfigManager.Instance.GetTemplate<WorldBossConfig>(id);
                var mapUnLocked = mapModel.IsMapUnLocked(config.MapID);
                return mapUnLocked;
            }
        }
        public WorldBossData(int _id)
        {
            this.id = _id;
        }
        public static int LevelCompare(int a, int b)
        {
            var configA = ConfigManager.Instance.GetTemplate<NPCConfig>(a);
            var configB = ConfigManager.Instance.GetTemplate<NPCConfig>(b);
            return configA.NPCLV < configB.NPCLV ? -1 : 1;
        }
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using TableConfig;
namespace Snxxz.UI
{
    public class WorldBossModel : Model
    {
        public const int WORLDBOSS_REDPOINT = 76001;
        int m_SelectedBoss = 0;
        public int selectedBoss {
            get {
                return this.m_SelectedBoss;
            }
            set {
                if (this.m_SelectedBoss != value)
                {
                    this.m_SelectedBoss = value;
                    if (bossSelectedEvent != null)
                    {
                        bossSelectedEvent(value);
                    }
                }
            }
        }
        public event Action<int> bossSelectedEvent;
        public event Action bossWearyValueChangeEvent;
        int m_WearyValue = 0;
        public int wearyValue {
            get { return m_WearyValue; }
            set {
                m_WearyValue = value;
                var count = GeneralConfig.Instance.bossWearyValues[0] + extraBossWearyValue - m_WearyValue;
                worldBossRedPoint.count = count;
                worldBossRedPoint.state = count > 0 ? RedPointState.Quantity : RedPointState.None;
                if (bossWearyValueChangeEvent != null)
                {
                    bossWearyValueChangeEvent();
                }
            }
        }
        int m_ExtraBossWearyValue = 0;
        public int extraBossWearyValue {
            get { return m_ExtraBossWearyValue; }
            set {
                m_ExtraBossWearyValue = value;
                if (bossWearyValueChangeEvent != null)
                {
                    bossWearyValueChangeEvent();
                }
            }
        }
        List<int> sortedBossIds = new List<int>();
        Dictionary<int, WorldBossData> worldBosses = new Dictionary<int, WorldBossData>();
        public Redpoint worldBossRedPoint = new Redpoint(FindPreciousModel.FINDPRECIOUS_REDPOINTID, WORLDBOSS_REDPOINT);
        FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
        public override void Init()
        {
            ParseConfig();
        }
        public override void UnInit()
        {
        }
        public bool TryGetBossData(int _bossId, out WorldBossData _data)
        {
            return worldBosses.TryGetValue(_bossId, out _data);
        }
        public List<int> GetWorldBosses()
        {
            var activedBossIds = new List<int>();
            var mapModel = ModelCenter.Instance.GetModel<MapModel>();
            for (int i = 0; i < sortedBossIds.Count; i++)
            {
                var bossId = sortedBossIds[i];
                var config = Config.Instance.Get<WorldBossConfig>(bossId);
                var mapId = config.MapID;
                if (mapModel.IsMapUnLocked(mapId))
                {
                    activedBossIds.Add(bossId);
                }
            }
            return activedBossIds;
        }
        public List<int> GetWorldBosses(int _mapId)
        {
            var bosses = new List<int>();
            var mapModel = ModelCenter.Instance.GetModel<MapModel>();
            for (int i = 0; i < sortedBossIds.Count; i++)
            {
                var bossId = sortedBossIds[i];
                var config = Config.Instance.Get<WorldBossConfig>(bossId);
                var mapId = config.MapID;
                if (mapId == _mapId)
                {
                    bosses.Add(bossId);
                }
            }
            return bosses;
        }
        public bool IsBossUnLocked(int _bossId)
        {
            return worldBosses.ContainsKey(_bossId) && worldBosses[_bossId].isUnLocked;
        }
        public int GetLatestUnLockBoss()
        {
            var playerLevel = PlayerDatas.Instance.baseData.LV;
            for (int i = sortedBossIds.Count - 1; i >= 0; i--)
            {
                var bossId = sortedBossIds[i];
                var npcConfig = Config.Instance.Get<NPCConfig>(bossId);
                if (IsBossUnLocked(bossId) && findPreciousModel.IsBossAlive(bossId) && playerLevel >= npcConfig.NPCLV)
                {
                    return bossId;
                }
            }
            return sortedBossIds[0];
        }
        private void ParseConfig()
        {
            var worldBossConfigs = Config.Instance.GetAllValues<WorldBossConfig>();
            foreach (var config in worldBossConfigs)
            {
                var bossData = worldBosses[config.NPCID] = new WorldBossData(config.NPCID);
            }
            sortedBossIds.AddRange(worldBosses.Keys);
            sortedBossIds.Sort(WorldBossData.LevelCompare);
        }
    }
    public class WorldBossData
    {
        MapModel mapModel { get { return ModelCenter.Instance.GetModel<MapModel>(); } }
        public int id { get; private set; }
        public bool isUnLocked {
            get {
                var config = Config.Instance.Get<WorldBossConfig>(id);
                var mapUnLocked = mapModel.IsMapUnLocked(config.MapID);
                return mapUnLocked;
            }
        }
        public WorldBossData(int _id)
        {
            this.id = _id;
        }
        public static int LevelCompare(int a, int b)
        {
            var configA = Config.Instance.Get<NPCConfig>(a);
            var configB = Config.Instance.Get<NPCConfig>(b);
            return configA.NPCLV < configB.NPCLV ? -1 : 1;
        }
    }
}