summaryrefslogtreecommitdiff
path: root/dice/src/main/java/bjc/dicelang/neodice/DiePool.java
diff options
context:
space:
mode:
Diffstat (limited to 'dice/src/main/java/bjc/dicelang/neodice/DiePool.java')
-rw-r--r--dice/src/main/java/bjc/dicelang/neodice/DiePool.java199
1 files changed, 0 insertions, 199 deletions
diff --git a/dice/src/main/java/bjc/dicelang/neodice/DiePool.java b/dice/src/main/java/bjc/dicelang/neodice/DiePool.java
deleted file mode 100644
index ac35988..0000000
--- a/dice/src/main/java/bjc/dicelang/neodice/DiePool.java
+++ /dev/null
@@ -1,199 +0,0 @@
-package bjc.dicelang.neodice;
-
-import java.util.*;
-import java.util.function.*;
-
-import bjc.dicelang.neodice.diepool.*;
-
-/**
- * Represents a pool of dice.
- *
- * @author Ben Culkin
- *
- */
-@FunctionalInterface
-public interface DiePool {
- /**
- * Roll each die in the pool, and return the results.
- *
- * Note that this array is not guaranteed to be the same size every time it
- * is rolled, because there are some pool types that could add/remove dice.
- *
- * @param rng The source for random numbers
- *
- * @return The result of rolling each die in the pool.
- */
- public int[] roll(Random rng);
-
- /**
- * Gets the dice contained in this pool.
- *
- * Note that the length of this array may not be the same as the length of
- * the array returned by roll, because certain pool types may add additional
- * dice.
- *
- * Also note that this array (and the Die instances contained in it) should
- * not be modified. That may work for certain pool types, but it isn't
- * guaranteed to work, and can lead to unintuitive behavior. For instances,
- * certain pool types may return an array where multiple elements of it refer
- * to the same Die instance.
- *
- * The default implementation throws an UnsupportedOperationException.
- *
- * @return The dice contained in this pool.
- *
- * @throws UnsupportedOperationException If the composite dice can't be retrieved.
- */
- default Die[] contained() {
- throw new UnsupportedOperationException("Can't get composite dice");
- }
-
- /*
- * These die pool operations transform this pool in some way.
- */
-
- /**
- * Returns a version of this die pool which returns its results in sorted
- * order.
- *
- * At the moment, sorting in descending order is somewhat less efficent than
- * sorting in ascending order, because Java doesn't provide a built-in
- * descending sort for primitive arrays.
- *
- * @param isDescending True to sort in descending order, false to sort in ascending order.
- *
- * @return The die pool, which returns its results in sorted order.
- */
- default DiePool sorted(boolean isDescending) {
- return new SortedDiePool(this, isDescending);
- }
-
- /**
- * Return a die pool which rolls this one, then filters out any results that
- * don't match the provided predicate.
- *
- * @param matcher The predicate that determines
- *
- * @return A die pool which contains only entries that pass the predicate.
- */
- default DiePool filtered(IntPredicate matcher) {
- return new FilteredDiePool(this, matcher);
- }
-
- /**
- * Return a die pool which rolls this one, then drops a number of the first values.
- *
- * @param number The number of first values to drop.
- *
- * @return A die pool which has the first entries dropped.
- */
- default DiePool dropFirst(int number) {
- return new DropFirstPool(this, number);
- }
-
- /**
- * Return a die pool which rolls this one, then drops a number of the last values.
- *
- * @param number The number of last values to drop.
- *
- * @return A die pool which has the last entries dropped.
- */
- default DiePool dropLast(int number) {
- return new DropLastPool(this, number);
- }
-
- /**
- * Return a die pool which rolls this one, then keeps a number of the first values.
- *
- * @param number The number of first values to keep.
- *
- * @return A die pool which has the first entries kept.
- */
- default DiePool keepFirst(int number) {
- return new KeepFirstDiePool(this, number);
- }
-
- /**
- * Return a die pool which rolls this one, then keeps a number of the last values.
- *
- * @param number The number of last values to keep.
- *
- * @return A die pool which has the last entries kept.
- */
- default DiePool keepLast(int number) {
- return new KeepLastDiePool(this, number);
- }
-
- /*
- * These die-pool operations are formed exclusively through other die pool
- * operations.
- */
-
- /**
- * Return a die pool which rolls this one, then drops a number of the lowest values.
- *
- * @param number The number of lowest values to drop.
- *
- * @return A die pool which has the lowest entries dropped.
- */
- default DiePool dropLowest(int number) {
- return this.sorted(false).dropFirst(number);
- }
-
- /**
- * Return a die pool which rolls this one, then drops a number of the lowest values.
- *
- * @param number The number of lowest values to drop.
- *
- * @return A die pool which has the lowest entries dropped.
- */
- default DiePool dropHighest(int number) {
- return this.sorted(false).dropLast(number);
- }
-
- /**
- * Return a die pool which rolls this one, then keeps a number of the lowest values.
- *
- * @param number The number of lowest values to keep.
- *
- * @return A die pool which has the lowest entries kept.
- */
- default DiePool keepLowest(int number) {
- return this.sorted(false).keepFirst(number);
- }
-
- /**
- * Return a die pool which rolls this one, then keeps a number of the highest values.
- *
- * @param number The number of highest values to keep.
- *
- * @return A die pool which has the highest entries kept.
- */
- default DiePool keepHighest(int number) {
- return this.sorted(false).keepLast(number);
- }
-
- /* These are misc. operations that don't form new dice pools. */
-
- /**
- * Get an iterator which iterates over a single roll of this die pool.
- *
- * @param rng The source of random numbers.
- *
- * @return An iterator over a single roll of this die pool.
- */
- default Iterator<Integer> iterator(Random rng) {
- return Arrays.stream(this.roll(rng)).iterator();
- }
-
- /**
- * Create a die pool containing the provided dice.
- *
- * @param dice The dice to put into the pool.
- *
- * @return A pool which contains the provided dice.
- */
- static DiePool containing(Die... dice) {
- return new FixedDiePool(dice);
- }
-} \ No newline at end of file