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 int _type; 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_LeagueSkillUpUI.PACKAGE_NAME; _ui = UI_LeagueSkillUpUI.Create(); this.viewCom = _ui.target; isfullScreen = true; _ui.m_btnBack.onClick.Add(OnBtnBackClick); _ui.m_listScore.itemRenderer = RenderListScoreItem; _ui.m_list.itemRenderer = RenderListItem; _ui.m_list.SetVirtual(); _valueBarController = new ValueBarController(_ui.m_comValue); _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("lm_beijing"); } protected override void AddEventListener() { base.AddEventListener(); } protected override void OnShown() { base.OnShown(); _type = (int)this.viewData; _valueBarController.OnShown(); _valueBarController.Controller(11); _ui.m_list.numItems = LeagueSkillCountCfgArray.Instance.GetCfg(_type).layerCount; if (LeagueDataManager.Instance.GetSkillProgressByType(_type) < 100) { _ui.m_list.ScrollToView(LeagueDataManager.Instance.CurLayer); } UpdateView(); } protected override void OnHide() { base.OnHide(); _valueBarController.OnHide(); if (_ui.m_list.numItems > 0) _ui.m_list.ScrollToView(0); } protected override void RemoveEventListener() { base.RemoveEventListener(); } private void OnBtnBackClick() { ViewManager.GoBackFrom(typeof(LeagueSkillUpView).FullName); } private void UpdateView() { _ui.m_listScore.numItems = 4; _ui.m_list.RefreshVirtualList(); _ui.m_comSkillType.m_txtTitle.text = "茶艺-" + LeagueSkillCountCfgArray.Instance.GetCfg(_type).name; UI_ListSkillTypeItem item = UI_ListSkillTypeItem.Proxy(_ui.m_comSkillType.target); double progress = LeagueDataManager.Instance.GetSkillProgressByType(_type); item.m_txtProgress.text = string.Format("进度{0}%", progress); UI_ListSkillTypeItem.ProxyEnd(); } 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.GetAllSkillScore(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(); bool isLock = !SkillDataManager.Instance.LeagueSkillDatas.ContainsKey(_type) || SkillDataManager.Instance.LeagueSkillDatas[_type].IndexOf(skillCfgs[index].id) < 0; item.m_imgLock.visible = isLock; ItemUtil.UpdateItemNeedNum(item.m_comCost, skillCfgs[index].consumeArr[0], true); 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[_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) { UpdateView(); } } } }