Files
JJBB/Assets/Project/Script/GUI/Activity/ActivityRedStateCtr.cs
2024-08-23 15:49:34 +08:00

146 lines
4.9 KiB
C#

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<Tab_ActivityBase>();
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; //活动已结束
}
}