Página 4 de 4

Re: ABANDONO, NO PUEDO MAS!!! (me largo a Z88DK)

Publicado: Mié Abr 30, 2014 9:57 pm
por radastan
antoniovillena escribió:Si me decís cómo es el mapa a codificar os hago la herramienta que pase de .tmx (archivo que usa Tiled) al binario que necesitéis.


Hombre, vendría bien que hicieras más bien dos: de TILED a .h y de MAPPY a .h. Así cada cual que elija su herramienta favorita.

El .h es muy simple, el mismo de la churrera pero sin añadidos (ni cerrojos ni nada) sólo la matriz del mapa. Es decir, tiene que generar algo como:

Código: Seleccionar todo

unsigned char mapa [] = { 6, 1, 2, 4, 5, 5, 5, 5,... 


OJO, procura no pasar de 80 valores por línea o se atraganta el compilador.

Re: ABANDONO, NO PUEDO MAS!!! (me largo a Z88DK)

Publicado: Jue May 01, 2014 12:31 am
por Hark0
Yo comentaba Tiled porque es el que usaba yo hasta ahora...

Usare Mappy, a ver que tal, aunque soy amante de cuaderno, cuadricula, numeros, y goma de borrar... :wink:


... y hombre... si haces la conversión, pues mejor para todos... :D ... y tiled también gana... que lo gasta mucha gente. :P


yo catare mappy, aver

Re: ABANDONO, NO PUEDO MAS!!! (me largo a Z88DK)

Publicado: Jue May 01, 2014 2:37 am
por antoniovillena
Tengo un generador de mapas Tiled vacíos genérico. Está hecho para FASE, pero es genérico porque no codifica cerrojos.

https://github.com/DSkywalk/fase/blob/m ... e/GenTmx.c

Luego tengo tres herramientas para la Churrera (estas ya no son genéricas), una de ellas pasa de Mappy a .h, otra de ellas de Tiled a .h y la última pasa de Mappy a Tiled.

https://github.com/DSkywalk/fase/tree/m ... onversores

Sería cuestión de que las viérais y me dijérais las modificaciones que os hacen falta.

Re: ABANDONO, NO PUEDO MAS!!! (me largo a Z88DK)

Publicado: Jue May 01, 2014 11:16 am
por radastan
antoniovillena escribió:Sería cuestión de que las viérais y me dijérais las modificaciones que os hacen falta.


Repito, sólo nos hace faalta que el .h sea la matriz del mapa sin más añadidos. Sólo eso. Tanto para Mappy como para Tiled.

Cuando pueda le echo un vistazo al genérico de FASE.

Re: ABANDONO, NO PUEDO MAS!!! (me largo a Z88DK)

Publicado: Jue May 01, 2014 12:36 pm
por antoniovillena
radastan escribió:Repito, sólo nos hace faalta que el .h sea la matriz del mapa sin más añadidos. Sólo eso. Tanto para Mappy como para Tiled.

Cuando pueda le echo un vistazo al genérico de FASE.


He recortado el TmxCnv, espero que esto te valga:

Código: Seleccionar todo

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char* argv[]){
  unsigned char mem[0x10000];
  char tmpstr[1000];
  char *fou, *token;
  FILE *fi, *fo;
  int size= 0, scrw, scrh, mapw, maph, tmpi, elem, sum, tog= 0, i, j, k, l;
  if( argc==1 )
    printf("\nTmxCnvRadas v0.99, TMX to H generator by Antonio Villena, 1 May 2014\n\n"
           "  TmxCnvRadas <input_tmx> <output_map_h>\n\n"
           "  <input_tmx>       Origin .TMX file\n"
           "  <output_map_h>    Generated .H map output file\n\n"
           "Example: TmxCnvRadas map\\mapa.tmx dev\\mapa.h\n"),
    exit(0);
  if( argc!=3 )
    printf("\nInvalid number of parameters\n"),
    exit(-1);
  fi= fopen(argv[1], "r");
  if( !fi )
    printf("\nInput file not found: %s\n", argv[1]),
    exit(-1);
  fo= fopen(argv[2], "wb+");
  if( !fo )
    printf("\nCannot create output file: %s\n", argv[2]),
    exit(-1);
  while ( !feof(fi) && !strstr(tmpstr, "data e") ){
    fgets(tmpstr, 1000, fi);
    if( fou= (char *) strstr(tmpstr, " width") )
      scrw= atoi(fou+8);
    if( fou= (char *) strstr(tmpstr, " height") )
      scrh= atoi(fou+9);
  }
  fgets(tmpstr, 1000, fi);
  token= (char *) strtok(tmpstr, ",");
  while ( token != NULL ){
    if( tmpi= atoi(token) )
      mem[size++]= tmpi-1;
    token= (char *) strtok(NULL, ",");
  }
  mapw= scrw-size+1;
  scrw= size/mapw;
  fgets(tmpstr, 1000, fi);
  while ( !strstr(tmpstr, "/layer") ){
    token= (char *) strtok(tmpstr, ",");
    while ( token != NULL ){
      if( tmpi= atoi(token) )
        mem[size++]= tmpi-1;
      token= (char *) strtok(NULL, ",");
    }
    fgets(tmpstr, 1000, fi);
  }
  maph= scrh-size/mapw/scrw+1;
  scrh= (scrh-maph+1)/maph;
  tmpi= 0;
  for ( i= 0; i<size; i++ )
    if( mem[i]>tmpi )
      tmpi= mem[i];
  fprintf(fo, "unsigned char mapa [] = {");
  if( tmpi>15 )
    for ( i= 0; i<maph; i++ ){
      fprintf(fo, "\n");
      for ( j= 0; j<mapw; j++ ){
        fprintf(fo, "    ");
        for ( k= 0; k<scrh; k++ )
          for ( l= 0; l<scrw; l++ ){
            elem= mem[i*mapw*scrh*scrw+j*scrw+k*mapw*scrw+l];
            fprintf(fo, "%d, ", elem);
          }
        fprintf(fo, "\n");
      }
    }
  else
    for ( i= 0; i<maph; i++ ){
      fprintf(fo, "\n");
      for ( j= 0; j<mapw; j++ ){
        fprintf(fo, "    ");
        for ( k= 0; k<scrh; k++ )
          for ( l= 0; l<scrw; l++ ){
            elem= mem[i*mapw*scrh*scrw+j*scrw+k*mapw*scrw+l];
            if( tog^= 1 )
              sum= elem;
            else
              fprintf(fo, "%d, ", sum<<4 | elem);
          }
        fprintf(fo, "\n");
      }
    }
  fprintf(fo, "};\n");
  fclose(fo);
  fclose(fi);
  printf("\nFile generated successfully\n");
}


Una vez tengamos este acabado hago lo mismo con el de Mappy.