Saludos desde una lejana galaxia! XD

Chit chat general. Habla con los MojonTwins y con los amigos de los MojonTwins. Reza a Vah-ka. Delinque. Aviso: está PROHIBIDO tirarse peos fuerte. Si les cortas el pescuezo, vale.

Moderador: na_th_an

Avatar de Usuario
D_Skywalk
Mensajes: 352
Registrado: Mar, 01 Oct 2013, 13:36

Re: Saludos desde una lejana galaxia! XD

Mensajepor D_Skywalk » Mié, 02 Oct 2013, 13:43

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 ;)
David Skywalker
Weblog: http://david.dantoine.org
Avatar de Usuario
na_th_an
Mensajes: 26412
Registrado: Vie, 09 Ene 2009, 12:18

Re: Saludos desde una lejana galaxia! XD

Mensajepor na_th_an » Mié, 02 Oct 2013, 13:48

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í.
Como diría Rorshach: "Urm..."
Avatar de Usuario
D_Skywalk
Mensajes: 352
Registrado: Mar, 01 Oct 2013, 13:36

Re: Saludos desde una lejana galaxia! XD

Mensajepor D_Skywalk » Mié, 02 Oct 2013, 14:14

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 ^^_
David Skywalker
Weblog: http://david.dantoine.org
Avatar de Usuario
D_Skywalk
Mensajes: 352
Registrado: Mar, 01 Oct 2013, 13:36

Re: Saludos desde una lejana galaxia! XD

Mensajepor D_Skywalk » Mié, 02 Oct 2013, 20:18

* 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:
Ú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
Avatar de Usuario
angel
Mensajes: 23212
Registrado: Vie, 09 Ene 2009, 13:04
Ubicación: Torreznolandia
Contactar:

Re: Saludos desde una lejana galaxia! XD

Mensajepor angel » Jue, 03 Oct 2013, 00:26

Genial! :D

Ya irás poniendo el .tap para probarlo! :gay:
(_\_) (_|_) (_/_) (_|_) ILLO KE HEHEHEHEHEHEEEHEHEHEH!

¡Activa tu rainbow pechónico!
Avatar de Usuario
D_Skywalk
Mensajes: 352
Registrado: Mar, 01 Oct 2013, 13:36

Re: Saludos desde una lejana galaxia! XD

Mensajepor D_Skywalk » Jue, 03 Oct 2013, 02:45

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:
David Skywalker
Weblog: http://david.dantoine.org
Avatar de Usuario
na_th_an
Mensajes: 26412
Registrado: Vie, 09 Ene 2009, 12:18

Re: Saludos desde una lejana galaxia! XD

Mensajepor na_th_an » Jue, 03 Oct 2013, 07:35

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 :)
Como diría Rorshach: "Urm..."
Avatar de Usuario
D_Skywalk
Mensajes: 352
Registrado: Mar, 01 Oct 2013, 13:36

Re: Saludos desde una lejana galaxia! XD

Mensajepor D_Skywalk » Vie, 04 Oct 2013, 09:25

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!
David Skywalker
Weblog: http://david.dantoine.org
Avatar de Usuario
na_th_an
Mensajes: 26412
Registrado: Vie, 09 Ene 2009, 12:18

Re: Saludos desde una lejana galaxia! XD

Mensajepor na_th_an » Vie, 04 Oct 2013, 09:37

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:
Como diría Rorshach: "Urm..."
Avatar de Usuario
D_Skywalk
Mensajes: 352
Registrado: Mar, 01 Oct 2013, 13:36

Re: Saludos desde una lejana galaxia! XD

Mensajepor D_Skywalk » Vie, 04 Oct 2013, 10:01

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 ^^_
David Skywalker
Weblog: http://david.dantoine.org

Volver a “General”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados