/// --------------------------------------------- /// Ultimate Character Controller /// Copyright (c) Opsive. All Rights Reserved. /// https://www.opsive.com /// --------------------------------------------- namespace Opsive.UltimateCharacterController.Items.Actions { using Opsive.Shared.Inventory; using Opsive.UltimateCharacterController.Character.Abilities.Items; using Opsive.UltimateCharacterController.Items.AnimatorAudioStates; using Opsive.UltimateCharacterController.Utility; /// /// Interface for an item that can be reloaded. /// public interface IReloadableItem { /// /// Returns the item that the ReloadableItem is attached to. /// /// The item that the ReloadableItem is attached to. Item Item { get; } /// /// Returns the set for the Reload AnimatorAudioStateSet. /// /// The set for the Reload AnimatorAudioStateSet. AnimatorAudioStateSet ReloadAnimatorAudioStateSet { get; } /// /// Specifies if the item should wait for the OnAnimatorItemReload animation event or wait for the specified duration before reloading. /// /// Value of if the item should use the OnAnimatorItemReload animation event or wait the specified duration. AnimationEventTrigger ReloadEvent { get; } /// /// Specifies if the item should wait for the OnAnimatorItemReloadComplete animation event or wait for the specified duration before reloading. /// /// Value of if the item should use the OnAnimatorItemReloadComplete animation event or wait the specified duration. AnimationEventTrigger ReloadCompleteEvent { get; } /// /// Specifies when the item should automatically be reloaded. /// /// Value indicating when the item should automatically be reloaded. Reload.AutoReloadType AutoReload { get; } /// /// Can the camera zoom while the item is reloading? /// /// True if the camera can zoom while the item is reloading. bool CanCameraZoom { get; } /// /// Returns the ItemIdentifier which can be reloaded by the item. /// /// The ItemIdentifier which can be reloaded by the item. IItemIdentifier GetReloadableItemIdentifier(); /// /// Starts to reload the item. /// void StartItemReload(); /// /// Can the item be reloaded? /// /// Should the reload ensure the item is equipped? /// True if the item can be reloaded. bool CanReloadItem(bool checkEquipStatus); /// /// Reloads the item. /// /// Should the full clip be force reloaded? void ReloadItem(bool fullClip); /// /// Returns the substate index that the item should be in. /// /// the substate index that the item should be in. int GetItemSubstateIndex(); /// /// The item has finished reloading. /// /// Was the item reloaded successfully? /// Should the item be reloaded immediately? void ItemReloadComplete(bool success, bool immediateReload); } }