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();
///
/// Attempts to select the given map.
///
/// map prototype
/// success or failure
bool TrySelectMap(string gameMap);
///
/// Forces the given map, making sure the game map manager won't reselect if conditions are no longer met at round restart.
///
/// map prototype
/// success or failure
void ForceSelectMap(string gameMap);
///
/// Selects a random map.
///
void SelectRandomMap();
///
/// Gets the currently selected map, without double-checking if it can be used.
///
/// selected map
GameMapPrototype GetSelectedMap();
///
/// Gets the currently selected map, double-checking if it can be used.
///
/// selected map
GameMapPrototype GetSelectedMapChecked(bool loud = false, bool markAsPlayed = false);
///
/// Checks if the given map exists
///
/// name of the map
/// existence
bool CheckMapExists(string gameMap);
}