using System.Collections; using System.Collections.Generic; using ET; using FairyGUI; using UI.ClothingFoster; using UI.CommonGame; namespace GFGGame { public class ClothingFosterView : BaseWindow { private UI_ClothingFosterUI _ui; private SuitFosterCfg cfg; private ItemCfg cardItemCfg; private int _suitId; private int _index; private SortedList _propertyList; // private Dictionary _addPropertyList; private bool _canFoster; public override void Dispose() { if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_ClothingFosterUI.PACKAGE_NAME; _ui = UI_ClothingFosterUI.Create(); this.viewCom = _ui.target; this.viewCom.Center(); this.modal = true; // viewAnimationType = EnumViewAnimationType.ZOOM_CENTER; _ui.m_listMaterials.itemRenderer = ListMaterialItemRender; _ui.m_listMaterials.onClickItem.Add(OnListMaterialsItem); _ui.m_listPropertyAdd.itemRenderer = ListPropertyItemRender; _ui.m_btnFoster.onClick.Add(OnClickBtnFoster); } protected override void AddEventListener() { base.AddEventListener(); EventAgent.AddEventListener(ConstMessage.JUMP_TO_SOURCE, this.Hide); } protected override void OnShown() { base.OnShown(); _suitId = (int)(this.viewData as object[])[0]; _index = (int)(this.viewData as object[])[1]; _propertyList = (this.viewData as object[])[2] as SortedList; // _addPropertyList = SuitFosterDataManager.Instance.GetAdditionPropertyData(_suitId, _index); _canFoster = true; cfg = SuitFosterCfgArray.Instance.GetCfgsBysuitId(_suitId)[_index]; List itemCfgs = ItemCfgArray.Instance.GetCfgsBysuitId(_suitId); for (int i = 0; i < itemCfgs.Count; i++) { if (itemCfgs[i].itemType == ConstItemType.CARD) { cardItemCfg = itemCfgs[i]; break; } } _ui.m_txtLock.text = cardItemCfg == null || cfg.cardStar == 0 ? "" : string.Format("词牌【{0}】达到{1}星可养护", cardItemCfg.name, cfg.cardStar / 5); _ui.m_txtLock.visible = cardItemCfg != null && cfg.cardStar > 0; _ui.m_listMaterials.numItems = cfg.materialsArr.Length; long has = ItemDataManager.GetItemNum(cfg.costId); int need = cfg.costNum; ItemUtil.UpdateItemNeedNum(_ui.m_ComConsume, cfg.costId, cfg.costNum); if (_canFoster && has < need) _canFoster = false; _ui.m_txtDiscribe.text = string.Format("完成套装{0}", SuitFosterDataManager.Instance.stepNames[_index]); _ui.m_listPropertyAdd.numItems = _propertyList.Count; } protected override void OnHide() { base.OnHide(); } protected override void RemoveEventListener() { base.RemoveEventListener(); EventAgent.RemoveEventListener(ConstMessage.JUMP_TO_SOURCE, this.Hide); } private void ListMaterialItemRender(int index, GObject obj) { UI_ListMaterialsItem item = UI_ListMaterialsItem.Proxy(obj); int[][] materialsArr = SuitFosterCfgArray.Instance.GetCfgsBysuitId(_suitId)[_index].materialsArr; ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(materialsArr[index][0]); item.m_loaIcon.url = ResPathUtil.GetIconPath(itemCfg); long has = ItemDataManager.GetItemNum(itemCfg.id); item.m_txtHas.text = has.ToString(); int need = materialsArr[index][1]; item.m_txtNeed.text = need.ToString(); item.m_txtHas.text = StringUtil.GetColorText(has.ToString(), has >= need ? "#F2DB96" : "#C9F1A5"); if (_canFoster && has < need) _canFoster = false; item.target.data = materialsArr[index]; UI_ListMaterialsItem.ProxyEnd(); } private void OnListMaterialsItem(EventContext context) { int[] itemData = (int[])(context.data as GComponent).data; //ViewManager.Show(new object[] { itemData[0], new object[] { typeof(ClothingView).FullName, (this.viewData as object[])[4] }, itemData[1] }); object[] sourceDatas = new object[] { itemData[0], new object[] { typeof(ClothingView).FullName, (this.viewData as object[])[3] }, itemData[1] }; GoodsItemTipsController.ShowItemTips(itemData[0], sourceDatas); } private void ListPropertyItemRender(int index, GObject obj) { UI_ListPropertyAddItem item = UI_ListPropertyAddItem.Proxy(obj); UI_ListScoreItem comProperty = UI_ListScoreItem.Proxy(item.m_comProperty); int score = (int)_propertyList.GetKey(index); comProperty.m_txtProperty.text = _propertyList[score].ToString(); comProperty.m_loaIcon.url = ResPathUtil.GetCommonGameResPath("kp_sx_" + (score)); // double addition = _addPropertyList[score] * 100 / 10000; double addition = cfg.addition * 100 / 10000; item.m_txtAdd.text = string.Format("+{0}%", addition); UI_ListPropertyAddItem.ProxyEnd(); UI_ListScoreItem.ProxyEnd(); } private async void OnClickBtnFoster() { if (cfg.cardStar > 0) { CardData cardData = CardDataManager.GetCardDataById(cardItemCfg.id); if (cardData == null) { PromptController.Instance.ShowFloatTextPrompt(string.Format("暂未获得词牌【{0}】", cardItemCfg.name)); return; } if (cardData.star < cfg.cardStar) { PromptController.Instance.ShowFloatTextPrompt(string.Format("词牌【{0}】星级不足", cardItemCfg.name)); return; } } if (!ItemUtil.CheckItemEnough(cfg.costId, cfg.costNum)) { long has = ItemDataManager.GetItemNum(cfg.costId); ItemUtil.BuyCurrency(cfg.costId, cfg.costNum - has); return; } for (int i = 0; i < cfg.materialsArr.Length; i++) { if (!ItemUtil.CheckItemEnough(cfg.materialsArr[i][0], cfg.materialsArr[i][1], true)) { object[] sourceDatas = new object[] { cfg.materialsArr[i][0], new object[] { typeof(ClothingView).FullName, (this.viewData as object[])[3] }, cfg.materialsArr[i][1] }; GoodsItemTipsController.ShowItemTips(cfg.materialsArr[i][0], sourceDatas); return; } } int result = await SuitFosterProxy.SendMaintainSuit(_suitId, _index + 1); if (result == ErrorCode.ERR_Success) { LogServerHelper.SendPlayParticipationLog((int)PlayParticipationEnum.FU_ZHUANG_YANG_CHENG, 2); this.Hide(); } } } }