using System.Collections.Generic; using FairyGUI; using UI.CommonGame; using UI.Main; using UnityEngine; namespace GFGGame { public class StoryCardChoose : BaseWindow { private UI_StoryCardChooseUI _ui; private List cardList = new List(); private static int _scoreType; private List _effects = new List(); private List _wrappers = new List(); public override void Dispose() { base.Dispose(); for (int i = 0; i < _effects.Count; i++) { SceneController.DestroyObjectFromView(_effects[i], _wrappers[i]); } if (_ui != null) { _ui.Dispose(); _ui = null; } } protected override void OnInit() { base.OnInit(); packageName = UI_StoryCardChooseUI.PACKAGE_NAME; _ui = UI_StoryCardChooseUI.Create(); this.viewCom = _ui.target; this.viewCom.Center(); this.modal = true; viewAnimationType = EnumViewAnimationType.ZOOM_CENTER; _ui.m_listCard.SetVirtual(); _ui.m_listCard.itemRenderer = RenderListCardItem; _ui.m_listCard.onClickItem.Add(OnListCardItemClick); _ui.m_btnCancel.onClick.Add(OnBtnCancelClick); _ui.m_btnConfirm.onClick.Add(OnBtnComfirmClick); } protected override void OnShown() { base.OnShown(); _scoreType = (int)viewData; cardList = CardDataManager.GetCardListByRarity(0);//.CardDicToList(CardDataManager.GetCardDicByRarity(0)); cardList = SortCardList(cardList); _ui.m_listCard.numItems = cardList.Count; _ui.m_listCard.selectedIndex = 0; UpdateView(0); Timers.inst.AddUpdate(CheckGuide); } private void UpdateView(int index) { // CardData cardData = cardList[index]; _ui.m_loaScore.url = ResPathUtil.GetCommonGameResPath("kp_sx_" + _scoreType); int cardId = cardList[index].id; _ui.m_txtName.text = ""; _ui.m_txtDiscribe.text = ""; PassivitySkillCfg cfg = ScoreSystemData.Instance.GetShowSkillCfg(cardId); if (cfg == null) return; int skillId = ScoreSystemData.Instance.GetShowSkillCfg(cardId).skillId; int skillLv = SkillDataManager.Instance.GetSkillLv(cardId, skillId); PassivitySkillLvlCfg skillLvCfg = PassivitySkillLvlCfgArray.Instance.GetCfgByskilllvlAndskillId(skillLv, skillId); _ui.m_txtName.text = cfg.name; _ui.m_txtDiscribe.text = string.Format(cfg.describe, ((float)skillLvCfg.probability / 10000f * 100), ((float)skillLvCfg.count / 10000f * 100)); } private void RenderListCardItem(int index, GObject obj) { CardData cardData = cardList[index]; UI_ListCardItem item = UI_ListCardItem.Proxy(obj);// obj as GButton; item.m_txtName.text = cardData.itemCfg.name; item.m_comCardMask.m_loaCard.asLoader.url = ResPathUtil.GetCardSmallPath(cardData.resources[cardData.resIndex]); item.m_txtLv.text = string.Format("Lv.\n{0}", cardData.lv); // item.m_loaRarity.url = ResPathUtil.GetCommonGameResPath("kp_sxing_x_" + cardData.itemCfg.rarity); RarityIconController.UpdateRarityIcon(item.m_loaRarity, cardData.itemCfg.id, false);// ResPathUtil.GetCommonGameResPath("kp_sxing_x_" + data.itemCfg.rarity); item.m_loaMainScore.url = ResPathUtil.GetCommonGameResPath("kp_sx_" + (cardData.itemCfg.mainScore)); UI_ComStar comStar = UI_ComStar.Proxy(item.m_comStar); comStar.m_c1.selectedIndex = cardData.star; if (_effects.Count <= index) { string resPath = ResPathUtil.GetViewEffectPath("ui_xz", "ui_xz_zd_kq"); GameObject gameObject0; GoWrapper wrapper0; SceneController.AddObjectToView(null, null, item.m_holder, resPath, out gameObject0, out wrapper0); _effects.Add(gameObject0); _wrappers.Add(wrapper0); } UI_ListCardItem.ProxyEnd(); UI_ComStar.ProxyEnd(); } private void OnListCardItemClick(EventContext context) { UpdateView(_ui.m_listCard.selectedIndex); } private void OnBtnComfirmClick() { int cardId = cardList[_ui.m_listCard.selectedIndex].id; List cfgs = PassivitySkillCfgArray.Instance.GetCfgsBycardId(cardId); InstanceZonesDataManager.currentCardId = cfgs.Count > 0 ? cardId : -1; this.Hide(); EventAgent.DispatchEvent(ConstMessage.CARD_CHOOSE); } private static List SortCardList(List arrayList) { arrayList.Sort((CardData a, CardData b) => { int scoreA = a.scores[_scoreType];// ItemDataManager.GetItemScoreValue(a.id, _scoreType); int scoreB = b.scores[_scoreType];//ItemDataManager.GetItemScoreValue(b.id, _scoreType); if (scoreA < scoreB) { return 1; } else if (scoreA > scoreB) { return -1; } return string.Compare(a.itemCfg.res, b.itemCfg.res); }); return arrayList; } private void OnBtnCancelClick() { this.Hide(); } protected override void OnHide() { base.OnHide(); _ui.m_listCard.ScrollToView(0); Timers.inst.Remove(CheckGuide); } private void CheckGuide(object param) { if (GuideDataManager.IsGuideFinish(ConstGuideId.SKILL_CARD_FIGHT) <= 0) { UpdateToCheckGuide(null); } else { Timers.inst.Remove(CheckGuide); } } protected override void UpdateToCheckGuide(object param) { if (!ViewManager.CheckIsTopView(this.viewCom)) return; GuideController.TryGuide(_ui.m_listCard, ConstGuideId.SKILL_CARD_FIGHT, 1, "选择一张合适的词牌,增加过关战斗力", 0); GuideController.TryCompleteGuide(ConstGuideId.SKILL_CARD_FIGHT, 1); } } }