public void Update(int updateDelay) { var tick = Find.TickManager.TicksGame; if (_nextUpdateTick != 0 && tick < _nextUpdateTick) { return; } _nextUpdateTick = tick + updateDelay; _infoChanged = true; RelevantRooms.Clear(); var map = Find.CurrentMap; var listerBuildings = map.listerBuildings; // Room roles are defined by buildings, so only need to check rooms with buildings foreach (var building in listerBuildings.allBuildingsColonist) { var room = GetRoomContainingBuildingIfRelevant(building, map); if (room == null) { continue; } if (RelevantRooms.ContainsKey(room)) { continue; } var stats = GetRoomStats(room); if (stats.Count == 0) { continue; } var roomInfo = new RoomInfo( stats, GetPanelTopLeftCornerForRoom(room, map), stats.Max(s => s.MaxLevel), (string)_roomLabelGetter?.Invoke(null, new object[] { room }) ?? room.Role.LabelCap ); RelevantRooms[room] = roomInfo; } }
public void Reset() { _nextUpdateTick = 0; RelevantRooms.Clear(); }