70 lines
2.5 KiB
C#
70 lines
2.5 KiB
C#
using UnityEngine;
|
||
|
||
public class NearbyRoomsChanger : MonoBehaviour
|
||
{
|
||
[Header("Target Room Trigger")]
|
||
public RoomTrigger targetRoomTrigger;
|
||
|
||
[Header("Selected Category")]
|
||
public int selectedCategoryIndex = 0; // Index που βλέπεις/ορίζεις στον Inspector
|
||
|
||
/// <summary>
|
||
/// Κάνει Set την επιλεγμένη κατηγορία ΜΟΝΟ στο editor ή testing.
|
||
/// </summary>
|
||
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
|
||
});
|
||
}
|
||
|
||
}
|