Página 3 de 9

Re: Saludos desde una lejana galaxia! XD

Publicado: Mié, 02 Oct 2013, 13:43
por D_Skywalk
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 ;)

Re: Saludos desde una lejana galaxia! XD

Publicado: Mié, 02 Oct 2013, 13:48
por na_th_an
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í.

Re: Saludos desde una lejana galaxia! XD

Publicado: Mié, 02 Oct 2013, 14:14
por D_Skywalk
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 ^^_

Re: Saludos desde una lejana galaxia! XD

Publicado: Mié, 02 Oct 2013, 20:18
por D_Skywalk
* 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! :D

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 :jias:

Un Saludo y mil gracias :adore:

Re: Saludos desde una lejana galaxia! XD

Publicado: Jue, 03 Oct 2013, 00:26
por angel
Genial! :D

Ya irás poniendo el .tap para probarlo! :gay:

Re: Saludos desde una lejana galaxia! XD

Publicado: Jue, 03 Oct 2013, 02:45
por D_Skywalk
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! :cheer: :cheer: :cheer:

Un saludo y lo estoy disfrutando un montón :corchoneta:

Re: Saludos desde una lejana galaxia! XD

Publicado: Jue, 03 Oct 2013, 07:35
por na_th_an
JOJAOJAO me alegro un montón :D

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 :)

Re: Saludos desde una lejana galaxia! XD

Publicado: Vie, 04 Oct 2013, 09:25
por D_Skywalk
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!

Re: Saludos desde una lejana galaxia! XD

Publicado: Vie, 04 Oct 2013, 09:37
por na_th_an
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 :lol:

Re: Saludos desde una lejana galaxia! XD

Publicado: Vie, 04 Oct 2013, 10:01
por D_Skywalk
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 :boots:

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 ^^_