src/supertux/shrinkfade.cpp

Go to the documentation of this file.
00001 //  SuperTux
00002 //  Copyright (C) 2006 Matthias Braun <matze@braunis.de>
00003 //
00004 //  This program is free software: you can redistribute it and/or modify
00005 //  it under the terms of the GNU General Public License as published by
00006 //  the Free Software Foundation, either version 3 of the License, or
00007 //  (at your option) any later version.
00008 //
00009 //  This program is distributed in the hope that it will be useful,
00010 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
00011 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012 //  GNU General Public License for more details.
00013 //
00014 //  You should have received a copy of the GNU General Public License
00015 //  along with this program.  If not, see <http://www.gnu.org/licenses/>.
00016 
00017 #include "supertux/globals.hpp"
00018 #include "supertux/shrinkfade.hpp"
00019 #include "video/drawing_context.hpp"
00020 
00021 ShrinkFade::ShrinkFade(const Vector& dest, float fade_time) :
00022   dest(dest), 
00023   fade_time(fade_time), 
00024   accum_time(0),
00025   speedleft(),
00026   speedright(),
00027   speedtop(),
00028   speedbottom()
00029 {
00030   speedleft = dest.x / fade_time;
00031   speedright = (SCREEN_WIDTH - dest.x) / fade_time;
00032   speedtop = dest.y / fade_time;
00033   speedbottom = (SCREEN_HEIGHT - dest.y) / fade_time;
00034 }
00035 
00036 ShrinkFade::~ShrinkFade()
00037 {
00038 }
00039 
00040 void
00041 ShrinkFade::update(float elapsed_time)
00042 {
00043   accum_time += elapsed_time;
00044   if(accum_time > fade_time)
00045     accum_time = fade_time;
00046 }
00047 
00048 void
00049 ShrinkFade::draw(DrawingContext& context)
00050 {
00051   float progress = accum_time / fade_time;
00052   context.draw_inverse_ellipse(dest,
00053                                Vector(2*SCREEN_WIDTH  * (1.0f - progress), 
00054                                       2*SCREEN_HEIGHT * (1.0f - progress)),
00055                                Color(0, 0, 0), LAYER_GUI+1);
00056 }
00057 
00058 bool
00059 ShrinkFade::done()
00060 {
00061   return accum_time >= fade_time;
00062 }
00063 
00064 /* EOF */

Generated on Mon Jun 9 03:38:23 2014 for SuperTux by  doxygen 1.5.1