From 1dd9883f87e8fdee836279bb3f89f2646bfa24b7 Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期一, 08 四月 2019 14:06:34 +0800
Subject: [PATCH] 3335 缥缈仙域

---
 System/HazyRegion/HazyRegionIncidentPanel.cs                             |   87 +++++++
 System/HazyRegion/HazyRegionWin.cs                                       |   45 +++
 System/DailyQuest/DailyQuestData.cs                                      |    7 
 System/CrossServerOneVsOne/CrossServerWin.cs                             |    8 
 Utility/EnumHelper.cs                                                    |    1 
 System/HazyRegion/HazyRegionIncidentBehaviour.cs                         |   33 ++
 Core/GameEngine/Model/Config/HazyRegionConfig.cs.meta                    |    4 
 Core/NetworkPackage/ServerPack/HA3_Function/HA315_tagMCDailyActionCnt.cs |    4 
 System/HazyRegion/HazyRegionEntrancePanel.cs                             |  114 +++++++++
 System/DailyQuest/DailyQuestModel.cs                                     |   32 ++
 /dev/null                                                                |   20 -
 System/HazyRegion/HazyRegionModel.cs                                     |   70 +++++
 System/HazyRegion/HazyRegionIncidentPanel.cs.meta                        |    4 
 System/HazyRegion/HazyRegionCyclicScroll.cs                              |    4 
 System/HazyRegion/HazyRegionIncidentBehaviour.cs.meta                    |    4 
 Core/GameEngine/Model/Config/HazyRegionConfig.cs                         |  228 +++++++++++++++++++
 System/HazyRegion/HazyRegionEntrancePanel.cs.meta                        |    0 
 17 files changed, 617 insertions(+), 48 deletions(-)

