114 lines
3.3 KiB
C#
114 lines
3.3 KiB
C#
using UnityEngine;
|
|
using System.Collections.Generic;
|
|
public class Quests : MonoBehaviour
|
|
{
|
|
private string questName;
|
|
private string questDescription;
|
|
private int requiredLevel;
|
|
private int rewardGold;
|
|
private int rewardExperience;
|
|
private int requiredQuantity;
|
|
private Quests[] prerequisites;
|
|
private List<Quests> completedQuests = new List<Quests>();
|
|
private List<Quests> activeQuests = new List<Quests>();
|
|
private List<Quests> availableQuests = new List<Quests>();
|
|
// Start is called before the first frame update
|
|
void Start()
|
|
{
|
|
|
|
}
|
|
|
|
// Update is called once per frame
|
|
void Update()
|
|
{
|
|
|
|
}
|
|
public Quests(string name, string description, int level, int gold, int experience, int quantity, Quests[] prerequisites)
|
|
{
|
|
this.questName = name;
|
|
this.questDescription = description;
|
|
this.requiredLevel = level;
|
|
this.rewardGold = gold;
|
|
this.rewardExperience = experience;
|
|
this.requiredQuantity = quantity;
|
|
this.prerequisites = prerequisites;
|
|
}
|
|
public void StartQuest()
|
|
{
|
|
// Logic to start the quest
|
|
activeQuests.Add(this);
|
|
}
|
|
public void CompleteQuest()
|
|
{
|
|
// Logic to complete the quest
|
|
activeQuests.Remove(this);
|
|
completedQuests.Add(this);
|
|
}
|
|
public void AbandonQuest()
|
|
{
|
|
// Logic to abandon the quest
|
|
activeQuests.Remove(this);
|
|
}
|
|
public void FailQuest()
|
|
{
|
|
// Logic to fail the quest
|
|
activeQuests.Remove(this);
|
|
}
|
|
public Quests[] GetPrerequisites()
|
|
{
|
|
return prerequisites;
|
|
}
|
|
public void GetQuestDetails()
|
|
{
|
|
// Logic to get quest details
|
|
Debug.Log($"Quest Name: {questName}");
|
|
Debug.Log($"Description: {questDescription}");
|
|
Debug.Log($"Required Level: {requiredLevel}");
|
|
Debug.Log($"Reward Gold: {rewardGold}");
|
|
Debug.Log($"Reward Experience: {rewardExperience}");
|
|
Debug.Log($"Required Quantity: {requiredQuantity}");
|
|
}
|
|
public void CheckQuestStatus()
|
|
{
|
|
// Logic to check the status of the quest
|
|
if (activeQuests.Contains(this))
|
|
{
|
|
Debug.Log($"Quest '{questName}' is currently active.");
|
|
}
|
|
else if (completedQuests.Contains(this))
|
|
{
|
|
Debug.Log($"Quest '{questName}' has been completed.");
|
|
}
|
|
else
|
|
{
|
|
Debug.Log($"Quest '{questName}' is not active or completed.");
|
|
}
|
|
}
|
|
public void GetAvailableQuests()
|
|
{
|
|
// Logic to get available quests based on prerequisites and player level
|
|
// This is a placeholder implementation; you would typically check the player's level and completed quests
|
|
availableQuests.Clear();
|
|
if (prerequisites == null || prerequisites.Length == 0)
|
|
{
|
|
availableQuests.Add(this);
|
|
}
|
|
else
|
|
{
|
|
bool allPrerequisitesCompleted = true;
|
|
foreach (var prerequisite in prerequisites)
|
|
{
|
|
if (!completedQuests.Contains(prerequisite))
|
|
{
|
|
allPrerequisitesCompleted = false;
|
|
break;
|
|
}
|
|
}
|
|
if (allPrerequisitesCompleted)
|
|
{
|
|
availableQuests.Add(this);
|
|
}
|
|
}
|
|
}
|
|
|
|
} |