using GCGame.Table; using System.Collections; using System.Collections.Generic; using UnityEngine; public class ActivityRedStateCtr { private static ActivityRedStateCtr _Instanace; public static ActivityRedStateCtr Instance { get { if (_Instanace == null) _Instanace = new ActivityRedStateCtr(); return _Instanace; } } public void RefreshActState() { if (ActivityController.Instance() && ActivityController.Instance().isActiveAndEnabled) { ActivityController.Instance().RefreshMenuItemRedIconState(); ActivityController.Instance().RefreshActvityItemState(); } var _OnTimeList = new List(); var _CurServerTime = GCGame.Utils.GetServerDateTime(); foreach (var act in TableManager.GetActivityBase().Values) { var openTime = act.Recurrent.Split('|'); for (int index = 0; index < openTime.Length; index++) { if (int.Parse(openTime[index]) == (int)_CurServerTime.DayOfWeek) _OnTimeList.Add(act); } } for (int index = 0; index < _OnTimeList.Count; index++) { var activityBase = _OnTimeList[index]; if (activityBase == null) continue; if(GameManager.gameManager.PlayerDataPool.IsHaveActrivityRewCanGet) { FunctionButtonLogic.Instance().ShowActivityRedIcon(true); return; } var actId = activityBase.Id; if (CanJoin(actId)) { //帮派任务特殊处理 if (activityBase.ActivityServerType == (int)ActivityDataManager.Activity_Type.ACTIVITY_GUILDFREIGHT || activityBase.ActivityServerType == (int)ActivityDataManager.Activity_Type.ACTIVITY_FEAST || activityBase.ActivityServerType == (int)ActivityDataManager.Activity_Type.ACTIVITY_TYPE_GUILD_ESCORT || activityBase.ActivityServerType == (int)ActivityDataManager.Activity_Type.ACTIVITY_TYPE_DRAGONWAR || activityBase.ActivityServerType == (int)ActivityDataManager.Activity_Type.ACTIVITY_TYPE_GUILD_UNION_MATCH || activityBase.ActivityServerType == (int)ActivityDataManager.Activity_Type.ACTIVITY_TYPE_GUIDBOSS) { if (!GameManager.gameManager.PlayerDataPool.IsHaveGuild()) { if (FunctionButtonLogic.Instance()) FunctionButtonLogic.Instance().ShowActivityRedIcon(false); return; } } if (FunctionButtonLogic.Instance()) { FunctionButtonLogic.Instance().ShowActivityRedIcon(true); return; } } } if (FunctionButtonLogic.Instance()) FunctionButtonLogic.Instance().ShowActivityRedIcon(false); } public bool CanJoin(int actId) { return IsLevelEnough(actId) && IsOnOpenTime(actId) && !IsCompleted(actId); } public bool IsLevelEnough(int activityId) { Tab_ActivityBase activityBase = TableManager.GetActivityBaseByID(activityId, 0); if (activityBase == null) { return false; } if (GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level >= activityBase.Level) { return true; } return false; } public bool IsCompleted(int activityId) { Tab_ActivityBase activityBase = TableManager.GetActivityBaseByID(activityId, 0); if (activityBase == null) { return false; } Tab_ActivityActValLimit valLimit = TableManager.GetActivityActValLimitByID(activityBase.ActivityServerType, 0); if (valLimit == null) { return false; } int complete = ActivityDataManager.Instance.GetActivityCompleteTimes(activityBase.ActivityServerType); if (complete>=0 && complete>= valLimit.DayCountLimit) { return true; } else { return false; } } public bool IsOnOpenTime(int activityId) { if (GetActivityTimeState(activityId) == (int)ActivityController.ActivityTimeType.IsGoing) { return true; } return false; } public int GetActivityTimeState(int m_AcId) { Tab_ActivityBase activityBase = TableManager.GetActivityBaseByID(m_AcId, 0); if (activityBase == null) return -1; if (ActivityDataManager.Instance.IsActivityState(activityBase.ActivityServerType,ActivityDataManager.ActivityState.Playing)) return (int)ActivityController.ActivityTimeType.IsGoing; else return (int)ActivityController.ActivityTimeType.Finish; //活动已结束 } }