| Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA703_tagMCFBEnterTickList.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/DailyQuest/DailyQuestBehaviour.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Dungeon/DungeonData.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Dungeon/DungeonEnterInfo.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Dungeon/DungeonModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Dungeon/NormalDungeonEntranceWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA703_tagMCFBEnterTickList.cs
@@ -19,7 +19,7 @@ HA703_tagMCFBEnterTickList vNetData = vNetPack as HA703_tagMCFBEnterTickList; if (vNetData.Cnt > 0) { model.UpdateEnterCD(vNetData.EnterTickList); model.UpdateEnterCoolDown(vNetData.EnterTickList); } } System/DailyQuest/DailyQuestBehaviour.cs
@@ -379,16 +379,16 @@ { if (dailyQuestConfig.RelatedType == 2 && state == DailyQuestModel.DailyQuestState.Normal) { var cd = dungeonModel.GetEnterCD(dailyQuestConfig.RelatedID); if (cd != null && cd.overdueTime > DateTime.Now) var cd = dungeonModel.GetEnterCoolDown(dailyQuestConfig.RelatedID); if (cd != null && dungeonModel.IsEnterCountDown(dailyQuestConfig.RelatedID)) { UpdateGotoTitle((int)(cd.overdueTime - DateTime.Now).TotalSeconds); UpdateGotoTitle((int)(cd.endCoolDownTime - TimeUtility.ServerNow).TotalSeconds); secondTimer += Time.deltaTime; if (secondTimer > 1f) { secondTimer = 0f; UpdateGotoTitle((int)(cd.overdueTime - DateTime.Now).TotalSeconds); UpdateGotoTitle((int)(cd.endCoolDownTime - TimeUtility.ServerNow).TotalSeconds); } } else System/Dungeon/DungeonData.cs
@@ -227,23 +227,26 @@ } public class DungeonEnterCD public class DungeonEnterCoolDown { public int mapId; public uint dungeonSurplusTime; public uint enterCd; public uint clearCdCost; public DateTime overdueTime; public int level; public int duration; public int clearCoolDownCost; public DateTime endCoolDownTime; public void SetEnterTime(uint _enterTime) public void SetEnterTime(uint tick) { dungeonSurplusTime = _enterTime; overdueTime = DateTime.Now.AddSeconds(dungeonSurplusTime); endCoolDownTime = TimeUtility.GetTime(tick); endCoolDownTime = endCoolDownTime.AddTicks(duration * TimeSpan.TicksPerSecond); } public void SetCost(uint _cost) public int suplursSeconds { clearCdCost = _cost; get { return Mathf.Max(0, (int)(endCoolDownTime - TimeUtility.ServerNow).TotalSeconds); } } } System/Dungeon/DungeonEnterInfo.cs
@@ -25,9 +25,9 @@ } } DungeonEnterCD dungeonEnter; DungeonEnterCoolDown dungeonEnter; public event Action OnCdComplete; public event Action OnCoolDowndComplete; private void Awake() { @@ -39,11 +39,11 @@ private void OnClearBtn() { ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), UIHelper.ReplaceNewLine(Language.Get("FairyLand_Func11", dungeonEnter.clearCdCost)), (bool isOk) => ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), UIHelper.ReplaceNewLine(Language.Get("FairyLand_Func11", dungeonEnter.clearCoolDownCost)), (bool isOk) => { if (isOk) { if (PlayerDatas.Instance.baseData.GoldPaper + PlayerDatas.Instance.baseData.Gold >= dungeonEnter.clearCdCost) if (PlayerDatas.Instance.baseData.GoldPaper + PlayerDatas.Instance.baseData.Gold >= dungeonEnter.clearCoolDownCost) { model.RequestClearEnterCD(dungeonEnter.mapId); } @@ -64,14 +64,14 @@ { var dungeonId = model.GetDungeonId(model.currentDungeon); var dungeonConfig = Config.Instance.Get<DungeonConfig>(dungeonId); dungeonEnter = model.GetEnterCD(dungeonConfig.DataMapID); dungeonEnter = model.GetEnterCoolDown(dungeonConfig.DataMapID); model.updateDungeonEnterCD += UpdateDungeonEnterCD; model.dungeonEnterCoolDownUpdate += UpdateDungeonEnterCD; } private void UpdateDungeonEnterCD() { if (dungeonEnter.dungeonSurplusTime == 0) if (dungeonEnter != null && dungeonEnter.suplursSeconds == 0) { gameObject.SetActive(false); } @@ -79,19 +79,20 @@ private void OnDisable() { model.updateDungeonEnterCD -= UpdateDungeonEnterCD; model.dungeonEnterCoolDownUpdate -= UpdateDungeonEnterCD; } private void LateUpdate() { TimeSpan t = dungeonEnter.overdueTime - DateTime.Now; surplusTimeText.text = StringUtility.Contact(Language.Get("FairyLand_Func12"), t.Minutes.ToString("D2"), ":", Mathf.Max(0, t.Seconds).ToString("D2")); if (t.Minutes <= 0 && t.Seconds <= 0) TimeSpan timeSpan = dungeonEnter.endCoolDownTime - TimeUtility.ServerNow; surplusTimeText.text = StringUtility.Contact(Language.Get("FairyLand_Func12"), timeSpan.Minutes.ToString("D2"), ":", Mathf.Max(0, timeSpan.Seconds).ToString("D2")); if (timeSpan.Minutes <= 0 && timeSpan.Seconds <= 0) { gameObject.SetActive(false); if (OnCdComplete != null) if (OnCoolDowndComplete != null) { OnCdComplete(); OnCoolDowndComplete(); } } } System/Dungeon/DungeonModel.cs
@@ -17,7 +17,7 @@ Dictionary<int, DungeonRecord> dungeonRecords = new Dictionary<int, DungeonRecord>(); Dictionary<int, DailyQuestOpenTime> dungeonOpenTimes = new Dictionary<int, DailyQuestOpenTime>(); Dictionary<int, int[]> dungeonGradeRewardRate = new Dictionary<int, int[]>(); Dictionary<int, DungeonEnterCD> dungeonEnterDic = new Dictionary<int, DungeonEnterCD>(); Dictionary<int, DungeonEnterCoolDown> dungeonEnterDict = new Dictionary<int, DungeonEnterCoolDown>(); Dictionary<int, string> dungeonBuyCntFormulaDic = new Dictionary<int, string>(); Dictionary<int, int> mapIdToDataMapId = new Dictionary<int, int>(); Dictionary<int, DateTime> dungeonCountRemainTimes = new Dictionary<int, DateTime>(); @@ -29,7 +29,7 @@ public event Action updateMissionEvent; public event Action<int> dungeonStageChangeEvent; public event Action getDungeonResultEvent; public event Action updateDungeonEnterCD; public event Action dungeonEnterCoolDownUpdate; public event Action updateDungeonBuyCnt; public event Action dungeonFairyLandChangeEvent; public event Action dungeonInspireLvEvent; @@ -319,7 +319,7 @@ var dungeonId = GetDungeonId(_dungeon); var dungeonConfig = Config.Instance.Get<DungeonConfig>(dungeonId); if (IsEnterCountDowning(_dungeon.mapId)) if (IsEnterCountDown(_dungeon.mapId)) { _error = 1; return false; @@ -654,50 +654,51 @@ } } public DungeonEnterCD GetEnterCD(int _mapID) public DungeonEnterCoolDown GetEnterCoolDown(int _mapID) { if (dungeonEnterDic.ContainsKey(_mapID)) if (dungeonEnterDict.ContainsKey(_mapID)) { return dungeonEnterDic[_mapID]; return dungeonEnterDict[_mapID]; } return null; } public bool HasEnterCD(int _mapID) public bool ContainsDungeonEnter(int _mapID) { return dungeonEnterDic.ContainsKey(_mapID); return dungeonEnterDict.ContainsKey(_mapID); } public bool IsEnterCountDowning(int _mapID) public bool IsEnterCountDown(int _mapID) { var cd = GetEnterCD(_mapID); if (cd == null) var dungeonEnterInfo = GetEnterCoolDown(_mapID); if (dungeonEnterInfo == null) { return false; } if (cd.dungeonSurplusTime == 0) if (dungeonEnterInfo.level != 0 && PlayerDatas.Instance.baseData.LV >= dungeonEnterInfo.level) { return false; } return (cd.overdueTime - DateTime.Now).TotalSeconds > 0; return (dungeonEnterInfo.endCoolDownTime - TimeUtility.ServerNow).TotalSeconds > 0; } public void UpdateEnterCD(HA703_tagMCFBEnterTickList.tagMCFBEnterTick[] vNetDatas) public void UpdateEnterCoolDown(HA703_tagMCFBEnterTickList.tagMCFBEnterTick[] vNetDatas) { for (int i = 0; i < vNetDatas.Length; i++) { var data = vNetDatas[i]; if (dungeonEnterDic.ContainsKey((int)data.MapID)) if (dungeonEnterDict.ContainsKey((int)data.MapID)) { dungeonEnterDic[(int)data.MapID].SetEnterTime(data.LastEnterTick); dungeonEnterDict[(int)data.MapID].SetEnterTime(data.LastEnterTick); } } if (updateDungeonEnterCD != null) if (dungeonEnterCoolDownUpdate != null) { updateDungeonEnterCD(); dungeonEnterCoolDownUpdate(); } } @@ -1350,45 +1351,50 @@ } } FuncConfigConfig funcCfg = Config.Instance.Get<FuncConfigConfig>("FBEnterCD"); if (funcCfg != null) var funcConfig = Config.Instance.Get<FuncConfigConfig>("FBEnterCD"); if (funcConfig != null) { Dictionary<int, uint> dic = ConfigParse.GetDic<int, uint>(funcCfg.Numerical1); foreach (var key in dic.Keys) Dictionary<int, int> dict = ConfigParse.GetDic<int, int>(funcConfig.Numerical1); foreach (var key in dict.Keys) { DungeonEnterCD data = new DungeonEnterCD(); DungeonEnterCoolDown data = new DungeonEnterCoolDown(); data.mapId = key; data.enterCd = dic[key]; dungeonEnterDic.Add(key, data); data.duration = dict[key]; dungeonEnterDict.Add(key, data); } dic = ConfigParse.GetDic<int, uint>(funcCfg.Numerical2); foreach (var key in dic.Keys) dict = ConfigParse.GetDic<int, int>(funcConfig.Numerical2); foreach (var key in dict.Keys) { dungeonEnterDic[key].SetCost(dic[key]); dungeonEnterDict[key].clearCoolDownCost = dict[key]; } dict = ConfigParse.GetDic<int, int>(funcConfig.Numerical3); foreach (var key in dict.Keys) { dungeonEnterDict[key].level = dict[key]; } } funcCfg = Config.Instance.Get<FuncConfigConfig>("BuyFBCntCost"); if (funcCfg != null) funcConfig = Config.Instance.Get<FuncConfigConfig>("BuyFBCntCost"); if (funcConfig != null) { JsonData jsonData = JsonMapper.ToObject(funcCfg.Numerical1); JsonData jsonData = JsonMapper.ToObject(funcConfig.Numerical1); foreach (var key in jsonData.Keys) { int _mapId = int.Parse(key); dungeonBuyCntFormulaDic.Add(_mapId, jsonData[key].ToString()); } } funcCfg = Config.Instance.Get<FuncConfigConfig>("MunekadoMapID"); if (funcCfg != null) funcConfig = Config.Instance.Get<FuncConfigConfig>("MunekadoMapID"); if (funcConfig != null) { trialDungeonMapList.AddRange(ConfigParse.GetMultipleStr<int>(funcCfg.Numerical1)); trialDungeonMapList.AddRange(ConfigParse.GetMultipleStr<int>(funcConfig.Numerical1)); } funcCfg = Config.Instance.Get<FuncConfigConfig>("FBEncourageBuff"); if (funcCfg != null) funcConfig = Config.Instance.Get<FuncConfigConfig>("FBEncourageBuff"); if (funcConfig != null) { dungeonMaxInspireCountDict = ConfigParse.GetDic<int, int>(funcCfg.Numerical2); dungeonInspireUpperDict = ConfigParse.GetDic<int, int>(funcCfg.Numerical3); dungeonMaxInspireCountDict = ConfigParse.GetDic<int, int>(funcConfig.Numerical2); dungeonInspireUpperDict = ConfigParse.GetDic<int, int>(funcConfig.Numerical3); } foreach (var _cfg in Config.Instance.GetAllValues<DungeonInspireConfig>()) @@ -1402,11 +1408,11 @@ _list.Add(_cfg); } funcCfg = Config.Instance.Get<FuncConfigConfig>("FamilyInvadeCfg"); if (funcCfg != null) funcConfig = Config.Instance.Get<FuncConfigConfig>("FamilyInvadeCfg"); if (funcConfig != null) { guardSkyBuffIds = JsonMapper.ToObject<int[]>(funcCfg.Numerical4); guardSkyGuardNpcs = JsonMapper.ToObject<int[]>(funcCfg.Numerical5); guardSkyBuffIds = JsonMapper.ToObject<int[]>(funcConfig.Numerical4); guardSkyGuardNpcs = JsonMapper.ToObject<int[]>(funcConfig.Numerical5); } } System/Dungeon/NormalDungeonEntranceWin.cs
@@ -85,8 +85,8 @@ protected override void OnAfterOpen() { playerPack.RefreshItemCountAct += OnPackageItemChange; model.updateDungeonEnterCD += UpdateDungeonEnterCD; m_EnterCdContainer.OnCdComplete += UpdateDungeonEnterCD; model.dungeonEnterCoolDownUpdate += DungeonEnterCoolDownUpdate; m_EnterCdContainer.OnCoolDowndComplete += DungeonEnterCoolDownUpdate; PlayerDatas.Instance.PlayerDataRefreshInfoEvent += PlayerDataRefreshInfoEvent; PlayerDatas.Instance.OnRoleAttrRefresh += OnWorldLevelRefresh; FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent; @@ -95,8 +95,8 @@ protected override void OnPreClose() { playerPack.RefreshItemCountAct -= OnPackageItemChange; model.updateDungeonEnterCD -= UpdateDungeonEnterCD; m_EnterCdContainer.OnCdComplete -= UpdateDungeonEnterCD; model.dungeonEnterCoolDownUpdate -= DungeonEnterCoolDownUpdate; m_EnterCdContainer.OnCoolDowndComplete -= DungeonEnterCoolDownUpdate; PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= PlayerDataRefreshInfoEvent; PlayerDatas.Instance.OnRoleAttrRefresh -= OnWorldLevelRefresh; FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent; @@ -119,13 +119,13 @@ m_ContainerGroup.gameObject.SetActive(!openGroup); } private void UpdateDungeonEnterCD() private void DungeonEnterCoolDownUpdate() { var dungeonId = model.GetDungeonId(model.currentDungeon); var dungeonConfig = Config.Instance.Get<DungeonConfig>(dungeonId); bool _cd = model.HasEnterCD(dungeonConfig.DataMapID) && model.IsEnterCountDowning(dungeonConfig.DataMapID); m_EnterCdContainer.gameObject.SetActive(_cd); m_ContainerBtns.gameObject.SetActive(!_cd); bool inCoolDown = model.ContainsDungeonEnter(dungeonConfig.DataMapID) && model.IsEnterCountDown(dungeonConfig.DataMapID); m_EnterCdContainer.gameObject.SetActive(inCoolDown); m_ContainerBtns.gameObject.SetActive(!inCoolDown); DisplayFairyLandTip(); } @@ -146,7 +146,7 @@ m_DungeonTitle.text = dungeonConfig.FBName; UpdateDungeonEnterCD(); DungeonEnterCoolDownUpdate(); m_BossPortrayal.gameObject.SetActive(true); if (dungeonConfig.BossActorID != null && dungeonConfig.BossActorID.Length > 0) @@ -378,7 +378,7 @@ return false; } if (model.IsEnterCountDowning(model.currentDungeon.mapId)) if (model.IsEnterCountDown(model.currentDungeon.mapId)) { _error = 4; return false; @@ -438,6 +438,7 @@ if (refreshType == PlayerDataRefresh.LV) { DisplayFairyLandTip(); DungeonEnterCoolDownUpdate(); } } @@ -458,9 +459,9 @@ { var dungeonId = model.GetDungeonId(model.currentDungeon); var dungeonConfig = Config.Instance.Get<DungeonConfig>(dungeonId); bool cd = model.HasEnterCD(dungeonConfig.DataMapID) && model.IsEnterCountDowning(dungeonConfig.DataMapID); bool inCoolDown = model.ContainsDungeonEnter(dungeonConfig.DataMapID) && model.IsEnterCountDown(dungeonConfig.DataMapID); var satisfy = (PlayerDatas.Instance.baseData.LV + GeneralDefine.fairyLandBuffCondition) <= PlayerDatas.Instance.worldLv && dungeonConfig.DataMapID == 31080 && !cd && FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.WorldLv); && dungeonConfig.DataMapID == 31080 && !inCoolDown && FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.WorldLv); m_FairyLandTipBehaviour.gameObject.SetActive(satisfy); var config = Config.Instance.Get<SkillConfig>(GeneralDefine.fairyLandBuffId); if (config != null)