void GetPartsLandpedo() { GridTerminalSystem.GetBlocksOfType <IMyTerminalBlock>(null, CollectAllPartsLandpedo); var sb = new StringBuilder(); sb.AppendLine(GridTerminalHelper.BlockListBytePosToBase64(PartsOfInterest, Connector)); sb.AppendLine(GridTerminalHelper.BlockBytePosToBase64(Projector, Connector)); sb.AppendLine(GridTerminalHelper.BlockBytePosToBase64(Base, Connector)); Connector.CustomData = sb.ToString(); }
bool SetupMerge(IMyTerminalBlock block) { if (block.CubeGrid.EntityId != Context.Reference.CubeGrid.EntityId) { return(false); } if (!(block is IMyShipMergeBlock)) { return(false); } if (!block.CustomName.StartsWith("[RL]")) { return(false); } var merge = (IMyShipMergeBlock)block; merge.CustomData = GridTerminalHelper.BlockBytePosToBase64(Context.Reference, merge); return(false); }
public void Main(string argument, UpdateType updateSource) { if (argument == "THRUSTERDETACH") { IMyTerminalBlock ThrusterControl = null; List <MyTuple <IMyThrust, int> > DetachThrusters = new List <MyTuple <IMyThrust, int> >(); List <IMyTerminalBlock> blocks = new List <IMyTerminalBlock>(); GridTerminalSystem.GetBlocksOfType <IMyTerminalBlock>(blocks, t => t.CubeGrid == Me.CubeGrid); foreach (var block in blocks) { if (block.CustomName.Contains("[TRPT]")) { ThrusterControl = block; } IMyThrust thrust = block as IMyThrust; if (thrust != null) { var tagindex = block.CustomName.IndexOf("[TRP"); if (tagindex == -1) { continue; } var indexTagEnd = block.CustomName.IndexOf(']', tagindex); if (indexTagEnd == -1) { continue; } int index; var numString = block.CustomName.Substring(tagindex + 4, indexTagEnd - tagindex - 4); if (!int.TryParse(numString, out index)) { continue; } DetachThrusters.Add(MyTuple.Create(thrust, index)); } } if (ThrusterControl == null) { Error("No [TRPT] tagged block for ThrusterDetachControl"); return; } MyIni IniParser = new MyIni(); IniParser.TryParse(ThrusterControl.CustomData); IniParser.DeleteSection("Torpedo"); StringBuilder thrusterData = new StringBuilder(); for (int i = 0; i < DetachThrusters.Count; ++i) { var position = GridTerminalHelper.BlockBytePosToBase64(DetachThrusters[i].Item1, ThrusterControl); thrusterData.Append(DetachThrusters[i].Item2 + "^" + position + ((i != DetachThrusters.Count - 1) ? "," : "")); } IniParser.Set("Torpedo", "ThrusterReleases", thrusterData.ToString()); ThrusterControl.CustomData = IniParser.ToString(); Info("Thruster Control: " + thrusterData.ToString()); return; } BuildProxyTubes(); foreach (var tube in ProxyTubes) { GetParts(tube); } if (argument == "LOAD") { List <IMyTerminalBlock> b = new List <IMyTerminalBlock>(); for (int i = 0; i < ProxyTubes.Count; ++i) { ProxyTube tube = ProxyTubes[i]; IMyMechanicalConnectionBlock mech = tube.Base as IMyMechanicalConnectionBlock; if (mech != null) { GridTerminalHelper.Base64BytePosToBlockList(tube.Base.CustomData, mech.Top, ref b); } else { GridTerminalHelper.Base64BytePosToBlockList(tube.Base.CustomData, tube.Base, ref b); } Echo("Tube" + i + ": " + b.Count().ToString()); } } else { StringBuilder builder = new StringBuilder(256); bool aok = true; for (int i = 0; i < ProxyTubes.Count; ++i) { ProxyTube tube = ProxyTubes[i]; string output; if (tube.CheckTorpedo(out output)) { tube.SaveTorpedo(); builder.AppendLine(i.ToString() + " [AOK] :"); builder.Append(output); } else { builder.AppendLine(i.ToString() + " [ERR] :"); builder.Append(output); aok = false; break; } } if (aok) { Info(builder.ToString()); } else { Error(builder.ToString()); } } ProxyTubes.Clear(); }