Tras finiquitar la carga de terrenos y objetos .obj en el módulo gráfico de Melt, creo que ya va siendo hora de empezar la parte de entrada. Hasta ahora solo he hecho módulos de entrada sencillos, que simplemente abstraían lo más a-bajo-nivel de los dispositivos. Se actualizaban solos y se utilizaban listeners para avisar de pulsaciones de teclas y demás.

Ahora, en mi nuevo enfoque a la hora de hacer el motor, estoy intentando simplificar todo al máximo. En este caso, voy a optar por registrar de alguna manera los eventos que se desean monitorizar, por ejemplo, las teclas WASD en lugar de recibir eventos para todo el teclado. La entrada por teclado común estará reservada solo a determinados elementos de la GUI, como el editbox.

También me gustaría tener alguna manera de poder abstraer acciones de los eventos en los dispositivos en sí. Por ejemplo, registramos el evento player_forward para el botón izquierdo del ratón y para la tecla W. Cada vez que se genere uno de los dos eventos se mandará el mismo tipo de acción, y la aplicación solo recibirá lo que tiene que hacer, en lugar de ‘tragar’ varios eventos y filtrarlos en la misma acción. Evidentemente, las acciones serán de tipo String o similar, nada predefinido. Si no, no tendría mucho sentido.

De momento voy a pensar un poco en el diseño antes de lanzarme de cabeza a programar. Además, se acerca el examen de OPE y tampoco es cuestión de ponerme a depurar como un poseso. Seguiremos informando.

Editado: Hace un par de días que escribí esto, y hoy he estado programando casi todo el día. Ya tengo el teclado y el ratón cubiertos, ahora faltan los gamepads. El soporte de LWJGL de los gamepads deja un poco que desear, y estoy pensando en implementar yo mismo esa parte cn JInput, que es muy fácil.

Hasta ahora estoy manejando los ejes de los dispositivos (y del movimiento del ratón)  en dos mitades, porque se suelen simular con dos teclas y así es menos traumático adaptar un juego hecho para teclado a un gamepad. Sin embargo resulta un incordio, así que posiblemente lo cambie para manejar los ejes como lo que tienen que ser y haga algo para podes asignar dos teclas a un eje ficticio.