63 lines
2.1 KiB
C#
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
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|