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);
}
}