4 // Copyright (C) 2000 Bill Kendrick <bill@newbreedsoftware.com>
5 // Copyright (C) 2004 Tobias Glaesser <tobi.web@gmx.de>
6 // Copyright (C) 2004 Matthias Braun <matze@braunis.de>
8 // This program is free software; you can redistribute it and/or
9 // modify it under the terms of the GNU General Public License
10 // as published by the Free Software Foundation; either version 2
11 // of the License, or (at your option) any later version.
13 // This program is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 // GNU General Public License for more details.
18 // You should have received a copy of the GNU General Public License
19 // along with this program; if not, write to the Free Software
20 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
23 #ifndef SUPERTUX_BADGUY_H
24 #define SUPERTUX_BADGUY_H
32 #include "collision.h"
35 extern Sprite* img_bsod_left;
36 extern Sprite* img_bsod_right;
37 extern Sprite* img_laptop_left;
76 BadGuyKind badguykind_from_string(const std::string& str);
77 std::string badguykind_to_string(BadGuyKind kind);
78 void load_badguy_gfx();
79 void free_badguy_gfx();
87 BadGuyData(BadGuyKind kind_, int x_, int y_)
88 : kind(kind_), x(x_), y(y_) {}
91 : kind(BAD_BSOD), x(0), y(0) {}
113 Sprite* sprite_right;
115 int animation_offset;
116 size_t animation_length;
117 float animation_speed;
120 void init(float x, float y, BadGuyKind kind);
122 void action(float frame_ratio);
125 void collision(void* p_c_object, int c_object,
126 CollisionType type = COLLISION_NORMAL);
128 /** this functions tries to kill the badguy and lets him fall off the
129 * screen. Some badguys like the flame might ignore this.
134 void action_bsod(float frame_ratio);
135 void action_laptop(float frame_ratio);
136 void action_money(float frame_ratio);
137 void action_bomb(float frame_ratio);
138 void action_mrbomb(float frame_ratio);
139 void action_stalactite(float frame_ratio);
140 void action_flame(float frame_ratio);
141 void action_fish(float frame_ratio);
142 void action_bouncingsnowball(float frame_ratio);
143 void action_flyingsnowball(float frame_ratio);
144 void action_spiky(float frame_ratio);
145 void action_snowball(float frame_ratio);
147 /** handles falling down. disables gravity calculation when we're back on
150 /** remove ourself from the list of badguys. WARNING! This function will
151 * invalidate all members. So don't do anything else with member after calling
155 /** let the player jump a bit (used when you hit a badguy) */
156 void make_player_jump(Player* player);
157 /** check if we're running left or right in a wall and eventually change
160 void check_horizontal_bump(bool checkcliff = false);
161 /** called when we're bumped from below with a block */
163 /** called when a player jumped on the badguy from above */
164 void squish(Player* player);
165 /** squish ourself, give player score and set dying to DYING_SQICHED */
166 void squish_me(Player* player);
167 /** set image of the badguy */
168 void set_sprite(Sprite* left, Sprite* right,
169 int animlength = 1, float animspeed = 1);
172 #endif /*SUPERTUX_BADGUY_H*/
174 /* Local Variables: */