using UnityEngine;
///
/// Clean MapMaker2 controller - handles only the new system
///
public class MapMaker2Controller : MonoBehaviour
{
[Header("Map References")]
public MapMaker2 mapMaker;
public SimpleTeamPlacement teamPlacement;
[Header("Debug")]
public bool debug = false;
void Start()
{
SetupMapMaker2System();
}
private void SetupMapMaker2System()
{
// Find MapMaker2 if not assigned
if (mapMaker == null)
{
mapMaker = FindFirstObjectByType();
}
// Find SimpleTeamPlacement if not assigned
if (teamPlacement == null)
{
teamPlacement = FindFirstObjectByType();
}
// Create SimpleTeamPlacement if it doesn't exist
if (teamPlacement == null)
{
Debug.Log("Creating SimpleTeamPlacement...");
GameObject teamPlacementObj = new GameObject("SimpleTeamPlacement");
teamPlacement = teamPlacementObj.AddComponent();
// Configure the team placement
teamPlacement.markerSize = 1.5f;
teamPlacement.markerHeight = 0.5f;
teamPlacement.markerColor = Color.green;
teamPlacement.enableBlinking = true;
}
if (debug)
{
Debug.Log("=== MapMaker2 System Status ===");
Debug.Log($"MapMaker2: {(mapMaker != null ? "✅ Found" : "❌ Missing")}");
Debug.Log($"SimpleTeamPlacement: {(teamPlacement != null ? "✅ Found" : "❌ Missing")}");
if (mapMaker != null)
{
Debug.Log($"Map Size: {mapMaker.initialMapSize}x{mapMaker.initialMapSize}");
Debug.Log($"Seed: {mapMaker.seed}");
Debug.Log($"MapVisualizer: {(mapMaker.mapVisualizer != null ? "✅ Assigned" : "❌ Missing")}");
}
}
}
[ContextMenu("Regenerate Map")]
public void RegenerateMap()
{
if (mapMaker != null)
{
// Change seed for variety
mapMaker.seed = Random.Range(1000, 9999);
mapMaker.RegenerateMap();
if (debug)
{
Debug.Log($"🎲 Map regenerated with new seed: {mapMaker.seed}");
}
}
else
{
Debug.LogError("❌ MapMaker2 not found!");
}
}
[ContextMenu("Debug River Paths Info")]
public void DebugRiverPathsInfo()
{
if (mapMaker?.GetMapData() == null)
{
Debug.LogError("❌ No map data available");
return;
}
var mapData = mapMaker.GetMapData();
int riverPathsCount = 0;
int forestCount = 0;
int riverCount = 0;
// Count rivers that have forests around them (creating paths)
for (int x = 0; x < mapData.Width; x++)
{
for (int y = 0; y < mapData.Height; y++)
{
var tile = mapData.GetTile(x, y);
switch (tile.terrainType)
{
case TerrainType.Forest:
forestCount++;
break;
case TerrainType.River:
riverCount++;
// Check if this river has forests nearby (creating a path effect)
bool hasNearbyForest = false;
for (int dx = -1; dx <= 1; dx++)
{
for (int dy = -1; dy <= 1; dy++)
{
if (dx == 0 && dy == 0) continue;
int checkX = x + dx, checkY = y + dy;
if (mapData.IsValidPosition(checkX, checkY))
{
if (mapData.GetTile(checkX, checkY).terrainType == TerrainType.Forest)
{
hasNearbyForest = true;
break;
}
}
}
if (hasNearbyForest) break;
}
if (hasNearbyForest) riverPathsCount++;
break;
}
}
}
Debug.Log("=== RIVER PATHS ANALYSIS ===");
Debug.Log($"🌊 Total River tiles: {riverCount}");
Debug.Log($"🌲 Forest tiles: {forestCount}");
Debug.Log($"🛤️ River paths through forests: {riverPathsCount}");
Debug.Log($"💡 Rivers create clear blue paths through green forests");
if (riverPathsCount > 0)
{
Debug.Log($"✅ SUCCESS: Found {riverPathsCount} river paths through forests! Look for blue waterways cutting through green forest areas.");
}
else
{
Debug.Log("❓ No river paths found. Try regenerating the map with a different seed.");
}
}
void Update()
{
// Debug keys
if (Input.GetKeyDown(KeyCode.F5))
{
RegenerateMap();
}
if (Input.GetKeyDown(KeyCode.F6))
{
DebugRiverPathsInfo();
}
}
}