using Fantasy.Async; using Fantasy.Network; // ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract #pragma warning disable CS8602 // Dereference of a possibly null reference. namespace Fantasy; public static class GateUnitHelper { /// /// GateUnit上线 /// /// /// /// /// public static GateUnit Online(Scene scene, string userName, Session session) { // 增加一个GateUnit到缓存中、如果缓存中已经存在直接返回缓存中的实体数据 return scene.GetComponent().Add(userName, session); } /// /// GateUnit下线 /// /// /// public static void Offline(Scene scene, long gateUnitId) { if (!scene.GetComponent().TryGet(gateUnitId, out var gateUnit)) { return; } gateUnit.GetOrAddComponent().SetTimeout(5000); } /// /// 缓存中获取一个GateUnit /// /// /// /// public static GateUnit? Get(Scene scene, string userName) { return scene.GetComponent().Get(userName); } /// /// 缓存中获取一个GateUnit /// /// /// /// public static GateUnit? Get(Scene scene, long gateUnitId) { return scene.GetComponent().Get(gateUnitId); } /// /// 尝试获取一个GateUnit /// /// /// /// /// public static bool TryGet(Scene scene, string userName, out GateUnit? gateUnit) { return scene.GetComponent().TryGet(userName, out gateUnit); } /// /// 尝试获取一个GateUnit /// /// /// /// /// public static bool TryGet(Scene scene, long gateUnitId, out GateUnit? gateUnit) { return scene.GetComponent().TryGet(gateUnitId, out gateUnit); } /// /// 在缓存中移除一个GateUnit /// /// /// /// public static FTask Remove(Scene scene, string userName, bool isDispose = true) { return scene.GetComponent().Remove(userName, isDispose); } /// /// 在缓存中移除一个GateUnit /// /// /// /// public static FTask Remove(Scene scene, long gateUnitId, bool isDispose = true) { return scene.GetComponent().Remove(gateUnitId, isDispose); } }