From 854e3dc299be160df0210c8a26a494f3d4599f1d Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期四, 13 九月 2018 14:45:18 +0800
Subject: [PATCH] 3442运营活动修改

---
 System/Welfare/OperationConsumeRebate.cs |   72 ++++++++++++++++++++++++++++++++++--
 1 files changed, 68 insertions(+), 4 deletions(-)

diff --git a/System/Welfare/OperationConsumeRebate.cs b/System/Welfare/OperationConsumeRebate.cs
index 19eab6e..c630ec1 100644
--- a/System/Welfare/OperationConsumeRebate.cs
+++ b/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

--
Gitblit v1.8.0