Changeset 70 for trunk/src


Ignore:
Timestamp:
Jul 6, 2010, 2:02:41 PM (11 years ago)
Author:
sam
Message:

Breaking the map/layer code apart. Needs more work.

Location:
trunk/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/layer.cpp

    r57 r70  
    22#include "layer.h"
    33
    4 Layer::Layer(char const *name, int w, int h, FILE *fp)
     4Layer::Layer(int w, int h, int z, char const *base64)
    55{
    66    width = w;
    77    height = h;
     8    level = z;
    89    data = new unsigned int[w * h];
    910
    10     if (sscanf(name, "Ground %d", &z) == 1)
    11         ;
    12     else if (sscanf(name, "Ground Decal %d", &z) == 1)
    13         ;
    14     else if (sscanf(name, "Object %d", &z) == 1)
    15         z++;
    16     else if (sscanf(name, "Wall %d", &z) == 1)
    17         z++;
    18     else if (sscanf(name, "Wall Decal %d", &z) == 1)
    19         z++;
    20     else
    21         z = -1;
    22 
     11#if 0
    2312    fread(data, sizeof(unsigned int), width * height, fp);
    2413    for (int n = 0; n < width * height; n++)
     
    2817        data[n] = i ? i - 1 : 0;
    2918    }
     19#endif
    3020}
    3121
     
    3727int Layer::GetZ()
    3828{
    39     return z;
     29    return level;
    4030}
    4131
  • trunk/src/layer.h

    r47 r70  
    1212{
    1313public:
    14     Layer(char const *name, int w, int h, FILE *fp);
     14    Layer(int w, int h, int z, char const *base64);
    1515    ~Layer();
    1616
     
    1919
    2020private:
    21     int width, height, z;
     21    int width, height, level;
    2222    unsigned int *data;
    2323};
  • trunk/src/map.cpp

    r47 r70  
    1010    nlayers(0)
    1111{
     12    char tmp[BUFSIZ];
     13    int firstgid = 0, width = 0, height = 0, level = 0, data = 0;
     14
     15    FILE *fp = fopen(path, "r");
     16
     17    if (!fp)
     18        return;
     19
     20    while (!feof(fp))
     21    {
     22        char str[1024];
     23        int i, j, k;
     24        char a, b;
     25
     26        fgets(tmp, BUFSIZ, fp);
     27
     28        if (data)
     29        {
     30            if (--data == 0)
     31            {
     32                layers[nlayers] = new Layer(width, height, level, tmp);
     33                nlayers++;
     34            }
     35        }
     36        else if (sscanf(tmp, " <tileset firstgid=\"%i\"", &i) == 1)
     37        {
     38            firstgid = i;
     39            fprintf(stderr, "found tileset, firstgid %i\n", firstgid);
     40        }
     41        else if (sscanf(tmp, " <image source=\"%[^\"]\"", str) == 1)
     42        {
     43            fprintf(stderr, "image %s\n", str);
     44        }
     45        else if (sscanf(tmp, " <layer name=\"%c%i%c%*[^\"]\" width=\"%i\" height=\"%i\"",
     46                        &a, &i, &b, &j, &k) == 5)
     47        {
     48            fprintf(stderr, "%s layer, level %i, sublevel %c, %ix%i\n",
     49                    a == 'H' ? "horizontal" : "vertical", i, b, j, k);
     50            layers = (Layer **)realloc(layers, sizeof(Layer **) * (nlayers + 1));
     51            width = j;
     52            height = k;
     53            data = 2;
     54        }
     55        else
     56        {
     57            fprintf(stderr, ".");
     58        }
     59    }
     60
     61    fclose(fp);
     62
     63/*
    1264    char tmp[1024];
    1365
     
    1870    while (fp && !feof(fp))
    1971    {
    20         char name[1024];
    2172        int width, height;
    2273
     
    3384
    3485    pclose(fp);
     86*/
    3587}
    3688
Note: See TracChangeset for help on using the changeset viewer.