| | |
| | | /// <summary> |
| | | /// 武将培养界面 |
| | | /// </summary> |
| | | public partial class HeroTrainWin : UIBase |
| | | public class HeroTrainWin : UIBase |
| | | { |
| | | [SerializeField] RawImage bgTexture; |
| | | [SerializeField] Button showFuncBtn; //只显示立绘时点击,显示功能 |
| | | [SerializeField] Transform funcForm; |
| | | [SerializeField] UIHeroController roleLhModel; //展示英雄立绘 |
| | |
| | | [SerializeField] Button awakeBtn; |
| | | |
| | | [SerializeField] Button closeBtn; //关闭按钮 |
| | | |
| | | [SerializeField] Button starBtn; //显示星级文字 |
| | | [SerializeField] List<Image> starImgList; |
| | | [SerializeField] Text nameText; |
| | | [SerializeField] UIEffectPlayer nameEffect; |
| | | [SerializeField] Image countryImg; |
| | | [SerializeField] Text awakeLVText; |
| | | |
| | | //属性区 |
| | | [SerializeField] ScrollRect allAttrScroll; |
| | | [SerializeField] Button attrBtn; |
| | | [SerializeField] Image unfoldImg; //展开时按钮的图标 |
| | | [SerializeField] Image foldImg; //收起时按钮的图标 |
| | |
| | | [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] LongPressButton lvupBtn; |
| | | [SerializeField] LongPressButton lvupBtn; //升级 突破 |
| | | [SerializeField] Button allAttrBtn; |
| | | [SerializeField] Text allPotentialText; //潜能 |
| | | |
| | | [SerializeField] GameObject potentialCell; //潜能和觉醒用于创建 |
| | | [SerializeField] Transform potentialCellParent; //潜能父节点 |
| | | List<GameObject> potentialCellList; //潜能 |
| | | [SerializeField] Transform awakeCellParent; //潜能父节点 |
| | | [SerializeField] GameObject awakeGo; |
| | | List<GameObject> awakeCellList; //觉醒 |
| | | |
| | | [SerializeField] GameObject fetterGo; |
| | | [SerializeField] Text[] fetterText; //羁绊 |
| | | [SerializeField] Text[] fetterNameText; //羁绊 |
| | | |
| | | |
| | | //天赋 |
| | | [SerializeField] GiftBaseCell[] giftBaseCells; |
| | | [SerializeField] Button totalGiftBtn; |
| | | [SerializeField] Button starUPBtn; |
| | | [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; |
| | | |
| | | |
| | | Queue<HeroTrainAddAttrCell> lvupAttrQueue = new Queue<HeroTrainAddAttrCell>(); |
| | | |
| | | string guid; |
| | | HeroInfo hero; |
| | | |
| | |
| | | ChangeHero(-1); |
| | | }); |
| | | |
| | | lockBtn.AddListener(SetLockState); |
| | | resetBtn.AddListener(ResetBtnClick); |
| | | lockBtn.AddListener(() => { hero.ChangeLockState(); }); |
| | | resetBtn.AddListener(() => |
| | | { |
| | | HeroUIManager.Instance.ResetBtnClick(hero); |
| | | }); |
| | | deleteBtn.AddListener(DeleteHero); |
| | | awakeBtn.AddListener(() => |
| | | { |
| | | // UIManager.Instance.OpenWindow<HeroAwakeWin>(hero.heroId); |
| | | HeroUIManager.Instance.selectAwakeHeroGuid = guid; |
| | | UIManager.Instance.OpenWindow<HeroAwakeWin>(); |
| | | }); |
| | | inheritText.OnClick = () => |
| | | { |
| | |
| | | }); |
| | | lvupBtn.AddListener(LVUp); |
| | | lvupBtn.onPress.AddListener(LVUp); |
| | | |
| | | totalGiftBtn.AddListener(() => |
| | | { |
| | | UIManager.Instance.OpenWindow<HeroGiftWin>(); |
| | | }); |
| | | |
| | | starUPBtn.AddListener(StarUP); |
| | | washBtn.AddListener(Wash); |
| | | |
| | | starBtn.AddListener(() => |
| | | { |
| | | SmallTipWin.showText = Language.Get("HeroGift14", hero.heroStar); |
| | | SmallTipWin.worldPos = CameraManager.uiCamera.ScreenToWorldPoint(Input.mousePosition); |
| | | UIManager.Instance.OpenWindow<SmallTipWin>(); |
| | | }); |
| | | |
| | | potentialCellList = new List<GameObject>(); |
| | | awakeCellList = new List<GameObject>(); |
| | | |
| | | freezeTipBtn.AddListener(() => |
| | | { |
| | | freezeTipGo.SetActive(!freezeTipGo.activeSelf); |
| | | }); |
| | | } |
| | | |
| | | |
| | |
| | | { |
| | | PackManager.Instance.RefreshItemLockEvent += RefreshItemLockEvent; |
| | | HeroManager.Instance.onHeroChangeEvent += RefreshHeroEvent; |
| | | UIManager.Instance.OnCloseWindow += OnCloseWindow; |
| | | TeamManager.Instance.OnTeamChange += TeamPosChangeEvent; |
| | | guid = HeroUIManager.Instance.selectHeroGuid; |
| | | hero = HeroManager.Instance.GetHero(guid); |
| | | unfoldState = false; |
| | | addPerObject.SetActive(false); |
| | | Refresh(); |
| | | allAttrScroll.verticalNormalizedPosition = 1; |
| | | Display(); |
| | | } |
| | | |
| | | protected override void OnPreClose() |
| | | { |
| | | PackManager.Instance.RefreshItemLockEvent -= RefreshItemLockEvent; |
| | | HeroManager.Instance.onHeroChangeEvent -= RefreshHeroEvent; |
| | | UIManager.Instance.OnCloseWindow -= OnCloseWindow; |
| | | TeamManager.Instance.OnTeamChange -= TeamPosChangeEvent; |
| | | } |
| | | |
| | | |
| | | public override void Refresh() |
| | | private void OnCloseWindow(UIBase closeUI) |
| | | { |
| | | roleLhModel.Create(hero.SkinID, HeroUIManager.lihuiScale, motionName: "", isLh: true); |
| | | roleXsModel.Create(hero.SkinID); |
| | | //其他界面删除武将会影响逻辑 |
| | | if (closeUI is HeroDeleteWin) |
| | | { |
| | | HeroUIManager.Instance.SortHeroList(); |
| | | if (HeroManager.Instance.GetHero(guid) == null) |
| | | { |
| | | CloseWindow(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | public void Display() |
| | | { |
| | | bgTexture.SetTexture2D("countryBG" + hero.heroConfig.Country); |
| | | roleLhModel.Create(hero.SkinID, 1, motionName: "", isLh: true); |
| | | 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; |
| | |
| | | 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, () => |
| | |
| | | RefreshFoldState(); |
| | | RefreshAttr(); |
| | | RefreshAllPotential(); |
| | | RefreshFetter(); |
| | | RefreshGift(); |
| | | RefreshAwake(); |
| | | RefreshFreeze(); |
| | | RefreshRedImg(); |
| | | |
| | | HeroUIManager.Instance.RemoveNewHero(hero.heroId); |
| | | } |
| | | |
| | | void RefreshItemLockEvent(PackType type, string guid, bool lockState) |
| | |
| | | |
| | | void RefreshHeroEvent(HeroInfo hero) |
| | | { |
| | | Refresh(); |
| | | Display(); |
| | | } |
| | | |
| | | void RefreshConn() |
| | |
| | | if (hero.heroConfig.FetterIDList.Length > 0) |
| | | { |
| | | connetionForm.SetActive(true); |
| | | connetionForm.Display(hero.heroConfig.FetterIDList[0], Language.Get("herocard40"), true, guid); |
| | | connetionForm.Display(hero.heroConfig.FetterIDList[0], Language.Get("herocard38") + "\n", true, guid); |
| | | } |
| | | else |
| | | { |
| | |
| | | var index = HeroUIManager.Instance.heroSortList.IndexOf(guid); |
| | | if (index == -1) |
| | | return; |
| | | allAttrScroll.verticalNormalizedPosition = 1; |
| | | int resultIndex = index + changeValue; |
| | | //循环处理 |
| | | if (resultIndex < 0) |
| | |
| | | } |
| | | guid = HeroUIManager.Instance.heroSortList[resultIndex]; |
| | | hero = HeroManager.Instance.GetHero(guid); |
| | | Refresh(); |
| | | Display(); |
| | | } |
| | | |
| | | void SetLockState() |
| | | { |
| | | var pack = new CB238_tagCSHeroLock(); |
| | | pack.ItemIndex = (ushort)hero.itemHero.gridIndex; |
| | | pack.IsLock = hero.isLock ? (byte)0 : (byte)1; |
| | | GameNetSystem.Instance.SendInfo(pack); |
| | | } |
| | | |
| | | 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.heroId, 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 |
| | | { |
| | | payBack1 = CommonFunc.AddDict(payBack1, HeroUIManager.Instance.GetHeroQualityAwakePayBack(hero.heroId, hero.awakeLevel)); |
| | | items = CommonFunc.ChangeToItemList(payBack1); |
| | | var info2 = Language.Get("herocard44", HeroUIManager.Instance.awakeRebirthCnt); |
| | | ConfirmCancel.ShowItemsConfirm(items, Language.Get("herocard42"), Language.Get("herocard43"), (bool isOk) => |
| | | { |
| | | if (isOk) |
| | | { |
| | | //发包 |
| | | SendReborn(hero.itemHero.gridIndex); |
| | | } |
| | | }, info2, "", HeroUIManager.Instance.payBackMoney, HeroUIManager.Instance.payBackMoneyType); |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | void SendReborn(int index) |
| | | { |
| | | var pack = new CB239_tagCSHeroRebirth(); |
| | | pack.ItemIndex = (ushort)index; |
| | | GameNetSystem.Instance.SendInfo(pack); |
| | | } |
| | | |
| | | void DeleteHero() |
| | | { |
| | | if (hero.isLock) |
| | | { |
| | | SysNotifyMgr.Instance.ShowTip("UnlockHero"); |
| | | return; |
| | | } |
| | | // if (hero.isLock) |
| | | // { |
| | | // SysNotifyMgr.Instance.ShowTip("UnlockHero"); |
| | | // return; |
| | | // } |
| | | |
| | | UIManager.Instance.OpenWindow<HeroDeleteWin>(); |
| | | } |
| | | |
| | | 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) |
| | |
| | | if (!HeroUIManager.Instance.IsLVMax(hero)) |
| | | { |
| | | lvupBtnText.text = Language.Get("L1109"); |
| | | lvupBtn.interactable = true; |
| | | lvupBtn.SetColorful(null, true); |
| | | lvupMoneyIcon.SetActive(true); |
| | | |
| | | if (HeroUIManager.Instance.IsLVMaxByBreakLevel(hero)) |
| | |
| | | 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], (ulong)breakConfig.UPCostItem[1]); |
| | | lvupMoneyText.text = UIHelper.ShowUseItem(PackType.Item, breakConfig.UPCostItem[0], breakConfig.UPCostItem[1]); |
| | | } |
| | | else |
| | | { |
| | | 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], (ulong)lvupConfig.UPCostItem[1]); |
| | | lvupMoneyText.text = UIHelper.ShowUseItem(PackType.Item, lvupConfig.UPCostItem[0], lvupConfig.UPCostItem[1]); |
| | | } |
| | | lvupBtn.SetInteractable(true); |
| | | |
| | | } |
| | | else |
| | | { |
| | | lvupBtnText.text = Language.Get("L1110"); |
| | | lvupBtn.interactable = false; |
| | | lvupBtn.SetColorful(null, false); |
| | | lvupBtn.SetInteractable(false); |
| | | lvupMoneyIcon.SetActive(false); |
| | | |
| | | } |
| | |
| | | void LVUp() |
| | | { |
| | | int itemID = 0; |
| | | ulong needCount = 0; |
| | | long needCount = 0; |
| | | if (HeroUIManager.Instance.IsLVMaxByBreakLevel(hero)) |
| | | { |
| | | //突破 |
| | |
| | | //升级 |
| | | var lvupConfig = HeroQualityLVConfig.GetQualityLVConfig(hero.Quality, hero.heroLevel); |
| | | itemID = lvupConfig.UPCostItem[0]; |
| | | needCount = (ulong)lvupConfig.UPCostItem[1]; |
| | | needCount = lvupConfig.UPCostItem[1]; |
| | | if (ItemLogicUtility.CheckItemCount(PackType.Item, itemID, needCount, 2)) |
| | | { |
| | | var pack = new CB230_tagCSHeroLVUP(); |
| | |
| | | GameNetSystem.Instance.SendInfo(pack); |
| | | //预显示 |
| | | lvupEffect.Play(); |
| | | addPerObject.SetActive(true); |
| | | for (int i = 0; i < addPerText.Length; i++) |
| | | { |
| | | addPerText[i].text = "+" + PlayerPropertyConfig.GetValueDescription(PlayerPropertyConfig.basePerAttrs[i], hero.qualityConfig.BreakLVAddPer); |
| | | } |
| | | addPerObject.Play(() => |
| | | { |
| | | addPerObject.SetActive(false); |
| | | var cell = RequestCell(); |
| | | cell.transform.localPosition = new Vector3(0, 0, 0); |
| | | cell.Display(hero.qualityConfig.LVAddPer, ()=> |
| | | { |
| | | cell.SetActive(false); |
| | | ReturnCell(cell); |
| | | }); |
| | | HeroUIManager.Instance.lastFightPower = new KeyValuePair<int, long>(hero.heroId, hero.CalculatePower(false)); |
| | | |
| | | HeroUIManager.Instance.lastFightPower = new KeyValuePair<string, long>(hero.itemHero.guid, hero.CalculatePower(false)); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | HeroTrainAddAttrCell RequestCell() |
| | | { |
| | | |
| | | if (lvupAttrQueue.Count == 0) |
| | | { |
| | | return Instantiate(addPerObject, addPerParent); |
| | | } |
| | | return lvupAttrQueue.Dequeue(); |
| | | } |
| | | |
| | | |
| | | void ReturnCell(HeroTrainAddAttrCell cell) |
| | | { |
| | | lvupAttrQueue.Enqueue(cell); |
| | | } |
| | | |
| | | |
| | | void RefreshAllPotential() |
| | | { |
| | |
| | | |
| | | list.Sort(); |
| | | |
| | | string allAttrStr = string.Empty; |
| | | for (int i = 0; i < list.Count; i++) |
| | | { |
| | | var nextQualityBreakConfig = HeroBreakConfig.GetHeroBreakConfig(hero.heroId, i + 1); |
| | |
| | | List<string> attrStrArr = new List<string>(); |
| | | for (int j = 0; j < nextQualityBreakConfig.AttrIDList.Length; j++) |
| | | { |
| | | 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("equipQualityFormat", nextQualityBreakConfig.SkillIName)) + |
| | | PlayerPropertyConfig.GetFullDescription(nextQualityBreakConfig.AttrIDList[j], nextQualityBreakConfig.AttrValueList[j], format)); |
| | | } |
| | | |
| | | if (nextQualityBreakConfig.SkillID != 0) |
| | | { |
| | | attrStrArr.Add(SkillConfig.Get(nextQualityBreakConfig.SkillID)?.Description); |
| | | var skill = SkillConfig.Get(nextQualityBreakConfig.SkillID); |
| | | if (skill != null) |
| | | { |
| | | attrStrArr.Add(Language.Get("equipQualityFormat", skill.SkillName) + skill.Description); |
| | | } |
| | | else |
| | | { |
| | | Debug.LogError("未配置技能" + nextQualityBreakConfig.SkillID); |
| | | } |
| | | } |
| | | if (i >= potentialCellList.Count) |
| | | { |
| | | potentialCellList.Add(Instantiate(potentialCell, potentialCellParent)); |
| | | } |
| | | var go = potentialCellList[i]; |
| | | var descText = go.GetComponent<Text>(); |
| | | var nameText = go.GetComponent<Text>("skillname"); |
| | | go.SetActive(true); |
| | | if (i < hero.breakLevel) |
| | | { |
| | | allAttrStr += Language.Get("herocard63", i + 1, string.Join(Language.Get("L1112"), attrStrArr)) + "\n"; |
| | | nameText.text = Language.Get("herocard63", i + 1); |
| | | descText.text = string.Join(Language.Get("L1112"), attrStrArr); |
| | | } |
| | | else |
| | | { |
| | | //置灰 |
| | | allAttrStr += UIHelper.AppendColor(TextColType.Gray, Language.Get("herocard63", i + 1, string.Join(Language.Get("L1112"), attrStrArr))) + "\n"; |
| | | 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))); |
| | | } |
| | | } |
| | | |
| | | allPotentialText.text = allAttrStr.Trim(); |
| | | } |
| | | |
| | | //羁绊 |
| | | void RefreshFetter() |
| | | { |
| | | if (hero.heroConfig.FetterIDList.Length == 0) |
| | | { |
| | | fetterGo.SetActive(false); |
| | | return; |
| | | } |
| | | fetterGo.SetActive(true); |
| | | |
| | | for (int i = 0; i < fetterText.Length; i++) |
| | | { |
| | | if (i < hero.heroConfig.FetterIDList.Length) |
| | | { |
| | | fetterText[i].SetActive(true); |
| | | var fetterID = hero.heroConfig.FetterIDList[i]; |
| | | HeroFetterConfig fetterConfig = HeroFetterConfig.Get(fetterID); |
| | | List<string> heroNames = new List<string>(); |
| | | bool isAllCollect = true; //是否全收集 |
| | | foreach (var tmpHeroID in fetterConfig.HeroIDList) |
| | | { |
| | | heroNames.Add(HeroConfig.Get(tmpHeroID).Name); |
| | | if (HeroManager.Instance.GetHeroCountByID(tmpHeroID) == 0) |
| | | { |
| | | isAllCollect = false; |
| | | } |
| | | } |
| | | var attrStr = string.Join(Language.Get("SplitString1"), heroNames) + Language.Get("herocard38"); |
| | | |
| | | for (int j = 0; j < fetterConfig.AttrIDList.Length; j++) |
| | | { |
| | | string format = !isAllCollect ? "{0}+{1}" : "{0}+" + UIHelper.AppendColor(TextColType.Green, "{1}"); |
| | | attrStr += Language.Get("L1112") + PlayerPropertyConfig.GetFullDescription(fetterConfig.AttrIDList[j], fetterConfig.AttrValueList[j], format); |
| | | } |
| | | fetterText[i].text = attrStr; |
| | | fetterText[i].color = UIHelper.GetUIColor(isAllCollect ? TextColType.NavyBrown : TextColType.NavyGray); |
| | | fetterNameText[i].text = fetterConfig.FetterName; |
| | | fetterNameText[i].color = UIHelper.GetUIColor(isAllCollect ? TextColType.NavyBrown : TextColType.NavyGray); |
| | | |
| | | } |
| | | else |
| | | { |
| | | fetterText[i].SetActive(false); |
| | | } |
| | | } |
| | | } |
| | | |
| | | void RefreshGift() |
| | | { |
| | | HeroUIManager.Instance.RefreshGiftCell(giftBaseCells, hero); |
| | | |
| | | if (hero.heroStar >= HeroUIManager.Instance.GetMaxStarCount(hero.heroId, hero.Quality)) |
| | | { |
| | | starUPBtnText.text = Language.Get("HeroGift7"); |
| | | starUPBtn.SetInteractable(false); |
| | | } |
| | | else |
| | | { |
| | | starUPBtnText.text = Language.Get("HeroGift3"); |
| | | starUPBtn.SetInteractable(true); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | void StarUP() |
| | | { |
| | | if (hero.heroStar >= HeroUIManager.Instance.GetMaxStarCount(hero.heroId, hero.Quality)) |
| | | { |
| | | return; |
| | | } |
| | | else if (hero.IsFullStar()) |
| | | { |
| | | SysNotifyMgr.Instance.ShowTip("HeroGift1"); |
| | | return; |
| | | } |
| | | |
| | | HeroUIManager.Instance.selectHeroGuidForGiftFunc = hero.itemHero.guid; |
| | | UIManager.Instance.OpenWindow<HeroGiftEatWin>(); |
| | | } |
| | | |
| | | void Wash() |
| | | { |
| | | if (hero.heroStar < HeroUIManager.Instance.canWashStarLevel) |
| | | { |
| | | SysNotifyMgr.Instance.ShowTip("HeroGift2", HeroUIManager.Instance.canWashStarLevel); |
| | | return; |
| | | } |
| | | |
| | | HeroUIManager.Instance.selectWashHeroGUID = hero.itemHero.guid; |
| | | UIManager.Instance.OpenWindow<HeroGiftWashWin>(); |
| | | |
| | | } |
| | | |
| | | |
| | | void RefreshAwake() |
| | | { |
| | | if (!HeroAwakeConfig.CanAwake(hero.heroId, 1)) |
| | | { |
| | | awakeGo.SetActive(false); |
| | | return; |
| | | } |
| | | awakeGo.SetActive(true); |
| | | |
| | | var maxLV = HeroAwakeConfig.GetMaxAwakeLV(hero.heroId); |
| | | var starCnt = HeroQualityConfig.Get(hero.Quality).InitStarUpper; |
| | | for (int i = 1; i <= maxLV; i++) |
| | | { |
| | | if (i > awakeCellList.Count) |
| | | { |
| | | awakeCellList.Add(Instantiate(potentialCell, awakeCellParent)); |
| | | } |
| | | var go = awakeCellList[i - 1]; |
| | | var descText = go.GetComponent<Text>(); |
| | | var nameText = go.GetComponent<Text>("skillname"); |
| | | go.SetActive(true); |
| | | |
| | | var config = HeroAwakeConfig.GetHeroAwakeConfig(hero.heroId, i); |
| | | |
| | | int type = config.UnlockTalentSlot != 0 ? 1 : config.SkillID != 0 ? 2 : 3; |
| | | var awakeStr = string.Empty; |
| | | if (type == 1) |
| | | { |
| | | starCnt += config.AddStarUpper; |
| | | awakeStr = Language.Get("HeroAwake8", config.UnlockTalentSlot, starCnt); |
| | | } |
| | | else if (type == 2) |
| | | { |
| | | var skill = SkillConfig.Get(config.SkillID); |
| | | awakeStr = Language.Get("equipQualityFormat", skill.SkillName) + skill.Description; |
| | | } |
| | | else |
| | | { |
| | | for (int k = 0; k < config.AttrIDList.Length; k++) |
| | | { |
| | | awakeStr += (string.IsNullOrEmpty(config.SkillIName) ? string.Empty : Language.Get("equipQualityFormat", config.SkillIName)) + |
| | | PlayerPropertyConfig.GetFullDescription(config.AttrIDList[k], config.AttrValueList[k], "{0}+" + UIHelper.AppendColor(TextColType.Green, "{1}")) |
| | | + (k == config.AttrIDList.Length - 1 ? "" : "\n"); |
| | | } |
| | | } |
| | | |
| | | if (i - 1 < hero.awakeLevel) |
| | | { |
| | | nameText.text = Language.Get("herocard12", i) + Language.Get("L1096"); |
| | | descText.text = awakeStr; |
| | | } |
| | | else |
| | | { |
| | | //置灰 |
| | | nameText.text = UIHelper.AppendColor(TextColType.NavyGray, Language.Get("herocard12", i) + Language.Get("L1096")); |
| | | descText.text = UIHelper.AppendColor(TextColType.NavyGray, UIHelper.RemoveColor(awakeStr)); |
| | | } |
| | | } |
| | | } |
| | | |
| | | void TeamPosChangeEvent(TeamType teamType) |
| | | { |
| | | if (teamType != TeamType.Story) |
| | | return; |
| | | fightPowerText.text = UIHelper.ReplaceLargeArtNum(hero.CalculatePower()); |
| | | } |
| | | |
| | | 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); |
| | | if (!hero.IsInTeamByTeamType(TeamType.Story)) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | |
| | | var heroCnt = PackManager.Instance.GetItemCountByID(PackType.Hero, hero.heroId); |
| | | var itemPack = PackManager.Instance.GetSinglePack(PackType.Item); |
| | | |
| | | //5星后才能觉醒 |
| | | if (hero.heroStar >= HeroUIManager.Instance.starLevelCanAwake) |
| | | { |
| | | //判断觉醒材料是否足够 |
| | | 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); |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (heroCnt > 1) |
| | | { |
| | | redpointGift.SetActive(true); |
| | | } |
| | | |
| | | var maxBreakLV = HeroBreakConfig.GetMaxBreakLv(hero.heroId); |
| | | if (hero.breakLevel < maxBreakLV) |
| | | { |
| | | if (HeroUIManager.Instance.IsLVMaxByBreakLevel(hero)) |
| | | { |
| | | var breakConfig = HeroQualityBreakConfig.GetQualityBreakConfig(hero.Quality, hero.breakLevel); |
| | | if (itemPack.GetCountById(breakConfig.UPCostItem[0]) >= breakConfig.UPCostItem[1]) |
| | | { |
| | | redpointLVUP.SetActive(true); |
| | | return; |
| | | } |
| | | } |
| | | } |
| | | |
| | | 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); |
| | | } |
| | | } |
| | | } |
| | | } |