summaryrefslogtreecommitdiff
path: root/dice/src/main/java/bjc/dicelang/dicev2/MapDieMod.java
diff options
context:
space:
mode:
Diffstat (limited to 'dice/src/main/java/bjc/dicelang/dicev2/MapDieMod.java')
-rw-r--r--dice/src/main/java/bjc/dicelang/dicev2/MapDieMod.java39
1 files changed, 39 insertions, 0 deletions
diff --git a/dice/src/main/java/bjc/dicelang/dicev2/MapDieMod.java b/dice/src/main/java/bjc/dicelang/dicev2/MapDieMod.java
new file mode 100644
index 0000000..d6d5dd0
--- /dev/null
+++ b/dice/src/main/java/bjc/dicelang/dicev2/MapDieMod.java
@@ -0,0 +1,39 @@
+package bjc.dicelang.dicev2;
+
+import java.util.function.LongUnaryOperator;
+
+public class MapDieMod extends Die {
+ public final Die die;
+
+ public final LongUnaryOperator map;
+
+ public MapDieMod(LongUnaryOperator map, Die die) {
+ super();
+
+ this.die = die;
+ this.map = map;
+ }
+
+ public long[] roll() {
+ long[] res = die.roll();
+
+ for(int i = 0; i < res.length; i++) {
+ res[i] = map.applyAsLong(res[i]);
+ }
+
+ return res;
+ }
+
+ public long rollSingle() {
+ return map.applyAsLong(die.rollSingle());
+ }
+
+ /* :UnoptimizableDice */
+ public boolean canOptimize() {
+ return false;
+ }
+
+ public long optimize() {
+ throw new UnsupportedOperationException("Mapped dice can't be optimized");
+ }
+}