using UnityEngine;
using UnityEngine.UIElements;
///
/// Setup script to configure all UI systems in the map scene.
/// Handles both travel system and team overview setup automatically.
///
public class MapSceneSetup : MonoBehaviour
{
[Header("Setup Options")]
public bool autoSetupOnStart = true;
public bool showDebugLogs = true;
[Header("UI Settings")]
public bool enableTeamOverview = true;
public bool enableTravelSystem = true;
void Start()
{
if (autoSetupOnStart)
{
SetupMapScene();
}
}
[ContextMenu("Setup Map Scene")]
public void SetupMapScene()
{
// Check if we're in Play Mode
if (!Application.isPlaying)
{
Debug.LogWarning("⚠️ MapSceneSetup: Please run this setup during Play Mode, not Edit Mode!");
Debug.LogWarning("💡 Either enter Play Mode and try again, or let it run automatically via autoSetupOnStart.");
return;
}
if (showDebugLogs)
{
Debug.Log("🏗️ Setting up Map Scene UI systems...");
}
// Setup team overview if enabled
if (enableTeamOverview)
{
SetupTeamOverview();
}
// Setup travel system if enabled
if (enableTravelSystem)
{
SetupTravelSystem();
}
if (showDebugLogs)
{
Debug.Log("✅ Map Scene setup complete!");
}
}
[ContextMenu("Force Setup (Play Mode Only)")]
public void ForceSetupInPlayMode()
{
if (!Application.isPlaying)
{
Debug.LogError("❌ This setup requires Play Mode! Enter Play Mode first.");
return;
}
SetupMapScene();
}
///
/// Sets up the team overview controller
///
private void SetupTeamOverview()
{
// Look for UI GameObject
GameObject uiGameObject = GameObject.Find("UI");
if (uiGameObject == null)
{
if (showDebugLogs)
{
Debug.LogWarning("⚠️ No UI GameObject found - Team Overview not setup");
}
return;
}
// Check if TeamOverviewController already exists
var existingController = FindFirstObjectByType();
if (existingController != null)
{
if (showDebugLogs)
{
Debug.Log("📋 TeamOverviewController already exists");
}
return;
}
// Create a new GameObject for the TeamOverviewController
GameObject teamOverviewObject = new GameObject("TeamOverviewController");
teamOverviewObject.transform.SetParent(uiGameObject.transform);
// Add the TeamOverviewController component
var teamOverviewController = teamOverviewObject.AddComponent();
if (showDebugLogs)
{
Debug.Log("✅ TeamOverviewController created and setup");
}
}
///
/// Sets up the travel system (delegates to existing setup if available)
///
private void SetupTravelSystem()
{
var travelSystemSetup = FindFirstObjectByType();
if (travelSystemSetup != null)
{
if (showDebugLogs)
{
Debug.Log("🚗 Using existing TravelSystemSetup");
}
// Let the existing travel system setup handle this
return;
}
// Look for UI GameObject
GameObject uiGameObject = GameObject.Find("UI");
if (uiGameObject == null)
{
if (showDebugLogs)
{
Debug.LogWarning("⚠️ No UI GameObject found - Travel System not setup");
}
return;
}
// Check if TravelUIController already exists
var existingUIController = uiGameObject.GetComponent();
if (existingUIController != null)
{
if (showDebugLogs)
{
Debug.Log("🚗 TravelUIController already exists");
}
return;
}
// Add TravelUIController to UI GameObject
var uiController = uiGameObject.AddComponent();
uiController.showDebugLogs = showDebugLogs;
if (showDebugLogs)
{
Debug.Log("✅ TravelUIController created and setup");
}
}
///
/// Context menu methods for debugging
///
[ContextMenu("Setup Team Overview Only")]
public void SetupTeamOverviewOnly()
{
SetupTeamOverview();
}
[ContextMenu("Setup Travel System Only")]
public void SetupTravelSystemOnly()
{
SetupTravelSystem();
}
[ContextMenu("Verify UI Setup")]
public void VerifyUISetup()
{
var uiGameObject = GameObject.Find("UI");
if (uiGameObject == null)
{
Debug.LogError("❌ UI GameObject not found!");
return;
}
var uiDocument = uiGameObject.GetComponent();
var teamOverviewController = FindFirstObjectByType();
var travelUIController = uiGameObject.GetComponent();
Debug.Log($"🔍 UI Setup Verification:");
Debug.Log($" UIDocument: {(uiDocument != null ? "✅" : "❌")}");
Debug.Log($" TeamOverviewController: {(teamOverviewController != null ? "✅" : "❌")}");
Debug.Log($" TravelUIController: {(travelUIController != null ? "✅" : "❌")}");
if (uiDocument?.rootVisualElement != null)
{
var root = uiDocument.rootVisualElement;
var teamOverviewPanel = root.Q("TeamOverviewPanel");
var travelContainer = root.Q("TravelContainer");
Debug.Log($" TeamOverviewPanel in UXML: {(teamOverviewPanel != null ? "✅" : "❌")}");
Debug.Log($" TravelContainer in UXML: {(travelContainer != null ? "✅" : "❌")}");
}
}
}