Skip to content

explain Accessory

Yoo Hyeokjin edited this page Jun 28, 2023 · 1 revision

Accessory

목차

Accessory 설명

변수 선언

public int AccessoryIndex;     // Accessory의 고유한 Index 번호
public int AccessoryLevel;     // Accessory의 현재 Level
public int AccessoryMaxLevel;  // Accessory의 Max Level

Accessory를 얻었을 때 기본 Setting

public Accessory(int accessoryIndex)
{
    AccessoryIndex = accessoryIndex; // Accessory를 저장한다.
    AccessoryLevel = 0;              // Accessory의 현재 level을 1로 설정한다.
    AccessoryMaxLevel = EquipmentData.AccessoriesMaxLevel[accessoryIndex]; // Accessory의 Max Level을 EquipmentData에서 가져와 저장한다.
}

Upgrade와 Evolution

public bool IsMaster()
{ // Accessory이 Max Level에 도달하였을 때 true를 반환, 아니면 false를 반환한다.
    return AccessoryLevel == AccessoryMaxLevel;
}
public void Upgrade() // Upgrade를 한다.
{
    AccessoryLevel++; // Accessory의 Level을 올린다.
    foreach ((var statIndex, var data) in EquipmentData.AccessoryUpgrade[AccessoryIndex][AccessoryLevel])
    {
        GameManager.instance.CharacterStats[statIndex] += data; // Accessory의 Stat을 올린다.
    }
    Evolution(); // 진화 Method
}
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())  // Accessory의 짝이 되는 Weapon이 진화 조건을 만족한다면
        {
            pairWeapon.BEvolution = true;
            pairWeapon.EvolutionProcess(); // 진화를 진행한다.
        }
    }
}

ScriptCode

Accessory.cs

using System;

public class Accessory
{
    public int AccessoryIndex;
    public int AccessoryLevel;
    public int AccessoryMaxLevel;

    public Accessory(int accessoryIndex)
    {
        AccessoryIndex = accessoryIndex;
        AccessoryLevel = 0;
        AccessoryMaxLevel = EquipmentData.AccessoriesMaxLevel[accessoryIndex];
    }

    public bool IsMaster()
    {
        return AccessoryLevel == AccessoryMaxLevel;
    }
    public void Upgrade()
    {
        AccessoryLevel++;
        foreach ((var statIndex, var data) in EquipmentData.AccessoryUpgrade[AccessoryIndex][AccessoryLevel])
        {
            GameManager.instance.CharacterStats[statIndex] += data;
        }
        Evolution();
    }
    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();
            }
        }
    }
}
Clone this wiki locally