using System; using System.Collections.Generic; using ET; using FairyGUI; using UI.CommonGame; using UI.League; using UnityEngine; namespace GFGGame { //联盟技能激活 public class LeagueSkillUpView : BaseWindow { private UI_LeagueSkillUpUI _ui; private ValueBarController _valueBarController; private GameObject _gameObject0; private GameObject _gameObject1; private GameObject _gameObject2; private GoWrapper _wrapper0; private GoWrapper _wrapper1; private GoWrapper _wrapper2; private int _pageCount; private int _type; public override void Dispose() { SceneController.DestroyObjectFromView(_gameObject0, _wrapper0); SceneController.DestroyObjectFromView(_gameObject1, _wrapper1); SceneController.DestroyObjectFromView(_gameObject2, _wrapper2); if (_valueBarController != null) { _valueBarController.Dispose(); _valueBarController = null; } if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_LeagueSkillUpUI.PACKAGE_NAME; _ui = UI_LeagueSkillUpUI.Create(); this.viewCom = _ui.target; isfullScreen = true; _ui.m_btnBack.onClick.Add(OnBtnBackClick); _ui.m_comSkill.m_listScore.itemRenderer = RenderListScoreItem; _ui.m_comSkill.m_list.itemRenderer = RenderListItem; _ui.m_comSkill.m_list.SetVirtual(); _ui.m_comSkill.m_list.scrollPane.decelerationRate = 0.8f; _ui.m_comSkill.m_btnLeft.onClick.Add(OnBtnLeftClick); _ui.m_comSkill.m_btnRight.onClick.Add(OnBtnRightClick); _valueBarController = new ValueBarController(_ui.m_comValue); _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("lm_ch_jnbg"); string resPath = ResPathUtil.GetViewEffectPath("ui_league", "TEA"); SceneController.AddObjectToView(null, null, _ui.m_holder, resPath, out _gameObject0, out _wrapper0); string resPath1 = ResPathUtil.GetViewEffectPath("ui_league", "tea_unlock"); SceneController.AddObjectToView(null, null, _ui.m_holderSkill, resPath1, out _gameObject1, out _wrapper1); string resPath2 = ResPathUtil.GetViewEffectPath("ui_league", "tea_unlock"); SceneController.AddObjectToView(null, null, _ui.m_holderScore, resPath2, out _gameObject2, out _wrapper2, 90); } protected override void AddEventListener() { base.AddEventListener(); EventAgent.AddEventListener(ConstMessage.NUMERIC_CHANGE, UpdateView); } protected override void OnShown() { base.OnShown(); _type = (int)this.viewData; _valueBarController.OnShown(); _valueBarController.Controller(11); _ui.m_comSkill.m_list.numItems = LeagueSkillCountCfgArray.Instance.GetCfg(_type).layerCount; _ui.m_t0.Play(); UpdateView(); } protected override void OnHide() { base.OnHide(); _valueBarController.OnHide(); if (_ui.m_comSkill.m_list.numItems > 0) _ui.m_comSkill.m_list.ScrollToView(0); _ui.m_t0.Stop(); _ui.m_t1.Stop(); } protected override void RemoveEventListener() { base.RemoveEventListener(); EventAgent.RemoveEventListener(ConstMessage.NUMERIC_CHANGE, UpdateView); } private void OnBtnBackClick() { ViewManager.GoBackFrom(typeof(LeagueSkillUpView).FullName); } private void OnBtnRightClick() { int index = _ui.m_comSkill.m_list.GetFirstChildInView(); int curPage = index / _ui.m_comSkill.m_list.lineCount; int nextPage = curPage + 1; if (nextPage * _ui.m_comSkill.m_list.lineCount > _ui.m_comSkill.m_list.numItems - 1) return; _ui.m_comSkill.m_list.ScrollToView(nextPage * _ui.m_comSkill.m_list.lineCount, true); Debug.Log("curPage:" + nextPage); } private void OnBtnLeftClick() { int index = _ui.m_comSkill.m_list.GetFirstChildInView(); int curPage = index / _ui.m_comSkill.m_list.lineCount; int lastPage = curPage - 1; if (lastPage * _ui.m_comSkill.m_list.lineCount < 0) return; _ui.m_comSkill.m_list.ScrollToView(lastPage * _ui.m_comSkill.m_list.lineCount, true); Debug.Log("curPage:" + lastPage); } private void UpdateView() { if (LeagueDataManager.Instance.GetSkillProgressByType(_type) < 100 && LeagueDataManager.Instance.GetSkillProgressByType(_type) > 0) { if (LeagueDataManager.Instance.CurLayer == _ui.m_comSkill.m_list.numItems) { _ui.m_comSkill.m_list.ScrollToView(LeagueDataManager.Instance.CurLayer - 1); } else { bool isActive = true; List skillCfgs = LeagueSkillCfgArray.Instance.GetCfgsBytypeAndlayer(_type, LeagueDataManager.Instance.CurLayer); for (int i = 0; i < skillCfgs.Count; i++) { if (!SkillDataManager.Instance.LeagueSkillDatas.ContainsKey(_type) || SkillDataManager.Instance.LeagueSkillDatas[_type].IndexOf(skillCfgs[i].id) < 0) { isActive = false; break; } } if (isActive) { _ui.m_comSkill.m_list.ScrollToView(LeagueDataManager.Instance.CurLayer); } else { _ui.m_comSkill.m_list.ScrollToView(LeagueDataManager.Instance.CurLayer - 1); } } // _ui.m_list.ScrollToView(LeagueDataManager.Instance.CurLayer - 1); } _ui.m_comSkill.m_listScore.numItems = 4; _ui.m_comSkill.m_list.RefreshVirtualList(); _ui.m_txtTitle.text = "茶艺-" + LeagueSkillCountCfgArray.Instance.GetCfg(_type).name; double progress = LeagueDataManager.Instance.GetSkillProgressByType(_type); _ui.m_txtProgress.SetVar("value", progress.ToString()).FlushVars(); } private void RenderListScoreItem(int index, GObject obj) { UI_ListScoreItem item = UI_ListScoreItem.Proxy(obj); item.m_loaIcon.url = ResPathUtil.GetScorePath(index + 1); item.m_txtProperty.text = LeagueDataManager.Instance.GetSkillScoreByType(_type, index + 1).ToString(); UI_ListScoreItem.ProxyEnd(); } private void RenderListItem(int index, GObject obj) { List skillCfgs = LeagueSkillCfgArray.Instance.GetCfgsBytypeAndlayer(_type, index + 1); UI_ListSkillLayerItem item = UI_ListSkillLayerItem.Proxy(obj); if (item.m_listSkill.data == null) { item.m_listSkill.itemRenderer = RenderListSkillItem; } item.m_listSkill.data = skillCfgs; item.m_listSkill.numItems = skillCfgs.Count; UI_ListSkillLayerItem.ProxyEnd(); } private void RenderListSkillItem(int index, GObject obj) { List skillCfgs = obj.parent.data as List; UI_ListSkillItem item = UI_ListSkillItem.Proxy(obj); item.m_loaScore.url = ResPathUtil.GetScorePath(skillCfgs[index].score); item.m_txtScore.text = "+" + skillCfgs[index].value.ToString(); item.m_loaIcon.url = string.Format("ui://League/tb_jn_{0}", _type); bool isLock = !SkillDataManager.Instance.LeagueSkillDatas.ContainsKey(_type) || SkillDataManager.Instance.LeagueSkillDatas[_type].IndexOf(skillCfgs[index].id) < 0; item.m_imgLock.visible = isLock; bool canActive = true; List lastSkillCfgs = LeagueSkillCfgArray.Instance.GetCfgsBytypeAndlayer(_type, skillCfgs[index].layer - 1); for (int i = 0; i < lastSkillCfgs.Count; i++) { if (!SkillDataManager.Instance.LeagueSkillDatas.ContainsKey(_type) || SkillDataManager.Instance.LeagueSkillDatas[_type].IndexOf(lastSkillCfgs[i].id) < 0) { canActive = false; break; } } item.m_imgSuo.visible = !canActive; ItemUtil.UpdateItemNeedNum(item.m_comCost, skillCfgs[index].consumeArr[0], false, "#FFFBF4"); if (item.target.data == null) { item.target.onClick.Add(OnActiveSkill); } item.target.data = skillCfgs[index].id; UI_ListSkillItem.ProxyEnd(); } private async void OnActiveSkill(EventContext context) { GObject obj = context.sender as GObject; int skillId = (int)obj.data; if (SkillDataManager.Instance.LeagueSkillDatas.ContainsKey(_type) && SkillDataManager.Instance.LeagueSkillDatas[_type].IndexOf(skillId) >= 0) { return; } LeagueSkillCfg skillCfg = LeagueSkillCfgArray.Instance.GetCfg(skillId); List lastSkillCfgs = LeagueSkillCfgArray.Instance.GetCfgsBytypeAndlayer(_type, skillCfg.layer - 1); for (int i = 0; i < lastSkillCfgs.Count; i++) { if (!SkillDataManager.Instance.LeagueSkillDatas.ContainsKey(_type) || SkillDataManager.Instance.LeagueSkillDatas[_type].IndexOf(lastSkillCfgs[i].id) < 0) { return; } } long needCount = skillCfg.consumeArr[0][1]; long hasCount = ItemDataManager.GetItemNum(skillCfg.consumeArr[0][0]); if (hasCount < needCount) { PromptController.Instance.ShowFloatTextPrompt("消耗不足"); return; } bool result = await SkillSProxy.ReqActiveSkill(SkillType.LeagueSkill, skillId); if (result) { Vector2 posInSkill = obj.TransformPoint(new Vector2(obj.width / 2, obj.height / 2), _ui.target); _ui.m_holderSkill.position = posInSkill; GObject scoreObj = _ui.m_comSkill.m_listScore.GetChildAt(skillCfg.score - 1); Vector2 posInScore = scoreObj.TransformPoint(new Vector2(scoreObj.width / 2, scoreObj.height / 2), _ui.target); _ui.m_holderScore.position = posInScore; _ui.m_t1.Play(); UpdateView(); } } } }