diff --git a/Core/GameEngine/Model/Config/HazyRegionConfig.cs b/Core/GameEngine/Model/Config/HazyRegionConfig.cs
new file mode 100644
index 0000000..b8e4a19
--- /dev/null
+++ b/Core/GameEngine/Model/Config/HazyRegionConfig.cs
@@ -0,0 +1,228 @@
+锘�//--------------------------------------------------------
+//    [Author]:           Fish
+//    [  Date ]:           Monday, April 08, 2019
+//--------------------------------------------------------
+
+using System.Collections.Generic;
+using System.IO;
+using System.Threading;
+using System;
+using UnityEngine;
+
+[XLua.LuaCallCSharp]
+public partial class HazyRegionConfig
+{
+
+    public readonly int id;
+	public readonly int incidentType;
+	public readonly string name;
+	public readonly int dungeonId;
+	public readonly int lineId;
+	public readonly int point;
+	public readonly int alchemyLevel;
+	public readonly int[] reward;
+	public readonly string PortraitID;
+
+	public HazyRegionConfig()
+    {
+    }
+
+    public HazyRegionConfig(string input)
+    {
+        try
+        {
+            var tables = input.Split('\t');
+
+            int.TryParse(tables[0],out id); 
+
+			int.TryParse(tables[1],out incidentType); 
+
+			name = tables[2];
+
+			int.TryParse(tables[3],out dungeonId); 
+
+			int.TryParse(tables[4],out lineId); 
+
+			int.TryParse(tables[5],out point); 
+
+			int.TryParse(tables[6],out alchemyLevel); 
+
+			string[] rewardStringArray = tables[7].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
+			reward = new int[rewardStringArray.Length];
+			for (int i=0;i<rewardStringArray.Length;i++)
+			{
+				 int.TryParse(rewardStringArray[i],out reward[i]);
+			}
+
+			PortraitID = tables[8];
+        }
+        catch (Exception ex)
+        {
+            DebugEx.Log(ex);
+        }
+    }
+
+    static Dictionary<string, HazyRegionConfig> configs = new Dictionary<string, HazyRegionConfig>();
+    public static HazyRegionConfig Get(string id)
+    {   
+		if (!inited)
+        {
+            Debug.Log("HazyRegionConfig 杩樻湭瀹屾垚鍒濆鍖栥��");
+            return null;
+        }
+		
+        if (configs.ContainsKey(id))
+        {
+            return configs[id];
+        }
+
+        HazyRegionConfig config = null;
+        if (rawDatas.ContainsKey(id))
+        {
+            config = configs[id] = new HazyRegionConfig(rawDatas[id]);
+            rawDatas.Remove(id);
+        }
+
+        return config;
+    }
+
+	public static HazyRegionConfig Get(int id)
+    {
+        return Get(id.ToString());
+    }
+
+    public static List<string> GetKeys()
+    {
+        var keys = new List<string>();
+        keys.AddRange(configs.Keys);
+        keys.AddRange(rawDatas.Keys);
+        return keys;
+    }
+
+    public static List<HazyRegionConfig> GetValues()
+    {
+        var values = new List<HazyRegionConfig>();
+        values.AddRange(configs.Values);
+
+        var keys = new List<string>(rawDatas.Keys);
+        foreach (var key in keys)
+        {
+            values.Add(Get(key));
+        }
+
+        return values;
+    }
+
+	public static bool Has(string id)
+    {
+        return configs.ContainsKey(id) || rawDatas.ContainsKey(id);
+    }
+
+	public static bool Has(int id)
+    {
+        return Has(id.ToString());
+    }
+
+	public static bool inited { get; private set; }
+    protected static Dictionary<string, string> rawDatas = new Dictionary<string, string>();
+    public static void Init(bool sync=false)
+    {
+	    inited = false;
+		var path = string.Empty;
+        if (AssetSource.refdataFromEditor)
+        {
+            path = ResourcesPath.CONFIG_FODLER +"/HazyRegion.txt";
+        }
+        else
+        {
+            path = AssetVersionUtility.GetAssetFilePath("config/HazyRegion.txt");
+        }
+
+		var tempConfig = new HazyRegionConfig();
+        var preParse = tempConfig is IConfigPostProcess;
+
+        if (sync)
+        {
+            var lines = File.ReadAllLines(path);
+            if (!preParse)
+            {
+                rawDatas = new Dictionary<string, string>(lines.Length - 3);
+            }
+            for (int i = 3; i < lines.Length; i++)
+            {
+				try 
+				{
+					var line = lines[i];
+					var index = line.IndexOf("\t");
+					if (index == -1)
+					{
+						continue;
+					}
+					var id = line.Substring(0, index);
+
+					if (preParse)
+					{
+						var config = new HazyRegionConfig(line);
+						configs[id] = config;
+						(config as IConfigPostProcess).OnConfigParseCompleted();
+					}
+					else
+					{
+						rawDatas[id] = line;
+					}
+				}
+				catch (System.Exception ex)
+                {
+                    Debug.LogError(ex);
+                }
+            }
+			inited = true;
+        }
+        else
+        {
+            ThreadPool.QueueUserWorkItem((object _object) =>
+            {
+                var lines = File.ReadAllLines(path);
+				if (!preParse)
+				{
+					rawDatas = new Dictionary<string, string>(lines.Length - 3);
+				}
+                for (int i = 3; i < lines.Length; i++)
+                {
+					try 
+					{
+					   var line = lines[i];
+						var index = line.IndexOf("\t");
+						if (index == -1)
+						{
+							continue;
+						}
+						var id = line.Substring(0, index);
+
+						if (preParse)
+						{
+							var config = new HazyRegionConfig(line);
+							configs[id] = config;
+							(config as IConfigPostProcess).OnConfigParseCompleted();
+						}
+						else
+						{
+							rawDatas[id] = line;
+						}
+					}
+					catch (System.Exception ex)
+                    {
+                        Debug.LogError(ex);
+                    }
+                }
+
+                inited = true;
+            });
+        }
+    }
+
+}
+
+
+
+
diff --git a/System/HazyRegion/HazyRegionEventBehaviour.cs.meta b/Core/GameEngine/Model/Config/HazyRegionConfig.cs.meta
similarity index 75%
copy from System/HazyRegion/HazyRegionEventBehaviour.cs.meta
copy to Core/GameEngine/Model/Config/HazyRegionConfig.cs.meta
index b05ba16..9772540 100644
--- a/System/HazyRegion/HazyRegionEventBehaviour.cs.meta
+++ b/Core/GameEngine/Model/Config/HazyRegionConfig.cs.meta
@@ -1,6 +1,6 @@
 fileFormatVersion: 2
-guid: f157de73adafe7e40943853257e03a6d
-timeCreated: 1554360030
+guid: 3404c0f308cb2174bb7b93e12c3110bd
+timeCreated: 1554693663
 licenseType: Pro
 MonoImporter:
   serializedVersion: 2
