using System.Collections.Generic; using UnityEditor.EditorTools; using UnityEngine; public class NearbyRoomsMultiChanger : MonoBehaviour { [System.Serializable] public class RoomCategoryChange { public RoomTrigger roomTrigger; public int categoryIndex; } [Header("Room Category Changes")] public List categoryChanges = new List(); public void SetSelectedCategoriesInGame() { var roomManager = RoomManager.GetInstance(); var roomTriggers = roomManager?.activeRoomTriggers; if (roomManager == null) { Debug.LogError("[NearbyRoomsMultiChanger] RoomManager not found in the scene."); return; } if (roomTriggers == null || roomTriggers.Count == 0) { Debug.LogWarning("[NearbyRoomsMultiChanger] No active RoomTriggers found."); return; } foreach (var change in categoryChanges) { if (change.roomTrigger == null) continue; string targetSceneName = change.roomTrigger.RoomSceneName; RoomTrigger matchedTrigger = roomTriggers.Find(rt => rt.RoomSceneName == targetSceneName); if (matchedTrigger != null) { matchedTrigger.SetActiveCategory(change.categoryIndex); matchedTrigger.UpdateRoomTriggerSnapshot(); Debug.Log($"[MultiChanger] Set category {change.categoryIndex} for {matchedTrigger.RoomSceneName}"); } else { // Save pending change Debug.LogWarning($"[MultiChanger] Target RoomTrigger '{targetSceneName}' not found in active list. Queued change."); RoomManager.GetInstance()?.pendingCategoryChanges.RemoveAll(p => p.roomSceneName == targetSceneName); RoomManager.GetInstance()?.pendingCategoryChanges.Add(new RoomTriggerPendingCategory { roomSceneName = targetSceneName, categoryIndex = change.categoryIndex }); } } } }