private IEnumerator ClearCacheQueue() { yield return(0); do { var list = clearCacheQueue.ToList(); foreach (var buildingId in list) { if (--cooldown > 0) { yield return(0); } if (BoardsContainers[buildingId, 0, 0] is BoardBunchContainerBuilding[] bbcb) { foreach (var item in bbcb) { item.ClearCache(); } } WTSBuildingDataCaches.PurgeBuildingCache(buildingId); clearCacheQueue.Remove(buildingId); yield return(0); } } while (clearCacheQueue.Count > 0); currentCacheCoroutine = null; }
#pragma warning disable IDE0051 // Remover membros privados não utilizados private static void OnNodeChanged(ref ushort node) { ushort node_ = node; SimulationManager.instance.AddAction(() => EventNodeChanged?.Invoke(node_)).Execute(); WTSBuildingDataCaches.PurgeStopCache(node); }
public static void BeforeRemoveStop(ref TransportLine __instance, int index, ushort lineID) { if ((__instance.m_flags & TransportLine.Flags.Temporary) != TransportLine.Flags.None || __instance.m_stops > NetManager.MAX_NODE_COUNT) { return; } ushort num; if (index == -1) { index += __instance.CountStops(lineID); } num = __instance.m_stops; for (int i = 0; i < index && num <= NetManager.MAX_NODE_COUNT; i++) { num = TransportLine.GetNextStop(num); if (num == __instance.m_stops) { break; } } WTSBuildingDataCaches.PurgeStopCache(num); }
public static void AfterRemoveLine(ushort lineID) => WTSBuildingDataCaches.PurgeLineCache(lineID);