using FairyGUI; using UI.Card; using UI.CommonGame; using UI_ComConsume = UI.Card.UI_ComConsume; using System.Collections.Generic; using UnityEngine; using System.Timers; using System.Collections; using System.Linq; using VEngine; using ET; namespace GFGGame { public class CardFosterView : BaseView { private UI_CardFosterUI _ui; private UI_ComFosterBottom _comFosterBottom; private ValueBarController _valueBarController; private UI_ComCost _comLvConsumeGold; private UI_ComCostCurrencyWithHas _comStarCousumeGold; private CardData _cardData = new CardData(); private int _selectTab = 0; private List _listLongPress = new List(); private GameObject _cardObj; private GoWrapper _wrapper; private GObject _consumeSelectItem;//选中的材料item private int _consumeSelectIndex = 0;//0为减,1为加 private List itemsCount; private int[] upgradeCardItemsArr = GlobalCfgArray.globalCfg.upgradeCardItemsArr; //private Timer _timer; private const float _delay = 300; private double _selectTimeCount = 0;//长按时间 private int _showLv = 0; private int _showExp = 0; private float _cardScale = 0.8f; private bool showCard = false; private bool playAni = false; private Vector2 comCardImgResInitSize; public override void Dispose() { for (int i = 0; i < _listLongPress.Count; i++) { _listLongPress[i].Dispose(); } _listLongPress.Clear(); if (_valueBarController != null) { _valueBarController.Dispose(); _valueBarController = null; } SceneController.DestroyObjectFromView(_cardObj, _wrapper); if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_CardFosterUI.PACKAGE_NAME; _ui = UI_CardFosterUI.Create(); viewCom = _ui.target; isfullScreen = true; //公共组件:返回,页签,属性列表 _ui.m_ComFosterTop.m_btnback.onClick.Add(OnClickBtnBack); _ui.m_ComFosterTop.m_btnStarReward.onClick.Add(OnBtnStarRewardClick); _ui.m_ComFosterBottom.m_ctrlTab.onChanged.Add(OnChangeCtrlTab); _ui.m_ComFosterBottom.m_listProperty.itemRenderer = RenderListPropertyItem; //卡面和故事界面 _ui.m_ComFosterTop.m_btnStory.onClick.Add(OnClickBtnStroy); //升级升星按钮 _ui.m_ComFosterBottom.m_btnUpLv.onClick.Add(OnClickBtnUpLv); _ui.m_ComFosterBottom.m_btnAll.onClick.Add(OnClcikBtnAll); _ui.m_ComFosterBottom.m_btnClearAll.onClick.Add(OnClcikBtnClearAll); _ui.m_ComFosterBottom.m_btnUpStar.onClick.Add(OnClickBtnUpStar); _ui.m_ComFosterBottom.m_btnUpSkillLv.onClick.Add(OnBtnUpSkill); //升级升星消耗材料列表 _ui.m_ComFosterBottom.m_listLvConsume.itemRenderer = RenderListLvConsumeItem; _ui.m_ComFosterBottom.m_listStarConsume.itemRenderer = RenderListStarConsumeItem; _ui.m_ComFosterBottom.m_listSkill.itemRenderer = RenderListSkilItem; //满星级后卡面列表 _ui.m_ComFosterBottom.m_listShowCard.itemRenderer = RenderListShowCardItem; _ui.m_ComFosterBottom.m_listShowCard.onClickItem.Add(OnClickShowCardListItem); // _ui.m_loaCard.onClick.Add(OnClickLoaCard); _ui.m_loaListener1.onClick.Add(OnClickLoaCard); _ui.m_comImgCard.target.onClick.Add(OnClickLoaCard); _ui.m_loaListener.onClick.Add(OnClickComCard); _ui.m_comCard.target.onClick.Add(OnClickComCard); } protected override void OnShown() { base.OnShown(); _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("hc_bj_1"); _cardData = CardDataManager.GetCardDataById((this.viewData as CardData).id); _comFosterBottom = _ui.m_ComFosterBottom; playAni = false; comCardImgResInitSize = Vector2.zero; _cardScale = _ui.target.height * 0.8f / _ui.target.initHeight; showCard = false; Input.multiTouchEnabled = false; this.ClearItemsCountList(); this.UpdateCommon(); this.UpdateNormal(); this.UpdateCardRes(); this.UpdateUpLvView(); this.UpdateUpStarView(); this.UpdateUpSkillView(); this.UpdateRedDot(); _comFosterBottom.m_ctrlTab.selectedIndex = this._selectTab; RedDotController.Instance.SetComRedDot(_ui.m_ComFosterBottom.m_btnSkill, RedDotDataManager.Instance.GetCardSkillsRed(_cardData.id)); Timers.inst.AddUpdate(CheckGuide); } protected override void AddEventListener() { base.AddEventListener(); EventAgent.AddEventListener(ConstMessage.CARD_UP_SKILL, UpdateUpSkillView); EventAgent.AddEventListener(ConstMessage.ITEM_CHANGED, UpdateItemChange); EventAgent.AddEventListener(ConstMessage.CARD_STAR_REWARD, UpdateRedDot); } private void ClearItemsCountList() { if (itemsCount == null) { itemsCount = new List(); } itemsCount.Clear(); for (int i = 0; i < upgradeCardItemsArr.Length; i++) { itemsCount.Add(0); } } private void UpdateNormal() { _ui.m_ComFosterTop.m_btnStory.visible = CardDataManager.GetStoryCfgsById(_cardData.id).Count > 0 ? true : false; // _comFosterBottom.m_btnUpLv.grayed = true; // _comFosterBottom.m_btnUpLv.GetChild("ani").asMovieClip.visible = false; _valueBarController = new ValueBarController(_ui.m_ComFosterTop.m_comValueBar, 5); _valueBarController.OnShown(); string names = _cardData.itemCfg.name; switch (names.Length) { case 1: _comFosterBottom.m_txtName0.text = names.Substring(0, 1); break; case 2: _comFosterBottom.m_txtName0.text = names.Substring(0, 1); _comFosterBottom.m_txtName2.text = names.Substring(1, 1); break; case 3: _comFosterBottom.m_txtName0.text = names.Substring(0, 1); _comFosterBottom.m_txtName1.text = names.Substring(1, 1); _comFosterBottom.m_txtName2.text = names.Substring(2, 1); break; case 4: _comFosterBottom.m_txtName0.text = names.Substring(0, 1); _comFosterBottom.m_txtName1.text = names.Substring(1, 1); _comFosterBottom.m_txtName2.text = names.Substring(2, 1); _comFosterBottom.m_txtName3.text = names.Substring(3, 1); break; default: _comFosterBottom.m_txtName0.text = names.Substring(0, 1); _comFosterBottom.m_txtName1.text = names.Substring(1, 1); _comFosterBottom.m_txtName2.text = names.Substring(2, 1); _comFosterBottom.m_txtName3.text = names.Substring(3, 1); _comFosterBottom.m_txtName4.text = names.Substring(4); break; } } private void UpdateCommon() { _comFosterBottom.m_listProperty.numItems = _cardData.scores.Count; _comLvConsumeGold = UI_ComCost.Proxy(_comFosterBottom.m_ComLvConsumeGold); _comLvConsumeGold.m_txtNeed.text = "0"; _comLvConsumeGold.m_c1.selectedIndex = 1; UI_ComCost.ProxyEnd(); } private void UpdateCardRes() { if (_cardObj != null) { GameObject.Destroy(_cardObj); _cardObj = null; } string resPath = ResPathUtil.GetCardAnimationPath(_cardData.resources[_cardData.resIndex]); if (Versions.Contains(resPath)) { SceneController.AddObjectToView(_cardObj, _wrapper, _ui.m_comCard.m_comCardHolder.m_holder, resPath, out _cardObj, out _wrapper); } if (_cardObj != null) { _ui.m_c1.selectedIndex = 1; _ui.m_comCard.target.scrollPane.SetPercX(0.5f, false); _ui.m_comCard.target.SetScale(_cardScale, _cardScale); } else { _ui.m_c1.selectedIndex = 0; if (comCardImgResInitSize == Vector2.zero) { _ui.m_comImgCard.m_ComCardImgRes.m_loaCard.url = ResPathUtil.GetCardPath(_cardData.resources[_cardData.resIndex]); GLoader loaCard = _ui.m_comImgCard.m_ComCardImgRes.m_loaCard; float scale = _ui.target.height * _cardScale / loaCard.initHeight; comCardImgResInitSize = new Vector2(loaCard.initWidth * scale, loaCard.initHeight * scale); _ui.m_comImgCard.target.scrollPane.SetPercX(0.5f, false); _ui.m_comImgCard.m_ComCardImgRes.target.size = comCardImgResInitSize; } } } private void RenderListPropertyItem(int index, GObject obj) { UI_ListScoreItem listItem = UI_ListScoreItem.Proxy(obj); listItem.m_txtProperty.text = _cardData.scores[index + 1].ToString(); listItem.m_loaIcon.url = ResPathUtil.GetCommonGameResPath("kp_sx_" + (index + 1)); UI_ListScoreItem.ProxyEnd(); } /***********************************************************升级***************************************************/ private void UpdateUpLvView(bool isPreview = false, int lv = 0, int exp = 0) { // _comLvConsumeGold = UI_ComCostCurrency.Proxy(_comFosterBottom.m_ComLvConsumeGold); _showLv = isPreview == true ? lv : _cardData.lv; _showExp = isPreview == true ? exp : _cardData.exp; CardLvlCfg cardLvCfg = CardLvlCfgArray.Instance.GetCfgByrarityAndcardLvl(_cardData.itemCfg.rarity, _showLv); if (cardLvCfg == null) { ET.Log.Error("卡牌" + _cardData.id + " 没有 " + _showLv + " 级等级配置"); return; } _comFosterBottom.m_barLv.max = cardLvCfg.needExp; _comFosterBottom.m_barLv.value = _showExp; int maxLv = CardRarityCfgArray.Instance.GetCfg(_cardData.itemCfg.rarity).maxCardLvl; _comFosterBottom.m_txtMaxLv.text = maxLv.ToString(); _comFosterBottom.m_txtCurLv.text = _showLv.ToString(); _comFosterBottom.m_txtMaxExp.text = cardLvCfg.needExp.ToString(); _comFosterBottom.m_txtCurExp.text = _showExp.ToString(); // = "0"; // _comLvConsumeGold = UI_ComCostCurrency.Proxy(_comFosterBottom.m_ComLvConsumeGold); // _comFosterBottom.m_btnUpLv.grayed = _comLvConsumeGold.m_txtNeed.text == "0" ? true : false; // UI_ComCostCurrency.ProxyEnd(); // _comFosterBottom.m_btnUpLv.GetChild("ani").asMovieClip.visible = false;// !_comFosterBottom.m_btnUpLv.grayed; _comFosterBottom.m_ctrlFullLv.selectedIndex = CardDataManager.isFullLv(_cardData.id, _cardData.lv, false) ? 1 : 0; if (isPreview == true) { return; } _comFosterBottom.m_listLvConsume.numItems = upgradeCardItemsArr.Length; } private void RenderListLvConsumeItem(int index, GObject obj) { UI_ComConsume listItem = UI_ComConsume.Proxy(obj); CardLvlCfg cardLvCfg = CardLvlCfgArray.Instance.GetCfgByrarityAndcardLvl(_cardData.itemCfg.rarity, _cardData.lv); ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(upgradeCardItemsArr[index]); listItem.m_loaItem.url = ResPathUtil.GetIconPath(itemCfg); listItem.m_txtNum.text = ItemDataManager.GetItemNum(itemCfg.id).ToString(); listItem.m_txtUseCount.text = "0"; listItem.target.data = index; if (listItem.m_btnMinus.data == null) { listItem.m_btnMinus.onTouchBegin.Add(OnClickItemConsumsBegin); listItem.m_btnMinus.onTouchEnd.Add(OnClickItemLvConsumsEnd); } if (listItem.m_loaBg.data == null) { listItem.m_loaBg.onTouchBegin.Add(OnClickItemConsumsBegin); listItem.m_loaBg.onTouchEnd.Add(OnClickItemLvConsumsEnd); // LongPressGesture longPressGesture = new LongPressGesture(listItem.m_loaBg); // longPressGesture.once = true; // LongPressGesture.TRIGGER = 1f; // longPressGesture.onAction.Add(OnClickItemLvConsumsEnd); // // longPressGesture.onEnd.Add(OnLongEnd); // _listLongPress.Add(longPressGesture); } listItem.m_btnMinus.data = 0; listItem.m_loaBg.data = 1; UI_ComConsume.ProxyEnd(); } private void OnClickItemConsumsBegin(EventContext context) { // GObject obj, int type GObject sender = context.sender as GObject; int type = (int)sender.data; GObject obj = sender.parent; UI_ComConsume listItem = UI_ComConsume.Proxy(obj); int index = (int)listItem.target.data; int itemId = upgradeCardItemsArr[index]; _consumeSelectItem = obj; _consumeSelectIndex = type; if (type == 1) { if (IsUpLvLimit()) return; if (ItemDataManager.GetItemNum(itemId) == 0) { object[] sourceDatas = new object[] { itemId, new object[] { ViewName.CARD_FOSTER_VIEW, _cardData } }; GoodsItemTipsController.ShowItemTips(itemId, sourceDatas); } } OnTimedEvent(null); Timers.inst.Add(0.3f, 0, OnTimedEvent); } private void OnTimedEvent(object param) { _selectTimeCount += _delay; if (_selectTimeCount >= 900)//大于900毫秒才算长按 { if (_consumeSelectIndex == 0) { UI_ComConsume listItem = UI_ComConsume.Proxy(_consumeSelectItem); if (!CommonUtil.Instance.CheckPointIsOnComponent(listItem.m_btnMinus, CommonUtil.Instance.GetMouseV2Point())) { Timers.inst.Remove(OnTimedEvent); return; } this.OnClickBtnMinus(_consumeSelectItem); } else { if (!CommonUtil.Instance.CheckPointIsOnComponent(_consumeSelectItem, CommonUtil.Instance.GetMouseV2Point()) || IsUpLvLimit()) { Timers.inst.Remove(OnTimedEvent); return; } this.OnClickBtnPlusLvConsume(_consumeSelectItem); } } } private void OnClickItemLvConsumsEnd() { Timers.inst.Remove(OnTimedEvent); _selectTimeCount = 0; if (_consumeSelectIndex == 0) { this.OnClickBtnMinus(_consumeSelectItem); } else { this.OnClickBtnPlusLvConsume(_consumeSelectItem); } } //返回值为此材料是否可继续消耗此材料继续升级 private bool OnClickBtnPlusLvConsume(GObject obj, bool showTips = true) { UI_ComConsume listItem = UI_ComConsume.Proxy(obj); int index = (int)listItem.target.data; int itemId = upgradeCardItemsArr[index]; if (itemsCount[index] == ItemDataManager.GetItemNum(itemId)) { Timers.inst.Remove(OnTimedEvent); return false; } int maxLv = CardRarityCfgArray.Instance.GetCfg(_cardData.itemCfg.rarity).maxCardLvl; int needExp = CardLvlCfgArray.Instance.GetCfgByrarityAndcardLvl(_cardData.itemCfg.rarity, _showLv).needExp; if (_showLv == maxLv && _comFosterBottom.m_barLv.value >= needExp) { Timers.inst.Remove(OnTimedEvent); if (showTips == true) { PromptController.Instance.ShowFloatTextPrompt("已达到最大等级"); } return false; } if (IsUpLvLimit(false)) return false; itemsCount[index] = itemsCount[index] + 1; listItem.m_txtUseCount.text = itemsCount[index].ToString(); this.UpdatePreView(); return true; } private void OnClickBtnMinus(GObject obj) { UI_ComConsume listItem = UI_ComConsume.Proxy(obj); int index = (int)listItem.target.data; if (itemsCount[index] == 0) { Timers.inst.Remove(OnTimedEvent); return; } itemsCount[index] = itemsCount[index] - 1; listItem.m_txtUseCount.text = itemsCount[index].ToString(); this.UpdatePreView(); } private void UpdatePreView() { int count = 0;//消耗金币数量 int hasExp = 0;//消耗材料提升的总经验 for (int i = 0; i < itemsCount.Count; i++) { if (itemsCount[i] == 0) continue; ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(upgradeCardItemsArr[i]); count += itemCfg.cardUpLvGoldsArr[_cardData.itemCfg.rarity - 1][1] * itemsCount[i]; hasExp += itemCfg.cardUpLvExp * itemsCount[i]; } _comLvConsumeGold = UI_ComCost.Proxy(_comFosterBottom.m_ComLvConsumeGold); _comLvConsumeGold.m_txtNeed.text = count.ToString(); UI_ComCost.ProxyEnd(); int previewLv = 0; int previewExp = 0; CardDataManager.GetPreViewLvAndExp(_cardData.id, _cardData.lv, _cardData.exp, hasExp, out previewLv, out previewExp); this.UpdateUpLvView(true, previewLv, previewExp); } private void OnClcikBtnAll() { for (int i = 0; i < itemsCount.Count; i++) { if (IsUpLvLimit()) break; long itemNum = ItemDataManager.GetItemNum(upgradeCardItemsArr[i]); for (long j = 0; j < itemNum; j++) { if (this.OnClickBtnPlusLvConsume(_comFosterBottom.m_listLvConsume.GetChildAt(i), false) == false) { break; } } } } private void OnClcikBtnClearAll() { this.ClearItemsCountList(); _comFosterBottom.m_listLvConsume.numItems = upgradeCardItemsArr.Length; this.UpdatePreView(); } private void OnClickBtnUpLv() { int itemMoneyId = ItemCfgArray.Instance.GetCfg(upgradeCardItemsArr[0]).cardUpLvGoldsArr[_cardData.itemCfg.rarity - 1][0]; _comLvConsumeGold = UI_ComCost.Proxy(_comFosterBottom.m_ComLvConsumeGold); int itemMoneyNum = int.Parse(_comLvConsumeGold.m_txtNeed.text); UI_ComCost.ProxyEnd(); if (itemMoneyNum == 0) { PromptController.Instance.ShowFloatTextPrompt("未选择升级材料"); return; } if (itemMoneyNum > ItemDataManager.GetItemNum(itemMoneyId)) { ItemUtil.AddGold(itemMoneyNum - ItemDataManager.GetItemNum(itemMoneyId), UpLv); } else { this.UpLv(); } } private async void UpLv() { // itemsCount.Clear(); int allConsume = 0; for (int i = 0; i < itemsCount.Count; i++) { allConsume += itemsCount[i]; } if (allConsume == 0) { PromptController.Instance.ShowFloatTextPrompt("未选中任何材料"); return; } if (CardDataManager.isFullLv(_cardData.id, _cardData.lv) == false) { int lv = _cardData.lv; bool result = await CardSProxy.UpgradeCardLvl(_cardData.id, itemsCount); if (result) { if (_showLv - lv >= 1) { // this._selectTab = _comFosterBottom.m_ctrlTab.selectedIndex; ViewManager.Show(ViewName.CARD_UP_VIEW, new object[] { _cardData.scores, "lv", lv, _showLv }, new object[] { ViewName.CARD_FOSTER_VIEW, _cardData }); } this.UpdateCommon(); this.UpdateUpLvView(); this.ClearItemsCountList(); LogServerHelper.SendPlayParticipationLog((int)PlayParticipationEnum.CI_PAI, 2); } } } private bool IsUpLvLimit(bool showTips = true) { int lvLimit = RoleLevelCfgArray.Instance.GetCfg(RoleDataManager.lvl).cardLeverLimit; if (_showLv >= lvLimit) { if (!showTips) return true; int roleLv = RoleDataManager.lvl; for (int i = roleLv + 1; i < RoleLevelCfgArray.Instance.dataArray.Length; i++) { int limit = RoleLevelCfgArray.Instance.GetCfg(i).cardLeverLimit; if (_showLv < limit) { roleLv = i; break; } } PromptController.Instance.ShowFloatTextPrompt(string.Format("角色等级达到{0}级", roleLv)); return true; } return false; } /***********************************************************升星***************************************************/ private void UpdateUpStarView() { CardStarCfg cardStarCfg = CardStarCfgArray.Instance.GetCfgBycardIdAndstarLvl(_cardData.id, _cardData.star); if (cardStarCfg == null) { ET.Log.Error("卡牌:" + _cardData.id + " 无" + _cardData.star + "星升星配置"); return; } if (CardDataManager.isFullStar(_cardData.id, _cardData.star, false)) { _comFosterBottom.m_ctrlFullStar.selectedIndex = 1; _comFosterBottom.m_listShowCard.data = _cardData.resources; _comFosterBottom.m_listShowCard.numItems = _cardData.resources.Count; return; } else { _comFosterBottom.m_ctrlFullStar.selectedIndex = 0; // List starCfgs = CardStarCfgArray.Instance.GetCfgsBycardId(_cardData.id); int index = 1; for (int i = 0; i < 4; i++) { UI_ComStarItem comStarItem = UI_ComStarItem.Proxy(_comFosterBottom.target.GetChild("comStarItem" + i)); string starDesc = ""; for (int j = 0; j < _cardData.itemCfg.starDescArr[i].Length; j++) { char str = _cardData.itemCfg.starDescArr[i][j]; starDesc += index <= _cardData.star ? StringUtil.GetColorText(str.ToString(), "#D07D40") : StringUtil.GetColorText(str.ToString(), "#716660"); index++; } comStarItem.m_txtContent.text = starDesc; UI_ComStarItem.ProxyEnd(); } _comFosterBottom.m_btnUpStar.data = 0;//data 0:可以升级,1:材料不足 ItemUtil.UpdateItemNeedNum(_comFosterBottom.m_comStarCousumeGold, cardStarCfg.costID, cardStarCfg.costNum); _comFosterBottom.m_listStarConsume.data = cardStarCfg; _comFosterBottom.m_listStarConsume.numItems = cardStarCfg.materiarsArr.Length; _comFosterBottom.m_txtTips.text = _cardData.lv < cardStarCfg.needLv ? string.Format("需等级达到{0}级", cardStarCfg.needLv) : ""; _comFosterBottom.m_btnUpStar.grayed = int.Parse(_comFosterBottom.m_btnUpStar.data.ToString()) == 1 ? true : false; // _comFosterBottom.m_btnUpStar.GetChild("ani").asMovieClip.visible = false;// !_comFosterBottom.m_btnUpStar.grayed; } } private void RenderListStarConsumeItem(int index, GObject obj) { UI_ComStarConsume listItem = UI_ComStarConsume.Proxy(obj); CardStarCfg cardStarCfg = listItem.target.parent.data as CardStarCfg; ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(cardStarCfg.materiarsArr[index][0]); listItem.m_loaItem.url = ResPathUtil.GetIconPath(itemCfg); int needCount = cardStarCfg.materiarsArr[index][1]; long hasCount = ItemDataManager.GetItemNum(cardStarCfg.materiarsArr[index][0]); listItem.m_txtNeedCount.text = needCount.ToString();// StringUtil.GetColorText(needCount.ToString(), hasCount < needCount ? "#D27869" : "#FDF3D7"); ; listItem.m_txtHasCount.text = StringUtil.GetColorText(hasCount.ToString(), hasCount < needCount ? "#D27869" : "#FDF3D7"); //; hasCount.ToString(); listItem.m_btnPlus.visible = false; if (listItem.target.data == null) { listItem.target.onClick.Add(() => OnClickBtnPlusStarConsum(index)); } // listItem.m_btnPlus.data = cardStarCfg.materiarsArr[index][0]; listItem.target.data = cardStarCfg.materiarsArr[index][0]; if (hasCount < needCount) { //材料不足显示加号 _comFosterBottom.m_btnUpStar.data = 1; listItem.m_btnPlus.visible = true; } } private void RenderListShowCardItem(int index, GObject obj) { GButton listItem = obj as GButton; GLoader loaStarCard = UI_ComStarCard.Proxy(listItem.GetChild("ComStarCard")).m_loaStarCard; // string res = (listItem.parent.data as List)[index]; if (index == _cardData.resIndex) { _comFosterBottom.m_listShowCard.selectedIndex = index; } loaStarCard.url = ResPathUtil.GetCardSmallPath(_cardData.resources[index]); listItem.data = index; } private async void OnClickShowCardListItem(EventContext context) { int resIndex = (int)(context.data as GObject).data; if (resIndex != _cardData.resIndex) { bool result = await CardSProxy.ChangeCardRes(_cardData.id, resIndex); if (result) { this.UpdateCommon(); this.UpdateCardRes(); } } } private void OnClickBtnPlusStarConsum(int index) { int itemId = int.Parse(UI_ComStarConsume.Proxy(_comFosterBottom.m_listStarConsume.GetChildAt(index)).target.data.ToString()); // ViewManager.Show(ViewName.APPROACH_OF_ITEM_VIEW, new object[] { itemId, new object[] { ViewName.CARD_FOSTER_VIEW, _cardData } }); object[] sourceDatas = new object[] { itemId, new object[] { ViewName.CARD_FOSTER_VIEW, _cardData } }; GoodsItemTipsController.ShowItemTips(itemId, sourceDatas); } private void OnClickBtnUpStar() { CardStarCfg cardStarCfg = CardStarCfgArray.Instance.GetCfgBycardIdAndstarLvl(_cardData.id, _cardData.star); if (_cardData.lv < cardStarCfg.needLv) { PromptController.Instance.ShowFloatTextPrompt("等级不足"); return; } if (CardDataManager.isFullStar(_cardData.id, _cardData.star) == true) { return; } int state = int.Parse(_comFosterBottom.m_btnUpStar.data.ToString()); if (state == 1) { PromptController.Instance.ShowFloatTextPrompt("材料不足"); return; } long costHas = ItemDataManager.GetItemNum(cardStarCfg.costID); int costNeed = cardStarCfg.costNum; if (costHas < costNeed) { ItemUtil.AddGold(costNeed - costHas, UpStar); } else { this.UpStar(); } } private async void UpStar() { CardStarCfg cardStarCfg = CardStarCfgArray.Instance.GetCfgBycardIdAndstarLvl(_cardData.id, _cardData.star); bool result = await CardSProxy.UpgradeCardStar(_cardData.id); if (result) { this.UpdateCommon(); this.UpdateUpStarView(); // this._selectTab = _comFosterBottom.m_ctrlTab.selectedIndex; ViewManager.Show(ViewName.CARD_UP_VIEW, new object[] { _cardData.scores, "star", _cardData.star - 1, _cardData.star }, new object[] { ViewName.CARD_FOSTER_VIEW, _cardData }); LogServerHelper.SendPlayParticipationLog((int)PlayParticipationEnum.CI_PAI, 2); UpdateRedDot(); } } /***********************************************************升技能***************************************************/ private void UpdateUpSkillView() { RedDotController.Instance.SetComRedDot(_ui.m_ComFosterBottom.m_btnSkill, RedDotDataManager.Instance.GetCardSkillsRed(_cardData.id)); _comFosterBottom.m_listSkill.numItems = PassivitySkillCfgArray.Instance.GetCfgsBycardId(_cardData.id).Count; _comFosterBottom.m_listSkill.selectedIndex = 0; _comFosterBottom.m_ctrlSkillCount.selectedIndex = _comFosterBottom.m_listSkill.numItems; } private void RenderListSkilItem(int index, GObject obj) { UI_ListSkillItem item = UI_ListSkillItem.Proxy(obj); PassivitySkillCfg skillCfg = PassivitySkillCfgArray.Instance.GetCfgsBycardId(_cardData.id)[index]; int skillLv = SkillDataManager.Instance.GetCardSkillLv(_cardData.id, skillCfg.skillId); CardData data = CardDataManager.GetCardDataById(InstanceZonesDataManager.currentCardId); item.m_comSkill.m_loaSkill.url = ResPathUtil.GetCardSmallPath(_cardData.resources[_cardData.resIndex]); item.m_txtName.text = skillCfg.name; item.m_txtLv.text = string.Format("{0}级", skillLv); PassivitySkillLvlCfg skillLvlCfg = PassivitySkillLvlCfgArray.Instance.GetCfgByskilllvlAndskillId(skillLv, skillCfg.skillId); // item.m_txtDesc.text = skillLvlCfg.describe; // item.m_btnUp.visible = PassivitySkillLvlCfgArray.Instance.GetCfgByskilllvlAndskillId(skillLv + 1, skillCfg.skillId) != null; RedDotController.Instance.SetComRedDot(item.target, RedDotDataManager.Instance.GetCardSkillRed(skillCfg.skillId), "", 9, -8); if (item.target.data == null) { item.target.onClick.Add(OnBtnUpSkill); } } private void OnBtnUpSkill() { List skillCfgs = PassivitySkillCfgArray.Instance.GetCfgsBycardId(_cardData.id); ViewManager.Show(new object[] { _cardData.id, skillCfgs[_comFosterBottom.m_listSkill.selectedIndex].skillId }); } private void OnClickLoaCard() { if (playAni) return; playAni = true; float scale = _ui.target.height / comCardImgResInitSize.y; if (!showCard) { _ui.m_loaListener1.visible = false; GTween.To(_ui.m_comImgCard.m_ComCardImgRes.target.size, comCardImgResInitSize * scale, 0.5f).SetTarget(_ui.m_comImgCard.m_ComCardImgRes).OnUpdate((GTweener t) => { _ui.m_comImgCard.m_ComCardImgRes.target.size = t.value.vec2; }); GTween.To(_ui.m_comImgCard.target.scrollPane.posX, ((comCardImgResInitSize * scale).x - _ui.target.width) / 2, 0.5f).SetTarget(_ui.m_comImgCard.target.scrollPane).OnUpdate((GTweener t) => { _ui.m_comImgCard.target.scrollPane.posX = t.value.x; }); _ui.m_t0.Play(() => { playAni = false; }); showCard = true; } else { // _ui.target.touchable = false; _ui.m_loaListener1.visible = true; GTween.To(_ui.m_comImgCard.m_ComCardImgRes.target.size, comCardImgResInitSize, 0.5f).SetTarget(_ui.m_comImgCard.m_ComCardImgRes).OnUpdate((GTweener t) => { _ui.m_comImgCard.m_ComCardImgRes.target.size = t.value.vec2; }); GTween.To(_ui.m_comImgCard.target.scrollPane.posX, (comCardImgResInitSize.x - _ui.target.width) / 2, 0.5f).SetTarget(_ui.m_comImgCard.target.scrollPane).OnUpdate((GTweener t) => { _ui.m_comImgCard.target.scrollPane.posX = t.value.x; }); _ui.m_t1.Play(() => { playAni = false; // _ui.target.touchable = true; }); showCard = false; } } private void OnClickComCard() { if (playAni) return; playAni = true; if (showCard) { _ui.m_loaListener.visible = true; _ui.m_comCard.target.scrollPane.SetPercX(0.5f, true); float scale = _ui.m_comCard.target.scaleX; _ui.m_t1.SetValue("scale", scale, scale); _ui.m_t1.SetValue("normal", _cardScale, _cardScale); _ui.m_t1.Play(() => { playAni = false; }); showCard = false; } else { _ui.m_loaListener.visible = false; float scale = _ui.target.height / 1920; _ui.m_comCard.target.scrollPane.viewWidth = 1080 / scale; _ui.m_comCard.target.scrollPane.SetPercX(0.5f, true); _ui.m_t0.SetValue("scale", scale, scale); _ui.m_t0.SetValue("normal", _cardScale, _cardScale); _ui.m_t0.Play(() => { playAni = false; }); showCard = true; } } private void OnClickBtnStroy() { ViewManager.Show(ViewName.CARD_STORY_VIEW, _cardData); } private void OnChangeCtrlTab() { // _comLvConsumeGold = UI_ComCostCurrency.Proxy(_comFosterBottom.m_ComLvConsumeGold); this.UpdateCommon(); if (_comFosterBottom.m_ctrlTab.selectedIndex == 0) { this.ClearItemsCountList(); this.UpdateUpLvView(); } else if (_comFosterBottom.m_ctrlTab.selectedIndex == 1) { this.UpdateUpStarView(); } else { this.UpdateUpSkillView(); } this._selectTab = _comFosterBottom.m_ctrlTab.selectedIndex; } private void UpdateItemChange() { _ui.m_ComFosterBottom.m_listLvConsume.numItems = _ui.m_ComFosterBottom.m_listLvConsume.numItems; this.UpdateUpStarView(); this.UpdateUpSkillView(); } private void OnBtnStarRewardClick() { ViewManager.Show(_cardData); } private void OnClickBtnBack() { ViewManager.GoBackFrom(ViewName.CARD_FOSTER_VIEW); this._selectTab = 0; } private void UpdateRedDot() { RedDotController.Instance.SetComRedDot(_ui.m_ComFosterTop.m_btnStarReward, RedDotDataManager.Instance.GetCardStarReward(_cardData.id)); } protected override void OnHide() { base.OnHide(); Timers.inst.Remove(CheckGuide); Timers.inst.Remove(OnTimedEvent); UI_ComCostCurrency.ProxyEnd(); UI_ComCostCurrencyWithHas.ProxyEnd(); // _comFosterBottom.m_listLvConsume.numItems = 0; _valueBarController.OnHide(); } protected override void RemoveEventListener() { base.RemoveEventListener(); EventAgent.RemoveEventListener(ConstMessage.NUMERIC_CHANGE, UpdateUpStarView); // EventAgent.RemoveEventListener(ConstMessage.ITEM_CHANGED, OnItemChangeListener); EventAgent.RemoveEventListener(ConstMessage.ITEM_CHANGED, UpdateItemChange); EventAgent.RemoveEventListener(ConstMessage.CARD_UP_SKILL, UpdateUpSkillView); EventAgent.RemoveEventListener(ConstMessage.CARD_STAR_REWARD, UpdateRedDot); } private void CheckGuide(object param) { if (GuideDataManager.IsGuideFinish(ConstGuideId.UP_CARD_LV) <= 0) { UpdateToCheckGuide(null); } else { Timers.inst.Remove(CheckGuide); } _ui.m_loaGuide.visible = false; } protected override void UpdateToCheckGuide(object param) { if (!ViewManager.CheckIsTopView(this.viewCom)) return; GuideController.TryGuide(_ui.m_ComFosterBottom.m_listLvConsume, ConstGuideId.UP_CARD_LV, 4, "长按材料图标,可持续给词牌增加经验。", 0); GuideController.TryCompleteGuide(ConstGuideId.UP_CARD_LV, 4); } } }