LUIS DAS ARTIMANHAS - Biblioteca Utilitária


Biblioteca utilitária para criação rápida de itens, receitas e outros protótipos Factorio.. local LDA = require('__LDA-LIB__/init') local PATH = LDA.setBasePath('Quantum-Teleporter')

Internal
5 days ago
2.1
697

g Runtime Music Player GUI (runtime.gui.createMusicPlayer)

Runtime Music Player GUI (runtime.gui.createMusicPlayer)

Tipo de Solicitação:
- [x] Nova Feature / API
- [ ] Melhoria de Função Existente
- [ ] Bugfix / Correção
- [ ] Otimização

Status: Pendente de envio

Estágio do Factorio:
- [ ] data-stage (data.lua)
- [x] runtime (control.lua)
- [ ] settings (settings.lua)

Mod / Projeto Solicitante: Workers & Resources Soviet Republic OST, versão 0.0.5

Função/API Solicitada

Uma API reutilizável de GUI para controlar faixas de música do Factorio por jogador, preferencialmente no módulo runtime.gui.

Assinatura sugerida:

local playerMusicGui = LDARuntime.gui.createMusicPlayer(player, {
    name = "unique_music_player_name",
    tracks = {
        { name = "music-prototype-name", caption = { "locale.track-title" } },
    },
    locale = {
        title = { "locale.window-title" },
        open_tooltip = { "locale.open-tooltip" },
        previous = { "locale.previous" },
        play = { "locale.play" },
        next = { "locale.next" },
    },
})

O componente deve oferecer um botão de abertura, seleção de faixa e ações de reproduzir, anterior e próxima. A seleção e a reprodução devem ser individuais por jogador.

Parâmetros e Tipos

  • player (LuaPlayer, obrigatório): jogador para o qual criar os controles.
  • options.name (string, obrigatório): identificador único do componente e da janela.
  • options.tracks (array, obrigatório): faixas com nome do protótipo (string) e legenda (LocalisedString).
  • options.locale (table, obrigatório): textos localizados do título da janela, tooltip e ações.
  • Opções de janela e de reprodução (table, opcionais): tamanho, posição e parâmetros aceitos por LuaPlayer.play_music.

Retorno Esperado

Um controlador ou descritor do componente com referência à janela/controles e meios documentados para atualizar ou fechar a interface; nil para jogador inválido, seguindo o padrão existente da LDA-LIB.

Necessidade no Mod (Caso de Uso)

Mods que registram faixas ambient-sound precisam oferecer uma forma reutilizável para cada jogador escolher uma faixa e reproduzi-la sem alterar a música dos demais. A montagem de janela, seleção, navegação e despacho de eventos é genérica e pode ser compartilhada entre mods.

Exemplo de Uso Prático

local playerMusicGui = LDARuntime.gui.createMusicPlayer(player, options)

Comportamento em Casos Limite

  • Retornar nil ou erro explícito e documentado para jogador inválido, configuração incorreta ou lista de faixas vazia.
  • Ignorar índices de faixa fora do intervalo sem interromper o runtime.
  • Manter seleção e reprodução isoladas por jogador.
  • Evitar sobrescrever handlers globais de eventos registrados pelo mod consumidor.
  • Lidar com janela destruída/fechada e com jogadores que saem da partida.

Frequência de Execução

  • <input checked disabled type="checkbox"> Sob demanda
  • <input disabled type="checkbox"> Frequente
  • <input disabled type="checkbox"> Execução em massa

Implementação Temporária (Workaround Atual)

Localização: utils/music-player.lua, registrada pelo control.lua. A solução local cria os controles e despacha os eventos até existir uma API oficial.

Compatibilidade e Dependências

  • Factorio: 2.1+
  • LDA-LIB: 0.0.17; versão mínima para a API solicitada ainda a definir.
  • DLC Space Age:
  • <input disabled type="checkbox"> Obrigatório
  • <input disabled type="checkbox"> Opcional
  • <input checked disabled type="checkbox"> Não aplicável

Observações Técnicas

A versão documentada da LDA-LIB já fornece helpers genéricos de janela e busca de elementos, mas não um componente de music player nem um módulo equivalente. A API deve integrar-se ao sistema de eventos da biblioteca sem substituir handlers do mod consumidor.

Histórico de Implementação

  • Versão incorporada: Não disponível.
  • API oficial: Não disponível.
  • Workaround removido: Não.
  • Evidência de solicitação: Não disponível.

New response