From 31fa8538798453957ff1f45cb6794496bcad2d5b Mon Sep 17 00:00:00 2001 From: FourthStrongest Date: Wed, 28 Feb 2024 12:41:19 -0800 Subject: [PATCH] Added skip button functionality --- index.html | 12 ++++++++- src/css/styles.css | 4 +++ src/js/data/2023-05-01.js | 6 ++--- src/js/main.js | 52 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 70 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index 43abf93..3835d7f 100644 --- a/index.html +++ b/index.html @@ -62,6 +62,8 @@

+ +
@@ -71,9 +73,17 @@
- +
+ + February 28th 2024: + + +
    +
  • Added skip button.
  • +
+ September 3rd 2023: diff --git a/src/css/styles.css b/src/css/styles.css index b10be22..509e3b0 100644 --- a/src/css/styles.css +++ b/src/css/styles.css @@ -147,6 +147,10 @@ body { border: 1px solid #000000; } +.sorter > .skip { + display: none; +} + .options { margin: 1em auto; display: grid; diff --git a/src/js/data/2023-05-01.js b/src/js/data/2023-05-01.js index d2947c0..0554829 100644 --- a/src/js/data/2023-05-01.js +++ b/src/js/data/2023-05-01.js @@ -33,7 +33,7 @@ dataSet[dataSetVersion].options = [ { name: "Xenoblade Chronicles 2", key: "XC2" }, { name: "The Golden Country", key: "TGC" }, { name: "Xenoblade Chronicles 3", key: "XC3" }, - { name: "Future Redeemed", key: "FR"} + { name: "Future Redeemed", key: "FR" } ] }, { @@ -2506,7 +2506,7 @@ dataSet[dataSetVersion].characterData = [ wiki: "https://xenoblade.fandom.com/wiki/Shulk#Future_Redeemed", opts: { role: ["protag", "hero"], - series: ["XC3", "FR"], + series: ["FR"], duplicate: true, } }, @@ -2516,7 +2516,7 @@ dataSet[dataSetVersion].characterData = [ wiki: "https://xenoblade.fandom.com/wiki/Rex#Xenoblade_Chronicles_3:_Future_Redeemed", opts: { role: ["protag", "hero"], - series: ["XC3", "FR"], + series: ["FR"], duplicate: true, } }, diff --git a/src/js/main.js b/src/js/main.js index f9fb730..7779811 100644 --- a/src/js/main.js +++ b/src/js/main.js @@ -63,6 +63,9 @@ function init() { document.querySelector('.left.sort.image').addEventListener('click', () => pick('left')); document.querySelector('.right.sort.image').addEventListener('click', () => pick('right')); + + document.querySelector('.left.sort.skip.button').addEventListener('click', () => skip('left')); + document.querySelector('.right.sort.skip.button').addEventListener('click', () => skip('right')); document.querySelector('.sorting.tie.button').addEventListener('click', () => pick('tie')); document.querySelector('.sorting.undo.button').addEventListener('click', undo); @@ -279,6 +282,8 @@ function start() { document.querySelector('.loading.button').style.display = 'none'; document.querySelectorAll('.sorting.button').forEach(el => el.style.display = 'block'); document.querySelectorAll('.sort.text').forEach(el => el.style.display = 'block'); + document.querySelector('.left.sort.skip.button').style.display = 'block'; + document.querySelector('.right.sort.skip.button').style.display = 'block'; display(); }); } @@ -291,6 +296,8 @@ function display() { const leftChar = characterDataToSort[leftCharIndex]; const rightChar = characterDataToSort[rightCharIndex]; + if (skipCheck(leftChar, rightChar)) return; + const charNameDisp = (name, wiki) => { const charName = reduceTextWidth(name, 'Arial 12.8px', 220); const charTooltip = name !== charName ? name : ''; @@ -319,6 +326,51 @@ function display() { } else { saveProgress('Autosave'); } } +/** + * Check if a character can be skipped. + * + * @param {*} leftChar + * @param {*} rightChar + */ +function skipCheck(leftChar, rightChar) { + if (leftChar.skip && rightChar.skip) { + pick('tie'); + return true; + } else if (leftChar.skip) { + pick ('right'); + return true; + } else if (rightChar.skip) { + pick('left'); + return true; + } + return false; +} + +/** + * Skip character functionality. + * + * @param { 'left'|'right' } type + */ +function skip(type) { + const leftCharIndex = sortedIndexList[leftIndex][leftInnerIndex]; + const rightCharIndex = sortedIndexList[rightIndex][rightInnerIndex]; + const leftChar = characterDataToSort[leftCharIndex]; + const rightChar = characterDataToSort[rightCharIndex]; + + switch(type) { + case 'left': { + leftChar.skip = true; + pick('right'); + break; + } + case 'right': { + rightChar.skip = true; + pick('left'); + break; + } + } +} + /** * Sort between two character choices or tie. *