TopDown Engine v4.5
Loading...
Searching...
No Matches
MoreMountains.TopDownEngine.ChargeWeapon Class Reference

Add this component to an object and it'll let you define a sequence of charge steps, each triggering their own unique weapon, complete with options like input modes or conditional releases, hooks for every steps, and more. Useful for Megaman or Zelda like types of charge weapons. More...

Inheritance diagram for MoreMountains.TopDownEngine.ChargeWeapon:
MoreMountains.TopDownEngine.Weapon MoreMountains.Tools.MMMonoBehaviour

Public Types

enum  TimescaleModes { Scaled , Unscaled }
 the possible timescales for this weapon More...
enum  ReleaseModes { OnInputRelease , AfterLastChargeDuration }
 whether the charge should be released on input release, or after the last charge duration More...
Public Types inherited from MoreMountains.TopDownEngine.Weapon
enum  TriggerModes { SemiAuto , Auto }
 the possible use modes for the trigger (semi auto : the Player needs to release the trigger to fire again, auto : the Player can hold the trigger to fire repeatedly More...
enum  WeaponStates {
  WeaponIdle , WeaponStart , WeaponDelayBeforeUse , WeaponUse ,
  WeaponDelayBetweenUses , WeaponStop , WeaponReloadNeeded , WeaponReloadStart ,
  WeaponReload , WeaponReloadStop , WeaponInterrupted
}
 the possible states the weapon can be in More...

Public Member Functions

override void Initialization ()
 On init, we initialize our durations, weapons and reset the charge.
virtual void InitializeTotalDurations ()
 goes through all weapons to setup their total duration (the time from start after which their step is complete)
virtual void ResetCharge ()
 resets the charge, reinitializing all counters
override void TurnWeaponOn ()
 When the charge weapon gets activated, we start charging.
override void WeaponInputReleased ()
 When the charge weapon's input gets released, we stop charging.
override void FlipWeapon ()
 Flips the weapon.
Public Member Functions inherited from MoreMountains.TopDownEngine.Weapon
virtual void InitializeComboWeapons ()
 Initializes the combo weapon, if it's one.
virtual void SetOwner (Character newOwner, CharacterHandleWeapon handleWeapon)
 Sets the weapon's owner.
virtual void WeaponInputStart ()
 Called by input, turns the weapon on.
virtual void CaseWeaponIdle ()
 If the weapon is idle, we reset the movement multiplier.
virtual void CaseWeaponStart ()
 When the weapon starts we switch to a delay or shoot based on our weapon's settings.
virtual void CaseWeaponDelayBeforeUse ()
 If we're in delay before use, we wait until our delay is passed and then request a shoot.
virtual void CaseWeaponUse ()
 On weapon use we use our weapon then switch to delay between uses.
virtual void CaseWeaponDelayBetweenUses ()
 When in delay between uses, we either turn our weapon off or make a shoot request.
virtual void CaseWeaponStop ()
 On weapon stop, we switch to idle.
virtual void CaseWeaponReloadNeeded ()
 If a reload is needed, we mention it and switch to idle.
virtual void CaseWeaponReloadStart ()
 on reload start, we reload the weapon and switch to reload
virtual void CaseWeaponReload ()
 on reload, we reset our movement multiplier, and switch to reload stop once our reload delay has passed
virtual void CaseWeaponReloadStop ()
 on reload stop, we swtich to idle and load our ammo
virtual void CaseWeaponInterrupted ()
 on weapon interrupted, we turn our weapon off and switch back to idle
virtual void Interrupt ()
 Call this method to interrupt the weapon.
virtual IEnumerator ShootRequestCo ()
 Determines whether or not the weapon can fire.
virtual void ShootRequest ()
virtual void WeaponUse ()
 When the weapon is used, plays the corresponding sound.
virtual void WeaponInputStop ()
 Called by input, turns the weapon off if in auto mode.
virtual void TurnWeaponOff ()
 Turns the weapon off.
virtual void ReloadNeeded ()
 Describes what happens when the weapon needs a reload.
virtual void InitiateReloadWeapon ()
 Initiates a reload.
virtual IEnumerator WeaponDestruction ()
 Destroys the weapon.
virtual void ApplyOffset ()
 Applies the offset specified in the inspector.
virtual void InitializeAnimatorParameters ()
 Adds required animator parameters to the animator parameters list if they exist.
virtual void UpdateAnimator ()
 Override this to send parameters to the character's animator. This is called once per cycle, by the Character class, after Early, normal and Late process().

Public Attributes

List< ChargeWeaponStepWeapons
 the list of weapons that make up this charge weapon's sequence of steps
ReleaseModes ReleaseMode = ReleaseModes.OnInputRelease
 whether this weapon should trigger its attack when all steps are done charging, or when input gets released
TimescaleModes TimescaleMode = TimescaleModes.Scaled
 whether this weapon's input should run on scaled or unscaled time
bool AllowInitialShot = true
 whether or not the start of the charge should trigger the first step's weapon's attack or not
int CurrentChargeIndex = 0
 the current charge index in the Weapons step list
bool Charging = false
 whether this weapon is currently charging or not
Public Attributes inherited from MoreMountains.TopDownEngine.Weapon
string WeaponName
 the name of the weapon, only used for debugging
bool WeaponCurrentlyActive = true
 whether or not the weapon is currently active
bool InputAuthorized = true
 if this is true, this weapon will be able to read input (usually via the CharacterHandleWeapon ability), otherwise player input will be disabled
TriggerModes TriggerMode = TriggerModes.Auto
 is this weapon on semi or full auto ?
float DelayBeforeUse = 0f
 the delay before use, that will be applied for every shot
bool DelayBeforeUseReleaseInterruption = true
 whether or not the delay before used can be interrupted by releasing the shoot button (if true, releasing the button will cancel the delayed shot)
float TimeBetweenUses = 1f
 the time (in seconds) between two shots
bool TimeBetweenUsesReleaseInterruption = true
 whether or not the time between uses can be interrupted by releasing the shoot button (if true, releasing the button will cancel the time between uses)
bool UseBurstMode = false
 if this is true, the weapon will activate repeatedly for every shoot request
int BurstLength = 3
 the amount of 'shots' in a burst sequence
float BurstTimeBetweenShots = 0.1f
 the time between shots in a burst sequence (in seconds)
bool MagazineBased = false
 whether or not the weapon is magazine based. If it's not, it'll just take its ammo inside a global pool
int MagazineSize = 30
 the size of the magazine
bool AutoReload
 if this is true, pressing the fire button when a reload is needed will reload the weapon. Otherwise you'll need to press the reload button
bool NoInputReload = false
 if this is true, reload will automatically happen right after the last bullet is shot, without the need for input
float ReloadTime = 2f
 the time it takes to reload the weapon
int AmmoConsumedPerShot = 1
 the amount of ammo consumed everytime the weapon fires
bool AutoDestroyWhenEmpty
 if this is set to true, the weapon will auto destroy when there's no ammo left
float AutoDestroyWhenEmptyDelay = 1f
 the delay (in seconds) before weapon destruction if empty
bool PreventReloadIfAmmoEmpty = false
 if this is true, the weapon won't try and reload if the ammo is empty, when using WeaponAmmo
int CurrentAmmoLoaded = 0
 the current amount of ammo loaded inside the weapon
Vector3 WeaponAttachmentOffset = Vector3.zero
 an offset that will be applied to the weapon once attached to the center of the WeaponAttachment transform.
bool FlipWeaponOnCharacterFlip = true
 should that weapon be flipped when the character flips?
Vector3 RightFacingFlipValue = new Vector3(1, 1, 1)
 the FlipValue will be used to multiply the model's transform's localscale on flip. Usually it's -1,1,1, but feel free to change it to suit your model's specs
Vector3 LeftFacingFlipValue = new Vector3(-1, 1, 1)
 the FlipValue will be used to multiply the model's transform's localscale on flip. Usually it's -1,1,1, but feel free to change it to suit your model's specs
Transform WeaponUseTransform
 a transform to use as the spawn point for weapon use (if null, only offset will be considered, otherwise the transform without offset)
bool WeaponShouldFlip = true
 if this is true, the weapon will flip to match the character's orientation
Transform LeftHandHandle
 the transform to which the character's left hand should be attached to
Transform RightHandHandle
 the transform to which the character's right hand should be attached to
bool ModifyMovementWhileAttacking = false
 if this is true, a multiplier will be applied to movement while the weapon is active
float MovementMultiplier = 0f
 the multiplier to apply to movement while attacking
bool PreventAllMovementWhileInUse = false
 if this is true all movement will be prevented (even flip) while the weapon is active
bool PreventAllAimWhileInUse = false
 if this is true all aim will be prevented while the weapon is active
float RecoilForce = 0f
 the force to apply to push the character back when shooting - positive values will push the character back, negative values will launch it forward, turning that recoil into a thrust
List< Animator > Animators
 the other animators (other than the Character's) that you want to update every time this weapon gets used
bool PerformAnimatorSanityChecks = false
 If this is true, sanity checks will be performed to make sure animator parameters exist before updating them. Turning this to false will increase performance but will throw errors if you're trying to update non existing parameters. Make sure your animator has the required parameters.
bool MirrorCharacterAnimatorParameters = false
 if this is true, the weapon's animator(s) will mirror the animation parameter of the owner character (that way your weapon's animator will be able to "know" if the character is walking, jumping, etc)
int WeaponAnimationID = 0
 the ID of the weapon to pass to the animator
string IdleAnimationParameter
 the name of the weapon's idle animation parameter : this will be true all the time except when the weapon is being used
string StartAnimationParameter
 the name of the weapon's start animation parameter : true at the frame where the weapon starts being used
string DelayBeforeUseAnimationParameter
 the name of the weapon's delay before use animation parameter : true when the weapon has been activated but hasn't been used yet
string SingleUseAnimationParameter
 the name of the weapon's single use animation parameter : true at each frame the weapon activates (shoots)
string UseAnimationParameter
 the name of the weapon's in use animation parameter : true at each frame the weapon has started firing but hasn't stopped yet
string DelayBetweenUsesAnimationParameter
 the name of the weapon's delay between each use animation parameter : true when the weapon is in use
string StopAnimationParameter
 the name of the weapon stop animation parameter : true after a shot and before the next one or the weapon's stop
string ReloadStartAnimationParameter
 the name of the weapon reload start animation parameter
string ReloadAnimationParameter
 the name of the weapon reload animation parameter
string ReloadStopAnimationParameter
 the name of the weapon reload end animation parameter
string WeaponAngleAnimationParameter
 the name of the weapon's angle animation parameter
string WeaponAngleRelativeAnimationParameter
 the name of the weapon's angle animation parameter, adjusted so it's always relative to the direction the character is currently facing
string EquippedAnimationParameter
 the name of the parameter to send to true as long as this weapon is equipped, used or not. While all the other parameters defined here are updated by the Weapon class itself, and passed to the weapon and character, this one will be updated by CharacterHandleWeapon only."
string InterruptedAnimationParameter
 the name of the parameter to send to true when the weapon gets interrupted. While all the other parameters defined here are updated by the Weapon class itself, and passed to the weapon and character, this one will be updated by CharacterHandleWeapon only."
MMFeedbacks WeaponStartMMFeedback
 the feedback to play when the weapon starts being used
MMFeedbacks WeaponUsedMMFeedback
 the feedback to play while the weapon is in use
MMFeedbacks WeaponUsedMMFeedbackAlt
 if set, this feedback will be used randomly instead of WeaponUsedMMFeedback
MMFeedbacks WeaponStopMMFeedback
 the feedback to play when the weapon stops being used
MMFeedbacks WeaponReloadMMFeedback
 the feedback to play when the weapon gets reloaded
MMFeedbacks WeaponReloadNeededMMFeedback
 the feedback to play when the weapon gets reloaded
MMFeedbacks WeaponReloadImpossibleMMFeedback
 the feedback to play when the weapon can't reload as there's no more ammo available. You'll need PreventReloadIfAmmoEmpty to be true for this to work
bool InitializeOnStart = false
 If this is true, the weapon will initialize itself on start, otherwise it'll have to be init manually, usually by the CharacterHandleWeapon class.
bool Interruptable = false
 whether or not this weapon can be interrupted
bool Flipped
 if true, the weapon is flipped
MMStateMachine< WeaponStatesWeaponState
 the weapon's state machine

Protected Member Functions

virtual void InitializeWeapons ()
 Initializes all weapons for all steps.
override void Update ()
 On update, if we're charging, we process our charge to evaluate the current step.
virtual void ProcessCharge ()
 Determines the current step, and if it's different from the last frame, starts the new step.
virtual void StartChargeSequence ()
 Initializes the charge sequence.
virtual void StartStepCharge (int index)
 Causes a step to start charging.
virtual void InterruptStepCharge (int index)
 Stops a step charge.
virtual void CompleteStepCharge (int index)
 Completes a step charge.
virtual void StopChargeSequence ()
 Stops the entire charge sequence, triggering the appropriate feedbacks.
virtual void ForceWeaponAttack (int index)
 Forces the weapon at the specified step to turn on.
virtual int FindCurrentWeaponIndex ()
 Returns the index of the current weapon in the charge sequence.
virtual bool WeaponExists (int index)
 Returns true if the weapon at the specified index exists.
Protected Member Functions inherited from MoreMountains.TopDownEngine.Weapon
virtual void Start ()
 On start we initialize our weapon.
virtual void InitializeFeedbacks ()
virtual void LateUpdate ()
 On LateUpdate, processes the weapon state.
virtual void ProcessWeaponState ()
 Called every lastUpdate, processes the weapon's state machine.
virtual void ApplyRecoil ()
 Applies recoil if necessary.
virtual void ResetMovementMultiplier ()
virtual void ReloadWeapon ()
 Reloads the weapon.
virtual void TriggerWeaponStartFeedback ()
 Plays the weapon's start sound.
virtual void TriggerWeaponUsedFeedback ()
 Plays the weapon's used sound.
virtual void TriggerWeaponStopFeedback ()
 Plays the weapon's stop sound.
virtual void TriggerWeaponReloadNeededFeedback ()
 Plays the weapon's reload needed sound.
virtual void TriggerWeaponReloadFeedback ()
 Plays the weapon's reload sound.
virtual void AddParametersToAnimator (Animator animator, HashSet< int > list)
virtual void UpdateAnimator (Animator animator, HashSet< int > list)

Protected Attributes

float _chargingStartedAt = 0f
int _chargeIndexLastFrame
int _initialWeaponIndex = 0
Protected Attributes inherited from MoreMountains.TopDownEngine.Weapon
SpriteRenderer _spriteRenderer
WeaponAim _weaponAim
Animator _ownerAnimator
WeaponPreventShooting _weaponPreventShooting
float _delayBeforeUseCounter = 0f
float _delayBetweenUsesCounter = 0f
float _reloadingCounter = 0f
bool _triggerReleased = false
bool _reloading = false
ComboWeapon _comboWeapon
TopDownController _controller
CharacterMovement _characterMovement
Vector3 _weaponOffset
Vector3 _weaponAttachmentOffset
Transform _weaponAttachment
List< HashSet< int > > _animatorParameters
HashSet< int > _ownerAnimatorParameters
bool _controllerIs3D = false
int _idleAnimationParameter
int _startAnimationParameter
int _delayBeforeUseAnimationParameter
int _singleUseAnimationParameter
int _useAnimationParameter
int _delayBetweenUsesAnimationParameter
int _stopAnimationParameter
int _reloadStartAnimationParameter
int _reloadAnimationParameter
int _reloadStopAnimationParameter
int _weaponAngleAnimationParameter
int _weaponAngleRelativeAnimationParameter
int _aliveAnimationParameter
int _comboInProgressAnimationParameter
int _equippedAnimationParameter
int _interruptedAnimationParameter
float _lastShootRequestAt = -float.MaxValue
float _lastTurnWeaponOnAt = -float.MaxValue
bool _movementSpeedMultiplierSet = false

Properties

virtual float DeltaTime [get]
 the current delta time value
virtual float CurrentTime [get]
 the current time value
Properties inherited from MoreMountains.TopDownEngine.Weapon
virtual string WeaponID [get, set]
 the name of the inventory item corresponding to this weapon. Automatically set (if needed) by InventoryEngineWeapon
virtual Character Owner [get, protected set]
 the weapon's owner
virtual CharacterHandleWeapon CharacterHandleWeapon [get, set]
 the weapon's owner's CharacterHandleWeapon component
virtual WeaponAmmo WeaponAmmo [get, protected set]
 the WeaponAmmo component optionnally associated to this weapon
bool IsComboWeapon [get, set]
bool IsAutoComboWeapon [get, set]

Additional Inherited Members

Static Protected Attributes inherited from MoreMountains.TopDownEngine.Weapon
const string _aliveAnimationParameterName = "Alive"

Detailed Description

Add this component to an object and it'll let you define a sequence of charge steps, each triggering their own unique weapon, complete with options like input modes or conditional releases, hooks for every steps, and more. Useful for Megaman or Zelda like types of charge weapons.

Member Enumeration Documentation

◆ ReleaseModes

whether the charge should be released on input release, or after the last charge duration

Enumerator
OnInputRelease 
AfterLastChargeDuration 

◆ TimescaleModes

the possible timescales for this weapon

Enumerator
Scaled 
Unscaled 

Member Function Documentation

◆ CompleteStepCharge()

virtual void MoreMountains.TopDownEngine.ChargeWeapon.CompleteStepCharge ( int index)
protectedvirtual

Completes a step charge.

Parameters
index

◆ FindCurrentWeaponIndex()

virtual int MoreMountains.TopDownEngine.ChargeWeapon.FindCurrentWeaponIndex ( )
protectedvirtual

Returns the index of the current weapon in the charge sequence.

Returns

◆ FlipWeapon()

override void MoreMountains.TopDownEngine.ChargeWeapon.FlipWeapon ( )
virtual

Flips the weapon.

Reimplemented from MoreMountains.TopDownEngine.Weapon.

◆ ForceWeaponAttack()

virtual void MoreMountains.TopDownEngine.ChargeWeapon.ForceWeaponAttack ( int index)
protectedvirtual

Forces the weapon at the specified step to turn on.

Parameters
index

◆ Initialization()

override void MoreMountains.TopDownEngine.ChargeWeapon.Initialization ( )
virtual

On init, we initialize our durations, weapons and reset the charge.

Reimplemented from MoreMountains.TopDownEngine.Weapon.

◆ InitializeTotalDurations()

virtual void MoreMountains.TopDownEngine.ChargeWeapon.InitializeTotalDurations ( )
virtual

goes through all weapons to setup their total duration (the time from start after which their step is complete)

◆ InitializeWeapons()

virtual void MoreMountains.TopDownEngine.ChargeWeapon.InitializeWeapons ( )
protectedvirtual

Initializes all weapons for all steps.

◆ InterruptStepCharge()

virtual void MoreMountains.TopDownEngine.ChargeWeapon.InterruptStepCharge ( int index)
protectedvirtual

Stops a step charge.

Parameters
index

◆ ProcessCharge()

virtual void MoreMountains.TopDownEngine.ChargeWeapon.ProcessCharge ( )
protectedvirtual

Determines the current step, and if it's different from the last frame, starts the new step.

◆ ResetCharge()

virtual void MoreMountains.TopDownEngine.ChargeWeapon.ResetCharge ( )
virtual

resets the charge, reinitializing all counters

◆ StartChargeSequence()

virtual void MoreMountains.TopDownEngine.ChargeWeapon.StartChargeSequence ( )
protectedvirtual

Initializes the charge sequence.

◆ StartStepCharge()

virtual void MoreMountains.TopDownEngine.ChargeWeapon.StartStepCharge ( int index)
protectedvirtual

Causes a step to start charging.

Parameters
index

◆ StopChargeSequence()

virtual void MoreMountains.TopDownEngine.ChargeWeapon.StopChargeSequence ( )
protectedvirtual

Stops the entire charge sequence, triggering the appropriate feedbacks.

◆ TurnWeaponOn()

override void MoreMountains.TopDownEngine.ChargeWeapon.TurnWeaponOn ( )
virtual

When the charge weapon gets activated, we start charging.

Reimplemented from MoreMountains.TopDownEngine.Weapon.

◆ Update()

override void MoreMountains.TopDownEngine.ChargeWeapon.Update ( )
protectedvirtual

On update, if we're charging, we process our charge to evaluate the current step.

Reimplemented from MoreMountains.TopDownEngine.Weapon.

◆ WeaponExists()

virtual bool MoreMountains.TopDownEngine.ChargeWeapon.WeaponExists ( int index)
protectedvirtual

Returns true if the weapon at the specified index exists.

Parameters
index
Returns

◆ WeaponInputReleased()

override void MoreMountains.TopDownEngine.ChargeWeapon.WeaponInputReleased ( )
virtual

When the charge weapon's input gets released, we stop charging.

Reimplemented from MoreMountains.TopDownEngine.Weapon.

Member Data Documentation

◆ _chargeIndexLastFrame

int MoreMountains.TopDownEngine.ChargeWeapon._chargeIndexLastFrame
protected

◆ _chargingStartedAt

float MoreMountains.TopDownEngine.ChargeWeapon._chargingStartedAt = 0f
protected

◆ _initialWeaponIndex

int MoreMountains.TopDownEngine.ChargeWeapon._initialWeaponIndex = 0
protected

◆ AllowInitialShot

bool MoreMountains.TopDownEngine.ChargeWeapon.AllowInitialShot = true

whether or not the start of the charge should trigger the first step's weapon's attack or not

◆ Charging

bool MoreMountains.TopDownEngine.ChargeWeapon.Charging = false

whether this weapon is currently charging or not

◆ CurrentChargeIndex

int MoreMountains.TopDownEngine.ChargeWeapon.CurrentChargeIndex = 0

the current charge index in the Weapons step list

◆ ReleaseMode

ReleaseModes MoreMountains.TopDownEngine.ChargeWeapon.ReleaseMode = ReleaseModes.OnInputRelease

whether this weapon should trigger its attack when all steps are done charging, or when input gets released

◆ TimescaleMode

TimescaleModes MoreMountains.TopDownEngine.ChargeWeapon.TimescaleMode = TimescaleModes.Scaled

whether this weapon's input should run on scaled or unscaled time

◆ Weapons

List<ChargeWeaponStep> MoreMountains.TopDownEngine.ChargeWeapon.Weapons

the list of weapons that make up this charge weapon's sequence of steps

Property Documentation

◆ CurrentTime

virtual float MoreMountains.TopDownEngine.ChargeWeapon.CurrentTime
get

the current time value

◆ DeltaTime

virtual float MoreMountains.TopDownEngine.ChargeWeapon.DeltaTime
get

the current delta time value


The documentation for this class was generated from the following file:
  • H:/Code/MoreMountains/topdownengine/Assets/TopDownEngine/Common/Scripts/Characters/Weapons/ChargeWeapon.cs