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

64 lines
2.0 KiB
C#
Raw Normal View History

2023-06-08 14:09:50 +08:00
using System;
using System.Collections;
using System.Collections.Generic;
using BITFALL.Services;
using BITKit;
using BITKit.HttpNet;
2023-06-17 16:30:53 +08:00
using BITKit.Steamwork;
2023-06-08 14:09:50 +08:00
using BITKit.SubSystems;
using UnityEngine;
using Cysharp.Threading.Tasks;
2023-06-17 16:30:53 +08:00
using INetClient = BITKit.INetClient;
2023-06-08 14:09:50 +08:00
namespace BITFALL
{
public class UnityPlayerService : MonoBehaviour, IPlayerService
{
2023-06-17 16:30:53 +08:00
//申明服务
2023-06-08 14:09:50 +08:00
[SerializeField, SerializeReference, SubclassSelector]
private INetProvider netProvider;
2023-06-17 16:30:53 +08:00
[SerializeField, SerializeReference, SubclassSelector]
private INetClient netClient;
[SerializeField, SerializeReference, SubclassSelector]
private ISteamService steamService;
//接口实现
public event Action<PlayerModel> OnVerifyPlayer;
public event Action<PlayerModel> OnPlayerVerified;
2023-08-12 01:43:24 +08:00
2023-06-08 14:09:50 +08:00
private void Start()
{
2023-08-12 01:43:24 +08:00
if (netProvider is not null)
{
netProvider.AddCommandListener<PlayerVerifiedCommand>(OnPlayerVerifiedCallback);
netProvider.AddRpcHandle(this);
}
if (netClient is not null)
netClient.OnConnected += OnConnect;
2023-06-08 14:09:50 +08:00
}
2023-08-12 01:43:24 +08:00
2023-06-08 14:09:50 +08:00
private void OnConnect()
{
2023-06-17 16:30:53 +08:00
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);
2023-06-08 14:09:50 +08:00
}
}
}