public void OnDropMoney(GameObject Obj, int amount) { Debug.Log(amount); int minCoinNum = 6; int coinTenNum = amount / 10; int coinThreeNum = (amount % 10) / 3; int coinOneNum = ((amount % 10) % 3) / 1; int curCoinNum = coinTenNum + coinThreeNum + coinOneNum; if ((curCoinNum < minCoinNum) && (amount > 6)) { if (coinTenNum > 0) { // 10 → 3 + 3 + 3 + 1 coinTenNum--; coinThreeNum += 3; coinOneNum++; curCoinNum = coinTenNum + coinThreeNum + coinOneNum; } while (curCoinNum < minCoinNum) { if (coinThreeNum < 1) { break; } // 3 → 1 + 1 + 1 coinThreeNum--; coinOneNum += 3; curCoinNum = coinTenNum + coinThreeNum + coinOneNum; } } Debug.Log(amount); Debug.Log(coinTenNum); Debug.Log(coinThreeNum); Debug.Log(coinOneNum); for (int i = 0; i < coinTenNum; i++) { GameObject coin10 = GameObject.Instantiate(LootData.GetPrefabFromName("CoinTen"), Obj.transform.position, Quaternion.identity); } for (int i = 0; i < coinThreeNum; i++) { GameObject coin3 = GameObject.Instantiate(LootData.GetPrefabFromName("CoinThree"), Obj.transform.position, Quaternion.identity); } for (int i = 0; i < coinOneNum; i++) { GameObject coin1 = GameObject.Instantiate(LootData.GetPrefabFromName("CoinOne"), Obj.transform.position, Quaternion.identity); } }
private void m_OnEnemyDied(PlayerKillEnemy ev) { foreach (var monster in m_DB.MonsterDB.GetAll()) { if (ev.Enemy.name.ToLower().Contains(monster.id.ToLower())) { for (int i = 0; i < monster.DropsList.Count; i++) { float roll = Random.Range(0f, 1f); if (roll < monster.DropsList[i].Weight) { string dropName = monster.DropsList[i].Item.id; if (dropName.ToLower() == "money") { Services.CoinManager.OnDropMoney(ev.Enemy, monster.DropsList[i].Quantity); } else { // Drop other stuff GameObject theLoot = m_LootData.GetPrefabFromName(dropName); Debug.Assert(theLoot != null, "Loot: " + dropName + " is not in loot data"); GameObject lootInstance = GameObject.Instantiate <GameObject>(theLoot, ev.Enemy.transform.position, Quaternion.identity); lootInstance.GetComponent <SpeedManager>().SelfSpeed = new Vector2(Random.Range(-1.5f, 1.5f), Random.Range(1f, 3f)); if (dropName.ToLower().Contains("abilityobject")) { lootInstance.GetComponent <AbilityObject>().PriceType = AbilityObjectPriceType.Drop; } } } } break; } } }