From 8e40356ab2e7aa79c9e4c90c0de48308506c359c Mon Sep 17 00:00:00 2001 From: bculkin2442 Date: Sun, 26 Feb 2017 08:22:59 -0500 Subject: Dice math --- dice-lang/src/bjc/dicelang/v2/DiceBox.java | 87 ++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) (limited to 'dice-lang/src/bjc/dicelang/v2/DiceBox.java') diff --git a/dice-lang/src/bjc/dicelang/v2/DiceBox.java b/dice-lang/src/bjc/dicelang/v2/DiceBox.java index 2a32f47..9859d93 100644 --- a/dice-lang/src/bjc/dicelang/v2/DiceBox.java +++ b/dice-lang/src/bjc/dicelang/v2/DiceBox.java @@ -274,6 +274,93 @@ public class DiceBox { } } + public static class MathDie implements Die { + public static enum MathOp { + ADD, SUBTRACT, MULTIPLY; + + public String toString() { + switch(this) { + case ADD: + return "+"; + case SUBTRACT: + return "-"; + case MULTIPLY: + return "*"; + default: + return this.name(); + } + } + } + + private MathOp type; + + private Die left; + private Die right; + + public MathDie(MathOp op, Die lft, Die rght) { + type = op; + + left = lft; + right = rght; + } + + public boolean canOptimize() { + return left.canOptimize() && right.canOptimize(); + } + + public long optimize() { + long lft = left.optimize(); + long rght = right.optimize(); + + switch(type) { + case ADD: + return lft + rght; + case SUBTRACT: + return lft - rght; + case MULTIPLY: + return lft * rght; + default: + return 0; + } + } + + public long roll() { + long lft = left.roll(); + long rght = right.roll(); + + switch(type) { + case ADD: + return lft + rght; + case SUBTRACT: + return lft - rght; + case MULTIPLY: + return lft * rght; + default: + return 0; + } + } + + public long rollSingle() { + long lft = left.rollSingle(); + long rght = right.rollSingle(); + + switch(type) { + case ADD: + return lft + rght; + case SUBTRACT: + return lft - rght; + case MULTIPLY: + return lft * rght; + default: + return 0; + } + } + + public String toString() { + return left.toString() + " " + type.toString() + " " + right.toString(); + } + } + public static class SimpleDieList implements DieList { private Die numDice; private Die size; -- cgit v1.2.3