146 lines
4.9 KiB
C#
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; //活动已结束
|
|
}
|
|
}
|