#pragma once

#include "Entity.h"

struct Team
{
	LWOOBJID teamID = LWOOBJID_EMPTY;
	char lootOption = 0;
	std::vector<LWOOBJID> members{};
	char lootRound = 0;
};

class TeamManager
{
public:
	static TeamManager* Instance() {
		if (!m_Address) {
			m_Address = new TeamManager();
		}

		return m_Address;
	}

	Team* GetTeam(LWOOBJID member) const;
	LWOOBJID GetNextLootOwner(Team* team) const;
	void UpdateTeam(LWOOBJID teamId, char lootOption, const std::vector<LWOOBJID>& members);
	void DeleteTeam(LWOOBJID teamId);

	explicit TeamManager();
	~TeamManager();

private:
	static TeamManager* m_Address; //For singleton method
	std::unordered_map<LWOOBJID, Team*> m_Teams{};
};