using System; using System.Collections; using System.Collections.Generic; using BITFALL.Services; using BITKit; using BITKit.HttpNet; using BITKit.Steamwork; using BITKit.SubSystems; using UnityEngine; using Cysharp.Threading.Tasks; using INetClient = BITKit.INetClient; namespace BITFALL { public class UnityPlayerService : MonoBehaviour, IPlayerService { //申明服务 [SerializeField, SerializeReference, SubclassSelector] private INetProvider netProvider; [SerializeField, SerializeReference, SubclassSelector] private INetClient netClient; [SerializeField, SerializeReference, SubclassSelector] private ISteamService steamService; //接口实现 public event Action OnVerifyPlayer; public event Action OnPlayerVerified; private void Start() { if (netProvider is not null) { netProvider.AddCommandListener(OnPlayerVerifiedCallback); netProvider.AddRpcHandle(this); } if (netClient is not null) netClient.OnConnected += OnConnect; } private void OnConnect() { var command = new PlayerVerifiedCommand() { PlayerModel = new PlayerModel { Id =netClient.Id, SteamId =steamService.SteamId, Name = steamService.Name, } }; BIT4Log.Log("正在发送玩家验证清单"); OnVerifyPlayer?.Invoke(command.PlayerModel); netProvider.ServerCommand(command); } private void OnPlayerVerifiedCallback(PlayerVerifiedCommand command) { BIT4Log.Log($"玩家\t{command.PlayerModel.Name}\t已验证"); OnPlayerVerified?.Invoke(command.PlayerModel); } } }