using UnityEngine; /// /// Test helper to simulate entering different settlement types /// Use this to test town vs village generation /// public class SettlementTestHelper : MonoBehaviour { [Header("Test Controls")] public bool createContextOnStart = false; // DISABLED - Don't override real settlement context public SettlementType testSettlementType = SettlementType.Town; public string testSettlementName = "Test Town"; public bool testHasHarbor = false; void Start() { // COMPLETELY DISABLED - This component should never interfere with real settlement system Debug.Log("SettlementTestHelper: DISABLED - No test context creation allowed"); return; // if (createContextOnStart) // { // Debug.Log("SettlementTestHelper: Creating test context (should only happen during testing)"); // CreateTestSettlementContext(); // } // else // { // Debug.Log("SettlementTestHelper: Disabled - not creating test context"); // } } [ContextMenu("Create Test Town Context")] public void CreateTestTownContext() { CreateSettlementContext("Test Town", SettlementType.Town, new Vector2Int(100, 100), true); } [ContextMenu("Create Test Village Context")] public void CreateTestVillageContext() { CreateSettlementContext("Test Village", SettlementType.Village, new Vector2Int(50, 50), false); } [ContextMenu("Create Custom Test Context")] public void CreateTestSettlementContext() { CreateSettlementContext(testSettlementName, testSettlementType, new Vector2Int(75, 75), testHasHarbor); } private void CreateSettlementContext(string name, SettlementType type, Vector2Int position, bool harbor) { // Find or create SettlementContext var existingContext = FindFirstObjectByType(); SettlementContext context; if (existingContext != null) { context = existingContext; Debug.Log("Using existing SettlementContext"); } else { var contextObject = new GameObject("SettlementContext"); context = contextObject.AddComponent(); Debug.Log("Created new SettlementContext"); } // Set settlement data context.SetSettlement(name, type, position, harbor); Debug.Log($"✅ Settlement context configured: {name} ({type}) - Harbor: {harbor}"); // Force regenerate shops to see immediate effect var shops = context.GenerateShops(); Debug.Log($"Generated shops: {string.Join(", ", System.Array.ConvertAll(shops, s => s.buildingName))}"); // Update any existing TownShopManager var shopManager = FindFirstObjectByType(); if (shopManager != null) { Debug.Log("Forcing TownShopManager to reinitialize with new settlement data"); // Force clear the shops and reinitialize everything properly shopManager.allShops = null; shopManager.ReinitializeShopsAndUI(); // Use the new method that handles UI properly } // Update TownManager if it exists var townManager = FindFirstObjectByType(); if (townManager != null) { townManager.townName = name; townManager.hasHarbor = harbor; Debug.Log("Updated TownManager with settlement data"); } } [ContextMenu("Clear Settlement Context")] public void ClearSettlementContext() { var context = FindFirstObjectByType(); if (context != null) { context.ClearSettlementData(); Debug.Log("Settlement context cleared"); } else { Debug.Log("No settlement context found to clear"); } } [ContextMenu("Print Current Context")] public void PrintCurrentContext() { if (SettlementContext.Instance != null) { var ctx = SettlementContext.Instance; Debug.Log($"Current Settlement Context:"); Debug.Log($" Name: {ctx.settlementName}"); Debug.Log($" Type: {ctx.settlementType}"); Debug.Log($" Position: {ctx.mapPosition}"); Debug.Log($" Harbor: {ctx.hasHarbor}"); Debug.Log($" Generated: {ctx.isGenerated}"); Debug.Log($" Shop Count: {(ctx.availableShops?.Length ?? 0)}"); } else { Debug.Log("No SettlementContext instance found"); } } }