Core/GameEngine/DataToCtl/PackageRegedit.cs
@@ -433,6 +433,8 @@ Register(typeof(HA806_tagMCMysticalShopTimeInfo), typeof(DTCA806_tagMCMysticalShopTimeInfo)); Register(typeof(HAA0A_tagMCWeekPartyInfo), typeof(DTCAA0A_tagMCWeekPartyInfo)); Register(typeof(HAA0B_tagMCWeekPartyPlayerInfo), typeof(DTCAA0B_tagMCWeekPartyPlayerInfo)); Register(typeof(HAA0C_tagMCActLoginAwardInfo), typeof(DTCAA0C_tagMCActLoginAwardInfo)); Register(typeof(HAA0D_tagMCActLoginAwardPlayerInfo), typeof(DTCAA0D_tagMCActLoginAwardPlayerInfo)); } private static void Register(Type _pack, Type _business) Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA0C_tagMCActLoginAwardInfo.cs
New file @@ -0,0 +1,20 @@ using UnityEngine; using System.Collections; using Snxxz.UI; // AA 0C 登录奖励活动信息 #tagMCActLoginAwardInfo public class DTCAA0C_tagMCActLoginAwardInfo : DtcBasic { LoginRewardModel m_LoginRewardModel; LoginRewardModel loginRewardModel { get { return m_LoginRewardModel ?? (m_LoginRewardModel = ModelCenter.Instance.GetModel<LoginRewardModel>()); } } public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); HAA0C_tagMCActLoginAwardInfo vNetData = vNetPack as HAA0C_tagMCActLoginAwardInfo; if (vNetData == null) { return; } loginRewardModel.LoginAwardInfo(vNetData); } } Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA0C_tagMCActLoginAwardInfo.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 7a1f6e4974acd9e4fa893257d4a0a5a3 timeCreated: 1547783303 licenseType: Free MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA0D_tagMCActLoginAwardPlayerInfo.cs
New file @@ -0,0 +1,20 @@ using UnityEngine; using System.Collections; using Snxxz.UI; // AA 0D 登录奖励玩家活动信息 #tagMCActLoginAwardPlayerInfo public class DTCAA0D_tagMCActLoginAwardPlayerInfo : DtcBasic { LoginRewardModel m_LoginRewardModel; LoginRewardModel loginRewardModel { get { return m_LoginRewardModel ?? (m_LoginRewardModel = ModelCenter.Instance.GetModel<LoginRewardModel>()); } } public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); HAA0D_tagMCActLoginAwardPlayerInfo vNetData = vNetPack as HAA0D_tagMCActLoginAwardPlayerInfo; if (vNetData == null) { return; } loginRewardModel.LoginAwardPlayerInfo(vNetData); } } Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA0D_tagMCActLoginAwardPlayerInfo.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 34ae4e7c0f7c0184391054f28930408a timeCreated: 1547783303 licenseType: Free MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA0C_tagMCActLoginAwardInfo.cs
New file @@ -0,0 +1,75 @@ using UnityEngine; using System.Collections; // AA 0C 登录奖励活动信息 #tagMCActLoginAwardInfo public class HAA0C_tagMCActLoginAwardInfo : GameNetPackBasic { public string StartDate; // 开始日期 y-m-d public string EndtDate; // 结束日期 y-m-d public ushort AdvanceMinutes; // 提前显示分钟 public byte IsDayReset; //是否每天重置 public byte ResetType; // 重置类型,0-0点重置;1-5点重置 public ushort LimitLV; // 限制等级 public byte DayCnt; // 天数 public tagMCActLoginAwardDayInfo[] DayInfoList; // 每天模板 public byte TCount; // 模板数 public tagMCActLoginAwardAction[] ActionInfo; // 活动模板信息 public HAA0C_tagMCActLoginAwardInfo () { _cmd = (ushort)0xAA0C; } public override void ReadFromBytes (byte[] vBytes) { TransBytes (out StartDate, vBytes, NetDataType.Chars, 10); TransBytes (out EndtDate, vBytes, NetDataType.Chars, 10); TransBytes (out AdvanceMinutes, vBytes, NetDataType.WORD); TransBytes (out IsDayReset, vBytes, NetDataType.BYTE); TransBytes (out ResetType, vBytes, NetDataType.BYTE); TransBytes (out LimitLV, vBytes, NetDataType.WORD); TransBytes (out DayCnt, vBytes, NetDataType.BYTE); DayInfoList = new tagMCActLoginAwardDayInfo[DayCnt]; for (int i = 0; i < DayCnt; i ++) { DayInfoList[i] = new tagMCActLoginAwardDayInfo(); TransBytes (out DayInfoList[i].ActCnt, vBytes, NetDataType.BYTE); TransBytes (out DayInfoList[i].TemplateList, vBytes, NetDataType.WORD, DayInfoList[i].ActCnt); } TransBytes (out TCount, vBytes, NetDataType.BYTE); ActionInfo = new tagMCActLoginAwardAction[TCount]; for (int i = 0; i < TCount; i ++) { ActionInfo[i] = new tagMCActLoginAwardAction(); TransBytes (out ActionInfo[i].TemplateID, vBytes, NetDataType.DWORD); TransBytes (out ActionInfo[i].ActionType, vBytes, NetDataType.WORD); TransBytes (out ActionInfo[i].TotalTimes, vBytes, NetDataType.DWORD); TransBytes (out ActionInfo[i].SingleTimes, vBytes, NetDataType.DWORD); TransBytes (out ActionInfo[i].Count, vBytes, NetDataType.BYTE); ActionInfo[i].ItemInfo = new tagMCActLoginAwardItem[ActionInfo[i].Count]; for (int j = 0; j < ActionInfo[i].Count; j ++) { ActionInfo[i].ItemInfo[j] = new tagMCActLoginAwardItem(); TransBytes (out ActionInfo[i].ItemInfo[j].ItemID, vBytes, NetDataType.DWORD); TransBytes (out ActionInfo[i].ItemInfo[j].ItemCnt, vBytes, NetDataType.WORD); TransBytes (out ActionInfo[i].ItemInfo[j].IsBind, vBytes, NetDataType.BYTE); } } } public struct tagMCActLoginAwardItem { public uint ItemID; // 物品ID public ushort ItemCnt; // 物品数量 public byte IsBind; // 是否绑定 } public struct tagMCActLoginAwardAction { public uint TemplateID; // 模板ID public ushort ActionType; // 活动类别 public uint TotalTimes; // 可完成的总次数,0表示不限次数 public uint SingleTimes; // 单次领奖需要的次数 public byte Count; // 物品数 public tagMCActLoginAwardItem[] ItemInfo; // 物品信息 } public struct tagMCActLoginAwardDayInfo { public byte ActCnt; // 数量 public ushort[] TemplateList; // 模板列表 } } Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA0C_tagMCActLoginAwardInfo.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: b1fcb37796d75a545a76f01f1ec085bf timeCreated: 1547783303 licenseType: Free MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA0D_tagMCActLoginAwardPlayerInfo.cs
New file @@ -0,0 +1,43 @@ using UnityEngine; using System.Collections; // AA 0D 登录奖励玩家活动信息 #tagMCActLoginAwardPlayerInfo public class HAA0D_tagMCActLoginAwardPlayerInfo : GameNetPackBasic { public byte Count; public tagMCActLoginAwardDayPlayerInfo[] DayInfoList; //活动完成次数信息 public HAA0D_tagMCActLoginAwardPlayerInfo () { _cmd = (ushort)0xAA0D; } public override void ReadFromBytes (byte[] vBytes) { TransBytes (out Count, vBytes, NetDataType.BYTE); DayInfoList = new tagMCActLoginAwardDayPlayerInfo[Count]; for (int i = 0; i < Count; i ++) { DayInfoList[i] = new tagMCActLoginAwardDayPlayerInfo(); TransBytes (out DayInfoList[i].DayIndex, vBytes, NetDataType.DWORD); TransBytes (out DayInfoList[i].ACount, vBytes, NetDataType.DWORD); DayInfoList[i].TaskList = new tagMCActLoginAwardTaskInfo[DayInfoList[i].ACount]; for (int j = 0; j < DayInfoList[i].ACount; j ++) { DayInfoList[i].TaskList[j] = new tagMCActLoginAwardTaskInfo(); TransBytes (out DayInfoList[i].TaskList[j].TemplateID, vBytes, NetDataType.WORD); TransBytes (out DayInfoList[i].TaskList[j].CurTimes, vBytes, NetDataType.WORD); TransBytes (out DayInfoList[i].TaskList[j].GotTimes, vBytes, NetDataType.WORD); } } } public struct tagMCActLoginAwardDayPlayerInfo { public uint DayIndex; //第X天 public uint ACount; //任务条目数 public tagMCActLoginAwardTaskInfo[] TaskList; //活动完成次数信息 } public struct tagMCActLoginAwardTaskInfo { public ushort TemplateID; // 模板ID public ushort CurTimes; //已完成次数 public ushort GotTimes; //已领取次数 } } Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA0D_tagMCActLoginAwardPlayerInfo.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 0ba7797ba0b9ed64daf82d4441538adf timeCreated: 1547783303 licenseType: Free MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/OpenServerActivity/LoginRewardModel.cs
@@ -10,6 +10,14 @@ [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() { @@ -17,18 +25,234 @@ 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; } } System/WindowBase/ModelCenter.cs
@@ -221,6 +221,7 @@ RegisterModel<CrossServerBossModel>(); RegisterModel<OpenServiceAchievementModel>(); RegisterModel<FashionDressModel>(); RegisterModel<LoginRewardModel>(); inited = true; } Utility/EnumHelper.cs
@@ -1203,6 +1203,8 @@ Def_RewardType_IceLodeStar=19, //冰晶矿脉星级奖励19 Def_RewardType_WeekPartyAct=20, //领取周狂欢活动奖励20 Def_RewardType_WeekPartyPoint=21,// 领取周狂欢积分奖励21 Def_RewardType_ActLoginAwardAct=22,// 领取登录奖励活动奖励22 }