swb_shared/IPlayerBase.cs
using Sandbox.Citizen;
using System;

namespace SWB.Shared;

public interface IPlayerBase : IValid
{
	public CameraComponent ViewModelCamera { get; set; }
	public CameraComponent Camera { get; set; }
	public GameObject Body { get; set; }
	public SkinnedModelRenderer BodyRenderer { get; set; }
	//public CharacterController CharacterController { get; set; }
	public CitizenAnimationHelper AnimationHelper { get; set; }
	public GameObject GameObject { get; }
	public IInventory Inventory { get; set; }
	public bool IsFirstPerson { get; }
	public Vector3 Velocity { get; }
	public bool IsCrouching { get; set; }
	public bool IsRunning { get; set; }
	public bool IsOnGround { get; }
	public bool IsAlive { get; }
	public int MaxHealth { get; set; }
	public int Health { get; set; }
	public int Kills { get; set; }
	public int Deaths { get; set; }
	public Guid Id { get; }

	/// <summary>Input sensitivity modifier</summary>
	public float InputSensitivity { get; set; }

	/// <summary>View angles</summary>
	public Angles EyeAngles { get; set; }

	/// <summary>View position</summary>
	public Vector3 EyePos { get; }

	/// <summary>EyeAngles offset (Resets after being applied)</summary>
	public Angles EyeAnglesOffset { get; set; }

	/// <summary>
	/// Called when the weapon wants to know how much ammo is available
	/// </summary>
	/// <param name="type">The type of ammo</param>
	/// <returns>How much ammo is available</returns>
	public int AmmoCount( string type );

	/// <summary>
	/// Called when the weapon is trying to take ammo.
	/// </summary>
	/// <param name="type">The type of ammo</param>
	/// <param name="amount">The amount of ammo requested</param>
	/// <returns>How much ammo was actually taken</returns>
	public int TakeAmmo( string type, int amount );

	/// <summary>
	/// Called when the player takes damage
	/// </summary>
	/// <param name="info">Information about the damage</param>
	public void TakeDamage( DamageInfo info );

	/// <summary>
	/// Shakes the camera
	/// </summary>
	/// <param name="screenShake">Information about the shake</param>
	public void ShakeScreen( ScreenShake screenShake );

	public bool IsAttackPressed(string type);
	public bool IsAttackDown(string type);
	public bool IsReloadDown();
}