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