#include "scripting/player.hpp"
#include "player_status.hpp"
#include "display_effect.hpp"
+#include "script_interface.hpp"
+#include "console.hpp"
+#include "coin.hpp"
class BadGuy;
class Portable;
extern TuxBodyParts* fire_tux;
extern TuxBodyParts* ice_tux;
-class Player : public MovingObject, public Scripting::Player
+class FallingCoin : public GameObject
+{
+public:
+ FallingCoin(const Vector& start_position, const int x_vel);
+ ~FallingCoin();
+
+ void draw(DrawingContext& context);
+ void update(float elapsed_time);
+private:
+ Vector pos;
+ Sprite* sprite;
+ Physic physic;
+};
+
+class Player : public MovingObject, public Scripting::Player, public ScriptInterface
{
public:
enum HurtMode { KILL, SHRINK };
bool dying;
bool backflipping;
int backflip_direction;
+
public:
-
Direction dir;
Direction old_dir;
bool jumping;
bool can_jump;
bool butt_jump;
-
+
Timer invincible_timer;
Timer skidding_timer;
Timer safe_timer;
Player(PlayerStatus* player_status);
virtual ~Player();
+ virtual void expose(HSQUIRRELVM vm, int table_idx);
+ virtual void unexpose(HSQUIRRELVM vm, int table_idx);
+
void set_controller(Controller* controller);
virtual void update(float elapsed_time);
void kill(HurtMode mode);
void check_bounds(Camera* camera);
void move(const Vector& vector);
+
+ virtual void set_bonus(const std::string& bonus);
+ virtual void add_coins(int count);
void set_bonus(BonusType type, bool animate = false);
PlayerStatus* get_status()
{
// set kick animation
void kick();
+ /**
+ * Adds velocity to the player (be carefull when using this)
+ */
+ void add_velocity(const Vector& velocity);
+
void bounce(BadGuy& badguy);
bool is_dead() const
void set_visible(bool visible);
bool get_visible();
-
+
+ bool on_ground();
+
private:
void handle_input();
- bool on_ground();
bool deactivated;
void init();
bool visible;
+ float adjust_height;
+
Portable* grabbed_object;
Sprite* smalltux_gameover;