少年修仙传客户端代码仓库
client_linchunjie
2018-09-13 854e3dc299be160df0210c8a26a494f3d4599f1d
3442运营活动修改
11个文件已修改
597 ■■■■ 已修改文件
System/OpenServerActivity/FlashSaleModel.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/FlashSaleWin.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/LimitedTimePackageModel.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/LimitedTimePackageWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Welfare/ConsumeRebateModel.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Welfare/ConsumeRebateWin.cs 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Welfare/GiftPackageClass.cs 93 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Welfare/OperationBase.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Welfare/OperationConsumeRebate.cs 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Welfare/OperationFlashSale.cs 121 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Welfare/OperationTimeHepler.cs 228 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/FlashSaleModel.cs
@@ -169,7 +169,7 @@
            if (operationBase != null && operationBase.InTime(TimeUtility.ServerNow))
            {
                OperationFlashSale operation = operationBase as OperationFlashSale;
                var index = operation.IndexOfFlashShop();
                var index = operation.IndexOfFlashSale(TimeUtility.ServerNow);
                if (index != -1 && index < operation.flashShops.Count)
                {
                    var flashShop = operation.flashShops[index];
System/OpenServerActivity/FlashSaleWin.cs
@@ -80,7 +80,7 @@
                OperationFlashSale operation = operationBase as OperationFlashSale;
                m_OpreationTime.text = StringUtility.Contact(Language.Get("ExpActivity_Text1"), operation.ToDisplayTime());
                m_RefreshGiftTime.gameObject.SetActive(operation.allDay);
                var index = operation.IndexOfFlashShop();
                var index = operation.IndexOfFlashSale(TimeUtility.ServerNow);
                if (index != -1 && index < operation.flashShops.Count)
                {
                    var flashSale = operation.flashShops[index];
@@ -133,7 +133,7 @@
            if (operationBase != null)
            {
                OperationFlashSale operation = operationBase as OperationFlashSale;
                seconds = operation.GetSurplusTime(operation.IndexOfFlashShop());
                seconds = operation.GetSurplusTime();
            }
            if (seconds > 0)
            {
System/Vip/LimitedTimePackageModel.cs
@@ -141,7 +141,7 @@
        if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.GiftPackage, out operationBase))
        {
            GiftPackageClass operation = operationBase as GiftPackageClass;
            var index = operation.IndexOfFlashShop();
            var index = operation.IndexOfGift(TimeUtility.ServerNow);
            if (index != -1 && index < operation.giftpackage1.Count)
            {
                var giftpackage = operation.giftpackage1[index];
System/Vip/LimitedTimePackageWin.cs
@@ -90,7 +90,7 @@
            {
                GiftPackageClass operation = operationBase as GiftPackageClass;
               // m_Text_ActivityTimeTo.text = StringUtility.Contact(Language.Get("ExpActivity_Text1"), operation.ToDisplayTime());
                var index = operation.IndexOfFlashShop();
                var index = operation.IndexOfGift(TimeUtility.ServerNow);
                if (index != -1 && index < operation.giftpackage1.Count)
                {
                    var giftpackage = operation.giftpackage1[index];
System/Welfare/ConsumeRebateModel.cs
@@ -14,7 +14,7 @@
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent += PlayerDataRefreshInfoEvent;
            OperationTimeHepler.Instance.operationStartEvent += OperationStartEvent;
            OperationTimeHepler.Instance.operationEndEvent += OperationEndEvent;
            GlobalTimeEvent.Instance.secondEvent += SecondEvent;
            OperationTimeHepler.Instance.dayResetEvent += DayResetEvent;
            OpenServerActivityCenter.Instance.Register(1, this);
        }
@@ -26,7 +26,6 @@
        public void OnPlayerLoginOk()
        {
            UpdateRedpoint();
            rebateOpenDayIndex = OperationTimeHepler.Instance.IndexOfOperationDays(Operation.ConsumeRebate);
        }
        public override void UnInit()
@@ -34,7 +33,7 @@
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= PlayerDataRefreshInfoEvent;
            OperationTimeHepler.Instance.operationStartEvent -= OperationStartEvent;
            OperationTimeHepler.Instance.operationEndEvent -= OperationEndEvent;
            GlobalTimeEvent.Instance.secondEvent -= SecondEvent;
            OperationTimeHepler.Instance.dayResetEvent -= DayResetEvent;
        }
        public bool IsOpen
@@ -60,8 +59,6 @@
                return consumeRebateRedpoint.state == RedPointState.GetReward;
            }
        }
        int rebateOpenDayIndex = -1;
        public bool IsRebateGot(int day, int _index)
        {
@@ -89,13 +86,15 @@
            }
        }
        private void SecondEvent()
        private void DayResetEvent(int resetType)
        {
            var index = OperationTimeHepler.Instance.IndexOfOperationDays(Operation.ConsumeRebate);
            if (index != rebateOpenDayIndex)
            OperationBase operationBase;
            if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.ConsumeRebate, out operationBase))
            {
                rebateOpenDayIndex = index;
                UpdateRedpoint();
                if (resetType == operationBase.resetType)
                {
                    UpdateRedpoint();
                }
            }
        }
