using UnityEngine; namespace MalbersAnimations.Weapons { public interface IMWeapon : IMDamager { /// Gets the Weapon ID Value WeaponID WeaponType { get; } /// Unique Weapon ID, Random numbers diferenciate 2 weapons of the same Type int WeaponID { get; } /// This will give information to use if on the animation for Store and Draw weapon. int HolsterID { get; } /// Description to use on the UI for every weapon string Description { get; } /// Offset Position to place the Weapon on the Characters hand Vector3 PositionOffset { get; } /// Offset Rotation to place the Weapon on the Characters hand Vector3 RotationOffset { get; } /// Is the Weapon Right-Handed or Left-Handed bool IsRightHanded { get; } /// The Weapon will continue attacking if the Input is Down bool Automatic { get; set; } /// Minimum Damage the Weapon can casueto a Stat float MinDamage { get; } /// Maximum Damage the Weapon can casue to a Stat float MaxDamage { get; } /// Minimum Force the Weapon can casue to an object float MinForce { get; } /// Maximum Force the Weapon can casue to an object float MaxForce { get; } /// Is the Weapon Equiped bool IsEquiped { get; set; } /// Enables the Main Attack bool MainInput { get; set; } /// Enables the Secondary Attack or Aiming bool SecondInput { get; set; } /// Reset all the Weapons Properties void ResetWeapon(); /// Which Side the Weapon can Aim AimSide AimSide { set; get; } /// Transform to Set the Aim Origin Transform AimOrigin { get; } /// Owner of the Weapon IMWeaponOwner WeaponOwner { get; set; } /// Play the sounds clips /// ID is the index on the list of clips void PlaySound(int ID); System.Action WeaponAction { get; set; } /// Make all the Calcultations to Restore ammo in the Chamber /// True = if it can reload bool Reload(); } public interface IShootableWeapon : IMWeapon { /// Projectile to Shoot GameObject Projectile { get; set; } /// Is the weapon Reloading bool IsReloading { get; set; } /// Total Ammo of the gun int TotalAmmo { get; set; } /// Ammo in Chamber int AmmoInChamber { get; set; } /// Size of the Chamber int ChamberSize { get; set; } } /// Character who is currenlty using the weapon public interface IMWeaponOwner { /// Character Animator Animator Anim { get; } /// is the Character aiming bool Aim { get; } /// Aim Horizontal angle regarding the camera float HorizontalAngle { get; } /// Get the Aimer Component of the Character IAim Aimer { get; } /// Direction the weapon is Aiming Vector3 AimDirection { get; } /// Set the Active Weapon Action int WeaponAction { get; } /// Returns where is the Camera regarding the player, False: Right; True: Left bool AimingSide { get; } /// IK Weight for IK Modifications float WeaponIKW { get; set; } GameObject Owner { get; } /// Equiped/Active Weapon on the Character MWeapon Weapon { get; } Transform RightShoulder {get;} Transform LeftShoulder {get;} Transform Chest {get;} Transform RightHand {get;} Transform LeftHand {get;} Transform Head { get;} /// External Transform to be use so the Rider does not hurt the Mount Transform IgnoreTransform { get; set; } } }