BITFALL/Assets/Artists/Scripts/Player/UnityPlayerService.cs

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);
}
}
}