using FairyGUI; using UI.CommonGame; using UI.Main; using System.Collections.Generic; using UnityEngine; namespace GFGGame { public class StoryChapterView : BaseView { private UI_StoryChapterUI _ui; private int _chapterID; private GComponent _compChapter; private ValueBarController _valueBarController; private GObject _unPasslevelItem; private GObject _endLevelItem; private GameObject _gameObject; private GoWrapper _wrapper; public override void Dispose() { if (_valueBarController != null) { _valueBarController.Dispose(); _valueBarController = null; } SceneController.DestroyObjectFromView(_gameObject); base.Dispose(); } protected override void Init() { base.Init(); _ui = UI_StoryChapterUI.Create(); viewCom = _ui.target; isfullScreen = 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_bonusBox1.target.onClick.Add(() => { OnClickBonusBox(_ui.m_bonusBox1, 0); }); _ui.m_bonusBox2.target.onClick.Add(() => { OnClickBonusBox(_ui.m_bonusBox2, 1); }); _ui.m_bonusBox3.target.onClick.Add(() => { OnClickBonusBox(_ui.m_bonusBox3, 2); }); EventAgent.AddEventListener(ConstMessage.NOTICE_MAINSTORY_BOXBONUS_STATE, UpdateBonusBox); } protected override void OnShown() { base.OnShown(); MusicManager.Instance.Play(ResPathUtil.GetMusicPath(ConstMusicName.DEFAULT)); _chapterID = (int)viewData; MainStoryDataManager.currentChapterCfgId = _chapterID; _compChapter = (GComponent)UIPackage.CreateObject("Main", "CompChapter" + _chapterID); _ui.m_chapter.AddChild(_compChapter); InitChapter(); _valueBarController.OnShown(); } protected override void OnHide() { base.OnHide(); _unPasslevelItem = null; _endLevelItem = null; _ui.m_chapter.RemoveChildren(0, 0, true); _valueBarController.OnHide(); EventAgent.RemoveEventListener(ConstMessage.NOTICE_MAINSTORY_BOXBONUS_STATE, UpdateBonusBox); } private void OnClickBtnBack() { ViewManager.GoBackFrom(ViewName.STORY_CHAPTER_VIEW); } private void OnClickBtnHome() { GameController.GoBackToMainView(); } private void InitChapter() { StoryChapterCfg chapterCfg = StoryChapterCfgArray.Instance.GetCfg(_chapterID); _ui.m_txtChapterName.text = StoryUtil.GetChapterOrderText(_chapterID) + "·" + chapterCfg.name; int starCountChapter = InstanceZonesDataManager.GetChapterStarCount(_chapterID); _ui.m_txtStarCount.text = "" + starCountChapter + "/" + chapterCfg.bonusStar3; UpdateBonusBoxName(_ui.m_bonusBox1, "" + chapterCfg.bonusStar1); UpdateBonusBoxName(_ui.m_bonusBox2, "" + chapterCfg.bonusStar2); UpdateBonusBoxName(_ui.m_bonusBox3, "" + chapterCfg.bonusStar3); UpdateBonusBox(); var list = StoryLevelCfgArray.Instance.GetCfgs(chapterCfg.type, chapterCfg.subType, chapterCfg.id); int endLevel = 0; for (int i = 0; i < list.Count; i++) { StoryLevelCfg levelCfg = list[i]; GObject obj = _compChapter.GetChild("g" + levelCfg.order); if (obj != null) { UI_CompStoryLevelItem levelItem = UI_CompStoryLevelItem.Proxy(obj); levelItem.target.data = levelCfg.id; if (MainStoryDataManager.CheckLevelUnlock(levelCfg.id)) { levelItem.target.visible = true; levelItem.target.onClick.Clear(); levelItem.target.onClick.Add(OnClickLevelItem); string showId = StoryUtil.GetChapterOrder(_chapterID) + "_" + levelCfg.order; levelItem.m_txtOrder.text = showId; if (levelCfg.fightID.Length > 0) { levelItem.m_bg.url = "ui://Main/zx_gka_zb_2"; 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); } } else { levelItem.m_bg.url = "ui://Main/zx_gka_zb_1"; levelItem.m_flower.target.visible = false; } // levelItem.m_iconUnPass.visible = levelItem.m_holder.visible = !InstanceZonesDataManager.CheckLevelPass(levelCfg.id); // if (levelItem.m_holder.visible) // { // } if (levelItem.m_holder.visible) { //设置为解锁关卡 MainStoryDataManager.currentLevelCfgId = levelCfg.id; _unPasslevelItem = levelItem.target; _gameObject = null; _wrapper = null; string resPath = ResPathUtil.GetViewEffectPath("ui_gk", "ui_gk_sg"); SceneController.AddObjectToView(_gameObject, _wrapper, levelItem.m_holder, resPath, out _gameObject, out _wrapper); } if (levelCfg.order > endLevel) { endLevel = levelCfg.order; _endLevelItem = levelItem.target; } } else { levelItem.target.visible = false; } } } if (_endLevelItem != null) { float tx = _endLevelItem.x + _endLevelItem.width / 2; float ty = _endLevelItem.y + _endLevelItem.height / 2; tx = tx - _ui.m_chapter.width / 2; ty = ty - _ui.m_chapter.height / 2; _ui.m_chapter.scrollPane.SetPosX(tx, false); _ui.m_chapter.scrollPane.SetPosY(ty, false); } } private void OnClickLevelItem(EventContext context) { UI_CompStoryLevelItem levelItem = UI_CompStoryLevelItem.Proxy(context.sender as GObject); int levelCfgId = (int)levelItem.target.data; StoryController.ShowLevelView(levelCfgId); } private void UpdateBonusBoxName(UI_CompBonusBox bonusBox, string name) { bonusBox.m_txtName.text = name; } private void UpdateBonusBox() { UpdateBonusBoxStatus(_ui.m_bonusBox1, 0); UpdateBonusBoxStatus(_ui.m_bonusBox2, 1); UpdateBonusBoxStatus(_ui.m_bonusBox3, 2); } private void UpdateBonusBoxStatus(UI_CompBonusBox bonusBox, int index) { int status = MainStoryDataManager.GetChapterBonusStatus(MainStoryDataManager.currentChapterCfgId, index); bonusBox.m_iconActive.visible = status == ConstBonusStatus.CAN_GET; bonusBox.m_ComRewardEffect.visible = status == ConstBonusStatus.CAN_GET; if (status == ConstBonusStatus.GOT) { bonusBox.m_icon.url = "ui://Main/zx_gka_baoxiang_2"; } else { bonusBox.m_icon.url = "ui://Main/zx_gka_baoxiang_1"; } bonusBox.target.data = status; } private async void OnClickBonusBox(UI_CompBonusBox bonusBox, int index) { int status = (int)bonusBox.target.data; if (status == ConstBonusStatus.CAN_GET) { bool got = await MainStorySProxy.GetMainStoryBoxBonus(MainStoryDataManager.currentChapterCfgId, index); if (got) { List bonusList = MainStoryDataManager.GetChapterBonus(MainStoryDataManager.currentChapterCfgId, index); if (bonusList != null && bonusList.Count > 0) { BonusController.TryShowBonusList(bonusList); } UpdateBonusBoxStatus(bonusBox, index); } } else if (status == ConstBonusStatus.GOT) { PromptController.Instance.ShowFloatTextPrompt("这个宝箱已经被领取过了"); } else { PromptController.Instance.ShowFloatTextPrompt("关卡总分不足,继续加油吧。"); } } protected override void UpdateToCheckGuide(object param) { if (!ViewManager.CheckIsTopView(this.viewCom)) return; GuideController.TryGuide(_unPasslevelItem, ConstGuideId.START_STORY, 1, "点击关卡,开启新历程"); GuideController.TryGuide(_unPasslevelItem, ConstGuideId.SINGLE_FIGHT, 1, "遇到意外事件了,暂时解释不清,先按请求换上服饰吧"); GuideController.TryGuide(_ui.m_btnHome, ConstGuideId.LUCKY_BOX, 1, "点击返回主界面"); GuideController.TryGuide(_unPasslevelItem, ConstGuideId.CLOTHING_SYNTHETIC, 1, "点击下一关"); GuideController.TryGuide(_ui.m_btnHome, ConstGuideId.CLOTHING_SYNTHETIC, 4, "先回到主界面"); GuideController.TryGuide(_ui.m_btnHome, ConstGuideId.UP_CARD_STAR, 1, "点击返回主界面"); GuideController.TryGuide(_ui.m_btnHome, ConstGuideId.PHOTOGRAPH, 1, "拍照功能已开启,解锁更多搭配和玩法哦"); } protected override void TryCompleteGuide() { GuideCfg cfg = GuideCfgArray.Instance.GetCfg(ConstGuideId.START_STORY); GuideController.TryCompleteGuideIndex(cfg.id, 1); GuideController.TryCompleteGuide(ConstGuideId.START_STORY, 1); } } }