using FairyGUI; using UI.CommonGame; using UI.Main; using System.Collections.Generic; using UnityEngine; using System.Collections; using Assets.Game.HotUpdate.Data; using ET; namespace GFGGame { public class ActivityZCJBChapterView : BaseWindow { private UI_StoryChapterUI _ui; private int _chapterID; private GComponent _compChapter; private ValueBarController _valueBarController; private GObject _unPasslevelItem; private GObject _endLevelItem; private EffectUI _effectUI1; private EffectUI _effectUI2; private EffectUI _effectUI3; private EffectUI _effectUI4; private GComponent _comEff; private GComponent _effFirst; //y轴移动索引 private float indexY; private GameObject gamey; //特效类型数组,这里后面可以二维数组,放向左和向右的 private string[] effArray = new string[2] { "ZJ_JuQing", "ZJ_ZD" }; private int currentDifficulty; private int activityID; public override void Dispose() { EffectUIPool.Recycle(_effectUI1); _effectUI1 = null; EffectUIPool.Recycle(_effectUI2); _effectUI2 = null; EffectUIPool.Recycle(_effectUI3); _effectUI3 = null; EffectUIPool.Recycle(_effectUI4); _effectUI4 = null; if (_comEff != null) { _comEff.RemoveFromParent(); _comEff.Dispose(); } if (_effFirst != null) { _effFirst.RemoveFromParent(); _effFirst.Dispose(); } if (_valueBarController != null) { _valueBarController.Dispose(); _valueBarController = null; } if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void Init() { base.Init(); _ui = UI_StoryChapterUI.Create(); viewCom = _ui.target; isfullScreen = true; isReturnView = true; } protected override void OnInit() { base.OnInit(); _valueBarController = new ValueBarController(_ui.m_valueBar); _ui.m_btnBack.onClick.Add(OnClickBtnBack); _ui.m_btnHome.onClick.Add(OnClickBtnHome); _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("ksxy_gq_bj"); //_comEff = new GComponent(); //_comEff = UIPackage.CreateObject(UI_MainUI.PACKAGE_NAME, "ComEff").asCom; //_effectUI1 = EffectUIPool.CreateEffectUI(_comEff.GetChild("holder").asGraph, "ui_gk", "ui_gk_sg"); _effFirst = new GComponent(); _effFirst = UIPackage.CreateObject(UI_MainUI.PACKAGE_NAME, "ComEff").asCom; _effectUI3 = EffectUIPool.CreateEffectUI(_ui.m_bgEffect, "ui_zj", "ZX_BG_TX"); _effectUI4 = EffectUIPool.CreateEffectUI(_ui.m_chapter.m_compChapterScroll.m_nextEffect, "ui_zj", "ZX_Next_Boat"); } protected override void AddEventListener() { } protected override void OnShown() { base.OnShown(); GRoot.inst.touchable = false; SuitFosterProxy.SendGetSuitInfos().Coroutine(); MusicManager.Instance.PlayCroutine(ResPathUtil.GetMusicPath(ConstMusicName.DEFAULT)); if ((this.viewData as object[]) != null) { _chapterID = (int)(this.viewData as object[])[0]; currentDifficulty = (int)(this.viewData as object[])[1]; } else { _chapterID = (int)this.viewData; } MainStoryDataManager.currentChapterCfgId = _chapterID; activityID = ActivityDataManager.Instance.GetCurOpenActiveByType(17); //由于这里会切换特效,所以切换界面时进行清空 EffectUIPool.Recycle(_effectUI2); _effectUI2 = null; if (_effFirst != null) { _effFirst.RemoveFromParent(); } ActivityFightCfg chapterCfg = ActivityFightCfgArray.Instance.GetCfg(_chapterID); indexY = 111.0f * Mathf.Max(0, (float)StoryLevelCfgArray.Instance.GetCfgsBytypeAndsubTypeAndchapterId(chapterCfg.type, chapterCfg.subType, chapterCfg.id).Count - 5); gamey = GameObject.Find("Stage/GRoot/Window - StoryChapterUI/ContentPane/CompChapter/Container/Container"); _ui.m_chapter.m_compChapterScroll.m_imgBegin.visible = false; _ui.m_chapter.m_compChapterScroll.m_nextEffect.visible = false; _ui.m_targetSuit.visible = false; Timers.inst.StartCoroutine(InitChapter()); //Timers.inst.Add(0.2f, 1, SetContainerY); _ui.m_chapter.m_compChapterScroll.target.y = 1; _valueBarController.OnShown(); UI_ComponentValueBar valueBar = UI_ComponentValueBar.Proxy(_ui.m_valueBar); valueBar.m_c1.selectedIndex = 12; UI_ComponentValueBar.ProxyEnd(); _valueBarController.UpdateList(new List() { ActivityDressCfgArray.Instance.GetCfgsByactivityId(activityID)[0].comsumeArr[0][0], ConstItemID.DIAMOND_PURPLE, ConstItemID.DIAMOND_RED }); _ui.m_selectChapter.visible = false; _ui.m_switchChapter.target.visible = false; _ui.m_bonusBox.visible = false; _ui.m_ActivityZCJB.visible = true; ActivityOpenCfg _activityCfg = ActivityOpenCfgArray.Instance.GetCfg(activityID); long endTime = TimeUtil.DateTimeToTimestamp(_activityCfg.endTime); long curTime = TimeHelper.ServerNow(); TimeUtil.FormattingTime(curTime, endTime, out int num, out string str); _ui.m_ZCJBTimeText.text = "剩余时间:" + TimeUtil.FormattingTimeTo_DDHHmm(endTime - curTime); Timers.inst.Add(1, 0, UpdateActivityTime); // _ui.m_t0.SetHook("canHit", () => { GRoot.inst.touchable = true; }); _ui.m_t0.Play(); } protected override void OnHide() { base.OnHide(); _unPasslevelItem = null; _endLevelItem = null; // _ui.m_chapter.RemoveChildren(0, 0, true); GRoot.inst.touchable = true; _valueBarController.OnHide(); Timers.inst.Remove(SetContainerY); Timers.inst.Remove(UpdateActivityTime); } protected override void RemoveEventListener() { base.RemoveEventListener(); } private void OnClickBtnBack() { ViewManager.GoBackFrom(typeof(ActivityZCJBChapterView).FullName); //GameController.GoBackToMainView(); } private void OnClickBtnHome() { GameController.GoBackToMainView(); } private IEnumerator InitChapter() { ActivityFightCfg chapterCfg = ActivityFightCfgArray.Instance.GetCfg(_chapterID); var list = StoryLevelCfgArray.Instance.GetCfgsBytypeAndsubTypeAndchapterId(chapterCfg.type, chapterCfg.subType, chapterCfg.id); int endLevel = 0; int UnlockCount = 0; _compChapter = _ui.m_chapter.m_compChapterScroll.target; float starPosY = _ui.m_chapter.m_compChapterScroll.m_imgBegin.y; int lineGap = 4500 / list.Count; StoryLevelCfg lastLevelCfg = list[list.Count - 1]; //根据困难程度选择显示图片 currentDifficulty = chapterCfg.type; if (currentDifficulty == 1) { _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("wxsg_bj"); } else { currentDifficulty = 0; _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("wxsg_bj"); } //_comEff.visible = false; //_effFirst.visible = false; for (int i = 0; i < 20; i++) { GObject obj = _ui.m_chapter.m_compChapterScroll.target.GetChild("g" + (19 - i + 1)); obj.SetPosition(obj.x, starPosY - lineGap * i - 300, 0); StoryLevelCfg levelCfg = i < list.Count ? list[i] : null; UI_CompStoryLevelItem levelItem = UI_CompStoryLevelItem.Proxy(obj); levelItem.m_fightBg.visible = true; levelItem.m_loaDialogBg.visible = true; if(levelCfg == null) { levelItem.target.visible = false; continue; } if (i == 0 || InstanceZonesDataManager.CheckLevelPass(levelCfg.id - 1)) { UnlockCount++; levelItem.target.data = levelCfg; levelItem.target.visible = true; levelItem.target.onClick.Clear(); levelItem.target.onClick.Add(OnListItemClick); string showId = "1-"+ (i+1); levelItem.m_txtFightOrder.text = showId; if (levelCfg.fightID.Length > 0) { levelItem.m_c1.selectedIndex = 1; int score = InstanceZonesDataManager.GetScoreHighest(levelCfg.id); if (score <= 0) { levelItem.m_flower.target.visible = false; } else { levelItem.m_flower.target.visible = true; int starCount = InstanceZonesDataManager.GetStarCountHistory(levelCfg.id); StoryUtil.UpdateStar(starCount, levelItem.m_flower.target, Mathf.Max(0, currentDifficulty)); } } else { levelItem.m_c1.selectedIndex = 0; levelItem.m_flower.target.visible = false; levelItem.m_txtName.text = levelCfg.name; levelItem.m_comDialogBg.m_c1.selectedIndex = Random.Range(0, 10); levelItem.m_txtDialogOrder.text = showId; } //根据困难程度选择显示图片 if (currentDifficulty == 1) { levelItem.m_loaDialogBg.url = "ui://Main/zxian_btn_jq_jy"; levelItem.m_fightBg.url = "ui://Main/zxian_btn_zd_jy"; levelItem.m_txtFightOrder.text = string.Format("{0}", StringUtil.GetColorText(showId.ToString(), "#E3F8FF")); levelItem.m_fightIconA.alpha = 0; levelItem.m_fightIconB.alpha = 0; _ui.m_txtBg.url = "ui://Main/zxian_chapter_dec_jy"; _ui.m_txtChapter.strokeColor = new Color(0.592f, 0.773f, 0.961f, 1.000f); } else { levelItem.m_loaDialogBg.url = "ui://Main/zxian_btn_jq"; levelItem.m_fightBg.url = "ui://Main/zxian_btn_zd"; levelItem.m_txtFightOrder.text = string.Format("{0}", StringUtil.GetColorText(showId.ToString(), "#FFEABF")); levelItem.m_fightIconA.alpha = 0; levelItem.m_fightIconB.alpha = 0; _ui.m_txtBg.url = "ui://Main/zxian_chapter_dec"; _ui.m_txtChapter.strokeColor = new Color(1.000f, 0.686f, 0.318f, 1.000f); } levelItem.m_holder.visible = !InstanceZonesDataManager.CheckLevelPass(levelCfg.id); if (!InstanceZonesDataManager.CheckLevelPass(levelCfg.id)) { //设置为解锁关卡 MainStoryDataManager.currentLevelCfgId = levelCfg.id; _unPasslevelItem = levelItem.target; //levelItem.target.AddChild(_comEff); //_comEff.visible = true; //设置解锁特效 string effName; if (currentDifficulty == 1) { effName = effArray[levelItem.m_c1.selectedIndex] + "_Bule"; } else { effName = effArray[levelItem.m_c1.selectedIndex]; } if (levelItem.m_c1.selectedIndex == 0) { if (levelItem.m_c2.selectedIndex == 0) { _effectUI2 = EffectUIPool.CreateEffectUI(_effFirst.GetChild("effect_jq_left").asGraph, "ui_zj", effName); _effFirst.GetChild("effect_jq_left").rotationY = 180; } else { _effectUI2 = EffectUIPool.CreateEffectUI(_effFirst.GetChild("effect_jq").asGraph, "ui_zj", effName); _effFirst.GetChild("effect_jq").rotationY = 0; } } else { _effectUI2 = EffectUIPool.CreateEffectUI(_effFirst.GetChild("effect_zd").asGraph, "ui_zj", effName); if (levelItem.m_c2.selectedIndex == 0) { _effFirst.GetChild("effect_zd").rotationY = 0; } else { _effFirst.GetChild("effect_zd").rotationY = 180; } } levelItem.target.AddChild(_effFirst); levelItem.m_fightBg.visible = false; levelItem.m_loaDialogBg.visible = false; levelItem.m_t0.Play(); _effFirst.visible = true; //Timers.inst.Add(1.7f, 1, HideEffect, obj); } if (levelCfg.order > endLevel) { endLevel = levelCfg.order; _endLevelItem = levelItem.target; } } else { levelItem.target.visible = false; } UI_CompStoryLevelItem.ProxyEnd(); } yield return new WaitForEndOfFrame(); _ui.m_chapter.m_compChapterScroll.target.y = 0; //Mathf.Max(0, _ui.m_chapter.target.height - _ui.m_chapter.m_compChapterScroll.target.height); if (gamey != null) gamey.transform.position = new Vector3(0, indexY, 0); } private void SetContainerY(object param = null) { _ui.m_chapter.m_compChapterScroll.target.y = 1; //Mathf.Max(0, _ui.m_chapter.target.height - _ui.m_chapter.m_compChapterScroll.target.height - 1); } private void HideEffect(object param = null) { //_effFirst.visible = false; } private void OnListItemClick(EventContext context) { GObject obj = context.sender as GObject; StoryLevelCfg storyLevelCfg = (StoryLevelCfg)obj.data; MainStoryDataManager.currentLevelCfgId = storyLevelCfg.id; InstanceZonesController.ShowLevelView(storyLevelCfg.id, StudioDataManager.Instance.OnFinishZCJBStoryLevel); } private void OnClickLevelItem(EventContext context) { UI_CompStoryLevelItem levelItem = UI_CompStoryLevelItem.Proxy(context.sender as GObject); int levelCfgId = (int)levelItem.target.data; UI_CompStoryLevelItem.ProxyEnd(); StoryController.ShowLevelView(levelCfgId); } private void UpdateActivityTime(object param = null) { ActivityOpenCfg _activityCfg = ActivityOpenCfgArray.Instance.GetCfg(activityID); long endTime = TimeUtil.DateTimeToTimestamp(_activityCfg.endTime); long curTime = TimeHelper.ServerNow(); if (endTime < curTime) { PromptController.Instance.ShowFloatTextPrompt("活动已结束"); Timers.inst.Remove(UpdateActivityTime); GameController.GoBackToMainView(); return; } long timeActivity = ActivityGlobalDataManager.Instance.GetActivityInfoOneByType(17).EndTime - TimeHelper.ServerNow(); _ui.m_ZCJBTimeText.text = "剩余时间:" + (timeActivity > TimeUtil.SECOND_PER_DAY * 1000 ? TimeUtil.FormattingTimeTo_DDHHmm(timeActivity) : TimeUtil.FormattingTimeTo_HHmmss(timeActivity)); } } }