Files
JJBB/Assets/Project/Script/LuaScripts/UI/FreeBuyCS/FreeBuyItem.cs

198 lines
5.7 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using GCGame.Table;
// 0元购活动item
public class FreeBuyItem : UIItemBase {
public Image bg;
public Sprite[] bgState; // 2个 0已购买 1未购买
public Text itemName;
public Text returnDay;
public UIImgText returnMoney;
public Text btnReturnMoney;
public Image moneyType;
public Image btnMoneyType;
public UICameraTexture model;
public Image awardStateTips;
public Sprite[] tipStates; // 2个0已购买1已领取
public Button buyBtn; // 购买按钮
public Button getAwardBtn; // 获得奖品按钮
public GameObject cantBuyBtn; // 已领取/不能领取
public Text cantBugBtnDes; // 不能购买时的按钮显示文字,若倒计时显示倒计时,如果没有则显示灰色购买
public GameObject combatValueGO; // 战斗力显示控制
public UIImgText combatValue; // 战斗力
private int actID;
private int tagID;
private void Awake()
{
if(buyBtn != null && getAwardBtn != null)
{
buyBtn.onClick.AddListener(OnBtnClick);
getAwardBtn.onClick.AddListener(OnBtnClick);
}
}
public override void Show(Hashtable hash)
{
MarketingActAwardTag info = hash["InitObj"] as MarketingActAwardTag;
if(info != null)
{
actID = info.actID;
tagID = info.tagID;
ShowInfo(info);
}
}
private void ShowInfo(MarketingActAwardTag info)
{
if(info.awardItems.Count > 0)
{
Tab_CommonItem tab = TableManager.GetCommonItemByID(info.awardItems[0].awardSubType, 0);
if(tab != null)
{
itemName.text = tab.Name;
itemName.gameObject.SetActive(true);
}
else
{
itemName.gameObject.SetActive(false);
}
}
else
{
itemName.gameObject.SetActive(false);
}
SetMoneyType(info.iconPath[0]);
ShowDesc(info.descs);
ShowModel(info.modleID);
SetBtnState(info.state);
SetCombatValue(info.otherDescs);
}
private void SetCombatValue(List<string> otherDescs)
{
if(otherDescs.Count > 0 && !string.IsNullOrEmpty(otherDescs[0]))
{
combatValueGO.SetActive(true);
combatValue.text = otherDescs[0];
}
else
{
combatValueGO.SetActive(false);
}
}
// 设置购买 / 奖励金币类型
private void SetMoneyType(string moneyPath)
{
if(!string.IsNullOrEmpty(moneyPath))
{
LoadAssetBundle.Instance.SetImageSprite(moneyType, moneyPath);
LoadAssetBundle.Instance.SetImageSprite(btnMoneyType, moneyPath);
moneyType.gameObject.SetActive(true);
btnMoneyType.gameObject.SetActive(true);
}
else
{
moneyType.gameObject.SetActive(false);
btnMoneyType.gameObject.SetActive(false);
}
}
// 该活动需要显示的信息必须超多4条即使为空
private void ShowDesc(List<string> descs)
{
cantBugBtnDes.text = StrDictionary.GetClientDictionaryString("#{6746}");
if (descs != null && descs.Count >= 3)
{
// 0 - 返还数目
if(!string.IsNullOrEmpty(descs[0]))
{
returnMoney.text = StrDictionary.GetServerDictionaryFormatString(descs[0]);
btnReturnMoney.text = returnMoney.text;
}
// 1 - 返还天数
if (!string.IsNullOrEmpty(descs[1]))
{
returnDay.text = StrDictionary.GetServerDictionaryFormatString(descs[1]);
}
// 2 - 剩余返还天数
if (!string.IsNullOrEmpty(descs[2]))
{
cantBugBtnDes.text = StrDictionary.GetServerDictionaryFormatString(descs[2]);
}
}
}
private void ShowModel(int modelID)
{
if(modelID != 0)
{
Tab_CharModel tab = TableManager.GetCharModelByID(modelID, 0);
if(tab != null)
{
model.gameObject.SetActive(true);
model.InitModelPath(tab.ResPath, tab);
}
else
{
model.gameObject.SetActive(false);
}
}
else
{
itemName.gameObject.SetActive(false);
}
}
// 类型: 0.不可领取 1.可购买 2.已购买 3.可领取 4.已领取
private void SetBtnState(int state)
{
buyBtn.gameObject.SetActive(state == 1);
cantBuyBtn.gameObject.SetActive(state == 0 || state == 2 || state == 4);
getAwardBtn.gameObject.SetActive(state == 3);
if(state == 0 || state == 1)
{
bg.overrideSprite = bgState[1];
}
else
{
bg.overrideSprite = bgState[0];
}
if(state == 2)
{
awardStateTips.overrideSprite = tipStates[0];
awardStateTips.gameObject.SetActive(true);
}
else if(state == 4)
{
awardStateTips.overrideSprite = tipStates[1];
awardStateTips.gameObject.SetActive(true);
}
else
{
awardStateTips.gameObject.SetActive(false);
}
}
// 购买和领取走相同的请求协议
private void OnBtnClick()
{
MarketingActAwardPageGetAward req = new MarketingActAwardPageGetAward();
req.actID = actID;
req.tagID = tagID;
req.SendMsg();
}
}