public static void IdleSupply(MyAssembler __instance) { if (!(__instance is MyAssembler assembler)) return; if (assembler.IsQueueEmpty && assembler.HasInventory) { //figure out how to see if assembler is even connected to conveyors cause f**k me if (//assembler.f****e) { try { var group =assembler.CubeGrid.BigOwners; var me =group.First(); MyInventory inventory = assembler.GetInventory(); if ((double) inventory.VolumeFillFactor >= 0.990000009536743) return; MyGridConveyorSystem.PullAllItemsForConnector((IMyConveyorEndpointBlock) assembler, inventory, me, AssemblerSupplyChainPlugin.Instance.MAX_ITEMS_TO_PULL_IN_ONE_TICK); } catch (Exception e) { Log.Fatal("f**k my whole life" + e); } } /*MyInventory inventory = assembler.GetInventory(); if (inventory.GetItemsCount() <= 0) return; var blocks = assembler.CubeGrid.GridSystems.ConveyorSystem. assembler.CubeGrid.GridSystems.ConveyorSystem.PullItems(_inventoryConstraint, MyFixedPoint.MaxValue, blocks, inventory );*/ // this probably just yeets the contents of the assembler //assembler.Components.Remove<MyInventory>(); /*MyGridConveyorSystem.PushAnyRequest((inventory) this, inventory); if (assembler.GetInventory() == null) { MyInventory myInventory = new MyInventory(assembler.InventorySize.Volume, this.m_conveyorSorterDefinition.InventorySize, MyInventoryFlags.CanSend); assembler.Components.Add<MyInventoryBase>((MyInventoryBase) myInventory); myInventory.Init(builderConveyorSorter.Inventory); } var a = assembler.OutputInventory.InventoryId; var i = assembler.ConveyorEndpoint.CubeBlock.InventoryCount; assembler.Components.Clear(); assembler.drainall(); MyConveyorSorter sorter; sorter.DrainAll = true;*/ } return; }
void assembler_CurrentModeChanged(MyAssembler assembler) { Debug.Assert(m_selectedAssembler == assembler); SelectModeButton(assembler.DisassembleEnabled); RefreshRepeatMode(assembler.RepeatEnabled); RefreshSlaveMode(assembler.IsSlave); RefreshProgress(); RefreshAssemblerModeView(); RefreshMaterialsPreview(); }
private void UnregisterAssemblerEvents(MyAssembler assembler) { if (assembler == null) { return; } m_selectedAssembler.CurrentModeChanged -= assembler_CurrentModeChanged; m_selectedAssembler.QueueChanged -= assembler_QueueChanged; m_selectedAssembler.CurrentProgressChanged -= assembler_CurrentProgressChanged; m_selectedAssembler.CurrentStateChanged -= assembler_CurrentStateChanged; assembler.InputInventory.ContentsChanged -= InputInventory_ContentsChanged; m_selectedAssembler.OutputInventory.ContentsChanged -= OutputInventory_ContentsChanged; }
private void SelectAndShowAssembler(MyAssembler assembler) { UnregisterAssemblerEvents(m_selectedAssembler); m_selectedAssembler = assembler; RegisterAssemblerEvents(assembler); RefreshRepeatMode(assembler.RepeatEnabled); RefreshSlaveMode(assembler.IsSlave); SelectModeButton(assembler.DisassembleEnabled); UpdateBlueprintClassGui(); RefreshQueue(); RefreshInventory(); RefreshProgress(); RefreshAssemblerModeView(); }
internal void Close() { UnregisterEvents(); UnregisterAssemblerEvents(m_selectedAssembler); m_assemblersByKey.Clear(); m_blueprintButtonGroup.Clear(); m_modeButtonGroup.Clear(); m_selectedAssembler = null; m_controlsParent = null; m_terminalSystem = null; m_comboboxAssemblers = null; m_dragAndDrop = null; m_dragAndDropInfo = null; }
private void UnregisterAssemblerEvents(MyAssembler assembler) { if (assembler == null) { return; } m_selectedAssembler.CurrentModeChanged -= assembler_CurrentModeChanged; m_selectedAssembler.QueueChanged -= assembler_QueueChanged; m_selectedAssembler.CurrentProgressChanged -= assembler_CurrentProgressChanged; m_selectedAssembler.CurrentStateChanged -= assembler_CurrentStateChanged; if (assembler.InputInventory != null) // can be null on unload and close { assembler.InputInventory.ContentsChanged -= InputInventory_ContentsChanged; } if (m_selectedAssembler.OutputInventory != null) { m_selectedAssembler.OutputInventory.ContentsChanged -= OutputInventory_ContentsChanged; } }
void assembler_CurrentStateChanged(MyAssembler obj) { Debug.Assert(obj == m_selectedAssembler); RefreshProgress(); }
void assembler_CurrentProgressChanged(MyAssembler assembler) { Debug.Assert(assembler == m_selectedAssembler); RefreshProgress(); }