DarkflameServer/dGame/TeamManager.cpp

77 lines
1.3 KiB
C++
Raw Normal View History

#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()
{
}