protected bool FillWarPersonInfo(ref WarPersonInfo warPersonInfo, cmd_war_personinfo recordInfo) { warPersonInfo.nHeroId = recordInfo.nHeroID; warPersonInfo.nCamp = recordInfo.nCamp; warPersonInfo.nLevel = recordInfo.nLevel; warPersonInfo.nID = recordInfo.uID; warPersonInfo.nKillNum = recordInfo.nKillNum; warPersonInfo.nIndex = GetAlwaysMyTeamLeftIndex(recordInfo.nIndex, recordInfo.nCamp); warPersonInfo.nDeadNum = recordInfo.nDeadNum; warPersonInfo.nAssists = recordInfo.nAssists; warPersonInfo.nMobaWarMoney = recordInfo.nKillMonsterNum; warPersonInfo.uPDBID = recordInfo.uPDBID; warPersonInfo.playerName = recordInfo.szName; warPersonInfo.bIsHero = recordInfo.isProtag; warPersonInfo.bIsAI = recordInfo.nIsAi > 0; warPersonInfo.nSummerIconID = recordInfo.nSummerIconID; warPersonInfo.sSummerDesc = recordInfo.szSummerDesc; warPersonInfo.nAliveContAssist = recordInfo.nAliveContAssist; warPersonInfo.nSkinID = recordInfo.nSkinID; warPersonInfo.nSex = recordInfo.nSex; warPersonInfo.nPlayerType = recordInfo.nPlayerType; warPersonInfo.nDestroyTower = recordInfo.nDestroyTower; return(true); }
/// 实现相对阵营中 杀敌数 等级 助攻数更新 public void UpdatePlayerInfo(IntPtr recordInfo, int nPtrLen) { IntPtrVaArgParseHelper helper = new IntPtrVaArgParseHelper(recordInfo, nPtrLen); cmd_war_personInfo_count obj = helper.get <cmd_war_personInfo_count>(); for (int i = 0; i < obj.nCount; ++i) { cmd_war_personinfo data = helper.get <cmd_war_personinfo>(); ulong uPdBid = data.uPDBID; if (uPdBid == 0) { continue; } int uCamp = data.nCamp; // 如果找到这个元素就清空重新把元素加入进去 if (recordInfoArry.ContainsKey(uPdBid)) { // 找到的更新 WarPersonInfo tmpRecordInfo = recordInfoArry[uPdBid]; doPersonAliveAssistBrodcast(tmpRecordInfo, data.nAliveContAssist); tmpRecordInfo.nLevel = data.nLevel; tmpRecordInfo.nID = data.uID; tmpRecordInfo.nKillNum = data.nKillNum; tmpRecordInfo.nDeadNum = data.nDeadNum; tmpRecordInfo.nAssists = data.nAssists; tmpRecordInfo.nMobaWarMoney = data.nKillMonsterNum; tmpRecordInfo.bIsHero = data.isProtag; tmpRecordInfo.nAliveContAssist = data.nAliveContAssist; tmpRecordInfo.nDestroyTower = data.nDestroyTower; if (tmpRecordInfo.nSummerIconID <= 0) { tmpRecordInfo.nSummerIconID = data.nSummerIconID; tmpRecordInfo.sSummerDesc = data.szSummerDesc; } recordInfoArry[uPdBid] = tmpRecordInfo; } else { WarPersonInfo warPersonInfo = new WarPersonInfo(); FillWarPersonInfo(ref warPersonInfo, data); recordInfoArry.Add(data.uPDBID, warPersonInfo); } } if (this.IsWarRecordTableVisible == true) { UISystem.Instance.SendWndMessage(WndMsgID.WND_MSG_RECORDTABLE_FIGHTING_UPDATERECORDINFO, null); } if (m_bUpdateTeamInfo) { UISystem.Instance.SendWndMessage(WndMsgID.WND_MSG_TEAMMATEINFO_UPDATETEAMINFO, null); } UISystem.Instance.SendWndMessage(WndMsgID.WND_MSG_WAR_UPDATEPLAYERINFO, null); }
/// <summary> /// 更新阵营玩家 /// </summary> /// <param name="ptrParam"></param> /// <param name="nLen"></param> public void UpdateCampPlayer(IntPtr ptrParam, int nLen) { if (StageManager.Instance.CurPermissionState != EStage_PermissionState.ESPS_OB) { return; } if (StageManager.Instance.CurSubState != EStage_SubState.ESSS_WAR) { return; } IntPtrVaArgParseHelper helper = new IntPtrVaArgParseHelper(ptrParam, nLen); cmd_war_personInfo_count cmdCount = helper.get <cmd_war_personInfo_count>(); for (int i = 0; i < cmdCount.nCount; ++i) { cmd_war_personinfo data = helper.get <cmd_war_personinfo>(); if (data.uID < 1) { continue; } if (!m_PlayerEntitiesMap.ContainsKey(data.nCamp)) { m_PlayerEntitiesMap.Add(data.nCamp, new List <int>()); } if (!m_PlayerEntitiesMap[data.nCamp].Contains(data.uID)) { m_PlayerEntitiesMap[data.nCamp].Add(data.uID); } if (!m_PlayerEntitiesList.Contains(data.uID)) { m_PlayerEntitiesList.Add(data.uID); } } }