From cd9647f999587dd8feef7b5fbf155ae8a754f751 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Fri, 21 Apr 2023 20:52:32 +0500 Subject: [PATCH] Simplified GetAdjacentBuilding methods --- .../ExtensionMethods/PawnExtensions.cs | 26 ++++--------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/Source/RJWSexperience/ExtensionMethods/PawnExtensions.cs b/Source/RJWSexperience/ExtensionMethods/PawnExtensions.cs index 15f8175..aa40cfc 100644 --- a/Source/RJWSexperience/ExtensionMethods/PawnExtensions.cs +++ b/Source/RJWSexperience/ExtensionMethods/PawnExtensions.cs @@ -31,38 +31,22 @@ namespace RJWSexperience return 1.0f; } - public static T GetAdjacentBuilding(this Pawn pawn) where T : Building - { - if (!pawn.Spawned) - return null; - - EdificeGrid edifice = pawn.Map.edificeGrid; - if (edifice[pawn.Position] is T building) - return building; - foreach (IntVec3 pos in GenAdjFast.AdjacentCells8Way(pawn.Position)) - { - if (edifice[pos] is T adjBuilding) - return adjBuilding; - } - return null; - } + public static T GetAdjacentBuilding(this Pawn pawn) where T : Building => GetAdjacentBuildings(pawn).FirstOrFallback(); public static IEnumerable GetAdjacentBuildings(this Pawn pawn) where T : Building { - var results = new List(); - if (!pawn.Spawned) - return results; + yield break; EdificeGrid edifice = pawn.Map.edificeGrid; if (edifice[pawn.Position] is T building) - results.Add(building); + yield return building; + foreach (IntVec3 pos in GenAdjFast.AdjacentCells8Way(pawn.Position)) { if (pos.InBounds(pawn.Map) && edifice[pos] is T adjBuilding) - results.Add(adjBuilding); + yield return adjBuilding; } - return results; } ///