Vovó Ajuda

action.json e pad.json

Cada chave dos dois arquivos que a Vovó lê de uma pasta ou de um zip, gerada do próprio código da Vovó, então sempre corresponde a esta versão. A Vovó confere cada arquivo quando ele chega e o recusa com uma frase dizendo o que está errado; uma chave que ela não conhece passa sem uma palavra, e um editor que lê o schema a sublinha.

Uma chave tem letras minúsculas, dígitos e _, e um nome pode ter também -, cada um com no máximo 32 caracteres.

Para um editor que completa as chaves e sublinha os erros, nomeie o schema no começo do arquivo, como fazem os exemplos. O vovo dev grava o action.schema.json ao lado das partes de uma ação; o código-fonte da Vovó tem os dois na pasta api.

action.json

O manifesto de uma ação: como ela se chama, o que ela ouve, o que pede e o que oferece a quem opera a live. Ele fica ao lado de index.html, style.css, script.js e files/, num pacote ou numa pasta.

{
    "$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 }] }
    ]
}

Condições

Cada gatilho de novo, com as condições que precisam valer todas para ele disparar a ação, como o editor as salva. Um para cada nome em triggers, em qualquer ordem: quando não batem um a um, todas as condições ficam de fora sem uma palavra e cada gatilho dispara com tudo.

Uma condição

Um dos campos do evento comparado com um valor. Textos são comparados sem diferenciar maiúsculas; um número escrito como texto é lido como número.

Controles

O que o pad muda enquanto a ação roda: cada um guardado em vovo.state sob sua chave e contado à ação como o evento control, que ela ouve sem tê-lo na lista.

Configurações

O que quem usa a ação pode mudar sem o código dela, em Personalizar: lido como vovo.settings.<key>, como --vovo-<key> no CSS dela e, para liga ou desliga e uma escolha, como data-vovo-<key> no documento dela. O que é escolhido fica com a ação, e um pacote leva só os padrões. No máximo oito delas são textos.

Configurações: color

Uma cor; o vinho da Vovó, #840926, se a ação não disser outra.

Configurações: number

Um número de um mínimo a um máximo, em passos; o mínimo se a ação não disser outro.

Configurações: toggle

Liga ou desliga; desligado se a ação não disser outra coisa.

Configurações: choice

Uma das opções dela; a primeira se a ação não disser outra.

Configurações: text

Uma linha de texto; vazia se a ação não disser outra.

Configurações: file

Uma imagem, um som ou um vídeo que quem a usa escolhe, com no máximo 50 MB; como a ação vem, um dos arquivos dela, pelo caminho, ou nenhum.

Configurações: font

Uma das fontes do computador, pela família; Segoe UI se a ação não disser outra.

Configurações: camera

Uma das câmeras do computador, que quem usa a ação escolhe em Personalizar, mostrada onde a ação a posiciona (vovo.camera.place, com a permissão camera.show); no máximo quatro. Vem sem nenhuma, então não tem padrão.

Painel

O que a ação mostra a quem opera a live em Painéis, na barra lateral: peças em ordem, cada uma dita pelo seu kind, desenhadas pela Vovó. O que é feito ali chega à ação como o evento panel, que ela ouve sem tê-lo na lista. Uma peça panel começa outro painel, com as peças depois dela até a próxima, e as peças antes da primeira aparecem em todos; um tab divide um painel em seções do mesmo jeito. Os nomes de botões, formulários e botões de uma lista são únicos na ação. Uma ação declara no máximo 24 painéis, cada um com no máximo 40 peças e 12 abas.

Painel: panel

Outro painel começa aqui, com uma entrada própria em Painéis.

Painel: tab

Uma seção do painel: as peças depois dela, até a próxima aba.

Painel: heading

Um título sobre as peças depois dele, que dividem um cartão.

Painel: note

Uma linha dizendo algo.

Painel: control

Um dos controles da ação, mexido aqui como no pad.

Painel: button

Um botão.

Painel: form

Alguns campos e um botão: o que é digitado vai com o aperto, nos values do evento. Um formulário de um campo é digitado no próprio painel.

Campos de um formulário

Cada um uma linha digitada no painel, enviada com o formulário pela sua chave.

Painel: list

Uma lista lida do estado da ação, uma linha para cada item, que podem ser milhares; uma com mais de oito linhas tem busca própria.

Botões de uma lista

Botões em cada linha da lista.

pad.json

Um pacote de botões do pad: um zip ou uma pasta de sons e vídeos, com um pad.json na raiz dizendo os grupos e os botões deles; sem ele, cada pasta é um grupo e cada som ou vídeo um botão com o nome do arquivo. Trazido de novo, ele atualiza o que nomeia e deixa o resto como está.

{
    "$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." }
            ]
        }
    ]
}

Grupos

Um grupo do pad e os botões dele, em ordem.

Botões

Um botão e o que ele faz: a Vovó lê o primeiro destes que encontrar, nesta ordem: sound; video; action com control; action; source com filter, ou scene com source; scene. Um pacote traz no máximo 2.000 botões.