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);
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> >(); }
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> >(); }
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())); }
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> >(); }
public Crap(ILootAlgorithm <string, string> algo) : base("Scrap", (q, t) => $"{t.Surround("<{0}>")}{algo.Generate(_craps).Generate(null)}", 2, 8, 25) { }