一键导入
validate-controls
Valida os dois caminhos de input (teclado + touch D-pad) após mudanças em controles, arena, exploração ou timing. Execute antes de commitar.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Valida os dois caminhos de input (teclado + touch D-pad) após mudanças em controles, arena, exploração ou timing. Execute antes de commitar.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Mantem a identidade visual de caipora baseada na protagonista aprovada: silhueta laranja serrilhada, vazio preto, olhos brancos, horror folclorico brasileiro e pixel art chapada.
Orienta o início de sessão no projeto caipora — lê PLAN.md, verifica baseline, seleciona a task mais prioritária
Como usar o Supabase via MCP e o banco de dados do caipora. Consulte sempre que mexer em banco de dados, tabela, schema caipora, migration, Edge Function, telemetria ou cloud save.
Valida o jogo nas plataformas-alvo (orientação LIVRE — retrato e paisagem) — iPhone/Android telefone nas duas orientações e tablet — após mudanças em UI, câmera, orientação ou safe area.
| name | validate-controls |
| description | Valida os dois caminhos de input (teclado + touch D-pad) após mudanças em controles, arena, exploração ou timing. Execute antes de commitar. |
| disable-model-invocation | true |
Execute esta checklist completa. Os dois caminhos devem funcionar de forma idêntica.
make test
Confirmar: test_touch_controls.gd (4 testes), test_controls_hud.gd (3 testes) e
test_floating_dpad.gd (11 testes) passam.
Se qualquer desses falha, NÃO commitar — corrigir primeiro.
Rodar o jogo (~/.local/bin/godot --path .) e validar na tela de exploração:
Ativar D-pad (Options → Touch Controls → Always) e validar (com mouse no desktop o gesto é clicar-e-arrastar; o pad responde igual ao dedo):
Entrar em combate e validar:
Falha só no touch, passa no teclado:
ControlsHud._feed_event() não está chamando Input.parse_input_event() corretamenteTimingSystem._expected_action_on_pressed() chamado sem _on_released() correspondente (action presa)Falha só no teclado, passa no touch:
_get_cardinal_input() usando action string diferente da que o D-pad injeta| Arquivo | Função-chave | Responsabilidade |
|---|---|---|
scripts/ui/controls_hud.gd | _on_pressed(action) | Injeção dupla D-pad |
scripts/ui/floating_dpad.gd | resolve_action(offset) | Gesto → direção cardinal |
scripts/entities/caipora.gd | _get_cardinal_input() | Polling exploração |
scripts/systems/timing_system.gd | _input(event) | Event listener combate |
scripts/arena/arena_manager.gd | _is_under_dpad() | Posicionamento bolhas |
tests/unit/test_touch_controls.gd | 4 testes | Contrato injeção dual |