protected override void OnSpawn() { base.OnSpawn(); fuel_tag = SimHashes.Petroleum.CreateTag(); fuel_consumer = base.gameObject.AddComponent <ConduitConsumer>(); fuel_consumer.conduitType = portInfo.conduitType; fuel_consumer.consumptionRate = 10f; fuel_consumer.capacityTag = fuel_tag; fuel_consumer.wrongElementResult = ConduitConsumer.WrongElementResult.Dump; fuel_consumer.forceAlwaysSatisfied = true; fuel_consumer.capacityKG = 100f; fuel_consumer.useSecondaryInput = true; RequireInputs requireInputs = base.gameObject.AddComponent <RequireInputs>(); requireInputs.conduitConsumer = fuel_consumer; requireInputs.SetRequirements(false, true); int cell = Grid.PosToCell(base.transform.GetPosition()); CellOffset rotatedOffset = building.GetRotatedOffset(portInfo.offset); secondaryInputCell = Grid.OffsetCell(cell, rotatedOffset); IUtilityNetworkMgr networkManager = Conduit.GetNetworkManager(portInfo.conduitType); flowNetworkItem = new FlowUtilityNetwork.NetworkItem(portInfo.conduitType, Endpoint.Sink, secondaryInputCell, base.gameObject); networkManager.AddToNetworks(secondaryInputCell, flowNetworkItem, true); fuel_meter = new MeterController(GetComponent <KBatchedAnimController>(), "meter_target_1", "meter_petrol", Meter.Offset.Infront, Grid.SceneLayer.NoLayer, Vector3.zero, "meter_target_1"); o2_meter = new MeterController(GetComponent <KBatchedAnimController>(), "meter_target_2", "meter_oxygen", Meter.Offset.Infront, Grid.SceneLayer.NoLayer, Vector3.zero, "meter_target_2"); base.smi.StartSM(); }
public override void DoPostConfigureComplete(GameObject go) { Object.DestroyImmediate(go.GetComponent <ConduitConsumer>()); Object.DestroyImmediate(go.GetComponent <ConduitDispenser>()); RequireInputs component = go.GetComponent <RequireInputs>(); component.SetRequirements(true, false); GeneratedBuildings.RegisterLogicPorts(go, INPUT_PORTS); LogicOperationalController logicOperationalController = go.AddOrGet <LogicOperationalController>(); logicOperationalController.unNetworkedValue = 0; }
public GameObject CreateBuildingComplete(GameObject go, BuildingDef def) { go.name = def.PrefabID + "Complete"; go.transform.SetPosition(new Vector3(0f, 0f, Grid.GetLayerZ(def.SceneLayer))); KSelectable component = go.GetComponent <KSelectable>(); component.SetName(def.Name); PrimaryElement component2 = go.GetComponent <PrimaryElement>(); component2.MassPerUnit = 0f; for (int i = 0; i < def.Mass.Length; i++) { component2.MassPerUnit += def.Mass[i]; } component2.Temperature = 273.15f; BuildingHP buildingHP = go.AddOrGet <BuildingHP>(); if (def.Invincible) { buildingHP.invincible = true; } buildingHP.SetHitPoints(def.HitPoints); if (def.Repairable) { UpdateComponentRequirement <Repairable>(go, true); } int defaultLayer = go.layer = LayerMask.NameToLayer("Default"); Building component3 = go.GetComponent <BuildingComplete>(); component3.Def = def; if (def.InputConduitType != 0 || def.OutputConduitType != 0) { go.AddComponent <BuildingConduitEndpoints>(); } if (!Add2DComponents(def, go, null, false, -1)) { Debug.Log(def.Name + " is not yet a 2d building!"); } UpdateComponentRequirement <EnergyConsumer>(go, def.RequiresPowerInput); Rotatable rotatable = UpdateComponentRequirement <Rotatable>(go, def.PermittedRotations != PermittedRotations.Unrotatable); if ((bool)rotatable) { rotatable.permittedRotations = def.PermittedRotations; } if (def.Breakable) { go.AddComponent <Breakable>(); } ConduitConsumer conduitConsumer = UpdateComponentRequirement <ConduitConsumer>(go, def.InputConduitType == ConduitType.Gas || def.InputConduitType == ConduitType.Liquid); if ((Object)conduitConsumer != (Object)null) { conduitConsumer.SetConduitData(def.InputConduitType); } bool required = def.RequiresPowerInput || def.InputConduitType == ConduitType.Gas || def.InputConduitType == ConduitType.Liquid; RequireInputs requireInputs = UpdateComponentRequirement <RequireInputs>(go, required); if ((Object)requireInputs != (Object)null) { requireInputs.SetRequirements(def.RequiresPowerInput, def.InputConduitType == ConduitType.Gas || def.InputConduitType == ConduitType.Liquid); } UpdateComponentRequirement <RequireOutputs>(go, def.OutputConduitType != ConduitType.None); UpdateComponentRequirement <Operational>(go, !def.isUtility); if (def.Floodable) { go.AddComponent <Floodable>(); } if (def.Disinfectable) { go.AddOrGet <AutoDisinfectable>(); go.AddOrGet <Disinfectable>(); } if (def.Overheatable) { Overheatable overheatable = go.AddComponent <Overheatable>(); overheatable.baseOverheatTemp = def.OverheatTemperature; overheatable.baseFatalTemp = def.FatalHot; } if (def.Entombable) { go.AddComponent <Structure>(); } if (def.RequiresPowerInput) { GeneratedBuildings.RegisterLogicPorts(go, LogicOperationalController.INPUT_PORTS_0_0); go.AddOrGet <LogicOperationalController>(); } UpdateComponentRequirement <BuildingCellVisualizer>(go, def.CheckRequiresBuildingCellVisualizer()); if (def.BaseDecor != 0f) { DecorProvider decorProvider = UpdateComponentRequirement <DecorProvider>(go, true); decorProvider.baseDecor = def.BaseDecor; decorProvider.baseRadius = def.BaseDecorRadius; } if (def.AttachmentSlotTag != Tag.Invalid) { AttachableBuilding attachableBuilding = UpdateComponentRequirement <AttachableBuilding>(go, true); attachableBuilding.attachableToTag = def.AttachmentSlotTag; } KPrefabID kPrefabID = AddID(go, def.PrefabID); kPrefabID.defaultLayer = defaultLayer; Assets.AddPrefab(kPrefabID); go.PreInit(); return(go); }