using System; using System.Collections.Generic; using ET; using Sirenix.OdinInspector; namespace Cal { public enum AbilityType { [LabelText("普通")] GeneralAbility = 1, [LabelText("引导")] ChannelAbility = 1<<1, [LabelText("被动")] PassiveAblity = 1<<2, [LabelText("开关")] ToggleAbility = 1<<3, } #region Ability public abstract class Ability { public abstract AbilityType abilityType { get; } public abstract void OnAbilityInit(); public virtual void OnAbilityStart() { } public virtual void OnAbilitySpell() { } public virtual void OnAbilityFinish() { } public virtual void OnAbilityChannelStart() { } public virtual void OnAbilityChannelThink() { } public virtual void OnAbilityChannelFinish() { } public virtual void OnAbilityToggleOn() { } public virtual void OnAbilityToggleOff() { } } public class GeneralAbility : Ability { public override AbilityType abilityType => AbilityType.ChannelAbility; public int castPoint; public override void OnAbilityInit() { } public override void OnAbilityStart() { base.OnAbilityStart(); } public override void OnAbilitySpell() { base.OnAbilitySpell(); } public override void OnAbilityFinish() { base.OnAbilityFinish(); } } public class ChannelAbility : Ability { public override AbilityType abilityType => AbilityType.ChannelAbility; public int castPoint; public int channelInterval; public int channelTime; public override void OnAbilityInit() { } public override void OnAbilitySpell() { base.OnAbilitySpell(); } public override void OnAbilityChannelStart() { base.OnAbilityChannelStart(); } public override void OnAbilityChannelThink() { base.OnAbilityChannelThink(); } public override void OnAbilityChannelFinish() { base.OnAbilityChannelFinish(); } public override void OnAbilityFinish() { base.OnAbilityFinish(); } } public class PassiveAblity : Ability { public override AbilityType abilityType => AbilityType.PassiveAblity; public int duration; public int cd ; public override void OnAbilityInit() { } public void StartCooldown() { } } public class ToggleAbility : Ability { public override AbilityType abilityType => AbilityType.ToggleAbility; public override void OnAbilityInit() { } public override void OnAbilityToggleOn() { base.OnAbilityToggleOn(); } public override void OnAbilityToggleOff() { base.OnAbilityToggleOff(); } } #endregion #region Buff public class Buff { } public class Modifier:Buff { } #endregion }