using UnityEngine;
///
/// Enhanced debug helper for testing the click management system specifically for ActiveQuestUI.
/// This provides detailed debugging information to help troubleshoot click blocking issues.
///
public class ActiveQuestUIDebugger : MonoBehaviour
{
[Header("Debug Settings")]
public bool enableDebugMode = true;
public bool showClickDetails = true;
public bool showUIBounds = true;
public KeyCode testKey = KeyCode.F9;
private ActiveQuestUI activeQuestUI;
void Start()
{
activeQuestUI = FindFirstObjectByType();
if (activeQuestUI == null)
{
Debug.LogWarning("ActiveQuestUIDebugger: No ActiveQuestUI found in scene!");
}
// Enable ClickManager debug logs
if (ClickManager.Instance != null)
{
ClickManager.Instance.showDebugLogs = enableDebugMode;
}
}
void Update()
{
if (Input.GetKeyDown(testKey))
{
TestActiveQuestUIBlocking();
}
if (Input.GetMouseButtonDown(0) && showClickDetails)
{
TestSpecificClick();
}
}
void TestActiveQuestUIBlocking()
{
Debug.Log("=== ActiveQuestUI Debug Test ===");
if (activeQuestUI == null)
{
Debug.LogError("❌ ActiveQuestUI not found!");
return;
}
Debug.Log($"✅ ActiveQuestUI found");
Debug.Log($"📊 IsVisible: {activeQuestUI.IsVisible}");
// Test ClickManager registration
if (ClickManager.Instance != null)
{
Debug.Log($"🔧 ClickManager blockers count: {ClickManager.Instance.GetRegisteredBlockersCount()}");
ClickManager.Instance.ListRegisteredBlockers();
}
else
{
Debug.LogError("❌ ClickManager not available!");
}
// Test a specific screen position (center of screen)
Vector2 centerScreen = new Vector2(Screen.width / 2f, Screen.height / 2f);
bool wouldBlock = activeQuestUI.IsBlockingClick(centerScreen);
Debug.Log($"🎯 Would block center screen click: {wouldBlock}");
}
void TestSpecificClick()
{
Vector2 mousePos = Input.mousePosition;
Debug.Log($"=== Click Test at {mousePos} ===");
if (activeQuestUI != null)
{
bool questUIBlocks = activeQuestUI.IsBlockingClick(mousePos);
Debug.Log($"📝 ActiveQuestUI blocks: {questUIBlocks}");
Debug.Log($"📊 ActiveQuestUI.IsVisible: {activeQuestUI.IsVisible}");
}
if (ClickManager.Instance != null)
{
bool anyBlocks = ClickManager.Instance.IsClickBlocked(mousePos);
Debug.Log($"🔒 Any UI blocks: {anyBlocks}");
}
}
void OnGUI()
{
if (!showUIBounds || activeQuestUI == null) return;
// Draw UI bounds visualization
GUI.color = Color.red;
GUI.Label(new Rect(10, 10, 400, 20), $"ActiveQuestUI Debug - Visible: {activeQuestUI.IsVisible}");
GUI.Label(new Rect(10, 30, 400, 20), $"ClickManager Blockers: {ClickManager.Instance?.GetRegisteredBlockersCount() ?? 0}");
GUI.Label(new Rect(10, 50, 400, 20), $"Press {testKey} to run detailed test");
GUI.color = Color.white;
}
}