using System;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
|
namespace vnxbqy.UI
|
{
|
public class HolidayLoginModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk, IOpenServerActivity
|
{
|
public event Action<int> onStateUpdate;
|
public const int redPointID = 28001;
|
public Redpoint redPoint = new Redpoint(MainRedDot.RedPoint_HolidayWishes, redPointID);
|
|
private uint LoginState; //活动期间的登录状态
|
private uint LoginAwardState; //领取状态
|
|
//节日祝福 id从101开始和精彩活动区分
|
public const int activityType = (int)OpenServerActivityCenter.ActivityType.AT_JRZF;
|
public const int activityID = 101;
|
|
public int selectIndex = 0; //被选中的天
|
|
public event Action UpdateHolidayLogin; //节日登录
|
|
public override void Init()
|
{
|
OperationTimeHepler.Instance.operationStartEvent += OperationStartEvent;
|
OperationTimeHepler.Instance.operationEndEvent += OperationEndEvent;
|
OperationTimeHepler.Instance.operationAdvanceEvent += OperationAdvanceEvent;
|
OpenServerActivityCenter.Instance.Register(activityID, this, activityType);
|
}
|
|
public void OnBeforePlayerDataInitialize()
|
{
|
}
|
|
public void OnPlayerLoginOk()
|
{
|
}
|
|
public override void UnInit()
|
{
|
|
}
|
|
public bool IsOpen {
|
get {
|
return OperationTimeHepler.Instance.SatisfyOpenCondition(Operation.HolidayLogin);
|
}
|
}
|
|
public bool priorityOpen {
|
get {
|
return redPoint.state == RedPointState.Simple;
|
}
|
}
|
|
public bool IsAdvance {
|
get {
|
return OperationTimeHepler.Instance.SatisfyAdvanceCondition(Operation.HolidayLogin);
|
}
|
}
|
|
private void OperationEndEvent(Operation type, int state)
|
{
|
if (type == Operation.HolidayLogin && state == 0)
|
{
|
if (onStateUpdate != null)
|
{
|
onStateUpdate(activityID);
|
}
|
UpdateRedpoint();
|
}
|
}
|
|
private void OperationAdvanceEvent(Operation type)
|
{
|
if (type == Operation.HolidayLogin)
|
{
|
if (onStateUpdate != null)
|
{
|
onStateUpdate(activityID);
|
}
|
}
|
}
|
|
private void OperationStartEvent(Operation type, int state)
|
{
|
if (type == Operation.HolidayLogin && state == 0)
|
{
|
|
if (onStateUpdate != null)
|
{
|
onStateUpdate(activityID);
|
}
|
}
|
}
|
|
//0 不可领取 1 可领取 2 已领取
|
public int GetLoginAwardState(int day)
|
{
|
//校验登录
|
if (((int)Math.Pow(2, day - 1) & LoginState) == 0)
|
{
|
return 0;
|
}
|
|
if (((int)Math.Pow(2, day - 1) & LoginAwardState) == 0)
|
{
|
return 1;
|
}
|
|
return 2;
|
}
|
|
void UpdateRedpoint()
|
{
|
OperationHolidayLogin holiday;
|
OperationTimeHepler.Instance.TryGetOperation(Operation.HolidayLogin, out holiday);
|
redPoint.state = RedPointState.None;
|
|
if (holiday == null) return; //封包顺序如果有问题 此处为空
|
|
for (int i = 0; i < holiday.loginAwards.Count; i++)
|
{
|
if (GetLoginAwardState(holiday.loginAwards[i].DayNum) == 1)
|
{
|
redPoint.state = RedPointState.Simple;
|
return;
|
}
|
}
|
}
|
|
public void UpdateLoginInfo(HAA39_tagMCFeastLoginPlayerInfo netPack)
|
{
|
LoginState = netPack.LoginState;
|
LoginAwardState = netPack.LoginAward;
|
if (UpdateHolidayLogin != null)
|
UpdateHolidayLogin();
|
|
UpdateRedpoint();
|
}
|
|
public void SendGetAward(uint day)
|
{
|
CA504_tagCMPlayerGetReward getReward = new CA504_tagCMPlayerGetReward();
|
getReward.RewardType = (byte)GotServerRewardType.Def_RewardType_HolidayLogin;
|
getReward.DataEx = day;
|
getReward.DataExStrLen = 0;
|
getReward.DataExStr = string.Empty;
|
GameNetSystem.Instance.SendInfo(getReward);
|
}
|
|
}
|
}
|