Files
HauntedBloodlines/Assets/Scripts/Story/NearbyRoomsMultiChanger.cs
2025-05-29 22:31:40 +03:00

63 lines
2.1 KiB
C#

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<RoomCategoryChange> categoryChanges = new List<RoomCategoryChange>();
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
});
}
}
}
}