public RequestItemSpawnEvent(Vector3 position, Enums.eItemSource source, Enums.eEnemyType eType, Enums.eCrateType cType) { SpawnPosition = position; ItemSource = source; EnemyType = eType; CrateType = cType; }
private void RewardMoney(Enums.eDifficulty diff, Enums.eItemSource source, Enums.eCrateType cType, Enums.eEnemyType eType, Vector3 spawnPos) { int difficulty = (int)diff; float baseAmount = m_BaseMoneyAmountByDiff[difficulty]; int diffVariableModifier = difficulty * 10; int variableAmount = UnityEngine.Random.Range(-5, 5 + 1) + diffVariableModifier; if (variableAmount < 0 && Mathf.Abs(variableAmount) >= baseAmount) { // will end up being negative or zero variableAmount *= -1; } InventoryItem data = new InventoryItem(-1); data.Type = Enums.eItemType.Money; data.Value = baseAmount + variableAmount; SpawnItemObject(Enums.eItemType.Money, data, spawnPos); }
private void RewardItem(Enums.eLevelTheme theme, Enums.eDifficulty diff, Enums.eItemSource source, Enums.eCrateType cType, Enums.eEnemyType eType, Vector3 spawnPos) { ItemProbability[] itemProbs = null; if (source == Enums.eItemSource.Crate) { switch (cType) { case Enums.eCrateType.Common: itemProbs = m_CommonCrateItems; break; case Enums.eCrateType.Rare: itemProbs = m_RareCrateItems; break; case Enums.eCrateType.VeryRare: itemProbs = m_VeryRareCrateItems; break; } } else if (source == Enums.eItemSource.Enemy) { switch (eType) { case Enums.eEnemyType.Weak: itemProbs = m_WeakEnemyItems; break; case Enums.eEnemyType.Regular: itemProbs = m_RegularEnemyItems; break; case Enums.eEnemyType.Tough: itemProbs = m_ToughEnemyItems; break; case Enums.eEnemyType.ExtraTough: itemProbs = m_VeryToughEnemyItems; break; case Enums.eEnemyType.Boss: itemProbs = m_BossEnemyItems; break; } } int[] probabilities = new int[itemProbs.Length]; for (int i = 0; i < itemProbs.Length; i++) { List<Enums.eLevelTheme> availableThemes = ItemDatabase.Instance.GetThemesForItem(itemProbs[i].ItemID); List<Enums.eDifficulty> availableDifficulties = ItemDatabase.Instance.GetDifficultiesForItem(itemProbs[i].ItemID); // theme/difficulty check if ((availableThemes[0] != Enums.eLevelTheme.All && !availableThemes.Contains(theme)) || (availableDifficulties[0] != Enums.eDifficulty.All && !availableDifficulties.Contains(diff))) { itemProbs[i].Probability = 0; } probabilities[i] = itemProbs[i].Probability; } int dataIndex = Utils.WeightedRandom(probabilities); InventoryItem data = ItemDatabase.Instance.GetItemFromID(itemProbs[dataIndex].ItemID); SpawnItemObject(data.Type, data, spawnPos); //Enums.eItemType itemType = (Enums.eItemType)Utils.WeightedRandom(m_ItemTypeProbabilities); //switch (itemType) //{ // case Enums.eItemType.Consumable: // currentItems = m_ConsumableData; // break; // case Enums.eItemType.StatBoost: // currentItems = m_StatBoostData; // break; // case Enums.eItemType.Armour: // currentItems = m_ArmourData; // break; // case Enums.eItemType.Weapon: // currentItems = m_WeaponData; // break; //} //// gather the probabilties of all items //int[] itemProbabilities = new int[currentItems.Length]; //for (int i = 0; i < currentItems.Length; i++) //{ // itemProbabilities[i] = currentItems[i].m_ProababilityByDifficulty[(int)diff]; //} //int itemDataIndex = Utils.WeightedRandom(itemProbabilities); //ItemData data = currentItems[itemDataIndex]; //SpawnItemObject(itemType, data, spawnPos); }