Skip to content

Commit 7792a38

Browse files
committed
More nanoseconds
1 parent de8a6dd commit 7792a38

1 file changed

Lines changed: 32 additions & 10 deletions

File tree

src/SquadMgr/SquadMgr.cpp

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -955,7 +955,7 @@ void CSquadMgr::GetKPData(PlayerInfo_t& aPlayer)
955955

956956
{
957957
const std::lock_guard<std::mutex> lock(this->KPMutex);
958-
this->KPData[aAccountName] = kpmeInfo;
958+
this->KPData.emplace(aAccountName, kpmeInfo);
959959
}
960960
}
961961
catch (json::parse_error& exc)
@@ -970,11 +970,22 @@ void CSquadMgr::OnGroupMemberJoin(RTAPI::GroupMember* aGroupMember)
970970
{
971971
const std::lock_guard<std::mutex> lock(this->Mutex);
972972

973-
auto& player = this->Players[aGroupMember->AccountName];
974-
player.Member = *aGroupMember;
975-
player.HasLeft = 0; /* Reset in case the player rejoined without removal. */
973+
auto plIt = this->Players.find(aGroupMember->AccountName);
976974

977-
GetKPData(player);
975+
if (plIt != this->Players.end())
976+
{
977+
plIt->second.Member = *aGroupMember;
978+
plIt->second.HasLeft = 0;
979+
980+
GetKPData(plIt->second);
981+
}
982+
else
983+
{
984+
auto [newIt, inserted] = this->Players.emplace(aGroupMember->AccountName, PlayerInfo_t{ *aGroupMember });
985+
// HasLeft is null initialized.
986+
987+
GetKPData(newIt->second);
988+
}
978989
}
979990
void CSquadMgr::OnGroupMemberLeave(RTAPI::GroupMember* aGroupMember)
980991
{
@@ -994,20 +1005,31 @@ void CSquadMgr::OnGroupMemberLeave(RTAPI::GroupMember* aGroupMember)
9941005
auto it = this->Players.find(aGroupMember->AccountName);
9951006
if (it != this->Players.end())
9961007
{
997-
this->Players[aGroupMember->AccountName].HasLeft = Time::GetTimestamp();
1008+
it->second.HasLeft = Time::GetTimestamp();
9981009
}
9991010
}
10001011
}
10011012
void CSquadMgr::OnGroupMemberUpdate(RTAPI::GroupMember* aGroupMember)
10021013
{
1014+
/* Code is identical to Join. */
10031015
const std::lock_guard<std::mutex> lock(this->Mutex);
10041016

1005-
auto& player = this->Players[aGroupMember->AccountName];
1017+
auto plIt = this->Players.find(aGroupMember->AccountName);
10061018

1007-
player.Member = *aGroupMember;
1008-
player.HasLeft = 0; /* Reset in case the player rejoined without removal. */
1019+
if (plIt != this->Players.end())
1020+
{
1021+
plIt->second.Member = *aGroupMember;
1022+
plIt->second.HasLeft = 0;
1023+
1024+
GetKPData(plIt->second);
1025+
}
1026+
else
1027+
{
1028+
auto [newIt, inserted] = this->Players.emplace(aGroupMember->AccountName, PlayerInfo_t{*aGroupMember});
1029+
// HasLeft is null initialized.
10091030

1010-
GetKPData(player);
1031+
GetKPData(newIt->second);
1032+
}
10111033
}
10121034

10131035
void CSquadMgr::OnAgentJoin(AgentUpdate* aAgentUpdate)

0 commit comments

Comments
 (0)