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(); } } 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 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); } } }