using UnityEngine; public class NearbyRoomsChanger : MonoBehaviour { [Header("Target Room Trigger")] public RoomTrigger targetRoomTrigger; [Header("Selected Category")] public int selectedCategoryIndex = 0; // Index που βλέπεις/ορίζεις στον Inspector /// /// Κάνει Set την επιλεγμένη κατηγορία ΜΟΝΟ στο editor ή testing. /// public void SetSelectedCategory() { if (targetRoomTrigger != null && targetRoomTrigger.nearbyRoomCategories.Count > 0) { targetRoomTrigger.SetActiveCategory(selectedCategoryIndex); targetRoomTrigger.UpdateRoomTriggerSnapshot(); // ✨ πολύ σημαντικό! Debug.Log($"[NearbyRoomsChanger] Set category: {targetRoomTrigger.nearbyRoomCategories[selectedCategoryIndex].categoryName}"); } else { Debug.LogWarning("[NearbyRoomsChanger] Target RoomTrigger is null or has no categories!"); } } public void SetSelectedCategoryInGame() { var roomTriggers = RoomManager.GetInstance()?.activeRoomTriggers; if (roomTriggers == null || roomTriggers.Count == 0) { Debug.LogWarning("[NearbyRoomsChanger] No active RoomTriggers found."); return; } if (targetRoomTrigger == null) { Debug.LogWarning("[NearbyRoomsChanger] No target RoomTrigger assigned."); return; } string targetSceneName = targetRoomTrigger.RoomSceneName; foreach (RoomTrigger rt in roomTriggers) { if (rt.RoomSceneName == targetSceneName) { rt.SetActiveCategory(selectedCategoryIndex); rt.UpdateRoomTriggerSnapshot(); Debug.Log($"[NearbyRoomsChanger] Set category {selectedCategoryIndex} on room: {rt.RoomSceneName}"); return; } } // Αν δεν βρέθηκε ➝ κρατάμε pending αλλαγή Debug.LogWarning($"[NearbyRoomsChanger] Target RoomTrigger with scene name '{targetSceneName}' not found in active room triggers. Will queue pending category change."); RoomManager.GetInstance()?.pendingCategoryChanges.RemoveAll(p => p.roomSceneName == targetSceneName); RoomManager.GetInstance()?.pendingCategoryChanges.Add(new RoomTriggerPendingCategory { roomSceneName = targetSceneName, categoryIndex = selectedCategoryIndex }); } }