using System.Collections.Generic; using Cute; using LitJson; namespace Wizard; public class PackConfig { public List ChildGachaInfoList { get; } = new List(); public int PackId { get; set; } public int BasePackId { get; set; } public int GachaType { get; set; } public string Title { get; set; } public string Description { get; set; } public int SleeveId { get; set; } public int SpecialSleeveId { get; set; } public PackCategory Category { get; set; } public int OverrideDrawEffectPackId { get; set; } public int OverrideUIEffectPackId { get; set; } public bool IsHideNotEnoughBuy { get; set; } public int OpenCount { get; set; } public int OpenCountLimit { get; set; } public RemainTime RemainTime { get; set; } public int RemainStepupOpenCount { get; set; } public int TotalStepupOpenCount { get; set; } public bool IsNew { get; set; } public int TsExchangePosterId { get; set; } public List ListPackBanner { get; } = new List(); public GachaPointData GachaPointData { get; set; } public int SelectedClassId { get; set; } = 10; public bool IsSpecialLayout { get { if (!IsSpecialCardPack && !IsLegendCardPack && Category != PackCategory.FreePackLeaderSkin && Category != PackCategory.RotationStarterCardPack) { return Category == PackCategory.LegendAndLeaderSkinSinglePack; } return true; } } public bool IsUseLongPoster => IsSpecialLayout; public bool IsUsePackPointLayout { get { if (IsSpecialLayout) { return false; } if (IsPrerelease) { return false; } return true; } } public bool IsSpecialCardPack { get { if (Category != PackCategory.SpecialCardPack) { return Category == PackCategory.LimitedSpecialCardPack; } return true; } } public bool IsNeedRemainTime { get { if (!IsSpecialCardPack && Category != PackCategory.FreePackLeaderSkin && Category != PackCategory.LeaderSkinPack) { return Category == PackCategory.LegendAndLeaderSkinSinglePack; } return true; } } public bool IsLegendCardPack => Category == PackCategory.LegendCardPack; public bool IsRotationStarterCardPack => Category == PackCategory.RotationStarterCardPack; public bool IsShowAppealImage => Category == PackCategory.LeaderSkinPack; public bool IsPrerelease { get; set; } public PrereleasePurchaseInfo PrereleasePurchaseInfo { get; set; } public bool IsExistSpecialPackPurchaseRewards => SpecialPackRewardsList != null; public List SpecialPackRewardsList { get; private set; } public ShopExpirtyInfo ExpirtyInfo { get; set; } public int GetGachaIdForEffectResource() { if (Category == PackCategory.LeaderSkinPack) { return OverrideDrawEffectPackId; } if (IsSpecialLayout || GachaUI.IsAdditionalPackId(PackId) || GachaUI.IsTsSkinPickupPackId(PackId)) { return OverrideDrawEffectPackId; } return PackId; } public int GetGachaIdForUIResource() { if (!IsSpecialCardPack) { return PackId; } return OverrideUIEffectPackId; } public void SetSpecialPackRewardsList(JsonData parentJsonData) { if (!parentJsonData.Keys.Contains("gacha_purchase_reward")) { return; } SpecialPackRewardsList = new List(); JsonData jsonData = parentJsonData["gacha_purchase_reward"]; for (int i = 0; i < jsonData.Count; i++) { JsonData jsonData2 = jsonData[i]; PurchaseRewardInfo purchaseRewardInfo = new PurchaseRewardInfo(); JsonData jsonData3 = jsonData2["reward_list"]; for (int j = 0; j < jsonData3.Count; j++) { ShopCommonRewardInfo shopCommonRewardInfo = new ShopCommonRewardInfo(); shopCommonRewardInfo.Type = jsonData3[j]["reward_type"].ToInt(); shopCommonRewardInfo.UserGoodsId = jsonData3[j]["reward_detail_id"].ToLong(); shopCommonRewardInfo.Num = jsonData3[j]["reward_number"].ToInt(); purchaseRewardInfo.RewardInfoList.Add(shopCommonRewardInfo); } int num = jsonData2["purchase_count"].ToInt() / 10; purchaseRewardInfo.PurchaseNthText = Data.SystemText.Get("Shop_0186", num.ToString()); purchaseRewardInfo.IsGet = jsonData2["is_received"].ToBoolean(); SpecialPackRewardsList.Add(purchaseRewardInfo); } } public string GetPackPosterTexturePath(bool isFetch) { int gachaIdForUIResource = GetGachaIdForUIResource(); string path = (IsPrerelease ? $"card_pack_{gachaIdForUIResource}_poster_pre" : ((TsExchangePosterId <= 0) ? $"card_pack_{gachaIdForUIResource}_poster" : $"card_pack_{gachaIdForUIResource}_poster_{TsExchangePosterId}")); return Toolbox.ResourcesManager.GetAssetTypePath(path, ResourcesManager.AssetLoadPathType.ShopCardPack, isFetch); } public string GetPackBounsPosterTexturePath(bool isFetch) { string path = $"card_pack_{GetGachaIdForUIResource()}_poster_bonus"; return Toolbox.ResourcesManager.GetAssetTypePath(path, ResourcesManager.AssetLoadPathType.ShopCardPack, isFetch); } public string GetPackTitleLogoTexturePath(bool isFetch) { int gachaIdForUIResource = GetGachaIdForUIResource(); string path = ((!IsPrerelease) ? $"card_pack_{gachaIdForUIResource}_logo_01" : $"card_pack_{gachaIdForUIResource}_logo_01_pre"); return Toolbox.ResourcesManager.GetAssetTypePath(path, ResourcesManager.AssetLoadPathType.ShopCardPack, isFetch); } public string GetPackIconTexturePath(bool isFetch) { int ticketId = GetTicketId(); string path = $"card_pack_{ticketId}_icon"; return Toolbox.ResourcesManager.GetAssetTypePath(path, ResourcesManager.AssetLoadPathType.ShopCardPack, isFetch); } public string GetPackDrumrollLogoTexturePath(bool isFetch) { int gachaIdForUIResource = GetGachaIdForUIResource(); string path = $"card_pack_{gachaIdForUIResource}_logo_02"; return Toolbox.ResourcesManager.GetAssetTypePath(path, ResourcesManager.AssetLoadPathType.ShopCardPack, isFetch); } public bool EnableBuyPack() { bool result = false; for (int i = 0; i < ChildGachaInfoList.Count; i++) { if ((ChildGachaInfoList[i].PackType == GachaUI.CardPackType.FREE_PACK_WITH_SKIN || ChildGachaInfoList[i].PackType == GachaUI.CardPackType.FREE_PACKS) && ChildGachaInfoList[i].AvailableCount > 0) { result = true; break; } if (ChildGachaInfoList[i].CostGoodsCount > 0) { result = true; break; } } return result; } public int GetTicketId() { int result = PackId; PackChildGachaInfo packChildGachaInfo = ChildGachaInfoList.Find((PackChildGachaInfo x) => x.PackType == GachaUI.CardPackType.TICKET_MULTI); if (packChildGachaInfo != null) { result = (int)packChildGachaInfo.UserGoodsId; } return result; } public PackChildGachaInfo CanFreeBuyInfo() { foreach (PackChildGachaInfo childGachaInfo in ChildGachaInfoList) { if (childGachaInfo.PackType == GachaUI.CardPackType.FREE_PACKS) { return childGachaInfo; } } return null; } }