chesterbr / minitruco-android

A popular Brazilian card game (Truco) running on Android.
https://play.google.com/store/apps/details?id=me.chester.minitruco&pli=1&hl=pt
BSD 3-Clause "New" or "Revised" License
88 stars 36 forks source link

Suporte a FireTV e outros dispositivos sem touch #21

Open chesterbr opened 1 year ago

chesterbr commented 1 year ago

Esses dias eu fui debugar o Bluetooth, e tentei fazer isso na minha FireTV; percebi que o jogo funciona no geral, mas com dois problemas:

Esse segundo item me surpreendeu, porque o miniTruco original (pré-Android) não exigia touch screen; aparentemente eu deixei essa parte pra trás quando migrei pro Android.

Isso acontece porque os elementos são todos renderizados usando primitivas de Canvas (eu teria feito diferente se tivesse começado em Android / soubesse mais sobre Android quando portei), então tem 2 soluções: mudar o jogo para criar elementos selecionáveis ou responder às teclas como a versão J2ME fazia.

Meu feeling inicial é que o menor impacto seria trocar os diálogos por nativos (como o que pergunta se vai ser cliente ou servidor Bluetooth) e para as cartas colocar botões semi-invisíveis (para que eles mesclem bem com os botões de aumento de aposta, carta aberta/fechada, menu, etc.)

Outra coisa observada é que mesmo em telas que funcionam bem com o controle remoto (ex.: a de título) é muito difícil identificar o elemento selecionado; seria legal que tivesse uma borda em volta ou algo assim.

chesterbr commented 1 year ago

Alguns desses itens começaram a ser introduzidos em #30 (que ficou difícil de dar merge por conta do bug de congelamento); vale a pena retomar num momento apropriado.

chesterbr commented 1 year ago

138 transforma os botões de aumento e carta fechada em elementos da mesa (pra escalar eles junto com tamanhoFonte dos balões e caixa de diálogo), o que dá um adianto aqui

(não mexi no botão Nova Partida porque não precisou; tecnicamente não vai precisar pra essa task também)

chesterbr commented 1 year ago

Potencialmente os próximos passos seriam:

^ com esses itens, já dá pra jogar. Aí vem o refinamento: