1
Fork 0
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:
Mordred 2023-02-09 17:58:25 +01:00
parent 9d647e2bde
commit 6a9f5b683f
4 changed files with 55 additions and 18 deletions

View file

@ -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;

View file

@ -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 );
};

View file

@ -249,26 +249,63 @@ void FreeCompanyMgr::onFcLogin( uint64_t characterId )
if( !fc )
return;
uint64_t onlinePlayers = 1;
auto fcResult = makeFcResult( *player, fc->getId(), onlinePlayers,
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 );
}

View file

@ -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 );
};