using UnityEngine;

/// <summary>
/// All available animation names for the game
/// </summary>
public static class AnimationNames
{
    // Legacy Animations (Still Used)
    public const string Right = "Right";
    public const string LeftHook = "LeftHook";
    public const string RightHook = "RightHook";
    public const string LeftElbow = "LeftElbow";
    public const string RightElbow = "RightElbow";
    public const string RightBody = "RightBody";
    public const string PowerPunchLeft = "PowerPunchLeft";
    public const string SupermanPunch = "SupermanPunch";
    public const string SpecialBackfist = "SpecialBackfist";
    public const string FrontKickRight = "FrontKickRight";
    public const string BodyKickRight = "BodyKickRight";
    public const string KneeRight = "KneeRight";
    public const string BackSideKick = "BackSideKick";
    public const string LegKickRight = "LegKickRight";
    public const string LegPowerKickRight = "LegPowerKickRight";
    public const string JumpBack = "JumpBack";
    public const string JumpLeft = "JumpLeft";
    public const string JumpRight = "JumpRight";
    public const string BlockStepBack = "BlockStepBack";
    public const string BlockBodyLeft = "BlockBodyLeft";
    public const string BlockLeg = "BlockLeg";
    
    // Legacy Hit Reactions (Still Used)
    public const string RightHookHitReaction = "RightHookHitReaction";
    public const string BodyKickHitReaction = "BodyKickHitReaction";
    public const string HookHitReaction = "HookHitReaction";
    public const string JabHitReaction = "JabHitReaction";
    public const string LegKickHitReaction = "LegKickHitReaction";
    public const string UppercutPowerHitReaction = "UppercutPowerHitReaction";
    public const string OverhandHitReaction = "OverhandHitReaction";
    
    // Legacy alternative spellings (for backward compatibility)
    public const string SwantomBomb = "SwantomBomb";
    
    // Basic Move Animations
    public const string Jab = "Jab";
    public const string Chop = "Chop";
    public const string Haymaker = "Haymaker";
    public const string GroundPound = "GroundPound";
    public const string LowKick = "LowKick";
    public const string LowKick1 = "LowKick1"; // Additional variant from input system
    public const string BasicKick = "BasicKick"; // New consolidated basic kick
    public const string AirPunch = "AirPunch";
    public const string AirKick = "AirKick";
    public const string DropKick = "DropKick";
    public const string ElbowSmash = "ElbowSmash";
    public const string SpinningBackfist = "SpinningBackfist";
    public const string IrishWhip = "IrishWhip";
    public const string ChargedPunch = "ChargedPunch";
    public const string Block = "Block";
    public const string DashBackward = "DashBackward";
    public const string DashSide = "DashSide";
    public const string Move = "Move"; // Basic locomotion
    public const string Look = "Look"; // Camera look
    public const string Sprint = "Sprint"; // Running
    public const string Strike = "Strike"; // Basic strike
    public const string Pause = "Pause"; // Game pause
    
    // Basic Moves Reaction Animations
    public const string JabReaction = "StaggerReaction";
    public const string ChopReaction = "SideStagger";
    public const string HaymakerReaction = "JumpSideStaggerReaction";
    public const string GroundPoundReaction = "GroundPoundReaction";
    public const string LowKickReaction = "JumpSideStagger";
    public const string AirPunchReaction = "Stagger";
    public const string AirKickReaction = "AirKickReaction";
    public const string DropKickReaction = "KnockBackReaction";
    public const string ElbowSmashReaction = "KnockBackReaction";
    public const string SpinningBackfistReaction = "KnockBackReaction";
    public const string IrishWhipReaction = "IrishWhipReaction";
    public const string ChargedPunchReaction = "KnockBackReaction";
    public const string SignSwingReaction = "SignSwingReaction";
    public const string SignOverheadSlamReaction = "SignOverheadSlamReaction";
    public const string SignChargeAttackReaction = "SignChargeAttackReaction";
    
    // Vicious Moves Animations
    public const string Chokeslam = "Chokeslam";
    public const string Suplex = "Suplex";
    public const string GiantSwing = "GiantSwing";
    public const string DiamondCrusher = "DiamondCrusher";
    public const string SumoSlap = "SumoSlap";
    public const string Uppercut = "Uppercut";
    public const string JavelinTackle = "JavelinTackle";
    public const string RocketJump = "RocketJump";
    public const string BullRush = "BullRush";
    public const string SuperKick = "SuperKick";
    public const string F5 = "F5";
    
    // Vicious Moves Reaction Animations
    public const string ChokeslamReaction = "KnockBackReaction";
    public const string SuplexReaction = "SuplexReaction";
    public const string GiantSwingReaction = "GiantSwingReaction";
    public const string DiamondCrusherReaction = "DiamondCrusherReaction";
    public const string SumoSlapReaction = "KnockBackReaction";
    public const string UppercutReaction = "KnockBackReaction";
    public const string JavelinTackleReaction = "JavelinTackleReaction";
    public const string RocketJumpReaction = "KnockedDownReaction";
    public const string BullRushReaction = "KnockBackReaction";
    public const string SuperKickReaction = "KnockBackReaction";
    public const string F5Reaction = "F5Reaction";
    
