#include "player.h" #define LEFT 0 #define RIGHT 1 #define BASE_SPEED 0.5; // Constructor Player::Player(SDL_Renderer *renderer, Asset *asset, Input *input) { this->asset = asset; this->renderer = renderer; this->input = input; sound_jump = JA_LoadSound(asset->get("sound_player_jump.wav").c_str()); sound_death = JA_LoadSound(asset->get("sound_player_death.wav").c_str()); sound_coin = JA_LoadSound(asset->get("sound_player_coin.wav").c_str()); texture = new LTexture(); loadTextureFromFile(texture, asset->get("player.png"), renderer); sprite = new AnimatedSprite(texture, renderer); sprite->setPosX(0); sprite->setPosY(0); sprite->setSpriteClip(0, 0, 16, 24); direction = RIGHT; respawn_x = sprite->getPosX(); respawn_y = sprite->getPosY(); respawn_direction = direction; speed_x = BASE_SPEED; speed_y = 0; can_jump = true; jump_pressed_now = false; jump_pressed_before = false; standing = true; invulnerable = true; jumpforce = 10; active_animation = 0; enabled = true; cooldown = 0; lifes = 10; coins = 0; for (Uint8 i = 0; i < 6; i++) key[i] = false; } // Destructor Player::~Player() { JA_DeleteSound(sound_jump); JA_DeleteSound(sound_death); JA_DeleteSound(sound_coin); texture->unload(); delete texture; delete sprite; } // Actualiza todas las variables void Player::update() { checkInput(); sprite->update(); } // Dibuja el objeto void Player::render() { sprite->render(); } // Comprueba las entradas y modifica variables void Player::checkInput() { // Solo comprueba las entradas de dirección cuando está de pie if (input->checkInput(INPUT_LEFT, REPEAT_TRUE)) { sprite->setVelX(-0.6f); sprite->setFlip(SDL_FLIP_HORIZONTAL); } else if (input->checkInput(INPUT_RIGHT, REPEAT_TRUE)) { sprite->setVelX(0.6f); sprite->setFlip(SDL_FLIP_NONE); } else { sprite->setVelX(0); } }