Beispiel #1
0
        public LootTree(ILootAlgorithm <TKey, TGenerate> algo, ILogger logger = null)
        {
            if (algo.IsNull())
            {
                logger.LogAndThrow <ArgumentException>(LoggerSeverity.InputValidation, "no algorithm provided");
            }

            _root     = new Root <TKey, TGenerate>(0, default, algo, logger);
Beispiel #2
0
        internal ChildNode(int id, ParentNode <TKey, TGenerate> parent, TKey key, int layer, ILootAlgorithm <TKey, TGenerate> algo, ILogger logger, bool ignoreAvailability = false)
            : base(id, key, algo, logger, ignoreAvailability)
        {
            Layer              = layer;
            _algorithm         = algo;
            _logger            = logger;
            IgnoreAvailability = ignoreAvailability;

            _parents = new HashSet <ParentNode <TKey, TGenerate> > {
                parent
            };

            _items = new List <ILootable <TKey, TGenerate> >();
        }
Beispiel #3
0
 public Root(int id, TKey key, ILootAlgorithm <TKey, TGenerate> algo, ILogger logger, bool ignoreAvailability = false)
     : base(id, key, algo, logger, ignoreAvailability)
 {
     _halfRoots = new Dictionary <TKey, HalfRoot <TKey, TGenerate> >();
 }
Beispiel #4
0
 public ILootable <TKey, TGenerate> GetSpecificWithin(Func <ILootable <TKey, TGenerate>, bool> predicate, ILootAlgorithm <TKey, TGenerate> algo)
 {
     return(algo.Generate(_items.Where(x => !_children.ContainsKey(x.Key) && predicate(x)).ToArray()));
 }
Beispiel #5
0
 internal HalfRoot(int id, TKey key, Root <TKey, TGenerate> parent, ILootAlgorithm <TKey, TGenerate> algo, ILogger logger, bool ignoreAvailability = false)
     : base(id, key, algo, logger, ignoreAvailability)
 {
     _parent = parent;
 }
 internal FallBackNode(int id, TKey key, ILootAlgorithm <TKey, TGenerate> algo, ILogger logger, bool ignoreAvailability = false)
     : base(id, key, algo, logger, ignoreAvailability)
 {
     IsDetached          = false;
     _linkedByAsFallback = new HashSet <ParentNode <TKey, TGenerate> >();
 }
Beispiel #7
0
 public Crap(ILootAlgorithm <string, string> algo)
     : base("Scrap", (q, t) => $"{t.Surround("<{0}>")}{algo.Generate(_craps).Generate(null)}", 2, 8, 25)
 {
 }