@@ -189,7 +188,6 @@
            {
                return;
            }
            rebateOpenDayIndex = OperationTimeHepler.Instance.IndexOfOperationDays(Operation.ConsumeRebate);
            OperationBase operationBase;
            if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.ConsumeRebate, out operationBase))
            {
System/Welfare/ConsumeRebateWin.cs
@@ -20,8 +20,6 @@
        [SerializeField] ScrollerController m_Controller;
        int rebateOpenDayIndex = -1;
        ConsumeRebateModel model { get { return ModelCenter.Instance.GetModel<ConsumeRebateModel>(); } }
        #region Built-in
        protected override void BindController()
@@ -37,11 +35,9 @@
        protected override void OnPreOpen()
        {
            Display();
            rebateOpenDayIndex = OperationTimeHepler.Instance.IndexOfOperationDays(Operation.ConsumeRebate);
            TimeUtility.OnServerOpenDayRefresh += OnServerOpenDayRefresh;
            GlobalTimeEvent.Instance.secondEvent += SecondEvent;
            model.consumeRebateUpdateEvent += ConsumeRebateUpdateEvent;
            OperationTimeHepler.Instance.operationTimeUpdateEvent += OperationTimeUpdateEvent;
            OperationTimeHepler.Instance.dayResetEvent += DayResetEvent;
        }
        protected override void OnAfterOpen()
@@ -50,10 +46,9 @@
        protected override void OnPreClose()
        {
            GlobalTimeEvent.Instance.secondEvent -= SecondEvent;
            TimeUtility.OnServerOpenDayRefresh -= OnServerOpenDayRefresh;
            model.consumeRebateUpdateEvent -= ConsumeRebateUpdateEvent;
            OperationTimeHepler.Instance.operationTimeUpdateEvent -= OperationTimeUpdateEvent;
            OperationTimeHepler.Instance.dayResetEvent -= DayResetEvent;
        }
        protected override void OnAfterClose()
@@ -86,23 +81,15 @@
            m_Controller.m_Scorller.RefreshActiveCellViews();
        }
        private void SecondEvent()
        private void DayResetEvent(int resetType)
        {
            var index = OperationTimeHepler.Instance.IndexOfOperationDays(Operation.ConsumeRebate);
            if (index != rebateOpenDayIndex)
            OperationBase operationBase;
            if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.ConsumeRebate, out operationBase))
            {
                rebateOpenDayIndex = index;
                DisplayRebate();
            }
        }
        private void OnServerOpenDayRefresh()
        {
            var index = OperationTimeHepler.Instance.IndexOfOperationDays(Operation.ConsumeRebate);
            if (index != rebateOpenDayIndex)
            {
                rebateOpenDayIndex = index;
                DisplayRebate();
                if (resetType == operationBase.resetType)
                {
                    DisplayRebate();
                }
            }
        }
