41 lines
1.3 KiB
C#
41 lines
1.3 KiB
C#
|
|
using UnityEngine;
|
|||
|
|
|
|||
|
|
[RequireComponent(typeof(Pickup))]
|
|||
|
|
public class CombineWithBehavior : InteractionRequirementBase
|
|||
|
|
{
|
|||
|
|
public override bool TryInteract(FollowerController follower)
|
|||
|
|
{
|
|||
|
|
var heldItem = follower.currentlyHeldItem;
|
|||
|
|
var pickup = GetComponent<Pickup>();
|
|||
|
|
if (heldItem == null)
|
|||
|
|
{
|
|||
|
|
DebugUIMessage.Show("You need an item to combine.");
|
|||
|
|
OnFailure?.Invoke();
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
if (pickup == null || pickup.itemData == null)
|
|||
|
|
{
|
|||
|
|
DebugUIMessage.Show("Target item is missing or invalid.");
|
|||
|
|
OnFailure?.Invoke();
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
var rule = GameManager.Instance.GetCombinationRule(heldItem, pickup.itemData);
|
|||
|
|
if (rule != null && rule.result != null)
|
|||
|
|
{
|
|||
|
|
// Remove both items and add result to follower's inventory
|
|||
|
|
follower.SetHeldItem(rule.result);
|
|||
|
|
follower.justCombined = true;
|
|||
|
|
OnSuccess?.Invoke();
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
string heldName = heldItem.itemName ?? "an item";
|
|||
|
|
string targetName = pickup.itemData.itemName ?? "target item";
|
|||
|
|
DebugUIMessage.Show($"Cannot combine {heldName} with {targetName}.");
|
|||
|
|
OnFailure?.Invoke();
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|