use enum_dispatch::enum_dispatch;

#[enum_dispatch(DirectEffectTrait)]
pub enum DirectEffect {
  ConsecutiveActionEffect,
  SwapCharacterEffect,
  BackwardSwapCharacterEffect,
  ForwardSwapCharacterEffect,
  ForwardSwapCharacterCheckEffect,
  ApplyElementalAuraEffect,
  SpecificDamageEffect,
  ReferredDamageEffect,
  EnergyRechargeEffect,
  EnergyDrainEffect,
  RecoverHPEffect,
  ReviveRecoverHPEffect,
  PublicAddCardEffect,
  PublicRemoveCardEffect,
  PublicRemoveAllCardEffect,
  AddDiceEffect,
  RemoveDiceEffect,
  AddCharacterStatusEffect,
  RemoveCharacterStatusEffect,
  UpdateCharacterStatusEffect,
  OverrideCharacterStatusEffect,
  AddHiddenStatusEffect,
  RemoveHiddenStatusEffect,
  UpdateHiddenStatusEffect,
  OverrideHiddenStatusEffect,
  AddCombatStatusEffect,
  RemoveCombatStatusEffect,
  UpdateCombatStatusEffect,
  OverrideCombatStatusEffect,
  AddSummonEffect,
  RemoveSummonEffect,
  UpdateSummonEffect,
  OverrideSummonEffect,
  AllSummonIncreaseUsage,
  OneSummonDecreaseUsage,
  OneSummonIncreaseUsage,
  AddSupportEffect,
  RemoveSupportEffect,
  UpdateSupportEffect,
  OverrideSupportEffect,
  CastSkillEffect,
  BroadCastSkillInfoEffect,
}

#[enum_dispatch]
pub trait DirectEffectTrait {}

pub struct ConsecutiveActionEffect;
pub struct SwapCharacterEffect;
pub struct BackwardSwapCharacterEffect;
pub struct ForwardSwapCharacterEffect;
pub struct ForwardSwapCharacterCheckEffect;
pub struct ApplyElementalAuraEffect;
pub struct SpecificDamageEffect;
pub struct ReferredDamageEffect;
pub struct EnergyRechargeEffect;
pub struct EnergyDrainEffect;
pub struct RecoverHPEffect;
pub struct ReviveRecoverHPEffect;
pub struct PublicAddCardEffect;
pub struct PublicRemoveCardEffect;
pub struct PublicRemoveAllCardEffect;
pub struct AddDiceEffect;
pub struct RemoveDiceEffect;
pub struct AddCharacterStatusEffect;
pub struct RemoveCharacterStatusEffect;
pub struct UpdateCharacterStatusEffect;
pub struct OverrideCharacterStatusEffect;
pub struct AddHiddenStatusEffect;
pub struct RemoveHiddenStatusEffect;
pub struct UpdateHiddenStatusEffect;
pub struct OverrideHiddenStatusEffect;
pub struct AddCombatStatusEffect;
pub struct RemoveCombatStatusEffect;
pub struct UpdateCombatStatusEffect;
pub struct OverrideCombatStatusEffect;
pub struct AddSummonEffect;
pub struct RemoveSummonEffect;
pub struct UpdateSummonEffect;
pub struct OverrideSummonEffect;
pub struct AllSummonIncreaseUsage;
pub struct OneSummonDecreaseUsage;
pub struct OneSummonIncreaseUsage;
pub struct AddSupportEffect;
pub struct RemoveSupportEffect;
pub struct UpdateSupportEffect;
pub struct OverrideSupportEffect;
pub struct CastSkillEffect;
pub struct BroadCastSkillInfoEffect;