Skip to content

develop WeaponEvolution

pianoop edited this page Apr 26, 2023 · 2 revisions

무기 진화 시스템을 관리

목차

HasWeapon

EquipmentManageSystem.cs 내에 구현

public bool HasWeapon(int weaponIndex)
{
    return TransWeaponIndex[weaponIndex] >= 0;
}
public bool HasAcc(int accIndex)
{
    return TransAccessoryIndex[accIndex] >= 0;
}

Weapon.evolution

Weapon.cs 내에 구현, Weapon.Upgrade()의 마지막 줄에서 호출됨

private void evolution()
{
    if (!IsMaster())
        return;

    var equipManageSys = GameManager.instance.equipManageSys;
    int evoPairAccIndex = EquipmentData.EvoWeaponNeedAccIndex[WeaponIndex];
    if (evoPairAccIndex < 0)    // 짝이 되는 악세서리의 index = -1 -> 짝이 무기인 경우
        evolutionException(equipManageSys);
    else if (equipManageSys.HasAcc(evoPairAccIndex))
        bEvolution = true;

    if (bEvolution)
        EvolutionProcess();
}

private void evolutionException(EquipmentManagementSystem equipManageSys)     // 진화에 필요한 짝이 악세서리가 아닌 무기인 경우(예시 - 비둘기, 흑비둘기)
{
    var evoPairWeaponIndex = EquipmentData.EvoWeaponNeedWeaponIndex[WeaponIndex];
    if (equipManageSys.HasWeapon(evoPairWeaponIndex) && equipManageSys.Weapons[equipManageSys.TransWeaponIndex[evoPairWeaponIndex]].IsMaster())
        bEvolution = equipManageSys.Weapons[equipManageSys.TransWeaponIndex[evoPairWeaponIndex]].bEvolution = true;
}

Accessory.evolution

Accessory.cs 내에 구현, Accessory.Upgrade()의 마지막 줄에서 호출 됨

private void evolution()
{
    if (AccessoryLevel != 1) // 해당 악세서리를 처음 획득했을 때만 진입
        return;

    var equipManageSys = GameManager.instance.equipManageSys;
    int evoPairWeaponIndex = EquipmentData.EvoAccNeedWeaponIndex[AccessoryIndex];
    if (equipManageSys.HasWeapon(evoPairWeaponIndex))
    {
        var pairWeapon = equipManageSys.Weapons[equipManageSys.TransWeaponIndex[evoPairWeaponIndex]];
        if(pairWeapon.IsMaster())
        {
            pairWeapon.bEvolution = true;
            pairWeapon.EvolutionProcess();
        }
    }
}

evolutionProcess

Weapon.cs 내에 구현

public void EvolutionProcess()
{
    switch (WeaponIndex)
    {
        case 0:     // Whip
            break;
        case 1:     // MagicWand
            break;
        case 2:     // Knife
            break;
        case 3:     // Axe
            break;
        case 4:     // Cross
            break;
        case 5:     //KingBible
            break;
        case 6:     // FireWand
            break;
        case 7:     // Garlic
            break;
        case 8:     // SantaWater
            break;
        case 9:     // Peachone
            GetComponent<Peachone>().EvolutionProcess();
            break;
        case 10:    // EbonyWings
            GetComponent<EbonyWings>().EvolutionProcess();
            break;
        case 11:    // Runetracer
            break;
        case 12:   // LightningRing
            break;
    }
}

진화시 무기별로 처리해야 하는 기능을 수행하는 함수 호출
예) peachone, ebonyWings - 기존의 유저를 따라다니는 새 object 둘을 destory한 후 진화한 새 object를 새로 소환해줌

Clone this wiki locally