コード例 #1
0
        internal void OnMapGenerated(Map map, MapGeneratorDef usedMapGenerator)
        {
            RerollToolbox.StoreGeneratedThingIdsInMapState(map);
            var mapState = RerollToolbox.GetStateForMap(map);

            mapState.UsedMapGenerator = usedMapGenerator;
            if (!rerollInProgress)
            {
                mapState.ResourceBalance = MaxResourceBalance;
            }
        }
コード例 #2
0
        public void DoReroll()
        {
            var map    = Find.CurrentMap;
            var logger = MapRerollController.Instance.Logger;

            if (RerollInProgress)
            {
                logger.Error("Cannot reroll geysers- reroll already in progress");
                return;
            }
            if (map == null)
            {
                logger.Error("No visible map- cannot reroll geysers");
                return;
            }
            var state = RerollToolbox.GetStateForMap(map);

            if (state.UsedMapGenerator == null)
            {
                logger.Error($"Cannot reroll geysers: map {map} does not have a recorded MapGeneratorDef");
                return;
            }
            var geyserDef  = ThingDefOf.SteamGeyser;
            var genStepDef = state.UsedMapGenerator.genSteps.FirstOrDefault(g => g.genStep is GenStep_ScatterThings &&
                                                                            (g.genStep as GenStep_ScatterThings).thingDef == geyserDef);

            if (genStepDef == null)
            {
                logger.Error($"Cannot reroll geysers: map generator {state.UsedMapGenerator} does not have a geyser GenStep");
                return;
            }
            drawnArrows.Clear();
            activeSteamEffects.Clear();
            var geysersOnMap = map.listerThings.AllThings.Where(t => t.def == geyserDef);
            var oldGeysers   = new HashSet <Thing>(geysersOnMap);

            genStepDef.genStep.Generate(map, new GenStepParams());
            var newGeysers = map.listerThings.AllThings.Where(t => t.def == geyserDef).Except(oldGeysers);

            BeginGeyserSpawning(oldGeysers, newGeysers, map);
        }