From 89343a7a0909e5244a3b69c4db1294de4536243b Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期一, 15 十二月 2025 18:15:22 +0800
Subject: [PATCH] 262 幻境阁系统-客户端 新增仅适用武将解锁的头像和形象的红点移除规则
---
Main/System/Guild/GuildManager.cs | 254 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 250 insertions(+), 4 deletions(-)
diff --git a/Main/System/Guild/GuildManager.cs b/Main/System/Guild/GuildManager.cs
index e60323d..7981c55 100644
--- a/Main/System/Guild/GuildManager.cs
+++ b/Main/System/Guild/GuildManager.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
+using System.Linq;
using System.Text;
using Cysharp.Threading.Tasks;
using LitJson;
@@ -9,6 +10,13 @@
public 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; // 鐝嶅疂闃佽褰曠被鍨�
+ public const int GuildBossActionType = 18; //璁ㄤ紣
+
// 鐢宠鐨勫叕浼氬垪琛�
private List<int> m_FairyRequesteds = new List<int>();
// 鍏細鑷畾涔夎褰曢檮鍔犳暟鎹紝鎸夌被鍨嬪瓨鍌�
@@ -33,18 +41,21 @@
public event Action DonateCntListEvent;
public event Action<bool> EnterOrQuitGuildEvent; //杩涘叆鎴栭��鍑哄叕浼氫簨浠�
+
public override void Init()
{
ParseConfig();
DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshEvent;
+ TimeMgr.Instance.OnHourEvent += UpdateZBGRedpoint;
}
public override void Release()
{
DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize;
DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= OnPlayerLoginOk;
PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshEvent;
+ TimeMgr.Instance.OnHourEvent -= UpdateZBGRedpoint;
}
@@ -56,6 +67,7 @@
void OnPlayerLoginOk()
{
UpdateDonateRedPoint();
+
}
void PlayerDataRefreshEvent(PlayerDataType type)
@@ -68,11 +80,17 @@
void ClearGuildData()
{
+ PlayerDatas.Instance.baseData.FamilyId = 0;
m_FairyRequesteds.Clear();
familyActions.Clear();
guildChanged = false;
applyList.Clear();
PlayerDatas.Instance.fairyData.ClearData();
+
+ isQueryZBGYet = false;
+ zhenbaogeCutState = 0;
+ familyZBGActions.Clear();
+ sortPlayerCut.Clear();
}
//閫�鍑哄叕浼�
@@ -83,15 +101,25 @@
//闇�瑕佽浆鍒癏omeWin鐣岄潰 涓斿叧闂叕浼氱浉鍏崇晫闈�(鐖跺瓙缁ф壙鍏抽棴)
UIManager.Instance.GetUI<MainWin>()?.ClickFunc(0);
+
+ // isQueryZBGYet = false;
+ // zhenbaogeCutState = 0;
+ // familyZBGActions.Clear();
+ // sortPlayerCut.Clear();
+
+ UpdateZBGRedpoint();
UpdateDonateRedPoint();
EnterOrQuitGuildEvent?.Invoke(false);
}
+ //娉ㄦ剰涓婄嚎閫氱煡鍏細鏁版嵁鏃朵篃浼氳Е鍙�
public async UniTask AfterEnterGuild()
{
//杩欓噷杩樻病鏈夊叕浼氭暟鎹�, 鍚庣画鐨勫寘浼氭洿鏂板叕浼氭暟鎹�
await UniTask.Delay(100);
UpdateDonateRedPoint();
+ UpdateZBGRedpoint();
+ QueryZBGFamilyInfo();
EnterOrQuitGuildEvent?.Invoke(true);
}
@@ -123,6 +151,27 @@
public int renameFairyNameCD;
public int renameFairyNameCost;
public int renameFairyNameMoneyType;
+
+
+
+
+ //鐝嶅疂闃�(琛屽晢)
+ public int zhenbaogeCutState = 0;
+ public int zhenbaogeBuyState = 0;
+ public bool needCheckCutCD = false;
+ public event Action UpdateZhenbaogeEvent;
+ public bool isQueryZBGYet = false;
+ public float lastZBGStartTime = 0; //杩囧ぉ鍒锋柊鐢�
+
+ //{id:鏁版嵁} 鐮嶄环琛屼负锛寁alue1涓虹帺瀹禝D锛岀壒娈婄害瀹氫负1鏃朵负瀹舵棌鐨勬暟鎹�
+ public Dictionary<int, HA513_tagMCFamilyActionInfo.tagMCFamilyAction> familyZBGActions = new Dictionary<int, HA513_tagMCFamilyActionInfo.tagMCFamilyAction>();
+ public List<int> sortPlayerCut = new List<int>();
+ public event Action<bool> UpdateFamilyActionEvent;
+ public int zbgPriceType;
+ public int zbgOrgPriceValue;
+ public int zbgChangFamilyCD;
+ public List<int> cutCntListForTalk = new List<int>();
+
void ParseConfig()
{
@@ -156,6 +205,11 @@
renameFairyNameMoneyType = arr[0];
renameFairyNameCost = arr[1];
+ config = FuncConfigConfig.Get("Zhenbaoge");
+ zbgPriceType = int.Parse(config.Numerical1);
+ zbgOrgPriceValue = int.Parse(config.Numerical2);
+ zbgChangFamilyCD = int.Parse(config.Numerical3);
+ cutCntListForTalk = JsonMapper.ToObject<List<int>>(config.Numerical4);
}
@@ -346,7 +400,6 @@
-
#region 浠欑洘鍟嗗簵寮�鍚�
public int fairyStoreLimit = 0;
public bool fairyStoreOpen
@@ -384,16 +437,49 @@
#region 鍏細鑷畾涔夎褰�
public void UpdateFamilyAction(HA513_tagMCFamilyActionInfo _package)
{
+ if (PlayerDatas.Instance.fairyData == null ||
+ PlayerDatas.Instance.fairyData.fairy == null ||
+ PlayerDatas.Instance.fairyData.fairy.FamilyID != _package.FamilyID)
+ {
+ return;
+ }
+ // 琛屽晢 鐮嶄环
+ if (UpdateHawkerAction(_package))
+ {
+ return;
+ }
+
+ // 寰界珷
+ if (GuildEmblemModel.Instance.UpdateEmblemAction(_package))
+ {
+ return;
+ }
+
+ // 鍏細璁ㄤ紣
+ if (GuildBossManager.Instance.UpdateGuildBossInfo(_package))
+ {
+ return;
+ }
+
+ //涓婇潰鍚勪釜鍔熻兘瑕乺eturn
+ UpdataCommonAction(_package);
+ }
+
+ // 閫氱敤璁板綍 鍙�傜敤鍗曟潯鏁版嵁鐨勮褰曟儏鍐� 鎴栨湁鏈嶅姟绔繚璇佸垪琛ㄥ叏閮ㄤ俊鎭洿鎺ヨ鐩栵紝鍏朵粬鍔熻兘姣旇緝澶嶆潅鍚勮嚜璐熻矗瀛樺偍
+ void UpdataCommonAction(HA513_tagMCFamilyActionInfo _package)
+ {
if (!familyActions.ContainsKey((int)_package.FamilyID))
{
familyActions.Add((int)_package.FamilyID, new Dictionary<int, HA513_tagMCFamilyActionInfo.tagMCFamilyAction[]>());
}
familyActions[(int)_package.FamilyID][_package.ActionType] = _package.FamilyActionList;
+
FamilyActionInfoEvent?.Invoke((int)_package.FamilyID, _package.ActionType);
}
+ // 閫氱敤璁板綍
public bool TryGetFamilyActions(int actionType, out HA513_tagMCFamilyActionInfo.tagMCFamilyAction[] familyAction)
{
familyAction = null;
@@ -414,7 +500,7 @@
public void QueryFamilyAction(int familyID, int actionType)
{
var pack = new CA617_tagCMQueryFamilyAction();
- pack.FamilyID = (ushort)familyID;
+ pack.FamilyID = (uint)familyID;
pack.ActionType = (byte)actionType;
GameNetSystem.Instance.SendInfo(pack);
}
@@ -716,9 +802,145 @@
}
#endregion
+ #region 鐝嶅疂闃�
+
+
+ public void UpdateZhenbaogeInfo(HA512_tagMCFamilyZhenbaogeInfo netPack)
+ {
+ //鐮嶄环鐘舵�侊細浠欑洘閲岃褰曞凡鐮嶄环鎵嶆槸鐪熺殑宸茬爫浠风姸鎬侊紝灏佸寘涓殑鐮嶄环鐘舵�佺敤浜庡垽鏂璫d闂撮殧浣跨敤
+ needCheckCutCD = netPack.CutState == 1;
+ zhenbaogeBuyState = netPack.BuyState;
+ UpdateZhenbaogeEvent?.Invoke();
+ UpdateZBGRedpoint();
+ }
+
+
+
+
+ //鐧诲綍鍚庨娆℃墦寮�鏌ヨ锛屾崲鏂颁粰鐩熸煡璇�
+ public void QueryZBGFamilyInfo()
+ {
+ if (isQueryZBGYet)
+ return;
+
+ QueryFamilyAction((int)PlayerDatas.Instance.baseData.FamilyId, ZBGFamilyActionType);
+
+ isQueryZBGYet = true;
+ }
+
+
+
+ //鏇存柊鐮嶄环淇℃伅
+ public bool UpdateHawkerAction(HA513_tagMCFamilyActionInfo vNetData)
+ {
+ if (vNetData.ActionType != ZBGFamilyActionType)
+ {
+ return false;
+ }
+ bool restart = false;
+ if (vNetData.FamilyActionList.Length == 1 && vNetData.FamilyActionList[0].Value1 == 1)
+ {
+ if (familyZBGActions.ContainsKey(1) && familyZBGActions[1].Time != vNetData.FamilyActionList[0].Time)
+ {
+ familyZBGActions.Clear();
+ sortPlayerCut.Clear();
+ restart = true;
+ }
+ }
+
+ for (int i = 0; i < vNetData.FamilyActionList.Length; i++)
+ {
+ int playerID = (int)vNetData.FamilyActionList[i].Value1;
+ familyZBGActions[playerID] = vNetData.FamilyActionList[i];
+
+ }
+
+ if (familyZBGActions.ContainsKey((int)PlayerDatas.Instance.baseData.PlayerID))
+ {
+ //鑷繁鏄惁宸茬爫浠� 浠庡垪琛ㄤ腑鏌ユ壘
+ zhenbaogeCutState = 1;
+ }
+ else
+ {
+ zhenbaogeCutState = 0;
+ }
+
+
+ sortPlayerCut = familyZBGActions.Keys.ToList();
+ if (sortPlayerCut.Contains(1))
+ sortPlayerCut.Remove(1);
+ sortPlayerCut.Sort((a, b) => { return familyZBGActions[a].Time.CompareTo(familyZBGActions[b].Time); });
+
+ UpdateFamilyActionEvent?.Invoke(restart);
+ UpdateZBGRedpoint();
+
+ return true;
+ }
+
+ //鐮嶄环浜烘暟
+ public int GetZBGFamilyActionCount()
+ {
+ return Math.Max(0, familyZBGActions.Count - 1);
+ }
+
+ public int GetTalkState()
+ {
+ int cnt = GetZBGFamilyActionCount();
+ for (int i = 0; i < cutCntListForTalk.Count; i++)
+ {
+ if (cnt < cutCntListForTalk[i])
+ {
+ return i;
+ }
+ }
+ return 0;
+ }
+
+ public int[][] GetZBGItems()
+ {
+ if (!familyZBGActions.ContainsKey(1))
+ return null;
+
+ return JsonMapper.ToObject<int[][]>(familyZBGActions[1].UseData);
+ }
+
+ public void OnZhenbaogeOP(byte type)
+ {
+ var pack = new CA616_tagCMZhenbaogeOP();
+ pack.OpType = type;
+ GameNetSystem.Instance.SendInfo(pack);
+ }
+
+
+ public Dictionary <int, FairyMember> tmpNoCutMembers = new Dictionary<int, FairyMember>();
+
+ //鏈浠锋垚鍛�
+ public void CalcNoCutMembers()
+ {
+ tmpNoCutMembers.Clear();
+ var fairy = PlayerDatas.Instance.fairyData;
+ if (fairy == null)
+ {
+ return;
+ }
+
+ foreach(var playerID in fairy.memberIDList)
+ {
+ if (!familyZBGActions.ContainsKey(playerID))
+ {
+ tmpNoCutMembers[playerID] = fairy.GetMember(playerID);
+ }
+ }
+ }
+
+ #endregion
+
+
#region 绾㈢偣
- Redpoint hallRedpoint = new Redpoint(MainRedDot.MainGuildRedpoint, MainRedDot.guildHallRedpointID);
- Redpoint donateRedpoint = new Redpoint(MainRedDot.guildHallRedpointID, MainRedDot.MainGuildRedpoint * 100);
+
+ Redpoint donateRedpoint = new Redpoint(MainRedDot.guildHallRedpointID, MainRedDot.donateRedpointID);
+ //鐝嶅疂闃�(琛屽晢)
+ Redpoint zbgRedpoint = new Redpoint(MainRedDot.MainGuildRedpoint, MainRedDot.hawkerRedpointID);
void UpdateDonateRedPoint()
{
@@ -749,6 +971,30 @@
}
}
}
+
+ public void UpdateZBGRedpoint()
+ {
+ zbgRedpoint.state = RedPointState.None;
+
+ if (!PlayerDatas.Instance.fairyData.HasFairy)
+ {
+ return;
+ }
+ if (TimeUtility.ServerNow.Hour < 10)
+ return;
+
+ if (zhenbaogeCutState == 0)
+ {
+ zbgRedpoint.state = RedPointState.Simple;
+ }
+ else if (zhenbaogeBuyState == 0)
+ {
+ if (familyZBGActions[1].Value3 > 0)
+ {
+ zbgRedpoint.state = RedPointState.Simple;
+ }
+ }
+ }
#endregion
--
Gitblit v1.8.0