public bool isEquipAble(SERVANT_JOB_FLAG job)
    {
        if (jobLimit == SERVANT_JOB_FLAG.None)
        {
            return(false);
        }

        if (jobLimit == SERVANT_JOB_FLAG.All)
        {
            return(true);
        }

        if ((jobLimit & job) == job)
        {
            return(true);
        }

        return(false);
    }
    public void updateChangeItemInfo(int selectedChangeItemIdx)
    {
        if (selectedChangeItemIdx >= 0)
        {
            selectedItemIdx = selectedChangeItemIdx;
            int change_item_idx = EquipmentList[selectedItemIdx].index;

            FrameChangeItemInfo.SetActive(true);
            FrameChangeItemNone.SetActive(false);
            UserEquipmentData changeEquipmentData = UserDataManager.Inst.GetEquipmentInfo(change_item_idx);

            if (changeEquipmentData == null)
            {
                DebugLog.Log(false, "Invalid Equipment data");
            }


            DBEquipmentData dBChangeEquipment = CSVData.Inst.GetEquipmentData(changeEquipmentData.id);
            if (dBChangeEquipment == null)
            {
                DebugLog.Log(false, "Invalid equipmentData ID : " + changeEquipmentData.id);
            }


            imageChangeItem.sprite  = dBChangeEquipment.equipmentIcon;
            textChangeItemName.text = dBChangeEquipment.name;
            //textCurrentGradeText.text;
            textChangeGrade.text  = string.Format("{0}", ((GRADE_TYPE)changeEquipmentData.grade));
            textChangeGrade.color = DEFINE.GetGradeColor((GRADE_TYPE)changeEquipmentData.grade);
            //textCurrentUpgradeText.text;
            textChangeUpgrade.text = string.Format("+{0}", (changeEquipmentData.upgrade));;
            //textCurrentTierText.text;
            textChangeTier.text = string.Format("{0}T", dBChangeEquipment.tier);
            //textCurrentJobText.text;

            Color temp_color = imageChangeJob[0].color;
            for (int i = 0; i < 5; i++)
            {
                imageChangeJob[i].color = new Color(temp_color.r, temp_color.g, temp_color.b, 0.2f);
            }
            if (dBChangeEquipment.jobLimit == SERVANT_JOB_FLAG.All)
            {
                for (int i = 0; i < 5; i++)
                {
                    imageChangeJob[i].color = new Color(temp_color.r, temp_color.g, temp_color.b, 1f);
                }
            }
            else
            {
                for (int i = 0; i < 5; i++)
                {
                    SERVANT_JOB_FLAG checkJob = (SERVANT_JOB_FLAG)Math.Pow(2, (double)(i + 1));
                    if (dBChangeEquipment.isEquipAble(checkJob) == true)
                    {
                        imageChangeJob[i].color = new Color(temp_color.r, temp_color.g, temp_color.b, 1f);
                    }
                }
            }

            //초기화
            for (int i = 0; i < 10; i++)
            {
                change_stat[i] = 0;
            }

            imageChangeStat[0].sprite = CSVData.Inst.GetSpriteOptionType(changeEquipmentData.optionType);
            textChangeStat[0].text    = string.Format("{0}", changeEquipmentData.value);
            change_stat[(int)changeEquipmentData.optionType] = changeEquipmentData.value;

            buttonChange.interactable = true;
        }
        else
        {
            DebugLog.Log(false, "change item none");
            FrameChangeItemInfo.SetActive(false);
            FrameChangeItemNone.SetActive(true);

            buttonChange.interactable = false;
        }

        SetChangeAllValue();
    }
    //상세정보창 Update
    public void updateDetailInfo(int _selected_unit_idx)
    {
        unit_idx = _selected_unit_idx;

        UserEquipmentData equipmentData = UserDataManager.Inst.GetEquipmentInfo(EquipmentList[(int)selectedMenu][unit_idx].index);

        if (equipmentData == null)
        {
            DebugLog.Log(false, "Invalid Equipment Inddex : " + unit_idx);
        }

        DBEquipmentData dBEquipmentData = CSVData.Inst.GetEquipmentData(equipmentData.id);

        if (dBEquipmentData == null)
        {
            DebugLog.Log(false, "Invalid equipment ID : " + equipmentData.id);
        }

        imageEquipment.sprite  = dBEquipmentData.equipmentIcon;
        textEquipmentName.text = dBEquipmentData.name;
        //textCurrentGradeText.text;
        textGrade.text  = string.Format("{0}", ((GRADE_TYPE)equipmentData.grade));
        textGrade.color = DEFINE.GetGradeColor((GRADE_TYPE)equipmentData.grade);
        //textCurrentUpgradeText.text;
        textUpgrade.text = string.Format("+{0}", (equipmentData.upgrade));;
        //textCurrentTierText.text;
        textTier.text = string.Format("{0}T", dBEquipmentData.tier);
        //textCurrentJobText.text;

        Color temp_color = imageJobIcon[0].color;

        for (int i = 0; i < 5; i++)
        {
            imageJobIcon[i].color = new Color(temp_color.r, temp_color.g, temp_color.b, 0.2f);
        }

        if (dBEquipmentData.jobLimit == SERVANT_JOB_FLAG.All)
        {
            for (int i = 0; i < 5; i++)
            {
                imageJobIcon[i].color = new Color(temp_color.r, temp_color.g, temp_color.b, 1f);
            }
        }
        else
        {
            for (int i = 0; i < 5; i++)
            {
                SERVANT_JOB_FLAG checkJob = (SERVANT_JOB_FLAG)Math.Pow(2, (double)(i + 1));
                if (dBEquipmentData.isEquipAble(checkJob) == true)
                {
                    imageJobIcon[i].color = new Color(temp_color.r, temp_color.g, temp_color.b, 1f);
                }
            }
        }

        imageStatsIcon.sprite = CSVData.Inst.GetSpriteOptionType(dBEquipmentData.optionType);
        textStats.text        = string.Format("{0}", equipmentData.value);

        //장착 중인 장비인지.
        if (equipmentData.upgrade >= DEFINE.MAX_EQUIPMENT_UPGRADE_COUNT)
        {
            buttonUpgrade.interactable = false;
            textEquipItem.fontSize     = 40;
            textEquipItem.text         = "MAX";
        }
        else if (equipmentData.equipServantIndex > 0)
        {
            buttonUpgrade.interactable = false;
            textEquipItem.fontSize     = 60;
            textEquipItem.text         = "E";
        }
        else
        {
            buttonUpgrade.interactable = true;
            textEquipItem.text         = "";
        }
    }
    void updateAllView()
    {
        //Current Item
        UserServantData servantData = partyInfo.ServantList[partyInfo.selected_unit_idx];

        if (servantData == null)
        {
            DebugLog.Log(false, "Invalid Servant Index : " + partyInfo.selected_unit_idx);
        }

        UserEquipmentData currentEquipmentData = null;

        if (partyInfo.getSelectedEquipType() == EQUIPMENT_TYPE.MAX)
        {
            DebugLog.Log(false, "Invalid Equipment type 'MAX'");
            return;
        }

        int current_item_idx = servantData.equipmentDic[partyInfo.getSelectedEquipType()];

        if (current_item_idx > 0)
        {
            FrameCurrentItemInfo.SetActive(true);
            FrameCurrentItemNone.SetActive(false);
            currentEquipmentData = UserDataManager.Inst.GetEquipmentInfo(current_item_idx);

            if (currentEquipmentData == null)
            {
                DebugLog.Log(false, "Invalid Equipment data");
            }


            DBEquipmentData dBEquipment = CSVData.Inst.GetEquipmentData(currentEquipmentData.id);
            if (dBEquipment == null)
            {
                DebugLog.Log(false, "Invalid equipmentData ID : " + currentEquipmentData.id);
            }

            imageCurrentItem.sprite  = dBEquipment.equipmentIcon;
            textCurrentItemName.text = dBEquipment.name;
            //textCurrentGradeText.text;
            textCurrentGrade.text  = string.Format("{0}", ((GRADE_TYPE)currentEquipmentData.grade));
            textCurrentGrade.color = DEFINE.GetGradeColor((GRADE_TYPE)currentEquipmentData.grade);
            //textCurrentUpgradeText.text;
            textCurrentUpgrade.text = string.Format("+{0}", (currentEquipmentData.upgrade));;
            //textCurrentTierText.text;
            textCurrentTier.text = string.Format("{0}T", dBEquipment.tier);
            //textCurrentJobText.text;

            Color temp_color = imageCurrentJob[0].color;
            for (int i = 0; i < 5; i++)
            {
                imageCurrentJob[i].color = new Color(temp_color.r, temp_color.g, temp_color.b, 0.2f);
            }

            if (dBEquipment.jobLimit == SERVANT_JOB_FLAG.All)
            {
                for (int i = 0; i < 5; i++)
                {
                    imageCurrentJob[i].color = new Color(temp_color.r, temp_color.g, temp_color.b, 1f);
                }
            }
            else
            {
                for (int i = 0; i < 5; i++)
                {
                    SERVANT_JOB_FLAG checkJob = (SERVANT_JOB_FLAG)Math.Pow(2, (double)(i + 1));
                    if (dBEquipment.isEquipAble(checkJob) == true)
                    {
                        imageCurrentJob[i].color = new Color(temp_color.r, temp_color.g, temp_color.b, 1f);
                    }
                }
            }

            //초기화
            for (int i = 0; i < 10; i++)
            {
                current_stat[i] = 0;
            }

            imageCurrentStat[0].sprite = CSVData.Inst.GetSpriteOptionType(currentEquipmentData.optionType);
            textCurrentStat[0].text    = string.Format("{0}", currentEquipmentData.value);
            current_stat[(int)currentEquipmentData.optionType] = currentEquipmentData.value;

            //장착된 아이템이 있을땐 Clear버튼 활성화
            buttonClear.interactable = true;
        }
        else
        {
            DebugLog.Log(false, "current item none");
            FrameCurrentItemInfo.SetActive(false);
            FrameCurrentItemNone.SetActive(true);

            //장착된 아이템이 없을땐 Clear버튼 비활성화
            buttonClear.interactable = false;
        }

        updateChangeItemInfo(selectedItemIdx);

        SetChangeAllValue();
    }