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:

Código: Seleccionar todo

            // 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í:

Código: Seleccionar todo

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

Código: Seleccionar todo

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...

Código: Seleccionar todo

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.

Código: Seleccionar todo

                        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:

Código: Seleccionar todo

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

Código: Seleccionar todo

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

Código: Seleccionar todo

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