From b97ca7fc69d2cddeaf1af2d4e59ba4b413034784 Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期四, 12 三月 2026 16:51:46 +0800
Subject: [PATCH] 59 邮件系统-客户端 邮件标题支持参数匹配
---
Main/System/Guild/GuildManager.cs | 285 ++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 221 insertions(+), 64 deletions(-)
diff --git a/Main/System/Guild/GuildManager.cs b/Main/System/Guild/GuildManager.cs
index 52201d3..c37afb5 100644
--- a/Main/System/Guild/GuildManager.cs
+++ b/Main/System/Guild/GuildManager.cs
@@ -8,10 +8,9 @@
using UnityEngine;
-public class GuildManager : GameSystemManager<GuildManager>
+public partial class GuildManager : GameSystemManager<GuildManager>
{
// 瀹舵棌鑷畾涔夎褰曠被鍨�
- public const int CustomyActionType = 0; //閫氱敤
public const int MemberChangeActionType = 12; //鍏細鍙樻洿璁板綍
public const int FamilyActionsType = 15; // 鍏細璁板綍寰界珷绫诲瀷15
public const int ZBGFamilyActionType = 16; // 鐝嶅疂闃佽褰曠被鍨�
@@ -39,7 +38,7 @@
public byte[] donateCntList;
public event Action DonateCntListEvent;
- public event Action<bool> EnterOrQuitGuildEvent; //杩涘叆鎴栭��鍑哄叕浼氫簨浠�
+ public event Action<bool> EnterOrQuitGuildEvent; //true杩涘叆鎴杅alse閫�鍑哄叕浼氫簨浠�
public override void Init()
@@ -50,6 +49,7 @@
DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshEvent;
TimeMgr.Instance.OnHourEvent += UpdateZBGRedpoint;
+ PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFairyInfo;
}
public override void Release()
{
@@ -58,25 +58,34 @@
DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= OnPlayerLoginOk;
PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshEvent;
TimeMgr.Instance.OnHourEvent -= UpdateZBGRedpoint;
+ PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= OnRefreshFairyInfo;
}
+ private void OnRefreshFairyInfo()
+ {
+ UpdateRequestRedpoint();
+ UpdateDonateRedPoint();
+ }
void OnBeforePlayerDataInitialize()
{
+ zoneID = 0;
+ crossServerIDList.Clear();
ClearGuildData();
donateCntList = null;
}
void OnBeforePlayerDataInitializeEx()
{
- guildChanged = false;
isQueryZBGYet = false;
+ //澧為噺鐨勫舰寮�
+ PlayerDatas.Instance.fairyData.ClearData();
}
void OnPlayerLoginOk()
{
UpdateDonateRedPoint();
-
+ QueryZBGFamilyInfo();
}
void PlayerDataRefreshEvent(PlayerDataType type)
@@ -92,7 +101,6 @@
PlayerDatas.Instance.baseData.FamilyId = 0;
m_FairyRequesteds.Clear();
familyActions.Clear();
- guildChanged = false;
applyList.Clear();
PlayerDatas.Instance.fairyData.ClearData();
@@ -121,7 +129,7 @@
EnterOrQuitGuildEvent?.Invoke(false);
}
- //娉ㄦ剰涓婄嚎閫氱煡鍏細鏁版嵁鏃朵篃浼氳Е鍙�
+ //娉ㄦ剰涓婄嚎閫氱煡鍏細鏁版嵁鏃朵篃浼氳Е鍙�; 浣嗘柇绾块噸杩炰笉浼氳Е鍙�
public async UniTask AfterEnterGuild()
{
//杩欓噷杩樻病鏈夊叕浼氭暟鎹�, 鍚庣画鐨勫寘浼氭洿鏂板叕浼氭暟鎹�
@@ -165,7 +173,24 @@
//鐝嶅疂闃�(琛屽晢)
- public int zhenbaogeCutState = 0;
+ int m_ZhenbaogeCutState = 0;
+ public int zhenbaogeCutState
+ {
+ get
+ {
+ if (familyZBGActions.Count - 1 >= 50)
+ {
+ //鐮嶄环浜烘暟瓒呰繃涓婇檺鍚庡彲鐩存帴璐拱
+ m_ZhenbaogeCutState = 1;
+ }
+ return m_ZhenbaogeCutState;
+ }
+ set
+ {
+
+ m_ZhenbaogeCutState = value;
+ }
+ }
public int zhenbaogeBuyState = 0;
public bool needCheckCutCD = false;
public event Action UpdateZhenbaogeEvent;
@@ -180,7 +205,7 @@
public int zbgOrgPriceValue;
public int zbgChangFamilyCD;
public List<int> cutCntListForTalk = new List<int>();
-
+ public int familyRecordMaxCount;
void ParseConfig()
{
@@ -219,6 +244,14 @@
zbgOrgPriceValue = int.Parse(config.Numerical2);
zbgChangFamilyCD = int.Parse(config.Numerical3);
cutCntListForTalk = JsonMapper.ToObject<List<int>>(config.Numerical4);
+
+ config = FuncConfigConfig.Get("FamilyNote");
+ familyRecordMaxCount = int.Parse(config.Numerical1);
+
+
+ config = FuncConfigConfig.Get("FamilyBillboardSet");
+ pageCnt = int.Parse(config.Numerical1);
+ queryPointNum = int.Parse(config.Numerical2);
}
@@ -338,7 +371,7 @@
punishTime = quitGuildPunishTime[Math.Min(quitCount, quitGuildPunishTime.Length - 1)];
}
- return punishTime * 60 - (TimeUtility.AllSeconds - PlayerDatas.Instance.baseData.leaveFamilyTime);
+ return punishTime * 60 - (TimeUtility.GetCommServerTick(zoneID)- PlayerDatas.Instance.baseData.leaveFamilyTime);
}
@@ -446,9 +479,7 @@
#region 鍏細鑷畾涔夎褰�
public void UpdateFamilyAction(HA513_tagMCFamilyActionInfo _package)
{
- if (PlayerDatas.Instance.fairyData == null ||
- PlayerDatas.Instance.fairyData.fairy == null ||
- PlayerDatas.Instance.fairyData.fairy.FamilyID != _package.FamilyID)
+ if (PlayerDatas.Instance.baseData.FamilyId != _package.FamilyID)
{
return;
}
@@ -524,10 +555,70 @@
// 鏌ユ壘鐨勫叕浼欼D锛氬叕浼氭暟鎹�
public Dictionary<int, FairyData> guildsDict = new Dictionary<int, FairyData>();
+ public int myFairyRank;
// 鎸夋煡璇㈤〉瀛樺偍
public List<int> pageIndexList = new List<int>(); //姝e父鏄寜椤垫煡璇紝椤哄簭娣诲姞鍗冲彲
public int curPageIndex;
public int totalPageCount;
+
+ public int lastPage = -1;
+ public int pageCnt; //姣忛〉鏌ヨ鏉℃暟
+ int queryPointNum; //鏌ヨ鐐�
+
+ public bool isPowerSort
+ {
+ get
+ {
+ return LocalSave.GetBool($"GuildApplyList_IsPowerSort_{PlayerDatas.Instance.PlayerId}");
+ }
+ set
+ {
+ LocalSave.SetBool($"GuildApplyList_IsPowerSort_{PlayerDatas.Instance.PlayerId}", value);
+ }
+ }
+
+
+ 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;
+ SendFindGuild(string.Empty, page + 1, pageCnt);
+ }
+ }
//鏌ユ壘鍏細鍒楄〃
public void OnRefreshGuildViewList(HA523_tagMCFamilyViewList vNetData)
@@ -542,7 +633,7 @@
SetFairyViewData(data, guildInfo);
pageIndexList.Add((int)guildInfo.FamilyID);
}
-
+ myFairyRank = (int)vNetData.Rank; //0-娌℃湁鍏細鎴栨病鏈夊湪姒滀笂锛�>0-瀵瑰簲鎺掑悕
if (OnRefreshFairyList != null)
{
@@ -575,28 +666,13 @@
GameNetSystem.Instance.SendInfo(pack);
}
- public void SendFindGuildNoDecrypt(string msg, int pageIndex = 0, int pageSize = 20)
- {
- if (pageIndex == 0)
- {
- //榛樿鏌ヨ绗竴椤靛嵆浠h〃閲嶆柊寮�濮嬫煡璇紝娓呯┖涔嬪墠鐨勬暟鎹�
- guildsDict.Clear();
- pageIndexList.Clear();
- }
- var pack = new CA620_tagCMViewFamilyPage();
- pack.Msg = msg;
- pack.MsgLen = (byte)msg.Length;
- pack.PageIndex = (byte)pageIndex;
- pack.ShowCount = (byte)pageSize;
- GameNetSystem.Instance.SendInfo(pack);
- }
-
public static void SetFairyViewData(FairyData data, HA523_tagMCFamilyViewList.tagMCFamilyView view)
{
data.Rank = view.Rank;
data.FamilyID = (int)view.FamilyID;
data.FamilyName = view.FamilyName;
data.LeaderID = (int)view.LeaderID;
+ data.LeaderServerID = (int)view.LeaderServerID;
data.LeaderName = view.LeaderName;
data.FamilyLV = view.FamilyLV;
data.JoinReview = view.JoinReview;
@@ -606,16 +682,52 @@
data.EmblemWord = view.EmblemWord;
data.totalFightPower = view.FightPowerEx * Constants.ExpPointValue + view.FightPower;
data.MemberCount = view.MemberCount;
-
}
+ #endregion
+
+ #region 鏌ョ湅鐩爣鍏細
+ public Dictionary<int, FairyData> viewGuildsDict = new Dictionary<int, FairyData>();
+
+ public event Action OnUpdateViewFamilyInfo;
+
+ public void UpdateViewFamilyInfo(HA519_tagSCTagFamilyInfo pack)
+ {
+ FairyData data = new FairyData();
+ SetFairyViewData(data, pack);
+ viewGuildsDict[(int)data.FamilyID] = data;
+ OnUpdateViewFamilyInfo?.Invoke();
+ }
+
+ public static void SetFairyViewData(FairyData data, HA519_tagSCTagFamilyInfo view)
+ {
+ data.FamilyID = (int)view.FamilyID;
+ data.FamilyName = view.FamilyName;
+ data.LeaderID = (int)view.LeaderID;
+ data.LeaderServerID = (int)view.LeaderServerID;
+ data.LeaderName = view.LeaderName;
+ data.FamilyLV = view.FamilyLV;
+ data.ServerID = (int)view.ServerID;
+ data.EmblemID = (int)view.EmblemID;
+ data.EmblemWord = view.EmblemWord;
+ data.totalFightPower = view.FightPowerEx * Constants.ExpPointValue + view.FightPower;
+ data.MemberCount = view.MemberCount;
+ }
+
+ public void SendViewGuild(int fairyID, int serverID)
+ {
+ var pack = new CA619_tagCSViewTagFamily();
+ pack.FamilyID = (uint)fairyID;
+ pack.DataServerID = (uint)serverID;
+ GameNetSystem.Instance.SendInfo(pack);
+ }
#endregion
#region 鐢宠鍒楄〃
public event Action OnRefreshApplyList;
private List<FairyApply> applyList = new List<FairyApply>();
private Redpoint memberRedpoint = new Redpoint(107, 10702);
- private Redpoint applyRedpoint = new Redpoint(10702, 1070201);
+ private Redpoint applyRedpoint = new Redpoint(MainRedDot.MainGuildRedpoint, 1070201);
//鐢宠鍔犲叆鐨勭帺瀹朵俊鎭�
public void OnRefreshRequestJoinPlayerInfo(HA522_tagMCFamilyReqJoinInfo vNetData)
@@ -644,6 +756,9 @@
}
UpdateRequestRedpoint();
}
+
+
+
void UpdateRequestRedpoint()
{
@@ -699,6 +814,12 @@
SysNotifyMgr.Instance.ShowTip("jiazu_lhs_202580");
return;
}
+
+ if (guildsDict[id].JoinLVMin > PlayerDatas.Instance.baseData.realmLevel && RealmConfig.HasKey(guildsDict[id].JoinLVMin))
+ {
+ SysNotifyMgr.Instance.ShowTip("GuildApply01", RealmConfig.Get(guildsDict[id].JoinLVMin).Name);
+ return;
+ }
}
}
@@ -726,39 +847,64 @@
return 0;
}
+ public void SendJoinFamilyReply(int tagPlayerID, bool isOK)
+ {
+ CA621_tagCMJoinFamilyReply pack = new CA621_tagCMJoinFamilyReply();
+ pack.TagPlayerID = (uint)tagPlayerID;
+ pack.IsOK = (byte)(isOK ? 1 : 0);
+ GameNetSystem.Instance.SendInfo(pack);
+ }
+ public void SendChangeFamilyJoin(int joinReview, int joinLVMin)
+ {
+ CA622_tagCMChangeFamilyJoin pack = new CA622_tagCMChangeFamilyJoin();
+ pack.JoinReview = (byte)joinReview;
+ pack.JoinLVMin = (ushort)joinLVMin;
+ GameNetSystem.Instance.SendInfo(pack);
+ }
+ public void SendRequestJoinFamilyByPlayer(int tagPlayerID)
+ {
+ CA601_tagCMRequestJoinFamilyByPlayer pack = new CA601_tagCMRequestJoinFamilyByPlayer();
+ pack.TagPlayerID = (uint)tagPlayerID;
+ GameNetSystem.Instance.SendInfo(pack);
+ }
+
+ List<string> optionStrings = null;
+ List<int> options = null;
+ public bool TryGetApplyOptions(out List<int> optionKeys, out List<string> optionValues)
+ {
+ optionKeys = null;
+ optionValues = null;
+
+ if (options == null)
+ {
+ options = new List<int>();
+ options = new List<int>(RealmConfig.GetKeys());
+ options.Sort();
+ options.Remove(0);
+ }
+
+ if (optionStrings == null)
+ {
+ optionStrings = new List<string>();
+ foreach (int lv in options)
+ {
+ if (!RealmConfig.HasKey(lv))
+ continue;
+ RealmConfig realmConfig = RealmConfig.Get(lv);
+ optionStrings.Add(UIHelper.AppendColor(OfficialRankManager.Instance.GetOfficialRankColor(realmConfig.Quality), realmConfig.Name));
+ }
+ }
+
+ if (options.IsNullOrEmpty() || optionStrings.IsNullOrEmpty() || options.Count != optionStrings.Count)
+ return false;
+ optionKeys = options;
+ optionValues = optionStrings;
+ return true;
+ }
#endregion
- float lastChangeMarkTime = 0; //鎵撳紑鐣岄潰鎯呭喌涓嬮伩鍏嶇煭鏃堕棿澶氭绔嬪嵆璇锋眰锛孋/S閫氫俊涔熸槸鏈夋椂闂撮棿闅�
- public bool guildChanged = false;
- //Type锛�0-鏃狅紱1-鎴愬憳鍔犲叆锛�2-鎴愬憳閫�鍑猴紱3-鏀朵汉璁剧疆淇敼锛�4-鍏憡淇敼锛�5-寰界珷淇敼锛�6-鐩熶富鍙樻洿锛�7-鎴愬憳鑱屼綅鍙樻洿锛�8-鎴愬憳涓婄嚎锛�9-鎴愬憳绂荤嚎锛�
- //鍏細鏁版嵁鍙樺寲锛岃姹傛柊鐨勫叕浼氫俊鎭紝濡傚湪鎵撳紑鍏細鍒楄〃鏃惰姹傦紝鍏朵粬鍔熻兘鏍规嵁鑷韩鎯呭喌璇锋眰
- public void UpdateGuildDataChangeMark(HA521_tagMCFamilyChange netPack)
- {
- guildChanged = true;
- if (Time.time - lastChangeMarkTime < 0.2f)
- {
- //灏忎紭鍖� 濡傛灉鏈夐棶棰樹篃鍙互鍘婚櫎
- return;
- }
- lastChangeMarkTime = Time.time;
- if (UIManager.Instance.IsOpened<GuildHallWin>())
- {
- RequestGuildData();
- }
- }
-
- public void RequestGuildData()
- {
- if (guildChanged)
- {
- guildChanged = false;
- var pack = new CA626_tagCMGetFamilyInfo();
- GameNetSystem.Instance.SendInfo(pack);
-
- }
- }
public void SendKickFairy(uint playerID)
{
@@ -844,8 +990,13 @@
//鐧诲綍鍚庨娆℃墦寮�鏌ヨ锛屾崲鏂颁粰鐩熸煡璇�
public void QueryZBGFamilyInfo()
{
+ if (PlayerDatas.Instance.baseData.FamilyId == 0)
+ {
+ return;
+ }
if (isQueryZBGYet)
return;
+
QueryFamilyAction((int)PlayerDatas.Instance.baseData.FamilyId, ZBGFamilyActionType);
@@ -862,8 +1013,14 @@
return false;
}
bool restart = false;
- if (vNetData.FamilyActionList.Length == 1 && vNetData.FamilyActionList[0].Value1 == 1)
+
+ for (int i = 0; i < vNetData.FamilyActionList.Length; i++)
{
+ int playerID = (int)vNetData.FamilyActionList[i].Value1;
+ if (playerID != 1)
+ {
+ continue;
+ }
if (familyZBGActions.ContainsKey(1) && familyZBGActions[1].Time != vNetData.FamilyActionList[0].Time)
{
familyZBGActions.Clear();
@@ -871,6 +1028,7 @@
restart = true;
}
}
+
for (int i = 0; i < vNetData.FamilyActionList.Length; i++)
{
@@ -959,7 +1117,6 @@
#endregion
-
#region 绾㈢偣
Redpoint donateRedpoint = new Redpoint(MainRedDot.guildHallRedpointID, MainRedDot.donateRedpointID);
@@ -1004,7 +1161,7 @@
{
return;
}
- if (TimeUtility.ServerNow.Hour < 10)
+ if (TimeUtility.GetCommServerNow(zoneID).Hour < 10)
return;
if (zhenbaogeCutState == 0)
--
Gitblit v1.8.0