private static void UpdateTrainingOptions(ETrainingOption trainingOption, int currentValue)
    {
        m_TrainingOptions[(int)trainingOption] = currentValue;

        switch (trainingOption)
        {
        case ETrainingOption.Player2Mode:
            switch ((EPlayer2TrainingMode)currentValue)
            {
            case EPlayer2TrainingMode.Dummy:
                m_Player2Settings.m_AttackEnabled = false;
                m_Player2Settings.m_IsStatic      = true;
                break;

            case EPlayer2TrainingMode.Player:
                m_Player2Settings.m_AttackEnabled = true;
                m_Player2Settings.m_IsStatic      = false;
                break;

            default:
                KakutoDebug.LogError("Player2TrainingMode isn't valid.");
                break;
            }
            break;

        case ETrainingOption.StanceMode:
            m_Player2Settings.m_DefaultStance = (EPlayerStance)currentValue;
            break;

        case ETrainingOption.GuardMode:
            switch ((EGuardTrainingMode)currentValue)
            {
            case EGuardTrainingMode.None:
                m_Player2Settings.m_IsBlockingAllAttacks             = false;
                m_Player2Settings.m_IsBlockingAllAttacksAfterHitStun = false;
                break;

            case EGuardTrainingMode.AfterHit:
                m_Player2Settings.m_IsBlockingAllAttacks             = false;
                m_Player2Settings.m_IsBlockingAllAttacksAfterHitStun = true;
                break;

            case EGuardTrainingMode.Always:
                m_Player2Settings.m_IsBlockingAllAttacks             = true;
                m_Player2Settings.m_IsBlockingAllAttacksAfterHitStun = false;
                break;

            default:
                KakutoDebug.LogError("GuardTrainingMode isn't valid.");
                break;
            }
            break;

        case ETrainingOption.InfiniteSuperGauge:
            m_Player1Settings.SuperGaugeAlwaysFilled = m_Player2Settings.SuperGaugeAlwaysFilled = currentValue == 0 ? false : true;
            break;

        case ETrainingOption.InfiniteTriggerPoint:
            m_Player1Settings.TriggerPointAlwaysActive = m_Player2Settings.TriggerPointAlwaysActive = currentValue == 0 ? false : true;
            break;

        case ETrainingOption.ImmuneToStun:
            m_Player1Settings.m_IsImmuneToStunGauge = m_Player2Settings.m_IsImmuneToStunGauge = currentValue == 0 ? false : true;
            break;

        case ETrainingOption.DisplayDamage:
            m_Player1Settings.m_DisplayDamageTaken = m_Player2Settings.m_DisplayDamageTaken = currentValue == 0 ? false : true;
            break;

        case ETrainingOption.DisplayInputs:
            m_DebugSettings.m_DisplayInputsInfo = m_DebugSettings.m_DisplayAttacksInfo = currentValue == 0 ? false : true;
            break;

        case ETrainingOption.DisplayHitboxes:
            m_DebugSettings.m_DisplayBoxColliders = currentValue == 0 ? false : true;
            break;
        }
    }
 private void OnTrainingOptionChanged(ETrainingOption trainingOption, int currentValue)
 {
     UpdateTrainingOptions(trainingOption, currentValue);
     SaveTrainingOptions();
 }