From 77abbf5a4a36757acdc6552fb3bb1c1027a5c170 Mon Sep 17 00:00:00 2001 From: Yannik <80621863+vaporvee@users.noreply.github.com> Date: Mon, 29 May 2023 20:38:24 +0200 Subject: [PATCH] fixed the first line bug after js rewrite --- text_horror/app.js | 84 +++++++++++++++++++++++---------------- text_horror/dialogue.json | 2 +- 2 files changed, 50 insertions(+), 36 deletions(-) diff --git a/text_horror/app.js b/text_horror/app.js index 5cbd571..5d12d0d 100644 --- a/text_horror/app.js +++ b/text_horror/app.js @@ -3,67 +3,79 @@ var typeindex = 0; var dlgPointer = 0; var dlgFile; let dlgLines; +var skipDlg = false; var answers; var keys; -//BUG: You cant put anything other than a string at the beginning of a dialogue array - function load() { fetch("text_horror/dialogue.json") .then(Response => Response.json()) .then(data => { dlgFile = data; changeDlg("start"); - }) + skipDlg = true; + nextDlg(false); + }); } function changeDlg(dlgKey) { dlgPointer = 0; + if (typeof dlgFile[dlgKey] === "string") { + var oneline = [dlgFile[dlgKey]] + dlgLines = oneline + } + else if (Array.isArray(dlgFile[dlgKey])) + dlgLines = dlgFile[dlgKey] + +} + +function updateDlg() { + console.log(dlgLines[dlgPointer]); typeindex = 0; - dlgLines = dlgFile[dlgKey]; document.getElementById("dlg-text").innerHTML = ""; typeWriter(); } function typeWriter() { - if (document.getElementById("dlg-text").innerHTML.length < dlgLines[dlgPointer].length) { + if (typeindex < dlgLines[dlgPointer].length) { document.getElementById("dlg-text").innerHTML += dlgLines[dlgPointer].charAt(typeindex); typeindex++; - document.getElementById("triangle").hidden = document.getElementById("dlg-text").innerHTML.length != dlgLines[dlgPointer].length - setTimeout(typeWriter, speed); //loops because of running "typeWriter" after waiting + setTimeout(typeWriter, speed); } } -function nextDlg() { - document.getElementById("triangle").hidden = true; - if (document.getElementById("dlg-text").innerHTML.length == dlgLines[dlgPointer].length) { //check if text is typed out - if (dlgPointer < dlgLines.length - 1) { //check if dlgPointer is not at the array end - do { - dlgPointer++; - if (typeof dlgLines[dlgPointer] === 'number') - speed = 50 / dlgLines[dlgPointer]; - else if (typeof dlgLines[dlgPointer] === 'object') { - document.getElementById("answer-box").hidden = false; - document.getElementById("bubble").onclick = null; - answers = document.getElementsByClassName("answer"); - keys = Object.keys(dlgLines[dlgPointer]); - for (let j = 0; j < keys.length; j++) { //why is the length one smaller? Does javascript make any sense someday? - answers.item(j).innerHTML = keys[j]; - } - break; - } - else if (typeof dlgLines[dlgPointer] === 'string' && dlgLines[dlgPointer].startsWith("_")) { - if (dlgLines[dlgPointer].split(":")[0] === "_title") +function nextDlg(dlgPointerIncrease = true) { + if (document.getElementById("dlg-text").innerHTML.length == dlgLines[dlgPointer].length || skipDlg) { + skipDlg = false; + if (dlgPointerIncrease) + dlgPointer++ + if (dlgPointer < dlgLines.length) { + if (typeof dlgLines[dlgPointer] === 'number') { + speed = 50 / dlgLines[dlgPointer]; + skipDlg = true + nextDlg(); + } + else if (typeof dlgLines[dlgPointer] === 'string') { + if (dlgLines[dlgPointer].startsWith("_")) { + skipDlg = true + if (dlgLines[dlgPointer].split(":")[0] === "_title") { document.getElementById("title").innerHTML = dlgLines[dlgPointer].split(':')[1]; + nextDlg(); + } + } else + updateDlg(); + } + else if (typeof dlgLines[dlgPointer] === 'object') { + document.getElementById("answer-box").hidden = false; + document.getElementById("bubble").onclick = null; + answers = document.getElementsByClassName("answer"); + keys = Object.keys(dlgLines[dlgPointer]); + for (let j = 0; j < keys.length; j++) { + answers.item(j).innerHTML = keys[j]; } } - while (!(typeof dlgLines[dlgPointer] === 'string') || dlgLines[dlgPointer].startsWith("_")) //again if it's not string - if (typeof dlgLines[dlgPointer] === 'string') { - typeindex = 0; - document.getElementById("dlg-text").innerHTML = ""; - typeWriter(); - } - } else { + } + else { document.getElementById("bubble").hidden = true; document.getElementById("answer-box").hidden = true; } @@ -75,7 +87,9 @@ function answered(answerId) { document.getElementById("bubble").addEventListener("click", nextDlg); document.getElementById("answer-box").hidden = true; changeDlg(document.getElementById(answerId).innerHTML); - for (let j = 0; j < keys.length; j++) { //why is the length one smaller? Does javascript make any sense someday? + skipDlg = true; + nextDlg(false); + for (let j = 0; j < keys.length; j++) { answers.item(j).innerHTML = ""; } } \ No newline at end of file diff --git a/text_horror/dialogue.json b/text_horror/dialogue.json index 72a61e3..77a5f32 100644 --- a/text_horror/dialogue.json +++ b/text_horror/dialogue.json @@ -1,7 +1,6 @@ { "start": [ "Hello welcome to TextHorror!", - "_title:Spitzkopf", "This is the second line", 0.3, "This text is slow", @@ -17,6 +16,7 @@ } ], "Also Yes": [ + "_title:Spitzkopf", "That was a weird answer... Is anything wrong with you?", { "Yes my name is Peter": [