Files

271 lines
7.5 KiB
C#
Raw Permalink Normal View History

2024-08-23 15:49:34 +08:00
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
}