Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: bnl en 22 de Agosto de 2007, 08:01:50 PM

Título: Recubrir una enumeracion en C# o VB
Publicado por: bnl en 22 de Agosto de 2007, 08:01:50 PM
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
Título: Recubrir una enumeracion en C# o VB
Publicado por: Vicente en 22 de Agosto de 2007, 09:59:13 PM
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
Título: Recubrir una enumeracion en C# o VB
Publicado por: bnl en 23 de Agosto de 2007, 12:42:33 AM
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?
Título: Recubrir una enumeracion en C# o VB
Publicado por: Vicente en 23 de Agosto de 2007, 08:37:48 AM
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
Título: Recubrir una enumeracion en C# o VB
Publicado por: bnl en 23 de Agosto de 2007, 10:51:50 AM
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.
Título: Recubrir una enumeracion en C# o VB
Publicado por: [EX3] en 23 de Agosto de 2007, 12:32:08 PM
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...
Título: Recubrir una enumeracion en C# o VB
Publicado por: bnl en 23 de Agosto de 2007, 03:44:53 PM
Gracias a ambos.

Al final haré eso, crear mi enumeracion que se corresponda con la de DirectInput.

Saludos