SR6_Roll20_Sheet/workers/healthTrackerManager.js

150 lines
No EOL
5 KiB
JavaScript

const renderHealthBoxes = () => {
//let physicalBoxes = calculateBoxes('physical')
//let stunBoxes = calculateBoxes('stun')
//let overflowBoxes = calculateBoxes('overflow')
let tempObject = {}
for (let j = 0; j < 12; j++) {
let newRowId = generateRowID()
console.log(`Generating Physical Row Number: ${j}`)
while (tempObject[`repeating_physicaltracker_${newRowId}_boxNum`] != j) {
tempObject[`repeating_physicaltracker_${newRowId}_boxNum`] = j
tempObject[`repeating_physicaltracker_${newRowId}_woundMod`] = Math.trunc(j / 3) * -1
tempObject[`repeating_physicaltracker_${newRowId}_isCrossed`] = 'false'
}
}
for (let j = 0; j < 12; j++) {
let newRowId = generateRowID()
console.log(`Generating Stun Row Number: ${j}`)
while (tempObject[`repeating_stuntracker_${newRowId}_boxNum`] != j) {
tempObject[`repeating_stuntracker_${newRowId}_boxNum`] = j
tempObject[`repeating_stuntracker_${newRowId}_woundMod`] = Math.trunc(j / 3) * -1
tempObject[`repeating_stuntracker_${newRowId}_isCrossed`] = 'false'
}
}
for (let j = 0; j < 12; j++) {
let newRowId = generateRowID()
console.log(`Generating Overflow Row Number: ${j}`)
while (tempObject[`repeating_overflowtracker_${newRowId}_boxNum`] != j) {
tempObject[`repeating_overflowtracker_${newRowId}_boxNum`] = j
tempObject[`repeating_overflowtracker_${newRowId}_woundMod`] = Math.trunc(j / 3) * -1
tempObject[`repeating_overflowtracker_${newRowId}_isCrossed`] = 'false'
}
}
console.log(tempObject)
setAttrs(tempObject)
}
const clearAllHealthBoxes = () => {
getSectionIDs('physicaltracker', function (ids) {
ids.forEach(id => {
removeRepeatingRow(`repeating_physicaltracker_${id}`)
});
})
getSectionIDs('stuntracker', function (ids) {
ids.forEach(id => {
removeRepeatingRow(`repeating_stuntracker_${id}`)
});
})
getSectionIDs('overflowtracker', function (ids) {
ids.forEach(id => {
removeRepeatingRow(`repeating_overflowtracker_${id}`)
});
})
}
const calculateBoxes = (tracker, stat, freeBoxes, woundReduction) => {
let trackerInfo = {}
trackerInfo.tracker = tracker
trackerInfo.startWoundCalc = freeBoxes
trackerInfo.normalBoxes = Math.trunc(stat / 2) + 8 + freeBoxes
}
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
setAttrs(tempObject)
}
})
})
})
}
on('clicked:testBox', function () {
renderHealthBoxes()
})
on('clicked:clearBoxes', function () {
clearAllHealthBoxes()
})
on('clicked:repeating_physicaltracker:check-tracker', 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)
}
})
})
on('clicked:repeating_stuntracker:check-tracker', function (ev) {
getAttrs(['repeating_stuntracker_boxNum', 'repeating_stuntracker_isCrossed', 'stunWounds'], function (values) {
let _isCrossed = values.repeating_stuntracker_isCrossed
let _boxId = values.repeating_stuntracker_boxNum
let _wounds = values.stunWounds
if (_isCrossed === 'false') {
setTrackerTo('stun', _boxId)
} else if (_wounds - 1 != _boxId) {
setTrackerTo('stun', _boxId)
} else {
clearTracker('stun', true)
}
})
})
on('clicked:repeating_overflowtracker:check-tracker', function (ev) {
getAttrs(['repeating_overflowtracker_boxNum', 'repeating_overflowtracker_isCrossed', 'overflowWounds'], function (values) {
let _isCrossed = values.repeating_overflowtracker_isCrossed
let _boxId = values.repeating_overflowtracker_boxNum
let _wounds = values.overflowWounds
if (_isCrossed === 'false') {
setTrackerTo('overflow', _boxId)
} else if (_wounds - 1 != _boxId) {
setTrackerTo('overflow', _boxId)
} else {
clearTracker('overflow', true)
}
})
})