Core/GameEngine/DataToCtl/PackageRegedit.cs
@@ -25,6 +25,7 @@ public static void Init() { // 登记相应的数据体及对应的数据转逻辑类 Register(typeof(HA306_tagMCFairyDomainInfo), typeof(DTCA306_tagMCFairyDomainInfo)); Register(typeof(HB107_tagMCRolePointInfo), typeof(DTCB107_tagMCRolePointInfo)); Register(typeof(HA327_tagMCRealmExpInfo), typeof(DTCA327_tagMCRealmExpInfo)); Register(typeof(HA40C_tagGCAllFamilyBossInfo), typeof(DTCA40C_tagGCAllFamilyBossInfo)); Core/GameEngine/Model/Config/DailyQuestOpenTimeConfig.cs
@@ -1,6 +1,6 @@ //-------------------------------------------------------- // [Author]: Fish // [ Date ]: Thursday, February 14, 2019 // [ Date ]: Monday, April 08, 2019 //-------------------------------------------------------- using System.Collections.Generic; @@ -19,6 +19,10 @@ public readonly string OpenTime; public readonly int Duration; public readonly int DayTimes; public readonly int DayBuyTimes; public readonly int BuyNeedMoney; public readonly int DayItemAddTimes; public readonly int DayItemID; public readonly int DayReKind; public readonly int WeekTimes; public readonly int WeekReKind; @@ -46,13 +50,21 @@ int.TryParse(tables[5],out DayTimes); int.TryParse(tables[6],out DayReKind); int.TryParse(tables[6],out DayBuyTimes); int.TryParse(tables[7],out WeekTimes); int.TryParse(tables[7],out BuyNeedMoney); int.TryParse(tables[8],out WeekReKind); int.TryParse(tables[8],out DayItemAddTimes); int.TryParse(tables[9],out OpenUI); int.TryParse(tables[9],out DayItemID); int.TryParse(tables[10],out DayReKind); int.TryParse(tables[11],out WeekTimes); int.TryParse(tables[12],out WeekReKind); int.TryParse(tables[13],out OpenUI); } catch (Exception ex) { Core/GameEngine/Model/Config/DailyQuestOpenTimeConfig.cs.meta
@@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: c6f0b6d546225e442839089494e039bc timeCreated: 1550121862 timeCreated: 1554704148 licenseType: Pro MonoImporter: serializedVersion: 2 Core/GameEngine/Model/Config/HazyRegionConfig.cs
@@ -18,9 +18,12 @@ public readonly string name; public readonly int dungeonId; public readonly int lineId; public readonly int npcId; public readonly int crossServer; public readonly int point; public readonly int alchemyLevel; public readonly int[] reward; public readonly int[] rewardState; public readonly string PortraitID; public HazyRegionConfig() @@ -43,18 +46,29 @@ int.TryParse(tables[4],out lineId); int.TryParse(tables[5],out point); int.TryParse(tables[5],out npcId); int.TryParse(tables[6],out alchemyLevel); int.TryParse(tables[6],out crossServer); string[] rewardStringArray = tables[7].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); int.TryParse(tables[7],out point); int.TryParse(tables[8],out alchemyLevel); string[] rewardStringArray = tables[9].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]; string[] rewardStateStringArray = tables[10].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); rewardState = new int[rewardStateStringArray.Length]; for (int i=0;i<rewardStateStringArray.Length;i++) { int.TryParse(rewardStateStringArray[i],out rewardState[i]); } PortraitID = tables[11]; } catch (Exception ex) { Core/GameEngine/Model/Config/HazyRegionConfig.cs.meta
@@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: 3404c0f308cb2174bb7b93e12c3110bd timeCreated: 1554693663 timeCreated: 1554713166 licenseType: Pro MonoImporter: serializedVersion: 2 Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA525_tagCMBuyDailyActionCnt.cs
New file @@ -0,0 +1,20 @@ using UnityEngine; using System.Collections; // A5 25 购买日常活动次数 #tagCMBuyDailyActionCnt public class CA525_tagCMBuyDailyActionCnt : GameNetPackBasic { public uint ActionID; // ID public byte AddType; // 0-花仙玉 1-用物品 public CA525_tagCMBuyDailyActionCnt () { combineCmd = (ushort)0x03FE; _cmd = (ushort)0xA525; } public override void WriteToBytes () { WriteBytes (ActionID, NetDataType.DWORD); WriteBytes (AddType, NetDataType.BYTE); } } Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA525_tagCMBuyDailyActionCnt.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 5abd0a346af49774db312d49c39a4004 timeCreated: 1554708856 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA526_tagCMVisitFairyDomain.cs
New file @@ -0,0 +1,18 @@ using UnityEngine; using System.Collections; // A5 26 寻访仙域 #tagCMVisitFairyDomain public class CA526_tagCMVisitFairyDomain : GameNetPackBasic { public byte Type; //0-开始寻访 1-结束寻访 public CA526_tagCMVisitFairyDomain () { combineCmd = (ushort)0x03FE; _cmd = (ushort)0xA526; } public override void WriteToBytes () { WriteBytes (Type, NetDataType.BYTE); } } Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA526_tagCMVisitFairyDomain.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: f13a5e03498d69c448f40987085005ef timeCreated: 1554708856 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA306_tagMCFairyDomainInfo.cs
New file @@ -0,0 +1,26 @@ //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, April 08, 2019 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using Snxxz.UI; public class DTCA306_tagMCFairyDomainInfo : DtcBasic { public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); var package = vNetPack as HA306_tagMCFairyDomainInfo; ModelCenter.Instance.GetModel<HazyRegionModel>().ReceivePackage(package); } } Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA306_tagMCFairyDomainInfo.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: f2900c8af146e174eb09138dbb65c67d timeCreated: 1554708793 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/ServerPack/HA3_Function/HA306_tagMCFairyDomainInfo.cs
New file @@ -0,0 +1,33 @@ using UnityEngine; using System.Collections; // A3 06 缥缈仙域信息 #tagMCFairyDomainInfo public class HA306_tagMCFairyDomainInfo : GameNetPackBasic { public byte State; //是否寻访中 public ushort Energy; //体力 public byte Count; // 信息个数 public tagMCFairyDomainEvent[] InfoList; // 信息列表 public HA306_tagMCFairyDomainInfo () { _cmd = (ushort)0xA306; } public override void ReadFromBytes (byte[] vBytes) { TransBytes (out State, vBytes, NetDataType.BYTE); TransBytes (out Energy, vBytes, NetDataType.WORD); TransBytes (out Count, vBytes, NetDataType.BYTE); InfoList = new tagMCFairyDomainEvent[Count]; for (int i = 0; i < Count; i ++) { InfoList[i] = new tagMCFairyDomainEvent(); TransBytes (out InfoList[i].EventID, vBytes, NetDataType.WORD); TransBytes (out InfoList[i].EventState, vBytes, NetDataType.BYTE); } } public struct tagMCFairyDomainEvent { public ushort EventID; //事件ID public byte EventState; //事件状态 1-未拜访 2-拜访中 3-已拜访 } } Core/NetworkPackage/ServerPack/HA3_Function/HA306_tagMCFairyDomainInfo.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: a1dec766a8bd13348b98571a82ce0ea2 timeCreated: 1554708767 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/CrossServerOneVsOne/CrossServerWin.cs
@@ -63,18 +63,21 @@ { CloseSubWindows(); WindowCenter.Instance.Open<CrossServerBossWin>(); functionOrder = bossFunc.order; } private void ClickArenaFunc() { CloseSubWindows(); WindowCenter.Instance.Open<CrossServerOneVsOneWin>(); functionOrder = arenaFunc.order; } private void OpenHazyRegion() { CloseSubWindows(); WindowCenter.Instance.Open<HazyRegionWin>(); functionOrder = m_HazyRegion.order; } private void ClickRight() System/DailyQuest/DailyQuestModel.cs
@@ -198,6 +198,20 @@ return false; } public bool TryGetDailyQuestTimes(int _id, out DailyQuestTimes _dailyQuestTime) { _dailyQuestTime = default(DailyQuestTimes); var config = DailyQuestConfig.Get(_id); if (config != null && config.RelatedType == 1) { return dailyQuestTimes.TryGetValue(config.RelatedID, out _dailyQuestTime); } else { return false; } } public bool IsDailyQuestUnLock(int _dailyQuestId) { var config = DailyQuestConfig.Get(_dailyQuestId); @@ -858,6 +872,7 @@ switch (config.RelatedID) { case 11: { var dailyQuestOpenTime = DailyQuestOpenTimeConfig.Get(config.RelatedID); if (completedTimes >= dailyQuestOpenTime.DayTimes + GeneralDefine.runeTowerSweepBuyTimes) { @@ -867,8 +882,22 @@ { return DailyQuestState.CanBuyTimes; } } case 19: return DailyQuestState.Normal; case 25: { var dailyQuestOpenTime = DailyQuestOpenTimeConfig.Get(config.RelatedID); if (completedTimes >= dailyQuestOpenTime.DayTimes + dailyQuestOpenTime.DayBuyTimes + dailyQuestOpenTime.DayItemAddTimes) { return DailyQuestState.Completed; } else { return DailyQuestState.CanBuyTimes; } } default: return DailyQuestState.Completed; } System/HazyRegion/HazyRegionBuyTimesWin.cs
New file @@ -0,0 +1,201 @@ //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, April 08, 2019 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class HazyRegionBuyTimesWin : Window { [SerializeField] Text m_BuyTimes; [SerializeField] Text m_Money; [SerializeField] Button m_Buy; [SerializeField] Text m_UseItemTimes; [SerializeField] ItemBehaviour m_Item; [SerializeField] Button m_Use; [SerializeField] Button m_Close; PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } } DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { m_Close.AddListener(CloseClick); m_Buy.AddListener(OnBuyTimes); m_Use.AddListener(OnUseItem); } protected override void OnPreOpen() { dailyQuestModel.dailyQuestProgressUpdateEvent += DailyQuestProgressUpdateEvent; packModel.refreshItemCountEvent += RefreshItemCountEvent; Display(); } protected override void OnAfterOpen() { } protected override void OnPreClose() { dailyQuestModel.dailyQuestProgressUpdateEvent -= DailyQuestProgressUpdateEvent; packModel.refreshItemCountEvent -= RefreshItemCountEvent; } protected override void OnAfterClose() { } #endregion void Display() { DisplayMoney(); DisplayTimes(); DisplayItem(); } void DisplayMoney() { var config = DailyQuestConfig.Get((int)DailyQuestType.HazyRegion); var dailyQuestOpenTime = DailyQuestOpenTimeConfig.Get(config.RelatedID); m_Money.text = Language.Get("HazyRegionBuyTimesCost", dailyQuestOpenTime.BuyNeedMoney); } void DisplayTimes() { DailyQuestTimes dailyQuestTimes; var dayUseItemTimes = 0; var dayBuyTimes = 0; if (dailyQuestModel.TryGetDailyQuestTimes((int)DailyQuestType.HazyRegion, out dailyQuestTimes)) { dayUseItemTimes = dailyQuestTimes.dayUseItemTimes; dayBuyTimes = dailyQuestTimes.dayBuyTimes; } var config = DailyQuestConfig.Get((int)DailyQuestType.HazyRegion); var dailyQuestOpenTime = DailyQuestOpenTimeConfig.Get(config.RelatedID); var times = Mathf.Clamp(dailyQuestOpenTime.DayBuyTimes - dayBuyTimes, 0, dailyQuestOpenTime.DayBuyTimes); var label = UIHelper.AppendColor(times == 0 ? TextColType.Red : TextColType.Green, times.ToString(), true); m_BuyTimes.text = StringUtility.Contact(label, "/", dailyQuestOpenTime.DayBuyTimes); times = Mathf.Clamp(dailyQuestOpenTime.DayItemAddTimes - dayUseItemTimes, 0, dailyQuestOpenTime.DayItemAddTimes); label = UIHelper.AppendColor(times == 0 ? TextColType.Red : TextColType.Green, times.ToString(), true); m_UseItemTimes.text = StringUtility.Contact(label, "/", dailyQuestOpenTime.DayItemAddTimes); } void DisplayItem() { var config = DailyQuestConfig.Get((int)DailyQuestType.HazyRegion); var dailyQuestOpenTime = DailyQuestOpenTimeConfig.Get(config.RelatedID); m_Item.SetItem(dailyQuestOpenTime.DayItemID, 1); } private void DailyQuestProgressUpdateEvent(int id) { if (id == (int)DailyQuestType.HazyRegion) { DisplayTimes(); } } private void RefreshItemCountEvent(PackType packType, int index, int itemId) { if (packType == PackType.Item) { var config = DailyQuestConfig.Get((int)DailyQuestType.HazyRegion); if (config != null) { var dailyQuestOpenTime = DailyQuestOpenTimeConfig.Get(config.RelatedID); if (dailyQuestOpenTime != null && dailyQuestOpenTime.DayItemID == itemId) { DisplayItem(); } } } } private void OnUseItem() { DailyQuestTimes dailyQuestTimes; var dayUseItemTimes = 0; if (dailyQuestModel.TryGetDailyQuestTimes((int)DailyQuestType.HazyRegion, out dailyQuestTimes)) { dayUseItemTimes = dailyQuestTimes.dayUseItemTimes; } var config = DailyQuestConfig.Get((int)DailyQuestType.HazyRegion); var dailyQuestOpenTime = DailyQuestOpenTimeConfig.Get(config.RelatedID); if (dayUseItemTimes >= dailyQuestOpenTime.DayItemAddTimes) { return; } var itemCount = packModel.GetItemCountByID(PackType.Item, dailyQuestOpenTime.DayItemID); if (itemCount <= 0) { ModelCenter.Instance.GetModel<GetItemPathModel>().SetChinItemModel(dailyQuestOpenTime.DayItemID); return; } var pak = new CA525_tagCMBuyDailyActionCnt(); pak.AddType = 1; pak.ActionID = (uint)config.RelatedID; GameNetSystem.Instance.SendInfo(pak); } private void OnBuyTimes() { DailyQuestTimes dailyQuestTimes; var dayBuyTimes = 0; if (dailyQuestModel.TryGetDailyQuestTimes((int)DailyQuestType.HazyRegion, out dailyQuestTimes)) { dayBuyTimes = dailyQuestTimes.dayBuyTimes; } var config = DailyQuestConfig.Get((int)DailyQuestType.HazyRegion); var dailyQuestOpenTime = DailyQuestOpenTimeConfig.Get(config.RelatedID); if (dayBuyTimes >= dailyQuestOpenTime.DayBuyTimes) { return; } if (PlayerDatas.Instance.baseData.diamond < dailyQuestOpenTime.BuyNeedMoney) { WindowCenter.Instance.Open<RechargeTipWin>(); return; } var pak = new CA525_tagCMBuyDailyActionCnt(); pak.AddType = 0; pak.ActionID = (uint)config.RelatedID; GameNetSystem.Instance.SendInfo(pak); } } } System/HazyRegion/HazyRegionBuyTimesWin.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 363f96dff81ee0342ad58f7d09951215 timeCreated: 1554705839 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/HazyRegion/HazyRegionEntrancePanel.cs
@@ -24,6 +24,8 @@ public void Display() { dailyQuestModel.dailyQuestProgressUpdateEvent += DailyQuestProgressUpdateEvent; DisplayOpenTime(); DisplayTimes(); } @@ -66,7 +68,12 @@ private void BuyTimes() { var questState = dailyQuestModel.GetQuestState((int)DailyQuestType.HazyRegion); if (questState == DailyQuestModel.DailyQuestState.OutTime) { return; } WindowCenter.Instance.Open<HazyRegionBuyTimesWin>(); } bool TryOpenHazyReion(out int error) @@ -107,7 +114,15 @@ public void Dispose() { dailyQuestModel.dailyQuestProgressUpdateEvent -= DailyQuestProgressUpdateEvent; } private void DailyQuestProgressUpdateEvent(int id) { if (id == (int)DailyQuestType.HazyRegion) { DisplayTimes(); } } } } System/HazyRegion/HazyRegionIncidentBehaviour.cs
@@ -1,4 +1,5 @@ using System.Collections; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; @@ -9,31 +10,141 @@ { [SerializeField] UIAlphaTween m_AlphaTween; [SerializeField] UILinerMove m_LinerMove; [SerializeField] Image m_IncidentTitle; [SerializeField] Text 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] ItemBehaviour[] m_Items; [SerializeField] Text[] m_ItemDescriptions; [SerializeField] Transform m_ContainerPlaying; [SerializeField] Transform m_ContainerProcessing; [SerializeField] Transform m_ContainerCompleted; [SerializeField] Transform m_ContainerSelect; [SerializeField] Button m_Select; [Header("Boss")] [SerializeField] Transform m_ContainerBoss; [SerializeField] Text m_BossName; [SerializeField] Text m_PlayerCount; [SerializeField] Transform m_ContainerDead; [SerializeField] Text m_RebornTime; public UIAlphaTween alphaTween { get { return m_AlphaTween; } } public UILinerMove linerMove { get { return m_LinerMove; } } HazyRegionModel model { get { return ModelCenter.Instance.GetModel<HazyRegionModel>(); } } int incidentId = 0; HazyRegionIncidentType incidentType = HazyRegionIncidentType.Adventure; private void Awake() { m_Select.SetListener(OnSelect); } public override void Display(object _data) { base.Display(_data); incidentId = (int)_data; var config = HazyRegionConfig.Get(incidentId); incidentType = (HazyRegionIncidentType)config.incidentType; DisplayBase(); DisplayItems(); DisplayState(); DisplaySelect(); DisplayBoss(); model.selectIncidentRefresh -= SelectIncidentRefresh; model.selectIncidentRefresh += SelectIncidentRefresh; model.onHazyRegionIncidentRefresh -= OnHazyRegionIncidentRefresh; model.onHazyRegionIncidentRefresh += OnHazyRegionIncidentRefresh; } void DisplayBase() { var config = HazyRegionConfig.Get(incidentId); m_DepletionPoint.text = Language.Get("IncidentDepletionPoint", config.point); m_IncidentTitle.text = config.name; m_Icon.SetSprite(config.PortraitID); m_Icon.SetNativeSize(); m_ContainerCrossServer.gameObject.SetActive(config.crossServer == 1); } void DisplayItems() { var config = HazyRegionConfig.Get(incidentId); for (int i = 0; i < m_Items.Length; i++) { if (config.reward != null && i < config.reward.Length) { m_Items[i].gameObject.SetActive(true); m_Items[i].SetItem(config.reward[i], 1); m_ItemDescriptions[i].gameObject.SetActive(true); m_ItemDescriptions[i].text = config.rewardState[i] == 0 ? string.Empty : Language.Get(StringUtility.Contact("HazyRegionItemState_", config.rewardState[i])); } else { m_Items[i].gameObject.SetActive(false); m_ItemDescriptions[i].gameObject.SetActive(false); } } } void DisplayBoss() { m_ContainerBoss.gameObject.SetActive(incidentType == HazyRegionIncidentType.Boss); var config = HazyRegionConfig.Get(incidentId); if (incidentType == HazyRegionIncidentType.Boss) { var npcConfig = NPCConfig.Get(config.npcId); m_BossName.text = npcConfig.charName; } } void DisplayState() { HazyRegionModel.Incident incident; if (model.TryGetIncident(incidentId, out incident)) { m_ContainerCompleted.gameObject.SetActive(incident.state == HazyRegionModel.IncidentState.Complete); m_ContainerProcessing.gameObject.SetActive(incident.state == HazyRegionModel.IncidentState.Processing); } } void DisplaySelect() { m_ContainerSelect.gameObject.SetActive(incidentId == model.selectIncident); } private void SelectIncidentRefresh() { DisplaySelect(); } private void OnHazyRegionIncidentRefresh() { DisplayState(); } private void OnSelect() { model.selectIncident = incidentId; } public override void Dispose() { base.Dispose(); model.selectIncidentRefresh -= SelectIncidentRefresh; model.onHazyRegionIncidentRefresh -= OnHazyRegionIncidentRefresh; } } } System/HazyRegion/HazyRegionIncidentPanel.cs
@@ -49,33 +49,37 @@ 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)) var lhs_config = HazyRegionConfig.Get(lhs); var rhs_config = HazyRegionConfig.Get(rhs); if (lhs_config.incidentType != rhs_config.incidentType) { 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 lhs_config.incidentType.CompareTo(rhs_config.incidentType); } return 0; } private void OnBack() { ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get(""), (bool isOk) => { if (isOk) { model.SendBackHazyRegion(); } }); } private void Goto() { var error = 0; if (!model.TryGotoIncident(model.selectIncident, out error)) { model.DisplayErrorRemind(error); } else { model.SendGotoIncident(model.selectIncident); } } public void Dispose() System/HazyRegion/HazyRegionModel.cs
@@ -31,6 +31,8 @@ } public event Action selectIncidentRefresh; public event Action<int> onHazyRegionStateRefresh; //0-结束拜访 1-开始拜访 2-强制刷新 public event Action onHazyRegionIncidentRefresh; public override void Init() { @@ -40,6 +42,8 @@ public void OnBeforePlayerDataInitialize() { isServerPrepare = false; point = 0; playing = false; m_Incidents.Clear(); } @@ -62,47 +66,166 @@ return m_Incidents.TryGetValue(id, out incident); } public bool TryGotoIncident(int id, out int error) { error = 0; var config = HazyRegionConfig.Get(id); if (config == null) { return false; } if (!TryGotoDungeon(id, out error)) { return false; } Incident incident; if (TryGetIncident(id, out incident)) { if (incident.state != IncidentState.Processing) { switch (incident.state) { case IncidentState.UnStart: if (point < config.point) { error = 3; return false; } break; case IncidentState.Complete: error = 4; return false; } } } return true; } public bool TryGotoDungeon(int id, out int error) { error = 0; if (CrossServerUtility.IsCrossServer()) { error = 1; return false; } var mapId = PlayerDatas.Instance.baseData.MapID; if (MapUtility.IsDungeon(mapId)) { error = 2; return false; } return true; } public ICollection<int> GetAllIncidents() { return m_Incidents.Keys; } public void DisplayErrorRemind(int error) { switch (error) { default: break; } } public void SendGotoIncident(int id) { var config = HazyRegionConfig.Get(id); switch ((HazyRegionIncidentType)config.incidentType) { case HazyRegionIncidentType.Adventure: break; case HazyRegionIncidentType.Boss: case HazyRegionIncidentType.FairyGrass: case HazyRegionIncidentType.ReikiGrass: case HazyRegionIncidentType.Precious: break; } } public void SendBackHazyRegion() { var pak = new CA526_tagCMVisitFairyDomain(); pak.Type = 1; GameNetSystem.Instance.SendInfo(pak); } public void SendOpenHazyRegion() { var pak = new CA526_tagCMVisitFairyDomain(); pak.Type = 0; GameNetSystem.Instance.SendInfo(pak); } public void ReceivePackage() public void ReceivePackage(HA306_tagMCFairyDomainInfo package) { var preplaying = playing; playing = package.State == 1; point = package.Energy; m_Incidents.Clear(); for (int i = 0; i < package.Count; i++) { var data = package.InfoList[i]; m_Incidents[data.EventID] = new Incident() { id = data.EventID, state = (IncidentState)data.EventState, }; } if (onHazyRegionIncidentRefresh != null) { onHazyRegionIncidentRefresh(); } if (isServerPrepare) { if (preplaying != playing) { if (onHazyRegionStateRefresh != null) { onHazyRegionStateRefresh(playing ? 1 : 0); } } } else { if (onHazyRegionStateRefresh != null) { onHazyRegionStateRefresh(2); } } } public enum IncidentState { None, Processing, Complete, UnStart = 1, Processing = 2, Complete = 3, } public enum IncidentType { Precious, Adventure, Boss, GrassLand, } public class Incident public struct Incident { public int id; public IncidentType type; public IncidentState state; } } public enum HazyRegionIncidentType { Adventure, Precious, FairyGrass, Boss, ReikiGrass, } } System/HazyRegion/HazyRegionWin.cs
@@ -63,13 +63,38 @@ protected override void OnPreOpen() { m_EntrancePanel.gameObject.SetActive(false); m_IncidentPanel.gameObject.SetActive(false); } protected override void OnActived() { base.OnActived(); Display(); model.onHazyRegionStateRefresh += OnHazyRegionStateRefresh; } protected override void OnAfterOpen() { } protected override void OnPreClose() { m_EntrancePanel.Dispose(); m_IncidentPanel.Dispose(); model.onHazyRegionStateRefresh -= OnHazyRegionStateRefresh; } protected override void OnAfterClose() { } #endregion void Display() { m_EntrancePanel.gameObject.SetActive(false); m_IncidentPanel.gameObject.SetActive(false); m_Stage = model.playing ? HazyRegionStage.Playing : HazyRegionStage.Entrance; @@ -84,28 +109,17 @@ } } protected override void OnAfterOpen() { } protected override void OnPreClose() { m_EntrancePanel.Dispose(); m_IncidentPanel.Dispose(); } protected override void OnAfterClose() { } #endregion void OpenHazyRegionEntrance() { m_EntrancePanel.gameObject.SetActive(true); m_EntrancePanel.Dispose(); m_EntrancePanel.Display(); } void OpenHazyRegionIncident() { m_IncidentPanel.gameObject.SetActive(true); m_IncidentPanel.Dispose(); m_IncidentPanel.Display(); } @@ -119,6 +133,22 @@ m_EntrancePanel.Dispose(); } private void OnHazyRegionStateRefresh(int state) { if (state == 2) { if ((model.playing && stage != HazyRegionStage.Playing) || (!model.playing && stage != HazyRegionStage.Entrance)) { Display(); } } else { stage = state == 0 ? HazyRegionStage.Entrance : HazyRegionStage.Playing; } } enum HazyRegionStage { Entrance,