Añadido input al scoreboard
This commit is contained in:
@@ -12,11 +12,11 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, D
|
||||
this->debug->setEnabled(true);
|
||||
|
||||
// Reserva memoria para los objetos
|
||||
scoreboard = new ScoreBoard(renderer, asset, &board);
|
||||
scoreboard = new ScoreBoard(renderer, asset, input, &board);
|
||||
eventHandler = new SDL_Event();
|
||||
itemTracker = new ItemTracker();
|
||||
map = new Map(asset->get("01.map"), renderer, asset, itemTracker);
|
||||
player = new Player(renderer, asset, input, map, debug);
|
||||
player = new Player(renderer, asset, input, map, debug, &board.diamonds);
|
||||
enemyEngine = new EnemyEngine(renderer, asset, player, map, asset->get(map->getEnemyFile()));
|
||||
music = JA_LoadMusic(asset->get("music_surface.ogg").c_str());
|
||||
|
||||
@@ -89,10 +89,6 @@ void Game::update()
|
||||
// Comprueba los eventos de la cola
|
||||
checkEventHandler();
|
||||
|
||||
// Comprueba si se ha pulsado alguna tecla
|
||||
if (input->checkAnyInput())
|
||||
scoreboard->reset();
|
||||
|
||||
// Actualiza los objetos
|
||||
debug->clear();
|
||||
scoreboard->update();
|
||||
@@ -200,7 +196,7 @@ void Game::checkEventHandler()
|
||||
delete map;
|
||||
map = new Map(asset->get("01.map"), renderer, asset, itemTracker);
|
||||
delete player;
|
||||
player = new Player(renderer, asset, input, map, debug);
|
||||
player = new Player(renderer, asset, input, map, debug, &board.diamonds);
|
||||
break;
|
||||
|
||||
case SDL_SCANCODE_F:
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
#include "player.h"
|
||||
|
||||
// Constructor
|
||||
Player::Player(SDL_Renderer *renderer, Asset *asset, Input *input, Map *map, Debug *debug)
|
||||
Player::Player(SDL_Renderer *renderer, Asset *asset, Input *input, Map *map, Debug *debug, int *diamonds)
|
||||
{
|
||||
this->asset = asset;
|
||||
this->renderer = renderer;
|
||||
this->input = input;
|
||||
this->map = map;
|
||||
this->debug = debug;
|
||||
this->diamonds = diamonds;
|
||||
|
||||
sound_jump = JA_LoadSound(asset->get("sound_player_jump.wav").c_str());
|
||||
sound_death = JA_LoadSound(asset->get("sound_player_death.wav").c_str());
|
||||
@@ -34,13 +35,13 @@ Player::Player(SDL_Renderer *renderer, Asset *asset, Input *input, Map *map, Deb
|
||||
maxVY = 4.0f;
|
||||
|
||||
state = s_standing;
|
||||
living = l_alive;
|
||||
jumpPressed = false;
|
||||
key.insert(key.end(), {0, 0, 0, 0, 0, 0});
|
||||
const SDL_Point p = {0, 0};
|
||||
collider.insert(collider.end(), {p, p, p, p, p, p, p, p, p, p, p, p});
|
||||
underFeet.insert(underFeet.end(), {p, p, p});
|
||||
hookedOnMovingPlatform = -1;
|
||||
diamonds = 0;
|
||||
colliderBox = getRect();
|
||||
}
|
||||
|
||||
@@ -75,7 +76,6 @@ void Player::update()
|
||||
debug->add("state " + std::to_string(state));
|
||||
debug->add(map->getName() + " (" + map->getRoomFileName(b_top) + ", " + map->getRoomFileName(b_right) + ", " + map->getRoomFileName(b_bottom) + ", " + map->getRoomFileName(b_left) + ")");
|
||||
debug->add("hookedOn = " + std::to_string(hookedOnMovingPlatform));
|
||||
debug->add("DIAMONDS = " + std::to_string(diamonds));
|
||||
}
|
||||
|
||||
// Dibuja el objeto
|
||||
@@ -424,19 +424,19 @@ bool Player::isOnScreenBorder()
|
||||
border = b_left;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
else if (x > map->getPlayArea(b_right) - w)
|
||||
{
|
||||
border = b_right;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
else if (y < map->getPlayArea(b_top))
|
||||
{
|
||||
border = b_top;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
else if (y > map->getPlayArea(b_bottom) - h)
|
||||
{
|
||||
border = b_bottom;
|
||||
@@ -495,7 +495,7 @@ int Player::checkActors()
|
||||
|
||||
if (name == a_diamond)
|
||||
{
|
||||
diamonds++;
|
||||
*diamonds = *diamonds + 1;
|
||||
JA_PlaySound(sound_coin);
|
||||
map->getItem(index);
|
||||
map->deleteActor(index);
|
||||
@@ -520,4 +520,9 @@ SDL_Rect Player::getRect()
|
||||
SDL_Rect &Player::getCollider()
|
||||
{
|
||||
return colliderBox;
|
||||
}
|
||||
|
||||
// Comprueba los estados de vida
|
||||
void Player::checkLivingState()
|
||||
{
|
||||
}
|
||||
@@ -20,6 +20,13 @@ enum e_state
|
||||
s_falling
|
||||
};
|
||||
|
||||
enum e_living
|
||||
{
|
||||
l_alive,
|
||||
l_dying,
|
||||
l_dead
|
||||
};
|
||||
|
||||
enum e_floor
|
||||
{
|
||||
f_none,
|
||||
@@ -37,7 +44,7 @@ private:
|
||||
AnimatedSprite *sprite; // Objeto con los graficos, animaciones y posición del jugador
|
||||
LTexture *texture; // Textura con los graficos del jugador
|
||||
Map *map; // Objeto con el mapa
|
||||
Debug *debug; // Objeto para gestionar la información de debug
|
||||
Debug *debug; // Objeto para gestionar la información de debug
|
||||
|
||||
float x; // Posición del jugador en el eje X
|
||||
float y; // Posición del jugador en el eje Y
|
||||
@@ -47,6 +54,7 @@ private:
|
||||
int h; // ALto del jugador
|
||||
e_state state; // Estado actual del jugador
|
||||
e_border border; // Indica en qué borde de la pantalla está el jugador
|
||||
e_living living; // Indica en que estado de la vida se encuentra el jugador
|
||||
SDL_Point lastPosition; // Posición anterior
|
||||
int hookedOnMovingPlatform; // Índice de la plataforma movil a la que está enganchado
|
||||
e_floor isOn; // Indica sobre que tipo de suelo se encuentra
|
||||
@@ -60,7 +68,7 @@ private:
|
||||
float maxVX; // Velocidad mazima de desplazamiento horizontal
|
||||
float maxVY; // Velocidad mazima de desplazamiento vertical
|
||||
|
||||
int diamonds; // Cantidad de diamantes recogidos por el jugador
|
||||
int *diamonds; // Puntero a la cantidad de diamantes recogidos y que lleva la cuenta el juego
|
||||
std::vector<bool> key; // Indica las llaves que posee el jugador
|
||||
std::vector<SDL_Point> collider; // Contiene los puntos de colisión del jugador con el mapa
|
||||
std::vector<SDL_Point> underFeet; // Contiene los puntos que hay bajo cada pie del jugador
|
||||
@@ -71,6 +79,9 @@ private:
|
||||
// Comprueba las entradas y modifica variables
|
||||
void checkInput();
|
||||
|
||||
// Comprueba los estados de vida
|
||||
void checkLivingState();
|
||||
|
||||
// Aplica la gravedad
|
||||
void addGravity();
|
||||
|
||||
@@ -100,7 +111,7 @@ private:
|
||||
|
||||
public:
|
||||
// Constructor
|
||||
Player(SDL_Renderer *renderer, Asset *asset, Input *input, Map *map, Debug *debug);
|
||||
Player(SDL_Renderer *renderer, Asset *asset, Input *input, Map *map, Debug *debug, int *diamonds);
|
||||
|
||||
// Destructor
|
||||
~Player();
|
||||
|
||||
@@ -417,6 +417,8 @@ bool Prog::setFileList()
|
||||
asset->add("/data/actors/enemies/flying_eye.ani", data);
|
||||
asset->add("/data/actors/enemies/flying_eye_horn.png", bitmap);
|
||||
asset->add("/data/actors/enemies/flying_eye_horn.ani", data);
|
||||
asset->add("/data/actors/enemies/manzana.png", bitmap);
|
||||
asset->add("/data/actors/enemies/manzana.ani", data);
|
||||
|
||||
// Ficheros de actores
|
||||
asset->add("/data/actors/moving_platform.png", bitmap);
|
||||
|
||||
@@ -3,12 +3,13 @@
|
||||
#include <sstream>
|
||||
|
||||
// Constructor
|
||||
ScoreBoard::ScoreBoard(SDL_Renderer *renderer, Asset *asset, board_t *board)
|
||||
ScoreBoard::ScoreBoard(SDL_Renderer *renderer, Asset *asset, Input *input, board_t *board)
|
||||
{
|
||||
// Obten punteros a objetos
|
||||
this->asset = asset;
|
||||
this->renderer = renderer;
|
||||
this->board = board;
|
||||
this->input = input;
|
||||
|
||||
// Reserva memoria para los objetos
|
||||
texture = new LTexture(renderer, asset->get("player.png"));
|
||||
@@ -26,6 +27,7 @@ ScoreBoard::ScoreBoard(SDL_Renderer *renderer, Asset *asset, board_t *board)
|
||||
counter = 0;
|
||||
fadingCounter = 0;
|
||||
state = sb_hide;
|
||||
waitTime = 100;
|
||||
}
|
||||
|
||||
// Destructor
|
||||
@@ -88,10 +90,17 @@ void ScoreBoard::render()
|
||||
// Actualiza las variables del objeto
|
||||
void ScoreBoard::update()
|
||||
{
|
||||
// Comprueba si se ha pulsado alguna tecla
|
||||
if (input->checkAnyInput())
|
||||
{
|
||||
reset();
|
||||
}
|
||||
|
||||
// Comprueba los estados
|
||||
if (state == sb_hide)
|
||||
{
|
||||
counter++;
|
||||
if (counter == 200)
|
||||
if (counter == waitTime)
|
||||
{
|
||||
state = sb_showing;
|
||||
rect.y = SCOREBOARD_Y - SCOREBOARD_HEIGHT;
|
||||
@@ -107,7 +116,7 @@ void ScoreBoard::update()
|
||||
|
||||
rect.y++;
|
||||
SDL_SetTextureAlphaMod(layer, alpha);
|
||||
|
||||
|
||||
if (rect.y == SCOREBOARD_Y)
|
||||
{
|
||||
state = sb_show;
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include "asset.h"
|
||||
#include "sprite.h"
|
||||
#include "const.h"
|
||||
#include "input.h"
|
||||
#include <string>
|
||||
|
||||
#ifndef SCOREBOARD_H
|
||||
@@ -35,15 +36,20 @@ private:
|
||||
SDL_Texture *layer; // Textura donde dibujar el marcador
|
||||
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
|
||||
Text *text; // Objeto para escribir texto
|
||||
Input *input; // Objeto Input para gestionar las entradas
|
||||
int counter; // Contador interno
|
||||
int fadingCounter; // Contador para el desvanecimiento del marcador
|
||||
board_t *board; // Contiene las variables a mostrar en el marcador
|
||||
sb_state_e state; // Estado en el que se encuentra el marcador
|
||||
SDL_Rect rect; // Posición del marcador
|
||||
int waitTime; // Tiempo de espera para mostrar el marcador
|
||||
|
||||
// Resetea el tiempo de aparición del marcador
|
||||
void reset();
|
||||
|
||||
public:
|
||||
// Constructor
|
||||
ScoreBoard(SDL_Renderer *renderer, Asset *asset, board_t *board);
|
||||
ScoreBoard(SDL_Renderer *renderer, Asset *asset, Input *input, board_t *board);
|
||||
|
||||
// Destructor
|
||||
~ScoreBoard();
|
||||
@@ -60,9 +66,6 @@ public:
|
||||
// Recarga la textura
|
||||
void reLoadTexture();
|
||||
|
||||
// Resetea el tiempo de aparición del marcador
|
||||
void reset();
|
||||
|
||||
// Devuelve el rectangulo con la posición del marcador
|
||||
SDL_Rect getRect();
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user