public static void Postfix(PowerNetManager __instance)
 {
     if (Find.CurrentMap == __instance.map && (OverlayDrawHandler.ShouldDrawPowerGrid || ActiveCircuitsSettings.displayBadOnMain) && GenTicks.TicksAbs % 149 == 0)
     {
         ActiveCircuitsBase.UpdateAllNets(__instance.map);
     }
 }
Beispiel #2
0
    public override void SpawnSetup()
    {
        base.SpawnSetup();

        Find.ListerBuildings.Add(this);

        if (TransmitsPower)
        {
            PowerNetManager.Notify_TransmitterSpawned(this);
        }

        if (def.ConnectToPower)
        {
            PowerNetManager.Notify_ConnectorSpawned(this);
        }

        //Remake terrain meshes with new underwall under me
        if (def.coversFloor)
        {
            Find.MapDrawer.MapChanged(Position, MapChangeType.Terrain);
        }

        if (TransmitsPower || def.ConnectToPower)
        {
            Find.MapDrawer.MapChanged(Position, MapChangeType.PowerGrid, true, false);
        }

        foreach (IntVec3 sq in GenAdj.SquaresOccupiedBy(this))
        {
            Find.MapDrawer.MapChanged(sq, MapChangeType.Buildings);
            Find.GlowGrid.MarkGlowGridDirty(sq);
        }

        if (def.category == EntityCategory.Building)
        {
            Find.BuildingGrid.Register(this);
        }

        if (Faction == Faction.OfColony)
        {
            if (def.building != null && def.building.spawnedConceptLearnOpportunity != null)
            {
                Find.ConceptTracker.TeachOpportunity(def.building.spawnedConceptLearnOpportunity, OpportunityType.GoodToKnow);
            }
        }
    }
Beispiel #3
0
    public override void Destroy()
    {
        base.Destroy();

        GenLeaving.DoLeavingsFor(this, destroyMode);

        if (def.MakeFog)
        {
            Find.FogGrid.Notify_FogBlockerDestroyed(Position);
        }

        if (def.holdsRoof)
        {
            RoofCollapseChecker.Notify_RoofHolderDestroyed(this);
        }

        if (def.leaveTerrain != null && Map.Initialized)
        {
            foreach (IntVec3 loc in GenAdj.SquaresOccupiedBy(this))
            {
                Find.TerrainGrid.SetTerrain(loc, def.leaveTerrain);
            }
        }

        Find.ListerBuildings.Remove(this);

        if (TransmitsPower || def.ConnectToPower)
        {
            if (TransmitsPower)
            {
                PowerNetManager.Notify_TransmitterDespawned(this);
            }

            if (def.ConnectToPower)
            {
                PowerNetManager.Notify_ConnectorDespawned(this);
            }

            Find.MapDrawer.MapChanged(Position, MapChangeType.PowerGrid, true, false);
        }
    }
Beispiel #4
0
 public static void Postfix(PowerNetManager __instance, ref IntVec3 cell)
 {
     if (__instance.map.powerNetGrid.TransmittedPowerNetAt(cell) == null &&
         cell.GetFirstBuilding(__instance.map).TryGetComp <CompSteamAlternator>() != null)
     {
         Building_Steam alternator = null;
         foreach (Thing thing in cell.GetThingList(__instance.map))
         {
             if (thing.TryGetComp <CompSteamAlternator>() != null)
             {
                 alternator = (Building_Steam)thing;
                 break;
             }
         }
         PowerNet powerNet = new PowerNet(new List <CompPower> {
             alternator.PowerComp
         });
         __instance.RegisterPowerNet(powerNet);
         PowerConnectionMaker.ConnectAllConnectorsToTransmitter(powerNet.transmitters[0]);
     }
 }
