45 lines
1.0 KiB
C#
45 lines
1.0 KiB
C#
|
using rjw;
|
|||
|
using rjwquirks.Data;
|
|||
|
using System.Collections.Generic;
|
|||
|
using Verse;
|
|||
|
|
|||
|
namespace rjwquirks.Modules.Shared.PawnSelectors
|
|||
|
{
|
|||
|
public class HasRaceTag : PawnSelector
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// For def load only. Use RaceTag property
|
|||
|
/// </summary>
|
|||
|
public string raceTag;
|
|||
|
|
|||
|
public RaceTags RaceTag
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
if (RaceTags.TryParse(raceTag, out RaceTags tag))
|
|||
|
return tag;
|
|||
|
return null;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public override bool PawnSatisfies(Pawn pawn) => pawn.HasRaceTag(RaceTag);
|
|||
|
|
|||
|
public override IEnumerable<string> ConfigErrors()
|
|||
|
{
|
|||
|
foreach (string error in base.ConfigErrors())
|
|||
|
{
|
|||
|
yield return error;
|
|||
|
}
|
|||
|
|
|||
|
if (raceTag.NullOrEmpty())
|
|||
|
{
|
|||
|
yield return "<raceTag> is empty";
|
|||
|
}
|
|||
|
else if (!RaceTags.TryParse(raceTag, out _))
|
|||
|
{
|
|||
|
yield return $"\"{raceTag}\" is not a valid RaceTag";
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|