public override float GetScore(Room room)
        {
            float num  = 0f;
            int   num2 = 0;

            RoomStatWorker_Beauty.countedThings.Clear();
            foreach (IntVec3 cell in room.Cells)
            {
                num += BeautyUtility.CellBeauty(cell, room.Map, RoomStatWorker_Beauty.countedThings);
                num2++;
            }
            RoomStatWorker_Beauty.countedAdjCells.Clear();
            List <Thing> containedAndAdjacentThings = room.ContainedAndAdjacentThings;

            for (int i = 0; i < containedAndAdjacentThings.Count; i++)
            {
                Thing thing = containedAndAdjacentThings[i];
                if (thing.GetRoom(RegionType.Set_Passable) != room && !RoomStatWorker_Beauty.countedAdjCells.Contains(thing.Position))
                {
                    num += BeautyUtility.CellBeauty(thing.Position, room.Map, RoomStatWorker_Beauty.countedThings);
                    RoomStatWorker_Beauty.countedAdjCells.Add(thing.Position);
                }
            }
            RoomStatWorker_Beauty.countedThings.Clear();
            if (num2 == 0)
            {
                return(0f);
            }
            return(num / RoomStatWorker_Beauty.CellCountCurve.Evaluate((float)num2));
        }
예제 #2
0
        public static float AverageBeautyPerceptible(IntVec3 root, Map map)
        {
            float result;

            if (!root.IsValid || !root.InBounds(map))
            {
                result = 0f;
            }
            else
            {
                BeautyUtility.tempCountedThings.Clear();
                float num  = 0f;
                int   num2 = 0;
                BeautyUtility.FillBeautyRelevantCells(root, map);
                for (int i = 0; i < BeautyUtility.beautyRelevantCells.Count; i++)
                {
                    num += BeautyUtility.CellBeauty(BeautyUtility.beautyRelevantCells[i], map, BeautyUtility.tempCountedThings);
                    num2++;
                }
                BeautyUtility.tempCountedThings.Clear();
                if (num2 == 0)
                {
                    result = 0f;
                }
                else
                {
                    result = num / (float)num2;
                }
            }
            return(result);
        }
예제 #3
0
        public static float AverageBeautyPerceptible(IntVec3 root, Map map)
        {
            BeautyUtility.tempCountedThings.Clear();
            float num  = 0f;
            int   num2 = 0;

            BeautyUtility.FillBeautyRelevantCells(root, map);
            for (int i = 0; i < BeautyUtility.beautyRelevantCells.Count; i++)
            {
                num += BeautyUtility.CellBeauty(BeautyUtility.beautyRelevantCells[i], map, BeautyUtility.tempCountedThings);
                num2++;
            }
            num /= (float)num2;
            BeautyUtility.tempCountedThings.Clear();
            return(num);
        }