Example #1
0
        private void ChooseActivityMenu(int idx)
        {
            OperationActivityDataModel.CurrentSelectPageIdx = idx;

            EventDispatcher.Instance.DispatchEvent(new OperationActivityPage_Event(idx));


            if (OperationActivityDataModel.ActivityTermList[idx].UIType == (int)OperationActivityUIType.Table)
            {
                OperationActivityDataModel.ActivityTermList[idx].TableData.SubTabIdx = 0;
                EventDispatcher.Instance.DispatchEvent(new OperationActivitySubPagekEvent(idx));
            }

            if (OperationActivityDataModel.ActivityTermList[idx].UIType == (int)OperationActivityUIType.ShowModel)
            {
                OperationActivityDataModel.ModelId = OperationActivityDataModel.ActivityTermList[idx].ModelPath;
            }
            else
            {
                OperationActivityDataModel.ModelId = -1;
            }

            var term = OperationActivityDataModel.OpenActivityTermList[idx];


            if (OperationActivityTermDataModel.OnlyShow1Time == term.NeedShowNotice)
            {
                term.NeedShowNotice = OperationActivityTermDataModel.Hide;
                term.OnPropertyChanged("NoticeCount");
                OperationActivityDataModel.OnPropertyChanged("OpenNoticeCount");
            }

            var term1 = OperationActivityDataModel.NormalActivityTermList[idx];

            if (OperationActivityTermDataModel.OnlyShow1Time == term1.NeedShowNotice)
            {
                term1.NeedShowNotice = OperationActivityTermDataModel.Hide;
                term1.OnPropertyChanged("NoticeCount");
                OperationActivityDataModel.OnPropertyChanged("NormalNoticeCount");
            }
        }
Example #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();
        }
    private void OnSyncOperationActivityItem(IEvent ievent)
    {
        var e = ievent as SyncOperationActivityItemEvent;

        if (null == e.Data)
        {
            Dirty = true;
            return;
        }

        bool needRefreshLotteryMask = false;

        foreach (var item in mItemCache)
        {
            if (item.ItemId == e.Data.Id)
            {
                needRefreshLotteryMask = (0 == e.Data.AquiredTimes && item.AquiredTimes > 0);
                item.Count             = Math.Min(e.Data.Count, item.Need);
                item.AquiredTimes      = e.Data.AquiredTimes;
                item.RemainAquireTimes = string.Format(GameUtils.GetDictionaryText(100001156), Math.Max(item.AquiredTotalTimes - item.AquiredTimes, 0));
                CheckAllCondition();

                foreach (var term in OperationActivityDataModel.ActivityTermList)
                {
                    if (term.ActivityId == item.ParentId)
                    {
                        term.OnPropertyChanged("NoticeCount");
                        OperationActivityDataModel.OnPropertyChanged("NoticeCount");
                        break;
                    }
                    else if (term.UIType == (int)OperationActivityUIType.Table)
                    {
                        foreach (var item2 in term.TableData.TableList)
                        {
                            if (item2.ActivityId == item.ParentId)
                            {
                                item2.OnPropertyChanged("NoticeCount");
                                term.OnPropertyChanged("NoticeCount");
                                OperationActivityDataModel.OnPropertyChanged("NoticeCount");
                                break;
                            }
                        }
                    }
                }

                /*
                 * if (!needRefreshLotteryMask && item.AquiredTimes == 0)
                 * {
                 *      if (OperationActivityDataModel.CurrentSelectPageIdx >= 0 && OperationActivityDataModel.CurrentSelectPageIdx < OperationActivityDataModel.ActivityTermList.Count)
                 *      {
                 *              var currentData = OperationActivityDataModel.ActivityTermList[OperationActivityDataModel.CurrentSelectPageIdx];
                 *              if ((OperationActivityUIType) currentData.UIType == OperationActivityUIType.Lottery)
                 *              {
                 *                      needRefreshLotteryMask = true;
                 *              }
                 *      }
                 *
                 * }
                 */

                break;
            }
        }

        if (needRefreshLotteryMask)
        {
            var ee = new OperationActivityDrawLotteryEvent(-2);
            EventDispatcher.Instance.DispatchEvent(ee);
        }
    }