System/Welfare/GiftPackageClass.cs
@@ -1,4 +1,5 @@
using System.Collections;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Snxxz.UI
@@ -7,33 +8,45 @@
    {
        public List<Gift_Package> giftpackage1 = new List<Gift_Package>();
        public int IndexOfFlashShop()
        public int IndexOfGift(DateTime time)
        {
            if (giftpackage1.Count == 1)
            if (allDay)
            {
                return 0;
            }
            var _timeIndex = IndexOfOpenTime(TimeUtility.ServerNow);
            if (_timeIndex == -1)
            {
                return -1;
            }
            return Mathf.Min(giftpackage1.Count - 1, allDay ? 0 : _timeIndex);
        }
        public GiftPackageGift GetFlashSaleGift(int _index, int _id)
        {
            if (_index < giftpackage1.Count)
            {
                for (int i = 0; i < giftpackage1[_index].gifts.Length; i++)
                if (!dayReset)
                {
                    if (giftpackage1[_index].gifts[i].id == _id)
                    {
                        return giftpackage1[_index].gifts[i];
                    }
                    return 0;
                }
                var index = IndexOfDays(time);
                switch (resetType)
                {
                    case 0:
                        return index;
                    case 1:
                        if (time.Hour < DayResetHour)
                        {
                            return Mathf.Max(0, index - 1);
                        }
                        else
                        {
                            return index;
                        }
                    default:
                        return index;
                }
            }
            return default(GiftPackageGift);
            else
            {
                var index = 0;
                for (int i = 0; i < times.Count; i++)
                {
                    if (times[i].InTime(time))
                    {
                        index = i;
                        break;
                    }
                }
                return index;
            }
        }
        public override bool SatisfyOpenCondition()
@@ -60,6 +73,40 @@
            return textBuilder.ToString();
        }
        public void ParsePackage(HAA12_tagMCFlashGiftbagInfo package)
        {
            for (int i = 0; i < package.GiftbagTypeCount; i++)
            {
                var GiftbagType = new Gift_Package();
                var Giftbag = package.GiftbagTypeInfo[i];
                GiftbagType.gifts = new GiftPackageGift[Giftbag.GiftbagCount];
                for (int k = 0; k < Giftbag.GiftbagCount; k++)
                {
                    var gift = new GiftPackageGift();
                    var pakGift = Giftbag.GiftbagInfo[k];
                    gift.id = (int)pakGift.GiftID;
                    gift.limitNum = pakGift.BuyCountLimit;
                    gift.rmb = (int)pakGift.RMB;
                    gift.rmbOriginal = (int)pakGift.RMBOriginal;
                    gift.OrderInfo = pakGift.OrderInfo;
                    gift.OrderInfoLength = pakGift.OrderInfoLen;
                    gift.items = new GiftPackageItem[pakGift.GiftItemCount];
                    for (int q = 0; q < pakGift.GiftItemCount; q++)
                    {
                        var item = new GiftPackageItem();
                        item.itemId = (int)pakGift.ItemInfo[q].ItemID;
                        item.isBind = pakGift.ItemInfo[q].IsBind;
                        item.itemCount = pakGift.ItemInfo[q].ItemCount;
                        item.isMainItem = pakGift.ItemInfo[q].IsMainItem == 1;
                        gift.items[q] = item;
                    }
                    GiftbagType.gifts[k] = gift;
                }
                giftpackage1.Add(GiftbagType);
            }
        }
        public struct Gift_Package
        {
            public GiftPackageGift[] gifts;
System/Welfare/OperationBase.cs
@@ -108,7 +108,7 @@
            return date >= startDate && date <= endDate;
        }
        public int IndexOfDays(DateTime time)
        protected int IndexOfDays(DateTime time)
        {
            if (!InDay(time))
            {
@@ -116,26 +116,6 @@
            }
            DateTime s = new DateTime(startDate.year, startDate.month, startDate.day);
            return (time - s).Days;
        }
        public int IndexOfOpenTime(DateTime time)
        {
            if (!InTime(time))
            {
                return -1;
            }
            if (allDay)
            {
                return 0;
            }
            for (int i = 0; i < times.Count; i++)
            {
                if (times[i].InTime(time))
                {
                    return i;
                }
            }
            return -1;
        }
        public int GetSurplusTime(DateTime time)
