You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

166 lines
5.4 KiB

using IVDataFormat;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using DG.Tweening;
using UnityEngine;
using UnityEngine.UI;
public class EScrTitle : EScrCell
{
[SerializeField] Color colShadow;
private RectTransform[] rtrfItems;
private TextMeshProUGUI[] txtTitleName;
private GraphicsColorSetter[] txtTitleNameColorSetter;
private Button[] btnSelect;
private RectTransform imgSelect;
private RectTransform[] imgBadges;
private Image[] imgIsEquip;
private Image[] imgShadow;
private int[] haveIds;
private nAchivement[] achives = new nAchivement[2];
public override void InitCell()
{
Transform trfself = transform;
const int len = 2;
rtrfItems = new RectTransform[len];
txtTitleName = new TextMeshProUGUI[len];
txtTitleNameColorSetter = new GraphicsColorSetter[len];
btnSelect = new Button[len];
imgBadges = new RectTransform[len];
imgSelect = new RectTransform();
haveIds = new int[len];
imgIsEquip = new Image[len];
imgShadow = new Image[len];
btnSelect = trfself.GetComponentsInChildren<Button>(true);
imgBadges[0] = trfself.Find("Badges").Find("badge0").GetComponent<RectTransform>();
imgBadges[1] = trfself.Find("Badges").Find("badge1").GetComponent<RectTransform>();
imgSelect = trfself.Find("select").GetComponent<RectTransform>();
for (int i = 0; i < len; i++)
{
rtrfItems[i] = btnSelect[i].GetComponent<RectTransform>();
txtTitleName[i] = rtrfItems[i].Find("txt").GetComponent<TextMeshProUGUI>();
txtTitleNameColorSetter[i] = txtTitleName[i].GetComponent<GraphicsColorSetter>();
imgIsEquip[i] = rtrfItems[i].Find("equip").GetComponent<Image>();
imgIsEquip[i].transform.GetChild(0).GetComponent<TextMeshProUGUI>().text = LocalizationText.GetText("all_equiping");
imgShadow[i] = rtrfItems[i].Find("imgShadow").GetComponent<Image>();
}
}
public override void Localize()
{
for (int i = 0; i < imgIsEquip.Length; i++)
{
imgIsEquip[i].transform.GetChild(0).GetComponent<TextMeshProUGUI>().text = LocalizationText.GetText("all_equiping");
}
}
public override void RefreshCellView()
{
base.RefreshCellView();
SetData(itemID);
}
public override void SetData(int itemid)
{
itemID = itemid;
for (int i = 0; i < txtTitleName.Length; i++)
{
haveIds[i] = ProfileMgr.SGetTitleId(itemid + i);
var title = DataHandler.GetPlayerTitle(haveIds[i]);
if (title != null && (int)title.category == ProfileMgr.SGetTitleContent())
{
achives[i] = new nAchivement(title);
btnSelect[i].gameObject.SetActive(true);
txtTitleName[i].text = FormatString.GetGoodsName(cGoods.TProfileTitle, haveIds[i]);
txtTitleNameColorSetter[i]?.SetColor(title.grade.ToString());
imgShadow[i].color = colShadow;
if (title.have)
{
imgShadow[i].gameObject.SetActive(false);
imgBadges[i].gameObject.SetActive(false);
}
else if (DataHandler.isClearAchievements(achives[i]) > 0)
{
imgShadow[i].gameObject.SetActive(true);
imgBadges[i].gameObject.SetActive(true);
unlockEffect();
}
else
{
imgShadow[i].gameObject.SetActive(true);
imgBadges[i].gameObject.SetActive(false);
unlockEffect();
}
}
else
{
btnSelect[i].gameObject.SetActive(false);
imgBadges[i].gameObject.SetActive(false);
}
}
initSelect();
initEquip();
}
public void btnSelectTitle(int idx)
{
SoundMgr.PlaySfx(SoundName.BtnPress);
ProfileMgr.SSetSelectTitleNum(haveIds[idx]);
}
public void initSelect()
{
for(int i = 0; i<txtTitleName.Length; i++)
{
if (ProfileMgr.SGetSelectTitleNum() == haveIds[i])
{
ProfileMgr.SSetTitleUi(haveIds[i]);
imgSelect.transform.position = btnSelect[i].transform.position;
imgSelect.gameObject.SetActive(true);
return;
}
else
{
imgSelect.gameObject.SetActive(false);
}
}
}
public void initEquip()
{
for (int i = 0; i < txtTitleName.Length; i++)
{
if (DataHandler.PlayData.playerTitle == haveIds[i])
{
imgIsEquip[i].gameObject.SetActive(true);
}
else
imgIsEquip[i].gameObject.SetActive(false);
}
}
public void unlockEffect()
{
for (int i = 0; i < 2; i++)
{
if (i < 2 && imgBadges[i].gameObject.activeSelf)
{
imgShadow[i].color = colShadow;
imgShadow[i].DOFade(0f, 0.5f).SetEase(Ease.Linear).SetLoops(-1, LoopType.Yoyo).Restart();
}
else
imgShadow[i].DOKill();
}
}
}