コード例 #1
0
        public AdjustableDelayGateElectricElement(SubsystemElectricity subsystemElectricity, CellFace cellFace)
            : base(subsystemElectricity, cellFace)
        {
            int data = Terrain.ExtractData(subsystemElectricity.SubsystemTerrain.Terrain.GetCellValue(cellFace.X, cellFace.Y, cellFace.Z));

            m_delaySteps = AdjustableDelayGateBlock.GetDelay(data);
        }
        public override bool OnEditInventoryItem(IInventory inventory, int slotIndex, ComponentPlayer componentPlayer)
        {
            int value = inventory.GetSlotValue(slotIndex);
            int count = inventory.GetSlotCount(slotIndex);
            int data  = Terrain.ExtractData(value);
            int delay = AdjustableDelayGateBlock.GetDelay(data);

            DialogsManager.ShowDialog(componentPlayer.GuiWidget, new EditAdjustableDelayGateDialog(delay, delegate(int newDelay)
            {
                int data2 = AdjustableDelayGateBlock.SetDelay(data, newDelay);
                int num   = Terrain.ReplaceData(value, data2);
                if (num != value)
                {
                    inventory.RemoveSlotItems(slotIndex, count);
                    inventory.AddSlotItems(slotIndex, num, 1);
                }
            }));
            return(true);
        }
        public override bool OnEditBlock(int x, int y, int z, int value, ComponentPlayer componentPlayer)
        {
            int data  = Terrain.ExtractData(value);
            int delay = AdjustableDelayGateBlock.GetDelay(data);

            DialogsManager.ShowDialog(componentPlayer.GuiWidget, new EditAdjustableDelayGateDialog(delay, delegate(int newDelay)
            {
                int num = AdjustableDelayGateBlock.SetDelay(data, newDelay);
                if (num != data)
                {
                    int value2 = Terrain.ReplaceData(value, num);
                    base.SubsystemTerrain.ChangeCell(x, y, z, value2);
                    int face = ((AdjustableDelayGateBlock)BlocksManager.Blocks[224]).GetFace(value);
                    SubsystemElectricity subsystemElectricity = base.Project.FindSubsystem <SubsystemElectricity>(throwOnError: true);
                    ElectricElement electricElement           = subsystemElectricity.GetElectricElement(x, y, z, face);
                    if (electricElement != null)
                    {
                        subsystemElectricity.QueueElectricElementForSimulation(electricElement, subsystemElectricity.CircuitStep + 1);
                    }
                }
            }));
            return(true);
        }