X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fspecial.cpp;h=227251270a904b90f0e7808280da9dd5e2d205cd;hb=63934f5f4c15f059c9b60499575870ebb7c923a0;hp=78ae3637c1ad7a1207c629626afbc2f7d570a52f;hpb=2fb736141667adaa2a883741719fa2ac6cff9956;p=supertux.git diff --git a/src/special.cpp b/src/special.cpp index 78ae3637c..227251270 100644 --- a/src/special.cpp +++ b/src/special.cpp @@ -1,14 +1,21 @@ +// $Id$ // -// C Implementation: special +// SuperTux - A Jump'n Run +// Copyright (C) 2003 Tobias Glaesser // -// Description: -// -// -// Author: Tobias Glaesser & Bill Kendrick, (C) 2004 -// -// 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. #include #include "SDL.h" @@ -20,16 +27,20 @@ #include "scene.h" #include "globals.h" #include "player.h" +#include "sprite_manager.h" #include "resources.h" Surface* img_bullet; -Surface* img_golden_herring; -Surface* img_growup; -Surface* img_iceflower; -Surface* img_1up; + +Sprite* img_star; +Sprite* img_growup; +Sprite* img_iceflower; +Sprite* img_1up; + +#define GROWUP_SPEED 1.0f void -Bullet::init(float x, float y, float xm, int dir) +Bullet::init(float x, float y, float xm, Direction dir) { base.width = 4; base.height = 4; @@ -113,7 +124,7 @@ Bullet::collision(int c_object) } void -Upgrade::init(float x_, float y_, int dir_, int kind_) +Upgrade::init(float x_, float y_, Direction dir_, UpgradeKind kind_) { kind = kind_; dir = dir_; @@ -133,6 +144,8 @@ Upgrade::init(float x_, float y_, int dir_, int kind_) base.height = 32; } else if (kind == UPGRADE_ICEFLOWER) { // nothing + } else if (kind == UPGRADE_GROWUP) { + physic.set_velocity(dir == LEFT ? -GROWUP_SPEED : GROWUP_SPEED, 0); } else { physic.set_velocity(dir == LEFT ? -2 : 2, 0); } @@ -188,7 +201,7 @@ Upgrade::action(double frame_ratio) old_base = base; if(kind == UPGRADE_GROWUP) { physic.enable_gravity(false); - physic.set_velocity(dir == LEFT ? -2 : 2, 0); + physic.set_velocity(dir == LEFT ? -GROWUP_SPEED : GROWUP_SPEED, 0); } else if(kind == UPGRADE_HERRING) { physic.set_velocity(dir == LEFT ? -2 : 2, 3); } @@ -233,7 +246,7 @@ Upgrade::draw() else if (kind == UPGRADE_ICEFLOWER) img_iceflower->draw_part(0,0,dest.x,dest.y,dest.w,dest.h); else if (kind == UPGRADE_HERRING) - img_golden_herring->draw_part(0,0,dest.x,dest.y,dest.w,dest.h); + img_star->draw_part(0,0,dest.x,dest.y,dest.w,dest.h); else if (kind == UPGRADE_1UP) img_1up->draw_part( 0, 0, dest.x, dest.y, dest.w, dest.h); } @@ -251,7 +264,7 @@ Upgrade::draw() } else if (kind == UPGRADE_HERRING) { - img_golden_herring->draw( + img_star->draw( base.x - scroll_x, base.y); } else if (kind == UPGRADE_1UP) @@ -320,23 +333,17 @@ Upgrade::collision(void* p_c_object, int c_object) void load_special_gfx() { - img_growup = new Surface(datadir + "/images/shared/egg.png", USE_ALPHA); - img_iceflower = new Surface(datadir + "/images/shared/iceflower.png", - USE_ALPHA); - img_golden_herring = new Surface(datadir + "/images/shared/star.png", USE_ALPHA); - img_1up = new Surface(datadir + "/images/shared/1up.png", - USE_ALPHA); - - img_bullet = new Surface(datadir + "/images/shared/bullet.png", - USE_ALPHA); + img_growup = sprite_manager->load("egg"); + img_iceflower = sprite_manager->load("iceflower"); + img_star = sprite_manager->load("star"); + img_1up = sprite_manager->load("1up"); + + img_bullet = new Surface(datadir + "/images/shared/bullet.png", + USE_ALPHA); } void free_special_gfx() { - delete img_growup; - delete img_iceflower; - delete img_1up; - delete img_golden_herring; - delete img_bullet; + delete img_bullet; }