Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
0
 public void Reset()
 {
     _nextUpdateTick = 0;
     RelevantRooms.Clear();
 }