bool ActorGrantsValidArea(Actor a, RequiresBuildableAreaInfo rba) { return(rba.AreaTypes.Overlaps(a.TraitsImplementing <GivesBuildableArea>() .SelectMany(gba => gba.AreaTypes))); }
static bool AnyGivesBuildableArea(IEnumerable <Actor> actors, Player p, bool allyBuildEnabled, RequiresBuildableAreaInfo rba) { foreach (var a in actors) { if (!a.IsInWorld) { continue; } if (a.Owner != p && (!allyBuildEnabled || a.Owner.RelationshipWith(p) != PlayerRelationship.Ally)) { continue; } var overlaps = rba.AreaTypes.Overlaps(a.TraitsImplementing <GivesBuildableArea>() .SelectMany(gba => gba.AreaTypes)); if (overlaps) { return(true); } } return(false); }