Foros - Stratos

Proyectos => CRM32Pro => Mensaje iniciado por: Kolham en 04 de Julio de 2007, 09:35:41 PM

Título: [ARREGLADO] Falla el keystate??
Publicado por: Kolham en 04 de Julio de 2007, 09:35:41 PM
Al hacer:

if (CRM32Pro.keystate[SDLK_w])
...

Me da error (de acceso a memoria).

¿Es un bug o es que yo toy haciéndolo mal?
Título: [ARREGLADO] Falla el keystate??
Publicado por: TheAzazel en 04 de Julio de 2007, 11:31:53 PM
uhm... me da que lo que haces mal es utilizar CRM32Pro.keystate antes de llamar a CRM32Pro.Update() que es quien lo actualiza.

Comprueba que al menos, lo has llamado una vez aunque claro, si no lo llamas en cada update...tendra el valor de las teclas anteriores
Título: [ARREGLADO] Falla el keystate??
Publicado por: Kolham en 05 de Julio de 2007, 12:17:08 AM
Incluso poniendo antes el Update...falla. De hecho, tu juego del SpacePong tiene el Update después de llamar a keystate ¿no?.
Título: [ARREGLADO] Falla el keystate??
Publicado por: TheAzazel en 05 de Julio de 2007, 01:06:31 AM
eso es bastante raro...fijate que en el SpacePong lo llama antes...en el bucle del menu.
El problema es que CRM32Pro.keystate valdra NULL si no se llama antes a CRM32Pro.Update().
De todos modos he revisado los code path de .Update() y puede existir un bug en ello, si estas pasando un SDL_Event a .Update() se puede dar el caso de que te devuelva un evento PERO aun no ha activado .keystate.
Si este es tu caso... con comprobar que .keystate es != NULL lo solucionaras por el momento. De todos modos creo que en vez de acceder directamente a .keystate, añadire un miembro que lo haga y en caso de error que no pete.
Mira a ver si te ayuda esto. Esa mejora ira para la 4.98 que esta en plena cocion jejeje
Título: [ARREGLADO] Falla el keystate??
Publicado por: Kolham en 05 de Julio de 2007, 01:11:06 AM
Así es, solucionado ;). Efectivamente también paso al Update un SDL_Event. Solucionado queda comprobando que keystate no sea NULL.

Gracias :).
Título: [ARREGLADO] Falla el keystate??
Publicado por: TheAzazel en 05 de Julio de 2007, 01:15:17 AM
ok, gracias por reportar ese problemilla.
Lo que hare sera agregar un metodo que obtenga el keystate y asi, te quitas de andar haciendo comprobaciones :)