public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { GeneratedBuildings.MakeBuildingAlwaysOperational(go); BuildingConfigManager.Instance.IgnoreDefaultKComponent(typeof(RequiresFoundation), prefab_tag); SimCellOccupier simCellOccupier = go.AddOrGet <SimCellOccupier>(); simCellOccupier.doReplaceElement = true; simCellOccupier.notifyOnMelt = true; go.AddOrGet <TileTemperature>(); go.AddOrGet <WildFarmTile>(); Storage storage = BuildingTemplates.CreateDefaultStorage(go); storage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage); PlantablePlot plantablePlot = go.AddOrGet <PlantablePlot>(); plantablePlot.occupyingObjectRelativePosition = new Vector3(0f, 1f, 0f); plantablePlot.AddDepositTag(GameTags.CropSeed); plantablePlot.AddDepositTag(GameTags.WaterSeed); plantablePlot.SetFertilizationFlags(fertilizer: false, liquid_piping: false); CopyBuildingSettings copyBuildingSettings = go.AddOrGet <CopyBuildingSettings>(); copyBuildingSettings.copyGroupTag = GameTags.Farm; go.AddOrGet <AnimTileable>(); Prioritizable.AddRef(go); // turn off irrigation FieldInfo fi = typeof(PlantablePlot).GetField("accepts_irrigation", BindingFlags.NonPublic | BindingFlags.Instance); fi.SetValue(plantablePlot, false); }
private void OnSolidChanged(HandleVector <int> .Handle h) { Data data = GetData(h); SimCellOccupier component = data.go.GetComponent <SimCellOccupier>(); if ((UnityEngine.Object)component == (UnityEngine.Object)null || component.IsReady()) { Rotatable component2 = data.go.GetComponent <Rotatable>(); Orientation orientation = ((UnityEngine.Object)component2 != (UnityEngine.Object)null) ? component2.GetOrientation() : Orientation.Neutral; bool is_solid = BuildingDef.CheckFoundation(data.cell, orientation, data.buildRule, data.width, data.height); UpdateSolidState(is_solid, ref data); SetData(h, data); } }
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { GeneratedBuildings.MakeBuildingAlwaysOperational(go); BuildingConfigManager.Instance.IgnoreDefaultKComponent(typeof(RequiresFoundation), prefab_tag); SimCellOccupier simCellOccupier = go.AddOrGet <SimCellOccupier>(); simCellOccupier.doReplaceElement = true; go.AddOrGet <TileTemperature>(); KAnimGridTileVisualizer kAnimGridTileVisualizer = go.AddOrGet <KAnimGridTileVisualizer>(); kAnimGridTileVisualizer.blockTileConnectorID = BlockTileConnectorID; BuildingHP buildingHP = go.AddOrGet <BuildingHP>(); buildingHP.destroyOnDamaged = true; }
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { GeneratedBuildings.MakeBuildingAlwaysOperational(go); BuildingConfigManager.Instance.IgnoreDefaultKComponent(typeof(RequiresFoundation), prefab_tag); SimCellOccupier simCellOccupier = go.AddOrGet <SimCellOccupier>(); simCellOccupier.movementSpeedMultiplier = DUPLICANTSTATS.MOVEMENT.PENALTY_3; simCellOccupier.notifyOnMelt = true; go.AddOrGet <TileTemperature>(); KAnimGridTileVisualizer kAnimGridTileVisualizer = go.AddOrGet <KAnimGridTileVisualizer>(); kAnimGridTileVisualizer.blockTileConnectorID = MetalTileConfig.BlockTileConnectorID; BuildingHP buildingHP = go.AddOrGet <BuildingHP>(); buildingHP.destroyOnDamaged = true; }
protected override void OnCompleteWork(Worker worker) { PrimaryElement component = GetComponent <PrimaryElement>(); Building building = GetComponent <Building>(); SimCellOccupier component2 = GetComponent <SimCellOccupier>(); if ((UnityEngine.Object)DetailsScreen.Instance != (UnityEngine.Object)null && DetailsScreen.Instance.CompareTargetWith(base.gameObject)) { DetailsScreen.Instance.Show(false); } float temperature = component.Temperature; byte disease_idx = component.DiseaseIdx; int disease_count = component.DiseaseCount; if ((UnityEngine.Object)component2 != (UnityEngine.Object)null) { if (building.Def.TileLayer != ObjectLayer.NumLayers) { int num = Grid.PosToCell(base.transform.GetPosition()); if ((UnityEngine.Object)Grid.Objects[num, (int)building.Def.TileLayer] == (UnityEngine.Object)base.gameObject) { Grid.Objects[num, (int)building.Def.ObjectLayer] = null; Grid.Objects[num, (int)building.Def.TileLayer] = null; Grid.Foundation[num] = false; TileVisualizer.RefreshCell(num, building.Def.TileLayer, building.Def.ReplacementLayer); } } component2.DestroySelf(delegate { TriggerDestroy(building, temperature, disease_idx, disease_count); }); } else { TriggerDestroy(building, temperature, disease_idx, disease_count); } string sound = GlobalAssets.GetSound("Finish_Deconstruction_" + building.Def.AudioSize, false); if (sound != null) { KMonoBehaviour.PlaySound3DAtLocation(sound, base.gameObject.transform.GetPosition()); } Trigger(-702296337, this); }
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { GeneratedBuildings.MakeBuildingAlwaysOperational(go); BuildingConfigManager.Instance.IgnoreDefaultKComponent(typeof(RequiresFoundation), prefab_tag); SimCellOccupier simCellOccupier = go.AddOrGet <SimCellOccupier>(); simCellOccupier.doReplaceElement = true; simCellOccupier.notifyOnMelt = true; go.AddOrGet <TileTemperature>(); BuildingTemplates.CreateDefaultStorage(go, false).SetDefaultStoredItemModifiers(Storage.StandardSealedStorage); PlantablePlot plantablePlot = go.AddOrGet <PlantablePlot>(); plantablePlot.occupyingObjectRelativePosition = new Vector3(0.0f, 1f, 0.0f); plantablePlot.AddDepositTag(GameTags.CropSeed); plantablePlot.AddDepositTag(GameTags.WaterSeed); plantablePlot.SetFertilizationFlags(true, false); go.AddOrGet <CopyBuildingSettings>().copyGroupTag = GameTags.Farm; go.AddOrGet <AnimTileable>(); Prioritizable.AddRef(go); }
protected override void OnCompleteWork(Worker worker) { float num = 0f; float num2 = 0f; bool flag = true; foreach (GameObject item in storage.items) { if (!((UnityEngine.Object)item == (UnityEngine.Object)null)) { PrimaryElement component = item.GetComponent <PrimaryElement>(); if (!((UnityEngine.Object)component == (UnityEngine.Object)null)) { num += component.Mass; num2 += component.Temperature * component.Mass; flag = (flag && component.HasTag(GameTags.Liquifiable)); } } } if (num <= 0f) { DebugUtil.LogWarningArgs(base.gameObject, "uhhh this constructable is about to generate a nan", "Item Count: ", storage.items.Count); } else { if (flag) { initialTemperature = Mathf.Min(num2 / num, 318.15f); } else { initialTemperature = Mathf.Clamp(num2 / num, 288.15f, 318.15f); } KAnimGraphTileVisualizer component2 = GetComponent <KAnimGraphTileVisualizer>(); UtilityConnections connections = (!((UnityEngine.Object)component2 == (UnityEngine.Object)null)) ? component2.Connections : ((UtilityConnections)0); if (IsReplacementTile) { int cell = Grid.PosToCell(base.transform.GetLocalPosition()); GameObject replacementCandidate = building.Def.GetReplacementCandidate(cell); if ((UnityEngine.Object)replacementCandidate != (UnityEngine.Object)null) { SimCellOccupier component3 = replacementCandidate.GetComponent <SimCellOccupier>(); if ((UnityEngine.Object)component3 != (UnityEngine.Object)null) { component3.DestroySelf(delegate { if ((UnityEngine.Object) this != (UnityEngine.Object)null && (UnityEngine.Object)base.gameObject != (UnityEngine.Object)null) { FinishConstruction(connections); } }); } else { Conduit component4 = replacementCandidate.GetComponent <Conduit>(); if ((UnityEngine.Object)component4 != (UnityEngine.Object)null) { ConduitFlow flowManager = component4.GetFlowManager(); flowManager.MarkForReplacement(cell); } BuildingComplete component5 = replacementCandidate.GetComponent <BuildingComplete>(); if ((UnityEngine.Object)component5 != (UnityEngine.Object)null) { component5.Subscribe(-21016276, delegate { FinishConstruction(connections); }); } else { Debug.LogWarning("Why am I trying to replace a: " + replacementCandidate.name); FinishConstruction(connections); } } KAnimGraphTileVisualizer component6 = replacementCandidate.GetComponent <KAnimGraphTileVisualizer>(); if ((UnityEngine.Object)component6 != (UnityEngine.Object)null) { component6.skipCleanup = true; } PrimaryElement component7 = replacementCandidate.GetComponent <PrimaryElement>(); float mass = component7.Mass; float temperature = component7.Temperature; byte diseaseIdx = component7.DiseaseIdx; int diseaseCount = component7.DiseaseCount; Debug.Assert(component7.Element != null && component7.Element.tag != (Tag)null); Deconstructable.SpawnItem(component7.transform.GetPosition(), component7.GetComponent <Building>().Def, component7.Element.tag, mass, temperature, diseaseIdx, diseaseCount); replacementCandidate.Trigger(1606648047, building.Def.TileLayer); replacementCandidate.DeleteObject(); } } else { FinishConstruction(connections); } PopFXManager.Instance.SpawnFX(PopFXManager.Instance.sprite_Building, GetComponent <KSelectable>().GetName(), base.transform, 1.5f, false); } }