using System.Collections; using System.Collections.Generic; using UnityEngine; using System; using LitJson; public class DungeonManager : GameSystemManager { private Dictionary fbInfoDict = new Dictionary(); public event Action UpdateFBInfoListEvent;//int mapID public event Action UpdateFBInfoChangeEvent; public event Action UpdateFBInfoListEventByADAddCnt;//int mapID 广告增加次数有更新 public event Action UpdateFBInfoListEventNotByADAddCnt;//int mapID 不是广告增加次数导致的更新 Dictionary dungeonRecords = new Dictionary(); public event Action updateDungeonBuyCnt; public override void Init() { DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitializeEvent; } public override void Release() { DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitializeEvent; } public void OnBeforePlayerDataInitializeEvent() { fbInfoDict.Clear(); } public bool TryGetFBInfoByMapID(int mapID, out FBInfo info) { return fbInfoDict.TryGetValue(mapID, out info); } public void UpdateFBInfoList(HA320_tagSCFBInfoList vNetData) { if (vNetData == null || vNetData.FBDataList.IsNullOrEmpty()) return; bool isADAddCntChange = false; bool isBuyAddCntChange = false; bool isItemAddCntChange = false; foreach (var item in vNetData.FBDataList) { if (!fbInfoDict.ContainsKey((int)item.MapID)) fbInfoDict[(int)item.MapID] = new FBInfo(); int mapID = (int)item.MapID; fbInfoDict[mapID].MapID = item.MapID; fbInfoDict[mapID].EnterCnt = item.EnterCnt; isADAddCntChange = fbInfoDict[mapID].ADAddCnt != item.ADAddCnt; fbInfoDict[mapID].ADAddCnt = item.ADAddCnt; isBuyAddCntChange = fbInfoDict[mapID].BuyAddCnt != item.BuyAddCnt; fbInfoDict[mapID].BuyAddCnt = item.BuyAddCnt; isItemAddCntChange = fbInfoDict[mapID].ItemAddCnt != item.ItemAddCnt; fbInfoDict[mapID].ItemAddCnt = item.ItemAddCnt; fbInfoDict[mapID].PassLineID = item.PassLineID; fbInfoDict[mapID].PassGradeCnt = item.PassGradeCnt; fbInfoDict[mapID].PassGrade = item.PassGrade; UpdateFBInfoListEvent?.Invoke(mapID); UpdateFBInfoChangeEvent?.Invoke(mapID, isADAddCntChange, isBuyAddCntChange, isItemAddCntChange); } } public void UpdateRecords(HA3BD_tagMCBuyEnterInfo.tagMCBuyInfo[] vNetDatas) { for (int i = 0; i < vNetDatas.Length; i++) { var info = vNetDatas[i]; var dungeonId = (int)info.FBID; if (dungeonRecords.ContainsKey(dungeonId)) { dungeonRecords[dungeonId].UpdateRecord(info); } else { dungeonRecords[dungeonId] = new DungeonRecord(info); } } if (updateDungeonBuyCnt != null) { updateDungeonBuyCnt(); } } } public class FBInfo { public uint MapID; public ushort EnterCnt; //今日累计进入次数 public byte ADAddCnt; //广告增加次数 public byte BuyAddCnt; //购买增加次数 public ushort ItemAddCnt; //物品增加次数 public uint PassLineID; //已过关到的lineID public byte PassGradeCnt; //星级值对应个数, 每个key存9个lineID public uint[] PassGrade; //副本线路对应星级值列表 }