summaryrefslogtreecommitdiff
path: root/base/src/bjc/dicelang/dice/SimpleDieList.java
diff options
context:
space:
mode:
authorBenjamin J. Culkin <bjculkin@mix.wvu.edu>2017-10-25 12:10:14 -0300
committerBenjamin J. Culkin <bjculkin@mix.wvu.edu>2017-10-25 12:10:14 -0300
commit7bda9de511a5642efb297eae98c6ea7c42b27754 (patch)
treedff1aa772b9ac088c5bd07b8d10d944cbff89f96 /base/src/bjc/dicelang/dice/SimpleDieList.java
parentf028ea6dc555fc5192a96b00b8e96e90dbf6de55 (diff)
Start switch to maven modules
Diffstat (limited to 'base/src/bjc/dicelang/dice/SimpleDieList.java')
-rw-r--r--base/src/bjc/dicelang/dice/SimpleDieList.java77
1 files changed, 77 insertions, 0 deletions
diff --git a/base/src/bjc/dicelang/dice/SimpleDieList.java b/base/src/bjc/dicelang/dice/SimpleDieList.java
new file mode 100644
index 0000000..8391054
--- /dev/null
+++ b/base/src/bjc/dicelang/dice/SimpleDieList.java
@@ -0,0 +1,77 @@
+package bjc.dicelang.dice;
+
+/**
+ * A simple list of dice.
+ *
+ * @author EVE
+ *
+ * @TODO 10/08/17 Ben Culkin :DieListGeneralize
+ * DieList in general should be changed to be able to be
+ * constructed from an arbitrary die using rollSingle and things
+ * like that.
+ */
+public class SimpleDieList implements DieList {
+ /* The number of dice to roll. */
+ private final Die numDice;
+ /*
+ * The size of each die to roll.
+ *
+ * Checked once per roll, not once per dice rolled.
+ */
+ private final Die size;
+
+ /**
+ * Create a new list of dice.
+ *
+ * @param nDice
+ * The number of dice in the list.
+ *
+ * @param sze
+ * The size of dice in the list.
+ */
+ public SimpleDieList(final Die nDice, final Die sze) {
+ numDice = nDice;
+ size = sze;
+ }
+
+ @Override
+ public boolean canOptimize() {
+ if (size.canOptimize() && size.optimize() <= 1) {
+ return numDice.canOptimize();
+ }
+
+ return false;
+ }
+
+ @Override
+ public long[] optimize() {
+ final int sze = (int) numDice.optimize();
+ final long res = size.optimize();
+
+ final long[] ret = new long[sze];
+
+ for (int i = 0; i < sze; i++) {
+ ret[i] = res;
+ }
+
+ return ret;
+ }
+
+ @Override
+ public long[] roll() {
+ final int num = (int) numDice.roll();
+
+ final long[] ret = new long[num];
+
+ for (int i = 0; i < num; i++) {
+ ret[i] = size.roll();
+ }
+
+ return ret;
+ }
+
+ @Override
+ public String toString() {
+ return numDice.toString() + "dl" + size.toString();
+ }
+}