From 40bb109fb33aa4f5337e5cbc7d8002b31a87aa6a Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期二, 23 二月 2021 01:33:16 +0800
Subject: [PATCH] 8715 子 【主干】【BT2】【测试】H.活动-节日祈愿/【主干】【前端】【BT2】H.活动-节日祈愿 - 节日祝福子界面

---
 Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA43_tagMCFeastWishInfo.cs.meta                               |   11 
 Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA45_tagMCFeastWishResult.cs.meta                             |   11 
 Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA10_tagCMFeastWishBottleChooseItem.cs.meta |   11 
 System/HolidayWishes/HolidayLoginModel.cs                                                                      |    2 
 System/HolidayWishes/WishBottleAwardWin.cs                                                                     |  178 +++++++
 Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA45_tagMCFeastWishResult.cs.meta                   |   11 
 System/HolidayWishes/OperationHolidayWish.cs                                                                   |   52 ++
 System/HolidayWishes/OperationHolidayWish.cs.meta                                                              |   11 
 Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA10_tagCMFeastWishBottleChooseItem.cs      |   20 
 Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA43_tagMCFeastWishInfo.cs                          |   13 
 System/Welfare/OperationTimeHepler.cs                                                                          |   29 +
 Core/GameEngine/DataToCtl/PackageRegedit.cs                                                                    |    3 
 System/HolidayWishes/HolidayWishBottle.cs                                                                      |   85 +++
 System/HolidayWishes/HolidayWishBottle.cs.meta                                                                 |   11 
 System/HolidayWishes/HolidayWishPoolWin.cs.meta                                                                |   11 
 Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA43_tagMCFeastWishInfo.cs                                    |   59 ++
 System/HolidayWishes/HolidayWishesWin.cs                                                                       |   21 
 System/HolidayWishes/HolidayWishPoolItemCell.cs.meta                                                           |   11 
 Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA11_tagCMFeastWishPoolWish.cs              |   18 
 System/HolidayWishes/HolidayWishPoolModel.cs                                                                   |  287 ++++++++++++
 UI/Common/FunctionButtonGroup.cs                                                                               |   10 
 Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA45_tagMCFeastWishResult.cs                        |   17 
 Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA43_tagMCFeastWishInfo.cs.meta                     |   11 
 Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA44_tagMCFeastWishPlayerInfo.cs.meta                         |   11 
 System/HolidayWishes/HolidayWishPoolWin.cs                                                                     |  234 ++++++++++
 System/HolidayWishes/TextMove.cs                                                                               |   51 ++
 Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA44_tagMCFeastWishPlayerInfo.cs.meta               |   11 
 System/HolidayWishes/WishBottleAwardWin.cs.meta                                                                |   11 
 Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA44_tagMCFeastWishPlayerInfo.cs                              |   31 +
 System/HolidayWishes/HolidayWishPoolModel.cs.meta                                                              |   11 
 Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA11_tagCMFeastWishPoolWish.cs.meta         |   11 
 Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA45_tagMCFeastWishResult.cs                                  |   21 
 System/HolidayWishes/TextMove.cs.meta                                                                          |   11 
 System/WindowBase/OneLevelWin.cs                                                                               |   17 
 System/HolidayWishes/HolidayWishPoolItemCell.cs                                                                |   35 +
 System/WindowBase/ModelCenter.cs                                                                               |    1 
 Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA44_tagMCFeastWishPlayerInfo.cs                    |   17 
 37 files changed, 1,360 insertions(+), 6 deletions(-)

diff --git a/Core/GameEngine/DataToCtl/PackageRegedit.cs b/Core/GameEngine/DataToCtl/PackageRegedit.cs
index f2690f4..ae845cf 100644
--- a/Core/GameEngine/DataToCtl/PackageRegedit.cs
+++ b/Core/GameEngine/DataToCtl/PackageRegedit.cs
@@ -527,6 +527,9 @@
         Register(typeof(HAA42_tagMCFeastLoginInfo), typeof(DTCAA42_tagMCFeastLoginInfo));
         Register(typeof(HAA39_tagMCFeastLoginPlayerInfo), typeof(DTCAA39_tagMCFeastLoginPlayerInfo));
 
+        Register(typeof(HAA43_tagMCFeastWishInfo), typeof(DTCAA43_tagMCFeastWishInfo));
+        Register(typeof(HAA44_tagMCFeastWishPlayerInfo), typeof(DTCAA44_tagMCFeastWishPlayerInfo));
+        Register(typeof(HAA45_tagMCFeastWishResult), typeof(DTCAA45_tagMCFeastWishResult));
         #endregion
     }
 
