#define SCORE_BRICK 5
#define SCORE_DISTRO 25
+#include <vector>
+
struct player_keymap_type
{
int jump;
void player_input_init(player_input_type* pplayer_input);
extern texture_type tux_life;
-extern texture_type tux_right[3];
-extern texture_type tux_left[3];
+extern std::vector<texture_type> tux_right;
+extern std::vector<texture_type> tux_left;
+extern texture_type smalltux_jump_left;
+extern texture_type smalltux_jump_right;
+extern texture_type smalltux_stand_left;
+extern texture_type smalltux_stand_right;
extern texture_type bigtux_right[3];
extern texture_type bigtux_left[3];
extern texture_type bigtux_right_jump;
class Player
{
public:
- player_input_type input_;
player_keymap_type keymap;
+ int lives;
int score;
int distros;
+
+ player_input_type input;
bool got_coffee;
int size;
bool duck;
bool jumping;
int frame_;
int frame_main;
- 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;
+
+ base_type base;
+ base_type old_base;
+ base_type previous_base;
+ Timer invincible_timer;
+ Timer skidding_timer;
+ Timer safe_timer;
+ Timer frame_timer;
+ Physic physic;
public:
void init();
int key_event(SDLKey key, int state);
void level_begin();
- void action();
- void input();
+ void action(double frame_ratio);
+ void handle_input();
void grabdistros();
void draw();
void collision(void* p_c_object, int c_object);
void kill(int 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(int dir);
void handle_vertical_input();