cull(engine-cleanup): pass-8 phase-2 cascade round 2 after MyPageItemHome stub
This commit is contained in:
@@ -9,13 +9,10 @@ public class AccountBase : MonoBehaviour
|
||||
{
|
||||
public enum DisplayType
|
||||
{
|
||||
NONE,
|
||||
OTHER,
|
||||
ACCOUNT_LINK }
|
||||
NONE}
|
||||
|
||||
public enum TransitionOriginalScreen
|
||||
{
|
||||
OTHER
|
||||
}
|
||||
|
||||
[SerializeField]
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using LitJson;
|
||||
|
||||
namespace Wizard;
|
||||
|
||||
public class BattlePassBuyTask : BaseTask
|
||||
{
|
||||
public class BattlePassBuyTaskParam : BaseParam
|
||||
{
|
||||
public int season_id { get; set; }
|
||||
|
||||
public int id { get; set; }
|
||||
}
|
||||
|
||||
public List<ReceivedReward> RewardList { get; private set; }
|
||||
|
||||
public BattlePassBuyTask()
|
||||
{
|
||||
base.type = ApiType.Type.BattlePassBuy;
|
||||
}
|
||||
|
||||
public void SetParameter(int seasonId, int id)
|
||||
{
|
||||
BattlePassBuyTaskParam battlePassBuyTaskParam = new BattlePassBuyTaskParam();
|
||||
battlePassBuyTaskParam.season_id = seasonId;
|
||||
battlePassBuyTaskParam.id = id;
|
||||
base.Params = battlePassBuyTaskParam;
|
||||
}
|
||||
|
||||
protected override int Parse()
|
||||
{
|
||||
int num = base.Parse();
|
||||
if (num != 1)
|
||||
{
|
||||
return num;
|
||||
}
|
||||
JsonData jsonData = base.ResponseData["data"]["achieved_info"];
|
||||
if (jsonData.Count > 0 && jsonData.Keys.Contains("battle_pass_reward_list"))
|
||||
{
|
||||
JsonData jsonData2 = jsonData["battle_pass_reward_list"];
|
||||
RewardList = new List<ReceivedReward>();
|
||||
for (int i = 0; i < jsonData2.Count; i++)
|
||||
{
|
||||
JsonData jsonData3 = jsonData2[i];
|
||||
int rewardType = jsonData3["reward_type"].ToInt();
|
||||
long rewardId = jsonData3["reward_detail_id"].ToLong();
|
||||
int rewardCount = jsonData3["reward_number"].ToInt();
|
||||
RewardList.Add(new ReceivedReward(rewardType, rewardId, rewardCount));
|
||||
}
|
||||
}
|
||||
PlayerStaticData.UpdateHaveUserGoodsNumByJsonData(base.ResponseData["data"]["reward_list"]);
|
||||
return num;
|
||||
}
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
using Cute;
|
||||
|
||||
namespace Wizard;
|
||||
|
||||
public class BattlePassProduct
|
||||
{
|
||||
public int Id { get; private set; }
|
||||
|
||||
public int SeasonId { get; private set; }
|
||||
|
||||
public string Name { get; private set; }
|
||||
|
||||
public string Description { get; private set; }
|
||||
|
||||
public int PriceInCrystal { get; private set; }
|
||||
|
||||
public ShopExpirtyInfo ExpirtyInfo { get; private set; }
|
||||
|
||||
public BattlePassProduct(int id, int seasonId, string name, int priceInCrystal, string description, ShopExpirtyInfo expirtyInfo)
|
||||
{
|
||||
Id = id;
|
||||
SeasonId = seasonId;
|
||||
Name = name;
|
||||
PriceInCrystal = priceInCrystal;
|
||||
Description = description;
|
||||
ExpirtyInfo = expirtyInfo;
|
||||
}
|
||||
|
||||
public string GetPosterTexturePath(bool isFetch)
|
||||
{
|
||||
string path = $"{SeasonId}_{Id}_battle_pass_buy_confirm";
|
||||
return Toolbox.ResourcesManager.GetAssetTypePath(path, ResourcesManager.AssetLoadPathType.BattlePass, isFetch);
|
||||
}
|
||||
|
||||
public string GetDetailPosterTexturePath(bool isFetch)
|
||||
{
|
||||
string path = $"{SeasonId}_{Id}_battle_pass_detail";
|
||||
return Toolbox.ResourcesManager.GetAssetTypePath(path, ResourcesManager.AssetLoadPathType.BattlePass, isFetch);
|
||||
}
|
||||
}
|
||||
@@ -1,53 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Cute;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Wizard;
|
||||
|
||||
public class BattlePassProductDetailDialog : MonoBehaviour
|
||||
{
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _descriptionLabel;
|
||||
|
||||
[SerializeField]
|
||||
private UITexture _posterTexture;
|
||||
|
||||
private List<string> _loadedResourceList;
|
||||
|
||||
public static void Create(BattlePassProduct product)
|
||||
{
|
||||
DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose();
|
||||
dialogBase.SetSize(DialogBase.Size.M);
|
||||
dialogBase.SetButtonLayout(DialogBase.ButtonLayout.OkBtn);
|
||||
dialogBase.SetPanelDepth(100);
|
||||
dialogBase.SetTitleLabel(Data.SystemText.Get("BattlePass_0003"));
|
||||
GameObject gameObject = UnityEngine.Object.Instantiate(Resources.Load("UI/layoutParts/BattlePass/DialogBattlePassProductDetail")) as GameObject;
|
||||
dialogBase.SetObj(gameObject);
|
||||
gameObject.GetComponent<BattlePassProductDetailDialog>().Initialize(product);
|
||||
}
|
||||
|
||||
public void Initialize(BattlePassProduct product)
|
||||
{
|
||||
_descriptionLabel.text = product.Description;
|
||||
_loadedResourceList = new List<string>();
|
||||
LoadResources(product, delegate
|
||||
{
|
||||
_posterTexture.mainTexture = Toolbox.ResourcesManager.LoadObject(product.GetDetailPosterTexturePath(isFetch: true)) as Texture;
|
||||
});
|
||||
}
|
||||
|
||||
private void LoadResources(BattlePassProduct product, Action onFinishLoad)
|
||||
{
|
||||
UIManager.GetInstance().createInSceneCenterLoading();
|
||||
List<string> loadPassList = new List<string>();
|
||||
loadPassList.Add(product.GetDetailPosterTexturePath(isFetch: false));
|
||||
StartCoroutine(Toolbox.ResourcesManager.LoadAssetGroupAsync(loadPassList, delegate
|
||||
{
|
||||
_loadedResourceList.AddRange(loadPassList);
|
||||
UIManager.GetInstance().closeInSceneCenterLoading();
|
||||
onFinishLoad.Call();
|
||||
}));
|
||||
}
|
||||
}
|
||||
@@ -1,151 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Cute;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Wizard;
|
||||
|
||||
public class BattlePassPurchaseDialog : MonoBehaviour
|
||||
{
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _descriptionLabel;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _haveCrystalNumLabel;
|
||||
|
||||
[SerializeField]
|
||||
private BattlePassPurchaseProductView _productViewOriginal;
|
||||
|
||||
[SerializeField]
|
||||
private UIGrid _productViewGrid;
|
||||
|
||||
[SerializeField]
|
||||
private PurchaseConfirm _prefabPurchaseConfirmDialog;
|
||||
|
||||
private DialogBase _dialogBattlePassPurchase;
|
||||
|
||||
private List<string> _loadedResourceList;
|
||||
|
||||
private Action _battlePassViewUpdate;
|
||||
|
||||
public static void Create(Action battlePassViewUpdate = null)
|
||||
{
|
||||
BattlePassPurchaseInfoTask task = new BattlePassPurchaseInfoTask();
|
||||
UIManager.GetInstance().StartCoroutine(Toolbox.NetworkManager.Connect(task, delegate
|
||||
{
|
||||
DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose();
|
||||
dialogBase.SetSize(DialogBase.Size.XL);
|
||||
dialogBase.SetTitleLabel(Data.SystemText.Get("BattlePass_0002"));
|
||||
GameObject gameObject = UnityEngine.Object.Instantiate(Resources.Load("UI/layoutParts/BattlePass/DialogBattlePassPurchase")) as GameObject;
|
||||
dialogBase.SetObj(gameObject);
|
||||
gameObject.GetComponent<BattlePassPurchaseDialog>().Initialize(task.PurchaseInfo, dialogBase, battlePassViewUpdate);
|
||||
}));
|
||||
}
|
||||
|
||||
public void Initialize(BattlePassPurchaseInfo battlePassPurchaseInfo, DialogBase dialog, Action battlePassViewUpdate)
|
||||
{
|
||||
_battlePassViewUpdate = battlePassViewUpdate;
|
||||
_dialogBattlePassPurchase = dialog;
|
||||
_productViewOriginal.gameObject.SetActive(value: false);
|
||||
_loadedResourceList = new List<string>();
|
||||
SetViewUI(battlePassPurchaseInfo);
|
||||
}
|
||||
|
||||
private void SetViewUI(BattlePassPurchaseInfo battlePassPurchaseInfo)
|
||||
{
|
||||
_descriptionLabel.text = battlePassPurchaseInfo.Description;
|
||||
_haveCrystalNumLabel.text = PlayerStaticData.UserCrystalCount.ToString();
|
||||
LoadResources(battlePassPurchaseInfo, delegate
|
||||
{
|
||||
foreach (BattlePassProduct product in battlePassPurchaseInfo.ProductList)
|
||||
{
|
||||
GameObject obj = NGUITools.AddChild(_productViewGrid.gameObject, _productViewOriginal.gameObject);
|
||||
obj.GetComponent<BattlePassPurchaseProductView>().SetView(product, OnClickPoster, OnClickBuyButton);
|
||||
obj.SetActive(value: true);
|
||||
}
|
||||
_productViewGrid.Reposition();
|
||||
});
|
||||
}
|
||||
|
||||
private void LoadResources(BattlePassPurchaseInfo purchaseInfo, Action onFinishLoad)
|
||||
{
|
||||
UIManager.GetInstance().createInSceneCenterLoading();
|
||||
List<string> loadPassList = new List<string>();
|
||||
foreach (BattlePassProduct product in purchaseInfo.ProductList)
|
||||
{
|
||||
loadPassList.Add(product.GetPosterTexturePath(isFetch: false));
|
||||
}
|
||||
StartCoroutine(Toolbox.ResourcesManager.LoadAssetGroupAsync(loadPassList, delegate
|
||||
{
|
||||
_loadedResourceList.AddRange(loadPassList);
|
||||
UIManager.GetInstance().closeInSceneCenterLoading();
|
||||
onFinishLoad.Call();
|
||||
}));
|
||||
}
|
||||
|
||||
private void OnClickPoster(BattlePassProduct product)
|
||||
{
|
||||
BattlePassProductDetailDialog.Create(product);
|
||||
}
|
||||
|
||||
private void OnClickBuyButton(BattlePassProduct product)
|
||||
{
|
||||
if (PlayerStaticData.UserCrystalCount < product.PriceInCrystal)
|
||||
{
|
||||
ShopCommonUtility.CreateCrystalShortagePopup();
|
||||
}
|
||||
else
|
||||
{
|
||||
CreateBuyConfirmDialog(product);
|
||||
}
|
||||
}
|
||||
|
||||
private void CreateBuyConfirmDialog(BattlePassProduct product)
|
||||
{
|
||||
DialogBase dialogBase = ShopCommonUtility.CreateBasePopupPurchaseConfirm(new EventDelegate(delegate
|
||||
{
|
||||
ConnectBuyBattlePass(product);
|
||||
}));
|
||||
PurchaseConfirm purchaseConfirm = UnityEngine.Object.Instantiate(_prefabPurchaseConfirmDialog);
|
||||
dialogBase.SetObj(purchaseConfirm.gameObject);
|
||||
dialogBase.SetTitleLabel(Data.SystemText.Get("BattlePass_0004"));
|
||||
string purchaseText = Data.SystemText.Get("Shop_0101", product.Name);
|
||||
purchaseConfirm.SetClystalConfirmDialog(product.PriceInCrystal, purchaseText, PlayerStaticData.UserCrystalCount, product.ExpirtyInfo);
|
||||
_dialogBattlePassPurchase.Close();
|
||||
}
|
||||
|
||||
private void ConnectBuyBattlePass(BattlePassProduct product)
|
||||
{
|
||||
BattlePassBuyTask task = new BattlePassBuyTask();
|
||||
task.SetParameter(product.SeasonId, product.Id);
|
||||
UIManager.GetInstance().StartCoroutine(Toolbox.NetworkManager.Connect(task, delegate
|
||||
{
|
||||
OnSuccessBuyBattlePass(product, task.RewardList);
|
||||
}));
|
||||
}
|
||||
|
||||
private void OnSuccessBuyBattlePass(BattlePassProduct product, List<ReceivedReward> rewardList)
|
||||
{
|
||||
MyPageMenu.Instance.UpdateCrystalCount();
|
||||
DialogBase dialogBase = ShopCommonUtility.CreatePurchaseSuccess(product.Name);
|
||||
_battlePassViewUpdate.Call();
|
||||
if (rewardList != null && rewardList.Count > 0)
|
||||
{
|
||||
dialogBase.OnClose = delegate
|
||||
{
|
||||
OpenRewardReceiveDialog(rewardList);
|
||||
};
|
||||
}
|
||||
if (UIManager.GetInstance().IsCurrentScene(UIManager.ViewScene.MyPage))
|
||||
{
|
||||
MyPageMenu.Instance.HomeMenu.HideAndRepositionSubBanner("battle_pass_buy");
|
||||
}
|
||||
}
|
||||
|
||||
private void OpenRewardReceiveDialog(List<ReceivedReward> rewardList)
|
||||
{
|
||||
UIManager.GetInstance().createInSceneCenterLoading();
|
||||
DialogCreator.CreateRewardReceiveDialog(rewardList).SetTitleLabel(Data.SystemText.Get("BattlePass_0005"));
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Wizard;
|
||||
|
||||
public class BattlePassPurchaseInfo
|
||||
{
|
||||
public string Description { get; private set; }
|
||||
|
||||
public List<BattlePassProduct> ProductList { get; private set; }
|
||||
|
||||
public BattlePassPurchaseInfo(string description, List<BattlePassProduct> productList)
|
||||
{
|
||||
Description = description;
|
||||
ProductList = productList;
|
||||
}
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using LitJson;
|
||||
|
||||
namespace Wizard;
|
||||
|
||||
public class BattlePassPurchaseInfoTask : BaseTask
|
||||
{
|
||||
public BattlePassPurchaseInfo PurchaseInfo { get; private set; }
|
||||
|
||||
public BattlePassPurchaseInfoTask()
|
||||
{
|
||||
base.type = ApiType.Type.BattlePassItemList;
|
||||
}
|
||||
|
||||
protected override int Parse()
|
||||
{
|
||||
int num = base.Parse();
|
||||
if (num != 1)
|
||||
{
|
||||
return num;
|
||||
}
|
||||
JsonData jsonData = base.ResponseData["data"];
|
||||
string text = jsonData["premium_pass_description"].ToString();
|
||||
text = text.Replace("\\n", "\n");
|
||||
if (jsonData.Keys.Contains("sales_period_info") && jsonData["sales_period_info"].Keys.Contains("sales_period_time"))
|
||||
{
|
||||
string arg = ConvertTime.ToLocal(DateTime.Parse(jsonData["sales_period_info"]["sales_period_time"].ToString()));
|
||||
text = string.Format(text, arg);
|
||||
}
|
||||
List<BattlePassProduct> list = new List<BattlePassProduct>();
|
||||
JsonData jsonData2 = jsonData["products"];
|
||||
for (int i = 0; i < jsonData2.Count; i++)
|
||||
{
|
||||
int id = jsonData2[i]["id"].ToInt();
|
||||
int seasonId = jsonData2[i]["season_id"].ToInt();
|
||||
string name = jsonData2[i]["name"].ToString();
|
||||
int priceInCrystal = jsonData2[i]["price_crystal"].ToInt();
|
||||
string text2 = jsonData2[i]["description"].ToString();
|
||||
text2 = text2.Replace("\\n", "\n");
|
||||
ShopExpirtyInfo expirtyInfo = new ShopExpirtyInfo(jsonData2[i]["sales_period_info"]);
|
||||
list.Add(new BattlePassProduct(id, seasonId, name, priceInCrystal, text2, expirtyInfo));
|
||||
}
|
||||
PurchaseInfo = new BattlePassPurchaseInfo(text, list);
|
||||
return num;
|
||||
}
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
using System;
|
||||
using Cute;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Wizard;
|
||||
|
||||
public class BattlePassPurchaseProductView : MonoBehaviour
|
||||
{
|
||||
[SerializeField]
|
||||
private UITexture _posterTexture;
|
||||
|
||||
[SerializeField]
|
||||
private UIButton _buyBtn;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _priceLabel;
|
||||
|
||||
public void SetView(BattlePassProduct product, Action<BattlePassProduct> onClickPoster, Action<BattlePassProduct> onClickBuyBtn)
|
||||
{
|
||||
_posterTexture.mainTexture = Toolbox.ResourcesManager.LoadObject(product.GetPosterTexturePath(isFetch: true)) as Texture;
|
||||
_priceLabel.text = product.PriceInCrystal.ToString();
|
||||
UIEventListener.Get(_posterTexture.gameObject).onClick = delegate
|
||||
{
|
||||
onClickPoster.Call(product);
|
||||
};
|
||||
_buyBtn.onClick.Clear();
|
||||
_buyBtn.onClick.Add(new EventDelegate(delegate
|
||||
{
|
||||
|
||||
onClickBuyBtn.Call(product);
|
||||
}));
|
||||
}
|
||||
}
|
||||
@@ -1,207 +0,0 @@
|
||||
using System;
|
||||
using LitJson;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Wizard;
|
||||
|
||||
public class ColosseumEntryInfoTask : BaseTask
|
||||
{
|
||||
public ColosseumEntryInfoTask()
|
||||
{
|
||||
base.type = ApiType.Type.ColosseumEntryInfo;
|
||||
}
|
||||
|
||||
protected override int Parse()
|
||||
{
|
||||
int num = base.Parse();
|
||||
if (num != 1)
|
||||
{
|
||||
return num;
|
||||
}
|
||||
JsonData jsonData = base.ResponseData["data"];
|
||||
JsonData colosseumOwnStatus = jsonData["colosseum_status"];
|
||||
ArenaColosseum colosseumData = Data.ArenaData.ColosseumData;
|
||||
if (jsonData.Keys.Contains("is_unfinished_entry_exists"))
|
||||
{
|
||||
colosseumData.isJoin = jsonData["is_unfinished_entry_exists"].ToBoolean();
|
||||
}
|
||||
else
|
||||
{
|
||||
colosseumData.isJoin = false;
|
||||
}
|
||||
if (jsonData.Keys.Contains("is_allowed_free_entry"))
|
||||
{
|
||||
colosseumData.IsFreeEntry = jsonData["is_allowed_free_entry"].ToBoolean();
|
||||
}
|
||||
else
|
||||
{
|
||||
colosseumData.IsFreeEntry = false;
|
||||
}
|
||||
if (jsonData.Keys.Contains("fee_list"))
|
||||
{
|
||||
colosseumData.rupyCost = jsonData["fee_list"]["rupy_cost"].ToInt();
|
||||
colosseumData.ticketCost = jsonData["fee_list"]["ticket_cost"].ToInt();
|
||||
colosseumData.crystalCost = jsonData["fee_list"]["crystal_cost"].ToInt();
|
||||
}
|
||||
if (jsonData.Keys.Contains("deck_format") || !colosseumData.isJoin)
|
||||
{
|
||||
colosseumData.IsDeckEntry = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
colosseumData.IsDeckEntry = true;
|
||||
}
|
||||
if (jsonData.Keys.Contains("is_able_to_join_round_3") && !jsonData["is_able_to_join_round_3"].ToBoolean())
|
||||
{
|
||||
colosseumData.Round = ArenaColosseum.eRound.Lose;
|
||||
colosseumData.NextRound = ArenaColosseum.eRound.Lose;
|
||||
}
|
||||
if (jsonData.Keys.Contains("is_already_entry_final_round"))
|
||||
{
|
||||
colosseumData.IsFinalRoundTry = jsonData["is_already_entry_final_round"].ToBoolean();
|
||||
}
|
||||
else
|
||||
{
|
||||
colosseumData.IsFinalRoundTry = false;
|
||||
}
|
||||
SetColosseumInfo(base.ResponseData);
|
||||
SetColosseumOwnStatus(colosseumOwnStatus);
|
||||
if (jsonData.Keys.Contains("is_deck_deleted"))
|
||||
{
|
||||
colosseumData.IsDeckDeleted = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
colosseumData.IsDeckDeleted = false;
|
||||
}
|
||||
if (colosseumData.IsTwoPickRule && !colosseumData.IsDeckEntry)
|
||||
{
|
||||
if (jsonData.Keys.Contains("two_pick_status"))
|
||||
{
|
||||
colosseumData.EntryStatus = (ArenaColosseum.eEntryStatus)jsonData["two_pick_status"].ToInt();
|
||||
}
|
||||
else
|
||||
{
|
||||
colosseumData.EntryStatus = ArenaColosseum.eEntryStatus.TwoPickClassSelect;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
colosseumData.EntryStatus = ArenaColosseum.eEntryStatus.SetUpComplete;
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
public static void SetColosseumInfo(JsonData responseData)
|
||||
{
|
||||
ArenaColosseum colosseumData = Data.ArenaData.ColosseumData;
|
||||
JsonData jsonData = responseData["data"]["colosseum_info"];
|
||||
colosseumData.IsColosseumPeriod = jsonData["is_colosseum_period"].ToBoolean();
|
||||
if (colosseumData.IsColosseumPeriod)
|
||||
{
|
||||
colosseumData.ApiRuleParseAndSet(jsonData["deck_format"].ToInt());
|
||||
colosseumData.IsNormalTwoPick = jsonData["is_normal_two_pick"].ToString() == "1";
|
||||
colosseumData.Name = jsonData["colosseum_name"].ToString();
|
||||
colosseumData.IsRoundPeriod = jsonData["is_round_period"].ToBoolean();
|
||||
colosseumData.ColorCodeId = jsonData["is_special_mode"].ToString();
|
||||
if (jsonData.TryGetValue("card_pool_name", out var value))
|
||||
{
|
||||
colosseumData.CardPool = value.ToString();
|
||||
}
|
||||
if (colosseumData.IsRoundPeriod)
|
||||
{
|
||||
colosseumData.StageNo = (ArenaColosseum.eStageNo)jsonData["now_round"].ToInt();
|
||||
colosseumData.RemainingUnixTime = ConvertTime.DateTimeToUnixTime(DateTime.Parse(jsonData["end_time"].ToString()));
|
||||
string text = ConvertTime.ToLocal(DateTime.Parse(jsonData["start_time"].ToString()));
|
||||
string text2 = ConvertTime.ToLocal(DateTime.Parse(jsonData["end_time"].ToString()));
|
||||
colosseumData.NowRoundTimeText = Data.SystemText.Get("Colosseum_0033", text, text2);
|
||||
}
|
||||
else
|
||||
{
|
||||
colosseumData.RemainingUnixTime = ConvertTime.DateTimeToUnixTime(DateTime.Parse(jsonData["start_time"].ToString()));
|
||||
colosseumData.Name = jsonData["colosseum_name"].ToString();
|
||||
colosseumData.StageNo = (ArenaColosseum.eStageNo)jsonData["next_round"].ToInt();
|
||||
string text3 = ConvertTime.ToLocal(DateTime.Parse(jsonData["start_time"].ToString()));
|
||||
colosseumData.NowRoundTimeText = Data.SystemText.Get("Colosseum_0063", text3);
|
||||
}
|
||||
colosseumData.RemainingSinceTime = Time.realtimeSinceStartup;
|
||||
colosseumData.RemainingServerUnixTime = responseData["data_headers"]["servertime"].ToDouble();
|
||||
colosseumData.NeedsFirstTips = jsonData.GetValueOrDefault("is_display_tips", 0) == 1;
|
||||
colosseumData.ColosseumId = jsonData.GetValueOrDefault("colosseum_id", 0);
|
||||
colosseumData.ChaoseTipsId = jsonData.GetValueOrDefault("tips_id", 0);
|
||||
colosseumData.CanUseNonPossessionCard = jsonData.GetValueOrDefault("is_all_card_enabled", 0) == 1;
|
||||
colosseumData.ExpirtyInfo = new ShopExpirtyInfo(jsonData["sales_period_info"]);
|
||||
if (jsonData.TryGetValue("strategy_pick_num", out var value2))
|
||||
{
|
||||
colosseumData.ChaosNum = value2.ToInt();
|
||||
Data.Master.LoadColosseumChaosBattleInfo(colosseumData.ChaosNum);
|
||||
Data.Master.SetColosseumClassInfomationOrder(colosseumData.ChaosNum);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void SetColosseumOwnStatus(JsonData status)
|
||||
{
|
||||
ArenaColosseum colosseumData = Data.ArenaData.ColosseumData;
|
||||
if (status.Count != 0)
|
||||
{
|
||||
if (status.Keys.Contains("rest_entry_num"))
|
||||
{
|
||||
if (status["rest_entry_num"].ToInt() != 0)
|
||||
{
|
||||
colosseumData.IsRetry = true;
|
||||
colosseumData.RetryRemainingNum = status["rest_entry_num"].ToInt();
|
||||
}
|
||||
else
|
||||
{
|
||||
colosseumData.IsRetry = false;
|
||||
colosseumData.RetryRemainingNum = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
colosseumData.IsRetry = false;
|
||||
}
|
||||
if (status.Keys.Contains("now_round_id"))
|
||||
{
|
||||
colosseumData.Round = (ArenaColosseum.eRound)status["now_round_id"].ToInt();
|
||||
colosseumData.ServerRoundId = status["now_round_id"].ToInt();
|
||||
}
|
||||
if (status.Keys.Contains("is_last_day"))
|
||||
{
|
||||
colosseumData.IsLastDay = status["is_last_day"].ToBoolean();
|
||||
}
|
||||
else
|
||||
{
|
||||
colosseumData.IsLastDay = false;
|
||||
}
|
||||
if (status.Keys.Contains("next_round_id"))
|
||||
{
|
||||
colosseumData.NextRound = (ArenaColosseum.eRound)status["next_round_id"].ToInt();
|
||||
}
|
||||
if (colosseumData.NextRound == ArenaColosseum.eRound.FinalNotAdvance)
|
||||
{
|
||||
if (colosseumData.IsRoundPeriod)
|
||||
{
|
||||
colosseumData.NextRound = ArenaColosseum.eRound.Undecided;
|
||||
}
|
||||
else
|
||||
{
|
||||
colosseumData.NextRound = ArenaColosseum.eRound.Lose;
|
||||
}
|
||||
}
|
||||
if (status.Keys.Contains("is_champion"))
|
||||
{
|
||||
colosseumData.IsClear = status["is_champion"].ToBoolean();
|
||||
if (colosseumData.IsClear)
|
||||
{
|
||||
colosseumData.Name = status["colosseum_name"].ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
colosseumData.IsRetry = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
namespace Wizard;
|
||||
|
||||
public class CompetitionCheckPeriodTask : BaseTask
|
||||
{
|
||||
public CompetitionCheckPeriodTask()
|
||||
{
|
||||
base.type = ApiType.Type.CompetitionCheckPeriod;
|
||||
}
|
||||
}
|
||||
@@ -7,9 +7,7 @@ public class ConvertTime
|
||||
{
|
||||
public enum FORMAT
|
||||
{
|
||||
TIME_DATE_LONG,
|
||||
TIME_DATE_LONG_SPECIAL
|
||||
}
|
||||
TIME_DATE_LONG }
|
||||
|
||||
private static string[] FORMAT_TEXT_ID = new string[7] { "System_TimeDateLong", "System_TimeDateShort", "System_DateLong", "System_DateShort", "System_Time", "System_YearMonth", "System_0068" };
|
||||
|
||||
|
||||
@@ -161,8 +161,6 @@ public static class Data
|
||||
}
|
||||
}
|
||||
|
||||
public static VoteData VoteInfo { get; set; }
|
||||
|
||||
public static List<DeckGroup> DeckGroupDataBase { get; set; } = new List<DeckGroup>();
|
||||
|
||||
public static List<NetworkDefine.MAINTENANCE_TYPE> MaintenanceCodeList { get; private set; } = null;
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Wizard;
|
||||
|
||||
public class DeckIntroductionPeriodSelectDialog : MonoBehaviour
|
||||
{
|
||||
public DeckIntroductionTask DeckIntroductionDeta { get; private set; }
|
||||
|
||||
private Action<int> OnSelectEvent { get; set; }
|
||||
|
||||
public static DialogBase Create(int defaultSelectId, DeckIntroductionTask task, Action<int> onSelect)
|
||||
{
|
||||
List<string> resultDeckSeriesNameList = task.ResultDeckSeriesNameList;
|
||||
int defaultIndex = 0;
|
||||
for (int i = 0; i < task.ResultDeckSeriesIdList.Count; i++)
|
||||
{
|
||||
if (task.ResultDeckSeriesIdList[i] == defaultSelectId)
|
||||
{
|
||||
defaultIndex = i;
|
||||
}
|
||||
}
|
||||
GameObject obj = UnityEngine.Object.Instantiate(Resources.Load("UI/layoutParts/MyPage/DeckIntroductionPeriodSelectDialog")) as GameObject;
|
||||
DeckIntroductionPeriodSelectDialog componentInChildren = obj.GetComponentInChildren<DeckIntroductionPeriodSelectDialog>();
|
||||
componentInChildren.DeckIntroductionDeta = task;
|
||||
componentInChildren.OnSelectEvent = onSelect;
|
||||
return DrumrollDialog.Create(obj.GetComponent<DrumrollDialog>(), resultDeckSeriesNameList, defaultIndex, componentInChildren.OnSelect);
|
||||
}
|
||||
|
||||
private void OnSelect(int index)
|
||||
{
|
||||
OnSelectEvent(DeckIntroductionDeta.ResultDeckSeriesIdList[index]);
|
||||
}
|
||||
}
|
||||
@@ -1,130 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using LitJson;
|
||||
|
||||
namespace Wizard;
|
||||
|
||||
public class DeckIntroductionTask : BaseTask
|
||||
{
|
||||
public class IntroductionData
|
||||
{
|
||||
public DeckData Deck { get; private set; }
|
||||
|
||||
public string PlayerName { get; private set; }
|
||||
|
||||
public string Detail { get; private set; }
|
||||
|
||||
public int TopCardId { get; private set; }
|
||||
|
||||
public IntroductionData(DeckData deck, string playerName, string detail, int topCardId)
|
||||
{
|
||||
Deck = deck;
|
||||
PlayerName = playerName;
|
||||
Detail = detail;
|
||||
TopCardId = topCardId;
|
||||
}
|
||||
}
|
||||
|
||||
public class IntroductionDataTaskParam : BaseParam
|
||||
{
|
||||
public int series_id;
|
||||
}
|
||||
|
||||
public List<IntroductionData> _result = new List<IntroductionData>();
|
||||
|
||||
public Dictionary<Format, string> AlternativeFormatAndSeries;
|
||||
|
||||
public List<int> ResultDeckSeriesIdList { get; private set; }
|
||||
|
||||
public List<string> ResultDeckSeriesNameList { get; private set; }
|
||||
|
||||
public List<bool> IsTimeSlipRotationList { get; private set; }
|
||||
|
||||
public int DisplaySeriesId { get; private set; }
|
||||
|
||||
public Format DisplayFormat { get; private set; }
|
||||
|
||||
public void SetParameter(int series_id)
|
||||
{
|
||||
IntroductionDataTaskParam introductionDataTaskParam = new IntroductionDataTaskParam();
|
||||
introductionDataTaskParam.series_id = series_id;
|
||||
base.Params = introductionDataTaskParam;
|
||||
}
|
||||
|
||||
public DeckIntroductionTask()
|
||||
{
|
||||
base.type = ApiType.Type.DeckIntroduction;
|
||||
}
|
||||
|
||||
protected override int Parse()
|
||||
{
|
||||
int num = base.Parse();
|
||||
if (num != 1)
|
||||
{
|
||||
return num;
|
||||
}
|
||||
JsonData jsonData = base.ResponseData["data"];
|
||||
DisplaySeriesId = jsonData["series_id"].ToInt();
|
||||
DisplayFormat = Data.ParseApiFormat(jsonData["display_format"].ToInt());
|
||||
JsonData jsonData2 = jsonData["display_deck_list"];
|
||||
for (int i = 0; i < jsonData2.Count; i++)
|
||||
{
|
||||
JsonData jsonData3 = jsonData2[i];
|
||||
DeckData deckData = new DeckData();
|
||||
deckData.Initialize(jsonData3);
|
||||
string playerName = jsonData3["player_name"].ToString();
|
||||
string detail = jsonData3["introduction"].ToString();
|
||||
int topCardId = jsonData3["thumbnail_card_id"].ToInt();
|
||||
IntroductionData item = new IntroductionData(deckData, playerName, detail, topCardId);
|
||||
_result.Add(item);
|
||||
}
|
||||
ResultDeckSeriesIdList = new List<int>();
|
||||
ResultDeckSeriesNameList = new List<string>();
|
||||
IsTimeSlipRotationList = new List<bool>();
|
||||
JsonData jsonData4 = jsonData["series_list"];
|
||||
for (int j = 0; j < jsonData4.Count; j++)
|
||||
{
|
||||
JsonData jsonData5 = jsonData4[j];
|
||||
int item2 = jsonData5["series_id"].ToInt();
|
||||
string item3 = jsonData5["series_name"].ToString();
|
||||
bool item4 = jsonData5["is_ts_rotation"].ToInt() == 1;
|
||||
ResultDeckSeriesIdList.Add(item2);
|
||||
ResultDeckSeriesNameList.Add(item3);
|
||||
IsTimeSlipRotationList.Add(item4);
|
||||
}
|
||||
if (jsonData.TryGetValue("alternative_list", out var value))
|
||||
{
|
||||
AlternativeFormatAndSeries = new Dictionary<Format, string>();
|
||||
foreach (JsonData item5 in (IEnumerable)value)
|
||||
{
|
||||
Format key = Data.ParseApiFormat(item5["alternative_format"].ToInt());
|
||||
AlternativeFormatAndSeries[key] = item5["alternative_series_name"].ToString();
|
||||
}
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
public bool IsExistClass(CardBasePrm.ClanType classType, Format format)
|
||||
{
|
||||
for (int i = 0; i < _result.Count; i++)
|
||||
{
|
||||
if (_result[i].Deck.GetDeckClassID() == (int)classType && _result[i].Deck.Format == format)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool IsExistFormat(Format format)
|
||||
{
|
||||
for (int i = 0; i < _result.Count; i++)
|
||||
{
|
||||
if (_result[i].Deck.Format == format)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -162,18 +162,6 @@ public class Footer : UIBase
|
||||
|
||||
}
|
||||
|
||||
private void EnableMyPageCamera()
|
||||
{
|
||||
if (MyPageMenu.Instance != null)
|
||||
{
|
||||
UIManager.GetInstance().MyPageUICameraObj.SetActive(_footerMenuObj.activeSelf || MyPageMenu.Instance.IsVisible);
|
||||
}
|
||||
else
|
||||
{
|
||||
UIManager.GetInstance().MyPageUICameraObj.SetActive(_footerMenuObj.activeSelf);
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateCurrentIndex(int pushMenuIdx)
|
||||
{
|
||||
CurrentIndex = pushMenuIdx;
|
||||
|
||||
@@ -1,153 +0,0 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Cute;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Wizard;
|
||||
|
||||
public class FormatChangeUI : MonoBehaviour
|
||||
{
|
||||
public enum FormatCategory
|
||||
{
|
||||
Invalid,
|
||||
Rotation,
|
||||
Unlimited,
|
||||
PreRotation,
|
||||
Crossover,
|
||||
MyRotation,
|
||||
Other
|
||||
}
|
||||
|
||||
private static readonly Dictionary<FormatCategory, (string ON, string OFF)> ANOTHER_BTN_SPRITES = new Dictionary<FormatCategory, (string, string)>
|
||||
{
|
||||
{
|
||||
FormatCategory.Other,
|
||||
("btn_gacha_other_on", "btn_gacha_other_off")
|
||||
},
|
||||
{
|
||||
FormatCategory.PreRotation,
|
||||
("btn_prerotation_on", "btn_prerotation_off")
|
||||
},
|
||||
{
|
||||
FormatCategory.Crossover,
|
||||
("btn_gacha_crossover_on", "btn_gacha_crossover_off")
|
||||
},
|
||||
{
|
||||
FormatCategory.MyRotation,
|
||||
("btn_gacha_myrotation_on", "btn_gacha_myrotation_off")
|
||||
}
|
||||
};
|
||||
|
||||
[SerializeField]
|
||||
private UIButton _btnRotation;
|
||||
|
||||
[SerializeField]
|
||||
private UIButton _btnUnlimited;
|
||||
|
||||
[SerializeField]
|
||||
private UIButton _btnAnother;
|
||||
|
||||
private FormatCategory _currentFormatCategory = FormatCategory.Rotation;
|
||||
|
||||
private Action<FormatCategory> _onChangeFormat;
|
||||
|
||||
public void ChangeFormat(FormatCategory inFormatCategory)
|
||||
{
|
||||
_currentFormatCategory = inFormatCategory;
|
||||
UpdateFormatBtnSprite(inFormatCategory);
|
||||
}
|
||||
|
||||
public void SetEnableFormatButton(FormatCategory formatCategory, bool isEnable)
|
||||
{
|
||||
switch (formatCategory)
|
||||
{
|
||||
case FormatCategory.Rotation:
|
||||
UIManager.SetObjectToGrey(_btnRotation.gameObject, !isEnable);
|
||||
return;
|
||||
case FormatCategory.Unlimited:
|
||||
UIManager.SetObjectToGrey(_btnUnlimited.gameObject, !isEnable);
|
||||
return;
|
||||
}
|
||||
if (ANOTHER_BTN_SPRITES.ContainsKey(formatCategory))
|
||||
{
|
||||
UIManager.SetObjectToGrey(_btnAnother.gameObject, !isEnable);
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateAnotherFormatButton(FormatCategory anotherFormatCategory)
|
||||
{
|
||||
bool flag = anotherFormatCategory != FormatCategory.Invalid;
|
||||
_btnAnother.gameObject.SetActive(flag);
|
||||
_btnUnlimited.normalSprite = (flag ? "btn_unlimited_center_off" : "btn_gacha_unlimited_off");
|
||||
_btnUnlimited.pressedSprite = (flag ? "btn_unlimited_center_on" : "btn_gacha_unlimited_on");
|
||||
if (flag)
|
||||
{
|
||||
_btnAnother.onClick.Add(new EventDelegate(delegate
|
||||
{
|
||||
OnClickChangeFormatBtn(anotherFormatCategory);
|
||||
}));
|
||||
_btnAnother.normalSprite = ANOTHER_BTN_SPRITES[anotherFormatCategory].OFF;
|
||||
_btnAnother.pressedSprite = ANOTHER_BTN_SPRITES[anotherFormatCategory].ON;
|
||||
}
|
||||
else
|
||||
{
|
||||
_btnAnother.onClick.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
private void OnClickChangeFormatBtn(FormatCategory formatCategory)
|
||||
{
|
||||
if (_currentFormatCategory != formatCategory)
|
||||
{
|
||||
|
||||
ChangeFormat(formatCategory);
|
||||
_onChangeFormat.Call(formatCategory);
|
||||
StartCoroutine(WaitForCanClickFormatBtns());
|
||||
}
|
||||
}
|
||||
|
||||
private IEnumerator WaitForCanClickFormatBtns()
|
||||
{
|
||||
SetEnableAllBtns(isEnable: false);
|
||||
yield return new WaitForSeconds(0.4f);
|
||||
SetEnableAllBtns(isEnable: true);
|
||||
}
|
||||
|
||||
private void SetEnableAllBtns(bool isEnable)
|
||||
{
|
||||
_btnRotation.isEnabled = isEnable;
|
||||
_btnUnlimited.isEnabled = isEnable;
|
||||
_btnAnother.isEnabled = isEnable;
|
||||
}
|
||||
|
||||
private string RenameSpriteString(string str, bool isEnable)
|
||||
{
|
||||
string oldValue = (isEnable ? "_off" : "_on");
|
||||
string newValue = (isEnable ? "_on" : "_off");
|
||||
return str.Replace(oldValue, newValue);
|
||||
}
|
||||
|
||||
private void UpdateFormatBtnSprite(FormatCategory inFormatCategory)
|
||||
{
|
||||
switch (inFormatCategory)
|
||||
{
|
||||
case FormatCategory.Rotation:
|
||||
_btnRotation.normalSprite = RenameSpriteString(_btnRotation.normalSprite, isEnable: true);
|
||||
_btnUnlimited.normalSprite = RenameSpriteString(_btnUnlimited.normalSprite, isEnable: false);
|
||||
_btnAnother.normalSprite = RenameSpriteString(_btnAnother.normalSprite, isEnable: false);
|
||||
return;
|
||||
case FormatCategory.Unlimited:
|
||||
_btnRotation.normalSprite = RenameSpriteString(_btnRotation.normalSprite, isEnable: false);
|
||||
_btnUnlimited.normalSprite = RenameSpriteString(_btnUnlimited.normalSprite, isEnable: true);
|
||||
_btnAnother.normalSprite = RenameSpriteString(_btnAnother.normalSprite, isEnable: false);
|
||||
return;
|
||||
}
|
||||
if (ANOTHER_BTN_SPRITES.ContainsKey(inFormatCategory))
|
||||
{
|
||||
_btnRotation.normalSprite = RenameSpriteString(_btnRotation.normalSprite, isEnable: false);
|
||||
_btnUnlimited.normalSprite = RenameSpriteString(_btnUnlimited.normalSprite, isEnable: false);
|
||||
_btnAnother.normalSprite = RenameSpriteString(_btnAnother.normalSprite, isEnable: true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -184,14 +184,6 @@ public class Master
|
||||
}
|
||||
}
|
||||
|
||||
public void LoadColosseumChaosBattleInfo(int num)
|
||||
{
|
||||
if (num > 0 && _chaosBattleInfoList != null)
|
||||
{
|
||||
_colosseumChaosBattleInfo = _chaosBattleInfoList[num - 1];
|
||||
}
|
||||
}
|
||||
|
||||
public void SetRoomClassInfomationOrder(int num)
|
||||
{
|
||||
if (num > 0 && _classInfomationOrderList != null)
|
||||
@@ -200,14 +192,6 @@ public class Master
|
||||
}
|
||||
}
|
||||
|
||||
public void SetColosseumClassInfomationOrder(int num)
|
||||
{
|
||||
if (num > 0 && _classInfomationOrderList != null)
|
||||
{
|
||||
_colosseumClassInfomationOrder = _classInfomationOrderList[num - 1];
|
||||
}
|
||||
}
|
||||
|
||||
public List<int> GetCrossOverClassInfoListOrNull(int mainClass, int subClass)
|
||||
{
|
||||
return _crossOverClassInfomationOrder.GetValueOrDefault(mainClass + "|" + subClass, null)?.Split('|').Select(int.Parse).ToList();
|
||||
|
||||
@@ -1,75 +0,0 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Cute;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Wizard;
|
||||
|
||||
public class MyPageCustomBGControl : MonoBehaviour
|
||||
{
|
||||
|
||||
[SerializeField]
|
||||
private UITexture _character;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _root;
|
||||
|
||||
[SerializeField]
|
||||
private UITexture _customBGTexture;
|
||||
|
||||
private GameObject _frontEffect;
|
||||
|
||||
private GameObject _backEffect;
|
||||
|
||||
private float _fadeOutTimer;
|
||||
|
||||
private bool _isFadeOut = true;
|
||||
|
||||
private Action _onFadeFinish;
|
||||
|
||||
private float _startShowTime;
|
||||
|
||||
public void SetEnable(bool enable)
|
||||
{
|
||||
_root.SetActive(enable);
|
||||
}
|
||||
|
||||
public void ShowSpecialResetShader()
|
||||
{
|
||||
if (IsSpecialMypageShader(_character.material))
|
||||
{
|
||||
_startShowTime = Time.time;
|
||||
SetSpecialResetShaderParameter();
|
||||
ResetEffect(_frontEffect);
|
||||
ResetEffect(_backEffect);
|
||||
}
|
||||
}
|
||||
|
||||
public void SetSpecialResetShaderParameter()
|
||||
{
|
||||
if (IsSpecialMypageShader(_character.material))
|
||||
{
|
||||
_character.material.SetFloat("_SceneTime", Time.time - _startShowTime);
|
||||
_character.gameObject.SetActive(value: false);
|
||||
_character.gameObject.SetActive(value: true);
|
||||
}
|
||||
}
|
||||
|
||||
private void ResetEffect(GameObject effect)
|
||||
{
|
||||
if (!(effect == null))
|
||||
{
|
||||
effect.SetActive(value: false);
|
||||
ParticleSystem component = effect.GetComponent<ParticleSystem>();
|
||||
component.Stop(withChildren: true);
|
||||
component.Play(withChildren: true);
|
||||
effect.SetActive(value: true);
|
||||
}
|
||||
}
|
||||
|
||||
private bool IsSpecialMypageShader(Material material)
|
||||
{
|
||||
return material.shader.name.Contains("VariantMypage");
|
||||
}
|
||||
}
|
||||
@@ -15,6 +15,4 @@ public class MyPageDetail
|
||||
}
|
||||
|
||||
public MyPageBGInfo BGInfo { get; set; } = new MyPageBGInfo();
|
||||
|
||||
public SpeedChallengeInfo SpeedChallengeInfo { get; set; }
|
||||
}
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Cute;
|
||||
using UnityEngine;
|
||||
using Wizard.Dialog.Setting;
|
||||
using Wizard.Scripts.Network.Task.ItemAcquireHistory;
|
||||
using Wizard.UI.Dialog;
|
||||
|
||||
namespace Wizard;
|
||||
|
||||
public class MyPageOtherButtons : UIBase
|
||||
{
|
||||
|
||||
protected override void OnDestroy()
|
||||
{
|
||||
base.OnDestroy();
|
||||
}
|
||||
|
||||
public static void CreateDataLinkDialog()
|
||||
{
|
||||
SystemText systemText = Data.SystemText;
|
||||
DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose();
|
||||
dialogBase.SetButtonLayout(DialogBase.ButtonLayout.BlueBtn_CancelBtn);
|
||||
EventDelegate method_btn = new EventDelegate(delegate
|
||||
{
|
||||
UIManager.GetInstance().AccountTransferHelper.CreateAccountTransferDialog(AccountBase.DisplayType.OTHER, AccountBase.TransitionOriginalScreen.OTHER);
|
||||
});
|
||||
dialogBase.SetButtonDelegate(method_btn);
|
||||
dialogBase.SetTitleLabel(systemText.Get("Account_0001"));
|
||||
dialogBase.SetButtonText(systemText.Get("Account_0089"));
|
||||
string text = systemText.Get("Account_0098");
|
||||
dialogBase.SetText(text);
|
||||
dialogBase.SetSize(DialogBase.Size.M);
|
||||
}
|
||||
|
||||
public static void CreateDialogAccountLink(Action close_callback = null)
|
||||
{
|
||||
SystemText systemText = Data.SystemText;
|
||||
DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose();
|
||||
EventDelegate method_btn = new EventDelegate(delegate
|
||||
{
|
||||
UIManager.GetInstance().AccountTransferHelper.CreateAccountTransferDialog(AccountBase.DisplayType.ACCOUNT_LINK, AccountBase.TransitionOriginalScreen.OTHER, close_callback);
|
||||
});
|
||||
dialogBase.SetTitleLabel(systemText.Get("Account_0087"));
|
||||
dialogBase.SetButtonLayout(DialogBase.ButtonLayout.BlueBtn_CancelBtn);
|
||||
dialogBase.SetButtonText(systemText.Get("Account_0084"));
|
||||
dialogBase.SetButtonDelegate(method_btn);
|
||||
string text = systemText.Get("Account_0083");
|
||||
dialogBase.SetText(text);
|
||||
dialogBase.SetSize(DialogBase.Size.M);
|
||||
}
|
||||
}
|
||||
@@ -212,11 +212,6 @@ public class SceneTransition
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public static bool HasTransitionData(string s)
|
||||
{
|
||||
return _transitionDictScene.ContainsKey(s);
|
||||
}
|
||||
}
|
||||
|
||||
public enum MyPageSub
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
namespace Wizard;
|
||||
|
||||
public class TransitionDeleteTask : BaseTask
|
||||
{
|
||||
public TransitionDeleteTask()
|
||||
{
|
||||
base.type = ApiType.Type.TransitionDelete;
|
||||
}
|
||||
|
||||
protected override int Parse()
|
||||
{
|
||||
int result = base.Parse();
|
||||
_ = 1;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -1,74 +0,0 @@
|
||||
using System;
|
||||
using Cute;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Wizard;
|
||||
|
||||
public class TransitionDialog : MonoBehaviour
|
||||
{
|
||||
[SerializeField]
|
||||
private UIToggle _toggle;
|
||||
|
||||
[SerializeField]
|
||||
private UIScrollView _scrollView;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _coutionLabel;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _coutionTitleLabel;
|
||||
|
||||
private Action _completePublishTransitionCode;
|
||||
|
||||
private bool _firstToggleCall = true;
|
||||
|
||||
public Action<bool> OnChange;
|
||||
|
||||
public static void Create(Action onExec)
|
||||
{
|
||||
GameObject gameObject = UnityEngine.Object.Instantiate(Resources.Load("UI/layoutParts/TransitionToTwo/TransitionDialog")) as GameObject;
|
||||
DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose();
|
||||
SystemText systemText = Data.SystemText;
|
||||
dialogBase.SetButtonLayout(DialogBase.ButtonLayout.BlueBtn_CancelBtn);
|
||||
dialogBase.SetButtonText(systemText.Get("BeyondHandover_0003"), systemText.Get("Common_0005"));
|
||||
dialogBase.SetTitleLabel(systemText.Get("BeyondHandover_0001"));
|
||||
dialogBase.SetSize(DialogBase.Size.M);
|
||||
dialogBase.SetObj(gameObject);
|
||||
TransitionDialog transitionDialog = gameObject.GetComponent<TransitionDialog>();
|
||||
transitionDialog.Initialize(onExec);
|
||||
dialogBase.SetButtonDelegate(new EventDelegate(delegate
|
||||
{
|
||||
transitionDialog.PublishCode();
|
||||
}));
|
||||
dialogBase.SetButtonDisable(isEnableOK: true);
|
||||
}
|
||||
|
||||
private void Initialize(Action onExec)
|
||||
{
|
||||
_toggle.onChange.Add(new EventDelegate(delegate
|
||||
{
|
||||
OnChangeToggle();
|
||||
}));
|
||||
_completePublishTransitionCode = onExec;
|
||||
_coutionLabel.text = Data.SystemText.Get("BeyondHandover_0012");
|
||||
_coutionTitleLabel.text = Data.SystemText.Get("BeyondHandover_0016");
|
||||
_scrollView.GetComponent<FlexibleGrid>().Reposition();
|
||||
_scrollView.ResetPosition();
|
||||
}
|
||||
|
||||
private void OnChangeToggle()
|
||||
{
|
||||
if (!_firstToggleCall)
|
||||
{
|
||||
|
||||
OnChange.Call(_toggle.value);
|
||||
base.transform.parent.GetComponent<DialogBase>().SetButtonDisable(!_toggle.value);
|
||||
}
|
||||
_firstToggleCall = false;
|
||||
}
|
||||
|
||||
private void PublishCode()
|
||||
{
|
||||
_completePublishTransitionCode.Call();
|
||||
}
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
namespace Wizard;
|
||||
|
||||
public class TransitionInfoTask : BaseTask
|
||||
{
|
||||
public int Status { get; private set; }
|
||||
|
||||
public TransitionInfoTask()
|
||||
{
|
||||
base.type = ApiType.Type.TransitionInfo;
|
||||
}
|
||||
|
||||
protected override int Parse()
|
||||
{
|
||||
int num = base.Parse();
|
||||
if (num != 1)
|
||||
{
|
||||
return num;
|
||||
}
|
||||
Status = base.ResponseData["data"]["status"].ToInt();
|
||||
return num;
|
||||
}
|
||||
}
|
||||
@@ -1,60 +0,0 @@
|
||||
using Cute;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Wizard;
|
||||
|
||||
public class TransitionPublishDialog : MonoBehaviour
|
||||
{
|
||||
[SerializeField]
|
||||
private UILabel _idLabel;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _passwardLabel;
|
||||
|
||||
[SerializeField]
|
||||
private UIButton _idCopyButton;
|
||||
|
||||
[SerializeField]
|
||||
private UIButton _passwardButton;
|
||||
|
||||
public static void Create(string pass)
|
||||
{
|
||||
GameObject gameObject = Object.Instantiate(Resources.Load("UI/layoutParts/TransitionToTwo/TransitionPublishDialog")) as GameObject;
|
||||
DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose();
|
||||
dialogBase.SetButtonLayout(DialogBase.ButtonLayout.OkBtn);
|
||||
dialogBase.SetTitleLabel(Data.SystemText.Get("BeyondHandover_0001"));
|
||||
dialogBase.SetSize(DialogBase.Size.M);
|
||||
dialogBase.SetObj(gameObject);
|
||||
TransitionPublishDialog component = gameObject.GetComponent<TransitionPublishDialog>();
|
||||
component.SetIdText(pass);
|
||||
component.SetCopyButtonEvent(pass);
|
||||
}
|
||||
|
||||
private void SetIdText(string pass)
|
||||
{
|
||||
_idLabel.text = $"{0:#,0}".Replace(",", " ");
|
||||
_passwardLabel.text = pass;
|
||||
}
|
||||
|
||||
private void SetCopyButtonEvent(string pass)
|
||||
{
|
||||
_idCopyButton.onClick.Add(new EventDelegate(delegate
|
||||
{
|
||||
NativePluginWrapper.SetStringToClipboard(0.ToString());
|
||||
DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose();
|
||||
dialogBase.SetPanelDepth(100);
|
||||
dialogBase.SetSize(DialogBase.Size.S);
|
||||
dialogBase.SetText(Data.SystemText.Get("BeyondHandover_0014"));
|
||||
dialogBase.SetButtonLayout(DialogBase.ButtonLayout.OkBtn);
|
||||
}));
|
||||
_passwardButton.onClick.Add(new EventDelegate(delegate
|
||||
{
|
||||
NativePluginWrapper.SetStringToClipboard(pass);
|
||||
DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose();
|
||||
dialogBase.SetPanelDepth(100);
|
||||
dialogBase.SetSize(DialogBase.Size.S);
|
||||
dialogBase.SetText(Data.SystemText.Get("BeyondHandover_0015"));
|
||||
dialogBase.SetButtonLayout(DialogBase.ButtonLayout.OkBtn);
|
||||
}));
|
||||
}
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
namespace Wizard;
|
||||
|
||||
public class TransitionPublishTask : BaseTask
|
||||
{
|
||||
public string Password { get; private set; }
|
||||
|
||||
public TransitionPublishTask()
|
||||
{
|
||||
base.type = ApiType.Type.TransitionPublish;
|
||||
}
|
||||
|
||||
protected override int Parse()
|
||||
{
|
||||
int num = base.Parse();
|
||||
if (num != 1)
|
||||
{
|
||||
return num;
|
||||
}
|
||||
Password = base.ResponseData["data"]["password"].ToString();
|
||||
return num;
|
||||
}
|
||||
}
|
||||
@@ -9,14 +9,10 @@ public class TreasureBoxCp
|
||||
|
||||
private bool _treasureBoxCpNotExist = true;
|
||||
|
||||
public static readonly int[] GRADE_TO_TREASURE_BOX_ID = new int[5] { -1, 0, 2, 4, 5 };
|
||||
|
||||
private double _receiveServerUnixTime;
|
||||
|
||||
private double _receiveSinceTime;
|
||||
|
||||
public bool IsTreasureBoxOpened => CurrentGrade == MaxGrade;
|
||||
|
||||
public bool IsReceivable { get; private set; }
|
||||
|
||||
public double StartUnixTime { get; private set; }
|
||||
|
||||
@@ -1,167 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using Cute;
|
||||
using UnityEngine;
|
||||
using Wizard.RoomMatch;
|
||||
|
||||
namespace Wizard;
|
||||
|
||||
public class TreasureBoxCpDialog : MonoBehaviour
|
||||
{
|
||||
private UIAtlas _arenaAtlas;
|
||||
|
||||
private List<string> _loadFileList = new List<string>();
|
||||
|
||||
[SerializeField]
|
||||
private UISprite _currentBoxSprite;
|
||||
|
||||
[SerializeField]
|
||||
private UISprite _nextBoxSprite;
|
||||
|
||||
[SerializeField]
|
||||
private UISprite _openedBoxSprite;
|
||||
|
||||
[SerializeField]
|
||||
private UISprite[] _gradeStepSprites;
|
||||
|
||||
[SerializeField]
|
||||
private UIGauge _gradeGauge;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _nextGradeLabel;
|
||||
|
||||
[SerializeField]
|
||||
private UILabel _nextGradeNumLabel;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _openedBoxParts;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _notOpenedBoxParts;
|
||||
|
||||
[SerializeField]
|
||||
private UISprite _gaugeBackground;
|
||||
|
||||
[SerializeField]
|
||||
private UIButton _treasureBoxGradeUpMethodButton;
|
||||
|
||||
[SerializeField]
|
||||
private UISprite _arrowSprite;
|
||||
|
||||
private readonly float[][] _memory_value = new float[5][]
|
||||
{
|
||||
new float[0],
|
||||
new float[2] { 0f, 1f },
|
||||
new float[7] { 0f, 0.156f, 0.33f, 0.503f, 0.676f, 0.848f, 1f },
|
||||
new float[9] { 0f, 0.114f, 0.244f, 0.373f, 0.502f, 0.631f, 0.761f, 0.892f, 1f },
|
||||
new float[11]
|
||||
{
|
||||
0f, 0.087f, 0.192f, 0.294f, 0.397f, 0.5f, 0.605f, 0.709f, 0.812f, 0.917f,
|
||||
1f
|
||||
}
|
||||
};
|
||||
|
||||
public static DialogBase CreateDialog()
|
||||
{
|
||||
SystemText systemText = Data.SystemText;
|
||||
DialogBase dialog = UIManager.GetInstance().CreateDialogClose();
|
||||
dialog.SetButtonLayout(DialogBase.ButtonLayout.GrayBtn);
|
||||
dialog.SetSize(DialogBase.Size.M);
|
||||
dialog.SetButtonText(systemText.Get("TreasureBoxCp_0023"));
|
||||
dialog.SetTitleLabel(systemText.Get("TreasureBoxCp_0001"));
|
||||
GameObject gameObject = Object.Instantiate(LoadPrefab("UI/layoutParts/TreasureBoxCpDialog"));
|
||||
TreasureBoxCpDialog treasureBoxCpDialog = gameObject.GetComponent<TreasureBoxCpDialog>();
|
||||
treasureBoxCpDialog._treasureBoxGradeUpMethodButton.onClick.Add(new EventDelegate(delegate
|
||||
{
|
||||
dialog.SetDisp(inDisp: false);
|
||||
|
||||
treasureBoxCpDialog.CreateDetailDialog(dialog);
|
||||
}));
|
||||
treasureBoxCpDialog.SetData();
|
||||
dialog.SetObj(gameObject);
|
||||
return dialog;
|
||||
}
|
||||
|
||||
private void CreateDetailDialog(DialogBase parentDialog)
|
||||
{
|
||||
SystemText systemText = Data.SystemText;
|
||||
DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose();
|
||||
dialogBase.SetButtonLayout(DialogBase.ButtonLayout.OkBtn);
|
||||
dialogBase.SetSize(DialogBase.Size.M);
|
||||
GameObject obj = Object.Instantiate(LoadPrefab("UI/layoutParts/TreasureBoxCpDetail"));
|
||||
dialogBase.SetTitleLabel(systemText.Get("TreasureBoxCp_0007"));
|
||||
dialogBase.SetObj(obj);
|
||||
dialogBase.OnClose = delegate
|
||||
{
|
||||
if (parentDialog != null)
|
||||
{
|
||||
parentDialog.SetDisp(inDisp: true);
|
||||
}
|
||||
};
|
||||
if (RoomBase.GetInstance() != null)
|
||||
{
|
||||
RoomBase.GetInstance().TreasureCpGradeUpConditionDialog = dialogBase;
|
||||
}
|
||||
}
|
||||
|
||||
private static GameObject LoadPrefab(string path)
|
||||
{
|
||||
PrefabMgr prefabMgr = null; // Pre-Phase-5b: no PrefabMgr headless
|
||||
prefabMgr.Load(path);
|
||||
return prefabMgr.Get(path);
|
||||
}
|
||||
|
||||
public void SetData()
|
||||
{
|
||||
_openedBoxParts.SetActive(value: false);
|
||||
_notOpenedBoxParts.SetActive(value: false);
|
||||
TreasureBoxCp data = Data.TreasureBoxCp;
|
||||
_gradeGauge.Value = ((data.NextGrade == 0) ? 1f : _memory_value[data.NextGrade][data.CurrentMemory]);
|
||||
_nextGradeLabel.text = Data.SystemText.Get("TreasureBoxCp_0005");
|
||||
int num = data.MaxMemory - data.CurrentMemory;
|
||||
_nextGradeNumLabel.text = Data.SystemText.Get("TreasureBoxCp_0027", num.ToString());
|
||||
SetGaugeBackground(data.NextGrade, data.MaxGrade);
|
||||
string atlasName = UIManager.GetInstance().GetSceneAssetPath(UIAtlasManager.AssetBundleNames.Arena, null);
|
||||
_loadFileList.Add(atlasName);
|
||||
StartCoroutine(Toolbox.ResourcesManager.LoadAssetAsync(atlasName, delegate
|
||||
{
|
||||
atlasName = UIManager.GetInstance().GetSceneAssetPath(UIAtlasManager.AssetBundleNames.Arena, null, isload: true);
|
||||
_arenaAtlas = Toolbox.ResourcesManager.LoadObject<GameObject>(atlasName).GetComponent<UIAtlas>();
|
||||
_currentBoxSprite.atlas = _arenaAtlas;
|
||||
_nextBoxSprite.atlas = _arenaAtlas;
|
||||
_openedBoxSprite.atlas = _arenaAtlas;
|
||||
_gaugeBackground.atlas = _arenaAtlas;
|
||||
_arrowSprite.atlas = _arenaAtlas;
|
||||
if (data.IsTreasureBoxOpened)
|
||||
{
|
||||
_openedBoxSprite.spriteName = $"box_2pick_0{TreasureBoxCp.GRADE_TO_TREASURE_BOX_ID[data.CurrentGrade]}_open";
|
||||
UIManager.SetObjectToGrey(_openedBoxSprite.gameObject, b: true);
|
||||
_openedBoxParts.SetActive(value: true);
|
||||
}
|
||||
else
|
||||
{
|
||||
_currentBoxSprite.spriteName = $"box_2pick_0{TreasureBoxCp.GRADE_TO_TREASURE_BOX_ID[data.CurrentGrade]}_close";
|
||||
_nextBoxSprite.spriteName = $"box_2pick_0{TreasureBoxCp.GRADE_TO_TREASURE_BOX_ID[data.NextGrade]}_close";
|
||||
_arrowSprite.spriteName = "arrow";
|
||||
_notOpenedBoxParts.SetActive(value: true);
|
||||
}
|
||||
for (int i = 0; i < _gradeStepSprites.Length; i++)
|
||||
{
|
||||
_gradeStepSprites[i].atlas = _arenaAtlas;
|
||||
if (i < data.CurrentGrade)
|
||||
{
|
||||
_gradeStepSprites[i].spriteName = "icon_diamond_mark_on";
|
||||
}
|
||||
else
|
||||
{
|
||||
_gradeStepSprites[i].spriteName = "icon_diamond_mark_off";
|
||||
}
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
private void SetGaugeBackground(int nextGrade, int maxGrade)
|
||||
{
|
||||
int num = ((nextGrade == 0) ? maxGrade : nextGrade);
|
||||
_gaugeBackground.spriteName = $"gauge_bg_scale_{num}";
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,6 @@ public class UIAtlasManager
|
||||
{
|
||||
Battle,
|
||||
BattleLang,
|
||||
Arena,
|
||||
Profile,
|
||||
CardFramePhantom}
|
||||
}
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using LitJson;
|
||||
|
||||
namespace Wizard;
|
||||
|
||||
public class VoteDataTask : BaseTask
|
||||
{
|
||||
public class VoteDataTaskParam : BaseParam
|
||||
{
|
||||
public int vote_id;
|
||||
}
|
||||
|
||||
public VoteDataTask()
|
||||
{
|
||||
base.type = ApiType.Type.VoteData;
|
||||
}
|
||||
|
||||
public void SetParameter(int vote_id)
|
||||
{
|
||||
VoteDataTaskParam voteDataTaskParam = new VoteDataTaskParam();
|
||||
voteDataTaskParam.vote_id = vote_id;
|
||||
base.Params = voteDataTaskParam;
|
||||
}
|
||||
|
||||
protected override int Parse()
|
||||
{
|
||||
int num = base.Parse();
|
||||
if (num != 1)
|
||||
{
|
||||
return num;
|
||||
}
|
||||
Data.VoteInfo = new VoteData();
|
||||
Data.VoteInfo.is_vote = base.ResponseData["data"]["is_vote"].ToBoolean();
|
||||
if (base.ResponseData["data"].Keys.Contains("vote_name"))
|
||||
{
|
||||
Data.VoteInfo.vote_name = base.ResponseData["data"]["vote_name"].ToString();
|
||||
}
|
||||
JsonData jsonData = base.ResponseData["data"]["vote_info"];
|
||||
Data.VoteInfo.title_text = jsonData["title_text"].ToString();
|
||||
Data.VoteInfo.before_content_text = jsonData["before_content_text"].ToString().Replace("/n", "\n");
|
||||
Data.VoteInfo.after_content_text = jsonData["after_content_text"].ToString().Replace("/n", "\n");
|
||||
Data.VoteInfo.tweet_text = jsonData["tweet_text"].ToString();
|
||||
Data.VoteInfo.tweet_tag = jsonData["tweet_tag"].ToString();
|
||||
Data.VoteInfo.tweet_url = jsonData["tweet_url"].ToString();
|
||||
Data.VoteInfo.tweet_image = jsonData["tweet_image"].ToString();
|
||||
JsonData jsonData2 = base.ResponseData["data"]["vote_list"];
|
||||
Data.VoteInfo.vote_target_list = new Dictionary<int, string>();
|
||||
for (int i = 0; i < jsonData2.Count; i++)
|
||||
{
|
||||
Data.VoteInfo.vote_target_list.Add(jsonData2[i]["target_id"].ToInt(), jsonData2[i]["vote_name"].ToString());
|
||||
}
|
||||
return num;
|
||||
}
|
||||
}
|
||||
@@ -58,36 +58,6 @@ public class WebViewHelper
|
||||
_OpenWebView(WebViewType.ANNOUNCE, null, null, 0, 0, announceId, "", null, null, onDialogOpening);
|
||||
}
|
||||
|
||||
public void OpenWebViewDirectly(string openUrl, bool isLimited = false)
|
||||
{
|
||||
string directOpenUrl = CustomPreference.GetApplicationServerURL() + openUrl + GetWebviewBaseQueryParameters();
|
||||
if (isLimited)
|
||||
{
|
||||
_OpenWebView(WebViewType.LIMITED_INFO, null, null, 0, 0, null, directOpenUrl);
|
||||
}
|
||||
else
|
||||
{
|
||||
_OpenWebView(WebViewType.INFO, null, null, 0, 0, null, directOpenUrl);
|
||||
}
|
||||
}
|
||||
|
||||
public void OpenWebviewWithPageId(string pageId, bool isLimited = false)
|
||||
{
|
||||
string text = CustomPreference.GetApplicationServerURL() + "webview2/index#/info_detail" + GetWebviewBaseQueryParameters();
|
||||
if (!string.IsNullOrEmpty(pageId))
|
||||
{
|
||||
text = text + "&id=" + pageId;
|
||||
}
|
||||
if (isLimited)
|
||||
{
|
||||
_OpenWebView(WebViewType.LIMITED_INFO, null, null, 0, 0, null, text);
|
||||
}
|
||||
else
|
||||
{
|
||||
_OpenWebView(WebViewType.INFO, null, null, 0, 0, null, text);
|
||||
}
|
||||
}
|
||||
|
||||
private void _OpenWebView(WebViewType webviewtype, ActionWebviewOpen cbWebviewOpen = null, Action cbWebviewClose = null, int ratePackId = 0, int packCategory = 0, string announceId = null, string directOpenUrl = "", Action onButton1 = null, Action onCancel = null, Action<DialogBase> onDialogOpening = null)
|
||||
{
|
||||
VideoHostingUtil.CheckVideoHostingAndExecAction(delegate
|
||||
|
||||
Reference in New Issue
Block a user