Esempio n. 1
0
 /// <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);
     }
 }
Esempio n. 2
0
    /// <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;
            }
        }
    }
Esempio n. 3
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());
    }
Esempio n. 4
0
 /// <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);
     }
 }
Esempio n. 5
0
    /// <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);
    }
Esempio n. 6
0
    /// <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());
            }
        }
    }
Esempio n. 7
0
    /// <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);
        }
    }
Esempio n. 8
0
    /// <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 });
    }
Esempio n. 9
0
    /// <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;
        }
    }