using asap.core; using cfg; using game; using GameCore; using LitJson; using System; using System.Collections.Generic; using System.Linq; using UnityEngine; [Serializable] public class FishingBoxData { public Dictionary FishingNewBoxs = new(); public Dictionary FishingBoxOpenNum = new(); public void InitData(string data) { if (string.IsNullOrEmpty(data) == false) { var boxData = Newtonsoft.Json.JsonConvert.DeserializeObject(data); //FishingNewBoxs = boxData.FishingNewBoxs; FishingBoxOpenNum = boxData.FishingBoxOpenNum; //var firstItemID = FishingBoxDataProvier.firstFishingBoxID; //for (int i = 0; i < FishingBoxDataProvier.QualityCount; i++) //{ // if (!FishingNewBoxs.ContainsKey(firstItemID + i)) // { // FishingNewBoxs.Add(firstItemID + i, 0); // } //} } } public void InitDataNew(string data) { if (string.IsNullOrEmpty(data) == false) { var boxData = data.Split(';'); FishingBoxOpenNum = new Dictionary(); for (int i = 0; i < boxData.Length; i++) { var itemData = boxData[i].Split(','); if (itemData.Length == 2) { int itemID = int.Parse(itemData[0]); int openNum = int.Parse(itemData[1]); FishingBoxOpenNum.Add(itemID, openNum); } } } } public void SetFishingBoxCount(int itemID, int value) { if (value < 0) GContext.Publish(new ConditionTypeEvent { type = ConditionType.OpenFishBoxCount, count = -value }); if (FishingNewBoxs.ContainsKey(itemID)) { FishingNewBoxs[itemID] += value; } else { FishingNewBoxs.Add(itemID, value); } } public string GetString() { string fishingBoxOpenNum = ""; foreach (var box in FishingBoxOpenNum) { fishingBoxOpenNum += box.Key + "," + box.Value + ";"; } return fishingBoxOpenNum.TrimEnd(';'); } public int GetFishingBoxCount(int itemID) { if (FishingNewBoxs.ContainsKey(itemID)) { return FishingNewBoxs[itemID]; } return 0; } public void AddBoxOpenCount(int itemID, int count) { if (FishingBoxOpenNum.ContainsKey(itemID)) { FishingBoxOpenNum[itemID] += count; } else FishingBoxOpenNum.Add(itemID, count); GContext.container.Resolve().SavePlayerData(); } public int GetFishingBoxOpenCount(int itemID) { if (FishingBoxOpenNum.ContainsKey(itemID)) { return FishingBoxOpenNum[itemID]; } return 1; } } public class FishingBoxDataProvier { public static int QualityCount; public static int firstFishingBoxID; public bool IsUnclocked; public FishingBoxData Data; public FishingBoxDataProvier(Tables table) { firstFishingBoxID = table.TbBox.DataList[0].ID; QualityCount = table.TbBox.DataList.Count; _itemDropPackages = table.TbItemDropPackage.DataMap; _boxInits = table.TbBoxInit.DataMap; Data = GContext.container.Resolve(); } #region TablesData private Dictionary _itemDropPackages; private Dictionary _boxInits; #endregion #region Get Function public List GetFishingBoxDropID(int itemID) { Data.AddBoxOpenCount(itemID, 1); if (_boxInits.ContainsKey(itemID)) { var boxInit = _boxInits[itemID]; var openCout = Data.GetFishingBoxOpenCount(itemID); if (openCout <= boxInit.DropChange.Count && openCout != 0) { return _itemDropPackages[boxInit.DropChange[openCout - 1]].DropList; } } return _itemDropPackages[itemID].DropList; } public int GetIDByQuality(int quality) { return firstFishingBoxID + quality; } public int GetBoxCount(int itemID) { return Data.GetFishingBoxCount(itemID); } #endregion }