From 1f7e2377002c93524fad578ec4a26f2ca1ed8fef Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期一, 02 二月 2026 14:38:56 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts

---
 Main/System/Guild/GuildManager.cs               |   61 ++++++++++
 Main/System/BillboardRank/GuildRankCell.cs.meta |   11 +
 Main/System/BillboardRank/GuildRankCell.cs      |   64 ++++++++++
 Main/System/BillboardRank/GuildTop3Cell.cs.meta |   11 +
 Main/System/BillboardRank/GuildRankWin.cs       |   85 ++++++++++++++
 Main/System/BillboardRank/GuildRankWin.cs.meta  |   11 +
 Main/System/BillboardRank/GuildTop3Cell.cs      |   61 ++++++++++
 Main/System/Guild/GuildBaseWin.cs               |    4 
 8 files changed, 307 insertions(+), 1 deletions(-)

diff --git a/Main/System/BillboardRank/GuildRankCell.cs b/Main/System/BillboardRank/GuildRankCell.cs
new file mode 100644
index 0000000..e88568d
--- /dev/null
+++ b/Main/System/BillboardRank/GuildRankCell.cs
@@ -0,0 +1,64 @@
+锘�//--------------------------------------------------------
+//    [Author]:           鐜╀釜娓告垙
+//    [  Date ]:           Wednesday, September 26, 2018
+//--------------------------------------------------------
+using UnityEngine;
+using UnityEngine.UI;
+
+//鐜╁閫氱敤鎺掑悕
+public class GuildRankCell : MonoBehaviour
+{
+    [SerializeField] Transform hasGuild;
+    [SerializeField] Transform noGuild;
+    [SerializeField] GuildEmblemCell emblemCell;
+    [SerializeField] Text rankText;
+    [SerializeField] Text rankValueText;    //鎺掑悕姣旇緝鍐呭
+    [SerializeField] Text nameText;
+    [SerializeField] Text lvText;
+    [SerializeField] Text countText;
+    [SerializeField] Button queryGuildBtn;
+    GuildManager manager { get { return GuildManager.Instance; } }
+    public void Display(int rank)
+    {
+        FairyData rankData = manager.GetFairyDataByRank(rank);
+        int viewPlayerId = (int)PlayerDatas.Instance.baseData.PlayerID;
+        hasGuild.SetActive(rankData != null);
+        noGuild.SetActive(rankData == null);
+        if (rankData != null)
+        {
+            FamilyConfig familyConfig = FamilyConfig.Get(rankData.FamilyLV);
+            nameText.text = rankData.FamilyName;
+            lvText.text = StringUtility.Concat(Language.Get("L1094"), rankData.FamilyLV.ToString());
+            countText.text = Language.Get("BoneField09", rankData.MemberCount, familyConfig == null ? 0 : familyConfig.MemberMax);
+            rankValueText.text = UIHelper.ReplaceLargeArtNum(rankData.totalFightPower);
+            emblemCell.Display(rankData.EmblemID, rankData.EmblemWord, 0.45f);
+        }
+
+        rankText.text = rank.ToString();
+        queryGuildBtn.AddListener(() =>
+        {
+            if (rankData == null)
+                return;
+            int familyID = rankData.FamilyID;
+            //鑷繁鐨勫叕浼�
+            if (PlayerDatas.Instance.fairyData.HasFairy && PlayerDatas.Instance.fairyData.fairy.FamilyID == familyID)
+            {
+                SysNotifyMgr.Instance.ShowTip("GuildTip01");
+                return;
+            }
+
+            if (!GuildManager.Instance.guildsDict.ContainsKey(familyID))
+                return;
+
+            if (!UIManager.Instance.IsOpened<GuildPreviewWin>())
+            {
+                UIManager.Instance.OpenWindow<GuildPreviewWin>(familyID);
+            }
+        });
+    }
+}
+
+
+
+
+
diff --git a/Main/System/BillboardRank/GuildRankCell.cs.meta b/Main/System/BillboardRank/GuildRankCell.cs.meta
new file mode 100644
index 0000000..db53481
--- /dev/null
+++ b/Main/System/BillboardRank/GuildRankCell.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: dd76fcacc06c4044ca8638c2fe84662b
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/BillboardRank/GuildRankWin.cs b/Main/System/BillboardRank/GuildRankWin.cs
new file mode 100644
index 0000000..b70acbd
--- /dev/null
+++ b/Main/System/BillboardRank/GuildRankWin.cs
@@ -0,0 +1,85 @@
+锘縰sing UnityEngine;
+
+public class GuildRankWin : UIBase
+{
+    [SerializeField] GuildTop3Cell[] guildTop3Cells;
+    [SerializeField] ScrollerController scroller;
+    [SerializeField] TextEx rankText;
+    [SerializeField] TextEx rankValueText;
+
+    GuildManager manager { get { return GuildManager.Instance; } }
+    protected override void OnPreOpen()
+    {
+        manager.OnRefreshFairyList += OnRefreshFairyList;
+        scroller.OnRefreshCell += OnRefreshCell;
+
+        manager.SendFindGuild(string.Empty, 0, manager.pageCnt);
+        manager.ResetQueryParam();
+        Display();
+    }
+
+    protected override void OnPreClose()
+    {
+        manager.OnRefreshFairyList -= OnRefreshFairyList;
+        scroller.OnRefreshCell -= OnRefreshCell;
+    }
+
+    public void Display()
+    {
+        ShowTop3();
+        CreateScroller();
+        ShowMyRank();
+    }
+
+    void CreateScroller()
+    {
+        scroller.Refresh();
+        var cnt = manager.rankShowMaxCnt;
+        for (int i = 3; i < cnt; i++)
+        {
+            scroller.AddCell(ScrollerDataType.Header, i);
+        }
+        scroller.Restart();
+    }
+
+    void OnRefreshCell(ScrollerDataType type, CellView cell)
+    {
+        var _cell = cell.GetComponent<GuildRankCell>();
+        _cell.Display(cell.index + 1);
+        manager.ListenRankPage(cell.index);
+    }
+
+
+    void ShowTop3()
+    {
+        for (int i = 0; i < guildTop3Cells.Length; i++)
+        {
+            guildTop3Cells[i].Display(i + 1);
+        }
+    }
+
+    void ShowMyRank()
+    {
+        var mydata = manager.GetFairyData(PlayerDatas.Instance.fairyData.fairy.FamilyID);
+        if (mydata == null)
+        {
+            rankValueText.SetActive(false);
+            rankText.text = Language.Get("GuildRank04", Language.Get("L1045"));
+            return;
+        }
+        rankValueText.SetActive(true);
+        rankText.text = Language.Get("GuildRank04", mydata.Rank);
+        rankValueText.text = UIHelper.ReplaceLargeArtNum(mydata.totalFightPower);
+    }
+
+    void OnRefreshFairyList()
+    {
+        ShowTop3();
+        scroller.m_Scorller.RefreshActiveCellViews();
+        ShowMyRank();
+    }
+}
+
+
+
+
diff --git a/Main/System/BillboardRank/GuildRankWin.cs.meta b/Main/System/BillboardRank/GuildRankWin.cs.meta
new file mode 100644
index 0000000..5be58cd
--- /dev/null
+++ b/Main/System/BillboardRank/GuildRankWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 11ab1a04c61e9cb4090de376afd339fe
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/BillboardRank/GuildTop3Cell.cs b/Main/System/BillboardRank/GuildTop3Cell.cs
new file mode 100644
index 0000000..353809c
--- /dev/null
+++ b/Main/System/BillboardRank/GuildTop3Cell.cs
@@ -0,0 +1,61 @@
+锘�//--------------------------------------------------------
+//    [Author]:           鐜╀釜娓告垙
+//    [  Date ]:           Wednesday, September 26, 2018
+//--------------------------------------------------------
+using UnityEngine;
+using UnityEngine.UI;
+
+//鐜╁閫氱敤鐨勫墠3鎺掑悕
+public class GuildTop3Cell : MonoBehaviour
+{
+    [SerializeField] Transform hasGuild;
+    [SerializeField] Transform noGuild;
+    [SerializeField] GuildEmblemCell emblemCell;
+    [SerializeField] Text nameText;
+    [SerializeField] Text countText;
+    [SerializeField] Text fightpowerText;
+    [SerializeField] Button queryGuildBtn;
+    GuildManager manager { get { return GuildManager.Instance; } }
+    public void Display(int rank)
+    {
+        var rankData = manager.GetFairyDataByRank(rank);
+        noGuild.SetActive(rankData == null);
+        hasGuild.SetActive(rankData != null);
+
+        if (rankData != null)
+        {
+            FamilyConfig familyConfig = FamilyConfig.Get(rankData.FamilyLV);
+            nameText.text = rankData.FamilyName;
+            countText.text = Language.Get("BoneField09", rankData.MemberCount, familyConfig == null ? 0 : familyConfig.MemberMax);
+            fightpowerText.text = UIHelper.ReplaceLargeArtNum(rankData.totalFightPower);
+            emblemCell.Display(rankData.EmblemID, rankData.EmblemWord, 0.7f);
+        }
+
+        queryGuildBtn.SetListener(() =>
+        {
+            if (rankData == null) return;
+            int familyID = rankData.FamilyID;
+            //鑷繁鐨勫叕浼�
+            if (PlayerDatas.Instance.fairyData.HasFairy && PlayerDatas.Instance.fairyData.fairy.FamilyID == familyID)
+            {
+                SysNotifyMgr.Instance.ShowTip("GuildTip01");
+                return;
+            }
+
+            if (!GuildManager.Instance.guildsDict.ContainsKey(familyID))
+                return;
+
+            if (!UIManager.Instance.IsOpened<GuildPreviewWin>())
+            {
+                UIManager.Instance.OpenWindow<GuildPreviewWin>(familyID);
+            }
+        });
+    }
+}
+
+
+
+
+
+
+
diff --git a/Main/System/BillboardRank/GuildTop3Cell.cs.meta b/Main/System/BillboardRank/GuildTop3Cell.cs.meta
new file mode 100644
index 0000000..5376bf5
--- /dev/null
+++ b/Main/System/BillboardRank/GuildTop3Cell.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 74c09d94e4d372042bdb03ee92b93652
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/Guild/GuildBaseWin.cs b/Main/System/Guild/GuildBaseWin.cs
index 82e55e7..1c88162 100644
--- a/Main/System/Guild/GuildBaseWin.cs
+++ b/Main/System/Guild/GuildBaseWin.cs
@@ -57,6 +57,10 @@
             StoreModel.Instance.selectStoreFuncType = StoreFunc.Guild;
             UIManager.Instance.OpenWindow<StoreBaseWin>();
         });
