using System.Collections; 
 | 
using System.Collections.Generic; 
 | 
using UnityEngine; 
 | 
using System; 
 | 
using LitJson; 
 | 
  
 | 
  
 | 
public class DungeonManager : GameSystemManager<DungeonManager> 
 | 
{ 
 | 
    private Dictionary<int, FBInfo> fbInfoDict = new Dictionary<int, FBInfo>(); 
 | 
    public event Action<int> UpdateFBInfoListEvent;//int mapID 
 | 
    public event Action<int, bool, bool, bool> UpdateFBInfoChangeEvent; 
 | 
    public event Action<int> UpdateFBInfoListEventByADAddCnt;//int mapID  广告增加次数有更新 
 | 
    public event Action<int> UpdateFBInfoListEventNotByADAddCnt;//int mapID  不是广告增加次数导致的更新 
 | 
    Dictionary<int, DungeonRecord> dungeonRecords = new Dictionary<int, DungeonRecord>(); 
 | 
    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;        //副本线路对应星级值列表 
 | 
} 
 |