Buenas
He creado una pequeña clase para gestionar las entradas del teclado que internamente llama a DirectInput. Como sabeis DirectInput tiene una enumeracion que es KEY y que define un valor para cada tecla del teclado (por ej la A es 30).
La cuestión es que esa clase tiene un metodo para preguntar si una determinada tecla esta pulsada(dicha tecla se pasa como parametro al metodo). Esta tecla deberia ser una de las definidas en la enumaracion. El problema es que no quiero exponer fuera de la clase que gestiona las entradas nada de las DirectX, por lo que no quiero que el cliente que utilice esta clase llame al metdo pasandole como parametro un elemento de la enumeracion de DirectInput, pero necesito que se pase un valor de los de la enumeracion.
Lo unico que se me ha ocurrido es crearme una enumeracion que sea igual que la de DirectInput o una clase Tecla que tenga una serie de constantes publicas y de tipo entero para cada tecla y cuyo valor coincida con el de cada elemento de la enumeracion de DirectInput. Mi metodo recibiria un elemento de esa enumeracion o una constante. Ambas soluciones me parecen muy tediosas ya que la enumeracion tiene una burrada de elementos.
Despues de esta parrafada no se si me he explicado bien.
¿Se os ocurre como implementarlo?
Gracias
Te toca hacer una enumeración propia que se corresponda con la DX (o una hash que mapee de tu sistema neutral a diferentes tipos de inputs).
Un saludo!
Vicente
Lo de la enumeracion es lo que queria evitar.
Lo del hash es una buena idea para soportar diferentes entradas, pero tambien es bastante tediosa de escribir el mapeo.
Se me ha ocurrido otra forma de implementarlo, pero tampoco me acaba de gustar. El metrodo recibiria una string que corresponderia en el elemento de la enumeracion, por ejemplo "A" para la tecla A o "Escape" para esa tecla y mediante [Enum].Parse(GetType(DirectInput.Key), stringTegla, True) se obtiene el elemento del enumerado de directInput. No me acaba de gustar porque no es muy facil de usar para elementos como SemiColon o Apostrophe y el que la utilice tendría que conocer esos valores.
¿Alguna idea más?
Hombre, la enumeración o el hash es poco "divertido" de escribir, pero no tardas más de 15 mins ;)
Lo de los strings no me mola mucho la verdad, aunque es verdad que funcionaría :S
Un saludo!
Vicente
Si, lo del string a mi tampoco me gusta.
Supongo que haré lo de la enumeración, aparte de ser tedioso es duplicar algo existente, pero en principio parece la mejor solucion.
Saludos.
Yo no me complique la vida. En la dx_lib32 decidi tomarme mi tiempo y hacer una enumeracion que asocie la interna de dInput con la de mi libreria que luego a la hora de usarla facilita inmensamente el uso de metodos para leer las entradas del teclado sin tener que aprendertelas de memoria. Para mi es la mejor opcion en estos casos.
Salu2...
Gracias a ambos.
Al final haré eso, crear mi enumeracion que se corresponda con la de DirectInput.
Saludos