| | |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using Cysharp.Threading.Tasks; |
| | | using UnityEngine; |
| | | using UnityEngine.UI; |
| | | |
| | | |
| | | /// <summary> |
| | | /// 武将培养界面 |
| | | /// 武将培养界面 |
| | | /// functionOrder 0 代表培养 1 代表突破 |
| | | /// 暂时不做一级界面区分,待时装界面分析处理,目前突破也在这个界面 |
| | | /// </summary> |
| | | public class HeroTrainWin : UIBase |
| | | { |
| | | [SerializeField] RawImage bgTexture; |
| | | [SerializeField] Button showFuncBtn; //只显示立绘时点击,显示功能 |
| | | [SerializeField] Transform funcForm; |
| | | [SerializeField] UIHeroController roleLhModel; //展示英雄立绘 |
| | |
| | | [SerializeField] HeroConnectionCell connetionForm; //羁绊 |
| | | [SerializeField] Button resetBtn; |
| | | [SerializeField] Button deleteBtn; |
| | | [SerializeField] Transform deleteTip; |
| | | [SerializeField] Button seeLhBtn; //查看立绘 |
| | | [SerializeField] SkillBaseCell normalSkillCell; |
| | | [SerializeField] SkillBaseCell angerSkillCell; |
| | |
| | | [SerializeField] Text awakeLVText; |
| | | |
| | | //属性区 |
| | | [SerializeField] ScrollRect allAttrScroll; |
| | | [SerializeField] Button attrBtn; |
| | | [SerializeField] ScrollRect allAttrScroll; //培养属性 滚动区 |
| | | [SerializeField] Button attrBtn; //培养区的拖拉按钮 |
| | | [SerializeField] Image unfoldImg; //展开时按钮的图标 |
| | | [SerializeField] Image foldImg; //收起时按钮的图标 |
| | | bool unfoldState = false;//是否展开 |
| | |
| | | [SerializeField] Text[] inheritAttrText; //武将会继承的属性 |
| | | [SerializeField] RichText heroAddPerText; //主公(上阵)加成描述 |
| | | [SerializeField] Text[] heroAddAttrPerText; //主公(上阵)加成 |
| | | [SerializeField] Text[] addPerText; //增加百分比(飘动) |
| | | [SerializeField] PositionTween addPerObject; |
| | | [SerializeField] Transform addPerParent; |
| | | [SerializeField] HeroTrainAddAttrCell addPerObject; |
| | | [SerializeField] Image lvupMoneyIcon; |
| | | [SerializeField] Text lvupMoneyText; |
| | | [SerializeField] Text lvupBtnText; |
| | |
| | | [SerializeField] Text starUPBtnText; |
| | | [SerializeField] Button washBtn; |
| | | |
| | | //冻结处理 |
| | | [SerializeField] Button freezeTipBtn; |
| | | [SerializeField] GameObject freezeTipGo; |
| | | [SerializeField] Text freezeStarText; |
| | | [SerializeField] Text freezeAawkeLVText; |
| | | [SerializeField] List<Image> starImgFreezeList; |
| | | |
| | | //伪红点用图片代替 |
| | | [SerializeField] Image redpointAwake; |
| | | [SerializeField] Image redpointGift; |
| | | [SerializeField] Image redpointLVUP; |
| | | [SerializeField] Image redpointBreakLVUP; //突破红点 |
| | | |
| | | |
| | | |
| | | #region 突破 |
| | | // 区分突破和培养模块 |
| | | [SerializeField] HeroLVBreakCell heroLVBreakCell; //对应培养的 allAttrScroll 和 attrBtn |
| | | |
| | | [SerializeField] GroupButtonEx trainMainButton; //培养入口按钮 |
| | | [SerializeField] GroupButtonEx breakMainButton; //突破入口按钮 |
| | | //入口伪红点用图片代替 |
| | | [SerializeField] Image trainMainRedImg; |
| | | [SerializeField] Image breakMainRedImg; |
| | | #endregion |
| | | |
| | | |
| | | Queue<HeroTrainAddAttrCell> lvupAttrQueue = new Queue<HeroTrainAddAttrCell>(); |
| | | |
| | | string guid; |
| | | HeroInfo hero; |
| | |
| | | }); |
| | | |
| | | lockBtn.AddListener(() => { hero.ChangeLockState(); }); |
| | | resetBtn.AddListener(ResetBtnClick); |
| | | resetBtn.AddListener(() => |
| | | { |
| | | HeroUIManager.Instance.ResetBtnClick(hero); |
| | | }); |
| | | deleteBtn.AddListener(DeleteHero); |
| | | awakeBtn.AddListener(() => |
| | | { |
| | | if (!FuncOpen.Instance.IsFuncOpen(38, true)) |
| | | { |
| | | return; |
| | | } |
| | | HeroUIManager.Instance.selectAwakeHeroGuid = guid; |
| | | UIManager.Instance.OpenWindow<HeroAwakeWin>(); |
| | | }); |
| | |
| | | |
| | | allAttrBtn.AddListener(() => |
| | | { |
| | | UIManager.Instance.OpenWindow<HeroAllAttrWin>(hero.itemHero.gridIndex); |
| | | if (hero == null) |
| | | return; |
| | | var dict = FightPowerManager.Instance.GetHeroTotalAttr(hero); |
| | | AttributeManager.Instance.OpenTotalAttributeWin(dict, hero.itemHero.gridIndex); |
| | | }); |
| | | lvupBtn.AddListener(LVUp); |
| | | lvupBtn.onPress.AddListener(LVUp); |
| | |
| | | |
| | | potentialCellList = new List<GameObject>(); |
| | | awakeCellList = new List<GameObject>(); |
| | | |
| | | freezeTipBtn.AddListener(() => |
| | | { |
| | | freezeTipGo.SetActive(!freezeTipGo.activeSelf); |
| | | }); |
| | | |
| | | trainMainButton.AddListener(() => |
| | | { |
| | | functionOrder = 0; |
| | | DisplayTrainOrBreak(hero); |
| | | ForceRefreshLayout(); |
| | | }); |
| | | |
| | | breakMainButton.AddListener(() => |
| | | { |
| | | functionOrder = 1; |
| | | DisplayTrainOrBreak(hero); |
| | | unfoldState = false; |
| | | RefreshFoldState(); |
| | | }); |
| | | } |
| | | |
| | | |
| | |
| | | PackManager.Instance.RefreshItemLockEvent += RefreshItemLockEvent; |
| | | HeroManager.Instance.onHeroChangeEvent += RefreshHeroEvent; |
| | | UIManager.Instance.OnCloseWindow += OnCloseWindow; |
| | | HeroUIManager.Instance.OnTeamPosChangeEvent += TeamPosChangeEvent; |
| | | TeamManager.Instance.OnTeamChange += TeamPosChangeEvent; |
| | | PackManager.Instance.RefreshItemEvent += RefreshItemEvent; |
| | | |
| | | guid = HeroUIManager.Instance.selectHeroGuid; |
| | | hero = HeroManager.Instance.GetHero(guid); |
| | | unfoldState = false; |
| | |
| | | Display(); |
| | | } |
| | | |
| | | |
| | | protected override void OnPreClose() |
| | | { |
| | | PackManager.Instance.RefreshItemLockEvent -= RefreshItemLockEvent; |
| | | HeroManager.Instance.onHeroChangeEvent -= RefreshHeroEvent; |
| | | UIManager.Instance.OnCloseWindow -= OnCloseWindow; |
| | | HeroUIManager.Instance.OnTeamPosChangeEvent -= TeamPosChangeEvent; |
| | | TeamManager.Instance.OnTeamChange -= TeamPosChangeEvent; |
| | | PackManager.Instance.RefreshItemEvent -= RefreshItemEvent; |
| | | } |
| | | |
| | | private void OnCloseWindow(UIBase closeUI) |
| | |
| | | |
| | | public void Display() |
| | | { |
| | | bgTexture.SetTexture2D("countryBG" + hero.heroConfig.Country); |
| | | roleLhModel.Create(hero.SkinID, 1, motionName: "", isLh: true); |
| | | roleXsModel.Create(hero.SkinID); |
| | | roleXsModel.Create(hero.SkinID, 1); |
| | | jobImg.SetSprite(HeroUIManager.Instance.GetJobIconName(hero.heroConfig.Class)); |
| | | jobPosNameText.text = HeroUIManager.Instance.GetJobName(hero.heroConfig.Class); |
| | | descText.text = hero.heroConfig.Desc; |
| | | fightPowerText.text = UIHelper.ReplaceLargeArtNum(hero.CalculatePower()); |
| | | PlayerMainDate.Instance.AddPowerNotOnTeam(hero); |
| | | fightPowerText.text = UIHelper.ReplaceLargeArtNum(hero.CalculateFightPower()); |
| | | // PlayerMainDate.Instance.AddPowerNotOnTeam(hero); |
| | | lockImg.SetActive(hero.isLock); |
| | | unLockImg.SetActive(!hero.isLock); |
| | | nameText.text = hero.breakLevel == 0 ? hero.heroConfig.Name : Language.Get("herocardbreaklv", hero.heroConfig.Name, hero.breakLevel); |
| | | |
| | | RefreshConn(); |
| | | normalSkillCell.Init(hero.heroConfig.AtkSkillID, () => |
| | |
| | | RefreshFetter(); |
| | | RefreshGift(); |
| | | RefreshAwake(); |
| | | RefreshFreeze(); |
| | | RefreshRedImg(); |
| | | DisplayTrainOrBreak(hero); |
| | | ShowDeleteTip(); |
| | | |
| | | HeroUIManager.Instance.RemoveNewHero(hero.heroId); |
| | | ForceRefreshLayout(); |
| | | } |
| | | |
| | | |
| | | void ShowDeleteTip() |
| | | { |
| | | deleteTip.SetActive(false); |
| | | if (hero != null && hero.Quality == 1 && HeroUIManager.Instance.IsTheSameHeroFullStar(hero.heroId)) |
| | | { |
| | | |
| | | deleteTip.SetActive(true); |
| | | } |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 强制刷新Layout,解决嵌套Layout和ContentSizeFitter的重叠问题 |
| | | /// </summary> |
| | | async UniTask ForceRefreshLayout() |
| | | { |
| | | await UniTask.DelayFrame(2); |
| | | // 刷新所有Layout组件 |
| | | var layouts = allAttrScroll.GetComponentsInChildren<LayoutGroup>(true); |
| | | foreach (var layout in layouts) |
| | | { |
| | | LayoutRebuilder.ForceRebuildLayoutImmediate(layout.GetComponent<RectTransform>()); |
| | | } |
| | | await UniTask.DelayFrame(2); |
| | | // 刷新所有Layout组件 |
| | | foreach (var layout in layouts) |
| | | { |
| | | LayoutRebuilder.ForceRebuildLayoutImmediate(layout.GetComponent<RectTransform>()); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | void RefreshItemLockEvent(PackType type, string guid, bool lockState) |
| | | { |
| | |
| | | return; |
| | | lockImg.SetActive(hero.isLock); |
| | | unLockImg.SetActive(!hero.isLock); |
| | | } |
| | | |
| | | void RefreshItemEvent(PackType type, int index, int itemID) |
| | | { |
| | | if (type != PackType.Item) |
| | | return; |
| | | if (itemID != 7 && itemID != 8) |
| | | { |
| | | return; |
| | | } |
| | | RefreshAttr(); |
| | | } |
| | | |
| | | void RefreshHeroEvent(HeroInfo hero) |
| | |
| | | Display(); |
| | | } |
| | | |
| | | void ResetBtnClick() |
| | | { |
| | | //升级、突破、觉醒 |
| | | if (hero.heroLevel == 1 && hero.breakLevel == 0 && hero.awakeLevel == 0) |
| | | { |
| | | SysNotifyMgr.Instance.ShowTip("HeroCanNotReset"); |
| | | return; |
| | | } |
| | | |
| | | List<Item> items = new List<Item>(); |
| | | |
| | | |
| | | var payBack1 = CommonFunc.AddDict(HeroUIManager.Instance.GetHeroLVPayBack(hero.Quality, hero.heroLevel), |
| | | HeroUIManager.Instance.GetHeroBreakPayBack(hero.Quality, hero.breakLevel)); |
| | | |
| | | //已觉醒的需要消耗货币 |
| | | if (hero.awakeLevel == 0) |
| | | { |
| | | items = CommonFunc.ChangeToItemList(payBack1); |
| | | ConfirmCancel.ShowItemsConfirm(items, Language.Get("herocard42"), Language.Get("herocard43"), (bool isOk) => |
| | | { |
| | | if (isOk) |
| | | { |
| | | //发包 |
| | | SendReborn(hero.itemHero.gridIndex); |
| | | } |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | |
| | | if (HeroUIManager.Instance.awakeRebirthCnt >= HeroUIManager.Instance.rebornAwakeHeroMaxCount) |
| | | { |
| | | SysNotifyMgr.Instance.ShowTip("HeroRebornAwakeMax"); |
| | | return; |
| | | } |
| | | |
| | | payBack1 = CommonFunc.AddDict(payBack1, HeroUIManager.Instance.GetHeroQualityAwakePayBack(hero.Quality, hero.awakeLevel)); |
| | | items = CommonFunc.ChangeToItemList(payBack1); |
| | | var info2 = Language.Get("herocard44", HeroUIManager.Instance.awakeRebirthCnt); |
| | | var payBackMoney = HeroQualityAwakeConfig.GetQualityAwakeConfig(hero.Quality, hero.awakeLevel).RebirthCostMoney; |
| | | ConfirmCancel.ShowItemsConfirm(items, Language.Get("herocard42"), Language.Get("herocard43"), (bool isOk) => |
| | | { |
| | | if (isOk) |
| | | { |
| | | if (UIHelper.GetMoneyCnt(HeroUIManager.Instance.payBackMoneyType) < payBackMoney) |
| | | { |
| | | ItemTipUtility.ShowMoneyTip(HeroUIManager.Instance.payBackMoneyType); |
| | | return; |
| | | } |
| | | //发包 |
| | | SendReborn(hero.itemHero.gridIndex); |
| | | } |
| | | }, info2, "", payBackMoney, HeroUIManager.Instance.payBackMoneyType); |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | void SendReborn(int index) |
| | | { |
| | | var pack = new CB239_tagCSHeroRebirth(); |
| | | pack.ItemIndex = (ushort)index; |
| | | GameNetSystem.Instance.SendInfo(pack); |
| | | |
| | | HeroUIManager.Instance.lastFightPower = new KeyValuePair<string, long>(hero.itemHero.guid, hero.CalculatePower(false)); |
| | | |
| | | } |
| | | |
| | | void DeleteHero() |
| | | { |
| | |
| | | // SysNotifyMgr.Instance.ShowTip("UnlockHero"); |
| | | // return; |
| | | // } |
| | | |
| | | if (CanDelete()) |
| | | { |
| | | HeroUIManager.Instance.jumpDeleteHeroGuid = guid; |
| | | } |
| | | else |
| | | { |
| | | HeroUIManager.Instance.jumpDeleteHeroGuid = ""; |
| | | } |
| | | UIManager.Instance.OpenWindow<HeroDeleteWin>(); |
| | | } |
| | | |
| | | |
| | | bool CanDelete() |
| | | { |
| | | if (hero.isActive) |
| | | return false; |
| | | |
| | | return HeroUIManager.Instance.IsTheSameHeroFullStar(hero.heroId); |
| | | } |
| | | |
| | | void RefreshStars() |
| | |
| | | { |
| | | RefreshStars(); |
| | | nameText.text = hero.breakLevel == 0 ? hero.heroConfig.Name : Language.Get("herocardbreaklv", hero.heroConfig.Name, hero.breakLevel); |
| | | |
| | | nameText.color = UIHelper.GetUIColorByFunc(hero.Quality); |
| | | |
| | | if (hero.Quality >= 4) |
| | |
| | | inheritAttrText[2].text = PlayerPropertyConfig.GetFullDescription(new Int2(PlayerPropertyConfig.inheritAttrs[2], hero.heroConfig.HPInheritPer)); |
| | | |
| | | //上阵属性 |
| | | int valuePer = hero.GetOnBattleAddPer(); |
| | | int valuePer = hero.GetAddPer(); |
| | | for (int i = 0; i < heroAddAttrPerText.Length; i++) |
| | | { |
| | | heroAddAttrPerText[i].text = PlayerPropertyConfig.GetFullDescription(new Int2(PlayerPropertyConfig.basePerAttrs[i], valuePer)); |
| | |
| | | if (!HeroUIManager.Instance.IsLVMax(hero)) |
| | | { |
| | | lvupBtnText.text = Language.Get("L1109"); |
| | | lvupMoneyIcon.SetActive(true); |
| | | lvupMoneyText.SetActive(true); |
| | | |
| | | if (HeroUIManager.Instance.IsLVMaxByBreakLevel(hero)) |
| | | // if (HeroUIManager.Instance.IsLVMaxByBreakLevel(hero)) |
| | | // { |
| | | // lvupBtnText.text = Language.Get("L1111"); |
| | | // var breakConfig = HeroQualityBreakConfig.GetQualityBreakConfig(hero.Quality, hero.breakLevel); |
| | | // lvupMoneyIcon.SetOrgSprite(ItemConfig.Get(breakConfig.UPCostItemList[0][0]).IconKey); |
| | | // lvupMoneyText.text = UIHelper.ShowUseItem(PackType.Item, breakConfig.UPCostItemList[0][0], breakConfig.UPCostItemList[0][1]); |
| | | // } |
| | | // else |
| | | { |
| | | lvupBtnText.text = Language.Get("L1111"); |
| | | var breakConfig = HeroQualityBreakConfig.GetQualityBreakConfig(hero.Quality, hero.breakLevel); |
| | | lvupMoneyIcon.SetOrgSprite(ItemConfig.Get(breakConfig.UPCostItem[0]).IconKey); |
| | | lvupMoneyText.text = UIHelper.ShowUseItem(PackType.Item, breakConfig.UPCostItem[0], breakConfig.UPCostItem[1], TextColType.NavyBrown); |
| | | } |
| | | else |
| | | { |
| | | lvupBtnText.text = Language.Get("L1109"); |
| | | // lvupBtnText.text = Language.Get("L1109"); |
| | | var lvupConfig = HeroQualityLVConfig.GetQualityLVConfig(hero.Quality, hero.heroLevel); |
| | | lvupMoneyIcon.SetOrgSprite(ItemConfig.Get(lvupConfig.UPCostItem[0]).IconKey); |
| | | lvupMoneyText.text = UIHelper.ShowUseItem(PackType.Item, lvupConfig.UPCostItem[0], lvupConfig.UPCostItem[1], TextColType.NavyBrown); |
| | | lvupMoneyText.text = UIHelper.ShowUseItem(PackType.Item, lvupConfig.UPCostItem[0], lvupConfig.UPCostItem[1]); |
| | | } |
| | | lvupBtn.SetInteractable(true); |
| | | |
| | |
| | | { |
| | | lvupBtnText.text = Language.Get("L1110"); |
| | | lvupBtn.SetInteractable(false); |
| | | lvupMoneyIcon.SetActive(false); |
| | | lvupMoneyText.SetActive(false); |
| | | |
| | | } |
| | | } |
| | |
| | | { |
| | | int itemID = 0; |
| | | long needCount = 0; |
| | | if (HeroUIManager.Instance.IsLVMaxByBreakLevel(hero)) |
| | | { |
| | | //突破 |
| | | if (!UIManager.Instance.IsOpened<HeroLVBreakWin>()) |
| | | { |
| | | HeroUIManager.Instance.selectHeroGuid = guid; |
| | | UIManager.Instance.OpenWindow<HeroLVBreakWin>(); |
| | | } |
| | | } |
| | | else |
| | | // if (HeroUIManager.Instance.IsLVMaxByBreakLevel(hero)) |
| | | // { |
| | | // //突破 |
| | | // if (!UIManager.Instance.IsOpened<HeroLVBreakWin>()) |
| | | // { |
| | | // HeroUIManager.Instance.selectHeroGuid = guid; |
| | | // UIManager.Instance.OpenWindow<HeroLVBreakWin>(); |
| | | // } |
| | | // } |
| | | // else |
| | | { |
| | | //升级 |
| | | var lvupConfig = HeroQualityLVConfig.GetQualityLVConfig(hero.Quality, hero.heroLevel); |
| | |
| | | GameNetSystem.Instance.SendInfo(pack); |
| | | //预显示 |
| | | lvupEffect.Play(); |
| | | addPerObject.SetActive(true); |
| | | for (int i = 0; i < addPerText.Length; i++) |
| | | var cell = RequestCell(); |
| | | cell.transform.localPosition = new Vector3(0, 0, 0); |
| | | cell.Display(hero, () => |
| | | { |
| | | addPerText[i].text = "+" + PlayerPropertyConfig.GetValueDescription(PlayerPropertyConfig.basePerAttrs[i], hero.qualityConfig.LVAddPer); |
| | | } |
| | | addPerObject.Play(() => |
| | | { |
| | | addPerObject.SetActive(false); |
| | | cell.SetActive(false); |
| | | ReturnCell(cell); |
| | | }); |
| | | HeroUIManager.Instance.lastFightPower = new KeyValuePair<string, long>(hero.itemHero.guid, hero.CalculatePower(false)); |
| | | |
| | | HeroUIManager.Instance.lastFightPower = new KeyValuePair<string, long>(hero.itemHero.guid, hero.CalculateFightPower(false)); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | HeroTrainAddAttrCell RequestCell() |
| | | { |
| | | |
| | | if (lvupAttrQueue.Count == 0) |
| | | { |
| | | return Instantiate(addPerObject, addPerParent); |
| | | } |
| | | return lvupAttrQueue.Dequeue(); |
| | | } |
| | | |
| | | |
| | | void ReturnCell(HeroTrainAddAttrCell cell) |
| | | { |
| | | lvupAttrQueue.Enqueue(cell); |
| | | } |
| | | |
| | | |
| | | void RefreshAllPotential() |
| | | { |
| | |
| | | if (nextQualityBreakConfig.AttrIDList[j] == 0) |
| | | continue; |
| | | string format = i < hero.breakLevel ? "{0}" + UIHelper.AppendColor(TextColType.Green, "+{1}") : "{0}+{1}"; |
| | | attrStrArr.Add(PlayerPropertyConfig.GetFullDescription(nextQualityBreakConfig.AttrIDList[j], nextQualityBreakConfig.AttrValueList[j], format)); |
| | | attrStrArr.Add((string.IsNullOrEmpty(nextQualityBreakConfig.SkillIName) ? string.Empty : Language.Get("L1039", nextQualityBreakConfig.SkillIName)) + |
| | | PlayerPropertyConfig.GetFullDescription(nextQualityBreakConfig.AttrIDList[j], nextQualityBreakConfig.AttrValueList[j], format)); |
| | | } |
| | | |
| | | if (nextQualityBreakConfig.SkillID != 0) |
| | |
| | | var skill = SkillConfig.Get(nextQualityBreakConfig.SkillID); |
| | | if (skill != null) |
| | | { |
| | | attrStrArr.Add(Language.Get("equipQualityFormat", skill.SkillName) + skill.Description); |
| | | attrStrArr.Add(Language.Get("L1039", skill.SkillName) + skill.Description); |
| | | } |
| | | else |
| | | { |
| | |
| | | if (i < hero.breakLevel) |
| | | { |
| | | nameText.text = Language.Get("herocard63", i + 1); |
| | | descText.text = string.Join(Language.Get("L1112"), attrStrArr); |
| | | descText.text = string.Join("\n", attrStrArr); |
| | | } |
| | | else |
| | | { |
| | | //置灰 |
| | | nameText.text = UIHelper.AppendColor(TextColType.NavyGray, Language.Get("herocard63", i + 1)); |
| | | descText.text = UIHelper.AppendColor(TextColType.NavyGray, UIHelper.RemoveColor(string.Join(Language.Get("L1112"), attrStrArr))); |
| | | descText.text = UIHelper.AppendColor(TextColType.NavyGray, UIHelper.RemoveColor(string.Join("\n", attrStrArr))); |
| | | } |
| | | } |
| | | |
| | |
| | | else if (type == 2) |
| | | { |
| | | var skill = SkillConfig.Get(config.SkillID); |
| | | awakeStr = Language.Get("equipQualityFormat", skill.SkillName) + skill.Description; |
| | | if (skill != null) |
| | | { |
| | | awakeStr = Language.Get("L1039", skill.SkillName) + skill.Description; |
| | | } |
| | | else |
| | | { |
| | | Debug.LogError($"heroId:{hero.heroId} 觉醒技能ID:{config.SkillID} 配置错误技能不存在"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | for (int k = 0; k < config.AttrIDList.Length; k++) |
| | | { |
| | | awakeStr += PlayerPropertyConfig.GetFullDescription(config.AttrIDList[k], config.AttrValueList[k], "{0}+" + UIHelper.AppendColor(TextColType.Green, "{1}")) |
| | | awakeStr += (string.IsNullOrEmpty(config.SkillIName) ? string.Empty : Language.Get("L1039", config.SkillIName)) + |
| | | PlayerPropertyConfig.GetFullDescription(config.AttrIDList[k], config.AttrValueList[k], "{0}+" + UIHelper.AppendColor(TextColType.Green, "{1}")) |
| | | + (k == config.AttrIDList.Length - 1 ? "" : "\n"); |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | void TeamPosChangeEvent(List<int> posList, int flyFrom, Vector3 startPos) |
| | | { |
| | | fightPowerText.text = UIHelper.ReplaceLargeArtNum(hero.CalculatePower()); |
| | | void TeamPosChangeEvent(int teamType) |
| | | { |
| | | if (teamType != TeamManager.Instance.GetMainTeamID()) |
| | | return; |
| | | fightPowerText.text = UIHelper.ReplaceLargeArtNum(hero.CalculateFightPower()); |
| | | } |
| | | |
| | | void RefreshFreeze() |
| | | { |
| | | //至少需要觉醒到多少级 |
| | | int needAwakeLV = HeroUIManager.Instance.GetAwakeLVByStarLV(hero.heroId, hero.heroStarMaxBefore); |
| | | if (hero.awakeLevel < needAwakeLV) |
| | | { |
| | | freezeTipBtn.SetActive(true); |
| | | //星级 |
| | | for (int i = 0; i < starImgFreezeList.Count; i++) |
| | | { |
| | | if ((hero.heroStarMaxBefore - 1) % starImgFreezeList.Count >= i) |
| | | { |
| | | starImgFreezeList[i].SetActive(true); |
| | | starImgFreezeList[i].SetSprite("herostar" + (((hero.heroStarMaxBefore - 1) / starImgFreezeList.Count) + 1) * starImgFreezeList.Count); |
| | | } |
| | | else |
| | | { |
| | | starImgFreezeList[i].SetActive(false); |
| | | } |
| | | } |
| | | freezeStarText.text = Language.Get("HeroAwake16", hero.heroStarMaxBefore); |
| | | freezeAawkeLVText.text = Language.Get("HeroAwake17", needAwakeLV); |
| | | |
| | | } |
| | | else |
| | | { |
| | | freezeTipBtn.SetActive(false); |
| | | } |
| | | |
| | | freezeTipGo.SetActive(false); |
| | | } |
| | | |
| | | void RefreshRedImg() |
| | | { |
| | | redpointAwake.SetActive(false); |
| | | redpointGift.SetActive(false); |
| | | redpointLVUP.SetActive(false); |
| | | trainMainRedImg.SetActive(false); |
| | | breakMainRedImg.SetActive(false); |
| | | redpointBreakLVUP.SetActive(false); |
| | | |
| | | |
| | | var heroCnt = PackManager.Instance.GetItemCountByID(PackType.Hero, hero.heroId); |
| | | var itemPack = PackManager.Instance.GetSinglePack(PackType.Item); |
| | | |
| | | |
| | | if (heroCnt > 1 && hero.heroStar < hero.GetCurMaxStar()) |
| | | { |
| | | redpointGift.SetActive(true); |
| | | trainMainRedImg.SetActive(true); |
| | | } |
| | | |
| | | |
| | | |
| | | if (!HeroUIManager.Instance.IsLVMax(hero)) |
| | | { |
| | | var lvupConfig = HeroQualityLVConfig.GetQualityLVConfig(hero.Quality, hero.heroLevel); |
| | | if (itemPack.GetCountById(lvupConfig.UPCostItem[0]) >= lvupConfig.UPCostItem[1]) |
| | | { |
| | | redpointLVUP.SetActive(true); |
| | | trainMainRedImg.SetActive(true); |
| | | } |
| | | } |
| | | |
| | | |
| | | if (!hero.IsInTeamByTeamType(BattlePreSetType.Story)) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | |
| | | //5星后才能觉醒 |
| | | if (hero.heroStar >= HeroUIManager.Instance.starLevelCanAwake && FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.HeroAwake)) |
| | | { |
| | | //判断觉醒材料是否足够 |
| | | var maxAwakeLV = HeroAwakeConfig.GetMaxAwakeLV(hero.heroId); |
| | | if (hero.awakeLevel < maxAwakeLV) |
| | | { |
| | | var config = HeroQualityAwakeConfig.GetQualityAwakeConfig(hero.Quality, hero.awakeLevel); |
| | | if (itemPack.GetCountById(config.UPCostItem[0]) >= config.UPCostItem[1]) |
| | | { |
| | | redpointAwake.SetActive(true); |
| | | trainMainRedImg.SetActive(true); |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (HeroUIManager.Instance.IsCanBreak(hero)) |
| | | { |
| | | redpointBreakLVUP.SetActive(true); |
| | | breakMainRedImg.SetActive(true); |
| | | } |
| | | |
| | | } |
| | | |
| | | #region 突破功能 |
| | | |
| | | void DisplayTrainOrBreak(HeroInfo hero) |
| | | { |
| | | //heroLVBreakCell; //对应培养的 allAttrScroll 和 attrBtn |
| | | if (functionOrder == 0) |
| | | { |
| | | heroLVBreakCell.SetActive(false); |
| | | allAttrScroll.SetActive(true); |
| | | attrBtn.SetActive(true); |
| | | trainMainButton.SelectBtn(); |
| | | } |
| | | else |
| | | { |
| | | heroLVBreakCell.SetActive(true); |
| | | allAttrScroll.SetActive(false); |
| | | attrBtn.SetActive(false); |
| | | |
| | | heroLVBreakCell.Display(hero); |
| | | breakMainButton.SelectBtn(); |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | } |