X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Flevel.h;h=7eb024807d9c398512b45dac55468c36cb222b53;hb=40e6e7cdc59c09befbd2595aea0c6e10428315d4;hp=aefc1ee288bc28d55029b7ad58fc9d484e256cc0;hpb=b613901b4b6089d6fc5ee33f9ec76909a42e9f28;p=supertux.git diff --git a/src/level.h b/src/level.h index aefc1ee28..7eb024807 100644 --- a/src/level.h +++ b/src/level.h @@ -1,74 +1,83 @@ +// $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 "lispreader.h" - -/* 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(); - - std::string name; - std::string title; - std::string description; - texture_type image; - int levels; - - private: - void parse(lisp_object_t* cursor); - }; -#define LEVEL_NAME_MAX 20 +using namespace SuperTux; -typedef struct st_level +class Sector; + +namespace lisp { +class Lisp; +} + +class Level { +public: + enum EndSequenceType{ + NONE_ENDSEQ_ANIM, + FIREWORKS_ENDSEQ_ANIM + }; + std::string name; - std::string theme; - std::string song_title; - std::string bkgd_image; - unsigned int* tiles[15]; - int time_left; - int bkgd_red; - int bkgd_green; - int bkgd_blue; - int width; - float gravity; -} -st_level; - -extern texture_type img_bkgd, img_bkgd_tile[2][4], img_solid[4], img_brick[2]; - -void level_default (st_level* plevel); -int level_load (st_level* plevel, const char * subset, int level); -void level_parse (st_level* plevel, lisp_object_t* cursor); -int level_load (st_level* plevel, const char* filename); -void level_save (st_level* plevel, const char * subset, int level); -void level_free (st_level* plevel); -void level_load_gfx (st_level* plevel); -void level_change (st_level* plevel, float x, float y, unsigned char c); -void level_load_song(st_level* plevel); -void level_free_gfx(); -void level_load_image(texture_type* ptexture, std::string theme, const char * file, int use_alpha); -void level_free_song(void); + std::string author; + int timelimit; + typedef std::map Sectors; + Sectors sectors; + EndSequenceType end_sequence_type; + +public: + Level(); + ~Level(); + + // loads a levelfile + void load(const std::string& filename); + void save(const std::string& filename); + + EndSequenceType get_end_sequence_type() const + { return end_sequence_type; } + + const std::string& get_name() const + { return name; } + + const std::string& get_author() const + { return author; } + + void add_sector(Sector* sector); + + Sector* get_sector(const std::string& name); + + Sector* get_next_sector(const Sector* sector); + Sector* get_previous_sector(const Sector* sector); + + int get_total_sectors(); + + int get_total_badguys(); + int get_total_coins(); + +private: + void load_old_format(const lisp::Lisp& reader); +}; #endif /*SUPERTUX_LEVEL_H*/