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

70 lines
2.5 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
});
}
}