Exemplo n.º 1
0
 protected override void OnValidate()
 {
     base.OnValidate();
     gameObject.name = equipmentType.ToString() + " Slot";
 }
    public bool EquipServant(int servantIndex, EQUIPMENT_TYPE equipmentType, int equipmentIndex)
    {
        if (equipmentIndex == 0)
        {
            DebugLog.Log(false, "Unequip");
            return(true);
        }

        if (servantDic.ContainsKey(servantIndex) == false)
        {
            DebugLog.Log(false, "Invalid Servant Index : " + servantIndex);
            return(false);
        }

        if (equipmentDic.ContainsKey(equipmentIndex) == false)
        {
            DebugLog.Log(false, "Invalid Equipment Index : " + equipmentIndex);
            return(false);
        }

        if (equipmentType == EQUIPMENT_TYPE.WEAPON)
        {
            if (weaponDic.ContainsKey(equipmentIndex) == false)
            {
                DebugLog.Log(false, "Invalid Weapon Index : " + equipmentIndex);
                return(false);
            }
        }
        else if (equipmentType == EQUIPMENT_TYPE.ARMOR)
        {
            if (armorDic.ContainsKey(equipmentIndex) == false)
            {
                DebugLog.Log(false, "Invalid Armor Index : " + equipmentIndex);
                return(false);
            }
        }
        else if (equipmentType == EQUIPMENT_TYPE.ACCESSSORY)
        {
            if (accessoryDic.ContainsKey(equipmentIndex) == false)
            {
                DebugLog.Log(false, "Invalid Accessory Index : " + equipmentIndex);
                return(false);
            }
        }
        else
        {
            DebugLog.Log(false, "Invalid Equipment Type : " + equipmentType.ToString());
            return(false);
        }

        if (servantDic[servantIndex].equipmentDic[equipmentType] != 0)
        {
            DebugLog.Log(false, "Invalid Equipment is Already Equip");
            return(false);
        }

        servantDic[servantIndex].equipmentDic[equipmentType] = equipmentIndex;
        equipmentDic[equipmentIndex].equipServantIndex       = servantIndex;
        equipmentDic[equipmentIndex].state     = 2;
        equipmentDic[equipmentIndex].isEquiped = true;

        if (equipmentType == EQUIPMENT_TYPE.WEAPON)
        {
            weaponDic[equipmentIndex].equipServantIndex = equipmentIndex;
            weaponDic[equipmentIndex].state             = 2;
            weaponDic[equipmentIndex].isEquiped         = true;
        }
        else if (equipmentType == EQUIPMENT_TYPE.ARMOR)
        {
            armorDic[equipmentIndex].equipServantIndex = equipmentIndex;
            armorDic[equipmentIndex].state             = 2;
            armorDic[equipmentIndex].isEquiped         = true;
        }
        else if (equipmentType == EQUIPMENT_TYPE.ACCESSSORY)
        {
            accessoryDic[equipmentIndex].equipServantIndex = equipmentIndex;
            accessoryDic[equipmentIndex].state             = 2;
            accessoryDic[equipmentIndex].isEquiped         = true;
        }

        return(true);
    }
    public void OnClickChange()
    {
        // 선택 서번트 인덱스
        int servantIndex = partyInfo.ServantList[partyInfo.selected_unit_idx].index;

        int equipmentIndex = EquipmentList[selectedItemIdx].index;

        // 서번트 인덱스 검사
        UserServantData servantData = UserDataManager.Inst.GetServantInfo(servantIndex);

        if (servantData == null)
        {
            DebugLog.Log(true, "Invalid Servant Index : " + servantIndex);
            SimpleErrorPopupVC.Inst.UpdateErrorText("Invalid Servant Index");
            return;
        }

        // 장비 타입 검사
        if (servantData.equipmentDic.ContainsKey(selectedEquipType) == false)
        {
            DebugLog.Log(true, "Invalid Servant Data");
            SimpleErrorPopupVC.Inst.UpdateErrorText("Invalid Servant Data");
            return;
        }

        // 서번트 동일 장비 검사
        if (servantData.equipmentDic[selectedEquipType] == equipmentIndex)
        {
            DebugLog.Log(false, "Already Equiped");
            SimpleErrorPopupVC.Inst.UpdateErrorText("Already Equiped");
            return;
        }

        // 장비 인덱스 검사
        UserEquipmentData equipmentData = UserDataManager.Inst.GetEquipmentInfo(equipmentIndex);

        if (equipmentData == null)
        {
            DebugLog.Log(true, "Invalid Equipment Index : " + equipmentIndex);
            SimpleErrorPopupVC.Inst.UpdateErrorText("Invalid Equipment");
            return;
        }

        // 장비 인덱스에 대한 타입 검사
        if (equipmentData.equipmentType != selectedEquipType)
        {
            DebugLog.Log(false, "Invalid Equipment Type : " + selectedEquipType.ToString() + ", ");
            SimpleErrorPopupVC.Inst.UpdateErrorText("Invalid Equipment Type");
            return;
        }

        // 장착중인 장비인지 검사
        if (equipmentData.isEquiped == true)
        {
            DebugLog.Log(false, "Already ServantEquiped : " + equipmentData.equipServantIndex);
            SimpleErrorPopupVC.Inst.UpdateErrorText("Already Servant Equiped");
            return;
        }

        // DB 장비 ID 검사
        DBEquipmentData dbEquipmentData = CSVData.Inst.GetEquipmentData(equipmentData.id);

        if (dbEquipmentData == null)
        {
            DebugLog.Log(false, "Invalid Equipment Data ID : " + equipmentData.id);
            return;
        }

        // DB 서번트 ID 검사
        DBServantData dbServantData = CSVData.Inst.GetServantData(servantData.id);

        if (dbServantData == null)
        {
            DebugLog.Log(false, "Invalid Servant Data ID : " + servantData.id);
            return;
        }

        // 장착 가능 직업 검사
        if (dbEquipmentData.isEquipAble(dbServantData.GetJobFlag) == false)
        {
            DebugLog.Log(false, "Invalid Servant Equipable Job : " + dbServantData.GetJobFlag + ", Need Job : " + dbEquipmentData.jobLimit);
            SimpleErrorPopupVC.Inst.UpdateErrorText("Invalid Servant Equipable Job");
            return;
        }

        // 장착 가능 레벨 검사
        if (dbEquipmentData.tier == 2)
        {
            if (servantData.level <= 10)
            {
                DebugLog.Log(false, "Invalid Servant Equipable Level : " + servantData.level + ", Need Level : 11");
                SimpleErrorPopupVC.Inst.UpdateErrorText("Invalid Servant Equipable Level, Need Level : 11");
                return;
            }
        }
        else if (dbEquipmentData.tier == 3)
        {
            if (servantData.level <= 20)
            {
                DebugLog.Log(false, "Invalid Servant Equipable Level : " + servantData.level + ", Need Level : 21");
                SimpleErrorPopupVC.Inst.UpdateErrorText("Invalid Servant Equipable Level, Need Level : 21");
                return;
            }
        }
        else if (dbEquipmentData.tier == 4)
        {
            if (servantData.level <= 30)
            {
                DebugLog.Log(false, "Invalid Servant Equipable Level : " + servantData.level + ", Need Level : 31");
                SimpleErrorPopupVC.Inst.UpdateErrorText("Invalid Servant Equipable Level, Need Level : 31");
                return;
            }
        }

#if UNITY_EDITOR
        Cheat.Inst.RequestEquipServantCheat(servantIndex, selectedEquipType, equipmentIndex);
#else
        PacketManager.Inst.RequestEquipServant(servantIndex, selectedEquipType, equipmentIndex);
#endif
    }