Vovó Hilfe

action.json und pad.json

Jeder Schlüssel der beiden Dateien, die Vovó aus einem Ordner oder einem Zip liest, erzeugt aus Vovós eigenem Code, damit alles immer zu dieser Version passt. Vovó prüft jede Datei, wenn sie hereinkommt, und lehnt sie mit einem Satz ab, der sagt, was falsch ist; einen Schlüssel, den sie nicht kennt, übergeht sie wortlos, und ein Editor, der das Schema liest, unterstreicht ihn.

Ein Schlüssel besteht aus Kleinbuchstaben, Ziffern und _, ein Name darf auch - enthalten, jeweils höchstens 32 Zeichen.

Damit ein Editor die Schlüssel ergänzt und Fehler unterstreicht, nenne das Schema am Anfang der Datei, wie es die Beispiele tun. vovo dev schreibt action.schema.json neben die Teile einer Aktion; Vovós Quellcode hat beide im Ordner api.

action.json

Das Manifest einer Aktion: wie sie heißt, was sie hört, worum sie bittet und was sie der Person bietet, die den Stream führt. Es liegt neben index.html, style.css, script.js und files/, in einem Paket oder einem Ordner.

{
    "$schema": "./action.schema.json",
    "name": "Raffle",
    "id": "example.raffle",
    "version": "1.2.0",
    "api": 1,
    "author": "A maker",
    "site": "https://example.com/raffle",
    "description": "!join in chat joins the wheel; the panel draws the winner.",
    "license": "MIT",
    "triggers": ["chat", "timer"],
    "bindings": [
        { "event": "chat", "filter": [{ "field": "text", "op": "starts", "value": "!join" }] },
        { "event": "timer", "filter": [{ "field": "every", "op": "is", "value": 300 }] }
    ],
    "permissions": ["chat.send"],
    "controls": [
        { "key": "open", "label": "Entries open", "kind": "toggle" },
        { "key": "prize", "label": "Prize", "kind": "text" }
    ],
    "settings": [
        { "key": "color", "label": "Wheel colour", "kind": "color", "default": "#840926" },
        { "key": "size", "label": "Size", "kind": "number", "min": 200, "max": 800, "step": 10, "unit": "px", "default": 420 },
        { "key": "side", "label": "Side", "kind": "choice", "options": ["Left", "Right"], "default": "Right" }
    ],
    "panel": [
        { "kind": "control", "key": "open" },
        { "kind": "control", "key": "prize" },
        { "kind": "form", "name": "add", "label": "Put someone in", "button": "Put", "fields": [{ "key": "who", "label": "Name" }] },
        { "kind": "button", "name": "draw", "label": "Draw", "confirm": true },
        { "kind": "list", "key": "names", "label": "In the wheel", "empty": "Nobody yet", "buttons": [{ "name": "out", "label": "Take out", "confirm": true }] }
    ]
}

Bedingungen

Jeder Auslöser noch einmal, mit den Bedingungen, die alle erfüllt sein müssen, damit er die Aktion auslöst, so wie der Editor sie speichert. Einer für jeden Namen in triggers, in beliebiger Reihenfolge: Passen sie nicht eins zu eins, fallen alle Bedingungen wortlos weg und jeder Auslöser feuert bei allem.

Eine Bedingung

Eines der Felder des Ereignisses, mit einem Wert verglichen. Texte werden ohne Rücksicht auf Groß- und Kleinschreibung verglichen; eine als Text geschriebene Zahl wird als Zahl gelesen.

Steuerelemente

Was das Pad ändert, während die Aktion läuft: jedes unter seinem Schlüssel in vovo.state gespeichert und der Aktion als Ereignis control mitgeteilt, das sie hört, ohne es aufzuführen.

Einstellungen

Was die Person, die die Aktion nutzt, ohne ihren Code ändern darf, unter Anpassen: gelesen als vovo.settings.<key>, als --vovo-<key> in ihrem CSS und, bei an oder aus und einer Wahl, als data-vovo-<key> an ihrem Dokument. Was gewählt wird, bleibt bei der Aktion, und ein Paket trägt nur die Standards. Höchstens acht davon sind Texte.

Einstellungen: color

Eine Farbe; Vovós Weinrot, #840926, wenn die Aktion nichts anderes sagt.

Einstellungen: number

Eine Zahl von einem Minimum bis zu einem Maximum, in Schritten; das Minimum, wenn die Aktion nichts anderes sagt.

Einstellungen: toggle

An oder aus; aus, wenn die Aktion nichts anderes sagt.

