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() { base.Dispose(); if (_valueBarController != null) { _valueBarController.Dispose(); _valueBarController = null; } if (_ui != null) { _ui.Dispose(); _ui = null; } } protected override void OnInit() { base.OnInit(); packageName = UI_FieldUI.PACKAGE_NAME; _ui = UI_FieldUI.Create(); this.viewCom = _ui.target; isfullScreen = 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); } 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); } 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(); } 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("x{0}", selectCfg0.needPower); _ui.m_btn1.m_txtConsume.text = string.Format("x{0}", selectCfg1.needPower); _ui.m_btn2.m_txtConsume.text = string.Format("x{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; ViewManager.Show(curLevelId, 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, 3, "开始考察吧。"); GuideController.TryCompleteGuide(ConstGuideId.FIELD, 3); } } }