271 lines
7.5 KiB
C#
271 lines
7.5 KiB
C#
using UnityEngine;
|
||
using System.Collections;
|
||
using Module.Log;
|
||
|
||
// 跑环任务奖励控制
|
||
// 原每日跑环,先新增每周跑环,再原有属性上复制了一份,后缀_Week加以区分
|
||
public class CircleMissionManager
|
||
{
|
||
// 跑环类型
|
||
public enum CircleType
|
||
{
|
||
daily = 1, // 每日
|
||
weekly = 2 // 每周
|
||
}
|
||
|
||
#region 属性
|
||
|
||
// 每日
|
||
private bool _InitCircle = false;
|
||
private int _LastAwardCnt = 0;
|
||
private int _CurState;
|
||
private int _MultiNumIndex;
|
||
private int _RewardIndex;
|
||
public bool _SkilAnim = false;
|
||
|
||
// 每周
|
||
private bool _InitCircle_Week = false;
|
||
private int _LastAwardCnt_Week = 0;
|
||
private int _CurState_Week;
|
||
private int _MultiNumIndex_Week;
|
||
private int _RewardIndex_Week;
|
||
public bool _SkilAnim_Week = false;
|
||
|
||
// 所有属性,均通过类型获取
|
||
public bool InitCircleByType(CircleType ct)
|
||
{
|
||
if(ct == CircleType.daily)
|
||
{
|
||
return _InitCircle;
|
||
}
|
||
|
||
return _InitCircle_Week;
|
||
}
|
||
|
||
public int LastAwardCntByType(CircleType ct)
|
||
{
|
||
if(ct == CircleType.daily)
|
||
{
|
||
return _LastAwardCnt;
|
||
}
|
||
|
||
return _LastAwardCnt_Week;
|
||
}
|
||
|
||
public int CurStateByType(CircleType ct)
|
||
{
|
||
if (ct == CircleType.daily)
|
||
{
|
||
return _CurState;
|
||
}
|
||
|
||
return _CurState_Week;
|
||
}
|
||
|
||
public int MultiNumIndexByType(CircleType ct)
|
||
{
|
||
if (ct == CircleType.daily)
|
||
{
|
||
return _MultiNumIndex;
|
||
}
|
||
|
||
return _MultiNumIndex_Week;
|
||
}
|
||
|
||
public int RewardIndexByType(CircleType ct)
|
||
{
|
||
if (ct == CircleType.daily)
|
||
{
|
||
return _RewardIndex;
|
||
}
|
||
|
||
return _RewardIndex_Week;
|
||
}
|
||
|
||
public bool SkilAnimByType(CircleType ct)
|
||
{
|
||
if (ct == CircleType.daily)
|
||
{
|
||
return _SkilAnim;
|
||
}
|
||
|
||
return _SkilAnim_Week;
|
||
}
|
||
|
||
public void SetSkilAnimByType(CircleType ct, bool value)
|
||
{
|
||
if(ct == CircleType.daily)
|
||
{
|
||
_SkilAnim = value;
|
||
}
|
||
else
|
||
{
|
||
_SkilAnim_Week = value;
|
||
}
|
||
}
|
||
|
||
#endregion
|
||
|
||
// 用于标记那类活动消息需要显示
|
||
private bool needShowDayCircle = false;
|
||
private bool needShowWeekCircle = false;
|
||
|
||
#region
|
||
|
||
public void InitCircleAwardCnt(GC_CIRCLE_TASK_DRAW_DIAL_INFO packet)
|
||
{
|
||
LogModule.DebugLog("LoadingScene:" + GameManager.gameManager.RunningScene);
|
||
|
||
if(packet.LeftNum > _LastAwardCnt)
|
||
{
|
||
needShowDayCircle = true;
|
||
}
|
||
_LastAwardCnt = packet.LeftNum;
|
||
_CurState = packet.DialState;
|
||
_RewardIndex = packet.RewardIndex;
|
||
_MultiNumIndex = packet.MultiNumIndex;
|
||
|
||
if(packet.LeftNumWeek > _LastAwardCnt_Week)
|
||
{
|
||
needShowWeekCircle = true;
|
||
}
|
||
_LastAwardCnt_Week = packet.LeftNumWeek;
|
||
_CurState_Week = packet.DialStateWeek;
|
||
_RewardIndex_Week = packet.RewardIndexWeek;
|
||
_MultiNumIndex_Week = packet.MultiNumIndexWeek;
|
||
|
||
// 每日
|
||
if (MissionCircleAward.MissionCircleAward_Day && needShowDayCircle && _CurState == 0)
|
||
{
|
||
MissionCircleAward.MissionCircleAward_Day.Close();
|
||
}
|
||
else if (MissionCircleAward.MissionCircleAward_Day && MissionCircleAward.MissionCircleAward_Day.WaittingAward)
|
||
{
|
||
MissionCircleAward.MissionCircleAward_Day._TargetIdxOut = _RewardIndex;
|
||
MissionCircleAward.MissionCircleAward_Day._TargetIdxIn = _MultiNumIndex;
|
||
MissionCircleAward.MissionCircleAward_Day.SelectAward();
|
||
needShowDayCircle = false;
|
||
}
|
||
else if (MissionCircleAward.MissionCircleAward_Day)
|
||
{
|
||
MissionCircleAward.MissionCircleAward_Day.Refresh();
|
||
needShowDayCircle = false;
|
||
}
|
||
|
||
// 每周
|
||
if (MissionCircleAward.MissionCircleAward_Week && needShowWeekCircle && _CurState == 0)
|
||
{
|
||
MissionCircleAward.MissionCircleAward_Week.Close();
|
||
}
|
||
else if (MissionCircleAward.MissionCircleAward_Week && MissionCircleAward.MissionCircleAward_Week.WaittingAward)
|
||
{
|
||
MissionCircleAward.MissionCircleAward_Week._TargetIdxOut = _RewardIndex_Week;
|
||
MissionCircleAward.MissionCircleAward_Week._TargetIdxIn = _MultiNumIndex_Week;
|
||
MissionCircleAward.MissionCircleAward_Week.SelectAward();
|
||
needShowWeekCircle = false;
|
||
}
|
||
else if (MissionCircleAward.MissionCircleAward_Week)
|
||
{
|
||
MissionCircleAward.MissionCircleAward_Week.Refresh();
|
||
needShowWeekCircle = false;
|
||
}
|
||
|
||
// 若两种数据都有需要更新的情况,显示完 每日的 再到 每周的。
|
||
if (needShowDayCircle)
|
||
{
|
||
UIManager.ShowUI(UIInfo.MissionCircleAward_Day);
|
||
needShowDayCircle = false;
|
||
}
|
||
else if(needShowWeekCircle)
|
||
{
|
||
UIManager.ShowUI(UIInfo.MissionCircleAward_Week);
|
||
needShowWeekCircle = false;
|
||
}
|
||
|
||
// 更新聊天记录上的奖励图标提示
|
||
if (ExtraFunTipRoot.Instance())
|
||
{
|
||
ExtraFunTipRoot.Instance().UpdateMissionAward();
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 点击抽奖,请求服务器返回内外圈结果
|
||
/// </summary>
|
||
public void SelectAward(CircleType ct)
|
||
{
|
||
CG_RADOM_CIRCLE_TASK_DIAL packet = (CG_RADOM_CIRCLE_TASK_DIAL)PacketDistributed.CreatePacket(MessageID.PACKET_CG_RADOM_CIRCLE_TASK_DIAL);
|
||
packet.DialType = 1;
|
||
|
||
//CircleType - 1 每日, 2 每周
|
||
packet.CircleType = (int)ct;
|
||
|
||
packet.SendPacket();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 服务器返回的抽奖结果,内外圈奖励的索引
|
||
/// </summary>
|
||
/// <param name="packet"></param>
|
||
public void SelectAwardRet(GC_RADOM_CIRCLE_TASK_DIAL_RET packet)
|
||
{
|
||
// 据说已经不使用改协议返回结果
|
||
|
||
//if (MissionCircleAward.MissionCircleAward_Day != null && MissionCircleAward.MissionCircleAward_Day.gameObject.activeInHierarchy == true)
|
||
//{
|
||
// MissionCircleAward.MissionCircleAward_Day._TargetIdxOut = packet.RewardIndex;
|
||
// MissionCircleAward.MissionCircleAward_Day._TargetIdxIn = packet.MultiNumIndex;
|
||
// MissionCircleAward.MissionCircleAward_Day.SelectAward();
|
||
//}
|
||
//else
|
||
//{
|
||
// GetAward(CircleType.daily);
|
||
//}
|
||
|
||
//if (MissionCircleAward.MissionCircleAward_Week != null && MissionCircleAward.MissionCircleAward_Week.gameObject.activeInHierarchy == true)
|
||
//{
|
||
// MissionCircleAward.MissionCircleAward_Week._TargetIdxOut = packet.RewardIndex;
|
||
// MissionCircleAward.MissionCircleAward_Week._TargetIdxIn = packet.MultiNumIndex;
|
||
// MissionCircleAward.MissionCircleAward_Week.SelectAward();
|
||
//}
|
||
//else
|
||
//{
|
||
// GetAward(CircleType.weekly);
|
||
//}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 通知服务器发放奖品
|
||
/// </summary>
|
||
public void GetAward(CircleType ct)
|
||
{
|
||
CG_RADOM_CIRCLE_TASK_DIAL packet = (CG_RADOM_CIRCLE_TASK_DIAL)PacketDistributed.CreatePacket(MessageID.PACKET_CG_RADOM_CIRCLE_TASK_DIAL);
|
||
packet.DialType = 2;
|
||
packet.CircleType = (int)ct;
|
||
|
||
packet.SendPacket();
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region auto complate
|
||
|
||
public bool IsCanAutoComplate()
|
||
{
|
||
return true;
|
||
}
|
||
|
||
public void AutoComplateMissions()
|
||
{
|
||
if (!IsCanAutoComplate())
|
||
return;
|
||
}
|
||
|
||
public void DoAutoComplate()
|
||
{
|
||
|
||
}
|
||
|
||
#endregion
|
||
}
|