From 82578b37685e7dd903991c3a211e7ba425eb2f8f Mon Sep 17 00:00:00 2001 From: Yannik <80621863+vaporvee@users.noreply.github.com> Date: Fri, 23 Jun 2023 14:59:45 +0200 Subject: [PATCH] added fight system --- index.html | 22 +++---- text_horror/app.js | 161 +++++++++++++++++++++++++++++---------------- 2 files changed, 115 insertions(+), 68 deletions(-) diff --git a/index.html b/index.html index 060acaf..9882761 100644 --- a/index.html +++ b/index.html @@ -11,6 +11,17 @@ +

@@ -21,17 +32,6 @@

-

Danke fürs spielen!

diff --git a/text_horror/app.js b/text_horror/app.js index a782508..e0c8b36 100644 --- a/text_horror/app.js +++ b/text_horror/app.js @@ -1,20 +1,20 @@ -var speed = 50; -var typeindex = 0; -var dlgPointer = 0; -var dlgFile; -var dlgKeyMain = "main"; -let dlgLines; -var skipDlg = false; -var answers; -var keys; -var allowNextDlg = true; -var voice; -var playerName; -var enemyHealth = 0; -var enemyDamage = 1; -var health = 25; -var weaponName = "Fäuste"; -var weaponDamage = 1; +var speed = 50 +var typeindex = 0 +var dlgPointer = 0 +var dlgFile +var dlgKeyMain = "main" +let dlgLines +var skipDlg = false +var answers +var keys +var allowNextDlg = true +var voice +var playerName +var enemyHealth = 0, enemyDamage = 1, enemyStartsHit = false; +var health = 25 +var weaponName = "Fäuste", continueCount = true +let weaponDamage = 1 +var counttx = 0, countup = true; //TODO //simple fights @@ -29,10 +29,10 @@ function load() { fetch("text_horror/dialogue.json") //Load json file here .then(Response => Response.json()) .then(data => { - dlgFile = data; - changeDlg(dlgKeyMain); //Set "start" key from dialogue.json - skipDlg = true; //Allow skipping to next dialogue - nextDlg(false); //Skip to first + dlgFile = data + changeDlg(dlgKeyMain) //Set "start" key from dialogue.json + skipDlg = true //Allow skipping to next dialogue + nextDlg(false) //Skip to first }); } @@ -47,23 +47,23 @@ function changeDlg(dlgKey) { } function updateDlg() { - typeindex = 0; - document.getElementById("dlg-text").innerHTML = ""; - document.getElementById("triangle").hidden = true; - typeWriter(); + typeindex = 0 + document.getElementById("dlg-text").innerHTML = "" + document.getElementById("triangle").hidden = true + typeWriter() } function typeWriter() { if (typeindex < dlgLines[dlgPointer].length) { - document.getElementById("dlg-text").innerHTML += dlgLines[dlgPointer].charAt(typeindex); + document.getElementById("dlg-text").innerHTML += dlgLines[dlgPointer].charAt(typeindex) if (voice != null && typeindex % 3 == 1) { - voice.load(); - voice.play(); + voice.load() + voice.play() } typeindex++; - setTimeout(typeWriter, speed); + setTimeout(typeWriter, speed) } else if (allowNextDlg) - document.getElementById("triangle").hidden = false; + document.getElementById("triangle").hidden = false } function nextDlg(dlgPointerIncrease = true) { @@ -74,7 +74,7 @@ function nextDlg(dlgPointerIncrease = true) { dlgPointer++ if (dlgPointer < dlgLines.length) { if (typeof dlgLines[dlgPointer] === 'number') { - speed = 50 / dlgLines[dlgPointer]; + speed = 50 / dlgLines[dlgPointer] skipDlg = true nextDlg(); } @@ -82,22 +82,22 @@ function nextDlg(dlgPointerIncrease = true) { if (dlgLines[dlgPointer].startsWith("_")) { skipDlg = true if (dlgLines[dlgPointer].split(":")[0] === "_title") { - document.getElementById("title").innerHTML = dlgLines[dlgPointer].split(':')[1]; + document.getElementById("title").innerHTML = dlgLines[dlgPointer].split(':')[1] nextDlg(); } else if (dlgLines[dlgPointer].split(":")[0] === "_voice") { if (dlgLines[dlgPointer].split(':')[1].length != 0) - voice = new Audio("text_horror/assets/voices/" + dlgLines[dlgPointer].split(':')[1] + ".wav"); + voice = new Audio("text_horror/assets/voices/" + dlgLines[dlgPointer].split(':')[1] + ".wav") else - voice = null; + voice = null nextDlg(); } else if (dlgLines[dlgPointer].split(":")[0] === "_playsound") { var sound if (dlgLines[dlgPointer].split(':')[1].length != 0) { - sound = new Audio("text_horror/assets/sounds/" + dlgLines[dlgPointer].split(':')[1] + ".wav"); - sound.load(); - sound.play(); + sound = new Audio("text_horror/assets/sounds/" + dlgLines[dlgPointer].split(':')[1] + ".wav") + sound.load() + sound.play() } else sound = null; @@ -113,6 +113,7 @@ function nextDlg(dlgPointerIncrease = true) { else if (dlgLines[dlgPointer].split(":")[0] === "_weapon") { weaponName = dlgLines[dlgPointer].split(':')[1] weaponDamage = dlgLines[dlgPointer].split(':')[2] + console.log(weaponDamage) nextDlg(); } else if (dlgLines[dlgPointer].split(":")[0] === "_enemy") { @@ -120,50 +121,96 @@ function nextDlg(dlgPointerIncrease = true) { document.getElementById("enemy-texture").src = "text_horror/assets/textures/" + dlgLines[dlgPointer].split(":")[2] + ".png" enemyHealth = dlgLines[dlgPointer].split(":")[3] enemyDamage = dlgLines[dlgPointer].split(":")[4] + countWeaponDamage() document.getElementById("enemy-health").innerHTML = enemyHealth document.getElementById("weapon").innerHTML = weaponName - document.getElementById("weapon-damage").innerHTML = weaponDamage document.getElementById("health").innerHTML = health document.getElementById("fight").style.visibility = "unset" document.getElementById("dlg-text").innerHTML = "" - document.getElementById("bubble").hidden = true; - document.getElementById("answer-box").hidden = true; - document.getElementById("triangle").hidden = true; + document.getElementById("bubble").hidden = true + document.getElementById("answer-box").hidden = true + document.getElementById("triangle").hidden = true } } else updateDlg(); } else if (typeof dlgLines[dlgPointer] === 'object') { allowNextDlg = false; - document.getElementById("triangle").hidden = true; - document.getElementById("answer-box").hidden = false; - answers = document.getElementsByClassName("answer"); - keys = Object.keys(dlgLines[dlgPointer]); + document.getElementById("triangle").hidden = true + document.getElementById("answer-box").hidden = false + answers = document.getElementsByClassName("answer") + keys = Object.keys(dlgLines[dlgPointer]) for (let j = 0; j < keys.length; j++) { - answers.item(j).innerHTML = keys[j]; + answers.item(j).innerHTML = keys[j] } } } else { - document.getElementById("bubble").hidden = true; - document.getElementById("answer-box").hidden = true; - document.getElementById("triangle").hidden = true; + document.getElementById("bubble").hidden = true + document.getElementById("answer-box").hidden = true + document.getElementById("triangle").hidden = true } } } function answered(answerId) { - dlgFile = dlgLines[dlgPointer]; - document.getElementById("answer-box").hidden = true; - changeDlg(document.getElementById(answerId).innerHTML); - allowNextDlg = true; - skipDlg = true; - nextDlg(false); + dlgFile = dlgLines[dlgPointer] + document.getElementById("answer-box").hidden = true + changeDlg(document.getElementById(answerId).innerHTML) + allowNextDlg = true + skipDlg = true + nextDlg(false) for (let j = 0; j < keys.length; j++) { - answers.item(j).innerHTML = ""; + answers.item(j).innerHTML = "" } } function fight() { + continueCount = false + if (!enemyStartsHit) { + if (!continueCount) { + enemyStartsHit = true + setTimeout(() => { + enemyHealth = enemyHealth - counttx + if (enemyHealth < 1) { + setTimeout(() => { + document.getElementById("fight").style.visibility = "hidden" + document.getElementById("bubble").hidden = false + document.getElementById("triangle").hidden = false + nextDlg() + }, 1000) + } + document.getElementById("enemy-health").innerHTML = enemyHealth + document.getElementById("weapon-damage").innerHTML = weaponDamage + setTimeout(() => { + health = health - enemyDamage + document.getElementById("health").innerHTML = health + if (health > 0) { + enemyStartsHit = false + continueCount = true + countWeaponDamage() + } + else + setTimeout(() => { document.getElementById("fight").style.visibility = "hidden" }, 1000) + }, 2000) + }, 100) + } else + countWeaponDamage() + } +} -} \ No newline at end of file +function countWeaponDamage() { + if (countup) { + ++counttx; + if (counttx >= weaponDamage) + countup = false; + } + else { + --counttx; + if (counttx <= 0) + countup = true; + } + document.getElementById("weapon-damage").innerHTML = counttx + if (continueCount) + setTimeout(countWeaponDamage, 100) +}