3.2.2. MANIPULAÇÃO DE DISPOSITIVOS DE ENTRADA

 

É também no grupo ClanLib Display que existem as classes que permitem a manipulação de dispositivos de entrada, como CL_InputContext, CL_InputDevice e CL_InputEvent.

A Classe CL_InputContext é um contêiner de todos os diferentes tipos de dispositivos de entrada disponíveis. Tais dispositivos são categorizados como: teclado, mouse e joysticks (controladores de jogos).

A classe CL_InputDevice é uma abstração de todos os dispositivos de entrada e disponibiliza um conjunto de funções para a utilização de tais dispositivos. O exemplo a seguir mostra a criação de objetos representando os dispositivos de entrada:

 

1   CL_DisplayWindow window("Jogo", 640, 480);

2   CL_InputContext *ic = window.get_ic();

3   CL_InputDevice keyboard = ic->get_keyboard();

4   CL_InputDevice mouse = ic->get_mouse();

5   CL_InputDevice joystick = ic->get_joystick();

 

Ainda dentro do grupo ClanLib Display, encontra-se CL_InputEvent, que, em conjunto com CL_InputDevice, permite capturar e tratar os diversos sinais emitidos pelos dispositivos de entrada. Quando um sinal é emitido, após, por exemplo, o pressionar de uma tecla, a ClanLib recebe um evento para o respectivo dispositivo de entrada. Após o disparo desse evento, um objeto da classe CL_InputEvent é passado para o slot que estiver ‘escutando’ aquele evento, conforme no exemplo abaixo:

 

1   CL_Slot sTecla;

 

2   void setupSlot(CL_InputContext *ic){

3       CL_InputDevice keyb = ic->get_keyboard();

4       sTecla=keyb.sig_key_down().connect(&TeclaP);}

   

5   void TeclaP (const CL_InputEvent &event){

6       std::cout << "Tecla: " << event.str.c_str();}

 

Um objeto da classe CL_Slot (responsável pela manipulação de slots) é criado na linha 1. A linha 2 define uma função para inicializar o slot criado. O corpo dessa função são as linhas 3, que cria um objeto para representar o teclado e a linha 4, que conecta o slot criado, ao evento gerado após o pressionar de uma tecla qualquer. A conexão do slot ao teclado tem como parâmetro, a referência a uma função criada para processar o evento gerado (linhas 5 e 6).