Beispiel #5
0
 public void ConstructComponents()
 {
     this.spawnedThings      = new ThingOwner <Thing>(this);
     this.cellIndices        = new CellIndices(this);
     this.listerThings       = new ListerThings(ListerThingsUse.Global);
     this.listerBuildings    = new ListerBuildings();
     this.mapPawns           = new MapPawns(this);
     this.dynamicDrawManager = new DynamicDrawManager(this);
     this.mapDrawer          = new MapDrawer(this);
     this.tooltipGiverList   = new TooltipGiverList();
     this.pawnDestinationReservationManager = new PawnDestinationReservationManager();
     this.reservationManager = new ReservationManager(this);
     this.physicalInteractionReservationManager = new PhysicalInteractionReservationManager();
     this.designationManager             = new DesignationManager(this);
     this.lordManager                    = new LordManager(this);
     this.debugDrawer                    = new DebugCellDrawer();
     this.passingShipManager             = new PassingShipManager(this);
     this.haulDestinationManager         = new HaulDestinationManager(this);
     this.gameConditionManager           = new GameConditionManager(this);
     this.weatherManager                 = new WeatherManager(this);
     this.zoneManager                    = new ZoneManager(this);
     this.resourceCounter                = new ResourceCounter(this);
     this.mapTemperature                 = new MapTemperature(this);
     this.temperatureCache               = new TemperatureCache(this);
     this.areaManager                    = new AreaManager(this);
     this.attackTargetsCache             = new AttackTargetsCache(this);
     this.attackTargetReservationManager = new AttackTargetReservationManager(this);
     this.lordsStarter                   = new VoluntarilyJoinableLordsStarter(this);
     this.thingGrid                  = new ThingGrid(this);
     this.coverGrid                  = new CoverGrid(this);
     this.edificeGrid                = new EdificeGrid(this);
     this.blueprintGrid              = new BlueprintGrid(this);
     this.fogGrid                    = new FogGrid(this);
     this.glowGrid                   = new GlowGrid(this);
     this.regionGrid                 = new RegionGrid(this);
     this.terrainGrid                = new TerrainGrid(this);
     this.pathGrid                   = new PathGrid(this);
     this.roofGrid                   = new RoofGrid(this);
     this.fertilityGrid              = new FertilityGrid(this);
     this.snowGrid                   = new SnowGrid(this);
     this.deepResourceGrid           = new DeepResourceGrid(this);
     this.exitMapGrid                = new ExitMapGrid(this);
     this.linkGrid                   = new LinkGrid(this);
     this.glowFlooder                = new GlowFlooder(this);
     this.powerNetManager            = new PowerNetManager(this);
     this.powerNetGrid               = new PowerNetGrid(this);
     this.regionMaker                = new RegionMaker(this);
     this.pathFinder                 = new PathFinder(this);
     this.pawnPathPool               = new PawnPathPool(this);
     this.regionAndRoomUpdater       = new RegionAndRoomUpdater(this);
     this.regionLinkDatabase         = new RegionLinkDatabase();
     this.moteCounter                = new MoteCounter();
     this.gatherSpotLister           = new GatherSpotLister();
     this.windManager                = new WindManager(this);
     this.listerBuildingsRepairable  = new ListerBuildingsRepairable();
     this.listerHaulables            = new ListerHaulables(this);
     this.listerMergeables           = new ListerMergeables(this);
     this.listerFilthInHomeArea      = new ListerFilthInHomeArea(this);
     this.reachability               = new Reachability(this);
     this.itemAvailability           = new ItemAvailability(this);
     this.autoBuildRoofAreaSetter    = new AutoBuildRoofAreaSetter(this);
     this.roofCollapseBufferResolver = new RoofCollapseBufferResolver(this);
     this.roofCollapseBuffer         = new RoofCollapseBuffer();
     this.wildAnimalSpawner          = new WildAnimalSpawner(this);
     this.wildPlantSpawner           = new WildPlantSpawner(this);
     this.steadyEnvironmentEffects   = new SteadyEnvironmentEffects(this);
     this.skyManager                 = new SkyManager(this);
     this.overlayDrawer              = new OverlayDrawer();
     this.floodFiller                = new FloodFiller(this);
     this.weatherDecider             = new WeatherDecider(this);
     this.fireWatcher                = new FireWatcher(this);
     this.dangerWatcher              = new DangerWatcher(this);
     this.damageWatcher              = new DamageWatcher();
     this.strengthWatcher            = new StrengthWatcher(this);
     this.wealthWatcher              = new WealthWatcher(this);
     this.regionDirtyer              = new RegionDirtyer(this);
     this.cellsInRandomOrder         = new MapCellsInRandomOrder(this);
     this.rememberedCameraPos        = new RememberedCameraPos(this);
     this.mineStrikeManager          = new MineStrikeManager();
     this.storyState                 = new StoryState(this);
     this.retainedCaravanData        = new RetainedCaravanData(this);
     this.components.Clear();
     this.FillComponents();
 }