148 lines
3.6 KiB
C#
148 lines
3.6 KiB
C#
using cfg.ChargeCfg;
|
|
using Framework;
|
|
using Gameplay;
|
|
using Gameplay.Net;
|
|
using NLDPB;
|
|
using PhxhSDK;
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using static Gameplay.CommonUtils;
|
|
|
|
public class MonthlyPassManager : Singlenton<MonthlyPassManager>,IInitable
|
|
{
|
|
class MonthlyPassService
|
|
{
|
|
public bool IsPassUnlock { get; private set; }
|
|
|
|
public int RemainingDays { get; private set; }
|
|
|
|
public bool TodayHasClaimed { get; private set; }
|
|
|
|
public MonthlyPassService()
|
|
{
|
|
IsPassUnlock = false;
|
|
RemainingDays = 0;
|
|
TodayHasClaimed = false;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 数据同步
|
|
/// </summary>
|
|
public void Refresh()
|
|
{
|
|
//IsPassUnlock = Actor.Instance.Logic.GetCount((uint)LogicID.MonthlyPassUnlock) > 0;
|
|
//RemainingDays = (int)Actor.Instance.Logic.GetCount();
|
|
//TodayHasClaimed=
|
|
}
|
|
}
|
|
|
|
private MonthlyPassService PassService;
|
|
|
|
public void Init()
|
|
{
|
|
var time = CommonUtils.GetCurTime(E_TimeType.Server);
|
|
var year = time.Year;
|
|
var month = time.Month;
|
|
string date = year + "-" + month;
|
|
Debug.Log("MonthlyPass init, Today: " + date);
|
|
|
|
PassService = new MonthlyPassService();
|
|
DebugUtil.Log("MonthlyPass status: " + PassService.RemainingDays + " days left, today has claimed: " + PassService.TodayHasClaimed);
|
|
}
|
|
|
|
public void Release()
|
|
{
|
|
//throw new System.NotImplementedException();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 可领取状态
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public bool TodayCanClaim()
|
|
{
|
|
return !PassService.TodayHasClaimed && PassService.IsPassUnlock && PassService.RemainingDays > 0;
|
|
}
|
|
|
|
#region 交互
|
|
/// <summary>
|
|
/// 购买月卡请求
|
|
/// </summary>
|
|
public void Purchase()
|
|
{
|
|
var currencyData = TableManager.Instance.Tables.CurrencyShopCfg.DataMap;
|
|
|
|
var currencyID = 0;
|
|
|
|
if (!currencyData.TryGetValue(currencyID, out var dataCurrencyShopCfg))
|
|
{
|
|
DebugUtil.LogError("CurrencyShopCfg 没有 {0} 配置的内购商品", currencyID);
|
|
return;
|
|
}
|
|
|
|
OnPurchase(dataCurrencyShopCfg);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 支付成功回调
|
|
/// </summary>
|
|
public void UnlockPass()
|
|
{
|
|
PassService.Refresh();
|
|
|
|
Claim();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 领取月卡奖励服务器请求
|
|
/// </summary>
|
|
public void Claim()
|
|
{
|
|
if (TodayCanClaim())
|
|
{
|
|
DebugUtil.Log("Claimed");
|
|
//send message to server
|
|
}
|
|
else
|
|
{
|
|
DebugUtil.Log("Cannot claim today");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 每日奖励领取弹窗
|
|
/// </summary>
|
|
public void GetPassReward()
|
|
{
|
|
//TODO: Add rewards, show rewards popup
|
|
|
|
//UI_GetItemWindowController.Open()
|
|
//PassService.TodayHasClaimed = true;
|
|
}
|
|
#endregion
|
|
|
|
|
|
private async void OnPurchase(DataCurrencyShopCfg cfg)
|
|
{
|
|
try
|
|
{
|
|
#if UNITY_IOS
|
|
// ios 只走苹果内购
|
|
IAPManager.Instance.SetCurrentPayChannel(IAPManager.PayChannel.Apple);
|
|
IAPManager.Instance.CheckAndBuyGoods(cfg.Id);
|
|
#elif SDK_BILIBILI
|
|
IAPManager.Instance.SetCurrentPayChannel(IAPManager.PayChannel.Bilibili);
|
|
IAPManager.Instance.IAPBuyGoods(cfg.Id);
|
|
#else
|
|
await UI_PayWindowController.Open(cfg);
|
|
#endif
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
DebugUtil.LogError("MonthlyPass OnPurchase Error: {0}", e);
|
|
}
|
|
}
|
|
}
|