using EnhancedUI.EnhancedScroller;
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
using UnityEngine.UI;
|
namespace vnxbqy.UI
|
{
|
public class RankHeadCell : ScrollerUI
|
{
|
[SerializeField] AvatarCell avatarCell;
|
[SerializeField] Button rankBtn;
|
[SerializeField] Image rankBg;
|
[SerializeField] Image rankImgBg;
|
[SerializeField] Text rankNumText;
|
[SerializeField] Text textName;
|
[SerializeField] Image realmImg;
|
[SerializeField] Image m_CompareImg;
|
[SerializeField] Text jobText;
|
[SerializeField] Text rankWhat;
|
[SerializeField] RectTransform m_ContainerNameMiddle;
|
[SerializeField] RectTransform m_ContainerNameRight;
|
[SerializeField] Button queryCharmBtn;
|
|
RankModel model { get { return ModelCenter.Instance.GetModel<RankModel>(); } }
|
|
uint playerID;
|
public override void Refresh(CellView cell)
|
{
|
int index = cell.index;
|
rankImgBg.SetActive(index < 3);
|
rankNumText.SetActive(index >= 3);
|
rankNumText.text = (index + 1).ToString();
|
if (index < 3)
|
{
|
rankImgBg.SetSprite(index == 0 ? "Rank_First" : index == 1 ? "Rank_Second" : "Rank_Third");
|
}
|
|
RankData data = null;
|
List<RankData> rankDatas = null;
|
model.TryGetRanks(model.selectRankType, out rankDatas);
|
|
if (rankDatas != null && index < rankDatas.Count)
|
{
|
data = rankDatas[index];
|
}
|
|
realmImg.SetActive(false);
|
m_CompareImg.SetActive(false);
|
textName.rectTransform.SetParent(model.selectRankType != (int)RankType.Realm ? m_ContainerNameRight : m_ContainerNameMiddle);
|
textName.rectTransform.localPosition = Vector3.zero;
|
rankWhat.SetActive(true);
|
avatarCell.bgImage.SetActive(false);
|
avatarCell.avatarImage.SetActive(false);
|
avatarCell.avatarFrameImage.SetActive(false);
|
if (data != null)
|
{
|
playerID = data.id;
|
textName.text = data.name1;
|
string jobStr = data.subType.ToString();
|
int occupa = 1;
|
int.TryParse(jobStr[jobStr.Length - 1].ToString(), out occupa);
|
int classLv = 0;
|
int.TryParse(jobStr.Substring(0, jobStr.Length - 1), out classLv);
|
jobText.text = OccupationNameConfig.GetOccupationName(occupa);
|
int realmLv = 0;
|
switch ((RankType)data.type)
|
{
|
case RankType.RuneTower:
|
var _runeTowerFloorCfg = RuneTowerFloorConfig.Get((int)data.cmpValue);
|
if (_runeTowerFloorCfg == null)
|
{
|
rankWhat.text = "-";
|
break;
|
}
|
var _runeTowerCfg = RuneTowerConfig.Get(_runeTowerFloorCfg.TowerId);
|
if (_runeTowerCfg == null)
|
{
|
rankWhat.text = "-";
|
break;
|
}
|
if (IsHightestRuneTower((int)data.cmpValue))
|
{
|
rankWhat.text = Language.Get("PassedCustoms_Z");
|
}
|
else
|
{
|
rankWhat.text = StringUtility.Contact(_runeTowerCfg.TowerName, _runeTowerFloorCfg.FloorName);
|
}
|
realmLv = (int)data.value1;
|
break;
|
case RankType.OfflineExp:
|
ulong _expRate = (ulong)data.cmpValue * 100000000 + data.cmpValue2;
|
rankWhat.text = UIHelper.ReplaceLargeNum(_expRate);
|
realmLv = (int)data.value1;
|
break;
|
case RankType.Realm:
|
rankWhat.SetActive(false);
|
//rankWhat.text = data.cmpValue2.ToString();
|
realmLv = (int)data.cmpValue;
|
break;
|
case RankType.FightPower:
|
case RankType.Job1FightPower:
|
case RankType.Job2FightPower:
|
case RankType.Job3FightPower:
|
rankWhat.text = (data.cmpValue2 + data.cmpValue * Constants.ExpPointValue).ToString();
|
realmLv = (int)data.value1;
|
break;
|
default:
|
rankWhat.text = data.cmpValue.ToString();
|
realmLv = (int)data.value1;
|
break;
|
}
|
RealmConfig presentCfg = RealmConfig.Get(realmLv);
|
if (realmLv > 0 && presentCfg != null)
|
{
|
realmImg.SetActive(data.type != (int)RankType.Realm);
|
m_CompareImg.SetActive(data.type == (int)RankType.Realm);
|
realmImg.SetSprite(presentCfg.Img);
|
realmImg.SetNativeSize();
|
m_CompareImg.SetSprite(presentCfg.Img);
|
m_CompareImg.SetNativeSize();
|
}
|
|
bool isSelf = playerID == PlayerDatas.Instance.PlayerId;
|
textName.color = UIHelper.GetUIColor(isSelf ? TextColType.DarkGreen : TextColType.NavyBrown);
|
jobText.color = UIHelper.GetUIColor(isSelf ? TextColType.DarkGreen : TextColType.NavyBrown);
|
rankWhat.color = UIHelper.GetUIColor(isSelf ? TextColType.DarkGreen : TextColType.NavyBrown);
|
if (model.selectRankType == 30 || model.selectRankType == 31 || model.selectRankType == 32)
|
{
|
queryCharmBtn.SetActive(true);
|
queryCharmBtn.SetListener(QueryCharmBillboard);
|
}
|
else
|
{
|
queryCharmBtn.SetActive(false);
|
}
|
avatarCell.bgImage.SetActive(true);
|
avatarCell.avatarImage.SetActive(true);
|
avatarCell.avatarFrameImage.SetActive(true);
|
avatarCell.InitUI(AvatarHelper.GetAvatarModel((int)playerID, (int)data.value3, (int)data.value4, data.subType));
|
}
|
else
|
{
|
textName.text = Language.Get("L1046");
|
jobText.text = "-";
|
rankWhat.text = "-";
|
|
textName.color = UIHelper.GetUIColor(TextColType.NavyBrown);
|
jobText.color = UIHelper.GetUIColor(TextColType.NavyBrown);
|
rankWhat.color = UIHelper.GetUIColor(TextColType.NavyBrown);
|
queryCharmBtn.SetActive(false);
|
}
|
}
|
|
private static bool IsHightestRuneTower(int _floorId)
|
{
|
var _runeTowerFloorCfg = RuneTowerFloorConfig.Get(_floorId);
|
if (RuneTowerFloorConfig.Get(_floorId + 1) != null)
|
{
|
return false;
|
}
|
var _runeTowerCfg = RuneTowerConfig.Get(_runeTowerFloorCfg.TowerId);
|
if (RuneTowerConfig.Get(_runeTowerCfg.ID + 1) != null)
|
{
|
return false;
|
}
|
return true;
|
}
|
|
void QueryCharmBillboard()
|
{
|
byte queryType = 1;
|
if (model.selectRankType == 31)
|
{
|
queryType = 2;
|
}
|
else if (model.selectRankType == 32)
|
{
|
queryType = 3;
|
}
|
|
FlowerGiftModel.Instance.QueryCharm(playerID, queryType);
|
|
}
|
}
|
}
|
|
|