Files
JJBB/Assets/Project/Script/Player/Mission/CircleMissionManager.cs
2024-08-23 15:49:34 +08:00

271 lines
7.5 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}