X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Flevel.h;h=0a023a5f6bec0fd1c9752d96bfce5d4263ebc0d0;hb=d3641a12c27c1daabc95ff5115b0d4a1e81a156c;hp=9be4fd9af984a850c7e93653646f240f6d2d3e23;hpb=ebd0b704b1b446edad786135877ae74d5670949a;p=supertux.git diff --git a/src/level.h b/src/level.h index 9be4fd9af..0a023a5f6 100644 --- a/src/level.h +++ b/src/level.h @@ -25,19 +25,21 @@ #include "texture.h" #include "badguy.h" #include "lispreader.h" +#include "musicref.h" class Tile; /** This type holds meta-information about a level-subset. It could be extended to handle manipulation of subsets. */ -class st_subset +class LevelSubset { public: - st_subset(); + LevelSubset(); + ~LevelSubset(); + static void create(const std::string& subset_name); void load(char *subset); void save(); - void free(); std::string name; std::string title; @@ -68,26 +70,31 @@ class Level { public: Surface* img_bkgd; - Mix_Music* level_song; - Mix_Music* level_song_fast; + MusicRef level_song; + MusicRef level_song_fast; std::string name; std::string author; - std::string theme; std::string song_title; std::string bkgd_image; std::string particle_system; - std::vector bg_tiles[15]; /* Tiles in the background */ - std::vector ia_tiles[15]; /* Tiles which can interact in the game (solids for example)*/ - std::vector fg_tiles[15]; /* Tiles in the foreground */ + std::vector > bg_tiles; /* Tiles in the background */ + std::vector > ia_tiles; /* Tiles which can interact in the game (solids for example)*/ + std::vector > fg_tiles; /* Tiles in the foreground */ +// std::vector bg_tiles[15]; /* Tiles in the background */ +// std::vector ia_tiles[15]; /* Tiles which can interact in the game (solids for example)*/ +// std::vector fg_tiles[15]; /* Tiles in the foreground */ int time_left; Color bkgd_top; Color bkgd_bottom; int width; + int height; + int bkgd_speed; int start_pos_x; int start_pos_y; - int endpos; float gravity; + bool back_scrolling; + float hor_autoscroll_speed; std::vector badguy_data; @@ -114,23 +121,30 @@ class Level int load(const std::string& filename); void load_gfx(); - void free_gfx(); void load_song(); void free_song(); - Mix_Music* get_level_music(); - Mix_Music* get_level_music_fast(); + MusicRef get_level_music(); + MusicRef get_level_music_fast(); - void save(const char* subset, int level); + void save(const std::string& subset, int level); /** Edit a piece of the map! */ void change(float x, float y, int tm, unsigned int c); - /** Resize the level to a new width */ - void change_size (int new_width); + /** Resize the level to a new width/height */ + void change_width (int new_width); + void change_height (int new_height); + + /* Draw background */ + void draw_bg(); /** Return the id of the tile at position x/y */ - unsigned int gettileid(float x, float y); + unsigned int gettileid(float x, float y) const; + /** returns the id of the tile at position x,y + * (these are logical and not pixel coordinates) + */ + unsigned int get_tile_at(int x, int y) const; void load_image(Surface** ptexture, std::string theme, const char * file, int use_alpha); };