using CodeStage.AntiCheat.ObscuredTypes; using MiniJSON; using System; using System.Collections.Generic; using UnityEngine; #if FGB_OneStore using Gaa; #endif public class ShopTableData : TableDataBase { public string InappID, Desc, IconSub, BuyCondition; public eShopTab Tab; public eItem Item, ObtainCheckItem; public ObscuredInt ItemID, ObtainCheckItemID, Mileage, Price, ADGapTime, GoldKillMul, NumUI; public ObscuredInt BuyLimit, BuyLimit_Day, BuyLimit_Week, BuyLimit_Month; public ObscuredDouble Amount; public bool IsBest, IsRocket; } public class table_shop : MonoBehaviour { public static table_shop Ins; public TextAsset m_json; private List list_Data = new List(); protected List list_pageids = new List(); private void Awake() { Ins = this; Dictionary jsonData = Json.Deserialize(m_json.text) as Dictionary; // ["items"]은 items.txt 안의 items를 가리킨다. 툴 우측 하단 파일 종류란에서 설정 가능. List obj = jsonData[GetType().Name] as List; foreach (object objt in obj) { var temp = new ShopTableData(); Dictionary json = objt as Dictionary; temp.ID = int.Parse(json["ID"].ToString()); temp.Tab = DSUtil.StringToEnum(json["Tab"].ToString()); temp.InappID = json["InappID"].ToString(); temp.IconSub = json["IconSub"].ToString(); temp.Desc = json["Desc"].ToString(); temp.BuyCondition = json["BuyCondition"].ToString(); temp.NumUI = int.Parse(json["NumUI"].ToString()); temp.Item = DSUtil.StringToEnum(json["Item"].ToString()); temp.ItemID = int.Parse(json["ItemID"].ToString()); temp.Amount = int.Parse(json["Amount"].ToString()); temp.Mileage = int.Parse(json["Mileage"].ToString()); temp.Price = int.Parse(json["Price"].ToString()); temp.BuyLimit_Day = int.Parse(json["BuyLimit_Day"].ToString()); temp.BuyLimit_Week = int.Parse(json["BuyLimit_Week"].ToString()); temp.BuyLimit_Month = int.Parse(json["BuyLimit_Month"].ToString()); temp.ADGapTime = int.Parse(json["ADGapTime"].ToString()); temp.GoldKillMul = int.Parse(json["GoldKillMul"].ToString()); temp.BuyLimit = int.Parse(json["BuyLimit"].ToString()); temp.IsBest = int.Parse(json["IsBest"].ToString()) > 0; temp.IsRocket = int.Parse(json["IsRocket"].ToString()) > 0; var split = json["ObtainCheck"].ToString().Split(','); temp.ObtainCheckItem = DSUtil.StringToEnum(split[0]); temp.ObtainCheckItemID = int.Parse(split[1]); list_Data.Add(temp); } } #if FGB_OneStore public void Buy_OneStore(PurchaseData _pd, Action _act) { Cal_Item(_pd.productId); ServerInfo.Ins.Write_Onestore(_pd, () => { BuyNext(_act); }); // 원스토어 정보 저장 및 서버에서 우편으로 아이템 지급 } #endif public void Buy_Inapp(string _inappid, Action _act) { Cal_Item(_inappid); ServerInfo.Ins.Write_UnityInApp(_inappid, () => { BuyNext(_act); }); // 서버에서 우편으로 아이템 지급 } void Cal_Item(string _inappid) { var sdata = ServerInfo.Ins.m_ServerData; var data = Get_Data(_inappid); sdata.Add_Common(eCommon.InAppBuyCount); switch (data.Item) { case eItem.Pass: sdata.Add_Item(new ItemData(data.Item, data.ID, 1)); break; } } void BuyNext(Action _act) { NewGameUI.Ins.gos_noti[0].SetActive(true); MyText.Show_CheckMailBox(); _act?.Invoke(); } public List Get_DataList() { return list_Data; } public List Get_DataList(eShopTab _tab) { return list_Data.FindAll(f => (f as ShopTableData).Tab == _tab); } public List Get_AD_DataList() { return list_Data.FindAll(f => (f as ShopTableData).ADGapTime > 0); } public ShopTableData Get_Data(int id) { return list_Data.Find(f => f.ID == id) as ShopTableData; } public ShopTableData Get_Data(eItem item, int id) { return list_Data.Find(f => (f as ShopTableData).Item == item && f.ID == id) as ShopTableData; } public ShopTableData Get_Data(string _inappid) { for (int i = 0; i < list_Data.Count; i++) { var data = list_Data[i] as ShopTableData; if (data.InappID.Equals(_inappid)) return data; } return null; } }