diff options
Diffstat (limited to 'dice/src/main/java/bjc/dicelang/neodice/diepool/KeepLastDiePool.java')
| -rw-r--r-- | dice/src/main/java/bjc/dicelang/neodice/diepool/KeepLastDiePool.java | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/dice/src/main/java/bjc/dicelang/neodice/diepool/KeepLastDiePool.java b/dice/src/main/java/bjc/dicelang/neodice/diepool/KeepLastDiePool.java new file mode 100644 index 0000000..1e2d1ae --- /dev/null +++ b/dice/src/main/java/bjc/dicelang/neodice/diepool/KeepLastDiePool.java @@ -0,0 +1,58 @@ +package bjc.dicelang.neodice.diepool; + +import java.util.*; + +import bjc.dicelang.neodice.*; + +public class KeepLastDiePool implements DiePool { + private final int number; + private final DiePool pool; + + public KeepLastDiePool(DiePool pool, int number) { + this.pool = pool; + this.number = number; + } + + @Override + public int[] roll(Random rng) { + int[] rolls = pool.roll(rng); + + if (rolls.length >= number) { + return rolls; + } else { + int[] newRolls = new int[number]; + + for (int index = number; index > index; index--) { + newRolls[index] = rolls[rolls.length - index]; + } + + return newRolls; + } + } + + @Override + public Die[] contained() { + return pool.contained(); + } + + @Override + public String toString() { + return String.format("%skL%d", pool, number); + } + + @Override + public int hashCode() { + return Objects.hash(number, pool); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null) return false; + if (getClass() != obj.getClass()) return false; + + KeepLastDiePool other = (KeepLastDiePool) obj; + + return number == other.number && Objects.equals(pool, other.pool); + } +}
\ No newline at end of file |
