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); }
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(); }
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()); }