X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fworldmap%2Flevel.cpp;h=85e987f2140989237aa3659b3ac48454ae210b5c;hb=8eff855963e2699763d0d653dabc9b709f0d2ab0;hp=c3ec7e544ccbed502cd6b7ab778f8480e642287a;hpb=99cf62c2d44b4555e9761f1c8f1b10cf880c33fb;p=supertux.git diff --git a/src/worldmap/level.cpp b/src/worldmap/level.cpp index c3ec7e544..85e987f21 100644 --- a/src/worldmap/level.cpp +++ b/src/worldmap/level.cpp @@ -1,13 +1,11 @@ -// $Id$ -// // SuperTux -// Copyright (C) 2004 Ingo Ruhnke +// Copyright (C) 2004 Ingo Ruhnke // Copyright (C) 2006 Christoph Sommer // -// 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 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 3 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 @@ -15,42 +13,51 @@ // 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. +// along with this program. If not, see . #include +#include #include -//#include -#include "worldmap/level.hpp" -#include "sprite/sprite_manager.hpp" + #include "sprite/sprite.hpp" +#include "sprite/sprite_manager.hpp" +#include "util/file_system.hpp" +#include "util/log.hpp" +#include "util/reader.hpp" #include "video/drawing_context.hpp" -#include "log.hpp" -#include "file_system.hpp" -#include +#include "worldmap/level.hpp" -namespace WorldMapNS -{ +namespace worldmap { -LevelTile::LevelTile(const std::string& basedir, const lisp::Lisp* lisp) - : solved(false), auto_play(false), basedir(basedir), picture_cached(false), - picture(0) +LevelTile::LevelTile(const std::string& basedir_, const Reader& lisp) : + pos(), + title(), + solved(false), + perfect(false), + auto_play(false), + sprite(), + statistics(), + target_time(), + extro_script(), + basedir(basedir_), + picture_cached(false), + picture(0) { - lisp->get("name", name); - lisp->get("x", pos.x); - lisp->get("y", pos.y); - lisp->get("auto-play", auto_play); + lisp.get("name", name); + lisp.get("x", pos.x); + lisp.get("y", pos.y); + lisp.get("auto-play", auto_play); std::string spritefile = "images/worldmap/common/leveldot.sprite"; - lisp->get("sprite", spritefile); - sprite.reset(sprite_manager->create(spritefile)); + lisp.get("sprite", spritefile); + sprite = SpriteManager::current()->create(spritefile); - lisp->get("extro-script", extro_script); + lisp.get("extro-script", extro_script); - if (!Unison::VFS::FileSystem::get().exists(basedir + name)) + if (!PHYSFS_exists((basedir_ + name).c_str())) { log_warning << "level file '" << name - << "' does not exist and will not be added to the worldmap" << std::endl; + << "' does not exist and will not be added to the worldmap" << std::endl; return; } } @@ -71,17 +78,37 @@ LevelTile::update(float ) { } -const Surface* -LevelTile::get_picture() +void +LevelTile::update_sprite_action() { - if (picture_cached) return picture; - picture_cached = true; - std::string fname = FileSystem::strip_extension(basedir + name)+".jpg"; - if (!Unison::VFS::FileSystem::get().exists(fname)) { - return 0; + if (perfect) + { + sprite->set_action("perfect"); + } + else if (solved) + { + sprite->set_action("perfect"); } - picture = new Surface(fname); - return picture; + else + { + sprite->set_action("default"); + } +} + +void +LevelTile::set_solved(bool v) +{ + solved = v; + update_sprite_action(); } +void +LevelTile::set_perfect(bool v) +{ + perfect = v; + update_sprite_action(); } + +} // namespace worldmap + +/* EOF */