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
|
|||
|
}
|