Ejemplo n.º 1
0
        private bool BuildTarget(BlockTarget target, ShipyardItem item, IMyCubeBlock tool)
        {
            IMyProjector projector = target.Projector;
            IMySlimBlock block     = target.Block;

            if (projector == null || block == null)
            {
                return(false);
            }

            if (projector.CanBuild(block, false) != BuildCheckResult.OK)
            {
                return(false);
            }

            if (MyAPIGateway.Session.CreativeMode)
            {
                projector.Build(block, 0, tool.EntityId, false);
                return(projector.CanBuild(block, true) != BuildCheckResult.OK);
            }

            //try to remove the first component from inventory
            string name = ((MyCubeBlockDefinition)block.BlockDefinition).Components[0].Definition.Id.SubtypeName;

            if (_tmpInventory.PullAny(item.ConnectedCargo, name, 2))
            {
                _tmpInventory.Clear();
                projector.Build(block, 0, tool.EntityId, false);
                return(projector.CanBuild(block, true) != BuildCheckResult.OK);
            }

            return(false);
        }
        Dictionary <string, int> GetBlocksForQueue(IMyProjector projector, bool allBlocks)
        {
            var resultDictionary = new Dictionary <string, int>();
            var projectedGrid    = projector.ProjectedGrid;
            var blockList        = new List <IMySlimBlock>();

            projectedGrid.GetBlocks(blockList);

            foreach (var block in blockList)
            {
                var blockDefininition = block.BlockDefinition as MyCubeBlockDefinition;
                var blockcomponents   = blockDefininition.Components;

                if (allBlocks == false && projector.CanBuild(block, true) == BuildCheckResult.AlreadyBuilt)
                {
                    continue;
                }

                foreach (var component in blockcomponents)
                {
                    if (resultDictionary.ContainsKey(component.Definition.Id.SubtypeName) == true)
                    {
                        resultDictionary[component.Definition.Id.SubtypeName] += component.Count;
                    }
                    else
                    {
                        resultDictionary.Add(component.Definition.Id.SubtypeName, component.Count);
                    }
                }
            }

            return(resultDictionary);
        }
        private static IEnumerable <IMySlimBlock> IterBuildableBlocksVanilla(IMyProjector projector)
        {
            var grid = (MyCubeGrid)projector.ProjectedGrid;

            foreach (IMySlimBlock block in grid.GetBlocks())
            {
                if (projector.CanBuild(block, false) == BuildCheckResult.OK)
                {
                    yield return(block);
                }
            }
        }
Ejemplo n.º 4
0
        private void ProcessProjector(IMyProjector projector)
        {
            MyCubeGrid grid = (MyCubeGrid)projector.ProjectedGrid;

            foreach (IMySlimBlock block in grid.GetBlocks())
            {
                if (projector.CanBuild(block, false) == BuildCheckResult.OK && !PotentialTargetList.Contains(block))
                {
                    PotentialTargetList.Add(block);
                }
            }
        }