#ifndef MARIO_H #define MARIO_H #include "../sdlpp/sdlpp_rectrenderer.hpp" #include "mario_visitor.hpp" #include "sprites.hpp" class Mario : public SDLPP::RectangleRender { public: Mario(const std::shared_ptr< SDLPP::Renderer > &renderer); void walkLeft(); void walkRight(); void setStanding(); void handleVisitor(MarioVisitor &visitor); void jump(); void stopJump(); virtual void custom_move( int ticks ) override; private: bool faces_right = true; double side_movement = 0.39; double jump_movement = 1.0; bool jumping = false; bool stop_jump = false; double max_jump = 0; double min_jump = 0; double slow_jump = 0; bool on_ground = true; int ticks_till_gravity = 0; // gravity should be added every frame in 60fps game const int base_gravity_ticks = 1000/60; const double gravity_add_jumping = jump_movement/32.0; const double gravity_add_falling = jump_movement/(64.0/7.0); std::shared_ptr top_collision = nullptr; }; #endif