1- // GameFrameX 组织下的以及组织衍生的项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
2- //
3- // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE 文件。
4- //
5- // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
6-
7- using GameFrameX . Apps . Common . Event ;
8- using GameFrameX . Apps . Common . Session ;
9- using GameFrameX . Apps . Player . Player . Component ;
10- using GameFrameX . Apps . Player . Player . Entity ;
11- using GameFrameX . Core . Abstractions . Events ;
12- using GameFrameX . Hotfix . Logic . Server . Server ;
13-
14- namespace GameFrameX . Hotfix . Logic . Role . Login ;
15-
16- public class PlayerComponentAgent : StateComponentAgent < PlayerComponent , PlayerState >
17- {
18- public async Task OnLogout ( )
19- {
20- //移除在线玩家
21- var serverComp = await ActorManager . GetComponentAgent < ServerComponentAgent > ( ) ;
22- await serverComp . RemoveOnlineRole ( ActorId ) ;
23- //下线后会被自动回收
24- SetAutoRecycle ( true ) ;
25- QuartzTimer . UnSchedule ( ScheduleIdSet ) ;
26- }
27-
28- /// <summary>
29- /// 使用角色ID登录
30- /// </summary>
31- /// <param name="workChannel"></param>
32- /// <param name="reqLogin"></param>
33- public async Task OnPlayerLogin ( INetWorkChannel workChannel , ReqPlayerLogin reqLogin )
34- {
35- var playerState = await OwnerComponent . OnPlayerLogin ( reqLogin ) ;
36- if ( playerState == null )
37- {
38- //角色找不到?
39- return ;
40- }
41-
42- // 更新连接会话数据
43- SessionManager . UpdateSession ( workChannel . GameAppSession . SessionID , playerState . Id , playerState . Id . ToString ( ) ) ;
44- var respPlayerLogin = new RespPlayerLogin
45- {
46- UniqueId = reqLogin . UniqueId ,
47- Code = playerState . State ,
48- CreateTime = playerState . CreateTime ,
49- PlayerInfo = new PlayerInfo
50- {
51- Id = playerState . Id ,
52- Name = playerState . Name ,
53- Level = playerState . Level ,
54- State = playerState . State ,
55- Avatar = playerState . Avatar ,
56- } ,
57- } ;
58- await workChannel . WriteAsync ( respPlayerLogin ) ;
59-
60- //加入在线玩家
61- var serverComp = await ActorManager . GetComponentAgent < ServerComponentAgent > ( ) ;
62- await serverComp . AddOnlineRole ( ActorId ) ;
63- }
64-
65- [ Event ( EventId . SessionRemove ) ]
66- private class EL : EventListener < PlayerComponentAgent >
67- {
68- protected override Task HandleEvent ( PlayerComponentAgent agent , Event evt )
69- {
70- return agent . OnLogout ( ) ;
71- }
72- }
1+ // GameFrameX 组织下的以及组织衍生的项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
2+ //
3+ // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE 文件。
4+ //
5+ // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
6+
7+ using GameFrameX . Apps . Common . Event ;
8+ using GameFrameX . Apps . Common . Session ;
9+ using GameFrameX . Apps . Player . Player . Component ;
10+ using GameFrameX . Apps . Player . Player . Entity ;
11+ using GameFrameX . Core . Abstractions . Events ;
12+ using GameFrameX . Hotfix . Logic . Server . Server ;
13+
14+ namespace GameFrameX . Hotfix . Logic . Role . Login ;
15+
16+ public class PlayerComponentAgent : StateComponentAgent < PlayerComponent , PlayerState >
17+ {
18+ public async Task OnLogout ( )
19+ {
20+ //移除在线玩家
21+ var serverComp = await ActorManager . GetComponentAgent < ServerComponentAgent > ( ) ;
22+ await serverComp . RemoveOnlineRole ( ActorId ) ;
23+ //下线后会被自动回收
24+ SetAutoRecycle ( true ) ;
25+ QuartzTimer . Remove ( ScheduleIdSet ) ;
26+ }
27+
28+ /// <summary>
29+ /// 使用角色ID登录
30+ /// </summary>
31+ /// <param name="workChannel"></param>
32+ /// <param name="reqLogin"></param>
33+ public async Task OnPlayerLogin ( INetWorkChannel workChannel , ReqPlayerLogin reqLogin )
34+ {
35+ var playerState = await OwnerComponent . OnPlayerLogin ( reqLogin ) ;
36+ if ( playerState == null )
37+ {
38+ //角色找不到?
39+ return ;
40+ }
41+
42+ // 更新连接会话数据
43+ SessionManager . UpdateSession ( workChannel . GameAppSession . SessionID , playerState . Id , playerState . Id . ToString ( ) ) ;
44+ var respPlayerLogin = new RespPlayerLogin
45+ {
46+ UniqueId = reqLogin . UniqueId ,
47+ Code = playerState . State ,
48+ CreateTime = playerState . CreateTime ,
49+ PlayerInfo = new PlayerInfo
50+ {
51+ Id = playerState . Id ,
52+ Name = playerState . Name ,
53+ Level = playerState . Level ,
54+ State = playerState . State ,
55+ Avatar = playerState . Avatar ,
56+ } ,
57+ } ;
58+ await workChannel . WriteAsync ( respPlayerLogin ) ;
59+
60+ //加入在线玩家
61+ var serverComp = await ActorManager . GetComponentAgent < ServerComponentAgent > ( ) ;
62+ await serverComp . AddOnlineRole ( ActorId ) ;
63+ }
64+
65+ [ Event ( EventId . SessionRemove ) ]
66+ private class EL : EventListener < PlayerComponentAgent >
67+ {
68+ protected override Task HandleEvent ( PlayerComponentAgent agent , Event evt )
69+ {
70+ return agent . OnLogout ( ) ;
71+ }
72+ }
7373}
0 commit comments