PlayerFactory.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. namespace ET.Server
  2. {
  3. public static class PlayerFactory
  4. {
  5. /// <summary>
  6. /// 创建玩家实体
  7. /// </summary>
  8. /// <param name="session"></param>
  9. /// <param name="playerInfo"></param>
  10. /// <returns></returns>
  11. public static async ETTask<WNPlayer> CreatPlayer(Session session, PlayerInfo playerInfo)
  12. {
  13. WNPlayer player = session.DomainScene().GetComponent<GamePlayerComponent>()
  14. .AddChild<WNPlayer, Session, PlayerInfo>(session, playerInfo);
  15. // 绑定sessionId
  16. if (playerInfo.PlayerType == 0)
  17. {
  18. player.GameSessionActorId = session.InstanceId;
  19. player.Session = session;
  20. }
  21. player.BasicProp = CharacterCategory.Instance.Get(playerInfo.Pro);
  22. player.BornType = (int)BORN_TYPE.NORMAL;
  23. player.EnterState = (int)ENTER_STATE.online;
  24. // 玩家基础数据组件
  25. player.AddComponent<PlayerDataComponent, PlayerInfo, WNPlayer>(playerInfo, player);
  26. // 玩家临时数据组件
  27. await player.AddComponent<PlayerTempDataComponent, WNPlayer>(player).Init();
  28. // 玩家技能组件
  29. await player.AddComponent<PlayerSkillComponent, WNPlayer>(player).Init();
  30. // 玩家货币组件
  31. await player.AddComponent<PlayerMoneyComponent, WNPlayer>(player).Init();
  32. return player;
  33. }
  34. }
  35. }