- added check to catch brocken worldmaps
[supertux.git] / src / level.h
1 //
2 // C Interface: level
3 //
4 // Description: 
5 //
6 //
7 // Author: Tobias Glaesser <tobi.web@gmx.de>, (C) 2003
8 //
9 // Copyright: See COPYING file that comes with this distribution
10 //
11 //
12
13 #ifndef SUPERTUX_LEVEL_H
14 #define SUPERTUX_LEVEL_H
15
16 #include "texture.h"
17 #include "lispreader.h"
18
19 /* This type holds meta-information about a level-subset. */
20 /* It could be extended to handle manipulation of subsets. */
21 typedef struct st_subset
22   {
23     char *name;
24     char *title;
25     char *description;
26     texture_type image;
27     int levels;
28   } st_subset;
29
30 void subset_init(st_subset* st_subset);
31 void subset_parse(st_subset* st_subset, lisp_object_t* cursor);
32 void subset_load(st_subset* st_subset, char *subset);
33 void subset_save(st_subset* st_subset);
34 void subset_free(st_subset* st_subset);
35   
36 #define LEVEL_NAME_MAX 20
37
38 typedef struct st_level /*It is easier to read the sources IMHO, if we don't write something like int a,b,c; */
39   {
40     char name[LEVEL_NAME_MAX];
41     char theme[100];
42     char song_title[100];
43     char bkgd_image[100];   
44     unsigned char* tiles[15];
45     int time_left;
46     int bkgd_red;
47     int bkgd_green;
48     int bkgd_blue;
49     int width;
50     float gravity;
51   } st_level;
52   
53 extern texture_type img_bkgd, img_bkgd_tile[2][4], img_solid[4], img_brick[2];
54   
55 int level_load(st_level* plevel, char * subset, int level);
56 int level_load(st_level* plevel, const char* filename);
57 void level_save(st_level* plevel, char * subset, int level);
58 void level_free(st_level* plevel);
59 void level_load_gfx(st_level* plevel);
60 void level_free_gfx();
61 void level_load_image(texture_type* ptexture, char* theme, char * file, int use_alpha);
62 void level_change(st_level* plevel, float x, float y, unsigned char c);
63 void level_load_song(st_level* plevel);
64 void level_free_song(void);
65
66 #endif /*SUPERTUX_LEVEL_H*/