mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-26 14:37:44 +00:00
Fixed an issue with a missing lookup table update. Removed unneeded functions.
This commit is contained in:
parent
9d647e2bde
commit
6a9f5b683f
4 changed files with 55 additions and 18 deletions
|
@ -203,11 +203,6 @@ std::set< uint64_t >& Sapphire::FreeCompany::getMemberIdList()
|
|||
return m_memberIds;
|
||||
}
|
||||
|
||||
void Sapphire::FreeCompany::addInvite( uint64_t memberId )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Sapphire::FreeCompany::addMember( uint64_t memberId, uint8_t hierarchyId, uint32_t lastLogout )
|
||||
{
|
||||
FcMember member{ memberId, hierarchyId, lastLogout };
|
||||
|
@ -215,6 +210,12 @@ void Sapphire::FreeCompany::addMember( uint64_t memberId, uint8_t hierarchyId, u
|
|||
m_memberIds.insert( memberId );
|
||||
}
|
||||
|
||||
void Sapphire::FreeCompany::removeMember( uint64_t memberId )
|
||||
{
|
||||
m_memberDetails.erase( memberId );
|
||||
m_memberIds.erase( memberId );
|
||||
}
|
||||
|
||||
void Sapphire::FreeCompany::setChatChannel( uint64_t chatChannelId )
|
||||
{
|
||||
m_chatChannelId = chatChannelId;
|
||||
|
|
|
@ -140,12 +140,8 @@ namespace Sapphire
|
|||
void setChatChannel( uint64_t chatChannelId );
|
||||
|
||||
void addMember( uint64_t memberId, uint8_t hierarchyId, uint32_t lastLogout );
|
||||
|
||||
void removeMember( uint64_t memberId );
|
||||
|
||||
void addInvite( uint64_t memberId );
|
||||
|
||||
void removeInvite( uint64_t memberId );
|
||||
|
||||
|
||||
};
|
||||
|
|
|
@ -249,26 +249,63 @@ void FreeCompanyMgr::onFcLogin( uint64_t characterId )
|
|||
if( !fc )
|
||||
return;
|
||||
|
||||
uint64_t onlinePlayers = 1;
|
||||
auto fcResult = makeFcResult( *player, fc->getId(), onlinePlayers,
|
||||
FreeCompanyResultPacket::ResultType::FcLogin,
|
||||
0, FreeCompanyResultPacket::UpdateStatus::Execute,
|
||||
fc->getName(), fc->getTag() );
|
||||
m_onlinePlayers++;
|
||||
auto fcResultSelf = makeFcResult( *player, fc->getId(), m_onlinePlayers,
|
||||
FreeCompanyResultPacket::ResultType::FcLogin,
|
||||
0, FreeCompanyResultPacket::UpdateStatus::Execute,
|
||||
fc->getName(), fc->getTag() );
|
||||
|
||||
server.queueForPlayer( player->getCharacterId(), fcResult );
|
||||
server.queueForPlayer( player->getCharacterId(), fcResultSelf );
|
||||
|
||||
// todo - send packet to rest of fc members
|
||||
auto fcResultOthers = makeFcResult( *player, fc->getId(), m_onlinePlayers,
|
||||
FreeCompanyResultPacket::ResultType::FcLogin,
|
||||
0, FreeCompanyResultPacket::UpdateStatus::Member,
|
||||
fc->getName(), player->getName() );
|
||||
|
||||
server.queueForFreeCompany( fc->getId(), fcResultOthers, { characterId } );
|
||||
}
|
||||
|
||||
void FreeCompanyMgr::onFcLogout( uint64_t characterId )
|
||||
{
|
||||
auto& server = Common::Service< World::WorldServer >::ref();
|
||||
auto player = server.getPlayer( characterId );
|
||||
if( !player )
|
||||
return;
|
||||
|
||||
auto fc = getPlayerFreeCompany( player->getCharacterId() );
|
||||
if( !fc )
|
||||
return;
|
||||
|
||||
m_onlinePlayers--;
|
||||
auto fcResultOthers = makeFcResult( *player, fc->getId(), m_onlinePlayers,
|
||||
FreeCompanyResultPacket::ResultType::FcLogout,
|
||||
0, FreeCompanyResultPacket::UpdateStatus::Member,
|
||||
fc->getName(), player->getName() );
|
||||
|
||||
server.queueForFreeCompany( fc->getId(), fcResultOthers, { characterId } );
|
||||
}
|
||||
|
||||
void FreeCompanyMgr::onSignPetition( Entity::Player& source, Entity::Player& target )
|
||||
{
|
||||
|
||||
auto& server = Common::Service< World::WorldServer >::ref();
|
||||
auto fc = getPlayerFreeCompany( target.getCharacterId() );
|
||||
if( !fc )
|
||||
return;
|
||||
|
||||
addMember( fc->getId(), source.getCharacterId() );
|
||||
// todo - send fcresult packets
|
||||
auto fcResultSelf = makeFcResult( source, fc->getId(), m_onlinePlayers,
|
||||
FreeCompanyResultPacket::ResultType::FcCreateAccept,
|
||||
0, FreeCompanyResultPacket::UpdateStatus::Execute,
|
||||
fc->getName(), fc->getTag() );
|
||||
|
||||
server.queueForPlayer( source.getCharacterId(), fcResultSelf );
|
||||
|
||||
auto fcResultOthers = makeFcResult( source, fc->getId(), m_onlinePlayers,
|
||||
FreeCompanyResultPacket::ResultType::FcCreateAccept,
|
||||
0, FreeCompanyResultPacket::UpdateStatus::Member,
|
||||
fc->getName(), source.getName() );
|
||||
|
||||
server.queueForFreeCompany( fc->getId(), fcResultOthers, { source.getCharacterId() } );
|
||||
|
||||
}
|
||||
|
||||
|
@ -278,6 +315,7 @@ void FreeCompanyMgr::addMember( uint64_t fcId, uint64_t memberId )
|
|||
if( !pFc )
|
||||
return;
|
||||
|
||||
m_charaIdToFcIdMap[ memberId ] = fcId;
|
||||
dbInsertMember( fcId, memberId, 0 );
|
||||
pFc->addMember( memberId, 0, 0 );
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ namespace Sapphire::World::Manager
|
|||
std::unordered_map< uint64_t, uint64_t > m_charaIdToFcIdMap;
|
||||
|
||||
uint64_t m_maxFcId{ 0 };
|
||||
uint32_t m_onlinePlayers{ 0 };
|
||||
|
||||
public:
|
||||
|
||||
|
@ -68,6 +69,7 @@ namespace Sapphire::World::Manager
|
|||
// void joinLinkshell( uint64_t lsId, uint64_t characterId );
|
||||
|
||||
void onFcLogin( uint64_t characterId );
|
||||
void onFcLogout( uint64_t characterId );
|
||||
void onSignPetition( Entity::Player& source, Entity::Player& target );
|
||||
|
||||
};
|
||||
|
|
Loading…
Add table
Reference in a new issue