Beispiel #1
0
        public static void LoadDefinition(this MyHudBlockInfo blockInfo, MyCubeBlockDefinition definition, bool merge = true)
        {
            InitBlockInfo(blockInfo, definition);

            if (definition.MultiBlock != null)
            {
                MyDefinitionId         defId         = new MyDefinitionId(typeof(MyObjectBuilder_MultiBlockDefinition), definition.MultiBlock);
                MyMultiBlockDefinition multiBlockDef = MyDefinitionManager.Static.TryGetMultiBlockDefinition(defId);
                if (multiBlockDef != null)
                {
                    foreach (var blockPart in multiBlockDef.BlockDefinitions)
                    {
                        MyCubeBlockDefinition cubeBlockDef = null;
                        MyDefinitionManager.Static.TryGetDefinition(blockPart.Id, out cubeBlockDef);
                        if (cubeBlockDef != null)
                        {
                            AddComponentsForBlock(blockInfo, cubeBlockDef);
                        }
                    }
                }
            }
            else
            {
                AddComponentsForBlock(blockInfo, definition);
            }

            if (merge)
            {
                MergeSameComponents(blockInfo);
            }
        }
Beispiel #2
0
 public void SetGridFromBuilder(MyMultiBlockDefinition multiBlockDefinition, MyObjectBuilder_CubeGrid grid, Vector3 dragPointDelta, float dragVectorLength)
 {
     this.ChangeClipboardPreview(false, base.m_previewGrids, base.m_copiedGrids);
     this.m_multiBlockDefinition = multiBlockDefinition;
     base.SetGridFromBuilder(grid, dragPointDelta, dragVectorLength);
     this.ChangeClipboardPreview(true, base.m_previewGrids, base.m_copiedGrids);
 }
        public void SetGridFromBuilder(MyMultiBlockDefinition multiBlockDefinition, MyObjectBuilder_CubeGrid grid, Vector3 dragPointDelta, float dragVectorLength)
        {
            Debug.Assert(multiBlockDefinition != null);
            m_multiBlockDefinition = multiBlockDefinition;

            SetGridFromBuilder(grid, dragPointDelta, dragVectorLength);
        }
        public static void TakeMaterialsFromBuilder(List <MyObjectBuilder_CubeGrid> blocksToBuild, MyEntity builder)
        {
            Debug.Assert(blocksToBuild.Count == 1);
            if (blocksToBuild.Count == 0)
            {
                return;
            }

            // Search for multiblock definition.
            var firstBlock = blocksToBuild[0].CubeBlocks.FirstOrDefault();

            Debug.Assert(firstBlock != null);
            if (firstBlock == null)
            {
                return;
            }

            MyDefinitionId multiBlockDefId;
            var            compound = firstBlock as MyObjectBuilder_CompoundCubeBlock;

            if (compound != null)
            {
                Debug.Assert(compound.Blocks != null && compound.Blocks.Length > 0 && compound.Blocks[0].MultiBlockDefinition != null);
                if (compound.Blocks == null || compound.Blocks.Length == 0 || compound.Blocks[0].MultiBlockDefinition == null)
                {
                    return;
                }

                multiBlockDefId = compound.Blocks[0].MultiBlockDefinition.Value;
            }
            else
            {
                Debug.Assert(firstBlock.MultiBlockDefinition != null);
                if (firstBlock.MultiBlockDefinition == null)
                {
                    return;
                }

                multiBlockDefId = firstBlock.MultiBlockDefinition.Value;
            }

            MyMultiBlockDefinition multiBlockDefinition = MyDefinitionManager.Static.TryGetMultiBlockDefinition(multiBlockDefId);

            Debug.Assert(multiBlockDefinition != null);
            if (multiBlockDefinition == null)
            {
                return;
            }

            MyCubeBuilder.BuildComponent.GetMultiBlockPlacementMaterials(multiBlockDefinition);
            MyCubeBuilder.BuildComponent.AfterSuccessfulBuild(builder, instantBuild: false);
        }
Beispiel #5
0
 public static void TakeMaterialsFromBuilder(List <MyObjectBuilder_CubeGrid> blocksToBuild, VRage.Game.Entity.MyEntity builder)
 {
     if (blocksToBuild.Count != 0)
     {
         MyObjectBuilder_CubeBlock block = blocksToBuild[0].CubeBlocks.FirstOrDefault <MyObjectBuilder_CubeBlock>();
         if (block != null)
         {
             MyDefinitionId id;
             MyObjectBuilder_CompoundCubeBlock block2 = block as MyObjectBuilder_CompoundCubeBlock;
             if (block2 == null)
             {
                 if (block.MultiBlockDefinition == null)
                 {
                     return;
                 }
                 id = block.MultiBlockDefinition.Value;
             }
             else if (block2.Blocks == null)
             {
                 return;
             }
             else if ((block2.Blocks.Length != 0) && (block2.Blocks[0].MultiBlockDefinition != null))
             {
                 id = block2.Blocks[0].MultiBlockDefinition.Value;
             }
             else
             {
                 return;
             }
             MyMultiBlockDefinition multiBlockDefinition = MyDefinitionManager.Static.TryGetMultiBlockDefinition(id);
             if (multiBlockDefinition != null)
             {
                 MyCubeBuilder.BuildComponent.GetMultiBlockPlacementMaterials(multiBlockDefinition);
                 MyCubeBuilder.BuildComponent.AfterSuccessfulBuild(builder, false);
             }
         }
     }
 }
 public override void GetMultiBlockPlacementMaterials(MyMultiBlockDefinition multiBlockDefinition)
 {
 }
Beispiel #7
0
 public override void Deactivate(bool afterPaste = false)
 {
     this.m_multiBlockDefinition = null;
     base.Deactivate(afterPaste);
 }
 public abstract void GetMultiBlockPlacementMaterials(MyMultiBlockDefinition multiBlockDefinition);
 public override void Deactivate()
 {
     m_multiBlockDefinition = null;
     base.Deactivate();
 }