< [Voltar](chapter-6.md) | [Sumário](table-of-contens.md) | [Adiante](chapter-8.md) > # 🖐️ Periférico TOUCH (Sistema de Entrada via ponteiro absoluto) ## 1. Visão Geral O periférico **TOUCH** fornece ao PROMETEU um **ponteiro absoluto**, baseado em coordenadas de tela, destinado a: - interação com UI - seleção direta de elementos - ações contextuais no cenário - mecânicas baseadas em arrasto (drag, slash, trail) O TOUCH é um **periférico de primeira classe**, tão válido quanto D-Pad e botões. --- ## 2. Princípios de Design O TOUCH no PROMETEU segue princípios rígidos: - ✅ **Single-touch universal** - ✅ **Determinístico** - ✅ **Estado por frame** - ✅ **Sem gestos** - ✅ **Sem aceleração** - ✅ **Sem heurística** - ✅ **Mesmo comportamento em todas as plataformas** > Se um comportamento não pode ser garantido em todas as plataformas, ele não existe no PROMETEU. > --- ## 3. Modelo Conceitual O PROMETEU expõe **apenas um ponteiro ativo por vez**, independentemente de quantos toques físicos o hardware reconheça. - Hardware pode detectar multitouch - Runtime seleciona **apenas um toque ativo** - A API **nunca expõe multitouch** Esse modelo garante: - portabilidade total - previsibilidade - ausência de ambiguidades --- ## 4. Espaço de Coordenadas - As coordenadas do TOUCH usam **o mesmo espaço do framebuffer** - Resolução: **320×180** - Origem: canto superior esquerdo `(0,0)` - Intervalos: - `x ∈ [0, 319]` - `y ∈ [0, 179]` O TOUCH é **absoluto**: > (x, y) representa a posição exata do contato, sem transformação dinâmica. > --- ## 5. API do Periférico TOUCH ### 5.1 Estrutura Exposta ``` TOUCH: present : bool down : bool pressed : bool released : bool x : int y : int ``` --- ### 5.2 Semântica dos Campos - **present** - `true` se o periférico TOUCH está disponível - `false` se não houver touch físico (desktop, hardware sem touch) - **down** - `true` enquanto o ponteiro ativo está pressionado - **pressed** - `true` apenas no frame em que o ponteiro ativo foi capturado - **released** - `true` apenas no frame em que o ponteiro ativo foi liberado - **x, y** - posição atual do ponteiro ativo - válidas apenas quando `down == true` --- ## 6. Política de Seleção do Ponteiro ### *Single Pointer Capture Policy* Quando múltiplos toques físicos ocorrem, o PROMETEU aplica a seguinte política: --- ### 6.1 Captura Inicial 1. Se **nenhum ponteiro está ativo** 2. E ocorre um **novo toque físico** 3. O **primeiro toque detectado** é capturado 4. Esse toque se torna o **ponteiro ativo** Esse frame gera: - `pressed = true` - `down = true` --- ### 6.2 Manutenção da Captura Enquanto o ponteiro ativo estiver pressionado: - Apenas ele é rastreado - Todos os outros toques físicos são ignorados - `x, y` seguem apenas o ponteiro ativo --- ### 6.3 Liberação Quando o ponteiro ativo é solto: - `released = true` - `down = false` - O sistema entra em estado **sem ponteiro ativo** --- ### 6.4 Recaptura (Regra Importante) Após a liberação: - Toques que **já estavam presentes** são ignorados - Um novo ponteiro só é capturado com um **novo evento de toque** > Isso evita saltos inesperados do ponteiro e ações acidentais. > --- ## 7. Comportamentos Deliberadamente NÃO Suportados O periférico TOUCH **não implementa**: ❌ Multitouch ❌ Gestos (swipe, pinch, rotate, long-press) ❌ Aceleração ou suavização ❌ Sensibilidade dinâmica ❌ Histórico implícito ❌ Interpretação de intenção Se um jogo quiser qualquer um desses comportamentos, ele deve: - implementar explicitamente - usando apenas estado por frame - sem suporte implícito do hardware --- ## 8. “Sem Gesto” — Definição Formal O PROMETEU **não interpreta padrões temporais**. O periférico TOUCH **não classifica ações** como: - swipe - drag - long press - double tap Ele apenas informa: - posição atual - estado do contato Toda semântica é responsabilidade do jogo. --- ## 9. “Sem Aceleração” — Definição Formal O PROMETEU **não modifica** o input do TOUCH. - Nenhuma curva de sensibilidade - Nenhuma amplificação por velocidade - Nenhuma suavização A relação entre o toque físico e `(x, y)` é **1:1** após normalização. --- ## 10. Integração com Outras Formas de Input - Desktop: - mouse pode emular TOUCH - Mobile: - touch físico direto - Steam Deck: - touchscreen físico - Hardware PROMETEU: - touch opcional, mas suportado Do ponto de vista do PROMETEU: > TOUCH é sempre TOUCH. > --- ## 11. Usos Esperados O periférico TOUCH é adequado para: - UI (menus, inventário, mapas) - drag-and-drop - seleção direta - “clicar para investigar” - puzzles baseados em apontamento - mecânicas de rastro (ex.: Fruit Ninja-like) --- ## 12. Garantias de Portabilidade Todo jogo PROMETEU que utiliza TOUCH: - comporta-se de forma idêntica em todas as plataformas - não depende de capacidades específicas do host - não sofre variação semântica entre desktop, mobile e hardware dedicado --- ## 13. Resumo O TOUCH no PROMETEU é: - simples - explícito - previsível - universal - determinístico < [Voltar](chapter-6.md) | [Sumário](table-of-contens.md) | [Adiante](chapter-8.md) >