X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fplayer.h;h=708d2ae2139b5fa03da86e224f399fee485301a4;hb=64d687c8b29273fdb50d1a4116f1e340845f1bc8;hp=48843247222d3ad16bc579ef13f49afbd4474e21;hpb=b23a7698a18843e7eaca596c175e5ac76285edf9;p=supertux.git diff --git a/src/player.h b/src/player.h index 488432472..708d2ae21 100644 --- a/src/player.h +++ b/src/player.h @@ -1,14 +1,21 @@ +// $Id$ // -// Interface: player/tux +// SuperTux - A Jump'n Run +// Copyright (C) 2003 Tobias Glaesser // -// Description: -// -// -// Author: Tobias Glaesser , (C) 2003 -// -// 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. #ifndef SUPERTUX_PLAYER_H #define SUPERTUX_PLAYER_H @@ -37,15 +44,22 @@ #define SCORE_BRICK 5 #define SCORE_DISTRO 25 -struct player_keymap_type +#include + +struct PlayerKeymap { +public: int jump; int duck; int left; int right; int fire; + + PlayerKeymap(); }; +extern PlayerKeymap keymap; + struct player_input_type { int right; @@ -58,60 +72,89 @@ struct player_input_type void player_input_init(player_input_type* pplayer_input); -typedef struct player_type +class Sprite; + +extern Surface* tux_life; + +extern Sprite* smalltux_gameover; +extern Sprite* smalltux_star; +extern Sprite* largetux_star; + +struct PlayerSprite { - player_input_type input; - player_keymap_type keymap; - int score; - int distros; + Sprite* stand_left; + Sprite* stand_right; + Sprite* walk_right; + Sprite* walk_left; + Sprite* jump_right; + Sprite* jump_left; + Sprite* kick_left; + Sprite* kick_right; + Sprite* skid_right; + Sprite* skid_left; + Sprite* grab_left; + Sprite* grab_right; + Sprite* duck_right; + Sprite* duck_left; +}; + +extern PlayerSprite smalltux; +extern PlayerSprite largetux; +extern PlayerSprite firetux; + +class Player +{ +public: + enum HurtMode { KILL, SHRINK }; + + player_input_type input; bool got_coffee; int size; bool duck; + bool holding_something; DyingType dying; - int dir; + + Direction dir; + bool jumping; + int frame_; int frame_main; - int frame; - int lives; - base_type base; - base_type old_base; - base_type previous_base; - timer_type invincible_timer; - timer_type skidding_timer; - timer_type safe_timer; - timer_type frame_timer; - physic_type vphysic; - physic_type hphysic; -} -player_type; - -extern texture_type tux_life, - tux_right[3], tux_left[3], - bigtux_right[3], bigtux_left[3], - bigtux_right_jump, bigtux_left_jump, - ducktux_right, ducktux_left, - skidtux_right, skidtux_left, - firetux_right[3], firetux_left[3], - bigfiretux_right[3], bigfiretux_left[3], - bigfiretux_right_jump, bigfiretux_left_jump, - duckfiretux_right, duckfiretux_left, - skidfiretux_right, skidfiretux_left, - cape_right[2], cape_left[2], - bigcape_right[2], bigcape_left[2]; - -void player_init(player_type* pplayer); -int player_key_event(player_type* pplayer, SDLKey key, int state); -void player_level_begin(player_type* pplayer); -void player_action(player_type* pplayer); -void player_input(player_type* pplayer); -void player_grabdistros(player_type *pplayer); -void player_draw(player_type* pplayer); -void player_collision(player_type* pplayer,void* p_c_object, int c_object); -void player_kill(player_type *pplayer, int mode); -void player_dying(player_type *pplayer); -void player_remove_powerups(player_type *pplayer); -void player_keep_in_bounds(player_type *pplayer); -bool player_on_ground(player_type *pplayer); -bool player_under_solid(player_type *pplayer); + + base_type base; + base_type old_base; + base_type previous_base; + Timer invincible_timer; + Timer skidding_timer; + Timer safe_timer; + Timer frame_timer; + Timer kick_timer; + Physic physic; + +public: + void init(); + int key_event(SDLKey key, int state); + void level_begin(); + void action(double frame_ratio); + void handle_input(); + void grabdistros(); + void draw(); + void collision(void* p_c_object, int c_object); + void kill(HurtMode mode); + void is_dying(); + bool is_dead(); + void player_remove_powerups(); + void keep_in_bounds(); + bool on_ground(); + bool under_solid(); + +private: + void handle_horizontal_input(); + void handle_vertical_input(); + void remove_powerups(); +}; #endif /*SUPERTUX_PLAYER_H*/ + +/* Local Variables: */ +/* mode:c++ */ +/* End: */