mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-09-16 07:12:27 +02:00
37 lines
1.0 KiB
C#
37 lines
1.0 KiB
C#
using System.Linq;
|
|
using Robust.Shared.Interfaces.GameObjects;
|
|
|
|
namespace Robust.Shared.Localization.Macros
|
|
{
|
|
/// <summary>
|
|
/// Genders for grammatical usage only.
|
|
/// </summary>
|
|
public enum Gender
|
|
{
|
|
Epicene,
|
|
Female,
|
|
Male,
|
|
Neuter,
|
|
}
|
|
|
|
public interface IGenderable
|
|
{
|
|
public Gender Gender => Gender.Epicene;
|
|
|
|
/// <summary>
|
|
/// Helper function to get the gender of an object, or Epicene if the object is not IGenderable
|
|
/// </summary>
|
|
public static Gender GetGenderOrEpicene(object argument)
|
|
{
|
|
// FIXME The Entity special case is not really good
|
|
if (argument is IEntity entity)
|
|
{
|
|
// FIXME And this is not really better.
|
|
return Enumerable.FirstOrDefault(entity.GetAllComponents<IGenderable>())?.Gender ?? Gender.Epicene;
|
|
}
|
|
else
|
|
return (argument as IGenderable)?.Gender ?? Gender.Epicene;
|
|
}
|
|
}
|
|
}
|