using GeoSus.Client; using System; using UnityEngine; /*public enum TaskType { Task //TODO: Typy úkolù }*/ [System.Serializable] public class TaskData { //TaskType public GameObject TaskPrefab; } public interface ITask { public string TaskID { get; set; } // Unikátní ID úkolu pro server public TaskType TaskType { get; set; } // Typ úkolu public string TaskName { get; set; } // Viditelný název úkolu public Position TaskLocation { get; set; } // Polohy na mapì public bool IsCompleted { get; } // Stav dokončení úkolu void Initialize(Action onCompleted); // Vytvoøení tasku + naètení postupu void ExitTask(Action onExit); // Pøi opuštìní úkolu poslat hotovo / uložit postup / reset void Complete(); // Oznaèit úkol jako dokonèený, poslat na server a zavøít } /* Ukázoková implementace ITask public class Wires : ITask{ public string TaskID { get; set; } // Unikátní ID úkolu pro server public TaskType TaskType { get; set; } // Typ úkolu public string TaskName { get; set; } // Viditelný název úkolu public Position TaskLocation { get; set; } // Poloha na mapì public bool IsCompleted { get; private set; } // Stav dokonèení úkolu private Action _onCompleted; public void Initialize(Action onCompleted) // Vytvoøení tasku { IsCompleted = false; _onCompleted = onCompleted; } public void ExitTask(Action onExit) //Zavøení tasku { onExit?.Invoke(this); } public void Complete() // Dokonèení tasku a zavøení { IsCompleted = true; _onCompleted?.Invoke(this); ExitTask(null); } } */ public enum StationType { Sabotage, Task, Meeting, Body } public interface IInteractable { public StationType Type { get; set; } // Typ stanice public Position Location { get; set; } // Pozice na mapě public PlayerRole? ReqRole { get; set; } // Požadovaná role hráče Impostor / Crewmate / Any = null public float InteractionRange { get; set; } // Dosah interakce void Interact(PlayerRole role); // Spuštění interakce }