From 0fab8ff32da6b01c5bfdd0ed3b13d964e5e83f10 Mon Sep 17 00:00:00 2001 From: ReznoRMichael Date: Sun, 6 Sep 2020 00:41:39 +0200 Subject: [PATCH] add span, hidden class --- HKCheckCompletion.js | 39 +++++++++++++++++++++++++++------------ style.css | 29 ++++++++++++++++++++++++++--- 2 files changed, 53 insertions(+), 15 deletions(-) diff --git a/HKCheckCompletion.js b/HKCheckCompletion.js index cbc3936..c125c55 100644 --- a/HKCheckCompletion.js +++ b/HKCheckCompletion.js @@ -3,6 +3,7 @@ const DATA_UNKNOWN = "Data unknown"; const SYMBOL_FALSE = ""; // "❌ "; const SYMBOL_TRUE = ""; // "✅ "; +const SYMBOL_INFO = ""; // "ℹ "; // ---------------- Variables ----------------- // @@ -320,8 +321,6 @@ const HK_GODMASTER_DOORS = [ ["#4 Pantheon of the Knight", "Godhome"] ]; - - /** * Checks Hollow Knight game completion by analyzing the save file * @param {object} jsonObject Save data in JavaScript Object form @@ -508,7 +507,7 @@ function HKCheckCompletion(jsonObject) { } /** - * Cleans "generated" and fills all HTML elements of ids from a given list + * Cleans "generated" and fills all HTML elements of ids from a given list. Creates only div with id, and h2 with title inside it. * @param {object} jsObj Object with HTML data to fill */ function PrefillHTML(jsObj) { @@ -517,15 +516,18 @@ function PrefillHTML(jsObj) { let h2 = ""; let id = ""; - let mp = ""; + let mp = ""; // max Percent + let cl = ""; // class for (let i in jsObj) { h2 = jsObj[i].h2; id = jsObj[i].id; + (i === "hints") ? cl = " class='hidden'": cl = ""; + mp = " (" + jsObj[i].maxPercent + "%)"; if (!jsObj[i].hasOwnProperty("maxPercent") || i === "intro") mp = ""; - document.getElementById("generated").innerHTML += "
" + "
"; + document.getElementById("generated").innerHTML += "
" + "
"; document.getElementById(id).innerHTML += "

" + h2 + mp + "

"; } } @@ -537,9 +539,20 @@ function PrefillHTML(jsObj) { * @param {string} textSuffix Optional suffix after the main name */ function FillHTML(divId, textPrefix = "Unknown Completion Element: ", textSuffix = "") { + let icon = completionSymbol; + let b = ["", ""]; + if (!textPrefix.length) b = ["", ""]; + + let span = ["", ""]; + if (divId === DIV_ID.hints) { + span[0] = ""; + icon = SYMBOL_INFO; + } + let dash = ""; if (textSuffix.length && textPrefix.length) dash = " — "; - document.getElementById(divId.id).innerHTML += divStart + completionSymbol + "" + textPrefix + "" + dash + textSuffix + divEnd; + + document.getElementById(divId.id).innerHTML += divStart + icon + b[0] + textPrefix + b[1] + span[0] + dash + textSuffix + span[1] + divEnd; } /** @@ -698,8 +711,8 @@ function CheckHintsTrue(divId, dataObject, playerData, worldData) { // FillHTML(divId, dataObject[i][0], dataObject[i][1]); delete dataObject[i]; break; - } else if ((k === "defeatedDungDefender" && playerData[k] === false) - && (k === "hornetOutskirtsDefeated" && playerData[k] === false)) { + } else if ((k === "defeatedDungDefender" && playerData[k] === false) && + (k === "hornetOutskirtsDefeated" && playerData[k] === false)) { CurrentDataFalse(); FillHTML(divId, dataObject[i][0], dataObject[i][1]); delete dataObject[i]; @@ -744,11 +757,13 @@ function CheckHintsTrue(divId, dataObject, playerData, worldData) { } } + // show only the last uncompleted hint if (completionSymbol === SYMBOL_FALSE) { break; } } // end for (let i in dataObject) + // prevents showing hints when player already has seen the credits if (hollowKnightDefeated) { FillHTML(divId, "", "...a successful Knight who doesn't need hints anymore"); } @@ -848,21 +863,21 @@ function CheckboxHintsToggle(param) { switch (param) { case "hide": - document.getElementById("hk-hints").setAttribute("style", "display: none;"); + document.getElementById("hk-hints").classList.add("hidden"); checkboxId.value = "hints-off"; checkboxId.checked = false; break; case "show": - document.getElementById("hk-hints").setAttribute("style", "display: block;"); + document.getElementById("hk-hints").classList.remove("hidden"); checkboxId.value = "hints-on"; checkboxId.checked = true; break; default: if (checkboxId.checked !== true) { - document.getElementById("hk-hints").setAttribute("style", "display: none;"); + document.getElementById("hk-hints").classList.add("hidden"); checkboxId.value = "hints-off"; } else { - document.getElementById("hk-hints").setAttribute("style", "display: block;"); + document.getElementById("hk-hints").classList.remove("hidden"); checkboxId.value = "hints-on"; } break; diff --git a/style.css b/style.css index 9680e45..b29a0a1 100644 --- a/style.css +++ b/style.css @@ -1,3 +1,23 @@ +/* Font license info + +## Font Awesome + + Copyright (C) 2016 by Dave Gandy + + Author: Dave Gandy + License: SIL () + Homepage: http://fortawesome.github.com/Font-Awesome/ + + +## Entypo + + Copyright (C) 2012 by Daniel Bruce + + Author: Daniel Bruce + License: SIL (http://scripts.sil.org/OFL) + Homepage: http://www.entypo.com +*/ + :root { --rt-main: #1e406c; } @@ -60,9 +80,6 @@ h1 { outline: 2px solid #529dff; outline-offset: -2px; } -#hk-hints { - display: none; -} h2 { margin: 0.6rem 0; color: #737373; @@ -71,6 +88,9 @@ p { margin-top: 0.6rem; margin-bottom: 0.6rem; } +.hidden { + display: none; +} .horizontal-line { padding-bottom: 1px; background: linear-gradient(90deg, #e9e9e9 0%, #FFFFFF 75%); @@ -103,6 +123,9 @@ a:hover { .icon-ok-squared { color: #16c60c; } +.icon-info-circled { + color: #0c6cc6; +} .radio, .checkbox { position: relative;