Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Recubrir una enumeracion en C# o VB

Iniciado por bnl, 22 de Agosto de 2007, 08:01:50 PM

« anterior - próximo »

bnl

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
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

Vicente

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

bnl

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?
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

Vicente

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

bnl

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.
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

[EX3]

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...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

bnl

Gracias a ambos.

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

Saludos
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.