summaryrefslogtreecommitdiff
path: root/dice/src/main/java/bjc/dicelang/dicev2/CompositeDie.java
diff options
context:
space:
mode:
authorBen Culkin <scorpress@gmail.com>2020-04-13 18:32:11 -0400
committerBen Culkin <scorpress@gmail.com>2020-04-13 18:32:11 -0400
commit5a26fb2c0d899b1c80fabb39366a7b7db4d8ca41 (patch)
tree19e19dab7c72aaee504a07e9434cde8c379092c8 /dice/src/main/java/bjc/dicelang/dicev2/CompositeDie.java
parent25fbdca78518df0cb096544e912cdb3913f348fd (diff)
Add some javadoc
Add some javadoc comments
Diffstat (limited to 'dice/src/main/java/bjc/dicelang/dicev2/CompositeDie.java')
-rw-r--r--dice/src/main/java/bjc/dicelang/dicev2/CompositeDie.java93
1 files changed, 80 insertions, 13 deletions
diff --git a/dice/src/main/java/bjc/dicelang/dicev2/CompositeDie.java b/dice/src/main/java/bjc/dicelang/dicev2/CompositeDie.java
index e9bb585..ab29842 100644
--- a/dice/src/main/java/bjc/dicelang/dicev2/CompositeDie.java
+++ b/dice/src/main/java/bjc/dicelang/dicev2/CompositeDie.java
@@ -2,66 +2,130 @@ package bjc.dicelang.dicev2;
import java.util.Random;
+/**
+ * A dice where both the number of dice to roll and the number of sides of the
+ * dice are specified by other dice.
+ *
+ * @author Ben Culkin
+ *
+ */
public class CompositeDie extends Die {
+ /**
+ * The die that provides the number of dice to roll.
+ */
public final Die numDice;
+ /**
+ * The die that provides the number of sides of the dice to roll.
+ */
public final Die numSides;
+ /**
+ * Should the number of sides per dice be rerolled after every dice is rolled?
+ *
+ * By default, the number of sides will be rolled once per roll of this die.
+ */
public final boolean rerollSides;
+ /**
+ * Create a new composite dice that rolls the number of sides once.
+ *
+ * @param numDice
+ * The number of dice to roll.
+ * @param numSides
+ * The number of sides on the dice.
+ */
public CompositeDie(Die numDice, Die numSides) {
this(numDice, numSides, false);
}
+ /**
+ * Create a new composite dice with the specified side-rolling behavior.
+ *
+ * @param numDice
+ * The number of dice to roll.
+ * @param numSides
+ * The number of sides on the dice.
+ * @param rerollSides
+ * Whether to rolls the sides once per roll, or once per
+ * dice.
+ */
public CompositeDie(Die numDice, Die numSides, boolean rerollSides) {
super();
- this.numDice = numDice;
+ this.numDice = numDice;
this.numSides = numSides;
this.rerollSides = rerollSides;
}
+ /**
+ * Create a new composite dice using a specific RNG, rolling dice one per side.
+ *
+ * @param rnd
+ * The RNG to use.
+ * @param numDice
+ * The number of dice to use.
+ * @param numSides
+ * The number of sides for the dice.
+ */
public CompositeDie(Random rnd, Die numDice, Die numSides) {
this(rnd, numDice, numSides, false);
}
+ /**
+ * Create a new composite dice using a specific RNG and side-rolling behavior.
+ *
+ * @param rnd
+ * The RNG to use.
+ * @param numDice
+ * The number of dice to use.
+ * @param numSides
+ * The number of sides on the dice.
+ * @param rerollSides
+ * Whether to rolls the sides once per roll, or once per
+ * dice.
+ */
public CompositeDie(Random rnd, Die numDice, Die numSides, boolean rerollSides) {
super(rnd);
- this.numDice = numDice;
+ this.numDice = numDice;
this.numSides = numSides;
this.rerollSides = rerollSides;
}
+ @Override
public long[] roll() {
- int target = (int)numDice.rollSingle();
- int sides = (int)numSides.rollSingle();
+ int target = (int) numDice.rollSingle();
+ int sides = (int) numSides.rollSingle();
long[] res = new long[target];
- for(int i = 0; i < target; i++) {
+ for (int i = 0; i < target; i++) {
res[i] = rng.nextInt(sides) + 1;
- if(rerollSides) sides = (int)numSides.rollSingle();
+ if (rerollSides)
+ sides = (int) numSides.rollSingle();
}
return res;
}
+ @Override
public long rollSingle() {
- return rng.nextInt((int)numSides.rollSingle());
+ return rng.nextInt((int) numSides.rollSingle());
}
+ @Override
public boolean canOptimize() {
- if(numSides.canOptimize()) {
- if(numSides.optimize() <= 1) {
+ if (numSides.canOptimize()) {
+ if (numSides.optimize() <= 1) {
return true;
}
}
- if(numDice.canOptimize()) {
- if(numDice.optimize() == 0) {
+ if (numDice.canOptimize()) {
+ if (numDice.optimize() == 0) {
return true;
}
}
@@ -69,9 +133,12 @@ public class CompositeDie extends Die {
return false;
}
+ @Override
public long optimize() {
- if(numDice.canOptimize()) return 0;
- if(numSides.canOptimize() && numSides.optimize() == 0) return 0;
+ if (numDice.canOptimize())
+ return 0;
+ if (numSides.canOptimize() && numSides.optimize() == 0)
+ return 0;
return numDice.rollSingle();
}