예제 #1
0
        static OperationActivityItemDataModel AssignActivityItemData(MsgOperActivtyItem itemData, int type, OperationActivityItemDataModel itemModel = null)
        {
            if (null == itemModel)
            {
                itemModel = new OperationActivityItemDataModel();
            }
            itemModel.ItemId      = itemData.Id;
            itemModel.ParentId    = type;
            itemModel.ItemName    = itemData.Name;
            itemModel.Desc        = itemData.Desc;
            itemModel.Icon        = itemData.Icon;
            itemModel.Need        = itemData.Need;
            itemModel.Count       = Math.Min(itemData.Need, itemData.Count);
            itemModel.StartTime   = DateTime.FromBinary(itemData.StarTime);
            itemModel.EndTime     = DateTime.FromBinary(itemData.EndTime);
            itemModel.ConditionId = itemData.Condition;
            //item.FlagId = itemData.FlagId;
            itemModel.AquiredTimes      = itemData.AquiredTimes;
            itemModel.AquiredTotalTimes = itemData.TotalTimes;
            itemModel.RemainAquireTimes = string.Format(GameUtils.GetDictionaryText(100001156), Math.Max(itemModel.AquiredTotalTimes - itemModel.AquiredTimes, 0));
            itemModel.NeedItemId        = itemData.NeedItemId;
            itemModel.NeedItemCount     = itemData.NeedItemCount;
            itemModel.GuideActivityId   = itemData.GuideActivityId;
            itemModel.GuideUI           = itemData.GuideUI;
#if UNITY_EDITOR
            itemModel.Desc += string.Format("[{0}|{1}]", itemModel.StartTime.ToString("yyyy/MM/dd/HH:mm"), itemModel.EndTime.ToString("yyyy/MM/dd/HH:mm"));
#endif
            return(itemModel);
        }
예제 #2
0
 private int SevenDayHappyListSort(OperationActivityItemDataModel a1, OperationActivityItemDataModel a2)
 {
     if (a1.CanGetReward.CompareTo(a2.CanGetReward) != 0)
     {
         return(-(a1.CanGetReward.CompareTo(a2.CanGetReward)));
     }
     else if (a1.ItemId.CompareTo(a2.ItemId) != 0)
     {
         return(-(a1.ItemId.CompareTo(a2.ItemId)));
     }
     else
     {
         return(1);
     }
 }
예제 #3
0
        private void ClaimRewardOperationActivity(int id)
        {
            //判断是否是抽奖
            if (OperationActivityDataModel.CurrentSelectPageIdx >= 0 &&
                OperationActivityDataModel.CurrentSelectPageIdx < OperationActivityDataModel.ActivityTermList.Count)
            {
                var current = OperationActivityDataModel.ActivityTermList[OperationActivityDataModel.CurrentSelectPageIdx];
                if ((OperationActivityUIType)current.UIType == OperationActivityUIType.Lottery)
                {
                    if (isLotteryStart && isLotteryEnd == false)
                    {
                        ActivityLottery(id, current, 1);
                    }
                    else
                    {
                        if (isLotteryStart == false && isLotteryEnd)
                        {
                            ActivityLottery(id, current, 2);
                        }
                    }
                    return;
                }
                if ((OperationActivityUIType)current.UIType == OperationActivityUIType.Guide)
                {//如果是活动导航首页 有跳转UI的直接跳转
                    if (GotoUIDirect(id))
                    {
                        return;
                    }
                }
            }

            OperationActivityItemDataModel item = null;

            foreach (var itemDataModel in mItemCache)
            {
                if (itemDataModel.ItemId == id)
                {
                    item = itemDataModel;
                    break;
                }
            }

            if (null == item)
            {
                return;
            }

            if (-1 != item.GuideActivityId)
            {//导航
                for (int i = 0; i < OperationActivityDataModel.ActivityTermList.Count; i++)
                {
                    if (OperationActivityDataModel.ActivityTermList[i].ActivityId == item.GuideActivityId)
                    {
                        ChooseActivityMenu(i);
                        return;
                    }
                }

                return;
            }
            //if(item.)
            if (!item.CanGetReward)
            {
                if (-1 != item.GuideUI)
                {
                    GameUtils.GotoUiTab(item.GuideUI, 0);
                    return;
                }
                return;
            }

            var type = item.ParentId;

            if (-1 != item.NeedItemId)
            {
                var itemRecord = Table.GetItemBase(item.NeedItemId);
                if (null == itemRecord)
                {
                    return;
                }

                var haveItemCount = PlayerDataManager.Instance.GetItemTotalCount(item.NeedItemId).Count;
                if (haveItemCount < item.NeedItemCount)
                {
                    var str = GameUtils.GetDictionaryText(270002);
                    if (3 == item.NeedItemId)
                    {
                        str = GameUtils.GetDictionaryText(210102);
                        GameUtils.GotoUiTab(79, 0);
                    }
                    EventDispatcher.Instance.DispatchEvent(new ShowUIHintBoard(str));
                    return;
                }
            }
            NetManager.Instance.StartCoroutine(OperationActivityClaimRewardCoroutine(type, id));
        }
예제 #4
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 ClaimRewardOperationActivity(int id)
    {
        //判断是否是抽奖
        if (OperationActivityDataModel.CurrentSelectPageIdx >= 0 &&
            OperationActivityDataModel.CurrentSelectPageIdx < OperationActivityDataModel.ActivityTermList.Count)
        {
            var current = OperationActivityDataModel.ActivityTermList[OperationActivityDataModel.CurrentSelectPageIdx];
            if ((OperationActivityUIType)current.UIType == OperationActivityUIType.Lottery)
            {
                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 (null != mCoroutine)
                    {
                        Logger.Error("ClaimRewardOperationActivity not finish");
                        return;
                    }
                }
                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)
                        {
                            var e = new OperationActivityDrawLotteryEvent(-1);
                            EventDispatcher.Instance.DispatchEvent(e);
                        }
                    }
                }
                return;
            }
        }

        OperationActivityItemDataModel item = null;

        foreach (var itemDataModel in mItemCache)
        {
            if (itemDataModel.ItemId == id)
            {
                item = itemDataModel;
                break;
            }
        }

        if (null == item)
        {
            return;
        }

        if (-1 != item.GuideActivityId)
        {        //导航
            for (int i = 0; i < OperationActivityDataModel.ActivityTermList.Count; i++)
            {
                if (OperationActivityDataModel.ActivityTermList[i].ActivityId == item.GuideActivityId)
                {
                    ChooseActivityMenu(i);
                    return;
                }
            }

            return;
        }

        if (!item.CanGetReward)
        {
            if (-1 != item.GuideUI)
            {
                GameUtils.GotoUiTab(item.GuideUI, 0);
                return;
            }
            return;
        }

        var type = item.ParentId;

        if (-1 != item.NeedItemId)
        {
            var itemRecord = Table.GetItemBase(item.NeedItemId);
            if (null == itemRecord)
            {
                return;
            }

            var haveItemCount = PlayerDataManager.Instance.GetItemTotalCount(item.NeedItemId).Count;
            if (haveItemCount < item.NeedItemCount)
            {
                var str = GameUtils.GetDictionaryText(270002);
                if (3 == item.NeedItemId)
                {
                    str = GameUtils.GetDictionaryText(210102);
                    GameUtils.GotoUiTab(79, 0);
                }
                EventDispatcher.Instance.DispatchEvent(new ShowUIHintBoard(str));
                return;
            }
        }
        NetManager.Instance.StartCoroutine(OperationActivityClaimRewardCoroutine(type, id));
    }