【通行证】购买高级资格

main
zhangaotian 2025-01-14 18:41:13 +08:00
parent b377c32ace
commit 0a11629497
11 changed files with 199 additions and 50 deletions

View File

@ -1751,7 +1751,6 @@ GameObject:
- component: {fileID: 9184416937073047163}
- component: {fileID: 7507133205640448359}
- component: {fileID: 1175266164644359173}
- component: {fileID: 8826445488111375163}
m_Layer: 5
m_Name: Text (TMP)
m_TagString: Untagged
@ -1876,19 +1875,6 @@ MonoBehaviour:
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!114 &8826445488111375163
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3101012754167002511}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4545b363802045e3a540e37e426a5df3, type: 3}
m_Name:
m_EditorClassIdentifier:
text_key: battlepass_buy_advanced
--- !u!1 &3374729367730866501
GameObject:
m_ObjectHideFlags: 0

View File

@ -8,6 +8,9 @@ using NLDPB;
public class BattlePassManager : Singlenton<BattlePassManager>
{
public static readonly int AdvancedID = 1;
public static readonly int PremiumAdvancedID = 2;
public struct LevelReward
{
public int BasicRewardID;
@ -32,6 +35,11 @@ public class BattlePassManager : Singlenton<BattlePassManager>
}
}
/// <summary>
/// 当前赛季通行证ID
/// </summary>
private int curBattlePassID;
/// <summary>
/// 当前赛季通行证数据
/// </summary>
@ -39,27 +47,20 @@ public class BattlePassManager : Singlenton<BattlePassManager>
public DataBattlePass CurBattlePassData => curBattlePassData;
/// <summary>
/// 当前赛季通行证ID
/// </summary>
private int curBattlePassID;
private DataBattlePassRewards curBattlePassRewards;
/// <summary>
/// 当前赛季的等级奖励
/// </summary>
private Dictionary<int, LevelReward> curLevelRewards;
public Dictionary<int, LevelReward> CurLevelRewards => curLevelRewards;
/// <summary>
/// 醒目等级
/// </summary>
private List<int> specialRewardLevels;
public Dictionary<int, LevelReward> CurLevelRewards => curLevelRewards;
public List<int> SpecialRewardLevels => specialRewardLevels;
public void Init()
{
//EventManager.Instance.Register(EventManager.EventName.BattlePassGetAllReward, RefreshGetRewardLevel);
@ -101,31 +102,53 @@ public class BattlePassManager : Singlenton<BattlePassManager>
public void Release()
{
}
/// <summary>
/// 获取当前经验点数
/// </summary>
public int GetPointItemCount()
{
return (int)Actor.Instance.Logic.GetCount((uint)LogicID.BattlePassExp);
}
/// <summary>
/// 获取通行证账号等级
/// </summary>
public int GetBattlePassLevel()
{
return (int)Actor.Instance.Logic.GetCount((uint)LogicID.BattlePassLevel);
}
/// <summary>
/// 获取账号已领奖等级
/// </summary>
public int GetNormalRewardLevel()
{
return (int)Actor.Instance.Logic.GetCount((uint)LogicID.BattlePassRewardLevel);
}
/// <summary>
/// 获取高级账号已领奖等级
/// </summary>
public int GetAdvancedRewardLevel()
{
return (int)Actor.Instance.Logic.GetCount((uint)LogicID.BattlePassAdvancedRewardLevel);
}
/// <summary>
/// 是否开通高级奖励
/// </summary>
public bool IsAdvancedAccount()
{
return Actor.Instance.Logic.GetCount((uint)LogicID.BattlePassIsAdvanced) == 1;
return Actor.Instance.Logic.GetCount((uint)LogicID.BattlePassIsAdvanced) >= 1;
}
/// <summary>
/// 获取账号状态 0-无 1-高级账号 2-尊享版高级账号
/// </summary>
public int GetAdvancedAccount()
{
return (int)Actor.Instance.Logic.GetCount((uint)LogicID.BattlePassIsAdvanced);
}
}

View File

