Add bonus rolls

This commit is contained in:
Misode
2019-06-17 19:10:18 +02:00
parent 37e58e70b0
commit a53f7b1678
2 changed files with 64 additions and 1 deletions
+21 -1
View File
@@ -76,7 +76,7 @@
<a class="dropdown-item" onclick="switchRollsType(this, 'binomial')">Binomial</a>
</div>
</div>
<input type="text" class="form-control exact d-none rounded-right" onchange="updateRollsField(this)" value="1">
<input type="text" class="form-control exact d-none rounded-right" onchange="updateRollsField(this)">
<span class="input-group-text rounded-0 range d-none">Min</span>
<input type="text" class="form-control range min d-none" value="1" onchange="updateRollsField(this)">
<span class="input-group-text rounded-0 range d-none">Max</span>
@@ -86,6 +86,26 @@
<span class="input-group-text rounded-0 binomial d-none">p</span>
<input type="text" class="form-control binomial p d-none rounded-right" value="0.5" onchange="updateRollsField(this)">
</div>
<div class="input-group mt-3 bonus-rolls" data-type="exact">
<div class="input-group-prepend">
<span class="input-group-text">Bonus Rolls</span>
<button type="button" class="btn btn-outline-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown"></button>
<div class="dropdown-menu">
<a class="dropdown-item" onclick="switchBonusRollsType(this, 'exact')">Exact</a>
<a class="dropdown-item" onclick="switchBonusRollsType(this, 'range')">Range</a>
<a class="dropdown-item" onclick="switchBonusRollsType(this, 'binomial')">Binomial</a>
</div>
</div>
<input type="text" class="form-control exact d-none rounded-right" onchange="updateBonusRollsField(this)">
<span class="input-group-text rounded-0 range d-none">Min</span>
<input type="text" class="form-control range min d-none" value="1" onchange="updateBonusRollsField(this)">
<span class="input-group-text rounded-0 range d-none">Max</span>
<input type="text" class="form-control range max d-none rounded-right" value="2" onchange="updateBonusRollsField(this)">
<span class="input-group-text rounded-0 binomial d-none">n</span>
<input type="text" class="form-control binomial n d-none" value="1" onchange="updateBonusRollsField(this)">
<span class="input-group-text rounded-0 binomial d-none">p</span>
<input type="text" class="form-control binomial p d-none rounded-right" value="0.5" onchange="updateBonusRollsField(this)">
</div>
</div>
</div>
<div id="entryTemplate" class="card mt-3 entry">
+43
View File
@@ -89,6 +89,22 @@ function updateRollsField(el) {
invalidated();
}
function switchBonusRollsType(el, type) {
$(el).closest('.bonus-rolls').attr('data-type', type);
updateBonusRollsField(el);
}
function updateBonusRollsField(el) {
let type = $(el).closest('.bonus-rolls').attr('data-type');
let data = getRangeField($(el).closest('.bonus-rolls'), type);
if (type ==='exact' && isNaN(data)) {
delete getPool(el).bonus_rolls;
} else {
getPool(el).bonus_rolls = data;
}
invalidated();
}
function updateEntryType(el) {
let entry = getEntry(el);
entry.type = $(el).val();
@@ -162,6 +178,9 @@ function generateStructure() {
$pool.removeAttr('id').attr('data-index', i);
// Rolls
if (!pool.rolls) {
pool.rolls = 1;
}
let $rolls = $pool.find('.rolls');
if (typeof pool.rolls === 'object') {
if (pool.rolls.type && pool.rolls.type.match(/(minecraft:)?binomial/)) {
@@ -181,6 +200,30 @@ function generateStructure() {
$rolls.find('.exact').val(pool.rolls);
}
// Bonus Rolls
let $bonus_rolls = $pool.find('.bonus-rolls');
if (pool.bonus_rolls) {
if (typeof pool.bonus_rolls === 'object') {
if (pool.bonus_rolls.type && pool.bonus_rolls.type.match(/(minecraft:)?binomial/)) {
$bonus_rolls.attr('data-type', 'binomial');
$bonus_rolls.find('.binomial').removeClass('d-none');
$bonus_rolls.find('.binomial.n').val(pool.bonus_rolls.n);
$bonus_rolls.find('.binomial.p').val(pool.bonus_rolls.p);
} else {
$bonus_rolls.attr('data-type', 'range');
$bonus_rolls.find('.range').removeClass('d-none');
$bonus_rolls.find('.range.min').val(pool.bonus_rolls.min);
$bonus_rolls.find('.range.max').val(pool.bonus_rolls.max);
}
} else {
$bonus_rolls.attr('data-type', 'exact');
$bonus_rolls.find('.exact').removeClass('d-none');
$bonus_rolls.find('.exact').val(pool.bonus_rolls);
}
} else {
$bonus_rolls.find('.exact').removeClass('d-none');
}
// Entries
for (let j = 0; j < pool.entries.length; j += 1) {
let entry = pool.entries[j];