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); }
// 所有页的加点数据下发 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; } } }