using ET; using FairyGUI; using UI.Field; using UnityEngine; namespace GFGGame { public class FieldView : BaseWindow { private UI_FieldUI _ui; private ValueBarController _valueBarController; private FieldCfg _curCfg; private FieldDataManager _dataManager; private int _selectedIndex = 0; public override void Dispose() { if (_valueBarController != null) { _valueBarController.Dispose(); _valueBarController = null; } if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_FieldUI.PACKAGE_NAME; _ui = UI_FieldUI.Create(); this.viewCom = _ui.target; isfullScreen = true; isReturnView = true; _ui.m_btnBack.onClick.Add(OnClickBtnBack); // _ui.m_btnGo.onClick.Add(OnClickBtnGo); _ui.m_btnTask.onClick.Add(OnBtnTaskClick); _ui.m_btn0.target.onClick.Add(OnDifficultyChange); _ui.m_btn1.target.onClick.Add(OnDifficultyChange); _ui.m_btn2.target.onClick.Add(OnDifficultyChange); // _ui.m_c1.onChanged.Add(OnDifficultyChange); _valueBarController = new ValueBarController(_ui.m_comValueBar); _ui.m_btnRule.onClick.Add(RuleController.ShowRuleView); _ui.m_btnRule.data = 300016; } protected override void AddEventListener() { base.AddEventListener(); EventAgent.AddEventListener(ConstMessage.FIELD_RESULT, UpdateView); EventAgent.AddEventListener(ConstMessage.FIELD_TASK, UpdateView); } protected override void OnShown() { base.OnShown(); _valueBarController.OnShown(); // _valueBarController.Controller(1); _dataManager = FieldDataManager.Instance; _selectedIndex = _dataManager.difficulty; _ui.m_c1.selectedIndex = _selectedIndex; _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("zhangjie_bg_1"); _curCfg = FieldCfgArray.Instance.dataArray[_selectedIndex]; _dataManager.chapterId = _curCfg.id; // FieldCfg[] cfgs = FieldCfgArray.Instance.dataArray; // for (int i = 0; i < cfgs.Length; i++) // { // bool isPass = i == 0 ? true : InstanceZonesDataManager.CheckLevelPass(cfgs[i].storyLvId); // _ui.target.GetChild("btn" + i).asButton.GetChild("imgLock").asImage.visible = !isPass; // } UpdateView(); Timers.inst.Add(1, 0, UpdateShowTime); Timers.inst.AddUpdate(CheckGuide); if (InstanceZonesDataManager.isFightResultHide) UpdateStroyFightResult(); } protected override void OnHide() { base.OnHide(); Timers.inst.Remove(UpdateShowTime); Timers.inst.Remove(CheckGuide); _valueBarController.OnHide(); } protected override void RemoveEventListener() { base.RemoveEventListener(); EventAgent.RemoveEventListener(ConstMessage.FIELD_RESULT, UpdateView); EventAgent.RemoveEventListener(ConstMessage.FIELD_TASK, UpdateView); } private void OnClickBtnBack() { _dataManager.difficulty = 0; ViewManager.GoBackFrom(typeof(FieldView).FullName); } private void OnDifficultyChange() { int priorIndex = _ui.m_c1.selectedIndex - 1; FieldCfg selectCfg = FieldCfgArray.Instance.dataArray[_ui.m_c1.selectedIndex]; bool isPass = InstanceZonesDataManager.CheckLevelPass(selectCfg.storyLvId); if (priorIndex >= 0 && !isPass) { _ui.m_c1.selectedIndex = _selectedIndex; StoryLevelCfg storyLevelCfg = StoryLevelCfgArray.Instance.GetCfg(selectCfg.storyLvId); StoryChapterCfg storyChapterCfg = StoryChapterCfgArray.Instance.GetCfg(storyLevelCfg.chapterId); string str = string.Format("完成主线{0}-{1}解锁", storyChapterCfg.order, storyLevelCfg.order); PromptController.Instance.ShowFloatTextPrompt(str); return; } // FieldCfg priorfg = priorIndex >= 0 ? FieldCfgArray.Instance.dataArray[priorIndex] : null; // if (priorIndex >= 0 && _dataManager.GetHighestLvByChapterId(priorfg.id) < priorfg.num) // { // _ui.m_c1.selectedIndex = _selectedIndex; // PromptController.Instance.ShowFloatTextPrompt("需通关前置关卡"); // return; // } _selectedIndex = _ui.m_c1.selectedIndex; _curCfg = FieldCfgArray.Instance.dataArray[_selectedIndex]; _dataManager.chapterId = _curCfg.id; _dataManager.difficulty = _selectedIndex; // UpdateView(); OnClickBtnGo(); if (GuideDataManager.IsGuideFinish(ConstGuideId.FIELD) <= 0) { GuideController.TryCompleteGuideIndex(ConstGuideId.FIELD,1); GuideController.TryCompleteGuide(ConstGuideId.FIELD, 1); } } private async void UpdateStroyFightResult() { var resultData = InstanceZonesDataManager.resultData; FieldCfg fieldCfg = FieldCfgArray.Instance.GetCfg(FieldDataManager.Instance.chapterId); int needPower = 0; for (int i = 0; i < FieldDataManager.Instance.currFightLv + 1; i++) { needPower += fieldCfg.needPower; } if (!resultData.Result || FieldDataManager.Instance.currFightLv == fieldCfg.num || RoleDataManager.power < needPower) { bool result = await FieldSProxy.ReqFieldInstanceResult(); if (result) { ViewManager.Show(); } } else { FieldDataManager _dataManager = FieldDataManager.Instance; _dataManager.accumulateReward += (FieldDataManager.Instance.difficulty + 1) * 5; //这里判断如果获取的马蹄金超过上限了,就终止挑战 if (_dataManager.fieldInfos.bonusWeekly + _dataManager.accumulateReward >= _dataManager.fieldInfos.bonusMaxLimit) { AlertUI.Show("本周可获得奖励已达上限,是否继续挑战?") .SetLeftButton(true, "取消", async (object data) => { _dataManager.accumulateReward = 0; bool result = await FieldSProxy.ReqFieldInstanceResult(); if (result) { ViewManager.Show(); } }) .SetRightButton(true, "确认", async (object data) => { bool result = await FieldSProxy.ReqFieldInstanceResult(); _dataManager.accumulateReward = 0; FieldCfg _curCfg = FieldCfgArray.Instance.dataArray[FieldDataManager.Instance.difficulty]; LogServerHelper.SendPlayParticipationLog((int)PlayParticipationEnum.TIAN_YE_DIAO_CHA, 2); int curLevelId = StoryLevelCfgArray.Instance.GetCfgsBytypeAndsubTypeAndchapterId(_curCfg.type, 0, _curCfg.id)[0].id; DressUpFightType dressUpFightType = new DressUpFightType(); dressUpFightType.levelID = curLevelId; dressUpFightType.teaPartID = 0; ViewManager.Show(dressUpFightType, new object[] { typeof(FieldView).FullName, this.viewData }, true); InstanceZonesDataManager.currentLevelCfgId = curLevelId; }); } else { ViewManager.Show(); } } InstanceZonesDataManager.isFightResultHide = false; } private void UpdateView() { _ui.m_loaIcon.url = string.Format("ui://Field/tydc_zizi_{0}", _dataManager.fieldInfos.theme); // _ui.m_txtScore.text = ConstDressUpScoreType.scoreTypeList()[_dataManager.fieldInfos.theme].ToString(); // _ui.m_txtMaxLv.text = string.Format("最高记录:{0}/{1}", _dataManager.GetHighestLvByChapterId(_dataManager.chapterId), _curCfg.num); FieldCfg selectCfg0 = FieldCfgArray.Instance.dataArray[0]; FieldCfg selectCfg1 = FieldCfgArray.Instance.dataArray[1]; FieldCfg selectCfg2 = FieldCfgArray.Instance.dataArray[2]; _ui.m_btn0.m_txtConsume.text = string.Format("{0}", selectCfg0.needPower); _ui.m_btn1.m_txtConsume.text = string.Format("{0}", selectCfg1.needPower); _ui.m_btn2.m_txtConsume.text = string.Format("{0}", selectCfg2.needPower); bool isPass0 = selectCfg0.storyLvId == 0 || InstanceZonesDataManager.CheckLevelPass(selectCfg0.storyLvId); bool isPass1 = selectCfg1.storyLvId == 0 || InstanceZonesDataManager.CheckLevelPass(selectCfg1.storyLvId); bool isPass2 = selectCfg2.storyLvId == 0 || InstanceZonesDataManager.CheckLevelPass(selectCfg2.storyLvId); _ui.m_btn0.m_c1.selectedIndex = isPass0 ? 1 : 0; _ui.m_btn1.m_c1.selectedIndex = isPass1 ? 1 : 0; _ui.m_btn2.m_c1.selectedIndex = isPass2 ? 1 : 0; _ui.m_proTaskReward.max = _dataManager.fieldInfos.bonusMaxLimit; _ui.m_proTaskReward.value = _dataManager.fieldInfos.bonusWeekly; _ui.m_loaTaskReward.url = ResPathUtil.GetIconPath(ItemCfgArray.Instance.GetCfg(ConstItemID.DIAMOND_RED)); RedDotController.Instance.SetComRedDot(_ui.m_btnTask, RedDotDataManager.Instance.GetFieldRed()); } private void UpdateShowTime(object param) { _ui.m_txtTime.text = string.Format("{0}后刷新", TimeUtil.FormattingTime(TimeHelper.ServerNow(), TimeUtil.GetNextWeekTime(GlobalCfgArray.globalCfg.refreshTime))); } private void OnClickBtnGo() { if (RoleDataManager.power < _curCfg.needPower) { PromptController.Instance.ShowFloatTextPrompt("体力不足"); return; } if (_dataManager.fieldInfos.bonusWeekly >= _dataManager.fieldInfos.bonusMaxLimit) { AlertUI.Show("本周可获得奖励已达上限,是否继续挑战?") .SetLeftButton(true) .SetRightButton(true, "确定", (object data) => { StartFight(); }); } else { StartFight(); } } private void StartFight() { LogServerHelper.SendPlayParticipationLog((int)PlayParticipationEnum.TIAN_YE_DIAO_CHA, 2); int curLevelId = StoryLevelCfgArray.Instance.GetCfgsBytypeAndsubTypeAndchapterId(_curCfg.type, 0, _curCfg.id)[0].id; DressUpFightType dressUpFightType = new DressUpFightType(); dressUpFightType.levelID = curLevelId; dressUpFightType.teaPartID = 0; ViewManager.Show(dressUpFightType, new object[] { typeof(FieldView).FullName, this.viewData }, true); InstanceZonesDataManager.currentLevelCfgId = curLevelId; } private void OnBtnTaskClick() { ViewManager.Show(); } private void CheckGuide(object param) { if (GuideDataManager.IsGuideFinish(ConstGuideId.FIELD) <= 0) { UpdateToCheckGuide(null); } else { Timers.inst.Remove(CheckGuide); } } protected override void UpdateToCheckGuide(object param) { if (!ViewManager.CheckIsTopView(this.viewCom)) return; GuideController.TryGuide(_ui.m_btn0.target, ConstGuideId.FIELD, 1, "外出进行历史考察,会有意想不到的收获哦。"); } } }