JirkaDellOro / FUDGE_Story

A FUDGE module for the easy development of interactive stories, visual novels and simple adventure games
https://jirkadelloro.github.io/FUDGE_Story/
7 stars 9 forks source link

Klickabfang im Inventar #17

Closed SebiPf closed 3 years ago

SebiPf commented 3 years ago

Eine Funktion die abfängt welches Item im Inventar angeklickt wurde um als Resultat ein Event auszulösen(z.b. eine Variable wird geändert). Also z.b. wenn man ein Trank anklickt wird er benutzt und als Resultat wird eine Variable(Lebenspunkte) um 5 oder so erhöht.

JirkaDellOro commented 3 years ago

Das Inventar liefert dir als "Ergebnis" die verbrauchten Items, die musst Du auswerten. Oder geht es dir darum, dass das Inventar offen bleibt, während Du die Klicks auswertest?

SebiPf commented 3 years ago

Wie werte ich die aus? Ich hab dazu nirgends was gefunden. Das einzige auf das ich gekommen bin wäre was im fudgestory.js zu ändern aber da wollte ich mich erstmal nicht dran wagen.

JirkaDellOro commented 3 years ago

Schau mal was da in der Console rauspurzelt

console.log(await ƒS.Inventory.open());

SebiPf commented 3 years ago

ja gut da wird mir was ausgegeben wie ich das abfang ist aber trotzdem nicht klar und sehr entwicklerfreundlich(intuitiv) ist die Ausgabe auch nicht also ich will ja nicht in jeder Szene die ganze zeit überprüfen ob das gemacht wurde.

JirkaDellOro commented 3 years ago

Nun, es ist ein String-Array der verbrauchten Items, was wäre entwicklerfreundlicher?

Wo öffnest Du das Inventar? Das wäre dann auch der Ort für die Auswertung. Du müsstest deinen Anwendungsfall genauer beschreiben, damit ich erkennen kann, was genau Du brauchst.

Rina14 commented 3 years ago

Genau, der Ort der Auswertung wäre das Inventar. Durch den mit Klick ausgelöstem Konsum des Items werden Events ausgelöst, wie z.B. health+5. Somit wäre das Inventar währenddessen durchgehend geöffnet.

Rina14 commented 3 years ago

& ja, das Inventar wird per Tastendruck geöffnet

JirkaDellOro commented 3 years ago

Somit wäre das Inventar währenddessen durchgehend geöffnet

Das wäre die entscheidende Information, nach der ich gefragt hatte.

Rina14 commented 3 years ago

Jetzt hast Du sie :p

JirkaDellOro commented 3 years ago

Dann würde ich vorschlagen, dass man bei der Item-Definition optional noch einen Handler mitgeben kann, der bei Pointer-Up und Pointer-Down aufgerufen wird. Der empfängt ein Custom-Event mit dem Item-Namen als Datenlast. Dann kann man sich einen Handler bauen und dort machen, was man will, auch während das Inventar geöffnet ist.

SebiPf commented 3 years ago

das hört sich doch gut an

JirkaDellOro commented 3 years ago

Ok, da muss ich mir Gedanken über eine gute Struktur dafür machen. Was habt ihr bislang mit Signalen gemacht? Vielleicht bietet sich das an.

Rina14 commented 3 years ago

Lediglich kurze Verzögerungen eingebaut.

JirkaDellOro commented 3 years ago

Ok, stinknormale Handler passen besser. Ist eingebaut, bitte testen. Beispiel:

    {
      name: "Fudge Item",
      description: "A delicious cube of fudge, adds 10 to your health",
      image: "Images/Fudge_48.png",
      static: false,
      handler: hndItem
    }

  function hndItem(_event: CustomEvent): void {
    console.log(_event);
  }

_event.type kann die Werte pointerUp oder pointerDown haben, den Namen des Items findet man in _event.detail

SebiPf commented 3 years ago

okay also ich hab das jetzt getestet und für meine zwecke funktioniert es perfekt

SamuelKasper commented 3 years ago

Ich glaube, dass der Handler zurzeit nicht optional ist. Ich bekomme einen Error, da ich den Handler nicht verwende. Wäre cool, wenn das noch geändert werden könnte.

Rina14 commented 3 years ago

jetzt ist er optional @JirkaDellOro

JirkaDellOro commented 3 years ago

Ups... vergessen. Danke!