using UnityEngine;
///
/// Bridge component that connects SettlementInteractionManager's GameObject control
/// with SettlementInteractionUI's UI Toolkit system
///
public class SettlementUIBridge : MonoBehaviour
{
[Header("UI Bridge")]
[Tooltip("The SettlementInteractionUI component to control")]
public SettlementInteractionUI settlementUI;
[Tooltip("Should this GameObject's active state control the UI visibility?")]
public bool controlUIVisibility = true;
private bool lastActiveState;
void Start()
{
// Find SettlementInteractionUI if not assigned
if (settlementUI == null)
{
// First try to get from same GameObject
settlementUI = GetComponent();
}
if (settlementUI == null)
{
// Then try to find in scene
settlementUI = FindFirstObjectByType();
}
if (settlementUI != null)
{
// Force initial state
lastActiveState = gameObject.activeSelf;
UpdateUIVisibility();
}
else
{
Debug.LogError("[UIBridge] SettlementInteractionUI not found! Make sure it's on the same GameObject.");
}
}
void Update()
{
if (!controlUIVisibility) return;
// Check if GameObject active state changed
bool currentActiveState = gameObject.activeSelf;
if (currentActiveState != lastActiveState)
{
lastActiveState = currentActiveState;
UpdateUIVisibility();
}
}
private void UpdateUIVisibility()
{
if (settlementUI == null) return;
if (gameObject.activeSelf)
{
// Force UI to show with test data if no real settlement detected
settlementUI.ForceShowUI();
}
else
{
settlementUI.ForceHideUI();
}
}
void OnEnable()
{
UpdateUIVisibility();
}
void OnDisable()
{
if (settlementUI != null)
{
settlementUI.ForceHideUI();
}
}
}