Files
JJBB/Assets/Project/Script/GUI/Welfare/WelfareGetBackAwardCtr.cs
2024-08-23 15:49:34 +08:00

269 lines
9.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using GCGame.Table;
// 福利大厅 - 资源找回
//8128 资源找回 {0}总共可追回资源:
//8129 资源找回 可追回1次
//8130 资源找回 {0}VIP追回
//8131 资源找回 银票追回
//8132 资源找回 一键追回
//8133 资源找回 完美追回
//8134 资源找回 是否使用 {0}追回70%资源
//8135 资源找回 是否使用 {0}追回100%资源
//8136 资源找回 开启 {0}之后可以使用完美追回追回100%的资源!是否前往激活{1}
public class WelfareGetBackAwardCtr : WelfarePageBaseCS {
private static WelfareGetBackAwardCtr instance;
public static WelfareGetBackAwardCtr Instance
{
get { return instance; }
}
public Button normalGetBtn;
public Text normalDesc;
public SimpleItem normalItem;
public Button specialGetBtn;
public Text specialDesc;
public SimpleItem specialItem;
public ItemContainerTipCtr messageBox;
public UIContainerBase container;
//public Text noResTip; // 无资源是中间文字提示
public Text tips;
private List<ResourceRecoveryInfo> data;
private List<int> hasGetIndexs;
private int normalMoneyType = -1;
private int normalTotalMoney = -1;
private int specialMoneyType;
private int specialTotalMoney;
private void Awake()
{
if(instance == null)
{
instance = this;
normalGetBtn.onClick.AddListener(OnNormalGetClick);
specialGetBtn.onClick.AddListener(OnSpecialGetClick);
}
normalDesc.text = StrDictionary.GetClientDictionaryString("#{8132}");
specialDesc.text = StrDictionary.GetClientDictionaryString("#{8133}");
hasGetIndexs = new List<int>();
// 普通追回按钮,没有会变的可能,所以仅进行一次赋值
normalDesc.text = StrDictionary.GetClientDictionaryString("#{8132}");
specialDesc.text = StrDictionary.GetClientDictionaryString("#{8133}");
tips.text = StrDictionary.GetClientDictionaryString("#{60031}");
}
private void OnDestroy()
{
instance = null;
}
public override void OnPacketRec(NodePageInfoRet packet) { /* do nothing*/ }
public void OnPacketRec(RetResourceRecoveryInfo packet)
{
data = packet.info;
hasGetIndexs.Clear();
for(int i = 0; i < data.Count; ++i)
{
if(data[i].RewardState == 2)
{
hasGetIndexs.Add(i);
}
}
container.InitContentItem(data);
UpdateBtnAndMoney();
}
private void UpdateBtnAndMoney()
{
// 所有奖励都拿了
if (hasGetIndexs.Count == data.Count)
{
//noResTip.gameObject.SetActive(true);
//noResTip.text = StrDictionary.GetClientDictionaryString("#{60032}");
normalItem.gameObject.SetActive(false);
specialItem.gameObject.SetActive(false);
}
else
{
normalTotalMoney = 0;
specialTotalMoney = 0;
normalMoneyType = data[0].ConsumeType[0].MoneyType;
specialMoneyType = data[0].ConsumeType[1].MoneyType;
normalItem.gameObject.SetActive(true);
specialItem.gameObject.SetActive(true);
//noResTip.gameObject.SetActive(false);
for (int i = 0; i < data.Count; ++i)
{
if (!hasGetIndexs.Contains(i))
{
normalTotalMoney += data[i].ConsumeType[0].MoneyNum;
specialTotalMoney += data[i].ConsumeType[1].MoneyNum;
}
}
normalItem.ShowMoney(normalMoneyType, normalTotalMoney);
specialItem.ShowMoney(specialMoneyType, specialTotalMoney);
}
}
private void OnNormalGetClick()
{
// 没有可领项
if (hasGetIndexs.Count == data.Count)
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{60033}"));
return;
}
long curMoney = GameManager.gameManager.PlayerDataPool.Money.GetMoneyByType(MONEYTYPE.MONEYTYPE_COIN_BIND);
long replaceMoney = GameManager.gameManager.PlayerDataPool.Money.GetMoneyByType(MONEYTYPE.MONEYTYPE_COIN);
if (curMoney < normalTotalMoney)
{
MessageBoxLogic.OpenOKCancelBox(StrDictionary.GetClientDictionaryString("#{60034}", normalTotalMoney - curMoney), null,
() =>
{
if (JudgeMoneyLogic.IsMoneyEnough((MONEYTYPE)normalMoneyType, normalTotalMoney))
{
string title = StrDictionary.GetClientDictionaryString("#{8132}");
string moneyType = GCGame.Utils.GetMoneyName(normalMoneyType);
string desc = StrDictionary.GetClientDictionaryString("#{8134}", normalTotalMoney + moneyType);
messageBox.ShowTip(title, desc, GetTotalItem(), NormalGet, null);
}
});
}
else
{
string title = StrDictionary.GetClientDictionaryString("#{8132}");
string moneyType = GCGame.Utils.GetMoneyName(normalMoneyType);
string desc = StrDictionary.GetClientDictionaryString("#{8134}", normalTotalMoney + moneyType);
messageBox.ShowTip(title, desc, GetTotalItem(), NormalGet, null);
}
}
private void OnSpecialGetClick()
{
// 没有可领项
if (hasGetIndexs.Count == data.Count)
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{60033}"));
return;
}
//GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr
//if()
//Tab_PrivilegeVip tab = TableManager.GetPrivilegeVipByID(data[0].PrivilegeVipType, 0);
//if (tab != null && !GameManager.gameManager.PlayerDataPool.PrivilegeTypeStateDic[tab.VipType])
//{
// string tip = StrDictionary.GetClientDictionaryString("#{8136}", tab.Name, tab.Name);
// MessageBoxLogic.OpenOKCancelBox(tip, null,
// () =>
// {
// YuanBaoShopLogic.OpenVipPage();
// });
//}
if(!JudgeMoneyLogic.IsMoneyEnough((MONEYTYPE)specialMoneyType, specialTotalMoney))
{
return;
}
else
{
string title = StrDictionary.GetClientDictionaryString("#{8133}");
string moneyType = GCGame.Utils.GetMoneyName(specialMoneyType);
string desc = StrDictionary.GetClientDictionaryString("#{8135}", specialTotalMoney + moneyType);
messageBox.ShowTip(title, desc, GetTotalItem(), SpecialGet, null);
}
}
private void NormalGet()
{
ReqResourceRecoveryReward req = new ReqResourceRecoveryReward();
req.ResourceType = data[0].ResourceType;
req.SubType = data[0].SubType;
req.RecoveryType = 1;
req.IsTotal = 1;
req.SendMsg();
}
private void SpecialGet()
{
ReqResourceRecoveryReward req = new ReqResourceRecoveryReward();
req.ResourceType = data[0].ResourceType;
req.SubType = data[0].SubType;
req.RecoveryType = 2;
req.IsTotal = 1;
req.SendMsg();
}
private IEnumerable<WelfareRew> GetTotalItem()
{
if (data == null)
{
return null;
}
Dictionary<int, WelfareRew> itemDic = new Dictionary<int, WelfareRew>();
for (int i = 0; i < data.Count; ++i)
{
if (!hasGetIndexs.Contains(i))
{
for (int j = 0; j < data[i].RewardItem.Count; ++j)
{
if (itemDic.ContainsKey(data[i].RewardItem[j]._ItemId))
{
itemDic[data[i].RewardItem[j]._ItemId]._ItemNum += data[i].RewardItem[j]._ItemNum;
}
else
{
WelfareRew newItem = new WelfareRew();
newItem._ItemId = data[i].RewardItem[j]._ItemId;
newItem._ItemNum = data[i].RewardItem[j]._ItemNum;
itemDic[data[i].RewardItem[j]._ItemId] = newItem;
}
}
}
}
return itemDic.Values;
}
// 服务器返回已经寻回资源的活动
public void OnResultRec(RetResourceRecoveryReward packet)
{
container.ForeachActiveItem<WelfareResGetBackTag>(
(WelfareResGetBackTag item) =>
{
if (item.IsMatch(packet.ResourceType, packet.SubType))
{
item.SetState(true);
}
});
for (int i = 0; i < data.Count; ++i)
{
if (data[i].ResourceType == packet.ResourceType && data[i].SubType == packet.SubType && !hasGetIndexs.Contains(i))
{
hasGetIndexs.Add(i);
}
}
UpdateBtnAndMoney();
}
}