diff --git a/Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA10_tagCMFeastWishBottleChooseItem.cs b/Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA10_tagCMFeastWishBottleChooseItem.cs
new file mode 100644
index 0000000..e35870a
--- /dev/null
+++ b/Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA10_tagCMFeastWishBottleChooseItem.cs
@@ -0,0 +1,20 @@
+using UnityEngine;
+using System.Collections;
+
+// AA 10 鑺傛棩绁濈鐡堕�夋嫨濂栧姳鐗╁搧 #tagCMFeastWishBottleChooseItem
+
+public class CAA10_tagCMFeastWishBottleChooseItem : GameNetPackBasic {
+    public byte BottleNum;    //鐡跺瓙缂栧彿
+    public byte RecordIndex;    //鐗╁搧绱㈠紩锛岀敤浜庨�夋嫨鍙婅褰曟槸鍚﹀凡閫夋嫨
+
+    public CAA10_tagCMFeastWishBottleChooseItem () {
+        combineCmd = (ushort)0x03FE;
+        _cmd = (ushort)0xAA10;
+    }
+
+    public override void WriteToBytes () {
+        WriteBytes (BottleNum, NetDataType.BYTE);
+        WriteBytes (RecordIndex, NetDataType.BYTE);
+    }
+
+}
diff --git a/Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA10_tagCMFeastWishBottleChooseItem.cs.meta b/Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA10_tagCMFeastWishBottleChooseItem.cs.meta
new file mode 100644
index 0000000..2bccb99
--- /dev/null
+++ b/Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA10_tagCMFeastWishBottleChooseItem.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 32de00e5247cfb842bf56a52aac81b2d
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA11_tagCMFeastWishPoolWish.cs b/Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA11_tagCMFeastWishPoolWish.cs
new file mode 100644
index 0000000..7dcc22e
--- /dev/null
+++ b/Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA11_tagCMFeastWishPoolWish.cs
@@ -0,0 +1,18 @@
+using UnityEngine;
+using System.Collections;
+
+// AA 11 鑺傛棩绁濈姹犵绂� #tagCMFeastWishPoolWish
+
+public class CAA11_tagCMFeastWishPoolWish : GameNetPackBasic {
+    public byte WishCount;    //绁濈娆℃暟
+
+    public CAA11_tagCMFeastWishPoolWish () {
+        combineCmd = (ushort)0x03FE;
+        _cmd = (ushort)0xAA11;
+    }
+
+    public override void WriteToBytes () {
+        WriteBytes (WishCount, NetDataType.BYTE);
+    }
+
+}
diff --git a/Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA11_tagCMFeastWishPoolWish.cs.meta b/Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA11_tagCMFeastWishPoolWish.cs.meta
new file mode 100644
index 0000000..ff92b40
--- /dev/null
+++ b/Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA11_tagCMFeastWishPoolWish.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6395715942de8c4468c36b2e8802649d
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA43_tagMCFeastWishInfo.cs b/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA43_tagMCFeastWishInfo.cs
new file mode 100644
index 0000000..2ddce79
--- /dev/null
+++ b/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA43_tagMCFeastWishInfo.cs
@@ -0,0 +1,13 @@
+using UnityEngine;
+using System.Collections;
+using Snxxz.UI;
+// AA 43 鑺傛棩绁濈娲诲姩淇℃伅 #tagMCFeastWishInfo
+
+public class DTCAA43_tagMCFeastWishInfo : DtcBasic {
+    public override void Done(GameNetPackBasic vNetPack) {
+        base.Done(vNetPack);
+        HAA43_tagMCFeastWishInfo vNetData = vNetPack as HAA43_tagMCFeastWishInfo;
+
+        OperationTimeHepler.Instance.UpdateHolidayWish(vNetData);
+    }
+}
diff --git a/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA43_tagMCFeastWishInfo.cs.meta b/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA43_tagMCFeastWishInfo.cs.meta
new file mode 100644
index 0000000..fa7d9cd
--- /dev/null
+++ b/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA43_tagMCFeastWishInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6389daba18ea32b42bdfd2acda521382
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA44_tagMCFeastWishPlayerInfo.cs b/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA44_tagMCFeastWishPlayerInfo.cs
new file mode 100644
index 0000000..781cf0d
--- /dev/null
+++ b/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA44_tagMCFeastWishPlayerInfo.cs
@@ -0,0 +1,17 @@
+using UnityEngine;
+using System.Collections;
+using Snxxz.UI;
+
+// AA 44 鑺傛棩绁濈娲诲姩鐜╁淇℃伅 #tagMCFeastWishPlayerInfo
+
+public class DTCAA44_tagMCFeastWishPlayerInfo : DtcBasic {
+
+    HolidayWishPoolModel model { get { return ModelCenter.Instance.GetModel<HolidayWishPoolModel>(); } }
+
+    public override void Done(GameNetPackBasic vNetPack) {
+        base.Done(vNetPack);
+        HAA44_tagMCFeastWishPlayerInfo vNetData = vNetPack as HAA44_tagMCFeastWishPlayerInfo;
+
+        model.UpdateInfo(vNetData);
+    }
+}
diff --git a/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA44_tagMCFeastWishPlayerInfo.cs.meta b/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA44_tagMCFeastWishPlayerInfo.cs.meta
new file mode 100644
index 0000000..7bcb40a
--- /dev/null
+++ b/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA44_tagMCFeastWishPlayerInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 0f40199dfd060cf49ae1ec192afa4bdc
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA45_tagMCFeastWishResult.cs b/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA45_tagMCFeastWishResult.cs
new file mode 100644
index 0000000..087f304
--- /dev/null
+++ b/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA45_tagMCFeastWishResult.cs
@@ -0,0 +1,17 @@
+using UnityEngine;
+using System.Collections;
+using Snxxz.UI;
+
+// AA 45 鑺傛棩绁濈绁濈缁撴灉 #tagMCFeastWishResult
+
+public class DTCAA45_tagMCFeastWishResult : DtcBasic {
+
+    HolidayWishPoolModel model { get { return ModelCenter.Instance.GetModel<HolidayWishPoolModel>(); } }
+
+    public override void Done(GameNetPackBasic vNetPack) {
+        base.Done(vNetPack);
+        HAA45_tagMCFeastWishResult vNetData = vNetPack as HAA45_tagMCFeastWishResult;
+
+        model.OnAddWish(vNetData);
+    }
+}
diff --git a/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA45_tagMCFeastWishResult.cs.meta b/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA45_tagMCFeastWishResult.cs.meta
new file mode 100644
index 0000000..27aac4c
--- /dev/null
+++ b/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA45_tagMCFeastWishResult.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 73804b4fa0de1464da68194ab7d2c990
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA43_tagMCFeastWishInfo.cs b/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA43_tagMCFeastWishInfo.cs
new file mode 100644
index 0000000..1667bd6
--- /dev/null
+++ b/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA43_tagMCFeastWishInfo.cs
@@ -0,0 +1,59 @@
+using UnityEngine;
+using System.Collections;
+
+// AA 43 鑺傛棩绁濈娲诲姩淇℃伅 #tagMCFeastWishInfo
+
+public class HAA43_tagMCFeastWishInfo : GameNetPackBasic {
+    public string StartDate;    // 寮�濮嬫棩鏈� y-m-d
+    public string EndtDate;    // 缁撴潫鏃ユ湡 y-m-d
+    public byte ResetType;    // 閲嶇疆绫诲瀷锛�0-0鐐归噸缃紱1-5鐐瑰紑锛�5鐐归噸缃紱2-5鐐瑰紑锛�0鐐归噸缃�
+    public byte WishPoolShowCount;    //绁濈姹犲睍绀虹墿鍝佹暟
+    public  uint[] WishPoolShowItemList;    //绁濈姹犲睍绀虹墿鍝両D鍒楄〃
+    public byte BottleCount;    // 绁濈鐡朵釜鏁�
+    public  tagMCFeastWishBottleInfo[] BottleInfoList;    // 绁濈鐡朵俊鎭�
+
+    public HAA43_tagMCFeastWishInfo () {
+        _cmd = (ushort)0xAA43;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out StartDate, vBytes, NetDataType.Chars, 10);
+        TransBytes (out EndtDate, vBytes, NetDataType.Chars, 10);
+        TransBytes (out ResetType, vBytes, NetDataType.BYTE);
+        TransBytes (out WishPoolShowCount, vBytes, NetDataType.BYTE);
+        TransBytes (out WishPoolShowItemList, vBytes, NetDataType.DWORD, WishPoolShowCount);
+        TransBytes (out BottleCount, vBytes, NetDataType.BYTE);
+        BottleInfoList = new tagMCFeastWishBottleInfo[BottleCount];
+        for (int i = 0; i < BottleCount; i ++) {
+            BottleInfoList[i] = new tagMCFeastWishBottleInfo();
+            TransBytes (out BottleInfoList[i].BottleNum, vBytes, NetDataType.BYTE);
+            TransBytes (out BottleInfoList[i].NeedWishValue, vBytes, NetDataType.WORD);
+            TransBytes (out BottleInfoList[i].ChooseTimeMax, vBytes, NetDataType.BYTE);
+            TransBytes (out BottleInfoList[i].ChoosePrizeCount, vBytes, NetDataType.BYTE);
+            BottleInfoList[i].ChoosePrizeList = new tagMCFeastWishBottleItem[BottleInfoList[i].ChoosePrizeCount];
+            for (int j = 0; j < BottleInfoList[i].ChoosePrizeCount; j ++) {
+                BottleInfoList[i].ChoosePrizeList[j] = new tagMCFeastWishBottleItem();
+                TransBytes (out BottleInfoList[i].ChoosePrizeList[j].RecordIndex, vBytes, NetDataType.BYTE);
+                TransBytes (out BottleInfoList[i].ChoosePrizeList[j].ItemID, vBytes, NetDataType.DWORD);
+                TransBytes (out BottleInfoList[i].ChoosePrizeList[j].ItemCount, vBytes, NetDataType.WORD);
+                TransBytes (out BottleInfoList[i].ChoosePrizeList[j].IsBind, vBytes, NetDataType.BYTE);
+            }
+        }
+    }
+
+    public struct tagMCFeastWishBottleInfo {
+        public byte BottleNum;        //鐡跺瓙缂栧彿
+        public ushort NeedWishValue;        //鍗曟棰嗗鎵�闇�绁濈鍊�
+        public byte ChooseTimeMax;        //鏈�澶у彲棰嗗娆℃暟
+        public byte ChoosePrizeCount;        //鍙�夋嫨濂栧姳涓暟
+        public  tagMCFeastWishBottleItem[] ChoosePrizeList;        // 閫夋嫨濂栧姳鐗╁搧鍒楄〃锛屽凡閫夎繃鐨勬棤娉曞啀閫�
+    }
+
+    public struct tagMCFeastWishBottleItem {
+        public byte RecordIndex;        //鐗╁搧绱㈠紩锛岀敤浜庨�夋嫨鍙婅褰曟槸鍚﹀凡閫夋嫨
+        public uint ItemID;
+        public ushort ItemCount;
+        public byte IsBind;
+    }
+
+}
diff --git a/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA43_tagMCFeastWishInfo.cs.meta b/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA43_tagMCFeastWishInfo.cs.meta
new file mode 100644
index 0000000..7547392
--- /dev/null
+++ b/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA43_tagMCFeastWishInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 493eeebd8fe9f8647a73248300a6bf63
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA44_tagMCFeastWishPlayerInfo.cs b/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA44_tagMCFeastWishPlayerInfo.cs
new file mode 100644
index 0000000..189bcf2
--- /dev/null
+++ b/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA44_tagMCFeastWishPlayerInfo.cs
@@ -0,0 +1,31 @@
+using UnityEngine;
+using System.Collections;
+
+// AA 44 鑺傛棩绁濈娲诲姩鐜╁淇℃伅 #tagMCFeastWishPlayerInfo
+
+public class HAA44_tagMCFeastWishPlayerInfo : GameNetPackBasic {
+    public byte BottleCount;    // 绁濈鐡朵釜鏁�
+    public  tagMCFeastWishPlayerBottle[] PlayerBottleInfo;    // 绁濈鐡朵俊鎭�
+
+    public HAA44_tagMCFeastWishPlayerInfo () {
+        _cmd = (ushort)0xAA44;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out BottleCount, vBytes, NetDataType.BYTE);
+        PlayerBottleInfo = new tagMCFeastWishPlayerBottle[BottleCount];
+        for (int i = 0; i < BottleCount; i ++) {
+            PlayerBottleInfo[i] = new tagMCFeastWishPlayerBottle();
+            TransBytes (out PlayerBottleInfo[i].BottleNum, vBytes, NetDataType.BYTE);
+            TransBytes (out PlayerBottleInfo[i].WishValue, vBytes, NetDataType.WORD);
+            TransBytes (out PlayerBottleInfo[i].ChooseRecord, vBytes, NetDataType.DWORD);
+        }
+    }
+
+    public struct tagMCFeastWishPlayerBottle {
+        public byte BottleNum;        //鐡跺瓙缂栧彿
+        public ushort WishValue;        //褰撳墠鍙敤绁濈鍊�
+        public uint ChooseRecord;        //宸查�夌墿鍝佺储寮曡褰曪紝涓庤褰曠储寮曚綅杩愮畻鍒ゆ柇鏄惁宸查�夋嫨锛涚疮璁″凡閫夋嫨娆℃暟鍓嶇鑷繁璁$畻锛岄�氳繃璇ュ�煎彲绠楀嚭
+    }
+
+}
diff --git a/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA44_tagMCFeastWishPlayerInfo.cs.meta b/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA44_tagMCFeastWishPlayerInfo.cs.meta
new file mode 100644
index 0000000..3f6551a
--- /dev/null
+++ b/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA44_tagMCFeastWishPlayerInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: bbf6572f0f3ef834b95a2810b7b86847
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA45_tagMCFeastWishResult.cs b/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA45_tagMCFeastWishResult.cs
new file mode 100644
index 0000000..9117791
--- /dev/null
+++ b/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA45_tagMCFeastWishResult.cs
@@ -0,0 +1,21 @@
+using UnityEngine;
+using System.Collections;
+
+// AA 45 鑺傛棩绁濈绁濈缁撴灉 #tagMCFeastWishResult
+
+public class HAA45_tagMCFeastWishResult : GameNetPackBasic {
+    public ushort AddWishValue;    // 鏈澧炲姞鐨勭绂忓��
+    public ushort WishResultLen;
+    public string WishResult;    //  鑾峰緱鐗╁搧缁撴灉[[鐗╁搧ID,涓暟,鏄惁缁戝畾], ...]
+
+    public HAA45_tagMCFeastWishResult () {
+        _cmd = (ushort)0xAA45;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out AddWishValue, vBytes, NetDataType.WORD);
+        TransBytes (out WishResultLen, vBytes, NetDataType.WORD);
+        TransBytes (out WishResult, vBytes, NetDataType.Chars, WishResultLen);
+    }
+
+}
diff --git a/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA45_tagMCFeastWishResult.cs.meta b/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA45_tagMCFeastWishResult.cs.meta
new file mode 100644
index 0000000..525ce36
--- /dev/null
+++ b/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA45_tagMCFeastWishResult.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 0ce5b0f0805bebe49ba639bc0022ea72
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/HolidayWishes/HolidayLoginModel.cs b/System/HolidayWishes/HolidayLoginModel.cs
index 5f31788..0e4b14c 100644
--- a/System/HolidayWishes/HolidayLoginModel.cs
+++ b/System/HolidayWishes/HolidayLoginModel.cs
@@ -119,6 +119,8 @@
             OperationTimeHepler.Instance.TryGetOperation(Operation.HolidayLogin, out holiday);
             redPoint.state = RedPointState.None;
 
