Files
JJBB/Assets/Project/Script/GUI/Shop/RechargeItem.cs

151 lines
4.6 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00
using System.Collections;
using GCGame.Table;
using Module.Log;
using UnityEngine;
using UnityEngine.UI;
// 用于显示充值项
// 主要区分月卡和其他普通充值项
public class RechargeItem : UIItemSelect
{
public GameObject Recommend; // 推荐标志 通用
public GameObject festivalInfo; // 节日用
public Text festivalPrice; // 价格 普通
public Text festivalAward; // 首次充值奖励
public Text festivalYuanBaoNum; // 兑换灵玉数目
public GameObject normalInfo; // 普通的描述
public Text Price; // 价格 普通
public GameObject awardControl; // 控制award的整体显示
public GameObject firstAwardCtr; // 首次奖励控制
public GameObject secondAwardCtr; // 二次奖励控制
public Text firstAward; // 首次充值奖励
public Text secondAward; // 二次充值奖励
public Text YuanBaoNum; // 兑换灵玉数目
public Image Icon; // 商品图标
public GameObject monthCardInfo; // 月卡的描述
public Text yuanBaoNum_M; // 兑换灵玉数
public Text eachDayAward_M; // 月卡每日奖励元宝数
public Text continuedDay; // 持续时间
public Text monthPrice; // 价格 月卡
private bool hasRecPacket;
private int state = 1; // 状态仅针对非月卡的购买项。0-首次1-二次3-节日
private Tab_Recharge tab; //
public int TabID
{
get
{
if (tab == null)
return -1;
return tab.Id;
}
}
public override void Show(Hashtable hash)
{
var chargeId = (int) hash["InitObj"];
tab = TableManager.GetRechargeByID(chargeId);
if (tab == null)
return;
base.Show(hash);
ShowInfo();
}
private void ShowInfo()
{
//Type: 0-正常 1-月卡
if (tab.Type == 1)
{
ShowMoneyCard();
}
else
{
// 是否有节日活动
if (state == 0)
ShowFestivalPrice();
else
ShowNormal();
}
}
private void ShowFestivalPrice()
{
normalInfo.SetActive(false);
festivalInfo.SetActive(true);
monthCardInfo.SetActive(false);
festivalPrice.text = tab.RmbNum + StrDictionary.GetClientDictionaryString("#{4467}");
festivalAward.text = tab.FestivalAward.ToString();
festivalYuanBaoNum.text = tab.MoneyNum.ToString();
}
private void ShowNormal()
{
normalInfo.SetActive(true);
festivalInfo.SetActive(false);
monthCardInfo.SetActive(false);
LoadAssetBundle.Instance.SetImageSprite(Icon, tab.ICON);
Recommend.SetActive(tab.Recommend == 1);
Price.text = tab.RmbNum + StrDictionary.GetClientDictionaryString("#{4467}");
// 当首冲奖励为 -1 时 尝试显示二次奖励,若也为 -1则奖励部分全部不显示
if (state == 1)
{
if (tab.FirstAward > 0)
{
awardControl.SetActive(true);
firstAwardCtr.gameObject.SetActive(hasRecPacket ? true : false); //初始化隐藏,收到协议的时候用协议数据刷新
secondAwardCtr.gameObject.SetActive(false);
firstAward.text = tab.FirstAward.ToString();
}
else
{
awardControl.SetActive(false);
LogModule.ErrorLog("Try to show firstPrize, but not match config !!!");
}
}
else if (state == 2)
{
if (tab.OtherAward > 0)
{
awardControl.SetActive(true);
firstAwardCtr.gameObject.SetActive(false);
secondAwardCtr.gameObject.SetActive(true);
secondAward.text = tab.OtherAward.ToString();
}
else
{
awardControl.SetActive(false);
//LogModule.ErrorLog("Try to show otherPrize, but not match config !!!");
}
}
YuanBaoNum.text = tab.MoneyNum.ToString();
}
private void ShowMoneyCard()
{
normalInfo.SetActive(false);
festivalInfo.SetActive(false);
monthCardInfo.SetActive(true);
monthPrice.text = tab.RmbNum + StrDictionary.GetClientDictionaryString("#{4467}");
yuanBaoNum_M.text = tab.MoneyNum.ToString();
eachDayAward_M.text = tab.DailyPrize.ToString();
continuedDay.text = StrDictionary.GetClientDictionaryString("#{86710}", tab.DaysCount);
}
public void Refresh(int state)
{
hasRecPacket = true;
this.state = state;
ShowInfo();
}
}