Skip to content

UniqueSpaceExhaustedException

Namespace Nfty.Core.Generation in assembly Nfty.Core.

public class UniqueSpaceExhaustedException : InvalidOperationException

More unique assets were requested than the cookbook can produce. UniqueSpaceExhaustedException.Available is the true maximum only when UniqueSpaceExhaustedException.Certainty says so; otherwise it is a bound, and UniqueSpaceExhaustedException.Certainty is what says in which direction.

Remarks

This carried a bool isExact, and read every non-exact outcome as "the real figure is GREATER — so the reroll budget, not the space, is what ran out". One of those outcomes is the opposite: a recipe with rules and more combinations than the enumeration budget reports an upper bound, and telling a user their book allows "more than" a number it may not reach is worse than saying nothing.

Constructors

UniqueSpaceExhaustedException(BigInteger, SpaceCertainty, int, int, string)

public UniqueSpaceExhaustedException(BigInteger available, SpaceCertainty certainty, int requested, int produced, string message);

Creates the exception.

Parameters

  • available (BigInteger) - The space the book admits.
  • certainty (SpaceCertainty) - What that figure is.
  • requested (int) - How many were asked for.
  • produced (int) - How many were produced.
  • message (string) - The message shown to the user verbatim.

Properties

Available

public BigInteger Available { get; }

How many unique DNA the book actually admits.

Remarks

A BigInteger, like the count it comes from: a book whose space is too big to fit a Int64 is exactly the book most likely to exhaust a caller's reroll budget for some other reason, so this is the last place the figure should be a saturated sentinel.

Certainty

public SpaceCertainty Certainty { get; }

What UniqueSpaceExhaustedException.Available is: the figure, a floor, a ceiling, or nothing.

IsExact

public bool IsExact { get; }

Whether UniqueSpaceExhaustedException.Available is the real figure rather than a bound.

Produced

public int Produced { get; }

How many were produced before the space ran out.

Requested

public int Requested { get; }

How many assets were asked for.