+            if (holiday == null) return; //灏佸寘椤哄簭濡傛灉鏈夐棶棰� 姝ゅ涓虹┖
+
             for (int i = 0; i < holiday.loginAwards.Count; i++)
             {
                 if (GetLoginAwardState(holiday.loginAwards[i].DayNum) == 1)
diff --git a/System/HolidayWishes/HolidayWishBottle.cs b/System/HolidayWishes/HolidayWishBottle.cs
new file mode 100644
index 0000000..ffd7019
--- /dev/null
+++ b/System/HolidayWishes/HolidayWishBottle.cs
@@ -0,0 +1,85 @@
+锘�//--------------------------------------------------------
+//    [Author]:           绗簩涓栫晫
+//    [  Date ]:           Thursday, April 18, 2019
+//--------------------------------------------------------
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace Snxxz.UI
+{
+
+    public class HolidayWishBottle : MonoBehaviour
+    {
+        [SerializeField]  Image bottleWater;
+        [SerializeField]  Image bottleFull;
+        [SerializeField] UIAlphaTween m_AlphaTween;
+        [SerializeField]  Text waterProcess;
+        [SerializeField]  Text isOver;
+        [SerializeField] UIEffect AddWish;
+        [SerializeField] TextMove AddWishText;
+        [SerializeField] Button OpenAwards;
+
+        HolidayWishPoolModel model { get { return ModelCenter.Instance.GetModel<HolidayWishPoolModel>(); } }
+
+        private void Awake()
+        {
+            model.UpdateWishNum += ShowAddEffect;
+        }
+
+
+        public void Display(byte bottleNum, OperationHolidayWish holiday)
+        {
+            AddWish.gameObject.SetActive(true);
+            bottleFull.gameObject.SetActive(false);
+            m_AlphaTween.enabled = false;
+
+            var process = Math.Min(model.GetBottleProcessState(bottleNum, holiday),  1);
+            if (process == -1)
+            {
+                //宸查瀹�
+                isOver.gameObject.SetActive(true);
+
+                bottleFull.gameObject.SetActive(false);
+                bottleWater.gameObject.SetActive(false);
+                waterProcess.gameObject.SetActive(false);
+            }
+            else
+            {
+                if (process == 1)
+                { 
+                    //宸叉弧
+                    bottleFull.gameObject.SetActive(true);
+                    m_AlphaTween.enabled = true;
+                    m_AlphaTween.Play();
+                }
+                isOver.gameObject.SetActive(false);
+
+                bottleWater.gameObject.SetActive(true);
+                bottleWater.fillAmount = process;
+                waterProcess.gameObject.SetActive(true);
+                waterProcess.text = (int)(process * 100) + "%";
+            }
+
+            OpenAwards.SetListener(() =>
+            {
+                model.bottleNumSelect = bottleNum;
+                WindowCenter.Instance.Open<WishBottleAwardWin>();
+            });
+        }
+
+        public void ShowAddEffect(int num)
+        {
+            AddWishText.Begin(Language.Get("SubWishInfo3", num));
+            AddWish.Play();
+        }
+
+    }
+}
+
+
+
+
diff --git a/System/HolidayWishes/HolidayWishBottle.cs.meta b/System/HolidayWishes/HolidayWishBottle.cs.meta
new file mode 100644
index 0000000..942843e
--- /dev/null
+++ b/System/HolidayWishes/HolidayWishBottle.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: ac8419ef66b74134787c567518e24609
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/HolidayWishes/HolidayWishPoolItemCell.cs b/System/HolidayWishes/HolidayWishPoolItemCell.cs
new file mode 100644
index 0000000..661b912
--- /dev/null
+++ b/System/HolidayWishes/HolidayWishPoolItemCell.cs
@@ -0,0 +1,35 @@
+锘�//--------------------------------------------------------
+//    [Author]:           绗簩涓栫晫
+//    [  Date ]:           Wednesday, September 26, 2018
+//--------------------------------------------------------
+using UnityEngine;
+using System.Collections;
+using UnityEngine.UI;
+
+
+namespace Snxxz.UI {
+
+    public class HolidayWishPoolItemCell : CellView {
+        [SerializeField] ItemCell itemCell;
+
+        public void Display(int index)
+        {
+            OperationHolidayWish holiday;
+            OperationTimeHepler.Instance.TryGetOperation(Operation.HolidayWish, out holiday);
+
+            //绗竴涓负鏍囩殑鐗�
+            int itemID = (int)holiday.wishPool[index];
+            var config = ItemConfig.Get(itemID);
+            var itemData = new ItemCellModel(itemID, false, 1);
+            itemCell.Init(itemData);
+            itemCell.button.SetListener(()=> {
+                ItemTipUtility.Show(itemID);
+            });
+
+        }
+    }
+
+}
+
+
+
diff --git a/System/HolidayWishes/HolidayWishPoolItemCell.cs.meta b/System/HolidayWishes/HolidayWishPoolItemCell.cs.meta
new file mode 100644
index 0000000..2035a94
--- /dev/null
+++ b/System/HolidayWishes/HolidayWishPoolItemCell.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1ea4bf8da19778c4293fcf6b234c8360
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/HolidayWishes/HolidayWishPoolModel.cs b/System/HolidayWishes/HolidayWishPoolModel.cs
new file mode 100644
index 0000000..542390b
--- /dev/null
+++ b/System/HolidayWishes/HolidayWishPoolModel.cs
@@ -0,0 +1,287 @@
+锘縰sing System;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+
+namespace Snxxz.UI
+{
+    public class HolidayWishPoolModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk, IOpenServerActivity
+    {
+        public event Action<int> onStateUpdate;
+        public const int redPointID = 28002;
+        public Redpoint redPoint = new Redpoint(MainRedDot.RedPoint_HolidayWishes, redPointID);
+        Operation operationType = Operation.HolidayWish;
+
+        //鑺傛棩绁濈 id浠�101寮�濮嬪拰绮惧僵娲诲姩鍖哄垎
+        public const int activityType = (int)OpenServerActivityCenter.ActivityType.AT_JRZF;
+        public const int activityID = 102;
+
+        //鐡跺瓙缂栧彿瀵瑰簲鐨刬nt2<绁濈鍊硷紝棰嗗彇鎯呭喌>
+        public Dictionary<byte, Int2> bottleDict = new Dictionary<byte, Int2>();
+        public event Action UpdateBottleInfo; // 鐡跺瓙淇℃伅鍙樻洿 绁濈鍊煎拰棰嗗鎯呭喌
+        public event Action UpdateLegendMsg;
+        public event Action<int> UpdateWishNum;
+
+        public byte bottleNumSelect;
+        public List<WishLegend> wishLegends = new List<WishLegend>();
+
+        public int wishItemID; //绁濈闇�瑕佺殑鐗╁搧ID
+        public int wishCount1; // 绁濈娆℃暟
+        public int wishSingleNeedNum = 1; //鍗曟绁濈闇�瑕佺殑鐗╁搧鏁伴噺
+        public int wishCount2;
+
+        bool IsRequestLegend = false; //棣栨鍚姩鐣岄潰璇锋眰
+        int viewType = 17;
+
+        PackModel playerPack { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
+
+        public override void Init()
+        {
+            playerPack.refreshItemCountEvent += RefreshItemCountEvent;
+            DTCA003_tagUniversalGameRecInfo.onGetUniversalGameInfo += OnGetUniversalGameInfo;
+            OperationTimeHepler.Instance.operationStartEvent += OperationStartEvent;
+            OperationTimeHepler.Instance.operationEndEvent += OperationEndEvent;
+            OperationTimeHepler.Instance.operationAdvanceEvent += OperationAdvanceEvent;
+            OpenServerActivityCenter.Instance.Register(activityID, this, activityType);
+
+            var funcCfg = FuncConfigConfig.Get("FeastWishCfg");
+            wishItemID = int.Parse(funcCfg.Numerical1);
+            var _jsonDataC = LitJson.JsonMapper.ToObject(funcCfg.Numerical2);
+            if (_jsonDataC.Count > 0)
+            {
+                wishCount1 = int.Parse(_jsonDataC[0].ToString());
+                wishCount2 = int.Parse(_jsonDataC[1].ToString());
+            }
+        }
+
+
+
+        public void OnBeforePlayerDataInitialize()
+        {
+            bottleDict.Clear();
+            IsRequestLegend = false;
+            wishLegends.Clear();
+        }
+
+        public void OnPlayerLoginOk()
+        {
+        }
+
+        public override void UnInit()
+        {
+            playerPack.refreshItemCountEvent -= RefreshItemCountEvent;
+            DTCA003_tagUniversalGameRecInfo.onGetUniversalGameInfo -= OnGetUniversalGameInfo;
+            OperationTimeHepler.Instance.operationStartEvent -= OperationStartEvent;
+            OperationTimeHepler.Instance.operationEndEvent -= OperationEndEvent;
+            OperationTimeHepler.Instance.operationAdvanceEvent -= OperationAdvanceEvent;
+        }
+
+        public bool IsOpen {
+            get {
+                return OperationTimeHepler.Instance.SatisfyOpenCondition(operationType);
+            }
+        }
+
+        public bool priorityOpen {
+            get {
+                return redPoint.state == RedPointState.Simple;
+            }
+        }
+
+        public bool IsAdvance {
+            get {
+                return OperationTimeHepler.Instance.SatisfyAdvanceCondition(operationType);
+            }
+        }
+
+        private void OperationEndEvent(Operation type, int state)
+        {
+            if (type == operationType && state == 0)
+            {
+                if (onStateUpdate != null)
+                {
+                    onStateUpdate(activityID);
+                }
+            }
+        }
+
+        private void OperationAdvanceEvent(Operation type)
+        {
+            if (type == operationType)
+            {
+                if (onStateUpdate != null)
+                {
+                    onStateUpdate(activityID);
+                }
+            }
+        }
+
+        private void OperationStartEvent(Operation type, int state)
+        {
+            if (type == operationType && state == 0)
+            {
+
+                if (onStateUpdate != null)
+                {
+                    onStateUpdate(activityID);
+                }
+            }
+        }
+
+        //0 鍙鍙�  1 宸查鍙�
+        public int GetBottleAwardState(byte bottleNum, int index)
+        {
+
+            OperationHolidayWish holiday;
+            OperationTimeHepler.Instance.TryGetOperation(operationType, out holiday);
+
+            int recordIndex = holiday.wishBottles[bottleNumSelect].ChoosePrizeList[index].RecordIndex;
+            if (((int)Math.Pow(2, recordIndex) & bottleDict[bottleNum].y) == 0)
+            {
+                return 0;
+            }
+
+            return 1;
+        }
+
+        void UpdateRedpoint()
+        {
+            OperationHolidayWish holiday;
+            OperationTimeHepler.Instance.TryGetOperation(operationType, out holiday);
+            redPoint.state = RedPointState.None;
+
+            if (holiday == null) return; //灏佸寘椤哄簭濡傛灉鏈夐棶棰� 姝ゅ涓虹┖
+
+            // 鐡跺瓙鐨勭绂忓�兼弧 鍜� 鏈夌绂忓�煎彲绁堟効鐨勬儏鍐� 澧炲姞绾㈢偣
+            foreach (var bottle in bottleDict)
+            {
+                var state = GetBottleProcessState(bottle.Key, holiday);
+                if (state >= 1)
+                {
+                    redPoint.state = RedPointState.Simple;
+                }
+            }
+
+            if (playerPack.GetItemCountByID(PackType.Item, wishItemID) >= wishCount1)
+            {
+                redPoint.state = RedPointState.Simple;
+            }
+
+        }
+
+        //鐡跺瓙杩涘害0鍒�1锛� -1浠h〃宸查瀹�
+        public float GetBottleProcessState(byte bottleNum, OperationHolidayWish holiday)
+        {
+            if (holiday == null) return 0;
+            if (!bottleDict.ContainsKey(bottleNum) || !holiday.wishBottles.ContainsKey(bottleNum)) return 0;
+
+            if (NumberOf1(bottleDict[bottleNum].y) >= holiday.wishBottles[bottleNum].ChooseTimeMax)
+                return -1;
+
+            return bottleDict[bottleNum].x / (float)holiday.wishBottles[bottleNum].NeedWishValue;
+        }
+
+        //閬嶅巻姣忔娑堥櫎涓�涓�1锛屾湁澶氬皯娆″氨澶氬皯涓�1
+        private int NumberOf1(int n)
+        {
+            int count = 0;
+            while (n != 0)
+            {
+                count++;
+                n &= n - 1;
+            }
+            return count;
+        }
+
+        public void UpdateInfo(HAA44_tagMCFeastWishPlayerInfo netPack)
+        {
+            for (int i = 0; i < netPack.PlayerBottleInfo.Length; i++)
+            {
+                byte bottleNum = netPack.PlayerBottleInfo[i].BottleNum;
+                if (bottleDict.ContainsKey(bottleNum))
+                {
+                    bottleDict[bottleNum] = new Int2(netPack.PlayerBottleInfo[i].WishValue, (int)netPack.PlayerBottleInfo[i].ChooseRecord);
+                }
+                else
+                {
+                    bottleDict.Add(bottleNum, new Int2(netPack.PlayerBottleInfo[i].WishValue, (int)netPack.PlayerBottleInfo[i].ChooseRecord));
+                }
+            }
+
+            if (UpdateBottleInfo != null)
+                UpdateBottleInfo();
+
+            UpdateRedpoint();
+        }
+
+        public void SendWish(byte wishCount)
+        {
+            CAA11_tagCMFeastWishPoolWish wish = new CAA11_tagCMFeastWishPoolWish();
+            wish.WishCount = wishCount;
+            GameNetSystem.Instance.SendInfo(wish);
+        }
+
+        private void RefreshItemCountEvent(PackType packType, int index, int itemId)
+        {
+            if (itemId != wishItemID) return;
+            UpdateRedpoint();
+        }
+
+
+        //姣忔鍚姩娓告垙 鍙湪鎵撳紑鐣岄潰鍋氫竴娆¤姹傦紝鍚庣画浼氭敹鍒版湇鍔$鍗曟潯閫氱煡
+        public void RequestLegend()
+        {
+            if (IsRequestLegend) return;
+            IsRequestLegend = true;
+            CA001_tagViewUniversalGameRec legend = new CA001_tagViewUniversalGameRec();
+            legend.ViewType = (byte)viewType;
+            GameNetSystem.Instance.SendInfo(legend);
+        }
+
+        public void OnAddWish(HAA45_tagMCFeastWishResult netPack)
+        {
+            if (UpdateWishNum != null)
+            {
+                UpdateWishNum((int)netPack.AddWishValue);
+            }
+        }
+
+        private void OnGetUniversalGameInfo(HA003_tagUniversalGameRecInfo package)
+        {
+            if (!IsRequestLegend)
+            {
+                //鐣岄潰棣栨鍚姩鍚庝細鑾峰彇涓�娆℃�讳俊鎭�
+                return;
+            }
+
+            if (package.Type != viewType) return;
+            for (int i = 0; i < package.Count; i++)
+            {
+                WishLegend msg = new WishLegend()
+                {
+                    name = package.UniversalGameRec[i].StrValue1,
+                    itemID = (int)package.UniversalGameRec[i].Value1,
+                    itemCount = (int)package.UniversalGameRec[i].Value2,
+                    source = (int)package.UniversalGameRec[i].Value3,
+                };
+
+                wishLegends.Add(msg);
+            }
+            if (wishLegends.Count > 35)
+            wishLegends.RemoveRange(0, 5);
+
+            if (UpdateLegendMsg != null)
+                UpdateLegendMsg();
+
+        }
+
+        public struct WishLegend
+        {
+            public string name;
+            public int itemID;
+            public int itemCount;
+            public int source;
+        }
+    }
+}
diff --git a/System/HolidayWishes/HolidayWishPoolModel.cs.meta b/System/HolidayWishes/HolidayWishPoolModel.cs.meta
new file mode 100644
index 0000000..59e87d1
--- /dev/null
+++ b/System/HolidayWishes/HolidayWishPoolModel.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: cf43871e7f02e6c4da7abc3b4f7bb861
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/HolidayWishes/HolidayWishPoolWin.cs b/System/HolidayWishes/HolidayWishPoolWin.cs
new file mode 100644
index 0000000..e6d058a
--- /dev/null
+++ b/System/HolidayWishes/HolidayWishPoolWin.cs
@@ -0,0 +1,234 @@
+锘�//--------------------------------------------------------
+//    [Author]:           绗簩涓栫晫
+//    [  Date ]:           Thursday, April 18, 2019
+//--------------------------------------------------------
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace Snxxz.UI
+{
+
+    public class HolidayWishPoolWin : Window
+    {
+        List<HolidayWishBottle> bottleList = new List<HolidayWishBottle>();
+
+        ScrollerController m_Controller;    // 鐗╁搧
+        Button wish1;
+        Text wishTxt1;
+        Text wishNeedNum1;
+
+        Button wish2;
+        Text wishTxt2;
+        Text wishNeedNum2;
+
+        Text allStarNum; //鍙绂忕殑鐗╁搧鎬绘暟
+        RichText wishLegend;
+
+        Operation operationType = Operation.HolidayWish;
+
+        HolidayWishPoolModel model { get { return ModelCenter.Instance.GetModel<HolidayWishPoolModel>(); } }
+        PackModel playerPack { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
+
+        #region Built-in
+        protected override void BindController()
+        {
+            bottleList.Add(GetWidgt<HolidayWishBottle>("light1"));
+            bottleList.Add(GetWidgt<HolidayWishBottle>("light2"));
+            bottleList.Add(GetWidgt<HolidayWishBottle>("light3"));
+            bottleList.Add(GetWidgt<HolidayWishBottle>("light4"));
+            bottleList.Add(GetWidgt<HolidayWishBottle>("light5"));
+
+            m_Controller = GetWidgt<ScrollerController>("ScrollerControl");
+
+            wish1 = GetWidgt<Button>("wishbtn1");
+            wishTxt1 = GetWidgt<Text>("Text1");
+            wishNeedNum1 = GetWidgt<Text>("startnum1");
+
+            wish2 = GetWidgt<Button>("wishbtn2");
+            wishTxt2 = GetWidgt<Text>("Text2");
+            wishNeedNum2 = GetWidgt<Text>("startnum2");
+
+            allStarNum = GetWidgt<Text>("allstarnum");
+            wishLegend = GetWidgt<RichText>("Content1");
+        }
+
+
+        void UseItemWish(int needEmpty, byte useCnt)
+        {
+            if (useCnt > playerPack.GetItemCountByID(PackType.Item, model.wishItemID))
+            {
+                SysNotifyMgr.Instance.ShowTip("RealmLevelUpError_3");
+                return;
+            }
+            int emptyCnt = playerPack.GetEmptyGridCount(PackType.Item);
+            if (emptyCnt < needEmpty)
+            {
+                SysNotifyMgr.Instance.ShowTip("GeRen_lhs_202580");
+                return;
+            }
+            model.SendWish(useCnt);
+        }
+
+        protected override void AddListeners()
+        {
+            wish1.SetListener(() =>
+            {
+                UseItemWish(2, (byte)model.wishCount1);
+            });
+
+            wish2.SetListener(() =>
+            {
+                UseItemWish(2, (byte)model.wishCount2);
+            });
+
+        }
+
+        protected override void OnPreOpen()
+        {
+            model.RequestLegend();
+            m_Controller.OnRefreshCell += OnRefreshCell;
+            OperationTimeHepler.Instance.operationTimeUpdateEvent += OperationTimeUpdateEvent;
+            playerPack.refreshItemCountEvent += RefreshItemCountEvent;
+            model.UpdateLegendMsg += UpdateLegendMsg;
+            model.UpdateBottleInfo += Display;
+            
+        }
+
+
+        protected override void OnAfterOpen()
+        {
+            Display();
+        }
+
+        protected override void OnPreClose()
+        {
+            m_Controller.OnRefreshCell -= OnRefreshCell;
+            OperationTimeHepler.Instance.operationTimeUpdateEvent -= OperationTimeUpdateEvent;
+            playerPack.refreshItemCountEvent -= RefreshItemCountEvent;
+            model.UpdateLegendMsg -= UpdateLegendMsg;
+            model.UpdateBottleInfo -= Display;
+        }
+
+        protected override void OnAfterClose()
+        {
+        }
+        #endregion
+
+
+        private void RefreshItemCountEvent(PackType packType, int index, int itemId)
+        {
+            if (itemId != model.wishItemID) return;
+            var itemCnt = playerPack.GetItemCountByID(PackType.Item, model.wishItemID);
+            allStarNum.text = itemCnt.ToString();
+
+            if (itemCnt < model.wishSingleNeedNum * model.wishCount1)
+                wishNeedNum1.color = UIHelper.GetUIColor(TextColType.Red, true);
+            else
+                wishNeedNum1.color = UIHelper.GetUIColor(TextColType.LightYellow, true);
+
+            if (itemCnt < model.wishSingleNeedNum * model.wishCount2)
+                wishNeedNum2.color = UIHelper.GetUIColor(TextColType.Red, true);
+            else
+                wishNeedNum2.color = UIHelper.GetUIColor(TextColType.LightYellow, true);
+        }
+
+
+        void Display()
+        {
+            OperationHolidayWish holiday;
+            OperationTimeHepler.Instance.TryGetOperation(operationType, out holiday);
+
+            int index = 0;
+            foreach(var key in holiday.wishBottles.Keys)
+            {
+                if (index >= bottleList.Count)
+                {
+                    break;
+                }
+                bottleList[index].gameObject.SetActive(true);
+                bottleList[index].Display(key, holiday);
+                index++;
+            }
+            for (int i = index; i < bottleList.Count; i++)
+            {
+                bottleList[i].gameObject.SetActive(false);
+            }
+
+            DisplayScroll();
+
+            var itemCnt = playerPack.GetItemCountByID(PackType.Item, model.wishItemID);
+
+            wishTxt1.text = Language.Get("SubWishInfo4", model.wishCount1);
+            wishNeedNum1.text = (model.wishSingleNeedNum * model.wishCount1).ToString();
+            if (itemCnt < model.wishSingleNeedNum * model.wishCount1)
+                wishNeedNum1.color = UIHelper.GetUIColor(TextColType.Red, true);
+            else
+                wishNeedNum1.color = UIHelper.GetUIColor(TextColType.LightYellow, true);
+
+            wishTxt2.text = Language.Get("SubWishInfo4", model.wishCount2);
+            wishNeedNum2.text = (model.wishSingleNeedNum * model.wishCount2).ToString();
+            if (itemCnt < model.wishSingleNeedNum * model.wishCount2)
+                wishNeedNum2.color = UIHelper.GetUIColor(TextColType.Red, true);
+            else
+                wishNeedNum2.color = UIHelper.GetUIColor(TextColType.LightYellow, true);
+
+            allStarNum.text = itemCnt.ToString();
+        }
+
+        void DisplayScroll()
+        {
+            m_Controller.Refresh();
+            OperationHolidayWish holiday;
+            OperationTimeHepler.Instance.TryGetOperation(operationType, out holiday);
+
+            for (int i = 0; i < holiday.wishPool.Count; i++)
+            {
+                m_Controller.AddCell(ScrollerDataType.Header, i);
+            }
+            m_Controller.Restart();
+            m_Controller.m_Scorller.RefreshActiveCellViews();
+        }
+
+        private void OnRefreshCell(ScrollerDataType type, CellView cell)
+        {
+            if (type != ScrollerDataType.Header) return;
+            var _cell = cell as HolidayWishPoolItemCell;
+            _cell.Display(_cell.index);
+        }
+
+        private void OperationTimeUpdateEvent(Operation type)
+        {
+            if (type == operationType)
+            {
+                Display();
+            }
+        }
+
+        void UpdateLegendMsg()
+        {
+            string msg = string.Empty; 
+            foreach (var legend in model.wishLegends)
+            {
+                if (legend.source == 1)
+                {
+                    //绁濈鐡惰幏寰�
+                    msg += Language.Get("SubWishInfo6", legend.name, legend.itemID, legend.itemCount);
+                }
+                else {
+                    msg += Language.Get("SubWishInfo5", legend.name, legend.itemID, legend.itemCount);
+                }
+            }
+
+            wishLegend.text = msg;
+        }
+
+    }
+}
+
+
+
+
diff --git a/System/HolidayWishes/HolidayWishPoolWin.cs.meta b/System/HolidayWishes/HolidayWishPoolWin.cs.meta
new file mode 100644
index 0000000..593441b
--- /dev/null
+++ b/System/HolidayWishes/HolidayWishPoolWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 833ff8bebd4e1004aa9a7c597fbd710e
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/HolidayWishes/HolidayWishesWin.cs b/System/HolidayWishes/HolidayWishesWin.cs
index cbe3c11..b344b7c 100644
--- a/System/HolidayWishes/HolidayWishesWin.cs
+++ b/System/HolidayWishes/HolidayWishesWin.cs
@@ -19,7 +19,7 @@
         {
             base.AddListeners();
             SetFunctionListener(0, ShowLoginWin);
-            SetFunctionListener(1, ShowAlchemyNormalDrug);
+            SetFunctionListener(1, ShowHolidayWishPoolWin);
             SetFunctionListener(2, ShowAlchemyFairy);
             SetFunctionListener(3, ShowAlchemyFairyDrug);
         }
@@ -57,11 +57,24 @@
                 SetFunctionButtonActive(3, false);
             }
 
+
+        }
+
+        protected override void OnAfterOpen()
+        {
+            for (int i = 0; i < 4; i++)
+            {
+                if (GetFunctionButtonRedPointState(i) != RedPointState.None)
+                {
+                    FunctionButtonInvoke(i);
+                    break;
+                }
+            }
         }
 
         protected override void OnPreClose()
         {
-            CloseSubWindows();
+            base.OnPreClose();
         }
         #endregion
 
@@ -73,10 +86,10 @@
             functionOrder = 0;
         }
 
