namespace IdleSpectator;
///
/// While Idle Spectator focuses a unit, reuse vanilla destination / lover / attack
/// cursor arrows by pinning .
/// Arrow visibility follows the player's existing PlayerConfig toggles
/// (cursor_arrow_destination, cursor_arrow_lover,
/// cursor_arrow_attack_target) - idle does not force them on or off.
///
internal static class FocusRelationshipArrows
{
public static void OnSpectatorEnabled()
{
PinFocusActor();
}
public static void OnSpectatorDisabled()
{
UnitSelectionEffect.setLastActor(null);
}
///
/// Keep the focused unit as the vanilla "hovered" actor so relationship arrows draw
/// when the matching cursor-arrow options are already enabled.
/// Safe to call every frame; no-op when idle is off or there is no focus.
///
public static void PinFocusActor()
{
if (!SpectatorMode.Active || !MoveCamera.hasFocusUnit())
{
return;
}
Actor focus = MoveCamera._focus_unit;
if (focus == null || !focus.isAlive())
{
return;
}
UnitSelectionEffect.setLastActor(focus);
}
public static bool IsPinnedToFocus()
{
if (!SpectatorMode.Active || !MoveCamera.hasFocusUnit())
{
return false;
}
Actor focus = MoveCamera._focus_unit;
return focus != null
&& focus.isAlive()
&& UnitSelectionEffect.last_actor == focus;
}
}