50 lines
1.2 KiB
C#
50 lines
1.2 KiB
C#
using System;
|
|
using UnityEngine;
|
|
|
|
public enum QuestGoalType
|
|
{
|
|
CollectItem,
|
|
KillEnemy,
|
|
TalkToNPC
|
|
}
|
|
|
|
[Serializable]
|
|
public class QuestGoal
|
|
{
|
|
public QuestGoalType goalType;
|
|
public ItemData targetItem;
|
|
public string enemyType;
|
|
public string npcId;
|
|
[Min(1)] public int requiredAmount = 1;
|
|
|
|
public string GetTargetKey()
|
|
{
|
|
switch (goalType)
|
|
{
|
|
case QuestGoalType.CollectItem:
|
|
return targetItem != null ? targetItem.itemId : string.Empty;
|
|
case QuestGoalType.KillEnemy:
|
|
return enemyType;
|
|
case QuestGoalType.TalkToNPC:
|
|
return npcId;
|
|
default:
|
|
return string.Empty;
|
|
}
|
|
}
|
|
|
|
public string GetDisplayName()
|
|
{
|
|
switch (goalType)
|
|
{
|
|
case QuestGoalType.CollectItem:
|
|
return targetItem != null ? targetItem.itemName : "Unknown item";
|
|
case QuestGoalType.KillEnemy:
|
|
return string.IsNullOrWhiteSpace(enemyType) ? "Enemy" : enemyType;
|
|
case QuestGoalType.TalkToNPC:
|
|
return string.IsNullOrWhiteSpace(npcId) ? "NPC" : npcId;
|
|
default:
|
|
return "Goal";
|
|
}
|
|
}
|
|
}
|