namespace Content.Server.Maps;
///
/// Manages which station map will be used for the next round.
///
public interface IGameMapManager
{
void Initialize();
///
/// Returns all maps eligible to be played right now.
///
/// enumerator of map prototypes
IEnumerable CurrentlyEligibleMaps();
///
/// Returns all maps that can be voted for.
///
/// enumerator of map prototypes
IEnumerable AllVotableMaps();
///
/// Returns all maps.
///
/// enumerator of map prototypes
IEnumerable AllMaps();
///
/// Gets the currently selected map
///
/// selected map
GameMapPrototype? GetSelectedMap();
///
/// Clears the selected map, if any
///
void ClearSelectedMap();
///
/// Attempts to select the given map, checking eligibility criteria
///
/// map prototype
/// success or failure
bool TrySelectMapIfEligible(string gameMap);
///
/// Select the given map regardless of eligibility
///
/// map prototype
/// success or failure
void SelectMap(string gameMap);
///
/// Selects a random map eligible map
///
void SelectMapRandom();
///
/// Selects the map at the front of the rotation queue
///
/// selected map
void SelectMapFromRotationQueue(bool markAsPlayed = false);
///
/// Selects the map by following rules set in the config
///
public void SelectMapByConfigRules();
///
/// Checks if the given map exists
///
/// name of the map
/// existence
bool CheckMapExists(string gameMap);
}