-        private void ShowAlchemyNormalDrug()
+        private void ShowHolidayWishPoolWin()
         {
             CloseSubWindows();
-            WindowCenter.Instance.Open<AlchemyNormalUseDrugWin>();
+            WindowCenter.Instance.Open<HolidayWishPoolWin>();
             functionOrder = 1;
         }
 
diff --git a/System/HolidayWishes/OperationHolidayWish.cs b/System/HolidayWishes/OperationHolidayWish.cs
new file mode 100644
index 0000000..eee899c
--- /dev/null
+++ b/System/HolidayWishes/OperationHolidayWish.cs
@@ -0,0 +1,52 @@
+锘縰sing System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+namespace Snxxz.UI
+{
+    public class OperationHolidayWish : OperationBase
+    {
+        //鐡跺瓙缂栧彿瀵瑰簲鐨勪俊鎭�
+        public Dictionary<byte, HAA43_tagMCFeastWishInfo.tagMCFeastWishBottleInfo> wishBottles = new Dictionary<byte, HAA43_tagMCFeastWishInfo.tagMCFeastWishBottleInfo>();
+        public List<uint> wishPool = new List<uint>(); //灞曠ず濂栨睜鐗╁搧ID
+
+        public override bool SatisfyOpenCondition()
+        {
+            return PlayerDatas.Instance.baseData.LV >= limitLv;
+        }
+
+        public override string ToDisplayTime()
+        {
+            var textBuilder = OperationTimeHepler.textBuilder;
+            textBuilder.Length = 0;
+            textBuilder.Append(startDate.ToDisplay());
+            if (startDate != endDate)
+            {
+                textBuilder.Append("鈥�");
+                textBuilder.Append(endDate.ToDisplay());
+            }
+            return textBuilder.ToString();
+        }
+
+        public override void Reset()
+        {
+            base.Reset();
+        }
+
+        public void ParsePackage(HAA43_tagMCFeastWishInfo package)
+        {
+            wishPool.Clear();
+            for (int i = 0; i < package.WishPoolShowItemList.Length; i++)
+            {
+                wishPool.Add(package.WishPoolShowItemList[i]);   
+            }
+
+            wishBottles.Clear();
+            for (int i = 0; i < package.BottleInfoList.Length; i++)
+            {
+                wishBottles.Add(package.BottleInfoList[i].BottleNum, package.BottleInfoList[i]);
+            }
+        }
+    }
+}
+
diff --git a/System/HolidayWishes/OperationHolidayWish.cs.meta b/System/HolidayWishes/OperationHolidayWish.cs.meta
new file mode 100644
index 0000000..12fec06
--- /dev/null
+++ b/System/HolidayWishes/OperationHolidayWish.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4dd67f0928853d14eb487df8dfb9aa79
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/HolidayWishes/TextMove.cs b/System/HolidayWishes/TextMove.cs
new file mode 100644
index 0000000..552da51
--- /dev/null
+++ b/System/HolidayWishes/TextMove.cs
@@ -0,0 +1,51 @@
+锘�//--------------------------------------------------------
+//    [Author]:           绗簩涓栫晫
+//    [  Date ]:           Thursday, September 14, 2017
+//--------------------------------------------------------
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace Snxxz.UI
+{
+
+    public class TextMove : MonoBehaviour
+    {
+        [SerializeField] ScreenMoveTo m_MoveTo;
+        [SerializeField] UIAlphaTween m_AlphaTween;
+
+        [SerializeField] Text m_Text;
+        public float startX;
+        public float startY;
+
+
+        public void Begin(string content)
+        {
+            this.transform.SetActive(true);
+            SetEnable(true);
+            m_Text.text = content;
+
+            this.transform.localPosition = new Vector3(startX, startY, 0);
+            m_MoveTo.Begin(OnFloatEnd);
+            m_Text.color = m_Text.color.SetA(1f);
+            m_AlphaTween.SetStartState();
+            m_AlphaTween.Play();
+        }
+
+        public void SetEnable(bool _enable)
+        {
+            m_MoveTo.enabled = _enable;
+            m_AlphaTween.enabled = _enable;
+        }
+
+        private void OnFloatEnd()
+        {
+            SetEnable(false);
+            this.transform.SetActive(false);
+        }
+
+    }
+
+}
+
+
+
diff --git a/System/HolidayWishes/TextMove.cs.meta b/System/HolidayWishes/TextMove.cs.meta
new file mode 100644
index 0000000..608c831
--- /dev/null
+++ b/System/HolidayWishes/TextMove.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 533fe0e50f5571946a1462416c3d622b
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/HolidayWishes/WishBottleAwardWin.cs b/System/HolidayWishes/WishBottleAwardWin.cs
new file mode 100644
index 0000000..b29e5fa
--- /dev/null
+++ b/System/HolidayWishes/WishBottleAwardWin.cs
@@ -0,0 +1,178 @@
+锘�//--------------------------------------------------------
+//    [Author]:           绗簩涓栫晫
+//    [  Date ]:           Thursday, June 21, 2018
+//--------------------------------------------------------
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+using UnityEngine.UI;
+
+namespace Snxxz.UI
+{
+
+    public class WishBottleAwardWin : Window
+    {
+
+        List<ItemCell> itemList = new List<ItemCell>();
+        List<Image> itemSelect = new List<Image>();
+        List<Image> getYetList = new List<Image>();
+        Button m_OKButton;
+        Text m_Text;
+        Button m_CloseButton;
+
+        int SelectIndex = -1;
+        Operation operationType = Operation.HolidayWish;
+
+        HolidayWishPoolModel model { get { return ModelCenter.Instance.GetModel<HolidayWishPoolModel>(); } }
+
+        #region Built-in
+
+        protected override void BindController()
+        {
+            itemList.Clear();
+            itemList.Add(GetWidgt<ItemCell>("ItemCell1"));
+            itemList.Add(GetWidgt<ItemCell>("ItemCell2"));
+            itemList.Add(GetWidgt<ItemCell>("ItemCell3"));
+            itemList.Add(GetWidgt<ItemCell>("ItemCell4"));
+            itemList.Add(GetWidgt<ItemCell>("ItemCell5"));
+            itemList.Add(GetWidgt<ItemCell>("ItemCell6"));
+            itemList.Add(GetWidgt<ItemCell>("ItemCell7"));
+            itemList.Add(GetWidgt<ItemCell>("ItemCell8"));
+
+            itemSelect.Clear();
+            itemSelect.Add(GetWidgt<Image>("select1"));
+            itemSelect.Add(GetWidgt<Image>("select2"));
+            itemSelect.Add(GetWidgt<Image>("select3"));
+            itemSelect.Add(GetWidgt<Image>("select4"));
+            itemSelect.Add(GetWidgt<Image>("select5"));
+            itemSelect.Add(GetWidgt<Image>("select6"));
+            itemSelect.Add(GetWidgt<Image>("select7"));
+            itemSelect.Add(GetWidgt<Image>("select8"));
+
+            getYetList.Clear();
+            getYetList.Add(GetWidgt<Image>("yet1"));
+            getYetList.Add(GetWidgt<Image>("yet2"));
+            getYetList.Add(GetWidgt<Image>("yet3"));
+            getYetList.Add(GetWidgt<Image>("yet4"));
+            getYetList.Add(GetWidgt<Image>("yet5"));
+            getYetList.Add(GetWidgt<Image>("yet6"));
+            getYetList.Add(GetWidgt<Image>("yet7"));
+            getYetList.Add(GetWidgt<Image>("yet8"));
+
+            m_OKButton = GetWidgt<Button>("OK");
+            m_CloseButton = GetWidgt<Button>("CloseBtn");
+            m_Text = GetWidgt<Text>("wishText");
+        }
+
+        protected override void AddListeners()
+        {
+            m_CloseButton.AddListener(CloseClick);
+        }
+
+        protected override void OnPreOpen()
+        {
+            SelectIndex = -1;
+            model.UpdateBottleInfo += Display;
+            Display();
+        }
+
+        protected override void OnAfterOpen()
+        {
+
+        }
+
+        protected override void OnPreClose()
+        {
+            model.UpdateBottleInfo -= Display;
+        }
+
+        protected override void OnAfterClose()
+        {
+        }
+
+        #endregion
+
+        void Display()
+        {
+            OperationHolidayWish holiday;
+            OperationTimeHepler.Instance.TryGetOperation(operationType, out holiday);
+
+
+            for (int i = 0; i < itemList.Count; i++)
+            {
+                var items = holiday.wishBottles[model.bottleNumSelect].ChoosePrizeList;
+                if (i < items.Length)
+                {
+                    itemList[i].gameObject.SetActive(true);
+
+                    int itemID = (int)items[i].ItemID;
+                    var config = ItemConfig.Get(itemID);
+                    var itemData = new ItemCellModel(itemID, false, items[i].ItemCount);
+                    itemList[i].Init(itemData);
+                    itemList[i].auctionIcon.gameObject.SetActive(items[i].IsBind > 0 ? true : false);
+
+
+                    //閫変腑
+                    foreach (var select in itemSelect)
+                    {
+                        select.gameObject.SetActive(false);
+                    }
+                    if (SelectIndex != -1)
+                        itemSelect[SelectIndex].gameObject.SetActive(true);
+
+                    int index = i;
+                    itemList[i].button.SetListener(() => {
+                        foreach (var select in itemSelect)
+                        {
+                            select.gameObject.SetActive(false);
+                        }
+                        itemSelect[index].gameObject.SetActive(true);
+                        SelectIndex = index;
+                    });
+
+                    //宸查鍙�
+                    getYetList[i].gameObject.SetActive(model.GetBottleAwardState(model.bottleNumSelect, i) == 1);
+                }
+                else
+                {
+                    itemList[i].gameObject.SetActive(false);
+                }
+            }
+
+            m_OKButton.SetListener(() => {
+                if (SelectIndex == -1)
+                {
+                    SysNotifyMgr.Instance.ShowTip("WishBottle1");
+                    return;
+                }
+                if (model.GetBottleAwardState(model.bottleNumSelect, SelectIndex) == 1)
+                {
+                    SysNotifyMgr.Instance.ShowTip("WishBottle");
+                    return;
+                }
+
+                int recordIndex = holiday.wishBottles[model.bottleNumSelect].ChoosePrizeList[SelectIndex].RecordIndex;
+
+                CAA10_tagCMFeastWishBottleChooseItem wish = new CAA10_tagCMFeastWishBottleChooseItem();
+                wish.BottleNum = model.bottleNumSelect;
+                wish.RecordIndex = (byte)recordIndex;
+                GameNetSystem.Instance.SendInfo(wish);
+            });
+
+            var needNum = holiday.wishBottles[model.bottleNumSelect].NeedWishValue;
+            var curNum = model.bottleDict[model.bottleNumSelect].x;
+            string curNumStr = UIHelper.AppendColor(curNum >= needNum ? TextColType.DarkGreen:TextColType.Red, curNum.ToString());
+
+            m_Text.text = Language.Get("SubWishInfo7", curNumStr, needNum);
+        }
+
+    }
+
+}
+
+
+
+
diff --git a/System/HolidayWishes/WishBottleAwardWin.cs.meta b/System/HolidayWishes/WishBottleAwardWin.cs.meta
new file mode 100644
index 0000000..802b4d3
--- /dev/null
+++ b/System/HolidayWishes/WishBottleAwardWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6ce78a3b2fd4c5343ba3ac108ff81823
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/Welfare/OperationTimeHepler.cs b/System/Welfare/OperationTimeHepler.cs
index 1323a4f..02b6dd0 100644
--- a/System/Welfare/OperationTimeHepler.cs
+++ b/System/Welfare/OperationTimeHepler.cs
@@ -466,6 +466,34 @@
             }
         }
 
