269 lines
9.0 KiB
C#
269 lines
9.0 KiB
C#
|
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();
|
|||
|
}
|
|||
|
}
|