Update slot items to simplified slotting logic + reveal renderers

This commit is contained in:
Michal Pikulski
2025-12-16 11:08:29 +01:00
parent 2807292cd7
commit ef709f5725
4 changed files with 232 additions and 1829 deletions

View File

@@ -59,9 +59,7 @@ namespace Dialogue
PuzzleManager.Instance.OnStepCompleted += OnAnyPuzzleStepCompleted;
ItemManager.Instance.OnItemPickedUp += OnAnyItemPickedUp;
ItemManager.Instance.OnCorrectItemSlotted += OnAnyItemSlotted;
ItemManager.Instance.OnIncorrectItemSlotted += OnAnyIncorrectItemSlotted;
ItemManager.Instance.OnForbiddenItemSlotted += OnAnyForbiddenItemSlotted;
ItemManager.Instance.OnItemSlotCleared += OnAnyItemSlotCleared;
ItemManager.Instance.OnWrongItemAttempted += OnAnyWrongItemAttempted;
ItemManager.Instance.OnItemsCombined += OnAnyItemsCombined;
}
@@ -191,9 +189,7 @@ namespace Dialogue
{
ItemManager.Instance.OnItemPickedUp -= OnAnyItemPickedUp;
ItemManager.Instance.OnCorrectItemSlotted -= OnAnyItemSlotted;
ItemManager.Instance.OnIncorrectItemSlotted -= OnAnyIncorrectItemSlotted;
ItemManager.Instance.OnForbiddenItemSlotted -= OnAnyForbiddenItemSlotted;
ItemManager.Instance.OnItemSlotCleared -= OnAnyItemSlotCleared;
ItemManager.Instance.OnWrongItemAttempted -= OnAnyWrongItemAttempted;
ItemManager.Instance.OnItemsCombined -= OnAnyItemsCombined;
}
}
@@ -538,7 +534,7 @@ namespace Dialogue
}
}
private void OnAnyIncorrectItemSlotted(PickupItemData slotDefinition, PickupItemData slottedItem)
private void OnAnyWrongItemAttempted(PickupItemData slotDefinition, PickupItemData attemptedItem)
{
// Initialize if needed
if (!initialized)
@@ -554,53 +550,10 @@ namespace Dialogue
if (currentNode.nodeType == RuntimeDialogueNodeType.WaitOnSlot &&
slotDefinition.itemId == currentNode.slotItemID)
{
// Treat as Incorrect for dialogue purposes
_currentSlotState = ItemSlotState.Incorrect;
_lastSlottedItem = slottedItem;
_lastSlottedItem = attemptedItem;
UpdateDialogueVisibilityOnItemEvent();
}
}
private void OnAnyForbiddenItemSlotted(PickupItemData slotDefinition, PickupItemData slottedItem)
{
// Initialize if needed
if (!initialized)
{
StartDialogue();
}
// Update the slot state for displaying the correct dialogue lines
if (!IsActive || IsCompleted || currentNode == null)
return;
// Only update state if we're actively waiting on this slot
if (currentNode.nodeType == RuntimeDialogueNodeType.WaitOnSlot &&
slotDefinition.itemId == currentNode.slotItemID)
{
_currentSlotState = ItemSlotState.Forbidden;
_lastSlottedItem = slottedItem;
UpdateDialogueVisibilityOnItemEvent();
}
}
private void OnAnyItemSlotCleared(PickupItemData removedItem)
{
// Initialize if needed
if (!initialized)
{
StartDialogue();
}
// Update the slot state when an item is removed
if (!IsActive || IsCompleted || currentNode == null)
return;
// Reset slot state if we were tracking this item
if (_lastSlottedItem != null && _lastSlottedItem == removedItem)
{
_currentSlotState = ItemSlotState.None;
_lastSlottedItem = null;
UpdateDialogueVisibilityOnItemEvent();
}