+        public void UpdateHolidayWish(HAA43_tagMCFeastWishInfo package)
+        {
+            OperationBase operationBase = null;
+            operationDict.TryGetValue(Operation.HolidayWish, out operationBase);
+            if (string.IsNullOrEmpty(package.StartDate) || string.IsNullOrEmpty(package.EndtDate))
+            {
+                ForceStopOperation(Operation.HolidayWish);
+            }
+            else
+            {
+                if (operationBase == null)
+                {
+                    operationBase = new OperationHolidayWish();
+                    operationDict.Add(Operation.HolidayWish, operationBase);
+                }
+                var operation = operationBase as OperationHolidayWish;
+                operation.Reset();
+                operation.startDate = ParseOperationDate(package.StartDate);
+                operation.endDate = ParseOperationDate(package.EndtDate);
+                operation.resetType = package.ResetType;
+                operation.ParsePackage(package);
+                if (operationTimeUpdateEvent != null)
+                {
+                    operationTimeUpdateEvent(Operation.HolidayWish);
+                }
+            }
+        }
+
 
         public void UpdateMultiRechargePackage(HAA27_tagMCActRechargePrizeInfo package)
         {
@@ -1106,6 +1134,7 @@
         DaysAccumulateRecharge, //绱鍏呭�硷紝澶氭棩
         CollectWords,   //鏀堕泦鏂囧瓧
         HolidayLogin,   //鑺傛棩鐧诲綍
+        HolidayWish,   //鑺傛棩绁濈
         max,
     }
 }
