From 96e868388c7617136e916c27ddd90694c0bb8356 Mon Sep 17 00:00:00 2001 From: bjculkin Date: Mon, 27 Feb 2017 10:34:25 -0500 Subject: More refactoring --- dice-lang/src/bjc/dicelang/v2/dice/SimpleDie.java | 60 +++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 dice-lang/src/bjc/dicelang/v2/dice/SimpleDie.java (limited to 'dice-lang/src/bjc/dicelang/v2/dice/SimpleDie.java') diff --git a/dice-lang/src/bjc/dicelang/v2/dice/SimpleDie.java b/dice-lang/src/bjc/dicelang/v2/dice/SimpleDie.java new file mode 100644 index 0000000..f084822 --- /dev/null +++ b/dice-lang/src/bjc/dicelang/v2/dice/SimpleDie.java @@ -0,0 +1,60 @@ +package bjc.dicelang.v2.dice; + +public class SimpleDie implements Die { + private Die numDice; + private Die diceSize; + + public SimpleDie(long nDice, long size) { + numDice = new ScalarDie(nDice); + diceSize = new ScalarDie(size); + } + + public SimpleDie(Die nDice, long size) { + numDice = nDice; + diceSize = new ScalarDie(size); + } + + public SimpleDie(long nDice, Die size) { + numDice = new ScalarDie(nDice); + diceSize = size; + } + + public SimpleDie(Die nDice, Die size) { + numDice = nDice; + diceSize = size; + } + + public boolean canOptimize() { + if(diceSize.canOptimize() && (diceSize.optimize() <= 1)) { + return numDice.canOptimize(); + } else return false; + } + + public long optimize() { + long optSize = diceSize.optimize(); + + if(optSize == 0) return 0; + else return numDice.optimize(); + } + + public long roll() { + long total = 0; + + long nDice = numDice.roll(); + long dSize = diceSize.roll(); + + for(int i = 0; i < nDice; i++) { + total += (Math.abs(DiceBox.rng.nextLong()) % dSize) + 1; + } + + return total; + } + + public long rollSingle() { + return (Math.abs(DiceBox.rng.nextLong()) % diceSize.roll()) + 1; + } + + public String toString() { + return numDice + "d" + diceSize; + } +} \ No newline at end of file -- cgit v1.2.3