using Kryz.CharacterStats.Examples; using Photon.Pun; using System.Collections; using System.Collections.Generic; using UnityEngine; public class DropTable : MonoBehaviour { [SerializeField] private GameObject interactableDropPrefab; [SerializeField] private GameObject coinPrefab; [SerializeField] private int coinAmount; [SerializeField] private int extraDropChance; [SerializeField] private GameEvent_Int onCoinDrop; public List guaranteedItemDrop = new List(); public List extraDrops = new List(); PhotonView photonView; GameObject instantiatedDrop; EquippableItemDrop itemDrop; GameObject instantiatedCoinDrop; CoinDrop coinDrop; int finalCoinAmount; Vector3 spawnPosition; private void Awake() { photonView = GetComponentInParent(); } // Start is called before the first frame update void Start() { } public bool CalculateLootDrop() { return Random.Range(0, 100) < (extraDropChance * (1 + GameConstants.GameBalancing.IncreasedItemDropBasedOnDifficultyMultiplier * GameDifficultyController.Instance.GetCurrentDifficultyLevel())); } public void DropLoot(bool lootDrop) { spawnPosition = this.transform.position; spawnPosition.y = 0f; instantiatedCoinDrop = Instantiate(coinPrefab, spawnPosition, this.transform.rotation); coinDrop = instantiatedCoinDrop.GetComponent(); finalCoinAmount = Mathf.RoundToInt(coinAmount * (1 + GameConstants.GameBalancing.IncreasedCoinDropBasedOnDifficultyMultiplier * GameDifficultyController.Instance.GetCurrentDifficultyLevel())); coinDrop.Init(finalCoinAmount); onCoinDrop.Raise(finalCoinAmount); for (int i = 0; i < guaranteedItemDrop.Count; i++) { instantiatedDrop = Instantiate(interactableDropPrefab, spawnPosition, this.transform.rotation); itemDrop = instantiatedDrop.GetComponent(); itemDrop.itemDrop = guaranteedItemDrop[i]; } if (!lootDrop) return; if (extraDrops.Count <= 0) return; spawnPosition = this.transform.position; spawnPosition.y = 0f; instantiatedDrop = Instantiate(interactableDropPrefab, spawnPosition, this.transform.rotation); itemDrop = instantiatedDrop.GetComponent(); itemDrop.itemDrop = extraDrops[Random.Range(0, extraDrops.Count)]; } }