From 64a1a414a1ccd491467caf6aa8fa80cc78a361eb Mon Sep 17 00:00:00 2001
From: annabunches <annabunches@gmail.com>
Date: Sun, 23 Feb 2025 13:43:16 -0500
Subject: [PATCH] Add an info display option for loading docks.

---
 DockLoader/Dock.cs      | 29 ++++++++++++++++++++++++++++-
 DockLoader/Warehouse.cs |  2 ++
 InfoDisplays/Program.cs |  2 +-
 3 files changed, 31 insertions(+), 2 deletions(-)

diff --git a/DockLoader/Dock.cs b/DockLoader/Dock.cs
index cd56241..e24bb95 100644
--- a/DockLoader/Dock.cs
+++ b/DockLoader/Dock.cs
@@ -1,6 +1,6 @@
 using Sandbox.ModAPI.Ingame;
-using SpaceEngineers.Game.ModAPI.Ingame;
 using System.Collections.Generic;
+using VRage.Game.GUI.TextPanel;
 using VRage.Game.ModAPI.Ingame.Utilities;
 
 namespace IngameScript
@@ -30,6 +30,7 @@ namespace IngameScript
                 }
             }
 
+            private IMyTextSurface _display;
             private IMyConveyorSorter _inputSorter;
             private IMyConveyorSorter _outputSorter;
             private List<IMyShipConnector> _ports = new List<IMyShipConnector>();
@@ -62,9 +63,26 @@ namespace IngameScript
                 _wasDocked = isDocked;
             }
 
+            public void UpdateDisplay()
+            {
+                if (_display == null) return;
+                switch (Mode)
+                {
+                    case DockMode.Loading:
+                        _display.WriteText("Ready to load cargo");
+                        break;
+                    case DockMode.Unloading:
+                        _display.WriteText("Unloading Cargo");
+                        break;
+                    case DockMode.Off:
+                        _display.WriteText("Standby Mode");
+                        break;
+                }
+            }
 
             public void StartLoading()
             {
+                _console.Print("Loading mode.");
                 Mode = DockMode.Loading;
                 _outputSorter.Enabled = false;
                 _inputSorter.Enabled = true;
@@ -72,6 +90,7 @@ namespace IngameScript
 
             public void StartUnloading()
             {
+                _console.Print("Unloading mode.");
                 Mode = DockMode.Unloading;
                 _inputSorter.Enabled = false;
                 _outputSorter.Enabled = true;
@@ -79,6 +98,7 @@ namespace IngameScript
 
             public void Reset()
             {
+                _console.Print("Disabling conveyors.");
                 Mode = DockMode.Off;
                 _inputSorter.Enabled = false;
                 _outputSorter.Enabled = false;
@@ -108,6 +128,13 @@ namespace IngameScript
                 {
                     _ports.Add(block as IMyShipConnector);
                 }
+                else if (block is IMyTextSurfaceProvider)
+                {
+                    // for now we'll just assume the first display, since that meets our most popular use case
+                    _display = ((IMyTextSurfaceProvider)block).GetSurface(0);
+                    _display.ContentType = ContentType.TEXT_AND_IMAGE;
+                    _display.WriteText("Standby Mode");
+                }
                 else
                 {
                     _console.Print($"Can't add block '{block.CustomName}'");
diff --git a/DockLoader/Warehouse.cs b/DockLoader/Warehouse.cs
index 576198d..bdb0ce6 100644
--- a/DockLoader/Warehouse.cs
+++ b/DockLoader/Warehouse.cs
@@ -32,6 +32,7 @@ namespace IngameScript
                     _timeoutTicks--;
                     if (_timeoutTicks == 0 || loadingCount == 0)
                     {
+                        _console.Print("Disabling loading mode and restoring default behavior.");
                         _timeoutTicks = 0;
                         _outputSorter.Enabled = false;
                         _inputSorter.Enabled = true;
@@ -42,6 +43,7 @@ namespace IngameScript
             // A dock has requested loading
             public void StartLoading()
             {
+                _console.Print("A dock has requested loading mode.");
                 _inputSorter.Enabled = false;
                 _outputSorter.Enabled = true;
                 _timeoutTicks = 75; // This is approximately 2 minutes.
diff --git a/InfoDisplays/Program.cs b/InfoDisplays/Program.cs
index 03611d9..64f0015 100644
--- a/InfoDisplays/Program.cs
+++ b/InfoDisplays/Program.cs
@@ -29,7 +29,7 @@ namespace IngameScript
                 {
                     switch (key.Name)
                     {
-                        case "ingotReport":
+                        case "resourceReport":
                             if (_oreReport != null) break;
                             int index = Ini.Get(key).ToInt32();
                             // extract text surface