Exemplo n.º 1
0
        public static void Save(Map map)
        {
            var decider = new CompressibilityDecider(map);

            map.compressor.compressibilityDecider = decider;
            decider.DetermineReferences();

            BinaryWriter rockData       = new BinaryWriter(new MemoryStream());
            BinaryWriter rockRubbleData = new BinaryWriter(new MemoryStream());
            BinaryWriter plantData      = new BinaryWriter(new MemoryStream());

            int cells = map.info.NumCells;

            for (int i = 0; i < cells; i++)
            {
                IntVec3 cell = map.cellIndices.IndexToCell(i);
                SaveRock(map, rockData, cell);
                SaveRockRubble(map, rockRubbleData, cell);
                SavePlant(map, plantData, cell);
            }

            SaveBinary(rockData, CompressedRocks);
            SaveBinary(rockRubbleData, CompressedRockRubble);
            SaveBinary(plantData, CompressedPlants);
        }
Exemplo n.º 2
0
        static void Postfix(CompressibilityDecider __instance)
        {
            HashSet <Thing> referencedThings =
                (HashSet <Thing>) typeof(CompressibilityDecider).InvokeMember("referencedThings",
                                                                              BindingFlags.GetField | BindingFlags.Instance | BindingFlags.NonPublic,
                                                                              null, __instance, null);
            Map map = (Map)typeof(CompressibilityDecider).InvokeMember("map",
                                                                       BindingFlags.GetField | BindingFlags.Instance | BindingFlags.NonPublic,
                                                                       null, __instance, null);

            foreach (Thing t in HaulExplicitly.GetManager(map).haulables)
            {
                referencedThings.Add(t);
            }
        }