角色从选人界面进入游戏从点击界面的进入按钮开始。
当点击进入后,会将选人界面的索引通过UserService的SendGameEnter方法发送到服务器端,之后服务器端会处理以下几件事:
1、UserService的OnGameEnter接受到请求,根据索引调用出session存放的角色信息。
2、调用角色管理器CharacterManager,将角色信息导入。
|
1、拥有一个字典表Characters ,存放了所有线上角色。
2、进入游戏时需要导入的角色信息导入到Characters 里
3、调用地图管理器MapManager里返回实体类Map的索引器,将session与角色信息导入Map实
体类的CharacterEnter方法
|
进入游戏阶段的地图管理器
1、拥有一个存放所有地图的字典Maps
2、初始化时所有地图信息从DataManager中获取,并且利用Map初始化并填充入字典内。
3、拥有一个返回实体Map的索引器,参数是MapId
|
进入游戏阶段的实体Map
1、拥有一个存储线上角色的实体MapCharacter,里面有相应的NetConnection和
Character实体
2、拥有一个存储所有线上玩家的字典Dictionary<int, MapCharacter>
MapCharacters。
3、拥有一个方法CharacterEnter,控制角色的进入。需要有参数
(NetConnection<NetSession>和实体Character)。里面做了几件事:
1.将Character里的MapId改为当前Map的MapId
2.将玩家的角色添加入MapCharacters
3.将玩家的角色添加入响应里
4.一个循环方法,循环将MapCharacters的character放入响应里的List中。
循环调用一个同样拥有参数(NetConnection<NetSession>conn和实体
Character)的方法SendCharacterEnterMap,这个方法的作用是给其他玩家发
送当前玩家的Character信息。(这个conn是MapCharacter里的connection,
是其他玩家的connection)还有个SendCharacterLeaveMap类似。
进入游戏阶段的角色管理器
客户端阶段:
接收到MapCharacterResponse响应后,首先采用NCharacterInfo接收服务器端的角色信息。
(只接收List的第一个值,因为服务器端会把玩家的Character添加到List的第一位。)
角色离开
通过UserService.Instance.SendGameLeave()通知角色离开。