using System; using NB.Authentication; using Fantasy; using Fantasy.Async; using Fantasy.Entitas; using Fantasy.Network; // ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract namespace NB; public static class EntityHelper { public static bool CheckInterval(this Entity entity, int interval) { var sessionTimeOutComponent = entity.GetComponent(); if (sessionTimeOutComponent == null) { sessionTimeOutComponent = entity.AddComponent(); sessionTimeOutComponent.SetInterval(interval); return true; } return sessionTimeOutComponent.CheckInterval(); } public static void SetTimeout(this Entity entity, int timeout = 3000, Func? task = null) { var sessionTimeOutComponent = entity.GetComponent(); if (sessionTimeOutComponent == null) { sessionTimeOutComponent = entity.AddComponent(); } sessionTimeOutComponent.TimeOut(timeout, task); } public static bool IsTimeOutComponent(this Entity entity) { return entity.GetComponent() != null; } public static void CancelTimeout(this Entity entity) { entity.RemoveComponent(); } }