17 lines
880 B
C#
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();
|
|
}
|