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); } } }
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); } } }