/// <summary> /// 刷新数据 /// </summary> public void UpdateData() { for (int i = 0; i < m_TalentLength; i++) { RectTransform rectTra = m_TalentRoot.GetChild(i).GetComponent <RectTransform>(); if (!rectTra.gameObject.activeSelf) { rectTra.gameObject.SetActive(true); m_TalentLineRoot.GetChild(i).gameObject.SetActive(true); } TalentSubNode?talentSubNode = m_CfgEternityProxy.GetTalentSubNodeByIndex(m_CurrentTalentRootId, i); TalentVO talentVO = new TalentVO(); if (talentSubNode.HasValue) { if (m_TalentProxy.GetTalentVODic().TryGetValue(talentSubNode.Value.Id, out talentVO)) { talentVO.MTalentSubNode = talentSubNode; talentVO.Id = (int)talentSubNode.Value.Id; } } LineRenderer lineRenderer = m_TalentLineRoot.GetChild(i).GetComponent <LineRenderer>(); LineImage lineImage = m_TalentLineRoot.GetChild(i).GetChild(0).GetComponent <LineImage>(); OnRendererCell(rectTra.gameObject, lineRenderer, talentVO, lineImage); // DrawLinrRenderer(lineRenderer,PosLineList); } }
/// <summary> /// 添加数据 /// </summary> /// <param name="id"></param> public void AddData(uint id) { int m_TalentLength = m_CfgEternityProxy.GetTalentNodeLength(id); for (int i = 0; i < m_TalentLength; i++) { TalentSubNode?talentSubNode = m_CfgEternityProxy.GetTalentSubNodeByIndex(id, i); TalentVO talentVO = new TalentVO(); if (talentSubNode.HasValue) { if (m_TalentVODic.TryGetValue(talentSubNode.Value.Id, out talentVO)) { SetTalentState(talentVO); } else { talentVO = new TalentVO(); talentVO.TalentRootId = id; talentVO.MTalentSubNode = talentSubNode; talentVO.Id = (int)talentSubNode.Value.Id; talentVO.UnLockId = (int)talentSubNode.Value.UnlockCondition; talentVO.IconId = talentSubNode.Value.Icon; talentVO.BackNodeId = (int)talentSubNode.Value.PreNode; talentVO.MaxLevel = m_CfgEternityProxy.GetTalentMaxLevel((uint)talentVO.Id); talentVO.EffectNum = m_CfgEternityProxy.GetUpLevelCost((uint)talentVO.Id, talentVO.Level); SetTalentState(talentVO); AddTalent(talentSubNode.Value.Id, talentVO); } //talentVO.Level = 0; } } }
protected override void OnViewPartLoaded() { m_OldPosition = new Vector3(578, -358, 0); m_TalentRoot = FindComponent <Transform>("Content/Scroller/Viewport/Content/ContentTalent"); m_TalentTypeRoot = FindComponent <Transform>("Content/Scroller/Viewport/Content/ContentTypeTalent"); m_TalentLineRoot = FindComponent <Transform>("Content/Scroller/Viewport/Content/ContentTalentLine"); m_ToggleGroup = FindComponent <ToggleGroup>("Content/Scroller/Viewport/Content"); m_ConcetTransform = FindComponent <Transform>("Content/Scroller/Viewport/Content"); m_ScrollRect = FindComponent <ScrollRect>("Content/Scroller"); m_TalentLineRoot.localPosition = new Vector3(0, 0, -20); m_CurrentTalentVO = new TalentVO(); UIManager.Instance.StartCoroutine(Excute(Time.deltaTime, () => { m_ConcetTransform.transform.localPosition = m_OldPosition; })); State.SetActionCompareEnabled(false); State.OnPageIndexChanged -= OnPageChanged; State.OnPageIndexChanged += OnPageChanged; State.GetAction(UIAction.Talent_Active_Upgrade).Callback += OnActivate; State.GetAction(UIAction.Talent_BlockUp).Callback += OnStopUse; State.GetAction(UIAction.Talent_Reset).Callback += OnReset; State.GetAction(UIAction.Talent_ZoomIn).Callback += OnShrink; State.GetAction(UIAction.Talent_ZoomOut).Callback += OnMagnify; OnPageIndexChanged(State.GetPageIndex(), State.GetPageIndex()); }
/// <summary> /// 添加数据 /// </summary> /// <param name="id"></param> public void AddTalent(uint id, TalentVO talentVO) { if (m_TalentVODic.ContainsKey(id)) { m_TalentVODic[id] = talentVO; } else { m_TalentVODic.Add(id, talentVO); } }
/// <summary> /// 渲染单个格子 /// </summary> public void OnRendererCell(GameObject go, LineRenderer lineRenderer, TalentVO data, LineImage lineImage) { TalentElement talentElement = go.GetComponent <TalentElement>(); if (talentElement == null) { talentElement = go.AddComponent <TalentElement>(); talentElement.Initialize(); } talentElement.SetContent(lineImage, lineRenderer, data); }
/// <summary> /// 加载数据 /// </summary> /// <param name="tip">tip物体</param> /// <param name="data">数据</param> private void LayoutTip(GameObject tip, object data) { TalentVO talentVO = data as TalentVO; TalentTypeVO talentTypeVO = data as TalentTypeVO; if (talentVO != null) { if (talentVO.Id > 0) { InitSetData(); if (talentVO.Level > 0) { m_DescribeLabel.text = TableUtil.GetTalentDescribe(talentVO.Id, talentVO.Level); } else { m_DescribeLabel.text = TableUtil.GetTalentDescribe(talentVO.Id, 1); } m_TalentName.text = TableUtil.GetTalentNodeName(talentVO.Id); if (m_TalentProxy.GetTalentRootVODic().TryGetValue((int)talentVO.TalentRootId, out TalentTypeVO vO)) { m_TypeLabel.text = "type"; } m_TypeLabel.text = "type"; //m_PlayerName.text = data.Name; m_UnLockLabel.text = m_TalentProxy.GetUnLockLabel((uint)talentVO.UnLockId); m_CostNum.text = m_CfgEternityProxy.GetUpLevelCost((uint)talentVO.Id, talentVO.Level).ToString(); m_LevelLabel.text = string.Format(TableUtil.GetLanguageString("shiphangar_text_1009"), talentVO.Level, talentVO.MaxLevel); } } else if (talentTypeVO != null) { if (talentTypeVO.Id > 0) { InitSetData(); m_DescribeLabel.text = TableUtil.GetTalentDescribe(talentTypeVO.Id, talentTypeVO.Level); m_TalentName.text = TableUtil.GetTalentName(talentTypeVO.Id); m_TypeLabel.text = "type"; m_LevelLabel.text = talentTypeVO.Level.ToString(); m_CostNum.text = ""; m_UnLockLabel.text = m_TalentProxy.GetUnLockLabel(talentTypeVO.UnLockId); //m_PlayerName.text = data.Name; //m_Level.text = string.Format(TableUtil.GetLanguageString("character_text_1019"), data.Level.ToString()); } } }
/// <summary> /// 发送操作指令 /// </summary> /// <param name="code">指令</param> /// <param name="tid">tid</param> public async void GetTalentOperation(TalentCode code, ulong tid) { Debug.Log(tid + "------->>>>>发送操作天赋指令" + code); TalentOperationResponse getTalentInfosResponse = await TalentOperationRPC.TalentOperation((uint)code, tid); Debug.Log("------->>>>>接收操作天赋" + getTalentInfosResponse.Success); if (code == TalentCode.Reset || code == TalentCode.StopUse) { ResetLevelData((uint)tid); } if (getTalentInfosResponse.Success != null && getTalentInfosResponse.Success.Success_.ErrorCode == 0) { m_TalentNodes.Clear(); m_TalentNodes = getTalentInfosResponse.Success.Success_.Nodes; int errorCode = getTalentInfosResponse.Success.Success_.ErrorCode; DebugErrorCode(errorCode); for (int i = 0; i < m_TalentNodes.Count; i++) { TalentVO talentVO = null; if (m_TalentVODic.TryGetValue(m_TalentNodes[i].Tid, out talentVO)) { talentVO.Level = (int)m_TalentNodes[i].Level; talentVO.Type = (int)m_TalentNodes[i].Type; talentVO.MaxLevel = (int)m_TalentNodes[i].Maxlevel; SetTalentState(talentVO); } else { Debug.Log("本地没有这个数据"); } } } else { Debug.Log("没有数据"); } MsgTalentOperation msgTalentOperation = new MsgTalentOperation(); msgTalentOperation.M_TalentCode = code; msgTalentOperation.Tid = (uint)tid; if (getTalentInfosResponse.Success.Success_.ErrorCode == 0) { GameFacade.Instance.SendNotification(NotificationName.MSG_TALENT_OPERATION, msgTalentOperation); } }
/// <summary> ///加载数据 /// </summary> public void SetContent(LineImage lineImage, LineRenderer lineRenderer, TalentVO talentVO) { m_TalentVO = talentVO; Vector3 vector3 = new Vector3((float)talentVO.MTalentSubNode.Value.Position.Value.X, (float)talentVO.MTalentSubNode.Value.Position.Value.Y, 0); SetPos(vector3); m_LineRenderer = lineRenderer; m_LineImage = lineImage; m_Color = COLORH; talentVO.MTalentElement = this; m_OldTalentState = m_TalentState; m_TalentState = talentVO.State; m_NumberLabel.text = string.Format(TableUtil.GetLanguageString("shiphangar_text_1009"), talentVO.Level, talentVO.MaxLevel); UpdateState(); List <Vector3> pos = new List <Vector3>(); Vector3 start = new Vector3((float)talentVO.MTalentSubNode.Value.LinkPoints.Value.NodeX, (float)talentVO.MTalentSubNode.Value.LinkPoints.Value.NodeY, 0); Vector3 end = new Vector3((float)talentVO.MTalentSubNode.Value.LinkPoints.Value.PreNodeX, (float)talentVO.MTalentSubNode.Value.LinkPoints.Value.PreNodeY, 0); DrawLinrRenderer(lineRenderer, new Vector3[] { start, end }); DrawLineImageRenderer(m_LineImage, new Vector3[] { start, end }); }
/// <summary> /// 设置天赋状态 /// </summary> /// <param name="talentVO"></param> public void SetTalentState(TalentVO talentVO) { if (talentVO == null) { return; } if (talentVO.Level == 0) { talentVO.State = TalentState.NoActivate; } bool talentrootMeet = true; bool talentMeet = true; PlayerInfoVo playerInfoVo = NetworkManager.Instance.GetPlayerController().GetPlayerInfo(); #region 判读激活 // Debug.Log(talentVO.Id+"--------------" + talentVO.UnLockId); if (talentVO.UnLockId > 0) { EffectElement?[] effectElements = m_CfgEternityProxy.GetEffectElementsByKey((uint)talentVO.UnLockId); for (int i = 0; i < effectElements.Length; i++) { OperationType fun = (OperationType)effectElements[i].Value.Function; switch (fun) { case OperationType.kGreaterAndEqual: if (effectElements[i].Value.Attribute == (int)AttributeName.kDuanLevel) { if (playerInfoVo.Exp < effectElements[i].Value.Value) { talentMeet = false; } } if (effectElements[i].Value.Attribute == (int)AttributeName.kRoleLevel) { if (playerInfoVo.Level < effectElements[i].Value.Value) { talentMeet = false; } } break; case OperationType.kGreater: if (effectElements[i].Value.Attribute == (int)AttributeName.kDuanLevel) { if (playerInfoVo.Exp <= effectElements[i].Value.Value) { talentMeet = false; } } if (effectElements[i].Value.Attribute == (int)AttributeName.kRoleLevel) { if (playerInfoVo.Level <= effectElements[i].Value.Value) { talentMeet = false; } } break; default: break; } } } // EffectElement?[] effectElementRoots = m_CfgEternityProxy.GetEffectElementsByKey((uint)talentVO.MTalentTypeVO.UnLockId); //for (int i = 0; i < effectElementRoots.Length; i++) //{ // OperationType fun = (OperationType)effectElementRoots[i].Value.Function; // switch (fun) // { // case OperationType.kGreaterAndEqual://反向判段 // if (effectElementRoots[i].Value.Attribute == (int)AttributeName.kDuanLevel) // { // if (playerInfoVo.Exp < effectElementRoots[i].Value.Value) // { // talentrootMeet = false; // } // } // if (effectElementRoots[i].Value.Attribute == (int)AttributeName.kRoleLevel) // { // if (playerInfoVo.Level < effectElementRoots[i].Value.Value) // { // talentrootMeet = false; // } // } // break; // case OperationType.kGreater: // if (effectElementRoots[i].Value.Attribute == (int)AttributeName.kDuanLevel) // { // if (playerInfoVo.Exp <= effectElementRoots[i].Value.Value) // { // talentrootMeet = false; // } // } // if (effectElementRoots[i].Value.Attribute == (int)AttributeName.kRoleLevel) // { // if (playerInfoVo.Level <= effectElementRoots[i].Value.Value) // { // talentrootMeet = false; // } // } // break; // default: // break; // } //} #endregion if (m_TalentVODic.TryGetValue((uint)talentVO.BackNodeId, out TalentVO vO)) { if (vO.Level >= 1 && talentrootMeet && talentMeet)//前置等于1 { talentVO.State = TalentState.CanActivate; } } if ((uint)talentVO.BackNodeId == 0) { talentVO.State = TalentState.CanActivate; } if (talentVO.Level >= 1) { talentVO.State = TalentState.Activate; } if (talentVO.Level == talentVO.MaxLevel) { talentVO.State = TalentState.FullLevel; } }