using System; using System.Collections.Generic; using TMPro; using UnityEngine; public class TaskManager : MonoBehaviour { #region Statication public static TaskManager instance; private void Awake() { if (instance != null && instance != this) { Destroy(gameObject); return; } instance = this; } #endregion public Task[] taskList; //list of all tasks in the game public List activeTasks = new(); //it doesn't need to be serialized wtf are you talking about public int maxTasksActive; public Task startingTask; [Header("UI")] [SerializeField] private TaskUIObject templateTaskUI; public Transform taskGrid; public TextMeshProUGUI taskNameUI; public TextMeshProUGUI taskDescriptionUI; public Dictionary allTaskUIObjects = new(); public bool AddTask(Task taskToAdd) { if (activeTasks.Count >= maxTasksActive) { return false; } activeTasks.Add(taskToAdd); AddTaskUIObject(taskToAdd); return true; } private void Start() { //AddTask(startingTask); } public void CompleteTask(Task taskToComplete) { //remove items from inventory aswell. also need to //activeTasks.Remove(taskToComplete); Debug.Log($"{taskToComplete.taskName} COMPLETED"); foreach (InventoryManager.ItemAmount itemReward in taskToComplete.itemRewards) { InventoryManager.instance.AddItem(itemReward.item, itemReward.amount); } InventoryManager.instance.AddMoney(taskToComplete.moneyReward); } public void CheckInventory() { foreach (Task task in activeTasks) { bool skip = false; foreach (InventoryManager.ItemAmount itemRequirment in task.itemRequirements) { if (InventoryManager.instance.storedItems[itemRequirment.item] < itemRequirment.amount) //doesn't track enemies killed yet but i haven't added combat yet { skip = true; break; } } if (!skip) { CompleteTask(task); } } } public void AddTaskUIObject(Task requestedTask) { TaskUIObject newTaskUIObject = Instantiate(templateTaskUI, taskGrid); allTaskUIObjects[requestedTask] = newTaskUIObject; newTaskUIObject.SetTask(requestedTask); } public void SetTaskUI(Task requestedTask) { taskNameUI.text = requestedTask.taskName; taskDescriptionUI.text = requestedTask.description; } }