DarkflameServer/dGame/TeamManager.cpp

63 lines
1.1 KiB
C++
Raw Normal View History

#include "TeamManager.h"
#include "EntityManager.h"
TeamManager* TeamManager::m_Address = nullptr; //For singleton method
2022-07-28 13:39:57 +00:00
TeamManager::TeamManager() {
}
2022-07-28 13:39:57 +00:00
Team* TeamManager::GetTeam(LWOOBJID member) const {
for (const auto& pair : m_Teams) {
for (const auto memberId : pair.second->members) {
if (memberId == member) {
return pair.second;
}
}
}
return nullptr;
}
2022-07-28 13:39:57 +00:00
LWOOBJID TeamManager::GetNextLootOwner(Team* team) const {
team->lootRound++;
2022-07-28 13:39:57 +00:00
if (team->lootRound >= team->members.size()) {
team->lootRound = 0;
}
2022-07-28 13:39:57 +00:00
return team->members[team->lootRound];
}
2022-07-28 13:39:57 +00:00
void TeamManager::UpdateTeam(LWOOBJID teamId, char lootOption, const std::vector<LWOOBJID>& members) {
const auto& pair = m_Teams.find(teamId);
Team* team;
if (pair == m_Teams.end()) {
if (members.size() <= 1) {
return;
}
team = new Team();
m_Teams[teamId] = team;
} else {
team = pair->second;
}
team->members = members;
team->lootOption = lootOption;
}
2022-07-28 13:39:57 +00:00
void TeamManager::DeleteTeam(LWOOBJID teamId) {
const auto& pair = m_Teams.find(teamId);
2022-07-28 13:39:57 +00:00
if (pair == m_Teams.end()) return;
2022-07-28 13:39:57 +00:00
delete pair->second;
2022-07-28 13:39:57 +00:00
m_Teams.erase(teamId);
}
2022-07-28 13:39:57 +00:00
TeamManager::~TeamManager() {
}