Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections.Generic;
- using UnityEngine;
- namespace DawidNoras
- {
- public class LootTable<T> where T : class
- {
- private class LootTableObject
- {
- public readonly int number;
- public readonly T value;
- public LootTableObject(int number, T value)
- {
- this.number = number;
- this.value = value;
- }
- }
- private IList<LootTableObject> objects = new List<LootTableObject>();
- public int CombinedWeight { get; private set; }
- public void Add(T obj, int weight)
- {
- CombinedWeight += weight;
- objects.Add(new LootTableObject(CombinedWeight, obj));
- }
- public T GetRandomObject()
- {
- var randomNumber = Random.Range(0, CombinedWeight + 1);
- return GetObject(randomNumber);
- }
- public T GetObject(int value)
- {
- value = Mathf.Clamp(value, 0, CombinedWeight);
- foreach (var obj in objects)
- {
- if (value <= obj.number)
- {
- return obj.value;
- }
- }
- return null;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement