X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Flevel.h;h=6f29434bcc8caf8fdcfa14205d095bbb14ddb9ad;hb=36109a71ec561ea0fbd2e3c81d35488123921b59;hp=682c5692553ddde8c2be6b43cff67369eab07487;hpb=945d6ee4488595f3a8f7180b66b53ff684ab94e4;p=supertux.git diff --git a/src/level.h b/src/level.h index 682c56925..6f29434bc 100644 --- a/src/level.h +++ b/src/level.h @@ -1,113 +1,68 @@ +// $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 +#include #include -#include "texture.h" -#include "badguy.h" -#include "lispreader.h" -class Tile; +using namespace SuperTux; -/** This type holds meta-information about a level-subset. - It could be extended to handle manipulation of subsets. */ -class st_subset - { - public: - st_subset(); - static void create(const std::string& subset_name); - void load(char *subset); - void save(); - void free(); +class Sector; - std::string name; - std::string title; - std::string description; - texture_type image; - int levels; - - private: - void parse(lisp_object_t* cursor); - }; +namespace SuperTux { +class LispReader; +} -#define LEVEL_NAME_MAX 20 - - -enum TileMapType { - TM_BG, - TM_IA, - TM_FG - }; - -extern texture_type img_bkgd; - -/* -extern texture_type img_bkgd_tile[2][4]; -extern texture_type img_solid[4]; -extern texture_type img_brick[2]; -*/ -class Level +class Level { - public: +public: std::string name; - 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::string author; int time_left; - int bkgd_red; - int bkgd_green; - int bkgd_blue; - int width; - float gravity; + typedef std::map Sectors; + Sectors sectors; - std::vector badguy_data; - public: - /** Will the Level structure with default values */ - void init_defaults(); - - /** Cleanup the level struct from allocated tile data and such */ - void cleanup(); +public: + Level(); + ~Level(); - /** Load data for this level: - Returns -1, if the loading of the level failed. */ - int load(const char* subset, int level); + void load(const std::string& filename); + void save(const std::string& filename); - /** Load data for this level: - Returns -1, if the loading of the level failed. */ - int load(const std::string& filename); + const std::string& get_name() const + { return name; } - void load_gfx(); - void load_song(); + const std::string& get_author() const + { return author; } - void save(const char* subset, int level); + /** Flips the level vertically */ + void do_vertical_flip(); - /** Edit a piece of the map! */ - void change(float x, float y, int tm, unsigned int c); + void add_sector(Sector* sector); - /** Resize the level to a new width */ - void change_size (int new_width); + Sector* get_sector(const std::string& name); - /** Return the id of the tile at position x/y */ - unsigned int gettileid(float x, float y); +private: + void load_old_format(LispReader& reader); }; -void level_load_image(texture_type* ptexture, std::string theme, const char * file, int use_alpha); -void level_free_song(); -void level_free_gfx(); - #endif /*SUPERTUX_LEVEL_H*/