Added IInteractable and Stations
This commit is contained in:
73
Assets/GameManager/Interfaces.cs
Normal file
73
Assets/GameManager/Interfaces.cs
Normal file
@@ -0,0 +1,73 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user