VOID CTeamOrGroup::FillMyInfo(TeamMemberInfo* member) { Assert( member ); CObject_PlayerMySelf* pMe = CObjectManager::GetMe()->GetMySelf(); Assert( member->m_GUID == pMe->GetServerGUID() ); CCharacterData* pMyData = pMe->GetCharacterData(); if(NULL == pMyData) { return ; } strncpy(member->m_szNick, pMyData->Get_Name(), MAX_CHARACTER_NAME-1); std::string utfstr; StringConvert::mbcs_to_utf8(member->m_szNick,utfstr); strncpy(member->m_szUtf8Nick,utfstr.c_str(),MAX_CHARACTER_NAME*2-1); member->m_szNick[MAX_CHARACTER_NAME-1] = '\0'; member->m_szUtf8Nick[MAX_CHARACTER_NAME*2-1]; member->m_uFamily = pMyData->Get_MenPai(); member->m_uDataID = pMyData->Get_RaceID(); member->m_uLevel = pMyData->Get_Level(); member->m_nPortrait = pMyData->Get_PortraitID(); // 头像 member->m_WorldPos.m_fX = pMe->GetPosition().x; member->m_WorldPos.m_fZ = pMe->GetPosition().z; member->m_nHP = pMyData->Get_HP(); member->m_dwMaxHP = pMyData->Get_MaxHP(); member->m_nMP = pMyData->Get_MP(); member->m_dwMaxMP = pMyData->Get_MaxMP(); member->m_nAnger = pMyData->Get_Rage(); // 怒气 member->m_WeaponID = pMyData->Get_Equip(HEQUIP_MAINHAND); member->m_AssiID = pMyData->Get_Equip(HEQUIP_ASSIHAND); member->m_CapID = pMyData->Get_Equip(HEQUIP_HEAD); member->m_ArmourID = pMyData->Get_Equip(HEQUIP_BACK); member->m_ShoulderID = pMyData->Get_Equip(HEQUIP_SHOULDER); member->m_CuffID = pMyData->Get_Equip(HEQUIP_WRIST); member->m_FootID = pMyData->Get_Equip(HEQUIP_FEET); member->m_uFaceMeshID = pMyData->Get_FaceMesh(); member->m_uHairMeshID = pMyData->Get_HairMesh(); member->m_uHairColor = pMyData->Get_HairColor(); member->m_bDead = ( pMe->CharacterLogic_Get( CObject_Character::LOGIC_BASE ) == CObject_Character::CHARACTER_LOGIC_DEAD ); }
VOID CTeamOrGroup::AddMember(TeamMemberInfo* member, TeamID_t TeamID, BYTE TeamIndex) { TeamMemberInfo* pTMInfo = new TeamMemberInfo; //memcpy((VOID*)pTMInfo, member, sizeof(TeamMemberInfo)); pTMInfo->m_GUID = member->m_GUID; pTMInfo->m_OjbID = member->m_OjbID; // pTMInfo->m_SceneID = member->m_SceneID; pTMInfo->m_uFamily = member->m_uFamily; // 2.职业 pTMInfo->m_uDataID = member->m_uDataID; // 3.性别 pTMInfo->m_nPortrait = member->m_nPortrait; // 5.头像 memcpy(pTMInfo->m_szNick, member->m_szNick, sizeof(pTMInfo->m_szNick)); std::string utfstr; StringConvert::mbcs_to_utf8(pTMInfo->m_szNick,utfstr); strncpy(pTMInfo->m_szUtf8Nick,utfstr.c_str(),MAX_CHARACTER_NAME*2-1); CObject_PlayerMySelf* pObj = CObjectManager::GetMe()->GetMySelf(); if( pTMInfo->m_GUID != pObj->GetServerGUID() ) { // 需要加载队友的头像窗口 // 请求该队友的数据 CGAskTeamMemberInfo Msg; Msg.SetSceneID( pTMInfo->m_SceneID ); Msg.setObjID( pTMInfo->m_OjbID ); Msg.SetGUID( pTMInfo->m_GUID ); CNetManager::GetMe()->SendPacket( &Msg ); } else { FillMyInfo( pTMInfo ); } switch(m_Type) { // 创建队伍 case 0: { CreateTeam(pTMInfo, TeamID); } break; // 队伍加人的情况 case TEAM_TYPE: { if( m_TeamMembers.size() >= MAX_TEAM_MEMBER ) // 最大的队伍人数 { Assert(FALSE); return; } m_TeamMembers.push_back(pTMInfo); } break; // 团队加人的情况 case GROUP_TYPE: { if( TeamIndex < 0 || TeamIndex >= MAX_TEAMS_IN_GROUP ) // 团队中最大队伍数量 { Assert(FALSE); return; } ++TeamIndex; // 默认传入的数字为 0 ~ MAX_TEAMS_IN_GROUP-1 TeamInfo* pTeamInfo = GetTeam(TeamIndex); if(pTeamInfo != NULL) { if(pTeamInfo->m_TeamMembers.size() >= MAX_TEAM_MEMBER) { Assert(FALSE); return; } } // 如果该小组不存在,则创建,并添加入团队 else { pTeamInfo = new TeamInfo; pTeamInfo->m_TeamID = TeamIndex; m_TeamInfo.push_back(pTeamInfo); //队伍满 if(pTeamInfo->m_TeamMembers.size() >= MAX_TEAM_MEMBER) { CObjectManager::GetMe()->GetMySelf()->GetCharacterData()->Set_TeamFullFlag(TRUE); } } pTeamInfo->m_TeamMembers.push_back(pTMInfo); if( pTMInfo->m_GUID == pObj->GetServerGUID() ) { m_MyTeamID = TeamIndex; } } break; default: Assert(FALSE); return; } // 创建一个界面的模型. pTMInfo->m_UIModel.CreateNewUIModel(); // 设置ui模型 // 设置职业 pTMInfo->m_UIModel.m_pAvatar->GetCharacterData()->Set_MenPai( pTMInfo->m_uFamily ); // 设置性别 pTMInfo->m_UIModel.m_pAvatar->GetCharacterData()->Set_RaceID( pTMInfo->m_uDataID ); }