Exemplo n.º 1
0
    public void OnTalentPagePointsInfo(int nPageIndex, string szPointsData, string szTalentId, string szTalentPageName, int nAttackPoints, int nTrickPoints, int nHelpPoints)
    {
        // 请求保存当前页数据
        TalentPageInfo talentPageInfo = new TalentPageInfo();

        talentPageInfo.szTalentPageName  = szTalentPageName;
        talentPageInfo.nAttackPointAll   = nAttackPoints;
        talentPageInfo.nTrickPointAll    = nTrickPoints;
        talentPageInfo.nHelpPointAll     = nHelpPoints;
        this.dTalentPageInfo[nPageIndex] = talentPageInfo;

        cmd_TalentPage_Points_Single cmdSinglePoint = new cmd_TalentPage_Points_Single();

        cmdSinglePoint.nCurPageIndex = nPageIndex;
        string[] sTalentIdArray = ((string)(szTalentId)).Split(';');
        int      nArrayLen      = sTalentIdArray.Length - 1;

        cmdSinglePoint.nTalentId     = new int[nArrayLen];
        cmdSinglePoint.nTalentPoints = new int[nArrayLen];
        for (int i = 0; i < nArrayLen; i++)
        {
            cmdSinglePoint.nTalentId[i]     = int.Parse(sTalentIdArray[i]);
            cmdSinglePoint.nTalentPoints[i] = int.Parse(szPointsData[i].ToString());;
        }
        cmdSinglePoint.nTalentNum       = (byte)nArrayLen;
        cmdSinglePoint.szTalentPageName = szTalentPageName;
        IntPtrHelper helper = new IntPtrHelper();
        IntPtr       ptr    = helper.toPtr <cmd_TalentPage_Points_Single>(ref cmdSinglePoint);
        int          len    = Marshal.SizeOf(cmdSinglePoint);

        GameLogicAPI.onEntityEvent(EntityFactory.MainHeroID, (int)EntityLogicDef.ENTITY_CMD_SAVE_TALENT_PAGE_SINGLE, len, "", ptr, len);
    }
Exemplo n.º 2
0
    // 所有页的加点数据下发
    public void SetSingleTalentPagePointsInfo(IntPtr ptrParam, int nPtrLen)
    {
        if (!Value.IsValueValid(TalentMenuFrame))
        {
            return;
        }

        Hashtable allTalentPageTable  = (TalentPage.Instance.GetAllTalentPageTable());
        IntPtrVaArgParseHelper helper = new IntPtrVaArgParseHelper(ptrParam, nPtrLen);

        dTalentPageInfo.Clear();

        cmd_count nCountdata = helper.get <cmd_count>();

        for (int i = 0; i < nCountdata.nCount; ++i)
        {
            TalentPageInfo talentPageInfo     = new TalentPageInfo();
            cmd_TalentPage_Points_Single data = helper.get <cmd_TalentPage_Points_Single>();
            string sPoints   = "";
            string sTalentId = "";
            for (int j = 0; j < data.nTalentNum; j++)
            {
                int nPoint    = data.nTalentPoints[j];
                int nTalentId = data.nTalentId[j];
                sPoints   += nPoint.ToString();
                sTalentId += nTalentId.ToString();
                if (j != data.nTalentNum - 1)
                {
                    sTalentId += ";";
                }
                int nTalentType = TalentPage.Instance.GetSingleTalentType(nTalentId);
                if (nTalentType == (int)TalentType.ENUM_TALENTTYPE_ATTACK)
                {
                    talentPageInfo.nAttackPointAll += nPoint;
                }
                else if (nTalentType == (int)TalentType.ENUM_TALENTTYPE_TRICK)
                {
                    talentPageInfo.nTrickPointAll += nPoint;
                }
                else if (nTalentType == (int)TalentType.ENUM_TALENTTYPE_HELP)
                {
                    talentPageInfo.nHelpPointAll += nPoint;
                }
            }

            if (data.szTalentPageName == "")
            {
                data.szTalentPageName = "TalentPage" + (i + 1);
            }

            int nPageIndex = data.nCurPageIndex;
            talentPageInfo.szTalentPageName = data.szTalentPageName;
            dTalentPageInfo[nPageIndex]     = talentPageInfo;
            // 将所有天赋页的加点数据和名字数据名字下发下去,暂定30个可配置点数后期会改
            if (TalentMenuFrame.Invoke("SetSingleTalentPagePointsInfo", nPageIndex, data.szTalentPageName, sTalentId, sPoints, 30, talentPageInfo.nAttackPointAll, talentPageInfo.nTrickPointAll, talentPageInfo.nHelpPointAll) == null)
            {
                Trace.LogError("call SetSingleTalentPagePointsInfo failed");
                continue;
            }
        }

        if (nCountdata.nCount != 0)
        {
            if (TalentMenuFrame.Invoke("SetOnePagePointView", 1) == null)
            {
                Trace.LogError("call SetOnePagePointView failed");
                return;
            }
        }
    }