using System.Threading.Tasks;
using Impostor.Api.Innersloth.Customization;
using Impostor.Api.Net.Inner.Objects.Components;
namespace Impostor.Api.Net.Inner.Objects
{
public interface IInnerPlayerControl : IInnerNetObject
{
///
/// Gets the assigned by the client of the host of the game.
///
byte PlayerId { get; }
///
/// Gets the of the .
/// Contains vent logic.
///
IInnerPlayerPhysics Physics { get; }
///
/// Gets the of the .
/// Contains position data about the player.
///
IInnerCustomNetworkTransform NetworkTransform { get; }
///
/// Gets the of the .
/// Contains metadata about the player.
///
IInnerPlayerInfo PlayerInfo { get; }
///
/// Sets the name of the current .
/// Visible to all players.
///
/// A name for the player.
/// Task that must be awaited.
ValueTask SetNameAsync(string name);
///
/// Sets the color of the current .
/// Visible to all players.
///
/// A color for the player.
/// Task that must be awaited.
ValueTask SetColorAsync(byte colorId);
/// A color for the player.
///
ValueTask SetColorAsync(ColorType colorType);
///
/// Sets the hat of the current .
/// Visible to all players.
///
/// An hat for the player.
/// Task that must be awaited.
ValueTask SetHatAsync(uint hatId);
/// An hat for the player.
///
ValueTask SetHatAsync(HatType hatType);
///
/// Sets the pet of the current .
/// Visible to all players.
///
/// A pet for the player.
/// Task that must be awaited.
ValueTask SetPetAsync(uint petId);
/// A pet for the player.
///
ValueTask SetPetAsync(PetType petType);
///
/// Sets the skin of the current .
/// Visible to all players.
///
/// A skin for the player.
/// Task that must be awaited.
ValueTask SetSkinAsync(uint skinId);
/// A skin for the player.
///
ValueTask SetSkinAsync(SkinType skinType);
///
/// Send a chat message as the current .
/// Visible to all players.
///
/// The message to send.
/// Task that must be awaited.
ValueTask SendChatAsync(string text);
///
/// Send a chat message as the current .
/// Visible to only the current.
///
/// The message to send.
///
/// The player that should receive this chat message.
/// When left as null, will send message to self.
///
/// Task that must be awaited.
ValueTask SendChatToPlayerAsync(string text, IInnerPlayerControl? player = null);
///
/// Sets the current to be murdered by an impostor .
/// Visible to all players.
///
/// /// The Impostor who kill.
/// Task that must be awaited.
ValueTask SetMurderedByAsync(IClientPlayer impostor);
}
}