public static bool TryGetClosest(string kingdomType, Vector3Int position, out NpcKingdom kingdom) { if (Count < 1) { kingdom = null; return(false); } kingdom = GetAllByType(kingdomType).OrderBy(npcKingdom => Pipliz.Math.ManhattanDistance(position, npcKingdom.Origin)).First(); return(true); }
public static void UnregisterKingdom(NpcKingdom npcKingdom) { try { KingdomsLock.EnterWriteLock(); Kingdoms.Remove(npcKingdom); } finally { if (KingdomsLock.IsWriteLockHeld) { KingdomsLock.ExitWriteLock(); } } }
public static void RegisterKingdom(NpcKingdom npcKingdom) { try { KingdomsLock.EnterWriteLock(); Kingdoms.Add(npcKingdom); } finally { if (KingdomsLock.IsWriteLockHeld) { KingdomsLock.ExitWriteLock(); } } npcKingdom.StartThread(); }