Пример #1
0
        //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);
                    }
                }
            }
        }
Пример #2
0
        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();
        }