From 6eb915c129fc90c6f4c82ae097dd6ffad5239efc Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 25 Jan 2021 14:28:30 +0800 Subject: +scripts --- .../Scripts/XMainClient/UI/XFriendsRankHandler.cs | 491 +++++++++++++++++++++ 1 file changed, 491 insertions(+) create mode 100644 Client/Assets/Scripts/XMainClient/UI/XFriendsRankHandler.cs (limited to 'Client/Assets/Scripts/XMainClient/UI/XFriendsRankHandler.cs') diff --git a/Client/Assets/Scripts/XMainClient/UI/XFriendsRankHandler.cs b/Client/Assets/Scripts/XMainClient/UI/XFriendsRankHandler.cs new file mode 100644 index 00000000..301b94b7 --- /dev/null +++ b/Client/Assets/Scripts/XMainClient/UI/XFriendsRankHandler.cs @@ -0,0 +1,491 @@ +using System; +using System.Collections.Generic; +using KKSG; +using MiniJSON; +using UILib; +using UnityEngine; +using XMainClient.UI.UICommon; +using XUpdater; +using XUtliPoolLib; + +namespace XMainClient.UI +{ + internal class XFriendsRankHandler : DlgHandlerBase + { + public IXUIScrollView m_ScrollView; + + public IXUIWrapContent m_WrapContent; + + public Transform m_MyRank; + + public Transform m_NoFriend; + + public IXUIButton m_PkHelpBtn; + + public IXUILabel m_PkHelpLabel; + + private Dictionary rankItemDict = new Dictionary(); + + public Dictionary _WrapTextureList = new Dictionary(); + + private string m_noticeFriendOpenID; + + protected override void Init() + { + base.Init(); + this.m_ScrollView = (base.PanelObject.transform.Find("FriendsList").GetComponent("XUIScrollView") as IXUIScrollView); + this.m_WrapContent = (base.PanelObject.transform.Find("FriendsList/Friendname").GetComponent("XUIWrapContent") as IXUIWrapContent); + this.m_MyRank = base.PanelObject.transform.Find("Myname/Tpl"); + this.m_MyRank.gameObject.SetActive(false); + this.m_NoFriend = base.PanelObject.transform.Find("NoFriend"); + this.m_PkHelpBtn = (base.PanelObject.transform.Find("T3/Help").GetComponent("XUIButton") as IXUIButton); + this.m_PkHelpLabel = (base.PanelObject.transform.Find("T3/Content").GetComponent("XUILabel") as IXUILabel); + this.m_PkHelpLabel.gameObject.SetActive(false); + } + + public override void RegisterEvent() + { + base.RegisterEvent(); + this.m_WrapContent.RegisterItemUpdateEventHandler(new WrapItemUpdateEventHandler(this._RankWrapListUpdated)); + this.m_PkHelpBtn.RegisterPressEventHandler(new ButtonPressEventHandler(this.OnHelpBtnPress)); + } + + private void OnHelpBtnPress(IXUIButton btn, bool state) + { + bool flag = this.m_PkHelpLabel.gameObject.activeInHierarchy != state; + if (flag) + { + this.m_PkHelpLabel.gameObject.SetActive(state); + } + } + + protected override void OnShow() + { + base.OnShow(); + this.m_WrapContent.InitContent(); + this.RefreshRankList(); + this.m_PkHelpLabel.SetText(XSingleton.singleton.ReplaceReturn(XStringDefineProxy.GetString("FRIEND_PK"))); + this.m_PkHelpBtn.SetVisible(XSingleton.singleton.IsSystemOpened(XSysDefine.XSys_Friends_Pk)); + } + + protected override void OnHide() + { + base.OnHide(); + this.rankItemDict.Clear(); + this.ClearPreTabTextures(); + } + + public void ClearPreTabTextures() + { + foreach (KeyValuePair keyValuePair in this._WrapTextureList) + { + IXUITexture value = keyValuePair.Value; + value.ID = 0UL; + value.SetRuntimeTex(null, true); + } + this._WrapTextureList.Clear(); + } + + public void RefreshRankList() + { + bool flag = !base.IsVisible(); + if (!flag) + { + this.rankItemDict.Clear(); + XFriendsDocument specificDocument = XDocuments.GetSpecificDocument(XFriendsDocument.uuID); + bool flag2 = specificDocument.PlatFriendsRankList != null; + if (flag2) + { + XSingleton.singleton.AddLog("FriendsRank RefreshRankList doc.PlatFriendsRankList != null", null, null, null, null, null, XDebugColor.XDebug_None); + this.m_WrapContent.SetContentCount(specificDocument.PlatFriendsRankList.Count, false); + } + bool flag3 = specificDocument.SelfPlatRankInfo != null; + if (flag3) + { + XSingleton.singleton.AddLog("FriendsRank RefreshRankList doc.SelfPlatRankInfo != null", null, null, null, null, null, XDebugColor.XDebug_None); + this.SetMyRankInfo(specificDocument.SelfPlatRankInfo); + } + this.m_MyRank.gameObject.SetActive(specificDocument.SelfPlatRankInfo != null); + this.m_NoFriend.gameObject.SetActive(specificDocument.PlatFriendsRankList == null || specificDocument.PlatFriendsRankList.Count == 0); + this.m_ScrollView.ResetPosition(); + } + } + + private string SimplifyString(string s) + { + s = this.RemoveEmoji(s); + int num = 8; + bool flag = s.Length > num; + string result; + if (flag) + { + int num2 = s.Length - num; + string text = s.Substring(0, num / 2); + text = XSingleton.singleton.StringCombine(text, "...", s.Substring(num / 2 + num2)); + result = text; + } + else + { + result = s; + } + return result; + } + + private string RemoveEmoji(string s) + { + char[] array = s.ToCharArray(); + List list = new List(); + int i = 0; + while (i < array.Length - 1) + { + char c = array[i]; + int num = (int)c; + bool flag = num == 55356; + if (flag) + { + char c2 = array[i + 1]; + i += 2; + } + else + { + bool flag2 = num == 55357; + if (flag2) + { + char c2 = array[i + 1]; + i += 2; + } + else + { + list.Add(array[i]); + i++; + } + } + } + bool flag3 = i == array.Length - 1; + if (flag3) + { + list.Add(array[i]); + } + return new string(list.ToArray()); + } + + private void SetBaseRankInfo(Transform item, PlatFriendRankInfo2Client rankInfo, int index) + { + bool flag = rankInfo == null; + if (!flag) + { + this.SetRank(item.gameObject, rankInfo.rank - 1u); + IXUILabel ixuilabel = item.Find("Name").GetComponent("XUILabel") as IXUILabel; + ixuilabel.SetText(this.SimplifyString(rankInfo.platfriendBaseInfo.nickname)); + IXUILabel ixuilabel2 = item.Find("Level").GetComponent("XUILabel") as IXUILabel; + ixuilabel2.SetText(string.Format("Lv.{0}", rankInfo.level)); + IXUILabel ixuilabel3 = item.Find("Value").GetComponent("XUILabel") as IXUILabel; + ixuilabel3.SetText(rankInfo.maxAbility.ToString()); + IXUILabel ixuilabel4 = item.Find("vip").GetComponent("XUILabel") as IXUILabel; + ixuilabel4.SetText(rankInfo.vipLevel.ToString()); + ixuilabel4.SetVisible(false); + IXUISprite ixuisprite = item.Find("headboard").GetComponent("XUISprite") as IXUISprite; + ixuisprite.SetSprite(XSingleton.singleton.GetProfHeadIcon2(rankInfo.profession)); + IXUISprite spr = item.Find("headboard/AvatarFrame").GetComponent("XUISprite") as IXUISprite; + XSingleton.singleton.ParseHeadIcon((rankInfo.pre == null) ? new List() : rankInfo.pre.setid, spr); + IXUITexture ixuitexture = item.Find("platHead").GetComponent("XUITexture") as IXUITexture; + string bigpic = rankInfo.platfriendBaseInfo.bigpic; + XSingleton.singleton.Load((bigpic != "") ? bigpic : string.Empty, ixuitexture, DlgBase.singleton.uiBehaviour); + IXUISprite ixuisprite2 = item.Find("onling").GetComponent("XUISprite") as IXUISprite; + string sprite = rankInfo.isOnline ? "l_online_01" : "l_online_02"; + ixuisprite2.SetSprite(sprite); + this._WrapTextureList[item] = ixuitexture; + } + } + + private void SetMyRankInfo(PlatFriendRankInfo2Client rankInfo) + { + this.SetBaseRankInfo(this.m_MyRank, rankInfo, 99999); + GameObject gameObject = this.m_MyRank.Find("OutOfRange").gameObject; + gameObject.SetActive(rankInfo.rank == XFlowerRankDocument.INVALID_RANK); + GameObject gameObject2 = this.m_MyRank.Find("platHead/QQVIP").gameObject; + GameObject gameObject3 = this.m_MyRank.Find("platHead/QQSVIP").gameObject; + XPlatformAbilityDocument specificDocument = XDocuments.GetSpecificDocument(XPlatformAbilityDocument.uuID); + bool flag = specificDocument.QQVipInfo == null; + if (flag) + { + gameObject2.SetActive(false); + gameObject3.SetActive(false); + } + else + { + gameObject3.SetActive(specificDocument.QQVipInfo.is_svip); + gameObject2.SetActive(!specificDocument.QQVipInfo.is_svip && specificDocument.QQVipInfo.is_vip); + } + IXUISprite ixuisprite = this.m_MyRank.Find("wxLaunch").GetComponent("XUISprite") as IXUISprite; + ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnClickWXGameCenterLaunchIcon)); + ixuisprite.SetVisible(XSingleton.singleton.GetLaunchTypeServerInfo() == StartUpType.StartUp_WX && XSingleton.singleton.Channel == XAuthorizationChannel.XAuthorization_WeChat); + IXUISprite ixuisprite2 = this.m_MyRank.Find("qqLaunch").GetComponent("XUISprite") as IXUISprite; + ixuisprite2.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnClickQQGameCenterLaunchIcon)); + ixuisprite2.SetVisible(XSingleton.singleton.GetLaunchTypeServerInfo() == StartUpType.StartUp_QQ && XSingleton.singleton.Channel == XAuthorizationChannel.XAuthorization_QQ); + } + + private void _RankWrapListUpdated(Transform item, int index) + { + XFriendsDocument specificDocument = XDocuments.GetSpecificDocument(XFriendsDocument.uuID); + bool flag = index >= specificDocument.PlatFriendsRankList.Count; + if (!flag) + { + PlatFriendRankInfo2Client platFriendRankInfo2Client = specificDocument.PlatFriendsRankList[index]; + bool flag2 = platFriendRankInfo2Client == null; + if (!flag2) + { + this.rankItemDict[item] = platFriendRankInfo2Client.platfriendBaseInfo.openid; + this.SetBaseRankInfo(item, platFriendRankInfo2Client, index); + IXUIButton ixuibutton = item.Find("BtnSend").GetComponent("XUIButton") as IXUIButton; + IXUILabel ixuilabel = item.Find("BtnSend/t").GetComponent("XUILabel") as IXUILabel; + ixuibutton.ID = (ulong)((long)index); + ixuibutton.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnSendBtnClicked)); + ixuibutton.SetEnable(!platFriendRankInfo2Client.hasGiveGift, false); + ixuilabel.SetEnabled(!platFriendRankInfo2Client.hasGiveGift); + ixuibutton.SetVisible(platFriendRankInfo2Client.platfriendBaseInfo.openid != XSingleton.singleton.OpenID); + IXUIButton ixuibutton2 = item.Find("BtnPk").GetComponent("XUIButton") as IXUIButton; + ixuibutton2.ID = (ulong)((long)index); + ixuibutton2.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnSendPkBtnClicked)); + bool flag3 = XSingleton.singleton.IsSystemOpened(XSysDefine.XSys_Friends_Pk); + if (flag3) + { + ixuibutton2.SetVisible(platFriendRankInfo2Client.platfriendBaseInfo.openid != XSingleton.singleton.OpenID); + } + else + { + ixuibutton2.SetVisible(false); + } + GameObject gameObject = item.Find("platHead/QQVIP").gameObject; + GameObject gameObject2 = item.Find("platHead/QQSVIP").gameObject; + QQVipType qqvipType; + bool flag4 = specificDocument.FriendsVipInfo.TryGetValue(platFriendRankInfo2Client.platfriendBaseInfo.openid, out qqvipType); + if (flag4) + { + gameObject2.SetActive(qqvipType == QQVipType.SVip); + gameObject.SetActive(qqvipType == QQVipType.Vip); + } + else + { + gameObject2.SetActive(false); + gameObject.SetActive(false); + } + IXUISprite ixuisprite = item.Find("wxLaunch").GetComponent("XUISprite") as IXUISprite; + ixuisprite.SetVisible(platFriendRankInfo2Client.startType == 3); + ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnClickWXGameCenterLaunchIcon)); + IXUISprite ixuisprite2 = item.Find("qqLaunch").GetComponent("XUISprite") as IXUISprite; + ixuisprite2.SetVisible(platFriendRankInfo2Client.startType == 2); + ixuisprite2.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnClickQQGameCenterLaunchIcon)); + } + } + } + + private void OnClickWXGameCenterLaunchIcon(IXUISprite btn) + { + XSingleton.singleton.ShowSystemTip(XSingleton.singleton.GetString("FriendRankWXGameCenterTip"), "fece00"); + } + + private void OnClickQQGameCenterLaunchIcon(IXUISprite btn) + { + XSingleton.singleton.ShowSystemTip(XSingleton.singleton.GetString("FriendRankQQGameCenterTip"), "fece00"); + } + + private void SetRank(GameObject go, uint rankIndex) + { + IXUILabel ixuilabel = go.transform.Find("Rank").GetComponent("XUILabel") as IXUILabel; + IXUISprite ixuisprite = go.transform.Find("RankImage").GetComponent("XUISprite") as IXUISprite; + bool flag = rankIndex == XRankDocument.INVALID_RANK; + if (flag) + { + ixuilabel.SetVisible(false); + ixuisprite.SetVisible(false); + } + else + { + string[] array = new string[] + { + "N1", + "N2", + "N3" + }; + bool flag2 = rankIndex < 3u; + if (flag2) + { + ixuisprite.SetSprite(array[(int)rankIndex]); + ixuisprite.SetVisible(true); + ixuilabel.SetVisible(false); + } + else + { + ixuisprite.SetVisible(false); + ixuilabel.SetText("No." + (rankIndex + 1u)); + ixuilabel.SetVisible(true); + } + } + } + + private bool OnSendBtnClicked(IXUIButton btn) + { + int num = (int)btn.ID; + XFriendsDocument specificDocument = XDocuments.GetSpecificDocument(XFriendsDocument.uuID); + bool flag = num >= specificDocument.PlatFriendsRankList.Count; + bool result; + if (flag) + { + result = false; + } + else + { + PlatFriendRankInfo2Client platFriendRankInfo2Client = specificDocument.PlatFriendsRankList[num]; + bool flag2 = platFriendRankInfo2Client == null; + if (flag2) + { + result = false; + } + else + { + specificDocument.SendGift2PlatFriend(platFriendRankInfo2Client.platfriendBaseInfo.openid); + result = true; + } + } + return result; + } + + private bool OnSendPkBtnClicked(IXUIButton btn) + { + int num = (int)btn.ID; + XFriendsDocument specificDocument = XDocuments.GetSpecificDocument(XFriendsDocument.uuID); + bool flag = num >= specificDocument.PlatFriendsRankList.Count; + bool result; + if (flag) + { + result = false; + } + else + { + PlatFriendRankInfo2Client platFriendRankInfo2Client = specificDocument.PlatFriendsRankList[num]; + bool flag2 = platFriendRankInfo2Client == null; + if (flag2) + { + result = false; + } + else + { + specificDocument.SendPk2PlatFriend(platFriendRankInfo2Client.platfriendBaseInfo.openid); + result = true; + } + } + return result; + } + + private void ShareToQQFriend(string openID) + { + Dictionary dictionary = new Dictionary(); + dictionary["act"] = 1; + dictionary["openId"] = openID; + dictionary["title"] = XSingleton.singleton.GetValue("PlatFriendShareTitle"); + dictionary["summary"] = XSingleton.singleton.GetValue("PlatFriendShareSummary"); + dictionary["targetUrl"] = XSingleton.singleton.GetValue("PlatFriendShareTargetUrlQQ"); + dictionary["imageUrl"] = XSingleton.singleton.GetValue("PlatFriendShareImageUrlQQ"); + dictionary["previewText"] = XSingleton.singleton.GetValue("PlatFriendSharePreviewTextQQ"); + dictionary["gameTag"] = "MSG_HEART_SEND"; + string text = Json.Serialize(dictionary); + XSingleton.singleton.AddLog("ShareToQQFriend paramStr = " + text, null, null, null, null, null, XDebugColor.XDebug_None); + XSingleton.singleton.XPlatform.SendExtDara("share_send_to_friend_qq", text); + } + + private void ShareToWXFriend(string openID) + { + Dictionary dictionary = new Dictionary(); + dictionary["openId"] = openID; + dictionary["title"] = XSingleton.singleton.GetValue("PlatFriendShareTitle"); + dictionary["description"] = XSingleton.singleton.GetValue("PlatFriendShareSummary"); + dictionary["thumbMediaId"] = ""; + dictionary["mediaTagName"] = "MSG_HEART_SEND"; + dictionary["messageExt"] = "ShareWithWeixin"; + string text = Json.Serialize(dictionary); + XSingleton.singleton.AddLog("ShareToWXFriend paramStr = " + text, null, null, null, null, null, XDebugColor.XDebug_None); + XSingleton.singleton.XPlatform.SendExtDara("share_send_to_friend_wx", text); + } + + public void OnRefreshSendGiftState(PlatFriendRankInfo2Client info) + { + bool flag = !base.IsVisible(); + if (!flag) + { + foreach (KeyValuePair keyValuePair in this.rankItemDict) + { + bool flag2 = keyValuePair.Value == info.platfriendBaseInfo.openid; + if (flag2) + { + IXUIButton ixuibutton = keyValuePair.Key.Find("BtnSend").GetComponent("XUIButton") as IXUIButton; + ixuibutton.SetEnable(!info.hasGiveGift, false); + break; + } + } + } + } + + public void NoticeFriend(string openID) + { + bool flag = !base.IsVisible(); + if (!flag) + { + this.m_noticeFriendOpenID = openID; + string @string = XStringDefineProxy.GetString("FRIEND_SEND_PLAT_FRIEND_TIP"); + string string2 = XStringDefineProxy.GetString("FRIEND_SEND_PLAT_FRIEND_OK"); + string string3 = XStringDefineProxy.GetString("FRIEND_SEND_PLAT_FRIEND_CANCEL"); + DlgBase.singleton.SetVisible(true, true); + DlgBase.singleton.SetSingleButtonMode(false); + DlgBase.singleton.SetLabelsWithSymbols(@string, string2, string3); + DlgBase.singleton.SetModalCallback(new ButtonClickEventHandler(this.CheckNoticeFriend), null); + } + } + + private bool CheckNoticeFriend(IXUIButton btn) + { + DlgBase.singleton.SetVisible(false, true); + XAuthorizationChannel channel = XSingleton.singleton.Channel; + string @string = XStringDefineProxy.GetString("FRIEND_SEND_PLAT_FRIEND_TIP"); + bool flag = channel == XAuthorizationChannel.XAuthorization_QQ; + if (flag) + { + @string = XStringDefineProxy.GetString("FRIEND_SEND_PLAT_FRIEND_TIP_QQ"); + } + else + { + bool flag2 = channel == XAuthorizationChannel.XAuthorization_WeChat; + if (flag2) + { + @string = XStringDefineProxy.GetString("FRIEND_SEND_PLAT_FRIEND_TIP_WX"); + } + } + string string2 = XStringDefineProxy.GetString("FRIEND_SEND_PLAT_FRIEND_OK2"); + string string3 = XStringDefineProxy.GetString("FRIEND_SEND_PLAT_FRIEND_CANCEL2"); + DlgBase.singleton.SetVisible(true, true); + DlgBase.singleton.SetSingleButtonMode(false); + DlgBase.singleton.SetLabelsWithSymbols(@string, string2, string3); + DlgBase.singleton.SetModalCallback(new ButtonClickEventHandler(this.OnEnsureNoticeFriend), null); + return true; + } + + private bool OnEnsureNoticeFriend(IXUIButton btn) + { + DlgBase.singleton.SetVisible(false, true); + bool flag = XSingleton.singleton.Channel == XAuthorizationChannel.XAuthorization_QQ; + if (flag) + { + this.ShareToQQFriend(this.m_noticeFriendOpenID); + } + else + { + bool flag2 = XSingleton.singleton.Channel == XAuthorizationChannel.XAuthorization_WeChat; + if (flag2) + { + this.ShareToWXFriend(this.m_noticeFriendOpenID); + } + } + return true; + } + } +} -- cgit v1.1-26-g67d0