En la línea 1500 se hace el cambio de animación, como habrás visto lo que hago para la plataforma es poner el counter siempre a 0 (linea 1386).
Me ha parecido que en_an [gpit].frame va cambiando entre 0 y 1, ¿es así?
Es que me gustaría dejar un poco más elegante ese código y hacer las minimas cuentas posibles para las plataformas
He pensado por ejemplo en hacer la comprobación del contador a menor de 4 y si establezco por defecto el counter a 99 (por ejemplo en draw_scr) ignore todas las operaciones de animación. Quizás incluso hacer una operación a nivel bit, que debería ser más rápido...
Un Saludo y haz tus cosas tranquilo que con lo que me has explicado por el momento tengo entretenimiento mañanero de sobra
Saludos desde una lejana galaxia! XD
Moderador: na_th_an
Re: Saludos desde una lejana galaxia! XD
David Skywalker
Weblog: http://david.dantoine.org
Weblog: http://david.dantoine.org
Re: Saludos desde una lejana galaxia! XD
Este es el código que controla la animación:
$this->bbcode_second_pass_code('', ' // Animate
en_an [gpit].count ++;
if (en_an [gpit].count == 4) {
en_an [gpit].count = 0;
en_an [gpit].frame = !en_an [gpit].frame;
en_an [gpit].next_frame = enem_frames [en_an [gpit].base_frame + en_an [gpit].frame];
}')
Creo que lo más sencillo, como las plataformas son tipo 4, es hacer algo así:
$this->bbcode_second_pass_code('', ' // Animate
en_an [gpit].count ++;
if (en_an [gpit].count == 4) {
if (gpt != 4) {
en_an [gpit].count = 0;
en_an [gpit].frame = !en_an [gpit].frame;
en_an [gpit].next_frame = enem_frames [en_an [gpit].base_frame + en_an [gpit].frame];
}
}')
Fíjate en el if (gpt != 4) ... Lo he puesto ahí dentro para que se compruebe el menor numero de veces posible. Aunque no sé si esto te romperá alguna tripa de por ahí.
$this->bbcode_second_pass_code('', ' // Animate
en_an [gpit].count ++;
if (en_an [gpit].count == 4) {
en_an [gpit].count = 0;
en_an [gpit].frame = !en_an [gpit].frame;
en_an [gpit].next_frame = enem_frames [en_an [gpit].base_frame + en_an [gpit].frame];
}')
Creo que lo más sencillo, como las plataformas son tipo 4, es hacer algo así:
$this->bbcode_second_pass_code('', ' // Animate
en_an [gpit].count ++;
if (en_an [gpit].count == 4) {
if (gpt != 4) {
en_an [gpit].count = 0;
en_an [gpit].frame = !en_an [gpit].frame;
en_an [gpit].next_frame = enem_frames [en_an [gpit].base_frame + en_an [gpit].frame];
}
}')
Fíjate en el if (gpt != 4) ... Lo he puesto ahí dentro para que se compruebe el menor numero de veces posible. Aunque no sé si esto te romperá alguna tripa de por ahí.
Como diría Rorshach: "Urm..."
Re: Saludos desde una lejana galaxia! XD
Yo te digo algo asi:
$this->bbcode_second_pass_code('', 'void __FASTCALL__ draw_scr (void) {
...
for (gpit = 0; gpit < 3; gpit ++) {
switch (malotes [enoffs + gpit].t) {
case 8: //platform
en_an [gpit].next_frame = sprite_69_a;
en_an [gpit].count = 0xFF;
')
Ahora...
$this->bbcode_second_pass_code('', '
void mueve_bicharracos (void) {
...
switch (gpt) {
case 8:
break;
case 1:
case 2:
case 3:
...
}
....
if (active) {
if( en_an [gpit].count <= 4 ) {
// Animate
en_an [gpit].count ++;
if (en_an [gpit].count == 4) {
en_an [gpit].count = 0;
en_an [gpit].frame = !en_an [gpit].frame;
en_an [gpit].next_frame = enem_frames [en_an [gpit].base_frame + en_an [gpit].frame];
}
}
// Collide with player
')
Al menos creo que sería más rápido que como lo hago ahora, estableciendo un valor en cada vuelta, que luego no se usa...
Un Saludo y gracias ^^_
$this->bbcode_second_pass_code('', 'void __FASTCALL__ draw_scr (void) {
...
for (gpit = 0; gpit < 3; gpit ++) {
switch (malotes [enoffs + gpit].t) {
case 8: //platform
en_an [gpit].next_frame = sprite_69_a;
en_an [gpit].count = 0xFF;
')
Ahora...
$this->bbcode_second_pass_code('', '
void mueve_bicharracos (void) {
...
switch (gpt) {
case 8:
break;
case 1:
case 2:
case 3:
...
}
....
if (active) {
if( en_an [gpit].count <= 4 ) {
// Animate
en_an [gpit].count ++;
if (en_an [gpit].count == 4) {
en_an [gpit].count = 0;
en_an [gpit].frame = !en_an [gpit].frame;
en_an [gpit].next_frame = enem_frames [en_an [gpit].base_frame + en_an [gpit].frame];
}
}
// Collide with player
')
Al menos creo que sería más rápido que como lo hago ahora, estableciendo un valor en cada vuelta, que luego no se usa...
Un Saludo y gracias ^^_
David Skywalker
Weblog: http://david.dantoine.org
Weblog: http://david.dantoine.org
Re: Saludos desde una lejana galaxia! XD
* nuevo hotspot terminado y perfectamente funcional. He modificado un poco el comportamiento.
$this->bbcode_second_pass_code('', '
case 3:
if (player.life < PLAYER_LIFE) {
player.life = PLAYER_LIFE;
peta_el_beeper (8);
} else
peta_el_beeper (1);
break;
')
Y he mejorado la función que pinta las plataformas de la forma que comenté antes y funcionan perfectas!
Ahora me pongo con el scripting que es lo que más ganas le tengo y supongo que para la función en C que modifique el marcador como dices puedo usar: draw_coloured_tile... luego pruebo
Un Saludo y mil gracias
$this->bbcode_second_pass_code('', '
case 3:
if (player.life < PLAYER_LIFE) {
player.life = PLAYER_LIFE;
peta_el_beeper (8);
} else
peta_el_beeper (1);
break;
')
Y he mejorado la función que pinta las plataformas de la forma que comenté antes y funcionan perfectas!
Ahora me pongo con el scripting que es lo que más ganas le tengo y supongo que para la función en C que modifique el marcador como dices puedo usar: draw_coloured_tile... luego pruebo
Un Saludo y mil gracias
Última edición por D_Skywalk el Jue, 03 Oct 2013, 02:43, editado 1 vez en total.
David Skywalker
Weblog: http://david.dantoine.org
Weblog: http://david.dantoine.org
Re: Saludos desde una lejana galaxia! XD
Genial!
Ya irás poniendo el .tap para probarlo!
Ya irás poniendo el .tap para probarlo!
(_\_) (_|_) (_/_) (_|_) ILLO KE HEHEHEHEHEHEEEHEHEHEH!
¡Activa tu rainbow pechónico!
¡Activa tu rainbow pechónico!
Re: Saludos desde una lejana galaxia! XD
Ya está el juego terminado, ahora queda testeo y pijotear sonidos y música si es que doy con la forma de hacerlo.
Por cierto el sistema de scripts es la poOOOOooooll*a!
Un saludo y lo estoy disfrutando un montón
Por cierto el sistema de scripts es la poOOOOooooll*a!
Un saludo y lo estoy disfrutando un montón
David Skywalker
Weblog: http://david.dantoine.org
Weblog: http://david.dantoine.org
Re: Saludos desde una lejana galaxia! XD
JOJAOJAO me alegro un montón
Ayer se me pasó tu post: en efecto, así te ahorras un cálculo en cada bucle No es que tome mucho tiempo, pero todo suma.
Ahora a ver si tengo rato de hacer un tutorial en condiciones explicando el scripting. Creo que lo mejor es que primero me dedique a explicar cómo funciona el scripting en nuestro güego de ejemplo y luego ya me raye en hablar de todas las condiciones y comandos disponibles.
Por cierto, la 3.99.2 la tenemos ya casi lista y trae un montón de añadidos interesantes.
Ya tenemos ganas de ver los resultados, lo que pude bien pintaba estupendamente
Ayer se me pasó tu post: en efecto, así te ahorras un cálculo en cada bucle No es que tome mucho tiempo, pero todo suma.
Ahora a ver si tengo rato de hacer un tutorial en condiciones explicando el scripting. Creo que lo mejor es que primero me dedique a explicar cómo funciona el scripting en nuestro güego de ejemplo y luego ya me raye en hablar de todas las condiciones y comandos disponibles.
Por cierto, la 3.99.2 la tenemos ya casi lista y trae un montón de añadidos interesantes.
Ya tenemos ganas de ver los resultados, lo que pude bien pintaba estupendamente
Como diría Rorshach: "Urm..."
Re: Saludos desde una lejana galaxia! XD
Tengo una duda, tengo un tope de variables (FLAGS) en el modo scripting?
Se pueden usar operaciones bitwise?
La verdad que yo sólo le añadiría poder nombrar a las variables como quieras y luego el compilador la cambie por un número de flag ^^_
Un Saludo y Gracias!
Se pueden usar operaciones bitwise?
La verdad que yo sólo le añadiría poder nombrar a las variables como quieras y luego el compilador la cambie por un número de flag ^^_
Un Saludo y Gracias!
David Skywalker
Weblog: http://david.dantoine.org
Weblog: http://david.dantoine.org
Re: Saludos desde una lejana galaxia! XD
Lo de los nombres de variables... el compilador es muy tontaco, pero bueno, miraré de ponérselo. Ahora mismo no hay bitwise, pero eso es fácil de poner para la próxima versión.
Sobre el número de flags, en principio sólo hay 16, pero puedes poner todas las que quieras (siempre que la memoria lo permita) si modificas la constante con el máximo en la linea 131 de definitions.h:
$this->bbcode_second_pass_code('', '#define MAX_FLAGS 16')
Es algo que tengo apuntado cambiar y hacer más accesible desde hace siglos, pero nunca me acuerdo
Sobre el número de flags, en principio sólo hay 16, pero puedes poner todas las que quieras (siempre que la memoria lo permita) si modificas la constante con el máximo en la linea 131 de definitions.h:
$this->bbcode_second_pass_code('', '#define MAX_FLAGS 16')
Es algo que tengo apuntado cambiar y hacer más accesible desde hace siglos, pero nunca me acuerdo
Como diría Rorshach: "Urm..."
Re: Saludos desde una lejana galaxia! XD
YEHA!
Para hacerlo sencillo simplemente con usarlas así, ya sería un puntazo:
$this->bbcode_second_pass_code('', '
ENTERING SCREEN 6 ; Check salida
IF FLAG ESPADA = 2 ; dos partes de la espada
THEN
SET FLAG CACHO2 = 1
INC FLAG ESPADA
END
END
')
Las operaciones bitwise, pueden ayudar a tener más variables/checks en un solo flag
$this->bbcode_second_pass_code('', '
BITSET FLAG PUERTAS 3, 1 ; Pone el bit 3 a 1
BITXOR FLAG PUERTAS 3, 0111 ; Pone el flag a 0011
IF FLAG PUERTAS BIT 3 ; este no lo tengo muy claro XD
')
Bueno, no se si es muy complejo, ahí queda la sugerencia igual
Por último, ¿los flags son de tamaño byte signed?
Un Saludo y es que el tope de variables no lo leí por ningún lado y tenía la duda ^^_
Para hacerlo sencillo simplemente con usarlas así, ya sería un puntazo:
$this->bbcode_second_pass_code('', '
ENTERING SCREEN 6 ; Check salida
IF FLAG ESPADA = 2 ; dos partes de la espada
THEN
SET FLAG CACHO2 = 1
INC FLAG ESPADA
END
END
')
Las operaciones bitwise, pueden ayudar a tener más variables/checks en un solo flag
$this->bbcode_second_pass_code('', '
BITSET FLAG PUERTAS 3, 1 ; Pone el bit 3 a 1
BITXOR FLAG PUERTAS 3, 0111 ; Pone el flag a 0011
IF FLAG PUERTAS BIT 3 ; este no lo tengo muy claro XD
')
Bueno, no se si es muy complejo, ahí queda la sugerencia igual
Por último, ¿los flags son de tamaño byte signed?
Un Saludo y es que el tope de variables no lo leí por ningún lado y tenía la duda ^^_
David Skywalker
Weblog: http://david.dantoine.org
Weblog: http://david.dantoine.org
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 161 invitados