X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Flevel.h;h=11d8181354b2bf1444dd94264f152b549fb9c388;hb=a5123e6e7071da6d73a1ef0b19bf4acb19981605;hp=5a8dd9c36f81cf7ed39d922992b200658d859155;hpb=168c326b585555e4ea6d444ad96a83d880d5c7e3;p=supertux.git diff --git a/src/level.h b/src/level.h index 5a8dd9c36..11d818135 100644 --- a/src/level.h +++ b/src/level.h @@ -1,14 +1,22 @@ +// $Id$ +// +// SuperTux +// Copyright (C) 2004 SuperTux Development Team, see AUTHORS for details // -// C Interface: level -// -// Description: -// -// -// Author: Tobias Glaesser , (C) 2003 -// -// Copyright: See COPYING file that comes with this distribution -// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. // +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +// 02111-1307, USA. #ifndef SUPERTUX_LEVEL_H #define SUPERTUX_LEVEL_H @@ -17,6 +25,7 @@ #include "texture.h" #include "badguy.h" #include "lispreader.h" +#include "musicref.h" class Tile; @@ -34,7 +43,7 @@ class st_subset std::string name; std::string title; std::string description; - texture_type image; + Surface* image; int levels; private: @@ -50,28 +59,46 @@ enum TileMapType { TM_FG }; +struct ResetPoint +{ + int x; + int y; +}; + class Level { public: - texture_type img_bkgd; + Surface* img_bkgd; + 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; - unsigned int* bg_tiles[15]; /* Tiles in the background */ - unsigned int* ia_tiles[15]; /* Tiles which can interact in the game (solids for example)*/ - unsigned int* fg_tiles[15]; /* 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; - int bkgd_red; - int bkgd_green; - int bkgd_blue; + Color bkgd_top; + Color bkgd_bottom; int width; + int start_pos_x; + int start_pos_y; float gravity; std::vector badguy_data; + + /** A collection of points to which Tux can be reset after a lost live */ + std::vector reset_points; public: + Level(); + Level(const std::string& subset, int level); + Level(const std::string& filename); + ~Level(); + /** Will the Level structure with default values */ void init_defaults(); @@ -80,16 +107,19 @@ class Level /** Load data for this level: Returns -1, if the loading of the level failed. */ - int load(const char* subset, int level); + int load(const std::string& subset, int level); /** Load data for this level: Returns -1, if the loading of the level failed. */ int load(const std::string& filename); void load_gfx(); + void free_gfx(); void load_song(); void free_song(); + MusicRef get_level_music(); + MusicRef get_level_music_fast(); void save(const char* subset, int level); @@ -102,9 +132,7 @@ class Level /** Return the id of the tile at position x/y */ unsigned int gettileid(float x, float y); - void free_gfx(); - - void load_image(texture_type* ptexture, std::string theme, const char * file, int use_alpha); + void load_image(Surface** ptexture, std::string theme, const char * file, int use_alpha); }; #endif /*SUPERTUX_LEVEL_H*/