From 7bda9de511a5642efb297eae98c6ea7c42b27754 Mon Sep 17 00:00:00 2001 From: "Benjamin J. Culkin" Date: Wed, 25 Oct 2017 12:10:14 -0300 Subject: Start switch to maven modules --- base/src/bjc/dicelang/dice/CompoundDie.java | 60 +++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 base/src/bjc/dicelang/dice/CompoundDie.java (limited to 'base/src/bjc/dicelang/dice/CompoundDie.java') diff --git a/base/src/bjc/dicelang/dice/CompoundDie.java b/base/src/bjc/dicelang/dice/CompoundDie.java new file mode 100644 index 0000000..0793872 --- /dev/null +++ b/base/src/bjc/dicelang/dice/CompoundDie.java @@ -0,0 +1,60 @@ +package bjc.dicelang.dice; + +/** + * A die whose rolls result from concatenating two other rolls together. + * + * @author Ben Culkin + */ +public class CompoundDie implements Die { + /* The dice that form this die */ + private final Die left; + private final Die right; + + /** + * Create a new compound die. + * + * @param lft + * The left die + * @param rght + * The right die + */ + public CompoundDie(final Die lft, final Die rght) { + left = lft; + right = rght; + } + + @Override + public boolean canOptimize() { + return left.canOptimize() && right.canOptimize(); + } + + @Override + public long optimize() { + long leftOpt = left.optimize(); + long rightOpt = right.optimize(); + + return Long.parseLong(String.format("%d%d", leftOpt, rightOpt)); + } + + @Override + public long roll() { + long leftRoll = left.optimize(); + long rightRoll = right.optimize(); + + return Long.parseLong(String.format("%d%d", leftRoll, rightRoll)); + } + + @Override + public long rollSingle() { + /* Actually one dice built using two, can't be split. */ + return roll(); + } + + @Override + public String toString() { + String leftString = left.toString(); + String rightString = right.toString(); + + return String.format("%sc%s", leftString, rightString); + } +} -- cgit v1.2.3