From 911a0b72e3415c9d3aba121bc532160da77c1afa Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期三, 22 十月 2025 21:05:02 +0800
Subject: [PATCH] 65 子 【公会】基础主体 / 【公会】基础主体-客户端
---
Main/System/Guild/GuildManager.cs | 197 ++++++++++++++++++++++++++++++++++++++----------
1 files changed, 154 insertions(+), 43 deletions(-)
diff --git a/Main/System/Guild/GuildManager.cs b/Main/System/Guild/GuildManager.cs
index 1bb39f7..f195061 100644
--- a/Main/System/Guild/GuildManager.cs
+++ b/Main/System/Guild/GuildManager.cs
@@ -15,20 +15,36 @@
public Dictionary<int, Dictionary<int, HA513_tagMCFamilyActionInfo.tagMCFamilyAction[]>> familyActions = new Dictionary<int, Dictionary<int, HA513_tagMCFamilyActionInfo.tagMCFamilyAction[]>>();
public event Action<int, int> FamilyActionInfoEvent; //鍏細鑷畾涔夎褰�, 鍏朵粬鍔熻兘浠庤繖鑾峰彇
+ //瑕佹搷浣滃摢涓垚鍛樼殑绱㈠紩
+ int m_MemberOPIndex = -1;
+ public event Action MemberOPIndexEvent;
+ public int memberOPIndex
+ {
+ get { return m_MemberOPIndex; }
+ set
+ {
+ m_MemberOPIndex = value;
+ MemberOPIndexEvent?.Invoke();
+ }
+ }
+
public override void Init()
{
ParseConfig();
- // PlayerDatas.Instance.fairyData.OnRefreshFairyMine += OnRefreshFairyMine;
DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
}
public override void Release()
{
- // PlayerDatas.Instance.fairyData.OnRefreshFairyMine -= OnRefreshFairyMine;
DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize;
}
public void OnBeforePlayerDataInitialize()
+ {
+ ClearGuildData();
+ }
+
+ void ClearGuildData()
{
m_FairyRequesteds.Clear();
familyActions.Clear();
@@ -36,16 +52,14 @@
applyList.Clear();
PlayerDatas.Instance.fairyData.ClearData();
}
-
-
-
- private void OnRefreshFairyMine()
+
+ public void ClearGuildWhenQuit()
{
- if (!PlayerDatas.Instance.fairyData.HasFairy)
- {
- //閫�鍑哄叕浼�
- familyActions.Clear();
- }
+ //閫�鍑哄叕浼�
+ ClearGuildData();
+
+ //闇�瑕佽浆鍒癏omeWin鐣岄潰 涓斿叧闂叕浼氱浉鍏崇晫闈�(鐖跺瓙缁ф壙鍏抽棴)
+ UIManager.Instance.GetUI<MainWin>()?.ClickFunc(0);
}
@@ -80,6 +94,9 @@
void ParseConfig()
{
+ DirtyWordConfig.DirtyWordInit();
+ DirtyNameConfig.DirtyNameInit();
+
var config = FuncConfigConfig.Get("CreateFamily");
createFairyCost = int.Parse(config.Numerical1);
createMoneyType = int.Parse(config.Numerical2);
@@ -104,8 +121,8 @@
config = FuncConfigConfig.Get("FamilyRename");
renameFairyNameCD = int.Parse(config.Numerical2);
var arr = ConfigParse.GetMultipleStr<int>(config.Numerical1);
- renameFairyNameCost = arr[0];
- renameFairyNameMoneyType = arr[1];
+ renameFairyNameMoneyType = arr[0];
+ renameFairyNameCost = arr[1];
}
@@ -212,19 +229,21 @@
if (quitType == 0)
{
//琚涪
- quitCount = PlayerDatas.Instance.baseData.leaveGuildInfo / 10 % 10;
+ quitCount = PlayerDatas.Instance.baseData.leaveGuildInfo / 10 % 10 - 1;
+ if (quitCount < 0) return 0;
if (beQuitGuildPunishTime.Length != 0)
punishTime = beQuitGuildPunishTime[Math.Min(quitCount, beQuitGuildPunishTime.Length - 1)];
}
else if (quitType == 1)
{
//涓诲姩閫�鍑�
- quitCount = PlayerDatas.Instance.baseData.leaveGuildInfo / 100;
+ quitCount = PlayerDatas.Instance.baseData.leaveGuildInfo / 100 - 1;
+ if (quitCount < 0) return 0;
if (quitGuildPunishTime.Length != 0)
punishTime = quitGuildPunishTime[Math.Min(quitCount, quitGuildPunishTime.Length - 1)];
}
- return TimeUtility.AllSeconds - PlayerDatas.Instance.baseData.leaveFamilyTime - punishTime * 60;
+ return punishTime * 60 - (TimeUtility.AllSeconds - PlayerDatas.Instance.baseData.leaveFamilyTime);
}
@@ -249,27 +268,8 @@
return;
}
- int error;
-
- //鑾峰彇name鐨勫瓧鑺傞暱搴︼紝name鍙兘鏄腑鏂� 鎴栬�呭叾浠栧崰鐢�3涓瓧绗︾殑绗﹀彿
- if (!UIHelper.SatisfyNameLength(name, out error))
+ if (!CheckName(name))
{
- // TODO 鏆傛椂鎸変腑鏂囬暱搴︽彁绀�, 涓嶅悓璇█鍙牴鎹儏鍐典慨鏀�
- if (error == 1)
- {
- SysNotifyMgr.Instance.ShowTip("NameError2", 7);
- return;
- }
- else if (error == 2)
- {
- SysNotifyMgr.Instance.ShowTip("NameError1", 2);
- return;
- }
- }
-
- if (!CheckFairyNameLimit(name, out error))
- {
- ShowFairyNameErrorTip(error);
return;
}
@@ -279,6 +279,35 @@
pack.EmblemWord = emblemWord;
GameNetSystem.Instance.SendInfo(pack);
+ }
+
+ public bool CheckName(string name)
+ {
+ int error;
+
+ //鑾峰彇name鐨勫瓧鑺傞暱搴︼紝name鍙兘鏄腑鏂� 鎴栬�呭叾浠栧崰鐢�3涓瓧绗︾殑绗﹀彿
+ if (!UIHelper.SatisfyNameLength(name, out error))
+ {
+ // TODO 鏆傛椂鎸変腑鏂囬暱搴︽彁绀�, 涓嶅悓璇█鍙牴鎹儏鍐典慨鏀�
+ if (error == 1)
+ {
+ SysNotifyMgr.Instance.ShowTip("NameError2", 7);
+ return false;
+ }
+ else if (error == 2)
+ {
+ SysNotifyMgr.Instance.ShowTip("NameError1", 2);
+ return false;
+ }
+ }
+
+ if (!CheckFairyNameLimit(name, out error))
+ {
+ ShowFairyNameErrorTip(error);
+ return false;
+ }
+
+ return true;
}
#endregion
@@ -320,7 +349,7 @@
- // 鍏細鑷畾涔夎褰�
+ #region 鍏細鑷畾涔夎褰�
public void UpdateFamilyAction(HA513_tagMCFamilyActionInfo _package)
{
@@ -349,6 +378,16 @@
return false;
return true;
}
+
+ public void QueryFamilyAction(int familyID, int actionType)
+ {
+ var pack = new CA617_tagCMQueryFamilyAction();
+ pack.FamilyID = (ushort)familyID;
+ pack.ActionType = (byte)actionType;
+ GameNetSystem.Instance.SendInfo(pack);
+ }
+
+ #endregion
@@ -498,6 +537,12 @@
if (type == 0)
{
+ if (m_FairyRequesteds.Count >= requestGuildCount)
+ {
+ SysNotifyMgr.Instance.ShowTip("GuildSys9");
+ return;
+ }
+
var cdSeconds = GetJoinCD();
if (cdSeconds > 0)
{
@@ -543,14 +588,22 @@
#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)
{
- if (netPack.Type > 0)
+ guildChanged = true;
+ if (Time.time - lastChangeMarkTime < 0.2f)
{
- guildChanged = true;
+ //灏忎紭鍖� 濡傛灉鏈夐棶棰樹篃鍙互鍘婚櫎
+ return;
+ }
+ lastChangeMarkTime = Time.time;
+ if (UIManager.Instance.IsOpened<GuildHallWin>())
+ {
+ RequestGuildData();
}
}
@@ -572,6 +625,54 @@
GameNetSystem.Instance.SendInfo(pak);
}
+
+ //鑾峰彇闇�瑕佸叕浼氳亴浣嶇瓑绾�
+ public int GetNeedGuildJobLV(int guildFuncID)
+ {
+ if (guildWorkToLevel.ContainsKey(guildFuncID))
+ {
+ return guildWorkToLevel[guildFuncID];
+ }
+ return 0;
+ }
+
+
+ public void SendChangeMemberLV(int playerID, int lv)
+ {
+ var pack = new CA625_tagCMChangeFamilyMemLV();
+ pack.PlayerID = (uint)playerID;
+ pack.FmLV = (byte)lv;
+ GameNetSystem.Instance.SendInfo(pack);
+ }
+
+ public void KickMember(int playerID)
+ {
+ var pack = new CA605_tagCMDeleteFamilyMember();
+ pack.MemberID = (uint)playerID;
+ GameNetSystem.Instance.SendInfo(pack);
+ }
+
+ public void QuitGuild()
+ {
+
+ ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"),
+ Language.Get("Guild_46"), (bool isOK) =>
+ {
+ if (isOK)
+ {
+ if (PlayerDatas.Instance.fairyData.fairy.MemberCount > 1 &&
+ PlayerDatas.Instance.fairyData.mine.FmLV == 3)
+ {
+ SysNotifyMgr.Instance.ShowTip("GuildSys15");
+ return;
+ }
+ var pack = new CA603_tagCMLeaveFamily();
+ GameNetSystem.Instance.SendInfo(pack);
+ }
+ });
+
+
+ }
#region 鍔犲瘑鏁板瓧
@@ -611,7 +712,7 @@
SysNotifyMgr.Instance.ShowTip("GuildSys6");
return "";
}
-
+
encryptedStr = encryptedStr.Substring(1);
if (reverseMap.IsNullOrEmpty())
@@ -629,8 +730,8 @@
}
return originalStr.ToString().TrimStart('0'); // 鍘婚櫎鍓嶅闆�
}
-
-
+
+
int[] GenerateReverseMap(int[] map)
{
for (int i = 0; i < map.Length; i++)
@@ -643,4 +744,14 @@
#endregion
+}
+
+// 鏉冮檺ID: 1-鏀朵汉锛�2-鍙樻洿鑱屼綅锛�3-鍙戝竷鍏憡锛�4-韪汉
+public enum GuildFuncType
+{
+ Accept = 1,
+ ChangeJob = 2,
+ PublishNotice = 3,
+ Kick = 4,
+
}
\ No newline at end of file
--
Gitblit v1.8.0