+        rankBtn.AddListener(() =>
+        {
+            UIManager.Instance.OpenWindow<GuildRankWin>();
+        });
         InitHawker();
         talkBtn.AddListener(OnClickTalkButton);
         talkBtn1.AddListener(OnClickTalkButton);
diff --git a/Main/System/Guild/GuildManager.cs b/Main/System/Guild/GuildManager.cs
index c3141b7..86c096c 100644
--- a/Main/System/Guild/GuildManager.cs
+++ b/Main/System/Guild/GuildManager.cs
@@ -222,6 +222,12 @@
 
         config = FuncConfigConfig.Get("FamilyNote");
         familyRecordMaxCount = int.Parse(config.Numerical1);
+
+
+        config = FuncConfigConfig.Get("FamilyBillboardSet");
+        rankShowMaxCnt = int.Parse(config.Numerical1);
+        pageCnt = int.Parse(config.Numerical2);
+        queryPointNum = int.Parse(config.Numerical3);
     }
 
 
@@ -529,6 +535,60 @@
     public List<int> pageIndexList = new List<int>();  //姝e父鏄寜椤垫煡璇紝椤哄簭娣诲姞鍗冲彲
     public int curPageIndex;
     public int totalPageCount;
+
+    public int lastPage = -1;
+    public int pageCnt; //姣忛〉鏌ヨ鏉℃暟
+    int queryPointNum;  //鏌ヨ鐐�
+    public int rankShowMaxCnt;
+
+    public FairyData GetFairyDataByRank(int rank)
+    {
+        if (rank < 1)
+            return null;
+        int index = rank - 1;
+        FairyData fairyData = GetFairyDataByIndex(index);
+        return fairyData;
+    }
+
+    public FairyData GetFairyDataByIndex(int index)
+    {
+        if (pageIndexList.IsNullOrEmpty() || index < 0 || index >= pageIndexList.Count)
+            return null;
+        int fairyID = pageIndexList[index];
+        FairyData fairyData = GetFairyData(fairyID);
+        return fairyData;
+    }
+
+    public FairyData GetFairyData(int fairyID)
+    {
+        return guildsDict.TryGetValue(fairyID, out var data) ? data : null;
+    }
+
+    public void ResetQueryParam()
+    {
+        pageCnt = 20;
+        lastPage = -1;
+        queryPointNum = 12;
+    }
+
+    public void ListenRankPage(int index)
+    {
+        int page = index / pageCnt;
+        if (index > page * pageCnt + queryPointNum)
+        {
+            if (lastPage >= page)
+                return;
+            lastPage = page;
+
+            if (index >= rankShowMaxCnt)
+            {
+                //瓒呰繃鏈嶅姟鍣ㄥ凡涓婃鐨勬�绘暟閲忥紝姣斿鎬绘鍗曟槸100鍚嶏紝褰撳墠鍙湁8鍚嶇帺瀹朵笂姒滐紝寰�涓嬫粴鍔ㄥ氨涓嶅啀鏌ヨ
+                return;
+            }
+            //Debug.LogFormat("鍒嗛〉鏌ヨ锛氳姹傜 {0} 椤� (褰撳墠index:{1})", page + 1, index);
+            SendFindGuild(string.Empty, page + 1, pageCnt);
+        }
+    }
 
     //鏌ユ壘鍏細鍒楄〃
     public void OnRefreshGuildViewList(HA523_tagMCFamilyViewList vNetData)
@@ -971,7 +1031,6 @@
     }
 
     #endregion
-
 
     #region 绾㈢偣
 

--
Gitblit v1.8.0