using System;
|
using TableConfig;
|
using UnityEngine;
|
using UnityEngine.UI;
|
using System.Collections.Generic;
|
|
namespace Snxxz.UI
|
{
|
public class PreviewCell : MonoBehaviour
|
{
|
[SerializeField] Text suitNameText;
|
[SerializeField] Text partNameText;
|
[SerializeField] RectTransform partParent;
|
[SerializeField] GameObject suitAttrObj;
|
[SerializeField] RectTransform suitAttrParent;
|
|
PlayerSuitModel _suitModel;
|
PlayerSuitModel SuitModel
|
{
|
get { return _suitModel ?? (_suitModel = ModelCenter.Instance.GetModel<PlayerSuitModel>()); }
|
}
|
|
ActivateSuitData suitData;
|
EquipSuitAttrConfig suitAttrConfig = null;
|
public string suitId { get; private set; }
|
public Dictionary<int,Text> partNameDict = new Dictionary<int, Text>();
|
public Dictionary<int, List<Text>> suitAttrDict = new Dictionary<int, List<Text>>();
|
|
public readonly Color32 noActivityColor = new Color32(255, 244, 205, 153);
|
Color32 lowSuitColor = new Color32(248, 152, 59, 255);
|
Color32 highSuitColor = new Color32(250,1,1, 255);
|
|
public void InitUI(string suitID)
|
{
|
this.suitId = suitID;
|
suitAttrConfig = EquipSuitAttrConfig.GetSuitAttrConfigBySuitID(suitID);
|
if (suitAttrConfig == null) return;
|
partNameDict.Clear();
|
suitAttrDict.Clear();
|
CreatePart();
|
CreateSuitAttr();
|
}
|
|
public void RefreshUI(string suitID)
|
{
|
this.suitId = suitID;
|
suitData = SuitModel.GetSingleSuitAttr(suitID);
|
if(!suitData.Equals(default(ActivateSuitData)))
|
{
|
DebugEx.Log("RefreshUI:" + suitID);
|
string suitName = StringUtility.Contact(suitData.attrConfig.name, "(", suitData.suitCnt,"/", suitData.attrConfig.count3, ")");
|
suitNameText.text = suitName;
|
if(suitData.attrConfig.suiteType == 1)
|
{
|
suitNameText.color = lowSuitColor;
|
}
|
else if(suitData.attrConfig.suiteType == 2)
|
{
|
suitNameText.color = highSuitColor;
|
}
|
this.gameObject.SetActive(true);
|
foreach (var place in partNameDict.Keys)
|
{
|
partNameDict[place].gameObject.SetActive(true);
|
if(suitData.equipPlacelist.Contains(place))
|
{
|
partNameDict[place].color = UIHelper.s_DarkGreenColor;
|
}
|
else
|
{
|
partNameDict[place].color = noActivityColor;
|
}
|
}
|
|
foreach(var suitCnt in suitAttrDict.Keys)
|
{
|
if(suitData.suitCnt >= suitCnt)
|
{
|
for(int i= 0; i < suitAttrDict[suitCnt].Count; i++)
|
{
|
suitAttrDict[suitCnt][i].color = UIHelper.s_DarkGreenColor;
|
}
|
}
|
else
|
{
|
for (int i = 0; i < suitAttrDict[suitCnt].Count; i++)
|
{
|
suitAttrDict[suitCnt][i].color = noActivityColor;
|
}
|
}
|
}
|
}
|
else
|
{
|
this.gameObject.SetActive(false);
|
}
|
}
|
|
private void CreatePart()
|
{
|
for(int i = 0; i < suitAttrConfig.count3;i++)
|
{
|
Text go = Instantiate(partNameText);
|
partNameText.gameObject.SetActive(false);
|
go.transform.SetParent(partParent);
|
go.transform.localPosition = Vector3.zero;
|
go.transform.localScale = Vector3.one;
|
string partName = StringUtility.Contact(suitAttrConfig.name, UIHelper.GetEquipAreaName(SuitModel.GetEquipPlaceByGroupType(suitAttrConfig.groupType)[i]));
|
go.text = partName;
|
int equipPlace = SuitModel.GetEquipPlaceByGroupType(suitAttrConfig.groupType)[i];
|
partNameDict.Add(equipPlace,go);
|
}
|
}
|
|
private void CreateSuitAttr()
|
{
|
int[] firstProlist = ConfigParse.GetMultipleStr<int>(suitAttrConfig.propList1);
|
int[] firstProValuelist = ConfigParse.GetMultipleStr<int>(suitAttrConfig.propValueList1);
|
int[] secondProlist = ConfigParse.GetMultipleStr<int>(suitAttrConfig.propList2);
|
int[] secondProValuelist = ConfigParse.GetMultipleStr<int>(suitAttrConfig.propValueList2);
|
int[] thirdProlist = ConfigParse.GetMultipleStr<int>(suitAttrConfig.propList3);
|
int[] thirdProValuelist = ConfigParse.GetMultipleStr<int>(suitAttrConfig.propValueList3);
|
|
int sumLength = firstProlist.Length + secondProlist.Length + thirdProlist.Length;
|
int length1 = firstProlist.Length;
|
int length2 = firstProlist.Length + secondProlist.Length;
|
List<Text> attrCnt1Textlist = new List<Text>();
|
List<Text> attrCnt2Textlist = new List<Text>();
|
List<Text> attrCnt3Textlist = new List<Text>();
|
for (int i = 0; i < sumLength; i++)
|
{
|
GameObject go = Instantiate(suitAttrObj);
|
suitAttrObj.SetActive(false);
|
go.SetActive(true);
|
go.transform.SetParent(suitAttrParent);
|
go.transform.localPosition = Vector3.zero;
|
go.transform.localScale = Vector3.one;
|
Text numText = go.transform.Find("NumText").GetComponent<Text>();
|
Text attrDesText = go.transform.Find("AttrDes").GetComponent<Text>();
|
if (i == 0)
|
{
|
numText.text = Language.Get("EquipSuit111", suitAttrConfig.count1.ToString());
|
numText.gameObject.SetActive(true);
|
}
|
else if (i == length1)
|
{
|
numText.text = Language.Get("EquipSuit111", suitAttrConfig.count2.ToString());
|
numText.gameObject.SetActive(true);
|
}
|
else if (i == length2)
|
{
|
numText.text = Language.Get("EquipSuit111", suitAttrConfig.count3.ToString());
|
numText.gameObject.SetActive(true);
|
}
|
else
|
{
|
numText.gameObject.SetActive(false);
|
}
|
|
PlayerPropertyConfig playerproModel = null;
|
string attrDes = "";
|
if (i < length1)
|
{
|
playerproModel = Config.Instance.Get<PlayerPropertyConfig>(firstProlist[i]);
|
if (playerproModel != null)
|
{
|
attrDes = StringUtility.Contact(playerproModel.Name,"+", GetProValueTypeStr(playerproModel, firstProValuelist[i]));
|
attrDesText.text = attrDes;
|
}
|
attrCnt1Textlist.Add(numText);
|
attrCnt1Textlist.Add(attrDesText);
|
if (!suitAttrDict.ContainsKey(suitAttrConfig.count1))
|
{
|
suitAttrDict.Add(suitAttrConfig.count1, attrCnt1Textlist);
|
}
|
}
|
|
else if (i >= length1 && i < length2)
|
{
|
playerproModel = Config.Instance.Get<PlayerPropertyConfig>(secondProlist[i - length1]);
|
if (playerproModel != null)
|
{
|
attrDes = StringUtility.Contact(playerproModel.Name, "+", GetProValueTypeStr(playerproModel, secondProValuelist[i-length1]));
|
attrDesText.text = attrDes;
|
}
|
attrCnt2Textlist.Add(numText);
|
attrCnt2Textlist.Add(attrDesText);
|
if (!suitAttrDict.ContainsKey(suitAttrConfig.count2))
|
{
|
suitAttrDict.Add(suitAttrConfig.count2, attrCnt2Textlist);
|
}
|
}
|
|
else if (i >= length2 && i < sumLength)
|
{
|
playerproModel = Config.Instance.Get<PlayerPropertyConfig>(thirdProlist[i - length2]);
|
if (playerproModel != null)
|
{
|
attrDes = StringUtility.Contact(playerproModel.Name, "+", GetProValueTypeStr(playerproModel, thirdProValuelist[i - length2]));
|
attrDesText.text = attrDes;
|
}
|
attrCnt3Textlist.Add(numText);
|
attrCnt3Textlist.Add(attrDesText);
|
if (!suitAttrDict.ContainsKey(suitAttrConfig.count3))
|
{
|
suitAttrDict.Add(suitAttrConfig.count3, attrCnt3Textlist);
|
}
|
}
|
|
}
|
}
|
|
public string GetProValueTypeStr(PlayerPropertyConfig playerproModel, int value)
|
{
|
string s = "";
|
if (playerproModel.ISPercentage == 0)
|
{
|
s = value.ToString();
|
}
|
else if (playerproModel.ISPercentage == 1)
|
{
|
s = (float)Math.Round(value / 100f, 1) + "%";
|
}
|
else if (playerproModel.ISPercentage == 2)
|
{
|
s = ((float)Math.Round(value / 100f, 1)).ToString();
|
}
|
return s;
|
}
|
}
|
}
|