Added Basic Health Tracker Functionality

This commit is contained in:
Sebastian Fischlmayr 2022-10-01 21:33:00 +02:00
parent 0abccf3f48
commit 05a0feab52
Signed by: Maverick
GPG key ID: 6379E413924A4E77
10 changed files with 290 additions and 348 deletions

View file

@ -107,205 +107,17 @@
</div>
<div class="healthBox">
<h2>Damage Tracks</h2>
<div class="healthWrapper">
<h3>Stun</h3>
<h3>Physical</h3>
<h3>Overflow</h3>
<div class="healthContainer stun">
<input class="hidden disp" id="stB0" type="radio" name="attr_stunWounds" value="0" checked="checked">
<label class="healthTrackerBox reset" for="stB0"><span class="woundmodifier"></span></label>
<input class="hidden disp" id="stB1" type="radio" name="attr_stunWounds" value="1">
<label class="healthTrackerBox" for="stB1"><span class="woundmodifier"></span></label>
<input class="hidden disp" id="stB2" type="radio" name="attr_stunWounds" value="2">
<label class="healthTrackerBox" for="stB2"><span class="woundmodifier"></span></label>
<input class="hidden disp" id="stB3" type="radio" name="attr_stunWounds" value="3">
<label class="healthTrackerBox" for="stB3"><span class="woundmodifier">-1</span></label>
<input class="hidden disp" id="stB4" type="radio" name="attr_stunWounds" value="4">
<label class="healthTrackerBox" for="stB4"><span class="woundmodifier">-1</span></label>
<input class="hidden disp" id="stB5" type="radio" name="attr_stunWounds" value="5">
<label class="healthTrackerBox" for="stB5"><span class="woundmodifier">-1</span></label>
<input class="hidden disp" id="stB6" type="radio" name="attr_stunWounds" value="6">
<label class="healthTrackerBox" for="stB6"><span class="woundmodifier">-2</span></label>
<input class="hidden disp" id="stB7" type="radio" name="attr_stunWounds" value="7">
<label class="healthTrackerBox" for="stB7"><span class="woundmodifier">-2</span></label>
<input class="hidden disp" id="stB8" type="radio" name="attr_stunWounds" value="8">
<label class="healthTrackerBox" for="stB8"><span class="woundmodifier">-2</span></label>
<input class="hidden disp" id="stB9" type="radio" name="attr_stunWounds" value="9">
<label class="healthTrackerBox" for="stB9"><span class="woundmodifier">-3</span></label>
<input class="hidden disp" id="stB10" type="radio" name="attr_stunWounds" value="10">
<label class="healthTrackerBox" for="stB10"><span class="woundmodifier">-3</span></label>
<input class="hidden disp" id="stB11" type="radio" name="attr_stunWounds" value="11">
<label class="healthTrackerBox" for="stB11"><span class="woundmodifier">-3</span></label>
<input class="hidden disp" id="stB12" type="radio" name="attr_stunWounds" value="12">
<label class="healthTrackerBox" for="stB12"><span class="woundmodifier">-4</span></label>
<input class="hidden disp" id="stB13" type="radio" name="attr_stunWounds" value="13">
<label class="healthTrackerBox" for="stB13"><span class="woundmodifier">-4</span></label>
<input class="hidden disp" id="stB14" type="radio" name="attr_stunWounds" value="14">
<label class="healthTrackerBox" for="stB14"><span class="woundmodifier">-4</span></label>
<input class="hidden disp" id="stB15" type="radio" name="attr_stunWounds" value="15">
<label class="healthTrackerBox" for="stB15"><span class="woundmodifier">-5</span></label>
<input class="hidden disp" id="stB16" type="radio" name="attr_stunWounds" value="16">
<label class="healthTrackerBox" for="stB16"><span class="woundmodifier">-5</span></label>
<input class="hidden disp" id="stB17" type="radio" name="attr_stunWounds" value="17">
<label class="healthTrackerBox" for="stB17"><span class="woundmodifier">-5</span></label>
<input class="hidden disp" id="stB18" type="radio" name="attr_stunWounds" value="18">
<label class="healthTrackerBox" for="stB18"><span class="woundmodifier">-6</span></label>
<input class="hidden disp" id="stB19" type="radio" name="attr_stunWounds" value="19">
<label class="healthTrackerBox" for="stB19"><span class="woundmodifier">-6</span></label>
<input class="hidden disp" id="stB20" type="radio" name="attr_stunWounds" value="20">
<label class="healthTrackerBox" for="stB20"><span class="woundmodifier">-6</span></label>
<input class="hidden disp" id="stB21" type="radio" name="attr_stunWounds" value="21">
<label class="healthTrackerBox" for="stB21"><span class="woundmodifier">-7</span></label>
<input class="hidden disp" id="stB22" type="radio" name="attr_stunWounds" value="22">
<label class="healthTrackerBox" for="stB22"><span class="woundmodifier">-7</span></label>
<input class="hidden disp" id="stB23" type="radio" name="attr_stunWounds" value="23">
<label class="healthTrackerBox" for="stB23"><span class="woundmodifier">-7</span></label>
<input class="hidden disp" id="stB24" type="radio" name="attr_stunWounds" value="24">
<label class="healthTrackerBox" for="stB24"><span class="woundmodifier">-8</span></label>
<input class="hidden disp" id="stB25" type="radio" name="attr_stunWounds" value="25">
<label class="healthTrackerBox" for="stB25"><span class="woundmodifier">-8</span></label>
<input class="hidden disp" id="stB26" type="radio" name="attr_stunWounds" value="26">
<label class="healthTrackerBox" for="stB26"><span class="woundmodifier">-8</span></label>
<input class="hidden disp" id="stB27" type="radio" name="attr_stunWounds" value="27">
<label class="healthTrackerBox" for="stB27"><span class="woundmodifier">-9</span></label>
<input class="hidden disp" id="stB28" type="radio" name="attr_stunWounds" value="28">
<label class="healthTrackerBox" for="stB28"><span class="woundmodifier">-9</span></label>
<input class="hidden disp" id="stB29" type="radio" name="attr_stunWounds" value="29">
<label class="healthTrackerBox" for="stB29"><span class="woundmodifier">-9</span></label>
</div>
<div class="healthContainer physical">
<input class="hidden disp" id="phB0" type="radio" name="attr_physicalWounds" value="0" checked="checked">
<label class="healthTrackerBox reset" for="phB0"><span class="woundmodifier"></span></label>
<input class="hidden disp" id="phB1" type="radio" name="attr_physicalWounds" value="1">
<label class="healthTrackerBox" for="phB1"><span class="woundmodifier"></span></label>
<input class="hidden disp" id="phB2" type="radio" name="attr_physicalWounds" value="2">
<label class="healthTrackerBox" for="phB2"><span class="woundmodifier"></span></label>
<input class="hidden disp" id="phB3" type="radio" name="attr_physicalWounds" value="3">
<label class="healthTrackerBox" for="phB3"><span class="woundmodifier">-1</span></label>
<input class="hidden disp" id="phB4" type="radio" name="attr_physicalWounds" value="4">
<label class="healthTrackerBox" for="phB4"><span class="woundmodifier">-1</span></label>
<input class="hidden disp" id="phB5" type="radio" name="attr_physicalWounds" value="5">
<label class="healthTrackerBox" for="phB5"><span class="woundmodifier">-1</span></label>
<input class="hidden disp" id="phB6" type="radio" name="attr_physicalWounds" value="6">
<label class="healthTrackerBox" for="phB6"><span class="woundmodifier">-2</span></label>
<input class="hidden disp" id="phB7" type="radio" name="attr_physicalWounds" value="7">
<label class="healthTrackerBox" for="phB7"><span class="woundmodifier">-2</span></label>
<input class="hidden disp" id="phB8" type="radio" name="attr_physicalWounds" value="8">
<label class="healthTrackerBox" for="phB8"><span class="woundmodifier">-2</span></label>
<input class="hidden disp" id="phB9" type="radio" name="attr_physicalWounds" value="9">
<label class="healthTrackerBox" for="phB9"><span class="woundmodifier">-3</span></label>
<input class="hidden disp" id="phB10" type="radio" name="attr_physicalWounds" value="10">
<label class="healthTrackerBox" for="phB10"><span class="woundmodifier">-3</span></label>
<input class="hidden disp" id="phB11" type="radio" name="attr_physicalWounds" value="11">
<label class="healthTrackerBox" for="phB11"><span class="woundmodifier">-3</span></label>
<input class="hidden disp" id="phB12" type="radio" name="attr_physicalWounds" value="12">
<label class="healthTrackerBox" for="phB12"><span class="woundmodifier">-4</span></label>
<input class="hidden disp" id="phB13" type="radio" name="attr_physicalWounds" value="13">
<label class="healthTrackerBox" for="phB13"><span class="woundmodifier">-4</span></label>
<input class="hidden disp" id="phB14" type="radio" name="attr_physicalWounds" value="14">
<label class="healthTrackerBox" for="phB14"><span class="woundmodifier">-4</span></label>
<input class="hidden disp" id="phB15" type="radio" name="attr_physicalWounds" value="15">
<label class="healthTrackerBox" for="phB15"><span class="woundmodifier">-5</span></label>
<input class="hidden disp" id="phB16" type="radio" name="attr_physicalWounds" value="16">
<label class="healthTrackerBox" for="phB16"><span class="woundmodifier">-5</span></label>
<input class="hidden disp" id="phB17" type="radio" name="attr_physicalWounds" value="17">
<label class="healthTrackerBox" for="phB17"><span class="woundmodifier">-5</span></label>
<input class="hidden disp" id="phB18" type="radio" name="attr_physicalWounds" value="18">
<label class="healthTrackerBox" for="phB18"><span class="woundmodifier">-6</span></label>
<input class="hidden disp" id="phB19" type="radio" name="attr_physicalWounds" value="19">
<label class="healthTrackerBox" for="phB19"><span class="woundmodifier">-6</span></label>
<input class="hidden disp" id="phB20" type="radio" name="attr_physicalWounds" value="20">
<label class="healthTrackerBox" for="phB20"><span class="woundmodifier">-6</span></label>
<input class="hidden disp" id="phB21" type="radio" name="attr_physicalWounds" value="21">
<label class="healthTrackerBox" for="phB21"><span class="woundmodifier">-7</span></label>
<input class="hidden disp" id="phB22" type="radio" name="attr_physicalWounds" value="22">
<label class="healthTrackerBox" for="phB22"><span class="woundmodifier">-7</span></label>
<input class="hidden disp" id="phB23" type="radio" name="attr_physicalWounds" value="23">
<label class="healthTrackerBox" for="phB23"><span class="woundmodifier">-7</span></label>
<input class="hidden disp" id="phB24" type="radio" name="attr_physicalWounds" value="24">
<label class="healthTrackerBox" for="phB24"><span class="woundmodifier">-8</span></label>
<input class="hidden disp" id="phB25" type="radio" name="attr_physicalWounds" value="25">
<label class="healthTrackerBox" for="phB25"><span class="woundmodifier">-8</span></label>
<input class="hidden disp" id="phB26" type="radio" name="attr_physicalWounds" value="26">
<label class="healthTrackerBox" for="phB26"><span class="woundmodifier">-8</span></label>
<input class="hidden disp" id="phB27" type="radio" name="attr_physicalWounds" value="27">
<label class="healthTrackerBox" for="phB27"><span class="woundmodifier">-9</span></label>
<input class="hidden disp" id="phB28" type="radio" name="attr_physicalWounds" value="28">
<label class="healthTrackerBox" for="phB28"><span class="woundmodifier">-9</span></label>
<input class="hidden disp" id="phB29" type="radio" name="attr_physicalWounds" value="29">
<label class="healthTrackerBox" for="phB29"><span class="woundmodifier">-9</span></label>
</div>
<div class="healthContainer overflow">
<input class="hidden disp" id="ovB0" type="radio" name="attr_overflowWounds" value="0" checked="checked">
<label class="healthTrackerBox reset" for="ovB0"><span class="woundmodifier"></span></label>
<input class="hidden disp" id="ovB1" type="radio" name="attr_overflowWounds" value="1">
<label class="healthTrackerBox" for="ovB1"><span class="woundmodifier"></span></label>
<input class="hidden disp" id="ovB2" type="radio" name="attr_overflowWounds" value="2">
<label class="healthTrackerBox" for="ovB2"><span class="woundmodifier"></span></label>
<input class="hidden disp" id="ovB3" type="radio" name="attr_overflowWounds" value="3">
<label class="healthTrackerBox" for="ovB3"><span class="woundmodifier">-1</span></label>
<input class="hidden disp" id="ovB4" type="radio" name="attr_overflowWounds" value="4">
<label class="healthTrackerBox" for="ovB4"><span class="woundmodifier">-1</span></label>
<input class="hidden disp" id="ovB5" type="radio" name="attr_overflowWounds" value="5">
<label class="healthTrackerBox" for="ovB5"><span class="woundmodifier">-1</span></label>
<input class="hidden disp" id="ovB6" type="radio" name="attr_overflowWounds" value="6">
<label class="healthTrackerBox" for="ovB6"><span class="woundmodifier">-2</span></label>
<input class="hidden disp" id="ovB7" type="radio" name="attr_overflowWounds" value="7">
<label class="healthTrackerBox" for="ovB7"><span class="woundmodifier">-2</span></label>
<input class="hidden disp" id="ovB8" type="radio" name="attr_overflowWounds" value="8">
<label class="healthTrackerBox" for="ovB8"><span class="woundmodifier">-2</span></label>
<input class="hidden disp" id="ovB9" type="radio" name="attr_overflowWounds" value="9">
<label class="healthTrackerBox" for="ovB9"><span class="woundmodifier">-3</span></label>
<input class="hidden disp" id="ovB10" type="radio" name="attr_overflowWounds" value="10">
<label class="healthTrackerBox" for="ovB10"><span class="woundmodifier">-3</span></label>
<input class="hidden disp" id="ovB11" type="radio" name="attr_overflowWounds" value="11">
<label class="healthTrackerBox" for="ovB11"><span class="woundmodifier">-3</span></label>
<input class="hidden disp" id="ovB12" type="radio" name="attr_overflowWounds" value="12">
<label class="healthTrackerBox" for="ovB12"><span class="woundmodifier">-4</span></label>
<input class="hidden disp" id="ovB13" type="radio" name="attr_overflowWounds" value="13">
<label class="healthTrackerBox" for="ovB13"><span class="woundmodifier">-4</span></label>
<input class="hidden disp" id="ovB14" type="radio" name="attr_overflowWounds" value="14">
<label class="healthTrackerBox" for="ovB14"><span class="woundmodifier">-4</span></label>
<input class="hidden disp" id="ovB15" type="radio" name="attr_overflowWounds" value="15">
<label class="healthTrackerBox" for="ovB15"><span class="woundmodifier">-5</span></label>
<input class="hidden disp" id="ovB16" type="radio" name="attr_overflowWounds" value="16">
<label class="healthTrackerBox" for="ovB16"><span class="woundmodifier">-5</span></label>
<input class="hidden disp" id="ovB17" type="radio" name="attr_overflowWounds" value="17">
<label class="healthTrackerBox" for="ovB17"><span class="woundmodifier">-5</span></label>
<input class="hidden disp" id="ovB18" type="radio" name="attr_overflowWounds" value="18">
<label class="healthTrackerBox" for="ovB18"><span class="woundmodifier">-6</span></label>
<input class="hidden disp" id="ovB19" type="radio" name="attr_overflowWounds" value="19">
<label class="healthTrackerBox" for="ovB19"><span class="woundmodifier">-6</span></label>
<input class="hidden disp" id="ovB20" type="radio" name="attr_overflowWounds" value="20">
<label class="healthTrackerBox" for="ovB20"><span class="woundmodifier">-6</span></label>
<input class="hidden disp" id="ovB21" type="radio" name="attr_overflowWounds" value="21">
<label class="healthTrackerBox" for="ovB21"><span class="woundmodifier">-7</span></label>
<input class="hidden disp" id="ovB22" type="radio" name="attr_overflowWounds" value="22">
<label class="healthTrackerBox" for="ovB22"><span class="woundmodifier">-7</span></label>
<input class="hidden disp" id="ovB23" type="radio" name="attr_overflowWounds" value="23">
<label class="healthTrackerBox" for="ovB23"><span class="woundmodifier">-7</span></label>
<input class="hidden disp" id="ovB24" type="radio" name="attr_overflowWounds" value="24">
<label class="healthTrackerBox" for="ovB24"><span class="woundmodifier">-8</span></label>
<input class="hidden disp" id="ovB25" type="radio" name="attr_overflowWounds" value="25">
<label class="healthTrackerBox" for="ovB25"><span class="woundmodifier">-8</span></label>
<input class="hidden disp" id="ovB26" type="radio" name="attr_overflowWounds" value="26">
<label class="healthTrackerBox" for="ovB26"><span class="woundmodifier">-8</span></label>
<input class="hidden disp" id="ovB27" type="radio" name="attr_overflowWounds" value="27">
<label class="healthTrackerBox" for="ovB27"><span class="woundmodifier">-9</span></label>
<input class="hidden disp" id="ovB28" type="radio" name="attr_overflowWounds" value="28">
<label class="healthTrackerBox" for="ovB28"><span class="woundmodifier">-9</span></label>
<input class="hidden disp" id="ovB29" type="radio" name="attr_overflowWounds" value="29">
<label class="healthTrackerBox" for="ovB29"><span class="woundmodifier">-9</span></label>
</div>
<div class="stunInfo">
<input type="number" name="attr_physicalHealth" disabled="true" value="ceil(@{abilitypool_wil}/2)+8-@{stunWounds}">
</div>
<div class="physicalInfo">
<input type="number" name="attr_physicalHealth" disabled="true" value="ceil(@{abilitypool_bod}/2)+8-@{physicalWounds}">
</div>
<div class="overflowInfo">
<input type="number" name="attr_physicalHealth" disabled="true" value="ceil(@{abilitypool_wil}/2)+8-@{stunWounds}">
</div>
<div class="healthBox">
<button type="action" name="act_testBox" title="%{testBox}" value="2">Add</button>
<button type="action" name="act_clearBoxes" title="%{clearBoxes}" value="1">Remove</button>
<fieldset class="repeating_physicaltracker">
<input type="hidden" name="attr_boxNum" value="0">
<input type="hidden" name="attr_isCrossed" value="false">
<input type="hidden" name="attr_woundMod" value="0">
<button type="action" name="act_check-phys" title="%{checkPhys}" value="3"><span class="woundModDisplay" name="attr_woundMod">0</span>
<div></div>
</button>
</fieldset>
</div>
</div>
<div class="attr-rolls">
@ -376,5 +188,74 @@ on("clicked:toggmroll", function() {
});
});
});
var renderHealthBoxes = function renderHealthBoxes() {
//let physicalBoxes = calculateBoxes('physical')
//let stunBoxes = calculateBoxes('stun')
//let overflowBoxes = calculateBoxes('overflow')
for(var j = 0; j < 12; j++){
var newRowId = generateRowID();
var tempObject = {};
tempObject["repeating_physicaltracker_".concat(newRowId, "_boxNum")] = j;
tempObject["repeating_physicaltracker_".concat(newRowId, "_woundMod")] = Math.trunc(j / 3) * -1;
tempObject["repeating_physicaltracker_".concat(newRowId, "_isCrossed")] = "false";
setAttrs(tempObject);
}
};
var clearAllHealthBoxes = function clearAllHealthBoxes() {
getSectionIDs("physicaltracker", function(ids) {
ids.forEach(function(id) {
removeRepeatingRow("repeating_physicaltracker_".concat(id));
});
});
};
var clearTracker = function clearTracker(tracker, resetWounds) {
getSectionIDs("".concat(tracker, "tracker"), function(ids) {
var tempObject = {};
ids.forEach(function(id) {
tempObject["repeating_".concat(tracker, "tracker_").concat(id, "_isCrossed")] = "false";
});
if (resetWounds) tempObject["".concat(tracker, "Wounds")] = 0;
setAttrs(tempObject);
});
};
var setTrackerTo = function setTrackerTo(tracker, toId) {
clearTracker(tracker, false);
getSectionIDs("".concat(tracker, "tracker"), function(ids) {
var tempObject = {};
ids.forEach(function(id) {
getAttrs([
"repeating_".concat(tracker, "tracker_").concat(id, "_boxNum")
], function(values) {
if (values["repeating_".concat(tracker, "tracker_").concat(id, "_boxNum")] <= toId) tempObject["repeating_".concat(tracker, "tracker_").concat(id, "_isCrossed")] = "true";
else tempObject["repeating_".concat(tracker, "tracker_").concat(id, "_isCrossed")] = "false";
if (values["repeating_".concat(tracker, "tracker_").concat(id, "_boxNum")] == toId) {
tempObject["".concat(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) {
var _isCrossed = values.repeating_physicaltracker_isCrossed;
var _boxId = values.repeating_physicaltracker_boxNum;
var _physicalWounds = values.physicalWounds;
if (_isCrossed === "false") setTrackerTo("physical", _boxId);
else if (_physicalWounds - 1 != _boxId) setTrackerTo("physical", _boxId);
else clearTracker("physical", true);
});
});
</script>