private MyAssembler GetMasterAssembler() { m_conveyorEndpoints.Clear(); m_assemblerForPathfinding = this; MyGridConveyorSystem.Pathfinding.FindReachable(this.ConveyorEndpoint, m_conveyorEndpoints, m_vertexPredicate, m_edgePredicate); MyUtils.ShuffleList <IMyConveyorEndpoint>(m_conveyorEndpoints); foreach (var ep in m_conveyorEndpoints) { var ass = ep.CubeBlock as MyAssembler; if (ass != null && !ass.DisassembleEnabled && !ass.IsSlave && ass.m_queue.Count > 0) { return(ass); } } return(null); }
protected virtual unsafe void RemoveFirstQueueItem(int index, MyFixedPoint amount, float progress = 0f) { if (this.m_queue.IsValidIndex <QueueItem>(index)) { QueueItem item = this.m_queue[index]; MyFixedPoint point1 = MathHelper.Clamp(amount, 0, item.Amount); amount = point1; MyFixedPoint *pointPtr1 = (MyFixedPoint *)ref item.Amount; pointPtr1[0] -= amount; this.m_queue[index] = item; if (item.Amount <= 0) { MyAssembler assembler = this as MyAssembler; if (assembler != null) { assembler.CurrentProgress = 0f; } this.m_queue.RemoveAt(index); } this.UpdatePower(); this.OnQueueChanged(); } }
public SyncClass(MyAssembler assembler) { m_assembler = assembler; }
private MyAssembler GetMasterAssembler() { m_conveyorEndpoints.Clear(); m_assemblerForPathfinding = this; MyGridConveyorSystem.Pathfinding.FindReachable(this.ConveyorEndpoint, m_conveyorEndpoints, m_vertexPredicate, m_edgePredicate); MyUtils.ShuffleList<IMyConveyorEndpoint>(m_conveyorEndpoints); foreach (var ep in m_conveyorEndpoints) { var ass = ep.CubeBlock as MyAssembler; if (ass != null && !ass.DisassembleEnabled && !ass.IsSlave && ass.m_queue.Count > 0) return ass; } return null; }
void assembler_CurrentStateChanged(MyAssembler obj) { Debug.Assert(obj == m_selectedAssembler); RefreshProgress(); }
void assembler_CurrentProgressChanged(MyAssembler assembler) { Debug.Assert(assembler == m_selectedAssembler); RefreshProgress(); }
void assembler_CurrentModeChanged(MyAssembler assembler) { Debug.Assert(m_selectedAssembler == assembler); SelectModeButton(assembler.DisassembleEnabled); RefreshRepeatMode(assembler.RepeatEnabled); RefreshSlaveMode(assembler.IsSlave); RefreshProgress(); RefreshAssemblerModeView(); RefreshMaterialsPreview(); }
private static String GetAssemblerStateText(MyAssembler.StateEnum state) { MyStringId enumVal = MySpaceTexts.Blank; switch (state) { case MyAssembler.StateEnum.Ok: enumVal = MySpaceTexts.Blank; break; case MyAssembler.StateEnum.Disabled: enumVal = MySpaceTexts.AssemblerState_Disabled; break; case MyAssembler.StateEnum.NotWorking: enumVal = MySpaceTexts.AssemblerState_NotWorking; break; case MyAssembler.StateEnum.MissingItems: enumVal = MySpaceTexts.AssemblerState_MissingItems; break; case MyAssembler.StateEnum.NotEnoughPower: enumVal = MySpaceTexts.AssemblerState_NotEnoughPower; break; case MyAssembler.StateEnum.InventoryFull: enumVal = MySpaceTexts.AssemblerState_InventoryFull; break; default: Debug.Assert(false, "Invalid branch reached."); break; } return MyTexts.GetString(enumVal); }
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; assembler.InputInventory.ContentsChanged -= InputInventory_ContentsChanged; m_selectedAssembler.OutputInventory.ContentsChanged -= OutputInventory_ContentsChanged; }
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; } }