Files
BookRPG/Assets/Scripts/Quests.cs
2026-07-16 21:49:59 +01:00

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);
}
}
}
}