초기커밋

This commit is contained in:
2025-05-01 07:20:41 +09:00
commit 98bb2e3c5c
2747 changed files with 646947 additions and 0 deletions

View File

@@ -0,0 +1,112 @@

using ServerCore;
using ServerBase;
using ServerCommon;
using Nettention.Proud;
namespace GameServer;
public partial class GameLoginListener : ProudNetListener
{
public GameLoginListener( ServerLogicBase serverLogicBase
, ModuleContext moduleContext)
: base(serverLogicBase, moduleContext)
{
}
protected override bool onBindStubHandler()
{
// 수신 프로토콜 연결 하기
{
var stub = new PClientToGame.Stub();
if (false == resisterStub(stub))
{
return false;
}
stub.Message = onRecvProtocol;
stub.P2PMotionSync = onRecvP2PMotionSync;
}
{
// 프로토콜 분리시 적용
//var stub = new PGameProtocol.Stub();
//if (false == resisterStub(stub))
//{
// return false;
//}
//stub.ProtocolHandler = onRecvGameProtocolHandler;
}
ServerCore.Log.getLogger().info($"Success GameLoginListener.onBindStubHandler() - {toBasicString()}");
return true;
}
protected override bool onAttachProxyAll()
{
var net_server = getNetServer();
NullReferenceCheckHelper.throwIfNull(net_server, () => "net_server is null !!!");
var proxy = new PClientToGame.Proxy();
if (false == resisterProxy(proxy))
{
return false;
}
ServerCore.Log.getLogger().info($"Success GameLoginListener.onAttachProxyAll() - {toBasicString()}");
return true;
}
protected override async Task<IEntityWithSession?> onNewEntityWithSession(NetClientInfo clientInfo)
{
return await Task.FromResult(new Player(clientInfo));
}
protected override async Task onDisconnectedEntityWithSession(IEntityWithSession disconnectedEntity)
{
await Task.CompletedTask; //warning CS1998 회피 목적 !!!
var disconnected_user = disconnectedEntity as Player;
NullReferenceCheckHelper.throwIfNull(disconnected_user, () => "disconnected_user is null !!!");
if (true == disconnected_user.isCompletedLogout())
{
Log.getLogger().debug($"Disconnection event received: Client disconnected By GameServer with CustomEvent(GameLogoutReq or UserKick) !!! - {disconnected_user.toBasicString()}");
return;
}
else
{
Log.getLogger().debug($"Disconnection event received: Client disconnected By Client !!! - {disconnected_user.toBasicString()}");
}
var task_serializer = disconnected_user as IWithTaskSerializer;
NullReferenceCheckHelper.throwIfNull(task_serializer, () => $"task_serializer is null !!! - {disconnected_user.toBasicString()}");
_ = task_serializer.getTaskSerializer().postLogicFunc(async () =>
{
var game_logout_action = disconnected_user.getEntityAction<GameLogoutAction>();
await game_logout_action.logoutUser();
}, "from onDisconnectedEntityWithSession()");
}
protected override bool setMessageMaxLength()
{
var net_server = getNetServer();
NullReferenceCheckHelper.throwIfNull(net_server, () => "net_server is null !!!");
//TODO: Constant.MAX_PACKET_SIZE, Constant.MAX_PACKET_SIZE <= ConfigParam 활용으로 수정
net_server.SetMessageMaxLength(256_000, 256_000);
return true;
}
public override async Task onLogoutUserAllByKick()
{
await getGameServerLogic().getPlayerManager().logoutUserAllByKick();
}
}