| | |
| | | public override void Init() |
| | | { |
| | | DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin += OnBeforePlayerDataInitializeEventOnRelogin; |
| | | DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnReconnect += OnBeforePlayerDataInitializeEventOnReconnect; |
| | | GuildManager.Instance.EnterOrQuitGuildEvent += OnEnterOrQuitGuildEvent; |
| | | StoreModel.Instance.RefreshBuyShopLimitEvent += OnRefreshShopLimit; |
| | | ParseConfig(); |
| | |
| | | public override void Release() |
| | | { |
| | | DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin -= OnBeforePlayerDataInitializeEventOnRelogin; |
| | | DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnReconnect -= OnBeforePlayerDataInitializeEventOnReconnect; |
| | | GuildManager.Instance.EnterOrQuitGuildEvent -= OnEnterOrQuitGuildEvent; |
| | | StoreModel.Instance.RefreshBuyShopLimitEvent -= OnRefreshShopLimit; |
| | | } |
| | | |
| | | private void OnBeforePlayerDataInitializeEventOnReconnect() |
| | | { |
| | | atkDefBatLogs.Clear(); |
| | | } |
| | | |
| | | private void OnBeforePlayerDataInitializeEventOnRelogin() |
| | | { |
| | | hasClosedMainGuildAtkDefBatTip = false; |
| | | ResetBattleData(); |
| | | } |
| | | |
| | | private void OnRefreshShopLimit() |
| | |
| | | UpdateRedpoint(); |
| | | } |
| | | |
| | | private void OnBeforePlayerDataInitializeEventOnRelogin() |
| | | { |
| | | ResetBattleData(); |
| | | } |
| | | |
| | | private void OnEnterOrQuitGuildEvent(bool isEnter) |
| | | { |
| | | ResetBattleData(); |
| | | CurrentChallengeTargetPlayerID = 0; |
| | | OnUpdateAtkDefBatInfoEvent?.Invoke(); |
| | | UpdateRedpoint(); |
| | | if (!isEnter) |
| | | { |
| | | ResetBattleData(); |
| | | CurrentChallengeTargetPlayerID = 0; |
| | | OnUpdateAtkDefBatInfoEvent?.Invoke(); |
| | | UpdateRedpoint(); |
| | | } |
| | | } |
| | | |
| | | void ParseConfig() |
| | |
| | | targetInfo.ServerID = sourceData.ServerID; |
| | | targetInfo.EmblemID = sourceData.EmblemID; |
| | | targetInfo.EmblemWord = UIHelper.ServerStringTrim(sourceData.EmblemWord); |
| | | targetInfo.IsDismiss = sourceData.IsDismiss; |
| | | targetInfo.TotalStar = sourceData.TotalStar; |
| | | targetInfo.OverState = sourceData.OverState; |
| | | targetInfo.BatMemCount = sourceData.BatMemCount; |
| | |
| | | return MyFamilyMembers.ContainsKey(PlayerDatas.Instance.PlayerId); |
| | | } |
| | | |
| | | private bool hasClosedMainGuildAtkDefBatTip; |
| | | |
| | | public bool ShouldShowMainGuildAtkDefBatTip() |
| | | { |
| | | if (hasClosedMainGuildAtkDefBatTip) |
| | | return false; |
| | | if (!IsOpen()) |
| | | return false; |
| | | return BatState == 3 && HasFamilyJoinEligibility() && HasMyJoinEligibility(); |
| | | } |
| | | |
| | | public void ClearMainGuildAtkDefBatTip() |
| | | { |
| | | hasClosedMainGuildAtkDefBatTip = true; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取攻防战的当前显示状态标识 |
| | | /// </summary> |
| | |
| | | if (BatState == 1 && MyFamilyInfo != null) |
| | | { |
| | | int overState = MyFamilyInfo.OverState; |
| | | if (overState == 1 || overState == 3) return 4; |
| | | if (overState == 2 || overState == 4) return 5; |
| | | if (overState == 1) return 4; |
| | | if (overState == 2) return 5; |
| | | } |
| | | |
| | | return 1; |
| | |
| | | |
| | | /// <summary> |
| | | /// 获取己方公会排序后的参战成员列表 |
| | | /// 排序规则:Star降序 → BatCnt升序 → PlayerID升序 |
| | | /// 过滤未战斗成员,排序规则:Star降序 → BatCnt升序 → PlayerID升序 |
| | | /// </summary> |
| | | public List<HA525_tagSCFamilyAtkDefBatInfo.tagSCFamilyAtkDefBatMem> GetSortedFamilyMembers() |
| | | { |
| | |
| | | if (members == null || members.Count <= 0) |
| | | return new List<HA525_tagSCFamilyAtkDefBatInfo.tagSCFamilyAtkDefBatMem>(); |
| | | |
| | | var list = members.Values.ToList(); |
| | | var list = members.Values.Where(member => member.BatCnt > 0).ToList(); |
| | | list.Sort((a, b) => |
| | | { |
| | | if (b.Star != a.Star) |
| | |
| | | /// <summary> |
| | | /// 获取我的剩余开启次数 |
| | | /// 仅在休战期(BatState==1)可开启 |
| | | /// 对手公会未解散: 有参与战斗(BatCnt>0)的玩家可开启1次 |
| | | /// 对手公会已解散: 所有参赛成员均可开启1次 |
| | | /// 参战且已战斗成员可开启1次 |
| | | /// 每人最多1次 |
| | | /// </summary> |
| | | public int GetMyOpenRemainCount() |
| | |
| | | if (!MyFamilyMembers.TryGetValue(myPlayerId, out var myMem)) |
| | | return 0; |
| | | |
| | | // 未参与战斗不能开启 |
| | | if (myMem.BatCnt <= 0) |
| | | return 0; |
| | | |
| | | // 已开启过则不能再次开启 |
| | | if (myMem.GridNum > 0) |
| | | return 0; |
| | | |
| | | // 对手公会已解散: 所有参赛成员均可开启 |
| | | if (EnemyFamilyInfo != null && EnemyFamilyInfo.IsDismiss == 1) |
| | | return 1; |
| | | |
| | | // 对手公会未解散: 参战成员均可开启1次(已开启的被 GridNum 过滤) |
| | | // 参战且已战斗成员可开启1次(已开启的被 GridNum 过滤) |
| | | return 1; |
| | | } |
| | | |