Files
JJBB/Assets/Project/Script/LuaScripts/UI/FreeBuyCS/FreeBuyItem.cs
2024-08-23 15:49:34 +08:00

198 lines
5.7 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;
// 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();
}
}