From d81fbc1b30893b89e109916d20ae0909a2d53fcf Mon Sep 17 00:00:00 2001 From: ReznoRMichael Date: Sat, 5 Sep 2020 02:25:25 +0200 Subject: [PATCH] CheckHintsTrue() --- HKCheckCompletion.js | 132 ++++++++++++++++++++++++++++++++++++++++++- loadJson.js | 1 + style.css | 2 +- 3 files changed, 133 insertions(+), 2 deletions(-) diff --git a/HKCheckCompletion.js b/HKCheckCompletion.js index 2499b99..38e2643 100644 --- a/HKCheckCompletion.js +++ b/HKCheckCompletion.js @@ -331,6 +331,9 @@ function HKCheckCompletion(jsonObject) { // start benchmark let countBegin = new Date(); + // Always hide and uncheck the Hints checkbox by default, prevents wrong checkbox behaviour + CheckboxHintsToggle("hide"); + // Pre-Cleaning and filling initial data PrefillHTML(DIV_ID); @@ -481,6 +484,10 @@ function HKCheckCompletion(jsonObject) { } // end for (let i in HKPlayerData) + // ---------------- Hints --------------------- // + + CheckHintsTrue(DIV_ID.hints, HK_HINTS_temp, HKPlayerData, HKWorldItems); + // Outside playerData checks // ---------------- Gruz Mother and Mawlek (World Map) --------------------- // @@ -614,7 +621,7 @@ function CheckWorldDataTrue(divId, idText, dataObject, worldData) { } // Search for completed items and mark them for display - for (let i = 0; i < worldData.length; i++) { + for (let i = 0, length = worldData.length; i < length; i++) { for (let j = 0; j < size; j++) { if (worldData[i].id === idText && worldData[i].sceneName === orderedArray[j][0] && worldData[i].activated === true) { orderedArray[j][3] = true; @@ -630,6 +637,125 @@ function CheckWorldDataTrue(divId, idText, dataObject, worldData) { } } +function CheckHintsTrue(divId, dataObject, playerData, worldData) { + + let initialSize = document.getElementById(divId.id).innerHTML.length; + + for (let i in dataObject) { + CurrentDataFalse(); + + for (let j in playerData) { + if (i === j) { + if (playerData[i] === true) { + CurrentDataTrue(); + // FillHTML(divId, dataObject[i][0], dataObject[i][1]); + delete dataObject[i]; + } else if (i === "fireballLevel") { + if (playerData[i] >= 1) { + CurrentDataTrue(); + // FillHTML(divId, dataObject[i][0], dataObject[i][1]); + delete dataObject[i]; + } else { + CurrentDataFalse(); + FillHTML(divId, dataObject[i][0], dataObject[i][1]); + delete dataObject[i]; + } + } else { + CurrentDataFalse(); + FillHTML(divId, dataObject[i][0], dataObject[i][1]); + delete dataObject[i]; + } + } + } + + if (i === "Crossroads_04") { + for (let k = 0, length = worldData.length; k < length; k++) { + if (worldData[k].id === "Battle Scene" && worldData[k].sceneName === "Crossroads_04" && worldData[k].activated === true) { + CurrentDataTrue(); + // FillHTML(divId, dataObject[i][0], dataObject[i][1]); + delete dataObject[i]; + break; + } + } + if (completionSymbol === SYMBOL_FALSE) { + FillHTML(divId, dataObject[i][0], dataObject[i][1]); + delete dataObject[i]; + } + } + + if (i === "dungDefenderOrHornet2") { + for (let k in playerData) { + if (k === "defeatedDungDefender") { + if (playerData[k] === true) { + CurrentDataTrue(); + // FillHTML(divId, dataObject[i][0], dataObject[i][1]); + delete dataObject[i]; + break; + } + } else if (k === "hornetOutskirtsDefeated") { + if (playerData[k] === true) { + CurrentDataTrue(); + // FillHTML(divId, dataObject[i][0], dataObject[i][1]); + delete dataObject[i]; + break; + } else { + CurrentDataFalse(); + FillHTML(divId, dataObject[i][0], dataObject[i][1]); + delete dataObject[i]; + break; + } + } + } + } + + if (i === "ismaTearOrShadeCloak") { + for (let k in playerData) { + if (k === "hasAcidArmour") { + if (playerData[k] === true) { + CurrentDataTrue(); + // FillHTML(divId, dataObject[i][0], dataObject[i][1]); + delete dataObject[i]; + break; + } + } else if (k === "hasKingsBrand") { + if (playerData[k] === true) { + for (let l in playerData) { + if (l === "hasShadowDash") { + if (playerData[l] === true) { + CurrentDataTrue(); + // FillHTML(divId, dataObject[i][0], dataObject[i][1]); + delete dataObject[i]; + break; + } else { + CurrentDataFalse(); + FillHTML(divId, dataObject[i][0], dataObject[i][1]); + delete dataObject[i]; + break; + } + } + } + } else { + CurrentDataFalse(); + FillHTML(divId, dataObject[i][0], dataObject[i][1]); + delete dataObject[i]; + break; + } + } + } + } + + if (completionSymbol === SYMBOL_FALSE) { + break; + } + } // end for (let i in dataObject) + + let afterSize = document.getElementById(divId.id).innerHTML.length; + + if (afterSize === initialSize) { + FillHTML(divId, "", "...a successful player who doesn't need these hints anymore"); + } +} + /** * Pre-Cleans HTML. Reads contents inside text area and parses it to a JavaScript object. If not empty, runs HKCheckCompletion() to check data. */ @@ -715,6 +841,10 @@ function InitialHTMLPopulate(divIdObj) { } } +/** + * Toggles display of "hk-hints". On click or when called with a parameter + * @param {string} param "hide", "show" or none (optional) + */ function CheckboxHintsToggle(param) { let checkboxId = document.getElementById("checkbox-hints"); diff --git a/loadJson.js b/loadJson.js index fe5b6b3..920a6d9 100644 --- a/loadJson.js +++ b/loadJson.js @@ -5,6 +5,7 @@ var fileName = [ "reznor2aftergruz.json", "reznor5hornet.json", "reznor29ss.json", + "ext48.json", "reznor88banish.json", "reznor100.json", "reznor103ss.json", diff --git a/style.css b/style.css index edd3064..15bf661 100644 --- a/style.css +++ b/style.css @@ -58,7 +58,7 @@ h1 { outline-offset: -2px; } #hk-hints { - /* display: none */; + display: none; } h2 { margin: 0.6rem 0;