Files
Dino_Love_Simulation/Assets/02_Scripts/Mission/MissionObjective.cs
2026-07-17 12:45:12 +09:00

17 lines
880 B
C#

using System;
using UnityEngine;
// 미션 목표 하나의 베이스. Mission 오브젝트의 자식으로 두면 자동 수집된다.
// 새 종류의 미션이 필요하면 이걸 상속해서 IsComplete 구현 + 상태가 바뀔 때
// RaiseChanged()만 호출하면 된다 (예: 물건 옮기기, 특정 위치 방문, NPC에게 아이템 전달).
public abstract class MissionObjective : MonoBehaviour
{
// 목표 달성 여부 — 되돌릴 수 있는 목표(물건을 도로 빼는 등)는 false로 돌아가도 된다.
// 미션 완료는 "모든 목표가 동시에 true"인 순간 Mission 쪽에서 확정(래치)된다.
public abstract bool IsComplete { get; }
// 달성 상태가 바뀔 때마다 발행 — Mission이 구독해서 완료를 재판정한다
public event Action Changed;
protected void RaiseChanged() => Changed?.Invoke();
}