45 lines
1.1 KiB
C#

using Fantasy;
using Fantasy.Async;
using Fantasy.Entitas.Interface;
using Fantasy.Network;
namespace Hotfix;
public static class GameAccountSystem
{
public static async FTask SaveToDatabase(this GameAccount self,Scene scene)
{
await scene.World.DataBase.Save(self);
}
public static GameAccountInfo GetGameAccountInfo(this GameAccount self)
{
return new GameAccountInfo()
{
CreateTime = self.CreateTime,
LoginTime = self.LoginTime,
GameName = self.GameName,
};
}
public static async FTask DisConnect(this GameAccount self)
{
var scene = self.Scene;
var accountId = self.Id;
Log.Debug("Gate gameAccount 下线前 保存数据到 数据库中");
await self.SaveToDatabase(scene);
await GateComponentHelper.GetGameAccountManageComponent(scene).Remove(accountId);
}
}
public class GameAccountDestroy : DestroySystem<GameAccount>
{
protected override void Destroy(GameAccount self)
{
self.DisConnect().Coroutine();
self.CreateTime = 0;
self.LoginTime = 0;
self.SessionRuntimeId = 0;
}
}