예제 #1
0
        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);
        }
예제 #2
0
 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();
     }
 }
예제 #3
0
 public SyncClass(MyAssembler assembler)
 {
     m_assembler = assembler;
 }
예제 #4
0
        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;
        }
예제 #12
0
 public SyncClass(MyAssembler assembler)
 {
     m_assembler = assembler;
 }
        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;
            }
        }