73 lines
2.1 KiB
C#
73 lines
2.1 KiB
C#
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<ITask> onCompleted); // Vytvoøení tasku + naètení postupu
|
|
void ExitTask(Action<ITask> 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<ITask> _onCompleted;
|
|
|
|
public void Initialize(Action<ITask> onCompleted) // Vytvoøení tasku
|
|
{
|
|
IsCompleted = false;
|
|
_onCompleted = onCompleted;
|
|
|
|
}
|
|
public void ExitTask(Action<ITask> 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
|
|
} |