private static bool CheckAvailability( IExtraRole role, ICollection all, ICollection imposters, ICollection crew) { var needed = role.GetNeededRoles(); var impNeeded = needed.Count(t => t == RoleType.Imposter); var crewNeeded = needed.Count(t => t == RoleType.Crewmate); var eitherNeeded = needed.Count(t => t == RoleType.Either); if (crewNeeded > crew.Count) { return(false); } if (impNeeded > imposters.Count) { return(false); } if (all.Count - impNeeded - crewNeeded < eitherNeeded) { return(false); } return(true); }
public void RegisterRole(IExtraRole role) { _roles.Add(role.GetName().ToLower(), role); _logger.LogInformation($"The role {role.GetName()} has been registered!"); }