//type 1:开始抽奖 2:下次抽奖 private void ActivityLottery(int id, OperationActivityTermDataModel current, int type) { if (null != mCoroutine) { Logger.Error("ClaimRewardOperationActivity not finish"); return; } int opt = id;//0重置,1抽奖 int need = 0; var lotterModel = current.LotteryData; if (0 == opt) { if (lotterModel.Times < lotterModel.TotalTimes) { return; } need = lotterModel.ResetCost; } else { if (lotterModel.Times >= lotterModel.TotalTimes) { return; } need = lotterModel.CurrentCost; } if (PlayerDataManager.Instance.GetRes((int)eResourcesType.DiamondRes) < need) { EventDispatcher.Instance.DispatchEvent(new ShowUIHintBoard(GameUtils.GetDictionaryText(210102))); GameUtils.GotoUiTab(79, 0); } else { if (null != GameLogic.Instance) { float delay = 0 == opt ? 0 : 1f; mCoroutine = GameLogic.Instance.StartCoroutine(OperationActivityClaimRewardCoroutine(current.ActivityId, id, delay)); if (0 != opt) { if (type == 1) { isLotteryStart = false; } else { isLotteryEnd = false; } var e = new OperationActivityDrawLotteryEvent(-1); EventDispatcher.Instance.DispatchEvent(e); } } } }
private void OperationActivityDataInit(MsgOperActivty msg) { LastRequestTime = Game.Instance.ServerTime; var msgTerms = msg.Terms; msgTerms.Sort(SortCompare); foreach (var termModel in OperationActivityDataModel.OpenActivityTermList) { termModel.ActivityId = -1; } foreach (var termModel in OperationActivityDataModel.NormalActivityTermList) { termModel.ActivityId = -1; } mItemCache.Clear(); int i = 0; int q = 0; foreach (var msgTerm in msgTerms) { // if (i >= OperationActivityDataModel.ActivityTermList.Count) // { // break; // } if (-1 != msgTerm.ParentTypeId) { continue; } var termModel = 0 == msgTerm.ActivityType ? OperationActivityDataModel.OpenActivityTermList[i]:OperationActivityDataModel.NormalActivityTermList[q]; termModel.ActivityId = msgTerm.Id; termModel.Name = msgTerm.Name; termModel.BkgIconId = msgTerm.BkgIconId; termModel.SmallIcon = msgTerm.SmallIcon; termModel.Desc = msgTerm.Desc; termModel.EndTime = DateTime.FromBinary(msgTerm.EndTime); termModel.StartTime = DateTime.FromBinary(msgTerm.StarTime); termModel.ScoreTime = DateTime.FromBinary(msgTerm.ScoreTime); termModel.ModelPath = msgTerm.ModelPath; termModel.UIType = msgTerm.UIType; termModel.NeedShowNotice = msgTerm.RedDotLimit; if (termModel.StartTime == DateTime.MinValue || termModel.EndTime == DateTime.MaxValue) { termModel.TimeString = ""; } else { var str = GameUtils.GetDictionaryText(270251); termModel.TimeString = termModel.StartTime.ToString(str) + "-" + termModel.EndTime.ToString(str); } termModel.Type = msgTerm.Type; if ((OperationActivityType)termModel.Type == OperationActivityType.Guide) { termModel.UIType = (int)OperationActivityUIType.Guide; } else if ((OperationActivityType)termModel.Type == OperationActivityType.Recharge) { if (termModel.UIType != (int)OperationActivityUIType.Charge && termModel.UIType != (int)OperationActivityUIType.ShowModel) { termModel.UIType = (int)OperationActivityUIType.Charge; } } else if ((OperationActivityType)termModel.Type == OperationActivityType.Rank) { termModel.UIType = (int)OperationActivityUIType.Rank; termModel.Desc += string.Format("[{0}]", termModel.ScoreTime.Date.ToString("yyyy/MM/dd/HH:mm")); } else if ((OperationActivityType)termModel.Type == OperationActivityType.Lottery) { termModel.UIType = (int)OperationActivityUIType.Lottery; //termModel.Desc += string.Format("[{0}]", termModel.ScoreTime.ToString("yyyy/MM/dd/HH:mm")); } else { termModel.UIType = msgTerm.UIType; } var uitype = (OperationActivityUIType)termModel.UIType; var tempList = new ObservableCollection <OperationActivityItemDataModel>(); foreach (var itemData in msgTerm.Items) { var itemModel = new OperationActivityItemDataModel(); AssignActivityItemData(itemData, termModel.ActivityId, itemModel); ParseRewardItem(itemData.Rewards, itemModel.Rewards); if (Game.Instance.ServerTime < itemModel.StartTime || Game.Instance.ServerTime > itemModel.EndTime) { continue; } tempList.Add(itemModel); } if (OperationActivityUIType.Guide == uitype) { termModel.GuideData.ActivityItemList = tempList; foreach (var itemDataModel in termModel.GuideData.ActivityItemList) { mItemCache.Add(itemDataModel); } } else if (OperationActivityUIType.Normal == uitype) { termModel.NormalData.ActivityItemList = tempList; foreach (var itemDataModel in termModel.NormalData.ActivityItemList) { mItemCache.Add(itemDataModel); } } else if (OperationActivityUIType.Charge == uitype) { termModel.ChargeData.ActivityItemList = tempList; foreach (var itemDataModel in termModel.ChargeData.ActivityItemList) { mItemCache.Add(itemDataModel); } } else if (OperationActivityUIType.Table == uitype) { foreach (var tbItem in termModel.TableData.TableList) { tbItem.ActivityItemList.Clear(); } } else if (OperationActivityUIType.Rank == uitype) { termModel.RankData.ActivityItemList = tempList; foreach (var itemDataModel in termModel.RankData.ActivityItemList) { mItemCache.Add(itemDataModel); } } else if (OperationActivityUIType.Discount == uitype) { termModel.DiscountData.ActivityItemList = tempList; foreach (var itemDataModel in termModel.DiscountData.ActivityItemList) { mItemCache.Add(itemDataModel); } } else if (OperationActivityUIType.ShowModel == uitype) { termModel.ShowModelData.ActivityItemList = tempList; foreach (var itemDataModel in termModel.ShowModelData.ActivityItemList) { mItemCache.Add(itemDataModel); } termModel.ShowModelData.Position = Vector3.zero; if (msgTerm.Param.Count > 2) { // 设置模型坐标。默认是放大100倍的 termModel.ShowModelData.Position = new Vector3(msgTerm.Param[0] / 100.0f , msgTerm.Param[1] / 100.0f, msgTerm.Param[2] / 100.0f); } termModel.ShowModelData.Rotation = Quaternion.identity; if (msgTerm.Param.Count > 5) { // 设置模型旋转 默认是放大100倍的 var rotVector3 = new Vector3(msgTerm.Param[3] / 100.0f , msgTerm.Param[4] / 100.0f, msgTerm.Param[5] / 100.0f); termModel.ShowModelData.Rotation = Quaternion.Euler(rotVector3); } } else if (OperationActivityUIType.Lottery == uitype) { var lotteryModel = termModel.LotteryData; lotteryModel.CostList.Clear(); for (int ci = 2; ci < msgTerm.Param.Count; ci++) { lotteryModel.CostList.Add(msgTerm.Param[ci]); }//顺序不要条还 lotteryModel.Times = msgTerm.Param[0]; lotteryModel.ResetCost = msgTerm.Param[1]; lotteryModel.ActivityItemList = tempList; foreach (var itemDataModel in lotteryModel.ActivityItemList) { mItemCache.Add(itemDataModel); } for (int k = 0; k < lotteryModel.Rewards.Count; k++) { var rewardItemModel = lotteryModel.Rewards[k]; if (k < lotteryModel.ActivityItemList.Count) { var reward = lotteryModel.ActivityItemList[k].Rewards[0]; rewardItemModel.ItemId = reward.ItemId; rewardItemModel.Count = reward.Count; } else { rewardItemModel.ItemId = -1; } } } else if (OperationActivityUIType.Holiday == uitype) { termModel.HolidayData.ActivityItemList = tempList; foreach (var itemDataModel in termModel.HolidayData.ActivityItemList) { mItemCache.Add(itemDataModel); } } else { termModel.NormalData.ActivityItemList = tempList; foreach (var itemDataModel in termModel.NormalData.ActivityItemList) { mItemCache.Add(itemDataModel); } Logger.Error("uitype={0}", uitype); } if (0 == msgTerm.ActivityType) { i++; } else { q++; } } foreach (var msgTermItem in msgTerms) { if (-1 == msgTermItem.ParentTypeId) { continue; } OperationActivityTermDataModel parent = null; foreach (var item in OperationActivityDataModel.OpenActivityTermList) { if (msgTermItem.ParentTypeId == item.ActivityId) { parent = item; break; } } foreach (var item in OperationActivityDataModel.NormalActivityTermList) { if (msgTermItem.ParentTypeId == item.ActivityId) { parent = item; break; } } if (null == parent) { Logger.Error("null == parent"); continue; } OperationActivityTypeNormalDataModel termModel1 = null; for (int j = 0; j < parent.TableData.TableList.Count; j++) { if (0 == parent.TableData.TableList[j].ActivityItemList.Count) { termModel1 = parent.TableData.TableList[j]; break; } } if (null == termModel1) { Logger.Error("null == normalDataModel"); continue; } termModel1.ActivityId = msgTermItem.Id; termModel1.Name = msgTermItem.Name; termModel1.BkgIconId = msgTermItem.BkgIconId; termModel1.AllItemActive = false; var tempList1 = new ObservableCollection <OperationActivityItemDataModel>(); foreach (var itemData1 in msgTermItem.Items) { var itemModel1 = new OperationActivityItemDataModel(); AssignActivityItemData(itemData1, termModel1.ActivityId, itemModel1); ParseRewardItem(itemData1.Rewards, itemModel1.Rewards); if (Game.Instance.ServerTime < itemModel1.StartTime || Game.Instance.ServerTime > itemModel1.EndTime) { itemModel1.InTime = false; termModel1.AllItemActive = true; } else { itemModel1.InTime = true; } tempList1.Add(itemModel1); } termModel1.ActivityItemList = tempList1; foreach (var temp in termModel1.ActivityItemList) { mItemCache.Add(temp); } } OperationActivityDataModel.OnPropertyChanged("ActivityCount"); //OperationActivityDataModel1.OnPropertyChanged("ActivityCount"); //OperationActivityDataModel2.OnPropertyChanged("ActivityCount"); CheckAllCondition(); }