using System.Collections.Generic; using Cielonos.MainGame.Characters; using Cielonos.MainGame.UI; using Sirenix.OdinInspector; using SLSUtilities.FunctionalAnimation; 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 { [HideInEditorMode] [TitleGroup("Submodules")] public AttributeSubmodule activeAttributeSm; } public partial class MainWeaponBase { [TitleGroup("UI")] public GameObject extraUIContainerPrefab; [TitleGroup("UI")] protected MainWeaponExtraUIContainer extraUIContainer; } public partial class MainWeaponBase { public override void Initialize() { base.Initialize(); if (activeAttributeData != null) activeAttributeSm = new AttributeSubmodule(this, activeAttributeData); } public virtual void OnEquipped() { RegisterFuncAnims(); // Stop 和批处理生命周期已由 EquipMainWeapon 统一管理 baseAnimationGroup.SetUp(animationSc); // 提交 RegisterFuncAnims + SetUp 积压的全部 clip 替换(仅 1 次 Rebind + 强制求值) animationSc.FlushOverrideBatch(); 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) { base.Update(); } } } public partial class MainWeaponBase { [TitleGroup("Input Settings")] public bool disablePrimaryPreinput; public bool disableSecondaryPreinput; public bool disableSpecialAPreinput; public bool disableSpecialBPreinput; public bool disableSpecialCPreinput; 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 virtual void OnSpecialCPress() { } public virtual void OnSpecialCHold() { } public virtual void OnSpecialCRelease() { } } public partial class MainWeaponBase { } }