Files
RedHotRoast-ios/Assets/Scripts/ModuleUI/VipClubView/VipClubViewUI.cs
T

393 lines
14 KiB
C#

using System.Collections.Generic;
using FGUI.ZM_Common_01;
using UnityEngine;
using FairyGUI;
using FGUI.LG_Vip;
using SGModule.Common.Helper;
using SGModule.NetKit;
using SGModule.MarkdownKit;
using Newtonsoft.Json;
// using SGModule.ApplePay;
using SGModule.Net;
using System.Linq;
using SGModule.Common.Extensions;
public enum VipDay
{
Week = 7,
Month = 30,
Year = 365
}
namespace RedHotRoast
{
public class VipClubViewUI : BaseUI
{
private readonly List<string> _vipEquity1 = new();
private readonly List<string> _vipEquity2 = new();
private List<SubscriptionBenefits> _benefitsList = new List<SubscriptionBenefits>();
private VipClubViewUICtrl ctrl;
private VipClubViewModel model;
private FGUI.LG_Vip.com_vip ui;
public VipClubViewUI(VipClubViewUICtrl ctrl) : base(ctrl)
{
uiName = UIConst.VipClubViewUI;
this.ctrl = ctrl;
}
protected override void SetUIInfo(UIInfo uiInfo)
{
uiInfo.packageName = "LG_Vip";
uiInfo.assetName = "com_vip";
uiInfo.layerType = UILayerType.Popup;
uiInfo.isNeedOpenAnim = false;
uiInfo.isNeedCloseAnim = false;
uiInfo.isNeedUIMask = true;
}
#region
protected override void OnInit()
{
//model = ModuleManager.Instance.GetModel(ModelConst.VipClubViewModel) as VipClubViewModel;
}
protected override void OnClose()
{
if (_loader != null && !_loader.isDisposed && _loader.texture != null)
{
_loader.texture = null;
}
_loader = null;
}
protected override void OnBind()
{
ui = baseUI as FGUI.LG_Vip.com_vip;
}
private List<VipClub> vip_list = new List<VipClub>();
//这个要做下标,或者控制器的索引,所以从0开始(Vip是1,2,3)
private int _level = 2;
private GLoader _loader = new GLoader();
protected override void OnOpenBefore(object args)
{
_loader = ui.bg_loader;
SetBenefits();
if (Screen.safeArea.y != 0)
{
ui.group_.y += 68;
}
if (GameHelper.IsGiftSwitch())
{
var fileName = GameHelper.GetBackgroundName(4);
TextureHelper.SetImgLoader(ui.bg_loader, fileName, null, "Background/", FolderNames.BackgroundName);
}
TrackKit.SendEvent(ADEventTrack.Subscription, ADEventTrack.Property.vip_show_page);
// 检查VIP是否过期
GameHelper.CheckVipExpiration();
_level = GameHelper.GetVipLevel() > 0 ? GameHelper.GetVipLevel() - 1 : 2;
if (args != null) _level = (int)args;
vip_list = ConfigSystem.GetConfig<VipClub>();
InitView();
// ui.text_terms.text=
// Debug.Log(MarkdownDataMgr.TryGetValue("user", out MarkdownData data));
// Debug.Log(JsonConvert.SerializeObject(data));\
ui.btn_terns.SetClick(() =>
{
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.PrivacyUI_Open, 1);
});
ui.btn_pri.SetClick(() =>
{
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.PrivacyUI_Open, 0);
});
if (GameHelper.IsGiftSwitch())
{
int random_ = Random.Range(0, 100);
bool need_open = false;
if (random_ < GameHelper.GetCommonModel().VIPGuideRate)
{
if (GameHelper.GetVipLevel() > 0 && GameHelper.GetLevel() >= GameHelper.GetCommonModel().VIPGuide)
{
// List<int> unlocklist = new List<int>();
if ((GameHelper.GetCommonModel().Live == 1) &&
(GameHelper.GetLevel() >= GameHelper.GetCommonModel().LivePreview) &&
(GameHelper.GetLevel() < GameHelper.GetCommonModel().UnlockLive[1]))
{
// if (DataMgr.IsUnlockLive.Value < 0) //未解锁。
// {
// unlocklist.Add(0);
need_open = true;
// }
}
if ((GameHelper.GetCommonModel().Secret == 1) &&
(GameHelper.GetLevel() >= GameHelper.GetCommonModel().SecretPreview) &&
(GameHelper.GetLevel() < GameHelper.GetCommonModel().UnlockSecret[1]))
{
// if (DataMgr.IsUnlockSecret.Value < 0) //未解锁。
// {
// unlocklist.Add(1);
need_open = true;
// }
}
// if ((GameHelper.GetCommonModel().Assitant == 1) &&
// (GameHelper.GetLevel() >= GameHelper.GetCommonModel().AssitantPreview))
// {
// // if (DataMgr.IsUnlockSecret.Value < 0) //未解锁。
// // {
// // unlocklist.Add(1);
// need_open = true;
// // }
// }
}
if (need_open) uiCtrlDispatcher.Dispatch(UICtrlMsg.SubUnlockUI_Open);
else if (GameHelper.GetVipLevel() < 0 && GameHelper.GetLevel() >= GameHelper.GetCommonModel().VIPGuide)
{
uiCtrlDispatcher.Dispatch(UICtrlMsg.SubUnlockUI_Open);
}
}
}
}
protected override void OnOpen(object args)
{
}
protected override void OnHide()
{
}
protected override void OnDisplay(object args)
{
}
#endregion
#region
protected override void AddListener()
{
GameDispatcher.Instance.AddListener(GameMsg.apple_pay_success, pay_success);
GameDispatcher.Instance.AddListener(GameMsg.BuyVip, InitView);
}
protected override void RemoveListener()
{
GameDispatcher.Instance.RemoveListener(GameMsg.apple_pay_success, pay_success);
GameDispatcher.Instance.RemoveListener(GameMsg.BuyVip, InitView);
}
#endregion
void pay_success(object str)
{
string type = (string)str;
string purch_number = "";
if (type.StartsWith("vip_club"))
{
InitView();
}
}
//初始化页面逻辑
private void InitView(object a = null)
{
resetVipLevel();
ui.btn_week.text_price.text = GameHelper.getPrice((decimal)vip_list[0].DiscountPrice);
ui.btn_month.text_price.text = GameHelper.getPrice((decimal)vip_list[1].DiscountPrice);
ui.btn_year.text_price.text = GameHelper.getPrice((decimal)vip_list[2].DiscountPrice);
ui.btn_week.text_price_old.text = GameHelper.getPrice((decimal)vip_list[0].Price);
ui.btn_month.text_price_old.text = GameHelper.getPrice((decimal)vip_list[1].Price);
ui.btn_year.text_price_old.text = GameHelper.getPrice((decimal)vip_list[2].Price);
ui.btn_close.SetClick(CtrlCloseUI);
ui.btn_restore.visible = !GameHelper.IsGiftSwitch();
ui.btn_restore.SetClick(() =>
{
// ApplePayManager.Instance.AppleRestore((success, message) =>
// {
// Debug.Log($"[barry] restore success message: {message}---- {JsonConvert.SerializeObject(message)}");
// if (success)
// {
// Debug.Log("[barry] restore success: " + success);
// GameHelper.ShowTips("Restore_pur", true);
// SaveData.GetSaveObject().have_slot = success;
// DataMgr.VipLevel.Value = 3;
// DataMgr.VipExpirationTime.Value = ServerClock.GetCurrentServerTime() + 7 * 24 * 60 * 60;
//
// InitView();
// }
// else
// {
// GameHelper.ShowTips("recoverable_tips", true);
// }
// });
});
SetSubBtnState(_level, (int)VipDay.Year);
ui.btn_week.SetClick(() => { SetSubBtnState(0, (int)VipDay.Week); });
ui.btn_month.SetClick(() => { SetSubBtnState(1, (int)VipDay.Month); });
ui.btn_year.SetClick(() => { SetSubBtnState(2, (int)VipDay.Year); });
ui.btn_sub.SetClick(() =>
{
if (ui.btn_sub.is_buy.selectedIndex == 1) return;
string _type = "vip_club" + _level;
ApplePayClass maxPayData = new ApplePayClass
{
amount = (int)System.Math.Round(vip_list[_level].DiscountPrice * 100),
sku = PurchasingManager.GetPaySku(GetTypeByIndex(_level)),
currency = "USD",
shopName = _type
};
MaxPayManager.Instance.Buy(maxPayData);
});
}
private void resetVipLevel(object obj = null)
{
var lv = GameHelper.GetVipLevel() > 0 ? GameHelper.GetVipLevel() : 0;
ui.vip_lv.selectedIndex = lv;
ui.vip_icon_loader.visible = lv > 0;
ui.vip_icon_loader.url = $"ui://LG_Common/vip_{lv}";
}
private PayType GetTypeByIndex(int index)
{
return index switch
{
0 => PayType.weekly_subscription,
1 => PayType.monthly_subscription,
2 => PayType.yearly_subscription,
_ => PayType.weekly_subscription
};
}
private void SetSubBtnState(int index, int day)
{
Debug.Log($"lvele============{index}");
_level = index;
ui.btn_sub.title = Language.GetContentParams("vip_buy", new[] {GameHelper.getPrice((decimal)vip_list[index].DiscountPrice), day.ToString()});
ui.btn_week.img_select.visible = index == 0;
ui.btn_month.img_select.visible = index == 1;
ui.btn_year.img_select.visible = index == 2;
ui.list.itemRenderer = ItemRenderer;
ui.list.numItems = GameHelper.IsGiftSwitch() ? _vipEquity2.Count : _vipEquity1.Count;
//vip等级(1:7天 2:30天 3:365天)
var selectIndex = 0;
if (_level <= GameHelper.GetVipLevel() - 1) //比如:如果订阅了30天,则30天和7天的订阅按钮隐藏,显示已订阅
{
selectIndex = 1;
}
ui.btn_sub.is_buy.selectedIndex = selectIndex;
}
private void ItemRenderer(int index, GObject obj)
{
var item = (item_viplist)obj;
// if (index == Subscription.UnlockAssitant.As<int>() - 1)
// {
// item.visible = false;
// return;
// }
if (GameHelper.IsGiftSwitch())
{
var state = 1;
var equityText = GameHelper.getLanguageByKey(_vipEquity2[index]);
if (vip_list[_level].SubscriptionBenefits2.Contains(index + 1))
{
state = 0;
}
item.title.text = equityText;
item.have.selectedIndex = state;
item.icon_loader.url = $"ui://LG_Vip/icon_{index + 1}";
}
else
{
// if (vip_list[_level].SubscriptionBenefits1 != null &&
// index < vip_list[_level].SubscriptionBenefits1.Length)
// {
// var benefits = vip_list[_level].SubscriptionBenefits1[index] - 1;
// 可以在这里使用 benefits 变量进行后续操作
var state = 1;
if (vip_list[_level].SubscriptionBenefits1.Contains(_vipEquity1_id_list[index]))
{
state = 0;
}
if (vip_list[_level].SubscriptionBenefits1 != null &&
index < vip_list[_level].SubscriptionBenefits1.Length)
{
var benefits = vip_list[_level].SubscriptionBenefits1[index] - 1;
item.title.text = GameHelper.getLanguageByKey(_benefitsList[benefits].key);
}
item.have.selectedIndex = state;
if (index == 0) item.icon_loader.url = $"ui://LG_Vip/icon_3";
if (index == 1) item.icon_loader.url = $"ui://LG_Vip/icon_5";
if (index == 2) item.icon_loader.url = $"ui://LG_Vip/icon_6";
if (index == 3) item.icon_loader.url = $"ui://LG_Vip/icon_6";
// item.icon_loader.visible = false;
// }
}
}
private void SetBenefits()
{
_benefitsList = ConfigSystem.GetConfig<SubscriptionBenefits>();
Debug.Log(JsonConvert.SerializeObject(_benefitsList));
const int vipTypeStandard = 1;
if (_benefitsList == null) return;
foreach (var vip in _benefitsList.Where(vip => vip != null))
{
if (vip.Type == vipTypeStandard)
{
_vipEquity2.Add(vip.key);
}
else
{
_vipEquity1.Add(vip.key);
Debug.Log(JsonConvert.SerializeObject(vip));
_vipEquity1_id_list.Add(vip.id);
}
}
Debug.Log(JsonConvert.SerializeObject(_vipEquity1_id_list));
}
private List<int> _vipEquity1_id_list = new List<int>();
//Vip权益内容列表
}
}