using System.Collections.Generic; using Cielonos.MainGame.Characters; using MoreMountains.Feedbacks; using MoreMountains.FeedbacksForThirdParty; using Sirenix.OdinInspector; using UnityEngine; namespace Cielonos.MainGame.Inventory { public abstract partial class MainWeaponBase : ItemBase { [TitleGroup("Data")] public BaseAnimationGroup baseAnimationGroup; [TitleGroup("Data")] public AttributeData activeAttributeData; } public partial class MainWeaponBase { [TitleGroup("Submodules")] public AttributeSubmodule activeAttributeSm; } public partial class MainWeaponBase { public override void Initialize() { base.Initialize(); if (activeAttributeData != null) activeAttributeSm = new AttributeSubmodule(this, activeAttributeData); } public virtual void OnEquipped() { baseAnimationGroup.SetUp(animationSc); activeAttributeSm?.RefreshAllModifiedAttributes(); SpawnViewObjects(); } public virtual void OnUnequipped() { RemoveAllRegisteredFunctions(); activeAttributeSm?.RefreshAllModifiedAttributes(); DespawnViewObjects(); } } public partial class MainWeaponBase { protected override void Update() { if (player.inventorySc.equipmentSm.currentMainWeapon == this) { functionSm?.Update(player.selfTimeSm.DeltaTime); } } } public partial class MainWeaponBase { [TitleGroup("Input Settings")] public bool disablePrimaryPreinput; public bool disableSecondaryPreinput; public bool disableSpecialAPreinput; public bool disableSpecialBPreinput; public virtual void OnPrimaryPress() { } public virtual void OnPrimaryHold() { } public virtual void OnPrimaryRelease() { } public virtual void OnSecondaryPress() { } public virtual void OnSecondaryHold() { } public virtual void OnSecondaryRelease() { } public virtual void OnSpecialAPress() { } public virtual void OnSpecialAHold() { } public virtual void OnSpecialARelease() { } public virtual void OnSpecialBPress() { } public virtual void OnSpecialBHold() { } public virtual void OnSpecialBRelease() { } } public partial class MainWeaponBase { protected void Swing(string swingAudio, string feedBackName) { if (!string.IsNullOrEmpty(swingAudio)) { audioContainer.PlaySoundFX(swingAudio, null, true); } feedbackSc[feedBackName].Play(); } protected void Swing(string swingAudio, string feedBackName, Vector3 swingRotation, Vector3 swingVelocity = default) { if (!string.IsNullOrEmpty(swingAudio)) { audioContainer.PlaySoundFX(swingAudio, null, true); } MMF_CinemachineRotation cinemachineRotation = feedbackSc[feedBackName].feedback.GetFeedbackOfType(); if (cinemachineRotation != null) { cinemachineRotation.RotationAmplitude = swingRotation != default ? swingRotation : Vector3.zero; } MMF_CinemachineImpulse cinemachineImpulse = feedbackSc[feedBackName].feedback.GetFeedbackOfType(); if (cinemachineImpulse != null) { cinemachineImpulse.Velocity = swingVelocity != default ? swingVelocity : Vector3.zero; } feedbackSc[feedBackName].Play(); } } }