Einstellungen: choice

Eine ihrer Optionen; die erste, wenn die Aktion nichts anderes sagt.

Einstellungen: text

Eine Textzeile; leer, wenn die Aktion nichts anderes sagt.

Einstellungen: file

Ein Bild, ein Ton oder ein Video, das die Person, die sie nutzt, wählt, höchstens 50 MB; wie die Aktion kommt, eine ihrer eigenen Dateien, über ihren Pfad, oder keine.

Einstellungen: font

Eine der Schriften des Computers, über ihre Familie; Segoe UI, wenn die Aktion nichts anderes sagt.

Einstellungen: camera

Eine der Kameras des Computers, die wählt, wer die Aktion nutzt, unter Anpassen, gezeigt dort, wo die Aktion sie platziert (vovo.camera.place, mit der Berechtigung camera.show); höchstens vier. Sie kommt ohne, hat also keinen Standard.

Panel

Was die Aktion der Person, die den Stream führt, unter Panels in der Seitenleiste zeigt: Teile in Reihenfolge, jedes durch sein kind bestimmt, von Vovó gezeichnet. Was dort getan wird, erreicht die Aktion als Ereignis panel, das sie hört, ohne es aufzuführen. Ein Teil panel beginnt ein weiteres Panel mit den Teilen danach bis zum nächsten, und die Teile vor dem ersten erscheinen in jedem; ein tab teilt ein Panel ebenso in Abschnitte. Die Namen von Buttons, Formularen und den Buttons einer Liste sind in der Aktion eindeutig. Eine Aktion deklariert höchstens 24 Panels, jedes mit höchstens 40 Teilen und 12 Tabs.

Panel: panel

Hier beginnt ein weiteres Panel, mit einem eigenen Eintrag unter Panels.

Panel: tab

Ein Abschnitt des Panels: die Teile danach bis zum nächsten Tab.

Panel: heading

Eine Überschrift über den folgenden Teilen, die sich eine Karte teilen.

Panel: note

Eine Zeile, die etwas sagt.

Panel: control

Eines der Steuerelemente der Aktion, hier bedient wie auf dem Pad.

Panel: button

Ein Button.

Panel: form

Ein paar Felder und ein Button: Was eingetippt wird, geht mit dem Druck mit, in den values des Ereignisses. Ein Formular mit einem Feld wird direkt im Panel ausgefüllt.

Felder eines Formulars

Jedes eine im Panel eingetippte Zeile, mit dem Formular unter seinem Schlüssel gesendet.

Panel: list

Eine Liste aus dem Zustand der Aktion, eine Zeile je Eintrag, auch Tausende; eine mit mehr als acht Zeilen hat eine eigene Suche.

Buttons einer Liste

Buttons in jeder Zeile der Liste.

pad.json

Ein Paket von Buttons für das Pad: ein Zip oder ein Ordner mit Tönen und Videos, mit pad.json im Stammverzeichnis, das die Gruppen und ihre Buttons angibt; ohne sie ist jeder Ordner eine Gruppe und jeder Ton oder jedes Video ein Button mit dem Namen seiner Datei. Erneut hereingeholt, aktualisiert es, was es nennt, und lässt den Rest, wie er ist.

{
    "$schema": "./pad.schema.json",
    "groups": [
        {
            "name": "Sounds",
            "color": "#2F6FDB",
            "buttons": [
                { "label": "Applause", "icon": "👏", "sound": "sounds/applause.mp3", "favorite": true, "hotkey": "F13" },
                { "label": "Drum roll", "sound": "sounds/drums.ogg", "volume": 130 },
                { "label": "Rain", "video": "videos/rain.mp4", "key": "luma", "loop": true }
            ]
        },
        {
            "name": "Live",
            "buttons": [
                { "label": "Raffle", "action": "Raffle" },
                { "label": "Entries", "action": "Raffle", "control": "open" },
                { "label": "Starting", "scene": "Starting soon" },
                { "label": "Camera", "scene": "Game", "source": "Camera" },
                { "label": "Blur", "source": "Camera", "filter": "Blur" },
                { "label": "One minute", "team": "One minute, then I'm back." }
            ]
        }
    ]
}

Gruppen

Eine Gruppe des Pads und ihre Buttons, in Reihenfolge.

Buttons

Ein Button und was er tut: Vovó liest das Erste davon, das sie findet, in dieser Reihenfolge: sound; video; action mit control; action; source mit filter oder scene mit source; scene. Ein Paket bringt höchstens 2.000 Buttons.