@ -189,6 +189,7 @@ public class UI_BattlePassController : UIWindow
public TMP_Text Text_Level;
public TMP_Text Text_CurrentExp;
public TMP_Text Text_AdvanceAccount;
public Slider Slider_Exp;
@ -288,6 +289,7 @@ public class UI_BattlePassController : UIWindow
BindButton(Toggle_Task, OnClickTaskTab);
EventManager.Instance.Register(EventManager.EventName.UpdateTaskCompleted, RefreshUI);
EventManager.Instance.Register(EventManager.EventName.BattlePassGetAllReward, RefreshUI);
}
//invoke when open window
@ -309,22 +311,29 @@ public class UI_BattlePassController : UIWindow
{
base.OnRelease();
EventManager.Instance.Unregister(EventManager.EventName.UpdateTaskCompleted, RefreshUI);
EventManager.Instance.Unregister(EventManager.EventName.BattlePassGetAllReward, RefreshUI);
}
#region 刷新
private void RefreshUI()
{
// 等级
Text_Level.text = BattlePassManager.Instance.GetBattlePassLevel().ToString();
// 经验
var exp = GLConfig.Inst.data.BattlePassLevelUpRequirement;
var curExp = (float)BattlePassManager.Instance.GetPointItemCount();
var sliceValue = curExp / exp;
Slider_Exp.value = sliceValue;
Text_CurrentExp.text = curExp + "/" + exp;
// 高级账号
var key = BattlePassManager.Instance.IsAdvancedAccount()
? "battlepass_have_advanced"
: "battlepass_buy_advanced";
Text_AdvanceAccount.text = StringManager.Instance.GetTextByKey(key);
if (isShowTask)
RefreshTaskPanel();
else
@ -447,7 +456,8 @@ public class UI_BattlePassController : UIWindow
if (index < taskTabKeys.Count)
{
var title = StringManager.Instance.GetTextByKey(taskTabKeys[index]);;
var title = StringManager.Instance.GetTextByKey(taskTabKeys[index]);
;
taskTab.SetInfo(title, () => OnClickTaskBtn(index));
taskTab.Refresh(curTabBtnID);
}

View File

@ -3,6 +3,7 @@ using PhxhSDK;
using Gameplay;
using Framework;
using UnityEngine;
using Gameplay.Net;
using cfg.ActorCfg;
using cfg.ChargeCfg;
using Cysharp.Threading.Tasks;
@ -37,9 +38,15 @@ public class UI_BattlePassPurchaseController : UIWindow
baseItem = new GenericItem(FindObj("Reward/GenericItem"));
}
public void SetInfo(int itemID)
public void SetInfo(int itemID, int itemCount)
{
baseItem.SetInfo(itemID);
baseItem.SetInfo(itemID, itemCount);
var items = TableManager.Instance.Tables.Item.DataMap;
if (items.TryGetValue(itemID, out var item))
{
itemName.text = StringManager.Instance.GetTextByKey(item.NameLocal);
}
}
}
@ -57,9 +64,9 @@ public class UI_BattlePassPurchaseController : UIWindow
#endregion
private List<int> leftItemID;
private Dictionary<int, int> leftItemID;
private List<int> rightItemID;
private Dictionary<int, int> rightItemID;
private List<DataRewards> rewardsCfgList;
@ -71,15 +78,15 @@ public class UI_BattlePassPurchaseController : UIWindow
{
UI_BattlePassPurchaseBinder.GetComponents(this);
leftItemID = new List<int>();
rightItemID = new List<int>();
leftItemID = new Dictionary<int, int>();
rightItemID = new Dictionary<int, int>();
rewardsCfgList = TableManager.Instance.Tables.Rewards.DataList;
BindButton(Button_Back, OnCloseBtnClick);
BindButton(Button_Home, OnHomeBtnClick);
BindButton(Button_NormalPurchase, () => OnNormalPurchase(true));
BindButton(Button_AdvancedPurchase, () => OnNormalPurchase(false));
BindButton(Button_NormalPurchase, OnNormalPurchase);
BindButton(Button_AdvancedPurchase, OnAdvancedPurchase);
// 通行证描述
for (var i = 1; i <= 3; i++)
@ -131,7 +138,7 @@ public class UI_BattlePassPurchaseController : UIWindow
private void RefreshItem()
{
var rewardsList = BattlePassManager.Instance.CurBattlePassData.AdvancedPassExtraRewards;
if (rewardsList == null || rewardsList.Count != 2)
if (rewardsList == null || rewardsList.Count != 3)
{
DebugUtil.LogError("BattlePass AdvancedPassExtraRewards {0} 配置错误",
BattlePassManager.Instance.CurBattlePassData.ID);
@ -139,18 +146,25 @@ public class UI_BattlePassPurchaseController : UIWindow
}
var leftRewardsID = rewardsList[0];
var rightRewardsID = rewardsList[1];
var rightRewardsID = BattlePassManager.Instance.GetAdvancedAccount() != BattlePassManager.AdvancedID
? rewardsList[1]
: rewardsList[2];
leftItemID.Clear();
rightItemID.Clear();
var items = TableManager.Instance.Tables.Item.DataMap;
foreach (var rewardID in rewardsCfgList)
{
if (!items.TryGetValue(rewardID.ItemID, out var dataItem) || dataItem.ShowInStorage)
continue;
if (rewardID.Id == leftRewardsID)
leftItemID.Add(rewardID.ItemID);
leftItemID[rewardID.ItemID] = rewardID.MaxCount;
if (rewardID.Id == rightRewardsID)
rightItemID.Add(rewardID.ItemID);
rightItemID[rewardID.ItemID] = rewardID.MaxCount;
}
CreateScrollView();
@ -175,7 +189,7 @@ public class UI_BattlePassPurchaseController : UIWindow
foreach (var itemID in leftItemID)
{
var rewardItem = new RewardItem(go);
rewardItem.SetInfo(itemID);
rewardItem.SetInfo(itemID.Key, itemID.Value);
}
}
@ -187,7 +201,7 @@ public class UI_BattlePassPurchaseController : UIWindow
foreach (var itemID in rightItemID)
{
var rewardItem = new RewardItem(go);
rewardItem.SetInfo(itemID);
rewardItem.SetInfo(itemID.Key, itemID.Value);
}
}
@ -205,7 +219,7 @@ public class UI_BattlePassPurchaseController : UIWindow
{
var languageType = StringManager.GetLoginLanguageType();
var priceIDList = BattlePassManager.Instance.CurBattlePassData.AdvancedPassPrice;
if (priceIDList == null || priceIDList.Count != 2)
if (priceIDList == null || priceIDList.Count != 3)
{
DebugUtil.LogError("BattlePass AdvancedPassPrice {0} 配置错误",
BattlePassManager.Instance.CurBattlePassData.ID);
@ -232,18 +246,54 @@ public class UI_BattlePassPurchaseController : UIWindow
#region 点击事件
private void OnNormalPurchase(bool normalPrice)
private void OnNormalPurchase()
{
// 已经为高级账号
if (BattlePassManager.Instance.IsAdvancedAccount())
return;
var data = BattlePassManager.Instance.CurBattlePassData.AdvancedPassPrice;
var currencyData = TableManager.Instance.Tables.CurrencyShopCfg.DataMap;
if (data == null || data.Count != 2)
if (data == null || data.Count != 3)
{
DebugUtil.LogError("BattlePass AdvancedPassPrice {0} 配置错误",
BattlePassManager.Instance.CurBattlePassData.ID);
return;
}
var currencyID = normalPrice ? data[0] : data[1];
var currencyID = data[0];
DebugUtil.Log("内购商品ID:{0}", currencyID);
if (!currencyData.TryGetValue(currencyID, out var dataCurrencyShopCfg))
{
DebugUtil.LogError("CurrencyShopCfg 没有 {0} 配置的内购商品", data[0]);
return;
}
OnPurchase(dataCurrencyShopCfg);
}
private void OnAdvancedPurchase()
{
// 已经购买
if (BattlePassManager.Instance.GetAdvancedAccount() == BattlePassManager.PremiumAdvancedID)
return;
var data = BattlePassManager.Instance.CurBattlePassData.AdvancedPassPrice;
var currencyData = TableManager.Instance.Tables.CurrencyShopCfg.DataMap;
if (data == null || data.Count != 3)
{
DebugUtil.LogError("BattlePass AdvancedPassPrice {0} 配置错误",
BattlePassManager.Instance.CurBattlePassData.ID);
return;
}
var currencyID = BattlePassManager.Instance.GetAdvancedAccount() == BattlePassManager.AdvancedID
? data[1]
: data[2];
DebugUtil.Log("内购商品ID:{0}", currencyID);
if (!currencyData.TryGetValue(currencyID, out var dataCurrencyShopCfg))
{
DebugUtil.LogError("CurrencyShopCfg 没有 {0} 配置的内购商品", data[0]);
@ -255,6 +305,9 @@ public class UI_BattlePassPurchaseController : UIWindow
private async void OnPurchase(DataCurrencyShopCfg cfg)
{
NetHelper.InAppPurchaseTest((uint)cfg.Id);
return;
#if UNITY_IOS
// ios 只走苹果内购
IAPManager.Instance.SetCurrentPayChannel(IAPManager.PayChannel.Apple);

View File

@ -25,6 +25,7 @@ public class UI_BattlePassBinder
window.Slider_Exp = window.GetComponent<Slider>("BattlePass/Main/MainNode/Top/Slider_Exp");
window.Button_PurchaseLevel = window.GetComponent<Button>("BattlePass/Main/MainNode/Top/Button");
window.Button_AdvanceAccount = window.GetComponent<Button>("BattlePass/Main/MainNode/BottomNode/Button_AdvanceAccount");
window.Text_AdvanceAccount = window.GetComponent<TMP_Text>("BattlePass/Main/MainNode/BottomNode/Button_AdvanceAccount/Text (TMP)");
window.Button_Claim = window.GetComponent<Button>("BattlePass/Main/MainNode/BottomNode/Button_Claim");
window.Button_UnLockAdvanced = window.GetComponent<Button>("BattlePass/Main/MainNode/ScrollNode/RewardNode/AdvancedReward/Button_UnLockAdvanced");
window.ScrollView_NormalReward = window.GetComponent<PhxhScrollView>("BattlePass/Main/MainNode/ScrollNode/RewardNode/NormalReward/ScrollView_NormalReward");

View File

@ -27059,6 +27059,19 @@
"OutCalculate": [],
"CalculateType": 0
},
{
"Key": "battlepass_have_advanced",
"Name": {
"key": "battlepass_have_advanced",
"text": "高级资格已激活"
},
"Param0": "",
"Param1": "",
"Param2": "",
"InnerCalculate": false,
"OutCalculate": [],
"CalculateType": 0
},
{
"Key": "battlepass_get_reward",
"Name": {

View File

@ -27059,6 +27059,19 @@
"OutCalculate": [],
"CalculateType": 0
},
{
"Key": "battlepass_have_advanced",
"Name": {
"key": "battlepass_have_advanced",
"text": ""
},
"Param0": "",
"Param1": "",
"Param2": "",
"InnerCalculate": false,
"OutCalculate": [],
"CalculateType": 0
},
{
"Key": "battlepass_get_reward",
"Name": {

View File

@ -1532,6 +1532,27 @@
"MinCount": 1000,
"MaxCount": 1000
},
{
"Id": 930003,
"RewardType": 0,
"ItemID": 2,
"MinCount": 200,
"MaxCount": 200
},
{
"Id": 930003,
"RewardType": 0,
"ItemID": 1110001,
"MinCount": 10,
"MaxCount": 10
},
{
"Id": 930003,
"RewardType": 0,
"ItemID": 1220001,
"MinCount": 1000,
"MaxCount": 1000
},
{
"Id": 931001,
"RewardType": 0,

View File

@ -12,11 +12,13 @@
],
"AdvancedPassPrice": [
7,
8
8,
9
],
"AdvancedPassExtraRewards": [
930001,
930002
930002,
930003
],
"DailyMissionGroup": [
2500001,

View File

@ -110,5 +110,19 @@
"NowPriceDollar": 14,
"NowPriceRMB": 99,
"IconPath": ""
},
{
"Id": 9,
"AppleProductID": "",
"PhxhProductID": "Phxh_PremiumAdvanced_Account_Levelup",
"AppleBuyType": 1,
"Name": "高级通行证尊享版资格升级",
"NameLocal": "CurrencyShop_GoodsName_009",
"ItemID": 0,
"ItemCount": 0,
"MaxCount": 1,
"NowPriceDollar": 4,
"NowPriceRMB": 31,
"IconPath": ""
}
]

View File

@ -27059,6 +27059,19 @@
"OutCalculate": [],
"CalculateType": 0
},
{
"Key": "battlepass_have_advanced",
"Name": {
"key": "battlepass_have_advanced",
"text": ""
},
"Param0": "",
"Param1": "",
"Param2": "",
"InnerCalculate": false,
"OutCalculate": [],
"CalculateType": 0
},
{
"Key": "battlepass_get_reward",
"Name": {