diff --git a/Core/NetworkPackage/ServerPack/HA3_Function/HA315_tagMCDailyActionCnt.cs b/Core/NetworkPackage/ServerPack/HA3_Function/HA315_tagMCDailyActionCnt.cs
index 1e84e09..a96f638 100644
--- a/Core/NetworkPackage/ServerPack/HA3_Function/HA315_tagMCDailyActionCnt.cs
+++ b/Core/NetworkPackage/ServerPack/HA3_Function/HA315_tagMCDailyActionCnt.cs
@@ -22,6 +22,8 @@
             ActionInfo[i] = new tagMCDailyActionInfo();
             TransBytes(out ActionInfo[i].ActionID, vBytes, NetDataType.DWORD);
             TransBytes(out ActionInfo[i].DayFinishCnt, vBytes, NetDataType.WORD);
+            TransBytes(out ActionInfo[i].DayBuyTimes, vBytes, NetDataType.BYTE);
+            TransBytes(out ActionInfo[i].DayItemTimes, vBytes, NetDataType.BYTE);
             TransBytes(out ActionInfo[i].WeekFinishCnt, vBytes, NetDataType.DWORD);
         }
     }
@@ -30,6 +32,8 @@
     {
         public uint ActionID;        // ID
         public ushort DayFinishCnt;        // 浠婃棩宸插畬鎴愭鏁�
+        public byte DayBuyTimes;          //浠婃棩璐拱娆℃暟
+        public byte DayItemTimes;         //浠婃棩鐗╁搧澧炲姞娆℃暟
         public uint WeekFinishCnt;        // 鏈懆宸插畬鎴愭鏁�
     }
 
diff --git a/System/CrossServerOneVsOne/CrossServerWin.cs b/System/CrossServerOneVsOne/CrossServerWin.cs
index 350eb01..de3297a 100644
--- a/System/CrossServerOneVsOne/CrossServerWin.cs
+++ b/System/CrossServerOneVsOne/CrossServerWin.cs
@@ -13,6 +13,7 @@
         [SerializeField] Button closeBtn;
         [SerializeField] FunctionButton arenaFunc;
         [SerializeField] FunctionButton bossFunc;
+        [SerializeField] FunctionButton m_HazyRegion;
         [SerializeField] FunctionButtonGroup funcGroup;
         #region Built-in
         protected override void BindController()
@@ -26,6 +27,7 @@
             rightBtn.AddListener(ClickRight);
             arenaFunc.AddListener(ClickArenaFunc);
             bossFunc.AddListener(ClickBossFunc);
+            m_HazyRegion.AddListener(OpenHazyRegion);
         }
 
         protected override void OnPreOpen()
@@ -69,6 +71,12 @@
             WindowCenter.Instance.Open<CrossServerOneVsOneWin>();
         }
 
+        private void OpenHazyRegion()
+        {
+            CloseSubWindows();
+            WindowCenter.Instance.Open<HazyRegionWin>();
+        }
+
         private void ClickRight()
         {
             funcGroup.TriggerNext();
diff --git a/System/DailyQuest/DailyQuestData.cs b/System/DailyQuest/DailyQuestData.cs
index fd70a40..dc95f65 100644
--- a/System/DailyQuest/DailyQuestData.cs
+++ b/System/DailyQuest/DailyQuestData.cs
@@ -49,6 +49,13 @@
     }
 }
 
