began checkpoint system

This commit is contained in:
Yannik
2023-06-23 16:28:41 +02:00
parent 563599dcef
commit ce5fe2d296

View File

@@ -1,19 +1,19 @@
var speed = 50 var speed = 50;
var typeindex = 0 var typeindex = 0;
var dlgPointer = 0 var dlgPointer = localStorage.getItem("dlgPointer");
var dlgFile var dlgFile;
var dlgKeyMain = "main" var dlgKeyMain = localStorage.getItem("dlgKeyMain");
let dlgLines let dlgLines;
var skipDlg = false var skipDlg = false;
var answers var answers;
var keys var keys;
var allowNextDlg = true var allowNextDlg = true;
var voice var voice;
var playerName var playerName;
var enemyHealth = 0, enemyDamage = 1, enemyStartsHit = false; var enemyHealth = 0, enemyDamage = 1, enemyStartsHit = false;
var health = 25 var health = 25;
var weaponName = "Fäuste", continueCount = true var weaponName = localStorage.getItem("weaponName"), continueCount = true;
let weaponDamage = 1 var weaponDamage = localStorage.getItem("weaponDamage");
var counttx = 0, countup = true; var counttx = 0, countup = true;
//TODO //TODO
@@ -21,181 +21,191 @@ var counttx = 0, countup = true;
//save file in local storage //save file in local storage
window.addEventListener('contextmenu', (event) => { window.addEventListener('contextmenu', (event) => {
event.preventDefault() event.preventDefault();
speed = 0 speed = 0;
}) })
function load() { function load() {
if (!localStorage.getItem("dlgPointer"))
dlgPointer = 0;
if (!localStorage.getItem("dlgKeyMain"))
dlgKeyMain = "main";
if (!localStorage.getItem("weaponName"))
weaponName = "Fäuste";
if (!localStorage.getItem("weaponDamage"))
weaponDamage = 1;
fetch("text_horror/dialogue.json") //Load json file here fetch("text_horror/dialogue.json") //Load json file here
.then(Response => Response.json()) .then(Response => Response.json())
.then(data => { .then(data => {
dlgFile = data dlgFile = data;
changeDlg(dlgKeyMain) //Set "start" key from dialogue.json changeDlg(dlgKeyMain); //Set "start" key from dialogue.json
skipDlg = true //Allow skipping to next dialogue skipDlg = true; //Allow skipping to next dialogue
nextDlg(false) //Skip to first nextDlg(false); //Skip to first
}); });
} }
function changeDlg(dlgKey) { function changeDlg(dlgKey) {
dlgPointer = 0;
if (typeof dlgFile[dlgKey] === "string") { if (typeof dlgFile[dlgKey] === "string") {
var oneline = [dlgFile[dlgKey]] var oneline = [dlgFile[dlgKey]];
dlgLines = oneline dlgLines = oneline;
} }
else if (Array.isArray(dlgFile[dlgKey])) else if (Array.isArray(dlgFile[dlgKey]))
dlgLines = dlgFile[dlgKey] dlgLines = dlgFile[dlgKey];
} }
function updateDlg() { function updateDlg() {
typeindex = 0 typeindex = 0;
document.getElementById("dlg-text").innerHTML = "" document.getElementById("dlg-text").innerHTML = "";
document.getElementById("triangle").hidden = true document.getElementById("triangle").hidden = true;
typeWriter() typeWriter();
} }
function typeWriter() { function typeWriter() {
if (typeindex < 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);
if (voice != null && typeindex % 3 == 1) { if (voice != null && typeindex % 3 == 1) {
voice.load() voice.load();
voice.play() voice.play();
} }
typeindex++; typeindex++;
setTimeout(typeWriter, speed) setTimeout(typeWriter, speed);
} else if (allowNextDlg) } else if (allowNextDlg)
document.getElementById("triangle").hidden = false document.getElementById("triangle").hidden = false;
} }
function nextDlg(dlgPointerIncrease = true) { function nextDlg(dlgPointerIncrease = true) {
speed = 50 speed = 50;
if (document.getElementById("dlg-text").innerHTML.length == dlgLines[dlgPointer].length && allowNextDlg || skipDlg) { if (document.getElementById("dlg-text").innerHTML.length == dlgLines[dlgPointer].length && allowNextDlg || skipDlg) {
skipDlg = false; skipDlg = false;
if (dlgPointerIncrease) if (dlgPointerIncrease)
dlgPointer++ dlgPointer++;
if (dlgPointer < dlgLines.length) { if (dlgPointer < dlgLines.length) {
if (typeof dlgLines[dlgPointer] === 'number') { if (typeof dlgLines[dlgPointer] === 'number') {
speed = 50 / dlgLines[dlgPointer] speed = 50 / dlgLines[dlgPointer];
skipDlg = true skipDlg = true;
nextDlg(); nextDlg();
} }
else if (typeof dlgLines[dlgPointer] === 'string') { else if (typeof dlgLines[dlgPointer] === 'string') {
if (dlgLines[dlgPointer].startsWith("_")) { if (dlgLines[dlgPointer].startsWith("_")) {
skipDlg = true skipDlg = true;
if (dlgLines[dlgPointer].split(":")[0] === "_title") { if (dlgLines[dlgPointer].split(":")[0] === "_title") {
document.getElementById("title").innerHTML = dlgLines[dlgPointer].split(':')[1] document.getElementById("title").innerHTML = dlgLines[dlgPointer].split(':')[1];
nextDlg(); nextDlg();
} }
else if (dlgLines[dlgPointer].split(":")[0] === "_voice") { else if (dlgLines[dlgPointer].split(":")[0] === "_voice") {
if (dlgLines[dlgPointer].split(':')[1].length != 0) 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 else
voice = null voice = null;
nextDlg(); nextDlg();
} }
else if (dlgLines[dlgPointer].split(":")[0] === "_playsound") { else if (dlgLines[dlgPointer].split(":")[0] === "_playsound") {
var sound var sound;
if (dlgLines[dlgPointer].split(':')[1].length != 0) { if (dlgLines[dlgPointer].split(':')[1].length != 0) {
sound = new Audio("text_horror/assets/sounds/" + dlgLines[dlgPointer].split(':')[1] + ".wav") sound = new Audio("text_horror/assets/sounds/" + dlgLines[dlgPointer].split(':')[1] + ".wav");
sound.load() sound.load();
sound.play() sound.play();
} }
else else
sound = null; sound = null;
nextDlg(); nextDlg();
} }
else if (dlgLines[dlgPointer].split(":")[0] === "_jump") { else if (dlgLines[dlgPointer].split(":")[0] === "_jump") {
dlgKeyMain = dlgLines[dlgPointer].split(':')[1] dlgKeyMain = dlgLines[dlgPointer].split(':')[1];
load() load();
dlgPointer = 0;
} }
else if (dlgLines[dlgPointer].split(":")[0] === "_lock") { else if (dlgLines[dlgPointer].split(":")[0] === "_lock") {
nextDlg(); nextDlg();
} }
else if (dlgLines[dlgPointer].split(":")[0] === "_weapon") { else if (dlgLines[dlgPointer].split(":")[0] === "_weapon") {
weaponName = dlgLines[dlgPointer].split(':')[1] weaponName = dlgLines[dlgPointer].split(':')[1];
weaponDamage = dlgLines[dlgPointer].split(':')[2] weaponDamage = dlgLines[dlgPointer].split(':')[2];
console.log(weaponDamage) console.log(weaponDamage);
nextDlg(); nextDlg();
} }
else if (dlgLines[dlgPointer].split(":")[0] === "_enemy") { else if (dlgLines[dlgPointer].split(":")[0] === "_enemy") {
document.getElementById("enemy-name").innerHTML = dlgLines[dlgPointer].split(":")[1] document.getElementById("enemy-name").innerHTML = dlgLines[dlgPointer].split(":")[1];
document.getElementById("enemy-texture").src = "text_horror/assets/textures/" + dlgLines[dlgPointer].split(":")[2] + ".png" document.getElementById("enemy-texture").src = "text_horror/assets/textures/" + dlgLines[dlgPointer].split(":")[2] + ".png";
enemyHealth = dlgLines[dlgPointer].split(":")[3] enemyHealth = dlgLines[dlgPointer].split(":")[3];
enemyDamage = dlgLines[dlgPointer].split(":")[4] enemyDamage = dlgLines[dlgPointer].split(":")[4];
countWeaponDamage() countWeaponDamage();
document.getElementById("enemy-health").innerHTML = enemyHealth document.getElementById("enemy-health").innerHTML = enemyHealth;
document.getElementById("weapon").innerHTML = weaponName document.getElementById("weapon").innerHTML = weaponName;
document.getElementById("health").innerHTML = health document.getElementById("health").innerHTML = health;
document.getElementById("fight").style.visibility = "unset" document.getElementById("fight").style.visibility = "unset";
document.getElementById("dlg-text").innerHTML = "" document.getElementById("dlg-text").innerHTML = "";
document.getElementById("bubble").hidden = true document.getElementById("bubble").hidden = true;
document.getElementById("answer-box").hidden = true document.getElementById("answer-box").hidden = true;
document.getElementById("triangle").hidden = true document.getElementById("triangle").hidden = true;
} }
} else } else
updateDlg(); updateDlg();
} }
else if (typeof dlgLines[dlgPointer] === 'object') { else if (typeof dlgLines[dlgPointer] === 'object') {
allowNextDlg = false; allowNextDlg = false;
document.getElementById("triangle").hidden = true document.getElementById("triangle").hidden = true;
document.getElementById("answer-box").hidden = false document.getElementById("answer-box").hidden = false;
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++) { for (let j = 0; j < keys.length; j++) {
answers.item(j).innerHTML = keys[j] answers.item(j).innerHTML = keys[j];
} }
} }
} }
else { else {
document.getElementById("bubble").hidden = true document.getElementById("bubble").hidden = true;
document.getElementById("answer-box").hidden = true document.getElementById("answer-box").hidden = true;
document.getElementById("triangle").hidden = true document.getElementById("triangle").hidden = true;
} }
} }
} }
function answered(answerId) { function answered(answerId) {
dlgFile = dlgLines[dlgPointer] dlgFile = dlgLines[dlgPointer];
document.getElementById("answer-box").hidden = true document.getElementById("answer-box").hidden = true;
changeDlg(document.getElementById(answerId).innerHTML) changeDlg(document.getElementById(answerId).innerHTML);
allowNextDlg = true dlgPointer = 0;
skipDlg = true allowNextDlg = true;
nextDlg(false) skipDlg = true;
nextDlg(false);
for (let j = 0; j < keys.length; j++) { for (let j = 0; j < keys.length; j++) {
answers.item(j).innerHTML = "" answers.item(j).innerHTML = "";
} }
} }
function fight() { function fight() {
continueCount = false continueCount = false;
if (!enemyStartsHit) { if (!enemyStartsHit) {
if (!continueCount) { if (!continueCount) {
enemyStartsHit = true enemyStartsHit = true;
setTimeout(() => { setTimeout(() => {
enemyHealth = enemyHealth - counttx enemyHealth = enemyHealth - counttx;
if (enemyHealth < 1) { if (enemyHealth < 1) {
setTimeout(() => { setTimeout(() => {
document.getElementById("fight").style.visibility = "hidden" document.getElementById("fight").style.visibility = "hidden";
document.getElementById("bubble").hidden = false document.getElementById("bubble").hidden = false;
document.getElementById("triangle").hidden = false document.getElementById("triangle").hidden = false;
nextDlg() health = 25;
}, 1000) nextDlg();
}, 1000);
} }
document.getElementById("enemy-health").innerHTML = enemyHealth document.getElementById("enemy-health").innerHTML = enemyHealth
document.getElementById("weapon-damage").innerHTML = weaponDamage document.getElementById("weapon-damage").innerHTML = weaponDamage
setTimeout(() => { setTimeout(() => {
health = health - enemyDamage health = health - enemyDamage
document.getElementById("health").innerHTML = health document.getElementById("health").innerHTML = health;
if (health > 0) { if (health > 0) {
enemyStartsHit = false enemyStartsHit = false;
continueCount = true continueCount = true;
countWeaponDamage() countWeaponDamage();
} }
else else
setTimeout(() => { document.getElementById("fight").style.visibility = "hidden" }, 1000) setTimeout(() => { document.getElementById("fight").style.visibility = "hidden"; }, 1000);
}, 2000) }, 2000);
}, 100) }, 100);
} else } else
countWeaponDamage() countWeaponDamage();
} }
} }
@@ -210,7 +220,7 @@ function countWeaponDamage() {
if (counttx <= 0) if (counttx <= 0)
countup = true; countup = true;
} }
document.getElementById("weapon-damage").innerHTML = counttx document.getElementById("weapon-damage").innerHTML = counttx;
if (continueCount) if (continueCount)
setTimeout(countWeaponDamage, 100) setTimeout(countWeaponDamage, 100);
} }