System/Welfare/OperationConsumeRebate.cs
@@ -31,18 +31,82 @@
            rebates.Clear();
        }
        public void ParseRebate(HAA09_tagMCCostRebateInfo package)
        {
            for (int i = 0; i < package.AwardDays; i++)
            {
                var _rebate = package.AwardDayInfo[i];
                Rebate rebate = new Rebate();
                for (int k = 0; k < _rebate.AwardCount; k++)
                {
                    RebateGrade rebateGrade = new RebateGrade();
                    rebateGrade.needGold = (int)_rebate.AwardInfo[k].NeedGold;
                    rebateGrade.index = _rebate.AwardInfo[k].AwardIndex;
                    for (int q = 0; q < _rebate.AwardInfo[k].AwardItemCount; q++)
                    {
                        var _item = _rebate.AwardInfo[k].AwardItem[q];
                        rebateGrade.items.Add(new Item()
                        {
                            itemId = (int)_item.ItemID,
                            count = _item.ItemCount,
                            isBind = _item.IsBind,
                        });
                    }
                    rebate.rebateGrades.Add(rebateGrade);
                }
                rebates.Add(rebate);
            }
        }
        public Rebate GetRebate(DateTime time)
        {
            if (rebates.Count == 0)
            {
                return null;
            }
            var index = IndexOfDays(time);
            if (index != -1 && index < rebates.Count)
            var index = Mathf.Min(rebates.Count - 1, IndexOfRebates(time));
            return rebates[index];
        }
        public int IndexOfRebates(DateTime time)
        {
            if (allDay)
            {
                return rebates[index];
                if (!dayReset)
                {
                    return 0;
                }
                var index = IndexOfDays(time);
                switch (resetType)
                {
                    case 0:
                        return index;
                    case 1:
                        if (time.Hour < DayResetHour)
                        {
                            return Mathf.Max(0, index - 1);
                        }
                        else
                        {
                            return index;
                        }
                    default:
                        return index;
                }
            }
            return rebates[rebates.Count - 1];
            else
            {
                var index = 0;
                for (int i = 0; i < times.Count; i++)
                {
                    if (times[i].InTime(time))
                    {
                        index = i;
                        break;
                    }
                }
                return index;
            }
        }
        public class Rebate
