881 lines
29 KiB
C#
881 lines
29 KiB
C#
|
using Games.GlobeDefine;
|
|||
|
using UnityEngine;
|
|||
|
using UnityEngine.UI;
|
|||
|
using System.Collections;
|
|||
|
using System.Collections.Generic;
|
|||
|
using Module.Log;
|
|||
|
using GCGame;
|
|||
|
using System;
|
|||
|
using GCGame.Table;
|
|||
|
using Games.Events;
|
|||
|
|
|||
|
public class RankWindowNew : MonoBehaviour
|
|||
|
{
|
|||
|
#region Single
|
|||
|
|
|||
|
private static RankWindowNew _instance;
|
|||
|
public static RankWindowNew Instance
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
if (_instance != null)
|
|||
|
{
|
|||
|
return _instance;
|
|||
|
}
|
|||
|
|
|||
|
LogModule.ErrorLog("Single : Can't get instance.");
|
|||
|
return null;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
public enum RankType_T
|
|||
|
{
|
|||
|
InvalidType = -1, //默认无效排行
|
|||
|
LevelComposite = 0, //等级综合排行
|
|||
|
LevelProf0 = 1, //等级职业0排行
|
|||
|
LevelProf1 = 2, //等级职业1排行
|
|||
|
LevelProf2 = 3, //等级职业2排行
|
|||
|
LevelProf3 = 4, //等级职业3排行
|
|||
|
|
|||
|
AbalityComposite = 5, //修为综合排行
|
|||
|
AbalityProf0 = 6, //修为排行职业0
|
|||
|
AbalityProf1 = 7, //修为排行职业1
|
|||
|
AbalityProf2 = 8, //修为排行职业2
|
|||
|
AbalityProf3 = 9, //修为排行职业3
|
|||
|
|
|||
|
LingYu = 10, //灵玉排行
|
|||
|
YuanBao = 11, //元宝排行
|
|||
|
YinLiang = 12, //银两排行
|
|||
|
YinPiao = 13, //银票排行
|
|||
|
|
|||
|
EquipScoreComposite = 14, //装备评分综合排行
|
|||
|
EquipScoreProf0 = 15, //装备评分排行职业0
|
|||
|
EquipScoreProf1 = 16, //装备评分排行职业1
|
|||
|
EquipScoreProf2 = 17, //装备评分排行职业2
|
|||
|
EquipScoreProf3 = 18, //装备评分排行职业3
|
|||
|
|
|||
|
BattlePointComposite = 19, //战斗力综合排行
|
|||
|
BattlePointProf0 = 20, //战斗力排行职业0
|
|||
|
BattlePointProf1 = 21, //战斗力排行职业1
|
|||
|
BattlePointProf2 = 22, //战斗力排行职业2
|
|||
|
BattlePointProf3 = 23, //战斗力排行职业3
|
|||
|
|
|||
|
PetScoreComposite = 24, //宠物评分综合排行
|
|||
|
PetScoreProf0 = 25, //宠物评分排行职业0
|
|||
|
PetScoreProf1 = 26, //宠物评分排行职业1
|
|||
|
PetScoreProf2 = 27, //宠物评分排行职业2
|
|||
|
PetScoreProf3 = 28, //宠物评分排行职业3
|
|||
|
|
|||
|
GuildPraticeComposite = 29, //帮会修炼综合排行
|
|||
|
GuildPraticeProf0 = 30, //帮会修炼排行职业0
|
|||
|
GuildPraticeProf1 = 31, //帮会修炼排行职业1
|
|||
|
GuildPraticeProf2 = 32, //帮会修炼排行职业2
|
|||
|
GuildPraticeProf3 = 33, //帮会修炼排行职业3
|
|||
|
|
|||
|
UserShopMoney = 34, //玩家商店资金排行
|
|||
|
|
|||
|
Hot = 35, //人气排行
|
|||
|
Flower = 36, //鲜花排行
|
|||
|
GiveFlower = 37, //排行
|
|||
|
|
|||
|
HotWeek = 38, //人气周排行
|
|||
|
FlowerWeek = 39, //鲜花周排行
|
|||
|
GiveFlowerWeek = 40, //周排行
|
|||
|
|
|||
|
|
|||
|
GuildFinishTimes = 41, //帮会出师次数排行
|
|||
|
|
|||
|
Constitu = 42, //根骨排行
|
|||
|
Morfib = 43, //精力排行
|
|||
|
Strength = 44, //力量排行
|
|||
|
Intelleng = 45, //智力排行
|
|||
|
Agile = 46, //敏捷排行
|
|||
|
LuckyVal = 47, //幸运值排行
|
|||
|
|
|||
|
MaxHp = 48, //最大气血排行
|
|||
|
MaxMp = 49, //最大法力排行
|
|||
|
PysAttack = 50, //物理攻击排行
|
|||
|
MagAttack = 51, //法术攻击排行
|
|||
|
PysDef = 52, //物理防御排行
|
|||
|
MagDef = 53, //法术防御排行
|
|||
|
|
|||
|
GuildMoney = 54, //帮会财富排行
|
|||
|
GuildActive = 55, //帮会活跃度排行
|
|||
|
GuildScope = 56, //帮会规模排行
|
|||
|
GuildEquipScore = 57, //帮会装备评分排行
|
|||
|
|
|||
|
GuildUnionGame0 = 58, //帮会甲级联赛排行
|
|||
|
GuildUnionGame1 = 59, //帮会乙级联赛排行
|
|||
|
GuildUnionGame2 = 60, //帮会丙级联赛排行
|
|||
|
GuildUnionGame3 = 61, //帮会丁级联赛排行
|
|||
|
GuildUnionGame4 = 62, //帮会戊级联赛排行
|
|||
|
GuildUnionGame5 = 63, //帮会己级联赛排行
|
|||
|
GuildUnionGame6 = 64, //帮会庚级联赛排行
|
|||
|
GuildUnionGame7 = 65, //帮会辛级联赛排行
|
|||
|
GuildUnionGame8 = 66, //帮会壬级联赛排行
|
|||
|
GuildUnionGame9 = 67, //帮会癸级联赛排行
|
|||
|
|
|||
|
GuildPoem = 68, //行酒令对诗排行
|
|||
|
GuildRobberCostTime = 69, //帮会大盗排行
|
|||
|
|
|||
|
WeiboHot = 70, //微博热点排行<模板>
|
|||
|
|
|||
|
Advance_0 = 71, //进阶排行榜0
|
|||
|
Advance_1 = 72, //进阶排行榜1
|
|||
|
Advance_2 = 73, //进阶排行榜2
|
|||
|
Advance_3 = 74, //进阶排行榜3
|
|||
|
Advance_4 = 75, //进阶排行榜4
|
|||
|
Advance_5 = 76, //进阶排行榜5
|
|||
|
Advance_6 = 77, //进阶排行榜6
|
|||
|
|
|||
|
DailyRecharge = 78, // 每日充值排行榜
|
|||
|
DailyConsume = 79, // 每日消费排行榜
|
|||
|
|
|||
|
CopyDefend_0 = 80,//守护岳飞副本难度0
|
|||
|
CopyDefend_1 = 81,//守护岳飞副本难度1
|
|||
|
CopyDefend_2 = 82,//守护岳飞副本难度2
|
|||
|
CopyDefend_3 = 83,//守护岳飞副本难度3
|
|||
|
|
|||
|
CopyClimb_0 = 84,//爬塔副本副本难度0
|
|||
|
|
|||
|
CopyClimb_Buff_0 = 85, // 爬塔Buff副本难度
|
|||
|
CopyClimb_Buff_1 = 86, // 爬塔Buff副本难度
|
|||
|
CopyClimb_Buff_2 = 87, // 爬塔Buff副本难度
|
|||
|
CopyClimb_Buff_3 = 88, // 爬塔Buff副本难度
|
|||
|
|
|||
|
CopyShadow_0 = 89, // 影子战场
|
|||
|
CopyRealm_0 = 90, // 诸界爬塔副本
|
|||
|
|
|||
|
GemCombat = 102, //灵玉排行职业0
|
|||
|
StrengthCombat = 103, //灵玉排行职业1
|
|||
|
SkillCombat = 104, //灵玉排行职业2
|
|||
|
|
|||
|
|
|||
|
RankMax,
|
|||
|
}
|
|||
|
|
|||
|
public enum RankPropID
|
|||
|
{
|
|||
|
InvalidID = -1, //无效ID
|
|||
|
UserGuid = 0, //玩家Guid
|
|||
|
|
|||
|
UserProf = 1, //玩家职业
|
|||
|
UserName = 2, //玩家名
|
|||
|
GuildName = 3, //帮会名
|
|||
|
MasterName = 4, //师门名
|
|||
|
LoverName = 5, //配偶名
|
|||
|
HomelandName = 6, //家园名
|
|||
|
PetName = 7, //宠物名
|
|||
|
|
|||
|
UserLevel = 8, //玩家等级
|
|||
|
UserAbalityLevel = 9, //玩家修为
|
|||
|
|
|||
|
UserLingYu = 10, //灵玉
|
|||
|
UserYuanBao = 11, //元宝
|
|||
|
UserYinliang = 12, //银两
|
|||
|
UserYinPiao = 13, //银票
|
|||
|
|
|||
|
UserEquipScore = 14, //玩家装备评分
|
|||
|
UserBattlePoint = 15, //玩家战斗力
|
|||
|
UserPetScore = 16, //玩家宠物评分
|
|||
|
UserGuildPratice = 17, //玩家帮派修炼
|
|||
|
UserShopMoney = 18, //玩家商店资金
|
|||
|
UserGuildFinishTimes = 19, //玩家出师次数
|
|||
|
UserHot = 20, //人气
|
|||
|
UserFlower = 21, //鲜花
|
|||
|
UserGiveFlower = 22, //送鲜花
|
|||
|
UserHotWeek = 23, //周人气
|
|||
|
UserFlowerWeek = 24, //周鲜花
|
|||
|
UserGiveFlowerWeek = 25, //周送鲜花
|
|||
|
|
|||
|
UserConstitu = 26, //根骨
|
|||
|
UserMorfib = 27, //精力
|
|||
|
UserStrength = 28, //力量
|
|||
|
UserIntelleng = 29, //智力
|
|||
|
UserAgile = 30, //敏捷
|
|||
|
UserLuckyVal = 31, //幸运值
|
|||
|
|
|||
|
UserMaxHp = 32, //最大气血
|
|||
|
UserMaxMp = 33, //最大法力
|
|||
|
UserPysAttack = 34, //物理攻击
|
|||
|
UserMagAttack = 35, //法术攻击
|
|||
|
UserPysDef = 36, //物理防御
|
|||
|
UserMagDef = 37, //法术防御
|
|||
|
|
|||
|
GuildGuid = 38, //帮会Guid
|
|||
|
GuildMemberCount = 39, //帮会成员数目
|
|||
|
GuildScope = 40, //帮会规模
|
|||
|
GuildMoney = 41, //帮会资金
|
|||
|
GuildActiveVal = 42, //帮会活跃度
|
|||
|
GuildEquipScore = 43, //帮会装备评分
|
|||
|
GuildUnionGameRank = 44, //帮会联赛排名
|
|||
|
GuildPoem = 45, //帮会行酒令对诗
|
|||
|
GuildRobberCostTime = 46, //帮会大盗耗时
|
|||
|
|
|||
|
RecordTime = 47, // 本条记录产生时间
|
|||
|
UserShopName = 48, //玩家商店名
|
|||
|
|
|||
|
UserRankIndex = 49, //玩家在榜单中的排名0~N
|
|||
|
GuildCreateTime = 50, //帮会建立时间
|
|||
|
|
|||
|
WeiboRecordGuid = 51, //微博guid
|
|||
|
WeiboLikedCount = 52, //微博点赞次数
|
|||
|
|
|||
|
GuildPoemCostTime = 53, //帮会行酒令对诗总耗时
|
|||
|
|
|||
|
UserAdvanceGrade = 54, //玩家的进阶阶级
|
|||
|
UserAdvanceStar = 55, //玩家的进阶星数
|
|||
|
|
|||
|
TestingCopyPassedLevel = 56, //试炼副本通过波数
|
|||
|
//家园暂时不搞
|
|||
|
|
|||
|
// 消费/充值榜新增
|
|||
|
DailyRecharge = 57, // 每日充值金额
|
|||
|
DailyConsume = 58, // 每日消费金额
|
|||
|
RealRank = 59, // 真实排名
|
|||
|
HeadPicName = 60, // 梦岛头像
|
|||
|
//-----------------
|
|||
|
|
|||
|
AdvanceCombatValue = 61, // 进阶战斗力
|
|||
|
|
|||
|
RedPacketNum = 62, //红包数
|
|||
|
|
|||
|
Wing = 63, //翅膀id
|
|||
|
FashionId = 64, //时装id
|
|||
|
WeaponId = 65, //武器id
|
|||
|
|
|||
|
FellowId = 66, //宠物dataid
|
|||
|
|
|||
|
EffectId = 67, //装备特效id
|
|||
|
AuraWingId = 68, //翅膀特效id
|
|||
|
|
|||
|
EnhanceTotalLV = 69, //强化总登记
|
|||
|
EnhancePerfect = 70, //强化完美度
|
|||
|
GemCombat = 71, //宝石战力
|
|||
|
|
|||
|
SkillCombat = 72, //技能战力
|
|||
|
|
|||
|
PropMax,
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
private Dictionary<int, string> types = new Dictionary<int, string>();
|
|||
|
|
|||
|
public GameObject RankMain; //左侧一级按钮
|
|||
|
public GameObject RankSub; //左侧二级按钮
|
|||
|
public GameObject RankSubRight; //右侧顶部排行分类
|
|||
|
public GameObject RankInfoItem; //排名具体信息每条的记录
|
|||
|
public ToggleGroup contentGroup;
|
|||
|
|
|||
|
public Text headItemText1;
|
|||
|
public Text headItemText2;
|
|||
|
public Text headItemText3;
|
|||
|
public Text headItemText4;
|
|||
|
|
|||
|
public GameObject SelfRankInfoObj;
|
|||
|
public TogglesControl toggleControl;
|
|||
|
|
|||
|
public NewRankRoot _newRankRootPanel;
|
|||
|
public GameObject _OldPanel;
|
|||
|
public GameObject _NewPanel;
|
|||
|
|
|||
|
int currentSelctRankMainType = -1;
|
|||
|
int currentSelectRankSubType = -1;
|
|||
|
int currentSelectRankSubSubType = -1;
|
|||
|
Dictionary<int, List<GameObject>> subRankItems = new Dictionary<int, List<GameObject>>();
|
|||
|
Dictionary<int, GameObject> menuRankItem = new Dictionary<int, GameObject>();
|
|||
|
|
|||
|
private bool hasInit = false;
|
|||
|
|
|||
|
void Awake()
|
|||
|
{
|
|||
|
Hashtable calbackparam = new Hashtable();
|
|||
|
calbackparam["name"] = "RankInfoList";
|
|||
|
MessageEventCallBack fun = OnNewRankInfo;
|
|||
|
calbackparam.Add("callFun", fun);
|
|||
|
Games.Events.EventDispatcher.Instance.AddMessageEvent(Games.Events.EventId.RankInfoList, calbackparam);
|
|||
|
if(_instance == null)
|
|||
|
{
|
|||
|
_instance = this;
|
|||
|
hasInit = false;
|
|||
|
}
|
|||
|
|
|||
|
toggleControl.OnTogglesSelect += OnRankMainSelect;
|
|||
|
}
|
|||
|
|
|||
|
private void OnEnable()
|
|||
|
{
|
|||
|
toggleControl.SetToggleOn(0);
|
|||
|
//OnRankMainSelect(0);
|
|||
|
}
|
|||
|
|
|||
|
private int _CurSelectPageIndex = -1;
|
|||
|
public void OnRankMainSelect(int index)
|
|||
|
{
|
|||
|
_CurSelectPageIndex = index;
|
|||
|
if (index == 0 || index == 1)
|
|||
|
{
|
|||
|
_OldPanel.SetActive(false);
|
|||
|
_NewPanel.SetActive(true);
|
|||
|
_newRankRootPanel.ShowPanel(index);
|
|||
|
|
|||
|
}else
|
|||
|
{
|
|||
|
_OldPanel.SetActive(true);
|
|||
|
_NewPanel.SetActive(false);
|
|||
|
}
|
|||
|
|
|||
|
OnSelectMain(index);
|
|||
|
}
|
|||
|
|
|||
|
void OnDestroy()
|
|||
|
{
|
|||
|
Games.Events.EventDispatcher.Instance.RemoveMessage(Games.Events.EventId.RankInfoList, "RankInfoList");
|
|||
|
hasInit = false;
|
|||
|
_instance = null;
|
|||
|
}
|
|||
|
|
|||
|
void Start()
|
|||
|
{
|
|||
|
Init();
|
|||
|
}
|
|||
|
|
|||
|
private void Init()
|
|||
|
{
|
|||
|
if (hasInit == false)
|
|||
|
{
|
|||
|
var rankTypeInfos = TableManager.GetRankInfoType().Values;
|
|||
|
foreach (var typeInfo in rankTypeInfos)
|
|||
|
{
|
|||
|
types[typeInfo.Id] = typeInfo.ProStr;
|
|||
|
}
|
|||
|
var rankinfos = TableManager.GetRankProInfo().Values;
|
|||
|
int index = 0;
|
|||
|
currentSelctRankMainType = 0;
|
|||
|
int indexChild = 0;
|
|||
|
foreach (var type in types)
|
|||
|
{
|
|||
|
foreach (var rankInfo in rankinfos)
|
|||
|
{
|
|||
|
if (rankInfo.Type == type.Key)
|
|||
|
{
|
|||
|
CloneRankChild(rankInfo, indexChild); //排行榜左侧二级按钮
|
|||
|
indexChild++;
|
|||
|
}
|
|||
|
}
|
|||
|
index++;
|
|||
|
}
|
|||
|
|
|||
|
// 默认开启第一个选项
|
|||
|
toggleControl.SetToggleOn(0);
|
|||
|
hasInit = true;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void OnSelectMain(int type)
|
|||
|
{
|
|||
|
if (subRankItems.ContainsKey(type) == false)
|
|||
|
{
|
|||
|
if(type == -1)
|
|||
|
{
|
|||
|
currentSelctRankMainType = -1;
|
|||
|
}
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
if (subRankItems.ContainsKey(currentSelctRankMainType))
|
|||
|
{
|
|||
|
for (int i = 0; i < subRankItems[currentSelctRankMainType].Count; i++)
|
|||
|
{
|
|||
|
subRankItems[currentSelctRankMainType][i].SetActive(false);
|
|||
|
}
|
|||
|
}
|
|||
|
currentSelctRankMainType = type;
|
|||
|
for (int i = 0; i < subRankItems[currentSelctRankMainType].Count; i++)
|
|||
|
{
|
|||
|
subRankItems[currentSelctRankMainType][i].SetActive(true);
|
|||
|
Transform checkMark = subRankItems[currentSelctRankMainType][i].transform.Find("Checkmark");
|
|||
|
if(checkMark!=null)
|
|||
|
{
|
|||
|
if (i == 0)
|
|||
|
{
|
|||
|
subChildCheckmark = checkMark.gameObject;
|
|||
|
checkMark.gameObject.SetActive(true);
|
|||
|
Button btn = subRankItems[currentSelctRankMainType][i].GetComponent<Button>();
|
|||
|
if(btn!=null)
|
|||
|
{
|
|||
|
btn.onClick.Invoke();
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
checkMark.gameObject.SetActive(false);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void CloneRankChild( Tab_RankProInfo rankInfo,int index)
|
|||
|
{
|
|||
|
if (RankSub == null)
|
|||
|
return;
|
|||
|
GameObject newMain = GameObject.Instantiate(RankSub);
|
|||
|
if (newMain == null)
|
|||
|
return;
|
|||
|
newMain.transform.SetParent(RankSub.transform.parent);
|
|||
|
newMain.transform.localPosition = RankSub.transform.localPosition;
|
|||
|
newMain.transform.localScale = RankSub.transform.localScale;
|
|||
|
newMain.SetActive(true);
|
|||
|
|
|||
|
if (subRankItems.ContainsKey(rankInfo.Type) == false)
|
|||
|
subRankItems[rankInfo.Type] = new List<GameObject>();
|
|||
|
subRankItems[rankInfo.Type].Add(newMain);
|
|||
|
|
|||
|
Text[] btnNames = newMain.GetComponentsInChildren<Text>();
|
|||
|
for (int i = 0; i < btnNames.Length; i++)
|
|||
|
{
|
|||
|
btnNames[i].text = rankInfo.ProStr;
|
|||
|
}
|
|||
|
if(rankInfo.Type == currentSelctRankMainType)
|
|||
|
{
|
|||
|
newMain.SetActive(true);
|
|||
|
Transform checkMark = newMain.transform.Find("Checkmark");
|
|||
|
if (checkMark != null)
|
|||
|
{
|
|||
|
if (index == 0)
|
|||
|
{
|
|||
|
currentSelectRankSubType = rankInfo.SubType;
|
|||
|
checkMark.gameObject.SetActive(true);
|
|||
|
}
|
|||
|
else
|
|||
|
checkMark.gameObject.SetActive(false);
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
newMain.SetActive(false);
|
|||
|
}
|
|||
|
Button btn = newMain.GetComponent<Button>();
|
|||
|
if (btn != null)
|
|||
|
{
|
|||
|
btn.onClick.AddListener(delegate ()
|
|||
|
{
|
|||
|
OnSelectSubChild(btn.gameObject, rankInfo.SubType);
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
if(index == 0)
|
|||
|
{
|
|||
|
OnSelectSubChild(btn.gameObject, rankInfo.SubType);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
GameObject subChildCheckmark = null;
|
|||
|
public void OnSelectSubChild(GameObject subChildBtn,int subType)
|
|||
|
{
|
|||
|
if (subChildBtn == null)
|
|||
|
return;
|
|||
|
Transform checkMark = subChildBtn.transform.Find("Checkmark");
|
|||
|
if (checkMark == null)
|
|||
|
return;
|
|||
|
if (subChildCheckmark != null)
|
|||
|
subChildCheckmark.SetActive(false);
|
|||
|
subChildCheckmark = checkMark.gameObject;
|
|||
|
subChildCheckmark.SetActive(true);
|
|||
|
|
|||
|
var ranks = TableManager.GetRankInfo().Values;
|
|||
|
for(int i=0;i< rightTopItems.Count;i++)
|
|||
|
{
|
|||
|
rightTopItems[i].SetActive(false);
|
|||
|
Destroy(rightTopItems[i]);
|
|||
|
}
|
|||
|
rightTopItems.Clear();
|
|||
|
RightTopCheckMark = null;
|
|||
|
currentSelectRankSubType = subType;
|
|||
|
foreach (var rank in ranks)
|
|||
|
{
|
|||
|
if(rank.Type == currentSelctRankMainType && rank.SubType == subType)
|
|||
|
{
|
|||
|
CloneRightTopChild(rank);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
List<GameObject> rightTopItems = new List<GameObject>();
|
|||
|
|
|||
|
void CloneRightTopChild(Tab_RankInfo rank)
|
|||
|
{
|
|||
|
if (RankSubRight == null)
|
|||
|
return;
|
|||
|
GameObject newObj = GameObject.Instantiate(RankSubRight);
|
|||
|
if (newObj == null)
|
|||
|
return;
|
|||
|
newObj.transform.SetParent(RankSubRight.transform.parent);
|
|||
|
newObj.transform.localPosition = RankSubRight.transform.localPosition;
|
|||
|
newObj.transform.localScale = RankSubRight.transform.localScale;
|
|||
|
newObj.SetActive(true);
|
|||
|
rightTopItems.Add(newObj);
|
|||
|
Text[] btnNames = newObj.GetComponentsInChildren<Text>();
|
|||
|
for (int i = 0; i < btnNames.Length; i++)
|
|||
|
{
|
|||
|
btnNames[i].text = rank.SubSubTypeName;
|
|||
|
}
|
|||
|
Transform checkMark = newObj.transform.Find("Checkmark");
|
|||
|
if (checkMark != null)
|
|||
|
{
|
|||
|
checkMark.gameObject.SetActive(false);
|
|||
|
}
|
|||
|
Button btn = newObj.GetComponent<Button>();
|
|||
|
if (btn != null)
|
|||
|
{
|
|||
|
btn.onClick.AddListener(delegate ()
|
|||
|
{
|
|||
|
OnSelectRightTopItem(btn.gameObject,rank);
|
|||
|
});
|
|||
|
}
|
|||
|
if(rightTopItems.Count ==1)
|
|||
|
{
|
|||
|
OnSelectRightTopItem(btn.gameObject, rank);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
GameObject RightTopCheckMark;
|
|||
|
public void OnSelectRightTopItem(GameObject RightTopItemBtn, Tab_RankInfo rank)
|
|||
|
{
|
|||
|
if (RightTopCheckMark != null)
|
|||
|
RightTopCheckMark.SetActive(false);
|
|||
|
|
|||
|
if (RightTopItemBtn == null)
|
|||
|
return;
|
|||
|
Transform checkMark = RightTopItemBtn.transform.Find("Checkmark");
|
|||
|
if (checkMark == null)
|
|||
|
return;
|
|||
|
if (RightTopCheckMark != null)
|
|||
|
RightTopCheckMark.SetActive(false);
|
|||
|
RightTopCheckMark = checkMark.gameObject;
|
|||
|
RightTopCheckMark.SetActive(true);
|
|||
|
|
|||
|
headItemText1.text = "";
|
|||
|
headItemText2.text = "";
|
|||
|
headItemText3.text = "";
|
|||
|
headItemText4.text = "";
|
|||
|
|
|||
|
Tab_RankProStr proStr1 = TableManager.GetRankProStrByID(rank.GetInfoIDbyIndex(0),0);
|
|||
|
if(proStr1!=null)
|
|||
|
{
|
|||
|
headItemText1.text = proStr1.ProStr;
|
|||
|
}
|
|||
|
Tab_RankProStr proStr2 = TableManager.GetRankProStrByID(rank.GetInfoIDbyIndex(1), 0);
|
|||
|
if (proStr2 != null)
|
|||
|
{
|
|||
|
headItemText2.text = proStr2.ProStr;
|
|||
|
}
|
|||
|
Tab_RankProStr proStr3 = TableManager.GetRankProStrByID(rank.GetInfoIDbyIndex(2), 0);
|
|||
|
if (proStr3 != null)
|
|||
|
{
|
|||
|
headItemText3.text = proStr3.ProStr;
|
|||
|
}
|
|||
|
Tab_RankProStr proStr4 = TableManager.GetRankProStrByID(rank.GetInfoIDbyIndex(3), 0);
|
|||
|
if (proStr4 != null)
|
|||
|
{
|
|||
|
headItemText4.text = proStr4.ProStr;
|
|||
|
}
|
|||
|
currentSelectRankSubSubType = rank.SubSubType;
|
|||
|
//请求排行榜信息
|
|||
|
if (_CurSelectPageIndex == 2)
|
|||
|
{
|
|||
|
CG_REQ_RANK_LIST send = (CG_REQ_RANK_LIST)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_RANK_LIST);
|
|||
|
send.Ranktype = rank.Id;
|
|||
|
send.SendPacket();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
List<GameObject> rankInfoItems = new List<GameObject>();
|
|||
|
GameObject curSelectInfo;
|
|||
|
public void CloneRankInfoItem(int rank,int rankinfoID,RankElemStruct rankInfo)
|
|||
|
{
|
|||
|
Tab_RankInfo rankTabInfo = TableManager.GetRankInfoByID(rankinfoID, 0);
|
|||
|
if (rankTabInfo == null)
|
|||
|
return;
|
|||
|
if (rankTabInfo.Type != currentSelctRankMainType)
|
|||
|
return;
|
|||
|
if (rankTabInfo.SubType != currentSelectRankSubType)
|
|||
|
return;
|
|||
|
if (rankTabInfo.SubSubType != currentSelectRankSubSubType)
|
|||
|
return;
|
|||
|
GameObject newObj = GameObject.Instantiate(RankInfoItem);
|
|||
|
if (newObj == null)
|
|||
|
return;
|
|||
|
newObj.transform.SetParent(RankInfoItem.transform.parent);
|
|||
|
newObj.transform.localPosition = RankInfoItem.transform.localPosition;
|
|||
|
newObj.transform.localScale = RankInfoItem.transform.localScale;
|
|||
|
newObj.SetActive(true);
|
|||
|
rankInfoItems.Add(newObj);
|
|||
|
|
|||
|
SetRanInfo(rank, newObj, rankTabInfo, rankInfo);
|
|||
|
|
|||
|
long PlayerGuid = GetProValueInt((int)RankPropID.UserGuid, rankInfo); //玩家GUID 属性ID是 0
|
|||
|
long GuildGuid = GetProValueInt((int)RankPropID.GuildGuid, rankInfo); //帮会guid 属性ID是38
|
|||
|
string PlayerName = GetProValueStr((int)RankPropID.UserName, rankInfo); //玩家名称
|
|||
|
long PlayerLevel = GetProValueInt((int)RankPropID.UserLevel, rankInfo); //玩家等级
|
|||
|
long PlayerPro = GetProValueInt((int)RankPropID.UserProf, rankInfo); //玩家职业
|
|||
|
long PlayerXiuwei = GetProValueInt((int)RankPropID.UserAbalityLevel, rankInfo); //玩家修为
|
|||
|
GameObject select = newObj.transform.Find("select").gameObject;
|
|||
|
if (select != null)
|
|||
|
select.SetActive(false);
|
|||
|
Button btn = newObj.GetComponent<Button>();
|
|||
|
if(btn!=null)
|
|||
|
{
|
|||
|
btn.onClick.AddListener(delegate ()
|
|||
|
{
|
|||
|
if(PlayerGuid!=-1)
|
|||
|
PlayerTooltipsLogic.ShowPlayerTooltip((ulong)PlayerGuid, PlayerName,Utils.GetProfessionSpriteName((int)PlayerPro), (int)PlayerLevel,-1, (int)PlayerXiuwei, Vector3.zero);
|
|||
|
if(GuildGuid!=-1)
|
|||
|
{
|
|||
|
PopMenuLogic.ShowMenu("RankAddGuild", newObj, (ulong)GuildGuid, PlayerName);
|
|||
|
}
|
|||
|
|
|||
|
if(curSelectInfo != null)
|
|||
|
{
|
|||
|
curSelectInfo.SetActive(false);
|
|||
|
}
|
|||
|
|
|||
|
curSelectInfo = select;
|
|||
|
curSelectInfo.SetActive(true);
|
|||
|
});
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void SetRanInfo(int rank,GameObject ParentObj, Tab_RankInfo rankTabInfo, RankElemStruct rankInfo)
|
|||
|
{
|
|||
|
if (rankTabInfo == null)
|
|||
|
return;
|
|||
|
Text[] childTexts = ParentObj.GetComponentsInChildren<Text>();
|
|||
|
for (int i = 0; i < childTexts.Length; i++)
|
|||
|
{
|
|||
|
childTexts[i].text = "";
|
|||
|
if (childTexts[i].name == "rank")
|
|||
|
{
|
|||
|
if (rank <= 0)
|
|||
|
childTexts[i].text = StrDictionary.GetClientDictionaryString("#{2049}");
|
|||
|
else
|
|||
|
childTexts[i].text = rank.ToString();
|
|||
|
Transform First = ParentObj.transform.Find("First");
|
|||
|
Transform Second = ParentObj.transform.Find("Second");
|
|||
|
Transform Three = ParentObj.transform.Find("Three");
|
|||
|
if(First!=null)
|
|||
|
{
|
|||
|
First.gameObject.SetActive(rank == 1);
|
|||
|
}
|
|||
|
if (Second != null)
|
|||
|
{
|
|||
|
Second.gameObject.SetActive(rank == 2);
|
|||
|
}
|
|||
|
if (Three != null)
|
|||
|
{
|
|||
|
Three.gameObject.SetActive(rank == 3);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
if (childTexts[i].name == "info0")
|
|||
|
{
|
|||
|
SetRankInfoText(childTexts[i], rankTabInfo.GetInfoIDbyIndex(0), rankInfo);
|
|||
|
}
|
|||
|
if (childTexts[i].name == "info1")
|
|||
|
{
|
|||
|
SetRankInfoText(childTexts[i], rankTabInfo.GetInfoIDbyIndex(1), rankInfo);
|
|||
|
}
|
|||
|
if (childTexts[i].name == "info2")
|
|||
|
{
|
|||
|
SetRankInfoText(childTexts[i], rankTabInfo.GetInfoIDbyIndex(2), rankInfo);
|
|||
|
}
|
|||
|
if (childTexts[i].name == "info3")
|
|||
|
{
|
|||
|
SetRankInfoText(childTexts[i], rankTabInfo.GetInfoIDbyIndex(3), rankInfo);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//自己的排名信息
|
|||
|
void SetSelfRankInfo(RankElemStruct selfRank, int rankinfoID)
|
|||
|
{
|
|||
|
Tab_RankInfo rankTabInfo = TableManager.GetRankInfoByID(rankinfoID, 0);
|
|||
|
if (rankTabInfo == null)
|
|||
|
return;
|
|||
|
int rank = (int)GetProValueInt((int)RankPropID.UserRankIndex, selfRank);
|
|||
|
SetRanInfo(rank+1, SelfRankInfoObj, rankTabInfo,selfRank);
|
|||
|
}
|
|||
|
|
|||
|
void SetRankInfoText(Text rankInfoText,int proID, RankElemStruct rankInfo)
|
|||
|
{
|
|||
|
if (proID == -1)
|
|||
|
return;
|
|||
|
long proValue = GetProValueInt(proID, rankInfo);
|
|||
|
if (proValue != -1)
|
|||
|
{
|
|||
|
//职业特殊处理
|
|||
|
if(proID == (int)RankPropID.UserProf)
|
|||
|
{
|
|||
|
rankInfoText.text = Utils.GetProfession((int)proValue);
|
|||
|
}
|
|||
|
else if(proID == (int)RankPropID.GuildEquipScore)
|
|||
|
{
|
|||
|
rankInfoText.text = (proValue > 0 ? StrDictionary.GetClientDictionaryString("#{2972}", proValue) : "0");
|
|||
|
}
|
|||
|
else
|
|||
|
rankInfoText.text = proValue.ToString();
|
|||
|
return;
|
|||
|
}
|
|||
|
string proValues = GetProValueStr(proID, rankInfo);
|
|||
|
if(proValues != "")
|
|||
|
{
|
|||
|
rankInfoText.text = proValues;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public long GetProValueInt(int proID, RankElemStruct ranklist)
|
|||
|
{
|
|||
|
if (ranklist == null)
|
|||
|
return -1;
|
|||
|
for(int i=0;i< ranklist.numberfieldsCount;i++)
|
|||
|
{
|
|||
|
RankFieldNumberStruct numberInfo = ranklist.GetNumberfields(i);
|
|||
|
if (proID == numberInfo.Propid)
|
|||
|
return numberInfo.Propvalue;
|
|||
|
}
|
|||
|
return -1;
|
|||
|
}
|
|||
|
|
|||
|
public string GetProValueStr(int proID, RankElemStruct ranklist)
|
|||
|
{
|
|||
|
if (ranklist == null)
|
|||
|
return "";
|
|||
|
for (int i = 0; i < ranklist.stringfieldsCount; i++)
|
|||
|
{
|
|||
|
RankFieldStringStruct stringInfo = ranklist.GetStringfields(i);
|
|||
|
if (proID == stringInfo.Propid)
|
|||
|
return stringInfo.Propvalue;
|
|||
|
}
|
|||
|
return "";
|
|||
|
}
|
|||
|
|
|||
|
public void OnNewRankInfo(Hashtable addParam,Hashtable sendParam)
|
|||
|
{
|
|||
|
if (sendParam.ContainsKey("data") == false)
|
|||
|
return;
|
|||
|
GC_RET_RANK_LIST packet = (GC_RET_RANK_LIST)sendParam["data"];
|
|||
|
if (packet == null)
|
|||
|
return;
|
|||
|
for(int i=0;i<rankInfoItems.Count;i++)
|
|||
|
{
|
|||
|
rankInfoItems[i].SetActive(false);
|
|||
|
GameObject.Destroy(rankInfoItems[i]);
|
|||
|
}
|
|||
|
rankInfoItems.Clear();
|
|||
|
for (int i=0;i<packet.ranklistCount;i++)
|
|||
|
{
|
|||
|
if (i >= 100)
|
|||
|
break;
|
|||
|
CloneRankInfoItem(i + 1, packet.Ranktype,packet.ranklistList[i]);
|
|||
|
}
|
|||
|
|
|||
|
SetSelfRankInfo(packet.Myrankinfo, packet.Ranktype);
|
|||
|
}
|
|||
|
|
|||
|
public static void ShowPage(RankType_T type)
|
|||
|
{
|
|||
|
var rankInfoTab = TableManager.GetRankInfoByID((int)type, 0);
|
|||
|
if (rankInfoTab == null)
|
|||
|
return;
|
|||
|
UIManager.ShowUI(UIInfo.RankRoot, delegate(bool bSucess, object param) {
|
|||
|
if(bSucess)
|
|||
|
{
|
|||
|
if (rankInfoTab.Type == 0 || rankInfoTab.Type == 1)
|
|||
|
NewRankRoot.Instance.isShowType = (int)type;
|
|||
|
RankWindowNew.Instance.PositionRankItem((int)type);
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
public void PositionRankItem(int type)
|
|||
|
{
|
|||
|
var rankTab = TableManager.GetRankInfoByID(type, 0);
|
|||
|
if (rankTab == null)
|
|||
|
{
|
|||
|
LogModule.ErrorLog("Can't find type inf rankInfo : " + type);
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
if (rankTab.Type == 2)
|
|||
|
{
|
|||
|
SetShowPage(rankTab);
|
|||
|
return;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
toggleControl.SetToggleOn(rankTab.Type);
|
|||
|
if (NewRankRoot.Instance)
|
|||
|
NewRankRoot.Instance.ShowMenuItem(type);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
// 对外接口:设置需要显示的具体页面
|
|||
|
public void SetShowPage(Tab_RankInfo rank)
|
|||
|
{
|
|||
|
if(rank != null)
|
|||
|
{
|
|||
|
Init();
|
|||
|
|
|||
|
toggleControl.SetToggleOn(rank.Type);
|
|||
|
var subDic = TableManager.GetRankProInfo().Values;
|
|||
|
int subIndex = -1;
|
|||
|
foreach(var item in subDic)
|
|||
|
{
|
|||
|
if(item.Type == rank.Type)
|
|||
|
{
|
|||
|
++subIndex;
|
|||
|
if(item.SubType == rank.SubType)
|
|||
|
{
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if(subIndex != -1)
|
|||
|
{
|
|||
|
GameObject subMenuItem = subRankItems[rank.Type][subIndex];
|
|||
|
OnSelectSubChild(subMenuItem, rank.SubType);
|
|||
|
|
|||
|
var subSubDic = TableManager.GetRankInfo().Values;
|
|||
|
int subSubIndex = -1;
|
|||
|
foreach (var item in subSubDic)
|
|||
|
{
|
|||
|
if(item.Type == rank.Type && item.SubType == rank.SubType)
|
|||
|
{
|
|||
|
++subSubIndex;
|
|||
|
if(item.SubSubType == rank.SubSubType)
|
|||
|
{
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if(subSubIndex != -1)
|
|||
|
{
|
|||
|
// 注意 : rightTopItems中的索引是从 1 开始的。
|
|||
|
OnSelectRightTopItem(rightTopItems[subSubIndex], rank);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void Close()
|
|||
|
{
|
|||
|
UIManager.CloseUI(UIInfo.RankRoot);
|
|||
|
}
|
|||
|
|
|||
|
}
|