X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;ds=inline;f=src%2Fobject%2Finfoblock.cpp;h=475d7d34ac0182b88cf9a27e4c4afdf9c2d8d654;hb=1cda2772a8bd261ef8746e13e10d5d8abbe741d6;hp=dda84e61e14ca1fe4e2a580669dc5ac880d21dd3;hpb=fea3446f05e1e7673607b835c269d3e8d1929ab3;p=supertux.git diff --git a/src/object/infoblock.cpp b/src/object/infoblock.cpp index dda84e61e..475d7d34a 100644 --- a/src/object/infoblock.cpp +++ b/src/object/infoblock.cpp @@ -1,12 +1,10 @@ -// $Id$ -// // SuperTux // Copyright (C) 2006 Matthias Braun // -// 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 @@ -14,31 +12,32 @@ // 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 "object/infoblock.hpp" -#include "infoblock.hpp" -#include "game_session.hpp" -#include "resources.hpp" -#include "sprite/sprite_manager.hpp" -#include "object_factory.hpp" -#include "lisp/lisp.hpp" -#include "sector.hpp" -#include "log.hpp" #include "object/player.hpp" -#include "main.hpp" +#include "sprite/sprite_manager.hpp" +#include "supertux/object_factory.hpp" +#include "supertux/sector.hpp" +#include "supertux/info_box_line.hpp" +#include "util/reader.hpp" +#include "video/drawing_context.hpp" namespace { - const float SCROLL_DELAY = 0.5; - const float SCROLL_DISTANCE = 16; - const float WIDTH = 400; - const float HEIGHT = 200; +const float SCROLL_DELAY = 0.5; +const float SCROLL_DISTANCE = 16; +const float WIDTH = 400; +const float HEIGHT = 200; } -InfoBlock::InfoBlock(const lisp::Lisp& lisp) - : Block(sprite_manager->create("images/objects/bonus_block/infoblock.sprite")), shown_pct(0), dest_pct(0) +InfoBlock::InfoBlock(const Reader& lisp) : + Block(sprite_manager->create("images/objects/bonus_block/infoblock.sprite")), + message(), + shown_pct(0), + dest_pct(0), + lines(), + lines_height() { Vector pos; lisp.get("x", pos.x); @@ -66,9 +65,9 @@ InfoBlock::~InfoBlock() } void -InfoBlock::hit(Player& ) +InfoBlock::hit(Player& player) { - start_bounce(); + start_bounce(&player); //if (!stopped) { // ringing->remove_me(); @@ -154,6 +153,16 @@ InfoBlock::draw(DrawingContext& context) float x2 = (get_bbox().p1.x + get_bbox().p2.x)/2 + width/2; float y1 = original_y - height; + if(x1 < 0) { + x1 = 0; + x2 = width; + } + + if(x2 > Sector::current()->get_width()) { + x2 = Sector::current()->get_width(); + x1 = x2 - width; + } + // lines_height includes one ITEMS_SPACE too much, so the bottom border is reduced by 4px context.draw_filled_rect(Vector(x1-border, y1-border), Vector(width+2*border, height+2*border-4), Color(0.6f, 0.7f, 0.8f, 0.5f), LAYER_GUI-50); @@ -185,4 +194,6 @@ InfoBlock::hide_message() dest_pct = 0; } -IMPLEMENT_FACTORY(InfoBlock, "infoblock") +IMPLEMENT_FACTORY(InfoBlock, "infoblock"); + +/* EOF */