Ejemplo n.º 1
0
    public List <ItemCountUnit> GetDropItemsByCharaName(string sCharaName)
    {
        var list = new List <ItemCountUnit>();

        if (false == m_dicCharaItemDropUnits.ContainsKey(sCharaName))
        {
            return(list);
        }

        var charaDropUnit = m_dicCharaItemDropUnits[sCharaName];

        foreach (var dropUnit in charaDropUnit.itemDropUnits)
        {
            var random = Random.Range(0f, 100f);
            if (random < dropUnit.dropRatePercent)
            {
                var countUnit = new ItemCountUnit();
                var countRate = Random.Range(0.7f, 1.3f);
                var count     = dropUnit.itemCountUnit.count * countRate;
                if (count <= 0)
                {
                    continue;
                }
                countUnit.count    = Mathf.RoundToInt(count);
                countUnit.itemID   = dropUnit.itemCountUnit.itemID;
                countUnit.itemName = dropUnit.itemCountUnit.itemName;
                list.Add(countUnit);
            }
        }

        return(list);
    }
Ejemplo n.º 2
0
    private void CompleteCraft()
    {
        var itemUnit = new ItemCountUnit();

        itemUnit.itemID = currentRecipe.dstItemUnit.itemID;
        itemUnit.count  = currentRecipe.dstItemUnit.count * currentCreateCount;
        // TODO: 途中で中断したら途中までの数を提供
        storingItems = new ItemCountUnit[] { currentRecipe.dstItemUnit };
        EndCraft();
    }
Ejemplo n.º 3
0
    protected override void OnSpawned(GameObject newObj)
    {
        var ev            = newObj.GetComponent <ItemPickupEvent>();
        var itemCountList = new List <ItemCountUnit>();
        var totalRate     = 0f;

        foreach (var unit in itemRateUnits)
        {
            totalRate += unit.dropRatePercent;
        }
        var random = Random.Range(0f, totalRate);

        totalRate = 0f;
        ItemCountUnit hitUnit = null;

        foreach (var unit in itemRateUnits)
        {
            totalRate += unit.dropRatePercent;
            if (random < totalRate)
            {
                hitUnit = unit.itemCountUnit;
                break;
            }
        }

        var count = Mathf.RoundToInt(hitUnit.count * Random.Range(0.5f, 1.5f));

        // 少なくとも1個はゲット
        if (count == 0)
        {
            count = 1;
        }

        var newCountUnit = new ItemCountUnit();

        newCountUnit.itemID = hitUnit.itemID;
        newCountUnit.count  = count;

        // NOTE: EnemyのDropとは違う抽選内容
        itemCountList.Add(hitUnit);

        ev.SetItems(itemCountList.ToArray());
    }