    // Special Moves/Finishers Animations
    public const string Clothesline = "Clothesline";
    public const string Spear = "Spear";
    public const string RKO = "RKO";
    public const string Claymore = "Claymore";
    public const string SuperDDT = "SuperDDT";
    public const string RockBottom = "RockBottom";
    public const string TroubleInParadise = "TroubleInParadise";
    public const string SwantonBomb = "SwantonBomb";
    public const string Pedigree = "Pedigree";
    public const string GorillaPress = "GorillaPress";
    public const string Headbutt = "Headbutt";
    public const string KOPunch = "KOPunch";

    // Special Moves Reaction Animations
    public const string ClotheslineReaction = "ClotheslineReaction";
    public const string SpearReaction = "SpearReaction";
    public const string RKOReaction = "RKOReaction";
    public const string ClaymoreReaction = "ShortKnockBackReaction";
    public const string SuperDDTReaction = "SuperDDTReaction";
    public const string RockBottomReaction = "RockBottomReaction";
    public const string TroubleInParadiseReaction = "KnockBackReaction";
    public const string SwantonBombReaction = "KnockedDownReaction";
    public const string PedigreeReaction = "PedigreeReaction";
    public const string GorillaPressReaction = "GorillaPressReaction";
    public const string HeadbuttReaction = "Stagger";
    public const string KOPunchReaction = "KnockBackReaction";

    // Weapon Animations
    public const string BatOne = "BatOne";
    public const string BatTwo = "BatTwo";
    public const string HammerOne = "HammerOne"; // if using Hammer
    public const string HammerTwo = "HammerTwo";

    // Utility/Non-attack Animations
    public const string WeaponPickup = "WeaponPickup";

    public static string GetReactionForAttack(string attack)
    {
        switch (attack)
        {
            // Face/Head area hits
            case Jab: return JabReaction;
            case Haymaker: return HaymakerReaction;
            case Uppercut: return UppercutReaction;
            case ElbowSmash: return ElbowSmashReaction;
            case Headbutt: return HeadbuttReaction;
            
            // Body/Torso hits
            case Chop: return ChopReaction;
            case GroundPound: return GroundPoundReaction;
            case SpinningBackfist: return SpinningBackfistReaction;
            
            // Leg/Lower body hits
            case LowKick: return LowKickReaction;
            case LowKick1: return LowKickReaction;
            case BasicKick: return "KnockBackReaction";
            
            // Aerial attacks
            case AirPunch: return AirPunchReaction;
            case AirKick: return AirKickReaction;
            case DropKick: return DropKickReaction;
            case SwantonBomb: return SwantonBombReaction;
            case SuperKick: return SuperKickReaction;
            
            // Special moves - high impact
            case ChargedPunch: return ChargedPunchReaction;
            case IrishWhip: return IrishWhipReaction;
            case Clothesline: return ClotheslineReaction;
            case Spear: return SpearReaction;
            case RKO: return RKOReaction;
            case Claymore: return ClaymoreReaction;
            case SuperDDT: return SuperDDTReaction;
            case RockBottom: return RockBottomReaction;
            case TroubleInParadise: return TroubleInParadiseReaction;
            case Pedigree: return PedigreeReaction;
            case GorillaPress: return GorillaPressReaction;
            case KOPunch: return KOPunchReaction;
            case F5: return F5Reaction;
            
            // Vicious moves
            case Chokeslam: return ChokeslamReaction;
            case Suplex: return SuplexReaction;
            case GiantSwing: return GiantSwingReaction;
            case DiamondCrusher: return DiamondCrusherReaction;
            case SumoSlap: return SumoSlapReaction;
            case JavelinTackle: return JavelinTackleReaction;
            case RocketJump: return RocketJumpReaction;
            case BullRush: return BullRushReaction;
            
            // Weapons
            case BatOne: return "KnockBackReaction";
            case BatTwo: return "KnockBackReaction";
            case HammerOne: return "KnockBackReaction";
            case HammerTwo: return "KnockBackReaction";

            // Legacy mappings for backward compatibility
            case RightHook: return RightHookHitReaction;
            case BodyKickRight: return BodyKickHitReaction;
            case LeftHook: return HookHitReaction;
            case LegKickRight: return LegKickHitReaction;
            case PowerPunchLeft: return UppercutPowerHitReaction;
            case SupermanPunch: return OverhandHitReaction;
            case Right: return RightHookHitReaction;
            
            // Default fallback cases based on animation name pattern
            default:
                // Try to find a matching reaction by name convention
                if (attack.Contains("Kick"))
                    return "KnockBackReaction";
                if (attack.Contains("Punch"))
                    return "Stagger";
                // If all else fails
                return null;
        }
    }
}