System/Welfare/OperationFlashSale.cs
@@ -8,18 +8,45 @@
    {
        public List<FlashSale> flashShops = new List<FlashSale>();
        public int IndexOfFlashShop()
        public int IndexOfFlashSale(DateTime time)
        {
            if (flashShops.Count == 1)
            if (allDay)
            {
                return 0;
                if (!dayReset)
                {
                    return 0;
                }
                var index = IndexOfDays(time);
                switch (resetType)
                {
                    case 0:
                        return index;
                    case 1:
                        if (time.Hour < DayResetHour)
                        {
                            return Mathf.Max(0, index - 1);
                        }
                        else
                        {
                            return index;
                        }
                    default:
                        return index;
                }
            }
            var _timeIndex = IndexOfOpenTime(TimeUtility.ServerNow);
            if (_timeIndex == -1)
            else
            {
                return -1;
                var index = 0;
                for (int i = 0; i < times.Count; i++)
                {
                    if (times[i].InTime(time))
                    {
                        index = i;
                        break;
                    }
                }
                return index;
            }
            return Mathf.Min(flashShops.Count - 1, allDay ? 0 : _timeIndex);
        }
        public FlashSaleGift GetFlashSaleGift(int _index, int _id)
@@ -61,30 +88,86 @@
            return textBuilder.ToString();
        }
        public int GetSurplusTime(int index)
        public int GetSurplusTime()
        {
            if (!InTime(TimeUtility.ServerNow))
            var time = TimeUtility.ServerNow;
            if (!InTime(time))
            {
                return 0;
            }
            var seconds = 0;
            if (times.Count == 0)
            if (allDay)
            {
                DateTime endOperationTime = new DateTime(TimeUtility.Year, TimeUtility.Month,
                        TimeUtility.Day, 0, 0, 0);
                endOperationTime = endOperationTime.AddDays(1);
                seconds = (int)(endOperationTime - TimeUtility.ServerNow).TotalSeconds;
                if (!dayReset)
                {
                    return GetSurplusTime(time);
                }
                if (resetType == 0)
                {
                    DateTime endOperationTime = new DateTime(TimeUtility.Year, TimeUtility.Month,
                          TimeUtility.Day, 0, 0, 0);
                    endOperationTime = endOperationTime.AddDays(1);
                    seconds = (int)(endOperationTime - TimeUtility.ServerNow).TotalSeconds;
                }
                else if (resetType == 1)
                {
                    DateTime endOperationTime = new DateTime(TimeUtility.Year, TimeUtility.Month,
                          TimeUtility.Day, DayResetHour, 0, 0);
                    if (time.Hour >= DayResetHour)
                    {
                        endOperationTime = endOperationTime.AddDays(1);
                    }
                    seconds = (int)(endOperationTime - TimeUtility.ServerNow).TotalSeconds;
                }
            }
            if (index >= 0 && index < times.Count)
            else
            {
                var _endTime = times[index];
                DateTime endOperationTime = new DateTime(TimeUtility.Year, TimeUtility.Month,
                        TimeUtility.Day, _endTime.endHour, _endTime.endMinute, 0);
                seconds = (int)(endOperationTime - TimeUtility.ServerNow).TotalSeconds;
                for (int i = 0; i < times.Count; i++)
                {
                    if (times[i].InTime(time))
                    {
                        DateTime endOperationTime = new DateTime(TimeUtility.Year, TimeUtility.Month,
                                TimeUtility.Day, times[i].endHour, times[i].endMinute, 0);
                        seconds = (int)(endOperationTime - TimeUtility.ServerNow).TotalSeconds;
                        break;
                    }
                }
            }
            return seconds;
        }
        public void ParsePackage(HAA11_tagMCSpringSaleInfo package)
        {
            for (int i = 0; i < package.ShopCount; i++)
            {
                var flashShop = new FlashSale();
                var shop = package.ShopInfo[i];
                flashShop.gifts = new FlashSaleGift[shop.GiftbagCount];
                for (int k = 0; k < shop.GiftbagCount; k++)
                {
                    var gift = new FlashSaleGift();
                    var pakGift = shop.GiftbagInfo[k];
                    gift.id = (int)pakGift.GiftID;
                    gift.limitNum = pakGift.BuyCountLimit;
                    gift.moneyNumber = (int)pakGift.MoneyNumber;
                    gift.moneyType = pakGift.MoneyType;
                    gift.moneyOriginal = (int)pakGift.MoneyOriginal;
                    gift.items = new FlashSaleItem[pakGift.GiftItemCount];
                    for (int q = 0; q < pakGift.GiftItemCount; q++)
                    {
                        var item = new FlashSaleItem();
                        item.itemId = (int)pakGift.ItemInfo[q].ItemID;
                        item.isBind = pakGift.ItemInfo[q].IsBind;
                        item.itemCount = pakGift.ItemInfo[q].ItemCount;
                        item.isMainItem = pakGift.ItemInfo[q].IsMainItem == 1;
                        gift.items[q] = item;
                    }
                    flashShop.gifts[k] = gift;
                }
                flashShops.Add(flashShop);
            }
        }
        public struct FlashSale
        {
            public FlashSaleGift[] gifts;
System/Welfare/OperationTimeHepler.cs
@@ -105,22 +105,9 @@
        {
            OperationBase operation = null;
            operationDict.TryGetValue(Operation.MultipleExp, out operation);
            if (package.StartDate == null || package.StartDate.Equals(string.Empty)
                || package.EndtDate == null || package.EndtDate.Equals(string.Empty))
            if (string.IsNullOrEmpty(package.StartDate) || string.IsNullOrEmpty(package.EndtDate))
            {
                if (operationDict.ContainsKey(Operation.MultipleExp))
                {
                    operationDict.Remove(Operation.MultipleExp);
                }
                if (operationServerCloseEvent != null)
                {
                    operationServerCloseEvent(Operation.MultipleExp);
                }
                if (operationEndEvent != null)
                {
                    operationEndEvent(Operation.MultipleExp, 0);
                    operationEndEvent(Operation.MultipleExp, 1);
                }
                ForceStopOperation(Operation.MultipleExp);
            }
            else
            {
@@ -145,6 +132,7 @@
                }
            }
        }
        /// <summary>
        /// 消费返利
        /// </summary>
