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 bool SetSaveSingleTalentPage(ref cmd_TalentPage_Points_Single cmdSinglePoint) { // 当前页的名字和加点数都没修改直接返回 if (!uCurTalentPageData.bIsChanged) { return(false); } if (uCurTalentPageData == null) { return(false); } if (uCurTalentPageData.dTalentTempPoints == null) { return(false); } SavePointsData(); int nTalentCount = 0; int nDicTempCount = uCurTalentPageData.dTalentTempPoints.Count; cmdSinglePoint.nTalentId = new int[nDicTempCount]; cmdSinglePoint.nTalentPoints = new int[nDicTempCount]; foreach (int nTalentIdKey in uCurTalentPageData.dTalentTempPoints.Keys) { if (uCurTalentPageData.dTalentTempPoints[nTalentIdKey] == 0) { continue; } int nPoints = uCurTalentPageData.dTalentTempPoints[nTalentIdKey]; cmdSinglePoint.nTalentId[nTalentCount] = nTalentIdKey; cmdSinglePoint.nTalentPoints[nTalentCount] = nPoints; nTalentCount++; } SetTalentPageChange(false); int nDataIndex = GetDataIndex(this.nCurPageSortIndex); cmdSinglePoint.nCurPageIndex = nDataIndex; cmdSinglePoint.nTalentNum = nTalentCount; cmdSinglePoint.szTalentPageName = this.uCurTalentPageData.sTempName; return(true); }
public bool SetSaveSingleTalentPage() { if (m_wndView == null) { return(true); } cmd_TalentPage_Points_Single cmdSinglePoint = new cmd_TalentPage_Points_Single(); bool bSave = LogicDataCenter.talentPageDataManager.SetSaveSingleTalentPage(ref cmdSinglePoint); if (!bSave) { return(true); } EntityEventHelper.Instance.SendCommand <cmd_TalentPage_Points_Single>(EntityFactory.MainHeroID, EntityLogicDef.ENTITY_CMD_SAVE_TALENT_PAGE_SINGLE, ref cmdSinglePoint); return(true); }
/////////////////////////////////////////////////////数据载入区/////////////////////////////////////////////////////// public void ReceiveEntityViewTalentInfo(IntPtr ptrParam, int nPtrLen, ref int nPageNum) { IntPtrVaArgParseHelper helper = new IntPtrVaArgParseHelper(ptrParam, nPtrLen); cmd_count nCountdata = helper.get <cmd_count>(); nPageNum = nCountdata.nCount; this.nMaxSortIndex = nCountdata.nCount; for (int i = 0; i < nCountdata.nCount; ++i) { NewPagePointsItem(i + 1); cmd_TalentPage_Points_Single data = helper.get <cmd_TalentPage_Points_Single>(); if (uCurTalentPageData == null) { continue; } for (int j = 0; j < data.nTalentNum; j++) { int nPoint = data.nTalentPoints[j]; int nTalentId = data.nTalentId[j]; uCurTalentPageData.dTalentTempPoints[nTalentId] = nPoint; int nTalentType = TalentPage.Instance.GetSingleTalentType(nTalentId); if (nTalentType == (int)TalentType.ENUM_TALENTTYPE_ATTACK) { uCurTalentPageData.nAttackPoints += nPoint; } else if (nTalentType == (int)TalentType.ENUM_TALENTTYPE_TRICK) { uCurTalentPageData.nTrickPoints += nPoint; } else if (nTalentType == (int)TalentType.ENUM_TALENTTYPE_HELP) { uCurTalentPageData.nHelperPoints += nPoint; } } if (data.szTalentPageName == "" || data.szTalentPageName == null) { uCurTalentPageData.sTempName = "TalentPage" + (i + 1); } else { uCurTalentPageData.sTempName = data.szTalentPageName; } this.SetTalentPageChange(true); uCurTalentPageData.SetSaveData(); // 必须有数据改变才保存 this.SetTalentPageChange(false); int nDataBaseIndex = data.nCurPageIndex; lTopButtonDataIndex.Add(nDataBaseIndex); // 储存数据库页数 因为数据库创建删除都是根据数据库页数来的,避免重复 if (nMaxDataIndex < nDataBaseIndex) { nMaxDataIndex = nDataBaseIndex; } } UpdatePersentLevel(); }
// 所有页的加点数据下发 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; } } }