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