Merge pull request #1 from vaporvee/js-rewrite

fixed the first line bug after js rewrite
This commit is contained in:
Yannik
2023-05-29 20:38:55 +02:00
committed by GitHub
2 changed files with 50 additions and 36 deletions

View File

@@ -3,67 +3,79 @@ var typeindex = 0;
var dlgPointer = 0; var dlgPointer = 0;
var dlgFile; var dlgFile;
let dlgLines; let dlgLines;
var skipDlg = false;
var answers; var answers;
var keys; var keys;
//BUG: You cant put anything other than a string at the beginning of a dialogue array
function load() { function load() {
fetch("text_horror/dialogue.json") fetch("text_horror/dialogue.json")
.then(Response => Response.json()) .then(Response => Response.json())
.then(data => { .then(data => {
dlgFile = data; dlgFile = data;
changeDlg("start"); changeDlg("start");
}) skipDlg = true;
nextDlg(false);
});
} }
function changeDlg(dlgKey) { function changeDlg(dlgKey) {
dlgPointer = 0; 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; typeindex = 0;
dlgLines = dlgFile[dlgKey];
document.getElementById("dlg-text").innerHTML = ""; document.getElementById("dlg-text").innerHTML = "";
typeWriter(); typeWriter();
} }
function 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); document.getElementById("dlg-text").innerHTML += dlgLines[dlgPointer].charAt(typeindex);
typeindex++; typeindex++;
document.getElementById("triangle").hidden = document.getElementById("dlg-text").innerHTML.length != dlgLines[dlgPointer].length setTimeout(typeWriter, speed);
setTimeout(typeWriter, speed); //loops because of running "typeWriter" after waiting
} }
} }
function nextDlg() { function nextDlg(dlgPointerIncrease = true) {
document.getElementById("triangle").hidden = true; if (document.getElementById("dlg-text").innerHTML.length == dlgLines[dlgPointer].length || skipDlg) {
if (document.getElementById("dlg-text").innerHTML.length == dlgLines[dlgPointer].length) { //check if text is typed out skipDlg = false;
if (dlgPointer < dlgLines.length - 1) { //check if dlgPointer is not at the array end if (dlgPointerIncrease)
do { dlgPointer++
dlgPointer++; if (dlgPointer < dlgLines.length) {
if (typeof dlgLines[dlgPointer] === 'number') if (typeof dlgLines[dlgPointer] === 'number') {
speed = 50 / dlgLines[dlgPointer]; 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') { else if (typeof dlgLines[dlgPointer] === 'object') {
document.getElementById("answer-box").hidden = false; document.getElementById("answer-box").hidden = false;
document.getElementById("bubble").onclick = null; document.getElementById("bubble").onclick = null;
answers = document.getElementsByClassName("answer"); answers = document.getElementsByClassName("answer");
keys = Object.keys(dlgLines[dlgPointer]); 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? for (let j = 0; j < keys.length; j++) {
answers.item(j).innerHTML = keys[j]; answers.item(j).innerHTML = keys[j];
} }
break;
}
else if (typeof dlgLines[dlgPointer] === 'string' && dlgLines[dlgPointer].startsWith("_")) {
if (dlgLines[dlgPointer].split(":")[0] === "_title")
document.getElementById("title").innerHTML = dlgLines[dlgPointer].split(':')[1];
} }
} }
while (!(typeof dlgLines[dlgPointer] === 'string') || dlgLines[dlgPointer].startsWith("_")) //again if it's not string else {
if (typeof dlgLines[dlgPointer] === 'string') {
typeindex = 0;
document.getElementById("dlg-text").innerHTML = "";
typeWriter();
}
} else {
document.getElementById("bubble").hidden = true; document.getElementById("bubble").hidden = true;
document.getElementById("answer-box").hidden = true; document.getElementById("answer-box").hidden = true;
} }
@@ -75,7 +87,9 @@ function answered(answerId) {
document.getElementById("bubble").addEventListener("click", nextDlg); document.getElementById("bubble").addEventListener("click", nextDlg);
document.getElementById("answer-box").hidden = true; document.getElementById("answer-box").hidden = true;
changeDlg(document.getElementById(answerId).innerHTML); 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 = ""; answers.item(j).innerHTML = "";
} }
} }

View File

@@ -1,7 +1,6 @@
{ {
"start": [ "start": [
"Hello welcome to TextHorror!", "Hello welcome to TextHorror!",
"_title:Spitzkopf",
"This is the second line", "This is the second line",
0.3, 0.3,
"This text is slow", "This text is slow",
@@ -17,6 +16,7 @@
} }
], ],
"Also Yes": [ "Also Yes": [
"_title:Spitzkopf",
"That was a weird answer... Is anything wrong with you?", "That was a weird answer... Is anything wrong with you?",
{ {
"Yes my name is Peter": [ "Yes my name is Peter": [