少年修仙传客户端代码仓库
client_linchunjie
2019-04-10 2c3ba44af2b76e327c473accc064d16a1433696f
System/FairyAu/AllianceBossModel.cs
@@ -8,6 +8,10 @@
    [XLua.Hotfix]
    public class AllianceBossModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
    {
        List<int> m_BossIds = new List<int>();
        Dictionary<int, List<Item>> m_Items = new Dictionary<int, List<Item>>();
        Dictionary<int, AllianceBossLine> m_AllianceBossLines = new Dictionary<int, AllianceBossLine>();
        public const int DATAMAPID = 31260;
        public bool isActivityOver { get; private set; }
        public int participateLimit { get; private set; }
@@ -15,6 +19,7 @@
        public List<Item> inspireRewards { get; private set; }
        public event Action allianceBossStateRefresh;
        public event Action allianceBossLineRefresh;
        public override void Init()
        {
@@ -24,6 +29,7 @@
        public void OnBeforePlayerDataInitialize()
        {
            isActivityOver = false;
            m_AllianceBossLines.Clear();
        }
        public void OnPlayerLoginOk()
@@ -32,6 +38,21 @@
        public override void UnInit()
        {
        }
        public int GetBossNpcId(int index)
        {
            return index < m_BossIds.Count ? m_BossIds[index] : 0;
        }
        public bool TryGetItems(int index, out List<Item> items)
        {
            return m_Items.TryGetValue(index, out items);
        }
        public bool TryGetBossLine(int index, out AllianceBossLine bossLine)
        {
            return m_AllianceBossLines.TryGetValue(index, out bossLine);
        }
        void ParseConfig()
@@ -51,6 +72,30 @@
                    count = item[1],
                });
            }
            config = FuncConfigConfig.Get("AllianceBoss");
            m_BossIds.AddRange(ConfigParse.GetMultipleStr<int>(config.Numerical1));
            m_Items.Add(0, new List<Item>());
            var itemsArray = ConfigParse.GetMultipleStr<int>(config.Numerical2);
            for (int i = 0; i < itemsArray.Length; i++)
            {
                m_Items[0].Add(new Item()
                {
                    id = itemsArray[i],
                    count = 1,
                });
            }
            m_Items.Add(1, new List<Item>());
            itemsArray = ConfigParse.GetMultipleStr<int>(config.Numerical2);
            for (int i = 0; i < itemsArray.Length; i++)
            {
                m_Items[1].Add(new Item()
                {
                    id = itemsArray[i],
                    count = 1,
                });
            }
        }
        public void ReceivePackage(HA40C_tagGCAllFamilyBossInfo package)
@@ -61,6 +106,37 @@
                allianceBossStateRefresh();
            }
        }
        public void ReceivePackage(HA007_tagGCFBLinePlayerCnt package)
        {
            if (package.MapID != DATAMAPID)
            {
                return;
            }
            m_AllianceBossLines.Clear();
            for (int i = 0; i < package.Count; i++)
            {
                var data = package.FBLineInfoList[i];
                m_AllianceBossLines[data.FBLineID] = new AllianceBossLine()
                {
                    playerCount = data.PlayerCnt,
                    hp = int.Parse(data.ExtraStr)
                };
            }
            if (allianceBossLineRefresh != null)
            {
                allianceBossLineRefresh();
            }
        }
        public struct AllianceBossLine
        {
            public int playerCount;
            public int hp;
        }
    }
}