62 lines
1.6 KiB
C#
62 lines
1.6 KiB
C#
using UnityEngine;
|
|
using UnityEngine.Events;
|
|
|
|
public class MemoryPieceReward : MonoBehaviour
|
|
{
|
|
[Header("Reference")]
|
|
[SerializeField] private MemoryProgressManager memoryProgressManager;
|
|
|
|
[Header("Reward")]
|
|
[SerializeField] private int rewardAmount = 1;
|
|
[SerializeField] private bool giveOnlyOnce = true;
|
|
|
|
[Header("Auto Find")]
|
|
[SerializeField] private bool autoFindManager = true;
|
|
|
|
[Header("Events")]
|
|
public UnityEvent onRewardGiven;
|
|
public UnityEvent onRewardAlreadyGiven;
|
|
|
|
[Header("Debug")]
|
|
[SerializeField] private bool showDebugLog = true;
|
|
|
|
private bool alreadyGiven;
|
|
|
|
private void Awake()
|
|
{
|
|
if (memoryProgressManager == null && autoFindManager)
|
|
memoryProgressManager = FindFirstObjectByType<MemoryProgressManager>();
|
|
}
|
|
|
|
public void GiveReward()
|
|
{
|
|
if (giveOnlyOnce && alreadyGiven)
|
|
{
|
|
onRewardAlreadyGiven?.Invoke();
|
|
|
|
if (showDebugLog)
|
|
Debug.Log("[MemoryPieceReward] 이미 지급된 기억의 조각입니다.");
|
|
|
|
return;
|
|
}
|
|
|
|
if (memoryProgressManager == null)
|
|
{
|
|
Debug.LogWarning("[MemoryPieceReward] MemoryProgressManager가 연결되지 않았습니다.");
|
|
return;
|
|
}
|
|
|
|
memoryProgressManager.AddMemoryPiece(rewardAmount);
|
|
alreadyGiven = true;
|
|
onRewardGiven?.Invoke();
|
|
|
|
if (showDebugLog)
|
|
Debug.Log($"[MemoryPieceReward] 기억의 조각 +{rewardAmount}");
|
|
}
|
|
|
|
public void ResetReward()
|
|
{
|
|
alreadyGiven = false;
|
|
}
|
|
}
|