+public struct DailyQuestTimes
+{
+    public int completeTimes;
+    public int dayBuyTimes;
+    public int dayUseItemTimes;
+}
+
 public class DailyQuestOpenTime
 {
     public int id;
diff --git a/System/DailyQuest/DailyQuestModel.cs b/System/DailyQuest/DailyQuestModel.cs
index 1a31c1f..8db98b9 100644
--- a/System/DailyQuest/DailyQuestModel.cs
+++ b/System/DailyQuest/DailyQuestModel.cs
@@ -65,7 +65,7 @@
         Dictionary<int, int> dungeonToDailyQuestTable = new Dictionary<int, int>();
         Dictionary<int, int> dailyActionToDailyQuestTable = new Dictionary<int, int>();
         List<DailyQuestActiveValueReward> dailyQuestActiveValueRewards = new List<DailyQuestActiveValueReward>();
-        Dictionary<int, int> dailyQuestCompletedTimes = new Dictionary<int, int>();//闄や簡鍓湰鐨勫叾浠栦换鍔℃斁鍦ㄨ繖閲�
+        Dictionary<int, DailyQuestTimes> dailyQuestTimes = new Dictionary<int, DailyQuestTimes>();//闄や簡鍓湰鐨勫叾浠栦换鍔℃斁鍦ㄨ繖閲�
         Dictionary<int, DailyQuestOpenTime> dailyQuestOpenTimes = new Dictionary<int, DailyQuestOpenTime>();
         Dictionary<int, Dictionary<int, List<int>>> questCalendar = new Dictionary<int, Dictionary<int, List<int>>>();
 
@@ -251,6 +251,16 @@
                         {
                             case 11:
                                 return Math.Max(dailyQuestOpenTime.DayTimes, GetDailyQuestCompletedTimes(_dailyQuestId));
+                            case 25:
+                                if (dailyQuestTimes.ContainsKey(config.RelatedID))
+                                {
+                                    return dailyQuestOpenTime.DayTimes + dailyQuestTimes[config.RelatedID].dayBuyTimes
+                                        + dailyQuestTimes[config.RelatedID].dayUseItemTimes;
+                                }
+                                else
+                                {
+                                    return dailyQuestOpenTime.DayTimes;
+                                }
                             default:
                                 return dailyQuestOpenTime.DayReKind > 0 ? dailyQuestOpenTime.DayTimes : dailyQuestOpenTime.WeekTimes;
                         }
@@ -272,9 +282,9 @@
             switch (config.RelatedType)
             {
                 case 1:
-                    if (dailyQuestCompletedTimes.ContainsKey(config.RelatedID))
+                    if (dailyQuestTimes.ContainsKey(config.RelatedID))
                     {
-                        return dailyQuestCompletedTimes[config.RelatedID];
+                        return dailyQuestTimes[config.RelatedID].completeTimes;
                     }
                     else
                     {
@@ -297,9 +307,9 @@
 
         public int GetDailyQuestCompletedNums(int relatedID)
         {
-            if (dailyQuestCompletedTimes.ContainsKey(relatedID))
+            if (dailyQuestTimes.ContainsKey(relatedID))
             {
-                return dailyQuestCompletedTimes[relatedID];
+                return dailyQuestTimes[relatedID].completeTimes;
             }
             else
             {
@@ -339,11 +349,19 @@
                 var dailyAction = _serverInfo.ActionInfo[i];
                 if (dailyAction.DayFinishCnt > 0)
                 {
-                    dailyQuestCompletedTimes[(int)dailyAction.ActionID] = dailyAction.DayFinishCnt;
+                    dailyQuestTimes[(int)dailyAction.ActionID] = new DailyQuestTimes()
+                    {
+                        completeTimes = dailyAction.DayFinishCnt,
+                        dayBuyTimes = dailyAction.DayBuyTimes,
+                        dayUseItemTimes = dailyAction.DayItemTimes,
+                    };
                 }
                 else
                 {
-                    dailyQuestCompletedTimes[(int)dailyAction.ActionID] = (int)dailyAction.WeekFinishCnt;
+                    dailyQuestTimes[(int)dailyAction.ActionID] = new DailyQuestTimes()
+                    {
+                        completeTimes = (int)dailyAction.WeekFinishCnt,
+                    };
                 }
 
                 if (dailyActionToDailyQuestTable.ContainsKey((int)dailyAction.ActionID))
diff --git a/System/HazyRegion/HazyRegionCyclicScroll.cs b/System/HazyRegion/HazyRegionCyclicScroll.cs
index 8987186..7cbe426 100644
--- a/System/HazyRegion/HazyRegionCyclicScroll.cs
+++ b/System/HazyRegion/HazyRegionCyclicScroll.cs
@@ -36,7 +36,7 @@
         {
             for (int i = 0; i < infiniteItems.Count; i++)
             {
-                var behaviour = infiniteItems[i] as HazyRegionEventBehaviour;
+                var behaviour = infiniteItems[i] as HazyRegionIncidentBehaviour;
                 behaviour.alphaTween.SetStartState();
             }
 
@@ -46,7 +46,7 @@
 
             for (int i = 0; i < infiniteItems.Count; i++)
             {
-                var behaviour = infiniteItems[i] as HazyRegionEventBehaviour;
+                var behaviour = infiniteItems[i] as HazyRegionIncidentBehaviour;
                 behaviour.linerMove.duration = behaviour.alphaTween.duration;
                 var fromX = content.anchoredPosition.x + width / 2 + cellSize.x;
                 behaviour.linerMove.from = content.anchoredPosition.SetX(fromX);
diff --git a/System/HazyRegion/HazyRegionEntranceBehaviour.cs b/System/HazyRegion/HazyRegionEntranceBehaviour.cs
deleted file mode 100644
index ff66ccf..0000000
--- a/System/HazyRegion/HazyRegionEntranceBehaviour.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-锘縰sing System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-using UnityEngine.UI;
-
-namespace Snxxz.UI
-{
-    public class HazyRegionEntranceBehaviour : MonoBehaviour
-    {
-        [SerializeField] Text m_OpenTime;
-        [SerializeField] Text m_Times;
-        [SerializeField] Button m_BuyTimes;
-        [SerializeField] Button m_Goto;
-    }
-}
-
diff --git a/System/HazyRegion/HazyRegionEntrancePanel.cs b/System/HazyRegion/HazyRegionEntrancePanel.cs
new file mode 100644
index 0000000..3fb0e82
--- /dev/null
+++ b/System/HazyRegion/HazyRegionEntrancePanel.cs
@@ -0,0 +1,114 @@
+锘縰sing System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace Snxxz.UI
+{
+    public class HazyRegionEntrancePanel : MonoBehaviour
+    {
+        [SerializeField] Text m_OpenTime;
+        [SerializeField] Text m_Times;
+        [SerializeField] Button m_BuyTimes;
+        [SerializeField] Button m_Goto;
+
+        HazyRegionModel model { get { return ModelCenter.Instance.GetModel<HazyRegionModel>(); } }
+        DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
+
+        private void Awake()
+        {
+            m_BuyTimes.AddListener(BuyTimes);
+            m_Goto.AddListener(Goto);
+        }
+
+        public void Display()
+        {
+            DisplayOpenTime();
+            DisplayTimes();
+        }
+
+        void DisplayTimes()
+        {
+            var totalTimes = dailyQuestModel.GetDailyQuestTotalTimes((int)DailyQuestType.HazyRegion);
+            var completedTimes = dailyQuestModel.GetDailyQuestCompletedTimes((int)DailyQuestType.HazyRegion);
+            var times = Mathf.Clamp(totalTimes - completedTimes, 0, totalTimes);
+            m_Times.text = StringUtility.Contact(times, "/", totalTimes);
+        }
+
+        void DisplayOpenTime()
+        {
+            DailyQuestOpenTime dailyQuestOpenTime;
+            if (dailyQuestModel.TryGetOpenTime((int)DailyQuestType.HazyRegion, out dailyQuestOpenTime))
+            {
+                HourMinute hourMinute;
+                if (dailyQuestOpenTime.TryGetNextOpenTime(out hourMinute))
+                {
+                    m_OpenTime.text = Language.Get("HazyRegionOpenTime", hourMinute.hourBegin.ToString("D2"),
+                        hourMinute.minuteBegin.ToString("D2"), hourMinute.hourEnd.ToString("D2"),
+                        hourMinute.minuteEnd.ToString("D2"));
+                }
+            }
+        }
+
+        private void Goto()
+        {
+            var error = 0;
+            if (TryOpenHazyReion(out error))
+            {
+                model.SendOpenHazyRegion();
+            }
+            else
+            {
+                HandleErrorMessage(error);
+            }
+        }
+
+        private void BuyTimes()
+        {
+
+        }
+
+        bool TryOpenHazyReion(out int error)
+        {
+            error = 0;
+            var questState = dailyQuestModel.GetQuestState((int)DailyQuestType.HazyRegion);
+            if (questState != DailyQuestModel.DailyQuestState.Normal)
+            {
+                switch (questState)
+                {
+                    case DailyQuestModel.DailyQuestState.OutTime:
+                        error = 1;
+                        break;
+                    case DailyQuestModel.DailyQuestState.CanBuyTimes:
+                        error = 2;
+                        break;
+                    case DailyQuestModel.DailyQuestState.Completed:
+                        error = 3;
+                        break;
+                }
+                return false;
+            }
+            return true;
+        }
+
+        void HandleErrorMessage(int error)
+        {
+            switch (error)
+            {
+                case 1:
+                    break;
+                case 2:
+                    break;
+                case 3:
+                    break;
+            }
+        }
+
+        public void Dispose()
+        {
+
+        }
+    }
+}
+
diff --git a/System/HazyRegion/HazyRegionEntranceBehaviour.cs.meta b/System/HazyRegion/HazyRegionEntrancePanel.cs.meta
similarity index 100%
rename from System/HazyRegion/HazyRegionEntranceBehaviour.cs.meta
rename to System/HazyRegion/HazyRegionEntrancePanel.cs.meta
diff --git a/System/HazyRegion/HazyRegionEventBehaviour.cs b/System/HazyRegion/HazyRegionEventBehaviour.cs
deleted file mode 100644
index a845e1f..0000000
--- a/System/HazyRegion/HazyRegionEventBehaviour.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-锘縰sing System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-namespace Snxxz.UI
-{
-    public class HazyRegionEventBehaviour : ScrollItem
-    {
-        [SerializeField] UIAlphaTween m_AlphaTween;
-        [SerializeField] UILinerMove m_LinerMove;
-
-        public UIAlphaTween alphaTween { get { return m_AlphaTween; } }
-        public UILinerMove linerMove { get { return m_LinerMove; } }
-
-        public override void Display(object _data)
-        {
-            base.Display(_data);
-        }
-    }
-}
-
diff --git a/System/HazyRegion/HazyRegionIncidentBehaviour.cs b/System/HazyRegion/HazyRegionIncidentBehaviour.cs
index 5357beb..b556a46 100644
--- a/System/HazyRegion/HazyRegionIncidentBehaviour.cs
+++ b/System/HazyRegion/HazyRegionIncidentBehaviour.cs
@@ -1,11 +1,40 @@
 锘縰sing System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
+using UnityEngine.UI;
+
 namespace Snxxz.UI
 {
-    public class HazyRegionIncidentBehaviour : MonoBehaviour
+    public class HazyRegionIncidentBehaviour : ScrollItem
     {
-        [SerializeField] HazyRegionCyclicScroll m_CyclicScroll;
+        [SerializeField] UIAlphaTween m_AlphaTween;
+        [SerializeField] UILinerMove m_LinerMove;
+        [SerializeField] Image m_IncidentTitle;
+        [SerializeField] Text m_DepletionPoint;
+        [SerializeField] Image m_Bottom;
+        [SerializeField] Image m_Icon;
+
+        [SerializeField] Transform m_ContainerBoss;
+        [SerializeField] Image m_BossName;
+        [SerializeField] Text m_PlayerCount;
+
+        [SerializeField] Transform m_ContainerCrossServer;
+
+        [SerializeField] Transform m_ContainerItem;
+        [SerializeField] ItemCell[] m_Items;
+
+        [SerializeField] Transform m_ContainerPlaying;
+        [SerializeField] Transform m_ContainerCompleted;
+
+        [SerializeField] Transform m_ContainerSelect;
+
+        public UIAlphaTween alphaTween { get { return m_AlphaTween; } }
+        public UILinerMove linerMove { get { return m_LinerMove; } }
+
+        public override void Display(object _data)
+        {
+            base.Display(_data);
+        }
     }
 }
 
diff --git a/System/HazyRegion/HazyRegionIncidentBehaviour.cs.meta b/System/HazyRegion/HazyRegionIncidentBehaviour.cs.meta
index 4d0c5be..b05ba16 100644
--- a/System/HazyRegion/HazyRegionIncidentBehaviour.cs.meta
+++ b/System/HazyRegion/HazyRegionIncidentBehaviour.cs.meta
@@ -1,6 +1,6 @@
 fileFormatVersion: 2
-guid: cdcd39451a860ce4692d08aab3ae1afb
-timeCreated: 1554371897
+guid: f157de73adafe7e40943853257e03a6d
+timeCreated: 1554360030
 licenseType: Pro
 MonoImporter:
   serializedVersion: 2
diff --git a/System/HazyRegion/HazyRegionIncidentPanel.cs b/System/HazyRegion/HazyRegionIncidentPanel.cs
new file mode 100644
index 0000000..16a627e
--- /dev/null
+++ b/System/HazyRegion/HazyRegionIncidentPanel.cs
@@ -0,0 +1,87 @@
+锘縰sing System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace Snxxz.UI
+{
+    public class HazyRegionIncidentPanel : MonoBehaviour
+    {
+        [SerializeField] HazyRegionCyclicScroll m_CyclicScroll;
+        [SerializeField] Slider m_Slider;
+        [SerializeField] Text m_Point;
+        [SerializeField] Button m_Back;
+        [SerializeField] Button m_Goto;
+
+        List<int> incidents = new List<int>();
+
+        HazyRegionModel model { get { return ModelCenter.Instance.GetModel<HazyRegionModel>(); } }
+
+        private void Awake()
+        {
+            m_Back.AddListener(OnBack);
+            m_Goto.AddListener(Goto);
+        }
+
+        public void Display()
+        {
+            DisplayPoint();
+            DisplayIncidents();
+        }
+
+        void DisplayIncidents()
+        {
+            incidents.Clear();
+            incidents.AddRange(model.GetAllIncidents());
+            incidents.Sort(Compare);
+
+            m_CyclicScroll.Init(incidents);
+            m_CyclicScroll.DisplayAnimation();
+        }
+
+        void DisplayPoint()
+        {
+            var point = Mathf.Min(model.point, model.limitPoint);
+            m_Point.text = StringUtility.Contact(point, "/", model.limitPoint);
+            m_Slider.value = Mathf.Clamp01((float)point / model.limitPoint);
+        }
+
+        int Compare(int lhs, int rhs)
+        {
+            HazyRegionModel.Incident lhs_incident;
+            HazyRegionModel.Incident rhs_incident;
+            if (model.TryGetIncident(lhs, out lhs_incident)
+                && model.TryGetIncident(rhs, out rhs_incident))
+            {
+                if (lhs_incident.type != rhs_incident.type)
+                {
+                    return lhs_incident.type.CompareTo(rhs_incident.type);
+                }
+                var type = lhs_incident.type;
+                switch (type)
+                {
+                    case HazyRegionModel.IncidentType.Boss:
+                        break;
+                    case HazyRegionModel.IncidentType.GrassLand:
+                        break;
+                }
+            }
+            return 0;
+        }
+
+        private void OnBack()
+        {
+        }
+
+        private void Goto()
+        {
+        }
+
+        public void Dispose()
+        {
+            m_CyclicScroll.Dispose();
+        }
+    }
+}
+
diff --git a/System/HazyRegion/HazyRegionEventBehaviour.cs.meta b/System/HazyRegion/HazyRegionIncidentPanel.cs.meta
similarity index 75%
rename from System/HazyRegion/HazyRegionEventBehaviour.cs.meta
rename to System/HazyRegion/HazyRegionIncidentPanel.cs.meta
index b05ba16..4d0c5be 100644
--- a/System/HazyRegion/HazyRegionEventBehaviour.cs.meta
+++ b/System/HazyRegion/HazyRegionIncidentPanel.cs.meta
@@ -1,6 +1,6 @@
 fileFormatVersion: 2
-guid: f157de73adafe7e40943853257e03a6d
-timeCreated: 1554360030
+guid: cdcd39451a860ce4692d08aab3ae1afb
+timeCreated: 1554371897
 licenseType: Pro
 MonoImporter:
   serializedVersion: 2
diff --git a/System/HazyRegion/HazyRegionModel.cs b/System/HazyRegion/HazyRegionModel.cs
index 51be506..a57abb2 100644
--- a/System/HazyRegion/HazyRegionModel.cs
+++ b/System/HazyRegion/HazyRegionModel.cs
@@ -1,17 +1,40 @@
-锘縰sing System.Collections;
+锘縰sing System;
+using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 namespace Snxxz.UI
 {
     public class HazyRegionModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
     {
-        List<Incident> m_Incidents = new List<Incident>();
+        Dictionary<int, Incident> m_Incidents = new Dictionary<int, Incident>();
 
-
+        public int limitPoint { get; private set; }
+        public int point { get; private set; }
+        public bool playing { get; private set; }
         public bool isServerPrepare { get; private set; }
+
+        int m_SelectIncident;
+        public int selectIncident
+        {
+            get { return m_SelectIncident; }
+            set
+            {
+                if (m_SelectIncident != value)
+                {
+                    m_SelectIncident = value;
+                    if (selectIncidentRefresh != null)
+                    {
+                        selectIncidentRefresh();
+                    }
+                }
+            }
+        }
+
+        public event Action selectIncidentRefresh;
 
         public override void Init()
         {
+            ParseConfig();
         }
 
         public void OnBeforePlayerDataInitialize()
@@ -30,15 +53,33 @@
 
         }
 
-        public void ReceivePackage()
+        void ParseConfig()
+        {
+        }
+
+        public bool TryGetIncident(int id, out Incident incident)
+        {
+            return m_Incidents.TryGetValue(id, out incident);
+        }
+
+        public ICollection<int> GetAllIncidents()
+        {
+            return m_Incidents.Keys;
+        }
+
+        public void SendBackHazyRegion()
         {
 
         }
 
-        public class Incident
+        public void SendOpenHazyRegion()
         {
-            public int type;
-            public IncidentState state;
+
+        }
+
+        public void ReceivePackage()
+        {
+
         }
 
         public enum IncidentState
@@ -47,6 +88,21 @@
             Processing,
             Complete,
         }
+
+        public enum IncidentType
+        {
+            Precious,
+            Adventure,
+            Boss,
+            GrassLand,
+        }
+
+        public class Incident
+        {
+            public int id;
+            public IncidentType type;
+            public IncidentState state;
+        }
     }
 }
 
diff --git a/System/HazyRegion/HazyRegionWin.cs b/System/HazyRegion/HazyRegionWin.cs
index 2d92b78..88ba93b 100644
--- a/System/HazyRegion/HazyRegionWin.cs
+++ b/System/HazyRegion/HazyRegionWin.cs
@@ -14,8 +14,8 @@
 
     public class HazyRegionWin : Window
     {
-        [SerializeField] HazyRegionEntranceBehaviour m_EntranceBehaviour;
-        [SerializeField] HazyRegionIncidentBehaviour m_IncidentBehaviour;
+        [SerializeField] HazyRegionEntrancePanel m_EntrancePanel;
+        [SerializeField] HazyRegionIncidentPanel m_IncidentPanel;
 
         HazyRegionStage m_Stage = HazyRegionStage.Entrance;
         HazyRegionStage stage
@@ -28,8 +28,10 @@
                     switch (m_Stage)
                     {
                         case HazyRegionStage.Entrance:
+                            CloseHazyRegionEntrance();
                             break;
                         case HazyRegionStage.Playing:
+                            CloseHazyRegionIncident();
                             break;
                     }
 
@@ -38,13 +40,17 @@
                     switch (m_Stage)
                     {
                         case HazyRegionStage.Entrance:
+                            OpenHazyRegionEntrance();
                             break;
                         case HazyRegionStage.Playing:
+                            OpenHazyRegionIncident();
                             break;
                     }
                 }
             }
         }
+
+        HazyRegionModel model { get { return ModelCenter.Instance.GetModel<HazyRegionModel>(); } }
 
         #region Built-in
         protected override void BindController()
@@ -57,12 +63,25 @@
 
         protected override void OnPreOpen()
         {
-            m_Stage = HazyRegionStage.Entrance;
+            m_EntrancePanel.gameObject.SetActive(false);
+            m_IncidentPanel.gameObject.SetActive(false);
         }
 
         protected override void OnActived()
         {
             base.OnActived();
+
+            m_Stage = model.playing ? HazyRegionStage.Playing : HazyRegionStage.Entrance;
+
+            switch (stage)
+            {
+                case HazyRegionStage.Entrance:
+                    OpenHazyRegionEntrance();
+                    break;
+                case HazyRegionStage.Playing:
+                    OpenHazyRegionIncident();
+                    break;
+            }
         }
 
         protected override void OnAfterOpen()
@@ -71,6 +90,8 @@
 
         protected override void OnPreClose()
         {
+            m_EntrancePanel.Dispose();
+            m_IncidentPanel.Dispose();
         }
 
         protected override void OnAfterClose()
@@ -78,8 +99,24 @@
         }
         #endregion
 
-        void Display()
+        void OpenHazyRegionEntrance()
         {
+            m_EntrancePanel.Display();
+        }
+
+        void OpenHazyRegionIncident()
+        {
+            m_IncidentPanel.Display();
+        }
+
+        void CloseHazyRegionIncident()
+        {
+            m_IncidentPanel.Dispose();
+        }
+
+        void CloseHazyRegionEntrance()
+        {
+            m_EntrancePanel.Dispose();
         }
 
         enum HazyRegionStage
diff --git a/Utility/EnumHelper.cs b/Utility/EnumHelper.cs
index ab8addf..56732a7 100644
--- a/Utility/EnumHelper.cs
+++ b/Utility/EnumHelper.cs
@@ -291,6 +291,7 @@
     CrossServerPk = 31,
     AllianceBoss1 = 32,
     AllianceBoss2 = 33,
+    HazyRegion = 35,
     //JadeDynastyBoss = 32,--璇涗粰鍔熻兘鏆傛椂鍏抽棴
     //JadeDynastyTower = 33,
 }

--
Gitblit v1.8.0