@@ -153,22 +141,9 @@
        {
            OperationBase operationBase = null;
            operationDict.TryGetValue(Operation.ConsumeRebate, out operationBase);
            if (package.StartDate == null || package.StartDate.Equals(string.Empty)
                || package.EndtDate == null || package.EndtDate.Equals(string.Empty))
            if (string.IsNullOrEmpty(package.StartDate) || string.IsNullOrEmpty(package.EndtDate))
            {
                if (operationDict.ContainsKey(Operation.ConsumeRebate))
                {
                    operationDict.Remove(Operation.ConsumeRebate);
                }
                if (operationServerCloseEvent != null)
                {
                    operationServerCloseEvent(Operation.ConsumeRebate);
                }
                if (operationEndEvent != null)
                {
                    operationEndEvent(Operation.ConsumeRebate, 0);
                    operationEndEvent(Operation.ConsumeRebate, 1);
                }
                ForceStopOperation(Operation.ConsumeRebate);
            }
            else
            {
@@ -183,35 +158,14 @@
                operation.startDate = ParseOperationDate(package.StartDate);
                operation.endDate = ParseOperationDate(package.EndtDate);
                operation.dayReset = package.IsDayReset == 1;
                for (int i = 0; i < package.AwardDays; i++)
                {
                    var _rebate = package.AwardDayInfo[i];
                    OperationConsumeRebate.Rebate rebate = new OperationConsumeRebate.Rebate();
                    for (int k = 0; k < _rebate.AwardCount; k++)
                    {
                        OperationConsumeRebate.RebateGrade rebateGrade = new OperationConsumeRebate.RebateGrade();
                        rebateGrade.needGold = (int)_rebate.AwardInfo[k].NeedGold;
                        rebateGrade.index = _rebate.AwardInfo[k].AwardIndex;
                        for (int q = 0; q < _rebate.AwardInfo[k].AwardItemCount; q++)
                        {
                            var _item = _rebate.AwardInfo[k].AwardItem[q];
                            rebateGrade.items.Add(new OperationConsumeRebate.Item()
                            {
                                itemId = (int)_item.ItemID,
                                count = _item.ItemCount,
                                isBind = _item.IsBind,
                            });
                        }
                        rebate.rebateGrades.Add(rebateGrade);
                    }
                    operation.rebates.Add(rebate);
                }
                operation.ParseRebate(package);
                if (operationTimeUpdateEvent != null)
                {
                    operationTimeUpdateEvent(Operation.ConsumeRebate);
                }
            }
        }
        /// <summary>
        /// 限时特惠
        /// </summary>
