| | |
| | | [XLua.LuaCallCSharp]
|
| | | public class LoginRewardModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
|
| | | {
|
| | | public event Action LoginAwardInfoUpdate;//领奖记录变更 |
| | | public Dictionary<int, WeekPartyDayInfoClass> LoginAwardInfoDic = new Dictionary<int, WeekPartyDayInfoClass>();//领奖信息
|
| | | public Dictionary<int, WeekPartyDayClass> LoginAwardDayDic = new Dictionary<int, WeekPartyDayClass>();//每天的奖励信息
|
| | | public Dictionary<int, WeekPartyActionClass> LoginAwardDic = new Dictionary<int, WeekPartyActionClass>();//活动模板信息
|
| | | public Dictionary<int, Redpoint> RedPointDic = new Dictionary<int, Redpoint>();//红点
|
| | | public int LimitLV = 0;//限制等级
|
| | | private const int Redpoint_key = 6666;//周狂欢红点
|
| | | public Redpoint redPointStre = new Redpoint(666, Redpoint_key);
|
| | | public override void Init()
|
| | | {
|
| | |
|
| | |
| | |
|
| | | public void OnBeforePlayerDataInitialize()
|
| | | {
|
| | | |
| | | LoginAwardInfoDic.Clear();
|
| | | }
|
| | |
|
| | | public void OnPlayerLoginOk()
|
| | | {
|
| | | |
| | | SetRedPoint();
|
| | | }
|
| | |
|
| | | public override void UnInit()
|
| | | {
|
| | |
|
| | | }
|
| | |
|
| | | public void LoginAwardInfo(HAA0C_tagMCActLoginAwardInfo info)//登录奖励活动信息
|
| | | {
|
| | | LimitLV = info.LimitLV;
|
| | | LoginAwardDayDic.Clear();
|
| | | LoginAwardDic.Clear();
|
| | | for (int i = 0; i < info.DayCnt; i++)//每天的奖励信息
|
| | | {
|
| | | int Index = i;
|
| | | var dayInfo = info.DayInfoList[i];
|
| | | WeekPartyDayClass loginAwardDay = new WeekPartyDayClass();
|
| | | loginAwardDay.TemplateList = new int[dayInfo.ActCnt];
|
| | | for (int k = 0; k < dayInfo.ActCnt; k++)
|
| | | {
|
| | | loginAwardDay.TemplateList[k] = dayInfo.TemplateList[k];
|
| | | }
|
| | | if (LoginAwardDayDic.ContainsKey(Index))
|
| | | {
|
| | | LoginAwardDayDic[Index] = loginAwardDay;
|
| | | }
|
| | | else
|
| | | {
|
| | | LoginAwardDayDic.Add(Index, loginAwardDay);
|
| | | }
|
| | | }
|
| | |
|
| | | for (int i = 0; i < info.TCount; i++)// 活动模板信息
|
| | | {
|
| | | var ActionInfo = info.ActionInfo[i];
|
| | | var templateID = (int)ActionInfo.TemplateID;
|
| | | WeekPartyActionClass loginAward = new WeekPartyActionClass();
|
| | | loginAward.TemplateID = (int)ActionInfo.TemplateID;
|
| | | loginAward.ActionType = (int)ActionInfo.ActionType;
|
| | | loginAward.TotalTimes = (int)ActionInfo.TotalTimes;
|
| | | loginAward.SingleTimes = (int)ActionInfo.SingleTimes;
|
| | | loginAward.WeekPartyItem = new WeekPartyItemClass[ActionInfo.Count];
|
| | | for (int z = 0; z < ActionInfo.Count; z++)
|
| | | {
|
| | | var item = ActionInfo.ItemInfo[z];
|
| | | WeekPartyItemClass loginAwardItem = new WeekPartyItemClass();
|
| | | loginAwardItem.ItemID = (int)item.ItemID;
|
| | | loginAwardItem.ItemCnt = (int)item.ItemCnt;
|
| | | loginAwardItem.IsBind = item.IsBind;
|
| | | loginAward.WeekPartyItem[z] = loginAwardItem;
|
| | | }
|
| | | if (LoginAwardDic.ContainsKey(templateID))
|
| | | {
|
| | | LoginAwardDic[templateID] = loginAward;
|
| | | }
|
| | | else
|
| | | {
|
| | | LoginAwardDic.Add(templateID, loginAward);
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | public void LoginAwardPlayerInfo(HAA0D_tagMCActLoginAwardPlayerInfo info)//登录奖励玩家活动信息
|
| | | {
|
| | | for (int i = 0; i < info.Count; i++)
|
| | | {
|
| | | var Dayinfo = info.DayInfoList[i];
|
| | | WeekPartyDayInfoClass loginAwardPlayerClass = new WeekPartyDayInfoClass();
|
| | | var dayindex = (int)Dayinfo.DayIndex;
|
| | | loginAwardPlayerClass.DayIndex = dayindex;
|
| | | if (LoginAwardInfoDic.ContainsKey(dayindex))
|
| | | {
|
| | | var dit = LoginAwardInfoDic[dayindex];
|
| | | dit.DayIndex = dayindex;
|
| | | for (int j = 0; j < dit.ActionType.Length; j++)
|
| | | {
|
| | | if (dit.ActionType[j].TemplateID == Dayinfo.TaskList[0].TemplateID)
|
| | | {
|
| | | ActionTypeClass ActionType = new ActionTypeClass();
|
| | | ActionType.TemplateID = Dayinfo.TaskList[0].TemplateID;
|
| | | ActionType.CurTimes = Dayinfo.TaskList[0].CurTimes;
|
| | | ActionType.GotTimes = Dayinfo.TaskList[0].GotTimes;
|
| | | dit.ActionType[j] = ActionType;
|
| | | }
|
| | |
|
| | | }
|
| | | LoginAwardInfoDic[dayindex] = dit;
|
| | | }
|
| | | else
|
| | | {
|
| | | loginAwardPlayerClass.ActionType = new ActionTypeClass[Dayinfo.ACount];
|
| | | for (int k = 0; k < Dayinfo.ACount; k++)
|
| | | {
|
| | | var Task = Dayinfo.TaskList[k];
|
| | | ActionTypeClass ActionType = new ActionTypeClass();
|
| | | ActionType.TemplateID = Task.TemplateID;
|
| | | ActionType.CurTimes = Task.CurTimes;
|
| | | ActionType.GotTimes = Task.GotTimes;
|
| | | LoginAwardInfoDic.Add(dayindex, loginAwardPlayerClass);
|
| | | }
|
| | | }
|
| | | }
|
| | | SetRedPoint();
|
| | | if (LoginAwardInfoUpdate != null)
|
| | | {
|
| | | LoginAwardInfoUpdate();
|
| | | }
|
| | | }
|
| | |
|
| | | public int GetRewardNumber(int Day, int ID)//获取领奖次数
|
| | | {
|
| | | int Num = 0;
|
| | | if (LoginAwardInfoDic.ContainsKey(Day))
|
| | | {
|
| | | var loginAward = LoginAwardInfoDic[Day];
|
| | | for (int i = 0; i < loginAward.ActionType.Length; i++)
|
| | | {
|
| | | var ActionType = loginAward.ActionType[i];
|
| | | if (ID == ActionType.TemplateID)
|
| | | {
|
| | | Num = ActionType.GotTimes;
|
| | | }
|
| | | }
|
| | | }
|
| | | return Num;
|
| | | }
|
| | |
|
| | | public int GetCarryOutNum(int Day,int ID)//获取已完成次数
|
| | | {
|
| | | int Num = 0;
|
| | | if (LoginAwardInfoDic.ContainsKey(Day))
|
| | | {
|
| | | var loginAward = LoginAwardInfoDic[Day];
|
| | | for (int i = 0; i < loginAward.ActionType.Length; i++)
|
| | | {
|
| | | var ActionType = loginAward.ActionType[i];
|
| | | if (ID == ActionType.TemplateID)
|
| | | {
|
| | | Num = ActionType.CurTimes;
|
| | | }
|
| | | }
|
| | | }
|
| | | return Num;
|
| | | }
|
| | |
|
| | | public void SendLoginAwardInfo(int day, int temdayplateID)//领取奖励
|
| | | {
|
| | | CA504_tagCMPlayerGetReward getReward = new CA504_tagCMPlayerGetReward();
|
| | | getReward.RewardType = (byte)GotServerRewardType.Def_RewardType_ActLoginAwardAct;
|
| | | getReward.DataEx = (uint)day;
|
| | | string StrID = temdayplateID.ToString();
|
| | | getReward.DataExStrLen = (byte)StrID.Length;
|
| | | getReward.DataExStr = StrID;
|
| | | GameNetSystem.Instance.SendInfo(getReward);
|
| | | }
|
| | |
|
| | | private void SetRedPoint()//红点设置
|
| | | {
|
| | | SetRedPointID();
|
| | | foreach (var key in RedPointDic.Keys)
|
| | | {
|
| | | RedPointDic[key].state = RedPointState.None;
|
| | | }
|
| | | foreach (var key in RedPointDic.Keys)
|
| | | {
|
| | | RedPointDic[key].state = SetRedPointState(key);
|
| | | }
|
| | | }
|
| | | private void SetRedPointID()//设置红点ID
|
| | | {
|
| | | if (RedPointDic.Count > 0)
|
| | | {
|
| | | return;
|
| | | }
|
| | | foreach (var key in LoginAwardInfoDic.Keys)
|
| | | {
|
| | | int RedPoint = Redpoint_key * 10 + key;
|
| | | if (!RedPointDic.ContainsKey(key))
|
| | | {
|
| | | Redpoint redPointMountStare = new Redpoint(Redpoint_key, RedPoint);
|
| | | RedPointDic.Add(key, redPointMountStare);
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | private RedPointState SetRedPointState(int day)//红点状态设置
|
| | | {
|
| | | if (!LoginAwardDayDic.ContainsKey(day) || !LoginAwardInfoDic.ContainsKey(day))
|
| | | {
|
| | | return RedPointState.None;
|
| | | }
|
| | | WeekPartyDayClass loginAward = new WeekPartyDayClass();
|
| | | foreach (var key in LoginAwardDayDic.Keys)
|
| | | {
|
| | | if (key == day)
|
| | | {
|
| | | loginAward = LoginAwardDayDic[key];
|
| | | }
|
| | | }
|
| | | for (int i = 0; i < loginAward.TemplateList.Length; i++)
|
| | | {
|
| | | var TemplateID = loginAward.TemplateList[i];
|
| | | if (LoginAwardDic.ContainsKey(TemplateID))
|
| | | {
|
| | | var LoginAward = LoginAwardDic[TemplateID];
|
| | | int number = LoginAward.TotalTimes / LoginAward.SingleTimes;
|
| | | int rewardNum = GetRewardNumber(day, TemplateID);//已领奖次数
|
| | | int carryOutNum = GetCarryOutNum(day, TemplateID);//已完成次数
|
| | | int TaypeNumber = 0;
|
| | | if (carryOutNum - rewardNum > 0)
|
| | | {
|
| | | TaypeNumber = (carryOutNum - rewardNum) / LoginAward.SingleTimes;
|
| | | }
|
| | | if (TaypeNumber > 0 && rewardNum < number)
|
| | | {
|
| | | return RedPointState.GetReward;
|
| | | }
|
| | | }
|
| | |
|
| | | }
|
| | | return RedPointState.None;
|
| | | }
|
| | | } |
| | | |
| | | |