X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Flevel.h;h=555138ae1a7e8356f5e128b8d91b54d88439a2dd;hb=abf179b33deb4040bb583e29207eaf1dd2ee0780;hp=4d9f14b42831bc3c1fcb6538621dc072b167ee69;hpb=20860a4723336805598595fe916ab2709490bc61;p=supertux.git diff --git a/src/level.h b/src/level.h index 4d9f14b42..555138ae1 100644 --- a/src/level.h +++ b/src/level.h @@ -1,29 +1,70 @@ +// $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 + +class Sector; + +namespace lisp { +class Lisp; +} + +class Level +{ +public: + std::string name; + std::string author; + int timelimit; + typedef std::vector Sectors; + Sectors sectors; + +public: + Level(); + ~Level(); + + // loads a levelfile + void load(const std::string& filename); + void save(const std::string& filename); + + 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); -typedef struct st_level /*It is easier to read the sources IMHO, if we don't write something like int a,b,c; */ - { - char name[100]; - char theme[100]; - char song_title[100]; - unsigned char* tiles[15]; - int time_left; - int bkgd_red; - int bkgd_green; - int bkgd_blue; - int width; - } st_level; + size_t get_sector_count(); + Sector* get_sector(size_t num); -void loadlevel(st_level* plevel, char * subset, int level); -SDL_Surface * load_level_image(char* theme, char * file, int use_alpha); + int get_total_badguys(); + int get_total_coins(); +private: + void load_old_format(const lisp::Lisp& reader); +}; +#endif /*SUPERTUX_LEVEL_H*/