@@ -222,19 +176,7 @@
            operationDict.TryGetValue(Operation.FlashSale, out operationBase);
            if (string.IsNullOrEmpty(package.StartDate) || string.IsNullOrEmpty(package.EndtDate))
            {
                if (operationDict.ContainsKey(Operation.FlashSale))
                {
                    operationDict.Remove(Operation.FlashSale);
                }
                if (operationServerCloseEvent != null)
                {
                    operationServerCloseEvent(Operation.FlashSale);
                }
                if (operationEndEvent != null)
                {
                    operationEndEvent(Operation.FlashSale, 0);
                    operationEndEvent(Operation.FlashSale, 1);
                }
                ForceStopOperation(Operation.FlashSale);
            }
            else
            {
@@ -254,65 +196,25 @@
                    operation.times.Add(ParseOperationTime(package.ActivityTime[i].StartTime,
                        package.ActivityTime[i].EndtTime));
                }
                for (int i = 0; i < package.ShopCount; i++)
                {
                    var flashShop = new OperationFlashSale.FlashSale();
                    var shop = package.ShopInfo[i];
                    flashShop.gifts = new OperationFlashSale.FlashSaleGift[shop.GiftbagCount];
                    for (int k = 0; k < shop.GiftbagCount; k++)
                    {
                        var gift = new OperationFlashSale.FlashSaleGift();
                        var pakGift = shop.GiftbagInfo[k];
                        gift.id = (int)pakGift.GiftID;
                        gift.limitNum = pakGift.BuyCountLimit;
                        gift.moneyNumber = (int)pakGift.MoneyNumber;
                        gift.moneyType = pakGift.MoneyType;
                        gift.moneyOriginal = (int)pakGift.MoneyOriginal;
                        gift.items = new OperationFlashSale.FlashSaleItem[pakGift.GiftItemCount];
                        for (int q = 0; q < pakGift.GiftItemCount; q++)
                        {
                            var item = new OperationFlashSale.FlashSaleItem();
                            item.itemId = (int)pakGift.ItemInfo[q].ItemID;
                            item.isBind = pakGift.ItemInfo[q].IsBind;
                            item.itemCount = pakGift.ItemInfo[q].ItemCount;
                            item.isMainItem = pakGift.ItemInfo[q].IsMainItem == 1;
                            gift.items[q] = item;
                        }
                        flashShop.gifts[k] = gift;
                    }
                    operation.flashShops.Add(flashShop);
                }
                operation.ParsePackage(package);
                if (operationTimeUpdateEvent != null)
                {
                    operationTimeUpdateEvent(Operation.FlashSale);
                }
            }
        }
        /// <summary>
        /// 限时礼包
        /// </summary>
        /// <param name="package"></param>
        ///
        public void UpdateGiftPackage(HAA12_tagMCFlashGiftbagInfo package)
        {
            OperationBase operationBase = null;
            operationDict.TryGetValue(Operation.GiftPackage, out operationBase);
            if (string.IsNullOrEmpty(package.StartDate) || string.IsNullOrEmpty(package.EndtDate))
            {
                if (operationDict.ContainsKey(Operation.GiftPackage))
                {
                    operationDict.Remove(Operation.GiftPackage);
                }
                if (operationServerCloseEvent != null)
                {
                    operationServerCloseEvent(Operation.GiftPackage);
                }
                if (operationEndEvent != null)
                {
                    operationEndEvent(Operation.GiftPackage, 0);
                    operationEndEvent(Operation.GiftPackage, 1);
                }
                ForceStopOperation(Operation.GiftPackage);
            }
            else
            {
@@ -332,36 +234,7 @@
                    operation.times.Add(ParseOperationTime(package.ActivityTime[i].StartTime,
                        package.ActivityTime[i].EndtTime));
                }
                for (int i = 0; i < package.GiftbagTypeCount; i++)
                {
                    var GiftbagType = new GiftPackageClass.Gift_Package();
                    var Giftbag = package.GiftbagTypeInfo[i];
                    GiftbagType.gifts = new GiftPackageClass.GiftPackageGift[Giftbag.GiftbagCount];
                    for (int k = 0; k < Giftbag.GiftbagCount; k++)
                    {
                        var gift = new GiftPackageClass.GiftPackageGift();
                        var pakGift = Giftbag.GiftbagInfo[k];
                        gift.id = (int)pakGift.GiftID;
                        gift.limitNum = pakGift.BuyCountLimit;
                        gift.rmb = (int)pakGift.RMB;
                        gift.rmbOriginal = (int)pakGift.RMBOriginal;
                        gift.OrderInfo = pakGift.OrderInfo;
                        gift.OrderInfoLength = pakGift.OrderInfoLen;
                        gift.items = new GiftPackageClass.GiftPackageItem[pakGift.GiftItemCount];
                        for (int q = 0; q < pakGift.GiftItemCount; q++)
                        {
                            var item = new GiftPackageClass.GiftPackageItem();
                            item.itemId = (int)pakGift.ItemInfo[q].ItemID;
                            item.isBind = pakGift.ItemInfo[q].IsBind;
                            item.itemCount = pakGift.ItemInfo[q].ItemCount;
                            item.isMainItem = pakGift.ItemInfo[q].IsMainItem == 1;
                            gift.items[q] = item;
                        }
                        GiftbagType.gifts[k] = gift;
                    }
                    operation.giftpackage1.Add(GiftbagType);
                }
                operation.ParsePackage(package);
                if (operationTimeUpdateEvent != null)
                {
                    operationTimeUpdateEvent(Operation.GiftPackage);
@@ -374,21 +247,7 @@
        {
            if (string.IsNullOrEmpty(package.StartDate) || string.IsNullOrEmpty(package.EndtDate))
            {
                if (operationDict.ContainsKey(Operation.BossReborn))
                {
                    operationDict.Remove(Operation.BossReborn);
                }
                if (operationServerCloseEvent != null)
                {
                    operationServerCloseEvent(Operation.BossReborn);
                }
                if (operationEndEvent != null)
                {
                    operationEndEvent(Operation.BossReborn, 0);
                    operationEndEvent(Operation.BossReborn, 1);
                }
                ForceStopOperation(Operation.BossReborn);
            }
            else
            {
@@ -417,22 +276,9 @@
        {
            OperationBase operation = null;
            operationDict.TryGetValue(Operation.FairyCeremony, out operation);
            if (package.StartDate == null || package.StartDate.Equals(string.Empty)
                || package.EndtDate == null || package.EndtDate.Equals(string.Empty))
            if (string.IsNullOrEmpty(package.StartDate) || string.IsNullOrEmpty(package.EndtDate))
            {
                if (operationDict.ContainsKey(Operation.FairyCeremony))
                {
                    operationDict.Remove(Operation.FairyCeremony);
                }
                if (operationServerCloseEvent != null)
                {
                    operationServerCloseEvent(Operation.FairyCeremony);
                }
                if (operationEndEvent != null)
                {
                    operationEndEvent(Operation.FairyCeremony, 0);
                    operationEndEvent(Operation.FairyCeremony, 1);
                }
                ForceStopOperation(Operation.FairyCeremony);
            }
            else
            {
@@ -460,22 +306,9 @@
        {
            OperationBase operation = null;
            operationDict.TryGetValue(Operation.MultipRealmPoint, out operation);
            if (package.StartDate == null || package.StartDate.Equals(string.Empty)
                || package.EndtDate == null || package.EndtDate.Equals(string.Empty))
            if (string.IsNullOrEmpty(package.StartDate) || string.IsNullOrEmpty(package.EndtDate))
            {
                if (operationDict.ContainsKey(Operation.MultipRealmPoint))
                {
                    operationDict.Remove(Operation.MultipRealmPoint);
                }
                if (operationServerCloseEvent != null)
                {
                    operationServerCloseEvent(Operation.MultipRealmPoint);
                }
                if (operationEndEvent != null)
                {
                    operationEndEvent(Operation.MultipRealmPoint, 0);
                    operationEndEvent(Operation.MultipRealmPoint, 1);
                }
                ForceStopOperation(Operation.MultipRealmPoint);
            }
            else
            {
@@ -493,6 +326,23 @@
                {
                    operationTimeUpdateEvent(Operation.MultipRealmPoint);
                }
            }
        }
        void ForceStopOperation(Operation operationType)
        {
            if (operationDict.ContainsKey(operationType))
            {
                operationDict.Remove(operationType);
            }
            if (operationServerCloseEvent != null)
            {
                operationServerCloseEvent(operationType);
            }
            if (operationEndEvent != null)
            {
                operationEndEvent(operationType, 0);
                operationEndEvent(operationType, 1);
            }
        }
@@ -563,16 +413,6 @@
            {
                SysNotifyMgr.Instance.ShowTip("InOperationTimeError");
            }
        }
        public int IndexOfOperationDays(Operation type)
        {
            OperationBase operation;
            if (TryGetOperationTime(type, out operation))
            {
                return operation.IndexOfDays(TimeUtility.ServerNow);
            }
            return -1;
        }
        OperationDate ParseOperationDate(string date)