diff --git a/System/WindowBase/ModelCenter.cs b/System/WindowBase/ModelCenter.cs
index 486b0c6..31951d6 100644
--- a/System/WindowBase/ModelCenter.cs
+++ b/System/WindowBase/ModelCenter.cs
@@ -244,6 +244,7 @@
             RegisterModel<CollectWordsModel>();
 
             RegisterModel<HolidayLoginModel>();
+            RegisterModel<HolidayWishPoolModel>();
 
             inited = true;
         }
diff --git a/System/WindowBase/OneLevelWin.cs b/System/WindowBase/OneLevelWin.cs
index 33dc7ff..4fd3704 100644
--- a/System/WindowBase/OneLevelWin.cs
+++ b/System/WindowBase/OneLevelWin.cs
@@ -73,6 +73,9 @@
 
             m_TitleIcon.SetSprite(WindowConfig.GetTitleIconKey(name));
             m_TitleIcon.SetNativeSize();
+
+            PlayerDatas.Instance.playerDataRefreshEvent += OnPlayerDataUpdate;
+
         }
 
         protected override void AddListeners()
@@ -89,7 +92,7 @@
                 m_Diamond = this.GetComponent<Text>("Pivot/Container_BackGround/FollowStoreBottom/GoldCountBG/CountText");
                 m_BindDiamond = this.GetComponent<Text>("Pivot/Container_BackGround/FollowStoreBottom/GoldPaperCountBG/CountText");
 
