summaryrefslogtreecommitdiff
path: root/dice-lang/src/bjc/dicelang/dice/ExplodingDice.java
diff options
context:
space:
mode:
authorbculkin2442 <bjculkin@mix.wvu.edu>2017-03-06 14:15:03 -0500
committerbculkin2442 <bjculkin@mix.wvu.edu>2017-03-06 14:15:03 -0500
commit9139064c95f6c9c4f7ba1d0aea21e2f5233ad188 (patch)
treedd93017bff73e61fec20c58b7baa43d1662c0c5b /dice-lang/src/bjc/dicelang/dice/ExplodingDice.java
parentb11f8d2c92aaaf1160e69190559ffadc4774f138 (diff)
Formatting/Documentation
Diffstat (limited to 'dice-lang/src/bjc/dicelang/dice/ExplodingDice.java')
-rw-r--r--dice-lang/src/bjc/dicelang/dice/ExplodingDice.java43
1 files changed, 42 insertions, 1 deletions
diff --git a/dice-lang/src/bjc/dicelang/dice/ExplodingDice.java b/dice-lang/src/bjc/dicelang/dice/ExplodingDice.java
index 6ab9902..59e739e 100644
--- a/dice-lang/src/bjc/dicelang/dice/ExplodingDice.java
+++ b/dice-lang/src/bjc/dicelang/dice/ExplodingDice.java
@@ -4,21 +4,58 @@ import java.util.LinkedList;
import java.util.List;
import java.util.function.Predicate;
+/**
+ * An exploding die.
+ *
+ * Represents a die list that keeps getting another added die as long as a
+ * condition is met.
+ *
+ * @author Ben Culkin
+ */
public class ExplodingDice implements DieList {
+ /*
+ * The source die to use.
+ */
private Die source;
+ /*
+ * The conditions for exploding.
+ */
private Predicate<Long> explodeOn;
private String explodePattern;
private boolean explodePenetrates;
+ /**
+ * Create a new exploding die.
+ *
+ * @param src The source die for exploding.
+ * @param explode The condition to explode on.
+ */
public ExplodingDice(Die src, Predicate<Long> explode) {
this(src, explode, null, false);
}
+ /**
+ * Create a new exploding die that may penetrate.
+ *
+ * @param src The source die for exploding.
+ * @param explode The condition to explode on.
+ * @param penetrate Whether or not for explosions to penetrate (-1 to
+ * exploded die).
+ */
public ExplodingDice(Die src, Predicate<Long> explode, boolean penetrate) {
this(src, explode, null, penetrate);
}
+ /**
+ * Create a new exploding die that may penetrate.
+ *
+ * @param src The source die for exploding.
+ * @param explode The condition to explode on.
+ * @param penetrate Whether or not for explosions to penetrate (-1 to
+ * exploded die).
+ * @param patt The string the condition came from, for printing.
+ */
public ExplodingDice(Die src, Predicate<Long> explode, String patt,
boolean penetrate) {
source = src;
@@ -27,14 +64,17 @@ public class ExplodingDice implements DieList {
explodePenetrates = penetrate;
}
+ @Override
public boolean canOptimize() {
return false;
}
+ @Override
public long[] optimize() {
return new long[0];
}
+ @Override
public long[] roll() {
long res = source.roll();
long oldRes = res;
@@ -60,6 +100,7 @@ public class ExplodingDice implements DieList {
return newRes;
}
+ @Override
public String toString() {
if(explodePattern == null) {
return source + (explodePenetrates ? "p" : "") + "!";
@@ -67,4 +108,4 @@ public class ExplodingDice implements DieList {
return source + (explodePenetrates ? "p" : "") + "!" + explodePattern;
}
}
-} \ No newline at end of file
+}