Advertisement
Guest User

Command Ship Script 2

a guest
Jul 19th, 2019
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.34 KB | None | 0 0
  1. public string receiveTag = "spycoordinate", sendTag = "controlcoordinate";
  2.  
  3. public IMyBroadcastListener coordinateListener;
  4.  
  5. public List<Vector3D> receivedCoordinates = new List<Vector3D>(), sentCoordinates = new List<Vector3D>();
  6.  
  7. public int currentCoordinate = 0;
  8.  
  9. public Program()
  10. {
  11.     Runtime.UpdateFrequency = UpdateFrequency.Update10;
  12.     coordinateListener = IGC.RegisterBroadcastListener(receiveTag);
  13.     Echo("Listening on tag: " + receiveTag);
  14.     Save();
  15. }
  16.  
  17. public void Save()
  18. {
  19.  
  20. }
  21.  
  22. public void Main(string argument, UpdateType updateSource)
  23. {
  24.     if (argument != "" && receivedCoordinates.Count > 0) Commands(argument.ToLower());
  25.     if (coordinateListener.HasPendingMessage)
  26.     {
  27.         MyIGCMessage message = coordinateListener.AcceptMessage();
  28.         Vector3D coordinate = (Vector3D)(message.Data);
  29.         Echo("Coordinate received at: " + coordinate.ToString("N0"));
  30.         if (!receivedCoordinates.Contains(coordinate)) receivedCoordinates.Add(coordinate);
  31.     }
  32.     while (currentCoordinate > 0 && currentCoordinate > receivedCoordinates.Count - 1) currentCoordinate--;
  33.     StringBuilder builder = new StringBuilder();
  34.     builder.Append("Received Coordinates");
  35.     if (receivedCoordinates.Count > 0)
  36.     {
  37.         Echo("Commands: 'down', 'up', 'remove', 'send'");
  38.         Echo("Current Coordinates");
  39.         for (int i = 0; i < receivedCoordinates.Count; i++)
  40.         {
  41.             if (currentCoordinate == i) Echo("> " + receivedCoordinates[i].ToString("N0"));
  42.             else Echo(receivedCoordinates[i].ToString("N0"));
  43.             builder.AppendLine();
  44.             builder.Append("Received: " + receivedCoordinates[i].ToString("N0"));
  45.         }
  46.     } else Echo("No coordinates");
  47.     OutputBuilder(builder, "received");
  48.     builder.Clear();
  49.     builder.Append("Sent Coordinates");
  50.     if (sentCoordinates.Count > 0)
  51.     {
  52.         for (int i = 0; i < sentCoordinates.Count; i++)
  53.         {
  54.             builder.AppendLine();
  55.             builder.Append("Sent: " + sentCoordinates[i].ToString("N0"));
  56.         }
  57.     }
  58.     OutputBuilder(builder, "sent");
  59. }
  60.  
  61. public void OutputBuilder(StringBuilder builder, string panelKeyword)
  62. {
  63.     List<IMyTerminalBlock> blocks = new List<IMyTerminalBlock>();
  64.     GridTerminalSystem.GetBlocksOfType<IMyTextPanel>(blocks, b => b.CustomName.ToLower().Contains(panelKeyword));
  65.     for (int i = 0; i < blocks.Count; i++)
  66.     {
  67.         IMyTextSurface surface = (IMyTextSurface)blocks[i];
  68.         surface.ContentType = VRage.Game.GUI.TextPanel.ContentType.TEXT_AND_IMAGE;
  69.         surface.WriteText(builder);
  70.     }
  71. }
  72.  
  73. public void Commands(string argument)
  74. {
  75.     switch (argument)
  76.     {
  77.         case "down":
  78.             if (currentCoordinate < receivedCoordinates.Count - 1) currentCoordinate++;
  79.         break;
  80.         case "up":
  81.             if (currentCoordinate > 0) currentCoordinate--;
  82.         break;
  83.         case "remove":
  84.             if (currentCoordinate <= receivedCoordinates.Count - 1) receivedCoordinates.RemoveAt(currentCoordinate);
  85.         break;
  86.         case "send":
  87.             IGC.SendBroadcastMessage<Vector3D>(sendTag, receivedCoordinates[currentCoordinate], TransmissionDistance.AntennaRelay);
  88.             if (!sentCoordinates.Contains(receivedCoordinates[currentCoordinate])) sentCoordinates.Add(receivedCoordinates[currentCoordinate]);
  89.         break;
  90.     }
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement