summaryrefslogtreecommitdiff
path: root/dice-lang/src/bjc/dicelang/dice/ExplodingDice.java
diff options
context:
space:
mode:
authorBenjamin J. Culkin <bjculkin@mix.wvu.edu>2017-10-09 16:02:10 -0300
committerBenjamin J. Culkin <bjculkin@mix.wvu.edu>2017-10-09 16:02:10 -0300
commitf028ea6dc555fc5192a96b00b8e96e90dbf6de55 (patch)
tree4b2a28ecbeb30095b50e6e9e8ac8b98fa8ddc79e /dice-lang/src/bjc/dicelang/dice/ExplodingDice.java
parentbe4675f9512060aa85b1e0a4f223208b51b55812 (diff)
TODO tagging
Diffstat (limited to 'dice-lang/src/bjc/dicelang/dice/ExplodingDice.java')
-rw-r--r--dice-lang/src/bjc/dicelang/dice/ExplodingDice.java31
1 files changed, 15 insertions, 16 deletions
diff --git a/dice-lang/src/bjc/dicelang/dice/ExplodingDice.java b/dice-lang/src/bjc/dicelang/dice/ExplodingDice.java
index 6458f04..e891a1c 100644
--- a/dice-lang/src/bjc/dicelang/dice/ExplodingDice.java
+++ b/dice-lang/src/bjc/dicelang/dice/ExplodingDice.java
@@ -13,16 +13,13 @@ import java.util.function.Predicate;
* @author Ben Culkin
*/
public class ExplodingDice implements DieList {
- /*
- * The source die to use.
- */
+ /* The source die to use. */
private final Die source;
- /*
- * The conditions for exploding.
- */
+ /* The conditions for exploding. */
private final Predicate<Long> explodeOn;
private final String explodePattern;
+ /* Whether or not to apply a -1 penalty to explosions. */
private final boolean explodePenetrates;
/**
@@ -90,6 +87,7 @@ public class ExplodingDice implements DieList {
long oldRes = res;
final List<Long> resList = new LinkedList<>();
+ resList.add(res);
while (explodeOn.test(oldRes)) {
oldRes = source.rollSingle();
@@ -101,25 +99,26 @@ public class ExplodingDice implements DieList {
resList.add(oldRes);
}
- final long[] newRes = new long[resList.size() + 1];
- newRes[0] = res;
+ final long resArr[] = new long[resList.size()];
- int i = 1;
-
- for (final long rll : resList) {
- newRes[i] = rll;
- i += 1;
+ int i = 0;
+ for(long rll : resList) {
+ resArr[i] = rll;
+ i += 1;
}
- return newRes;
+ return resArr;
}
@Override
public String toString() {
+ String penString = explodePenetrates ? "p" : "";
+ String sourceString = source.toString();
+
if (explodePattern == null) {
- return source + (explodePenetrates ? "p" : "") + "!";
+ return String.format("%s%s!<complex-pred>", sourceString, penString);
}
- return source + (explodePenetrates ? "p" : "") + "!" + explodePattern;
+ return String.format("%s%s!%s", sourceString, penString, explodePattern);
}
}