SR6_Roll20_Sheet/workers/healthTrackerManager.js

77 lines
No EOL
2.4 KiB
JavaScript

const renderHealthBoxes = () => {
//let physicalBoxes = calculateBoxes('physical')
//let stunBoxes = calculateBoxes('stun')
//let overflowBoxes = calculateBoxes('overflow')
for (let j = 0; j < 12; j++) {
let newRowId = generateRowID()
let tempObject = {}
tempObject[`repeating_physicaltracker_${newRowId}_boxNum`] = j
tempObject[`repeating_physicaltracker_${newRowId}_woundMod`] = Math.trunc(j / 3) * -1
tempObject[`repeating_physicaltracker_${newRowId}_isCrossed`] = 'false'
setAttrs(tempObject)
}
}
const clearAllHealthBoxes = () => {
getSectionIDs('physicaltracker', function (ids) {
ids.forEach(id => {
removeRepeatingRow(`repeating_physicaltracker_${id}`)
});
})
}
const clearTracker = (tracker, resetWounds) => {
getSectionIDs(`${tracker}tracker`, function (ids) {
let tempObject = {}
ids.forEach(id => {
tempObject[`repeating_${tracker}tracker_${id}_isCrossed`] = 'false'
});
if (resetWounds) {
tempObject[`${tracker}Wounds`] = 0
}
setAttrs(tempObject)
})
}
const setTrackerTo = (tracker, toId) => {
clearTracker(tracker, false)
getSectionIDs(`${tracker}tracker`, function (ids) {
let tempObject = {}
ids.forEach(id => {
getAttrs([`repeating_${tracker}tracker_${id}_boxNum`], function (values) {
if (values[`repeating_${tracker}tracker_${id}_boxNum`] <= toId) {
tempObject[`repeating_${tracker}tracker_${id}_isCrossed`] = 'true'
} else {
tempObject[`repeating_${tracker}tracker_${id}_isCrossed`] = 'false'
}
if (values[`repeating_${tracker}tracker_${id}_boxNum`] == toId) {
tempObject[`${tracker}Wounds`] = toId + 1
console.log(tempObject)
setAttrs(tempObject)
}
})
})
})
}
on('clicked:testBox', function() {
renderHealthBoxes()
})
on('clicked:clearBoxes', function() {
clearAllHealthBoxes()
})
on('clicked:repeating_physicaltracker:check-phys', function (ev) {
getAttrs(['repeating_physicaltracker_boxNum', 'repeating_physicaltracker_isCrossed', 'physicalWounds'], function (values) {
let _isCrossed = values.repeating_physicaltracker_isCrossed
let _boxId = values.repeating_physicaltracker_boxNum
let _physicalWounds = values.physicalWounds
if (_isCrossed === 'false') {
setTrackerTo('physical', _boxId)
} else if (_physicalWounds - 1 != _boxId) {
setTrackerTo('physical', _boxId)
} else {
clearTracker('physical', true)
}
})})