64 lines
2.0 KiB
C#
64 lines
2.0 KiB
C#
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<PlayerModel> OnVerifyPlayer;
|
|
public event Action<PlayerModel> OnPlayerVerified;
|
|
|
|
private void Start()
|
|
{
|
|
if (netProvider is not null)
|
|
{
|
|
netProvider.AddCommandListener<PlayerVerifiedCommand>(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<UnityPlayerService>("正在发送玩家验证清单");
|
|
|
|
OnVerifyPlayer?.Invoke(command.PlayerModel);
|
|
|
|
netProvider.ServerCommand(command);
|
|
}
|
|
private void OnPlayerVerifiedCallback(PlayerVerifiedCommand command)
|
|
{
|
|
BIT4Log.Log<UnityPlayerService>($"玩家\t{command.PlayerModel.Name}\t已验证");
|
|
OnPlayerVerified?.Invoke(command.PlayerModel);
|
|
}
|
|
}
|
|
}
|