public override void OnNeighborBlockChanged(int x, int y, int z, int neighborX, int neighborY, int neighborZ) { for (int i = 0; i < 6; i++) { m_subsystemElectricity.GetElectricElement(x, y, z, i)?.OnNeighborBlockChanged(new CellFace(x, y, z, i), neighborX, neighborY, neighborZ); } }
public bool IsTrapdoorElectricallyConnected(int x, int y, int z) { int cellValue = base.SubsystemTerrain.Terrain.GetCellValue(x, y, z); int num = Terrain.ExtractContents(cellValue); int data = Terrain.ExtractData(cellValue); if (BlocksManager.Blocks[num] is TrapdoorBlock) { ElectricElement electricElement = m_subsystemElectricity.GetElectricElement(x, y, z, TrapdoorBlock.GetMountingFace(data)); if (electricElement != null && electricElement.Connections.Count > 0) { return(true); } } return(false); }
public override bool OnEditBlock(int x, int y, int z, int value, ComponentPlayer componentPlayer) { CommandData commandBlockData = GetBlockData(new Point3(x, y, z)) ?? new CommandData(); DialogsManager.ShowDialog(componentPlayer.View.GameWidget, new TextBoxDialog("enter one-line command", commandBlockData.Command, 300, delegate(string result) { commandBlockData.Command = result; SetBlockData(new Point3(x, y, z), commandBlockData); var electricElement = subsystemElectricity.GetElectricElement(x, y, z, 0); if (electricElement != null) { subsystemElectricity.QueueElectricElementForSimulation(electricElement, subsystemElectricity.CircuitStep + 1); } })); return(true); }
public override bool OnEditBlock(int x, int y, int z, int value, ComponentPlayer componentPlayer) { MemoryBankData memoryBankData = GetBlockData(new Point3(x, y, z)) ?? new MemoryBankData(); DialogsManager.ShowDialog(componentPlayer.GuiWidget, new EditMemeryDialogB(memoryBankData, delegate() { SetBlockData(new Point3(x, y, z), memoryBankData); int face = ((MemoryBankBlock)BlocksManager.Blocks[186]).GetFace(value); SubsystemElectricity subsystemElectricity = base.SubsystemTerrain.Project.FindSubsystem <SubsystemElectricity>(throwOnError: true); ElectricElement electricElement = subsystemElectricity.GetElectricElement(x, y, z, face); if (electricElement != null) { subsystemElectricity.QueueElectricElementForSimulation(electricElement, subsystemElectricity.CircuitStep + 1); } })); return(true); }
public bool IsDoorElectricallyConnected(int x, int y, int z) { int cellValue = base.SubsystemTerrain.Terrain.GetCellValue(x, y, z); int num = Terrain.ExtractContents(cellValue); int data = Terrain.ExtractData(cellValue); if (BlocksManager.Blocks[num] is DoorBlock) { int num2 = DoorBlock.IsBottomPart(base.SubsystemTerrain.Terrain, x, y, z) ? y : (y - 1); for (int i = num2; i <= num2 + 1; i++) { ElectricElement electricElement = m_subsystemElectricity.GetElectricElement(x, i, z, DoorBlock.GetHingeFace(data)); if (electricElement != null && electricElement.Connections.Count > 0) { return(true); } } } return(false); }
public override bool OnEditBlock(int x, int y, int z, int value, ComponentPlayer componentPlayer) { int contents = Terrain.ExtractContents(value); int data = Terrain.ExtractData(value); DialogsManager.ShowDialog(componentPlayer.GuiWidget, new EditPistonDialog(data, delegate(int newData) { if (newData != data && base.SubsystemTerrain.Terrain.GetCellContents(x, y, z) == contents) { int value2 = Terrain.ReplaceData(value, newData); base.SubsystemTerrain.ChangeCell(x, y, z, value2); SubsystemElectricity subsystemElectricity = base.Project.FindSubsystem <SubsystemElectricity>(throwOnError: true); ElectricElement electricElement = subsystemElectricity.GetElectricElement(x, y, z, 0); if (electricElement != null) { subsystemElectricity.QueueElectricElementForSimulation(electricElement, subsystemElectricity.CircuitStep + 1); } } })); return(true); }