DarkflameServer/dGame/TeamManager.cpp
2022-07-28 08:39:57 -05:00

63 lines
1.1 KiB
C++

#include "TeamManager.h"
#include "EntityManager.h"
TeamManager* TeamManager::m_Address = nullptr; //For singleton method
TeamManager::TeamManager() {
}
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;
}
LWOOBJID TeamManager::GetNextLootOwner(Team* team) const {
team->lootRound++;
if (team->lootRound >= team->members.size()) {
team->lootRound = 0;
}
return team->members[team->lootRound];
}
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;
}
void TeamManager::DeleteTeam(LWOOBJID teamId) {
const auto& pair = m_Teams.find(teamId);
if (pair == m_Teams.end()) return;
delete pair->second;
m_Teams.erase(teamId);
}
TeamManager::~TeamManager() {
}