From 5a4e34c8a85737c0fa5b5775122da31155cbaef3 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期一, 09 二月 2026 14:46:01 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts
---
Main/System/Guild/PlayerFairyData.cs | 104 +++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 86 insertions(+), 18 deletions(-)
diff --git a/Main/System/Guild/PlayerFairyData.cs b/Main/System/Guild/PlayerFairyData.cs
index d058ee8..48909d9 100644
--- a/Main/System/Guild/PlayerFairyData.cs
+++ b/Main/System/Guild/PlayerFairyData.cs
@@ -2,6 +2,7 @@
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
+using System.Linq;
/** 鐜╁浠欑洘鐩稿叧淇℃伅缂撳瓨鏁版嵁 */
@@ -23,15 +24,16 @@
public FairyMember mine = null;
public event Action OnRefreshFairyInfo;
public event Action OnRefreshFairyMine; //鐜╁鍦ㄥ叕浼氶噷鐨勬暟鎹�
- private Dictionary<int, FairyMember> memberDic = new Dictionary<int, FairyMember>();
+ Dictionary<int, FairyMember> memberDic = new Dictionary<int, FairyMember>();
+ public List<int> memberIDList = new List<int>();
// 0-鎴愬憳锛�1-绮捐嫳锛�2-鍓洘涓伙紝3-鐩熶富
public int leaderID;
- // // 绮捐嫳
- // public List<int> elitePlayerIDList = new List<int>();
+ public string leaderName;
// // 鍓洘涓�
- // public List<int> deputyLeaderPlayerIDList = new List<int>();
+ public List<int> deputyLeaderPlayerIDList = new List<int>();
+ //宸紓鏇存柊 闇�澧炲垹鏀� memberDic memberIDList deputyLeaderPlayerIDList
public void OnRefreshGuildInfo(HA520_tagMCRoleFamilyInfo vNetData)
{
if (fairy == null)
@@ -50,11 +52,10 @@
fairy.totalFightPower = vNetData.FightPowerEx * Constants.ExpPointValue + vNetData.FightPower;
fairy.Broadcast = vNetData.Broadcast;
fairy.LeaderID = (int)vNetData.LeaderID;
- fairy.MemberCount = vNetData.MemberCount;
- mine = null;
+ fairy.lastChangeNameTick = (int)vNetData.Extra1;
- memberDic.Clear();
+
for (int i = 0; i < vNetData.MemberCount; i++)
{
FairyMember member = new FairyMember();
@@ -85,23 +86,60 @@
OnRefreshFairyMine?.Invoke();
}
+
+
// 0-鎴愬憳锛�1-绮捐嫳锛�2-鍓洘涓伙紝3-鐩熶富
- // if (member.FmLV == 1)
- // {
- // eliteList.Add(member);
- // }
- // else if (member.FamilyLV == 2)
- // {
- // deputyLeaderList.Add(member);
- // }
+ if (deputyLeaderPlayerIDList.Contains(member.PlayerID) && member.FmLV != 2)
+ {
+ deputyLeaderPlayerIDList.Remove(member.PlayerID);
+ }
+ else if (member.FmLV == 2 && !deputyLeaderPlayerIDList.Contains(member.PlayerID))
+ {
+ // 瀵瑰簲鐨勫彉鏇� 鍜� 閫�鍑洪渶鍚屾淇敼
+ deputyLeaderPlayerIDList.Add(member.PlayerID);
+ }
+
+
if (member.FmLV == 3)
{
- leaderID = (int)member.PlayerID;
+ leaderID = member.PlayerID;
+ leaderName = member.Name;
+
}
}
+ if (mine.FmLV == 3 && mine.PlayerID != leaderID)
+ {
+ mine.FmLV = 0;
+ }
+ RefreshMemberIDList();
+
if (OnRefreshFairyInfo != null) OnRefreshFairyInfo();
+ }
+
+
+ public void DeleteMember(HA524_tagSCFamilyMemDel netPack)
+ {
+ if (memberDic.ContainsKey((int)netPack.PlayerID))
+ {
+ memberDic.Remove((int)netPack.PlayerID);
+ RefreshMemberIDList();
+ }
+ if (deputyLeaderPlayerIDList.Contains((int)netPack.PlayerID))
+ {
+ deputyLeaderPlayerIDList.Remove((int)netPack.PlayerID);
+ }
+
+ OnRefreshFairyInfo?.Invoke();
+ }
+
+ void RefreshMemberIDList()
+ {
+ memberIDList.Clear();
+ memberIDList.AddRange(memberDic.Keys);
+ memberIDList.Sort(SortMember);
+ fairy.MemberCount = memberIDList.Count;
}
public FairyMember GetMember(int playerid)
@@ -109,6 +147,11 @@
FairyMember member = null;
memberDic.TryGetValue(playerid, out member);
return member;
+ }
+
+ public List<int> GetMemberIDList()
+ {
+ return memberDic.Keys.ToList();
}
@@ -128,7 +171,30 @@
fairy = null;
mine = null;
memberDic.Clear();
+ memberIDList.Clear();
leaderID = 0;
+ leaderName = string.Empty;
+ }
+
+ int SortMember(int id1, int id2)
+ {
+ var memberA = memberDic[id1];
+ var memberB = memberDic[id2];
+ if (memberA.FmLV != memberB.FmLV)
+ {
+ return memberB.FmLV.CompareTo(memberA.FmLV);
+ }
+
+ if (memberA.FightPower != memberB.FightPower)
+ {
+ return memberB.FightPower.CompareTo(memberA.FightPower);
+ }
+
+ if (memberA.JoinTime != memberB.JoinTime)
+ {
+ return memberA.JoinTime.CompareTo(memberB.JoinTime);
+ }
+ return memberA.PlayerID.CompareTo(memberB.PlayerID);
}
}
@@ -150,7 +216,9 @@
public long totalFightPower;
public string Broadcast;
public int LeaderID; //鏃忛暱鐜╁ID
+ public int LeaderServerID; //鏃忛暱鏈嶅姟鍣↖D
public int MemberCount;
+ public int lastChangeNameTick;
//鏌ユ壘澧炲姞鐨勫瓧娈�
public string LeaderName;
@@ -181,7 +249,7 @@
public class FairyApply
{
public int PlayerID;
- public string Name;
+ public string Name;
public int ReqTime; //鐢宠鏃堕棿鎴�
public int LV; //绛夌骇
public int Job; //鑱屼笟
@@ -189,7 +257,7 @@
public int Face; //鍩烘湰鑴稿瀷
public int FacePic; //澶村儚妗�
public int TitleID; //绉板彿
- public long FightPower;
+ public long FightPower;
public int ServerID; //鎵�灞炲尯鏈岻D
public int IsOnLine; //鏄惁鍦ㄧ嚎
}
--
Gitblit v1.8.0