-            PlayerDatas.Instance.playerDataRefreshEvent += OnPlayerDataUpdate;
+            
             UpdateMoney();
         }
 
@@ -99,7 +102,6 @@
 
         protected override void OnPreClose()
         {
-            PlayerDatas.Instance.playerDataRefreshEvent -= OnPlayerDataUpdate;
             CloseSubWindows();
         }
 
@@ -138,6 +140,17 @@
             m_Group.SetFunctionButtonActive(order, isShow);
         }
 
+        public RedPointState GetFunctionButtonRedPointState(int order)
+        {
+            return m_Group.GetFunctionButtonRedPointState(order);
+        }
+
+        public void FunctionButtonInvoke(int order)
+        {
+            m_Group.TriggerByOrder(order);
+            m_Group.GotoOrder(order);
+        }
+
         private void OnPlayerDataUpdate(PlayerDataType type)
         {
             switch (type)
diff --git a/UI/Common/FunctionButtonGroup.cs b/UI/Common/FunctionButtonGroup.cs
index 596aab0..dc19f94 100644
--- a/UI/Common/FunctionButtonGroup.cs
+++ b/UI/Common/FunctionButtonGroup.cs
@@ -239,6 +239,16 @@
             {
                 functionButtons[order].gameObject.SetActive(isShow);
             }
+        }
+
+        public RedPointState GetFunctionButtonRedPointState(int order)
+        {
+            if (functionButtons.ContainsKey(order))
+            {
+                return RedpointCenter.Instance.GetRedpointState(functionButtons[order].redpoint.redpointId);
+            }
+
+            return RedPointState.None;
         }
     }
 

--
Gitblit v1.8.0