IInteractable.cs
// Anything the player walks up to and holds Use on: the vendor, the job
// board, the mission start trigger.
//
// Implementing this is what gets a "Hold E" prompt and a progress bar
// drawn for it - InteractionPromptHud finds every IInteractable in the
// scene and draws whichever one the player is standing in. Without it an
// interactable is invisible to the player, who has no way to know it's
// there or that holding the key is doing anything.
public interface IInteractable
{
/// <summary>Is the local player standing in this thing's trigger?</summary>
bool PlayerInRange { get; }
/// <summary>How far through the hold we are, 0 to 1.</summary>
float HoldFraction { get; }
/// <summary>Line shown above the bar, e.g. "Hold E to shop".</summary>
string PromptText { get; }
/// <summary>
/// Hide the prompt even while in range - used when this thing's own
/// menu is already open and the prompt would just be in the way.
/// </summary>
bool SuppressPrompt { get; }
}