Pergunta

Em uma pergunta relacionada, perguntei como obter informações via IUP. Isso funciona bem, exceto que passa pelo sistema e está sujeito à taxa de reprodução que não é ideal para um jogo. O que eu realmente gostaria é a capacidade de obter o estado atual de qualquer chave em um determinado momento. Existe uma maneira de fazer isso (através da IUP ou não)?

Foi útil?

Solução

Você provavelmente precisará envolver chamadas para a API Win32 apropriada, o DirectX ou o que quer que seja em um módulo Lua. A captura de eventos de pontas -chave no IUP exige que seja entregue na janela ou controle através do mecanismo de mensagem "normal" do Windows e provavelmente não é a melhor abordagem em uma estrutura de jogo.

Você pode usar um objeto de timer da IUP para executar um redesenho em um cronograma, mas ainda precisa de uma maneira de coletar o estado do teclado. Se você deseja usar um gamepad, joystick ou qualquer outro que não o teclado e o mouse, a IUP não ajudará diretamente em nenhum caso.

Isso é feito facilmente com uma pequena quantidade de código C compilado em uma DLL.

Pode ser feito com bastante facilidade com GOLE, para alguns tipos de API. Outros aceitarão o trabalho de configuração/desmontagem suficiente para que seja mais fácil apenas artesanato.

Há também o Estrangeiro Módulo para Lua que permite chamadas diretas em APIs arbitrárias da Pure Lua. Alien está incluído como parte de Lua para Windows, bem como através de sua página de projeto na Luafororge. O próprio Alien é um pouco portátil entre as plataformas, embora nada que você chamasse com ela.

Outra coisa para olhar enquanto você segue esse caminho é um ou mais dos motores de jogo existentes. Geralmente, eles ocultam o loop de eventos dentro do motor (como o IUP), mas são otimizados para a criação de jogos em vez de aplicativos de mesa.

Há um número por aí que ouvi rumores na lista de discussão da Lua. Um que vem à mente porque foi mencionado com bastante frequência é AMOR.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top