45 lines
1.1 KiB
C#
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);
|
|
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;
|
|
}
|
|
} |