//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Tuesday, January 08, 2019 //-------------------------------------------------------- using System; using System.Collections.Generic; using TableConfig; using Snxxz.UI; using System.Linq; [XLua.LuaCallCSharp] public class ActionTypeClass { public int TemplateID; // 模板ID public int CurTimes; //已完成次数 public int GotTimes; //已领取次数 } public class WeekPartyDayInfoClass { public int DayIndex;//第X天 public int Point;//积分 public int AwardRecord;//领奖记录 public ActionTypeClass[] ActionType;//领奖信息 } public class TimeDayClass { public int Year; public int Month; public int Day; public string TimeStr; } public class WeekPartyItemClass { public int NeedPoint; // 领奖需要积分 public int ItemID; // 物品ID public int ItemCnt; // 物品数量 public int IsBind; // 是否绑定 } public class WeekPartyDayClass { public int Day; public int[] TemplateList;// 模板列表 public WeekPartyItemClass[] WeekPartyItem;//奖励列表 } public class WeekPartyActionClass//模板信息 { public int TemplateID; // 模板ID public int ActionType; // 活动类别 public int TotalTimes; // 可完成的总次数,0表示不限次数 public int SingleTimes; // 单次领奖需要的次数 public int Point; // 单次领奖积分 public WeekPartyItemClass[] WeekPartyItem;//物品奖励列表 } public class OpenServiceAchievementModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk { public Dictionary WeekPartyDayInfoDic = new Dictionary();//每天领取奖励信息 public event Action WeekPartyDayInfoUpdate;//领奖记录变更 public TimeDayClass[] TimeDayBeginAndOver = new TimeDayClass[2];//开始和结束时间 public int LimitLV = 0;//限制等级 public Dictionary WeekPartyDayDic = new Dictionary();//每天的奖励信息 public Dictionary WeekPartyActionDic = new Dictionary();//活动模板信息 public event Action WeekPartyUpdate;//活动信息变更 private int _SelectedNow = 0; public int SelectedNow//选中天 { get { return _SelectedNow; } set { _SelectedNow = value; } } private int _DayNow = 0; public int DayNow//当前天 { get { return _DayNow; } set { _DayNow = value; } } public override void Init() { } public void OnBeforePlayerDataInitialize() { } public void OnPlayerLoginOk() { } public override void UnInit() { } public void WeekPartyPlayerInfo(HAA0B_tagMCWeekPartyPlayerInfo info) { for (int i = 0; i < info.Count; i++) { var DayInfo = info.DayInfoList[i]; WeekPartyDayInfoClass WeekPartyDayInfo = new WeekPartyDayInfoClass(); WeekPartyDayInfo.DayIndex = (int)DayInfo.DayIndex; WeekPartyDayInfo.Point = (int)DayInfo.Point; WeekPartyDayInfo.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; WeekPartyDayInfo.ActionType[k] = ActionType; } if (WeekPartyDayInfoDic.ContainsKey((int)DayInfo.DayIndex)) { WeekPartyDayInfoDic[(int)DayInfo.DayIndex] = WeekPartyDayInfo; } else { WeekPartyDayInfoDic.Add((int)DayInfo.DayIndex, WeekPartyDayInfo); } } GetDayNow();//获取当前天数 if (WeekPartyDayInfoUpdate != null) { WeekPartyDayInfoUpdate(); } } public void WeekPartyInfo(HAA0A_tagMCWeekPartyInfo info) { string[] dateArray = info.StartDate.Split('-'); if (dateArray != null && dateArray.Length == 3) { TimeDayClass TimeDay = new TimeDayClass(); TimeDay.Year = int.Parse(dateArray[0].Trim()); TimeDay.Month = int.Parse(dateArray[1].Trim()); TimeDay.Day = int.Parse(dateArray[2].Trim()); TimeDay.TimeStr = info.StartDate; TimeDayBeginAndOver[0] = TimeDay; } string[] dateArrayO = info.EndtDate.Split('-'); if (dateArrayO != null && dateArrayO.Length == 3) { TimeDayClass TimeDay = new TimeDayClass(); TimeDay.Year = int.Parse(dateArrayO[0].Trim()); TimeDay.Month = int.Parse(dateArrayO[1].Trim()); TimeDay.Day = int.Parse(dateArrayO[2].Trim()); TimeDay.TimeStr = info.EndtDate; TimeDayBeginAndOver[1] = TimeDay; } LimitLV = info.LimitLV; for (int i = 0; i < info.DayCnt; i++) { int Index = i; var DayInfo = info.DayInfoList[i]; WeekPartyDayClass WeekPartyDay = new WeekPartyDayClass(); WeekPartyDay.TemplateList = new int[DayInfo.ActCnt]; for (int k = 0; k < DayInfo.ActCnt; k++) { WeekPartyDay.TemplateList[k] = DayInfo.TemplateList[k]; } WeekPartyDay.WeekPartyItem = new WeekPartyItemClass[DayInfo.PCount]; for (int p = 0; p < DayInfo.PCount; p++) { WeekPartyItemClass WeekPartyItem = new WeekPartyItemClass(); var Item = DayInfo.PItemInfo[p]; WeekPartyItem.NeedPoint = Item.NeedPoint; WeekPartyItem.ItemID = (int)Item.ItemID; WeekPartyItem.ItemCnt = (int)Item.ItemCnt; WeekPartyItem.IsBind = (int)Item.IsBind; WeekPartyDay.WeekPartyItem[p] = WeekPartyItem; } if (WeekPartyDayDic.ContainsKey(Index)) { WeekPartyDayDic[Index] = WeekPartyDay; } else { WeekPartyDayDic.Add(Index, WeekPartyDay); } }// 每天模板 for (int i = 0; i < info.TCount; i++) { var ActionInfo = info.ActionInfo[i]; WeekPartyActionClass WeekPartyAction = new WeekPartyActionClass(); WeekPartyAction.TemplateID = (int)ActionInfo.TemplateID; WeekPartyAction.ActionType = (int)ActionInfo.ActionType; WeekPartyAction.TotalTimes = (int)ActionInfo.TotalTimes; WeekPartyAction.SingleTimes = (int)ActionInfo.SingleTimes; WeekPartyAction.Point = (int)ActionInfo.Point; WeekPartyAction.WeekPartyItem = new WeekPartyItemClass[ActionInfo.Count]; for (int z = 0; z < ActionInfo.Count; z++) { var item = ActionInfo.ItemInfo[z]; WeekPartyItemClass WeekPartyItem = new WeekPartyItemClass(); WeekPartyItem.ItemID = (int)item.ItemID; WeekPartyItem.ItemCnt = (int)item.ItemCnt; WeekPartyItem.IsBind = item.IsBind; WeekPartyItem.NeedPoint = 0; } if (WeekPartyActionDic.ContainsKey((int)ActionInfo.TemplateID)) { WeekPartyActionDic[(int)ActionInfo.TemplateID] = WeekPartyAction; } else { WeekPartyActionDic.Add((int)ActionInfo.TemplateID, WeekPartyAction); } }// 活动模板信息 if (WeekPartyUpdate != null) { WeekPartyUpdate(); } } public int GetRewardNumber(int Day, int ID)//获取领奖次数 { int Num = -1; if (WeekPartyDayInfoDic.ContainsKey(Day)) { var WeekPartyDay = WeekPartyDayInfoDic[Day]; for (int i = 0; i < WeekPartyDay.ActionType.Length; i++) { var ActionType = WeekPartyDay.ActionType[i]; if (ID == ActionType.TemplateID) { Num = ActionType.GotTimes; } } } return Num; } public int GetCarryOutNum(int Day, int ID)//获取已完成次数 { int Num = -1; if (WeekPartyDayInfoDic.ContainsKey(Day)) { var WeekPartyDay = WeekPartyDayInfoDic[Day]; for (int i = 0; i < WeekPartyDay.ActionType.Length; i++) { var ActionType = WeekPartyDay.ActionType[i]; if (ID == ActionType.TemplateID) { Num = ActionType.CurTimes; } } } return Num; } public int GetPoint(int day)//获取某一天的积分 { int Point = 0; if (WeekPartyDayInfoDic.ContainsKey(day)) { Point = WeekPartyDayInfoDic[day].Point; } return Point; } public void GetDayNow()//获取活动第几天 { int Day = 0; var time = TimeDayBeginAndOver[0]; DateTime time1 = new DateTime(time.Year, time.Month, time.Day); DateTime time2 = new DateTime(TimeUtility.ServerNow.Year, TimeUtility.ServerNow.Month, TimeUtility.ServerNow.Day); TimeSpan ts = time2.Subtract(time1); Day = (int)ts.TotalDays; DayNow = Day; } }