Compare commits

...

3 Commits

5 changed files with 45 additions and 84 deletions

View File

@@ -41,10 +41,10 @@ MASK_TYPE defines what, if any, shadow mask to use. MASK_BRIGHTNESS defines how
#define MULTISAMPLE
#define GAMMA
//#define FAKE_GAMMA
#define CURVATURE
//#define CURVATURE
//#define SHARPER
// MASK_TYPE: 0 = none, 1 = green/magenta, 2 = trinitron(ish)
#define MASK_TYPE 1
#define MASK_TYPE 2
#ifdef GL_ES
@@ -64,12 +64,12 @@ uniform COMPAT_PRECISION float BLOOM_FACTOR;
uniform COMPAT_PRECISION float INPUT_GAMMA;
uniform COMPAT_PRECISION float OUTPUT_GAMMA;
#else
#define CURVATURE_X 0.25
#define CURVATURE_Y 0.45
#define MASK_BRIGHTNESS 0.70
#define CURVATURE_X 0.05
#define CURVATURE_Y 0.1
#define MASK_BRIGHTNESS 0.80
#define SCANLINE_WEIGHT 6.0
#define SCANLINE_GAP_BRIGHTNESS 0.12
#define BLOOM_FACTOR 1.5
#define BLOOM_FACTOR 3.5
#define INPUT_GAMMA 2.4
#define OUTPUT_GAMMA 2.2
#endif

View File

@@ -1,7 +1,9 @@
#include "game.h"
#define DEATH_COUNTER 350
// Constructor
Game::Game(int numPlayers, int currentStage, SDL_Renderer *renderer, Screen *screen, Asset *asset, Lang *lang, Input *input, bool demo, param_t *param, options_t *options, section_t *section)
Game::Game(int playerID, int currentStage, SDL_Renderer *renderer, Screen *screen, Asset *asset, Lang *lang, Input *input, bool demo, param_t *param, options_t *options, section_t *section)
{
// Copia los punteros
this->renderer = renderer;
@@ -18,11 +20,6 @@ Game::Game(int numPlayers, int currentStage, SDL_Renderer *renderer, Screen *scr
this->numPlayers = numPlayers;
this->currentStage = currentStage;
lastStageReached = currentStage;
if (numPlayers == 1)
{ // Si solo juega un jugador, permite jugar tanto con teclado como con mando
onePlayerControl = options->game.input[0].deviceType;
options->game.input[0].deviceType = INPUT_USE_ANY;
}
difficulty = options->game.difficulty;
// Crea los objetos
@@ -51,7 +48,7 @@ Game::Game(int numPlayers, int currentStage, SDL_Renderer *renderer, Screen *scr
SDL_SetTextureBlendMode(canvas, SDL_BLENDMODE_BLEND);
// Inicializa las variables necesarias para la sección 'Game'
init();
init(playerID);
}
Game::~Game()
@@ -59,12 +56,6 @@ Game::~Game()
saveScoreFile();
saveDemoFile();
// Restaura el metodo de control
if (numPlayers == 1)
{
options->game.input[0].deviceType = onePlayerControl;
}
// Elimina todos los objetos contenidos en vectores
deleteAllVectorObjects();
@@ -165,7 +156,7 @@ Game::~Game()
}
// Inicializa las variables necesarias para la sección 'Game'
void Game::init()
void Game::init(int playerID)
{
ticks = 0;
ticksSpeed = 15;
@@ -178,19 +169,14 @@ void Game::init()
players.clear();
// Crea los jugadores
if (numPlayers == 1)
{
Player *player = new Player(PLAY_AREA_CENTER_X - 11, PLAY_AREA_BOTTOM - 24, renderer, playerTextures[options->game.playerSelected], playerAnimations);
players.push_back(player);
}
Player *player1 = new Player((PLAY_AREA_CENTER_FIRST_QUARTER_X * ((0 * 2) + 1)) - 11, PLAY_AREA_BOTTOM - 24, renderer, playerTextures[0], playerAnimations);
players.push_back(player1);
Player *player2 = new Player((PLAY_AREA_CENTER_FIRST_QUARTER_X * ((1 * 2) + 1)) - 11, PLAY_AREA_BOTTOM - 24, renderer, playerTextures[1], playerAnimations);
players.push_back(player2);
else if (numPlayers == 2)
{
Player *player1 = new Player((PLAY_AREA_CENTER_FIRST_QUARTER_X * ((0 * 2) + 1)) - 11, PLAY_AREA_BOTTOM - 24, renderer, playerTextures[0], playerAnimations);
Player *player2 = new Player((PLAY_AREA_CENTER_FIRST_QUARTER_X * ((1 * 2) + 1)) - 11, PLAY_AREA_BOTTOM - 24, renderer, playerTextures[1], playerAnimations);
players.push_back(player1);
players.push_back(player2);
}
// Variables relacionadas con la dificultad
switch (difficulty)
@@ -2931,6 +2917,10 @@ void Game::checkGameInput()
}
else
{
if (input->checkInput(input_accept, REPEAT_TRUE, options->game.input[i].deviceType, options->game.input[i].id))
{
player->init();
}
i++;
}
}
@@ -3348,6 +3338,8 @@ void Game::updateScoreboard()
{
scoreboard->setScore1(players[0]->getScore());
scoreboard->setMult1(players[0]->getScoreMultiplier());
scoreboard->setScore2(players[0]->getScore());
scoreboard->setMult2(players[0]->getScoreMultiplier());
scoreboard->setStage(stage[currentStage].number);
scoreboard->setPower((float)stage[currentStage].currentPower / (float)stage[currentStage].powerToComplete);
scoreboard->setHiScore(hiScore);

View File

@@ -208,7 +208,6 @@ private:
color_t difficultyColor; // Color asociado a la dificultad
options_t *options; // Variable con todas las opciones del programa
param_t *param; // Puntero con todos los parametros del programa
Uint8 onePlayerControl; // Variable para almacenar el valor de las opciones
enemyFormation_t enemyFormation[NUMBER_OF_ENEMY_FORMATIONS]; // Vector con todas las formaciones enemigas
enemyPool_t enemyPool[10]; // Variable con los diferentes conjuntos de formaciones enemigas
Uint8 lastStageReached; // Contiene el numero de la última pantalla que se ha alcanzado
@@ -226,7 +225,7 @@ private:
void checkEvents();
// Inicializa las variables necesarias para la sección 'Game'
void init();
void init(int playerID);
// Carga los recursos necesarios para la sección 'Game'
void loadMedia();
@@ -473,7 +472,7 @@ private:
public:
// Constructor
Game(int numPlayers, int currentStage, SDL_Renderer *renderer, Screen *screen, Asset *asset, Lang *lang, Input *input, bool demo, param_t *param, options_t *options, section_t *section);
Game(int playerID, int currentStage, SDL_Renderer *renderer, Screen *screen, Asset *asset, Lang *lang, Input *input, bool demo, param_t *param, options_t *options, section_t *section);
// Destructor
~Game();

View File

@@ -16,8 +16,8 @@ Player::Player(float x, int y, SDL_Renderer *renderer, std::vector<Texture *> te
fireSprite->getTexture()->setAlpha(224);
// Establece la posición inicial del jugador
posX = x;
posY = y;
defaultPosX = posX = x;
defaultPosY = posY = y;
init();
}
@@ -36,11 +36,12 @@ Player::~Player()
void Player::init()
{
// Inicializa variables de estado
posX = defaultPosX;
posY = defaultPosY;
alive = true;
deathCounter = DEATH_COUNTER;
statusWalking = PLAYER_STATUS_WALKING_STOP;
statusFiring = PLAYER_STATUS_FIRING_NO;
invulnerable = false;
invulnerable = true;
invulnerableCounter = PLAYER_INVULNERABLE_COUNTER;
powerUp = false;
powerUpCounter = PLAYER_POWERUP_COUNTER;
@@ -134,7 +135,8 @@ void Player::move()
// Si el jugador abandona el area de juego por los laterales
if ((posX < PLAY_AREA_LEFT - 5) || (posX + width > PLAY_AREA_RIGHT + 5))
{ // Restaura su posición
{
// Restaura su posición
posX -= velX;
}
@@ -157,7 +159,8 @@ void Player::move()
// Si el cadaver abandona el area de juego por los laterales
if ((deathSprite->getPosX() < PLAY_AREA_LEFT) || (deathSprite->getPosX() + width > PLAY_AREA_RIGHT))
{ // Restaura su posición
{
// Restaura su posición
const float vx = deathSprite->getVelX();
deathSprite->setPosX(deathSprite->getPosX() - vx);
@@ -209,7 +212,6 @@ void Player::setWalkingStatus(Uint8 status)
if (statusWalking != status)
{
statusWalking = status;
// legsSprite->setCurrentFrame(0);
}
}
@@ -246,14 +248,16 @@ void Player::setAnimation()
legsSprite->setCurrentAnimation(aWalking);
legsSprite->setFlip(flipWalk);
if (statusFiring == PLAYER_STATUS_FIRING_NO)
{ // No esta disparando
{
// No esta disparando
bodySprite->setCurrentAnimation(aWalking + aBodyCoffees + aPowerUp);
bodySprite->setFlip(flipWalk);
headSprite->setCurrentAnimation(aWalking + aHeadCoffees + aPowerUp);
headSprite->setFlip(flipWalk);
}
else
{ // Está disparando
{
// Está disparando
bodySprite->setCurrentAnimation(aFiring + aBodyCoffees + aPowerUp);
bodySprite->setFlip(flipFire);
headSprite->setCurrentAnimation(aFiring + aHeadCoffees + aPowerUp);
@@ -297,14 +301,7 @@ int Player::getHeight()
bool Player::canFire()
{
// Si el contador a llegado a cero, podemos disparar. En caso contrario decrementamos el contador
if (cooldown > 0)
{
return false;
}
else
{
return true;
}
return cooldown > 0 ? false : true;
}
// Establece el valor de la variable
@@ -339,7 +336,6 @@ void Player::update()
updateCooldown();
updatePowerUpCounter();
updateInvulnerableCounter();
updateDeathCounter();
updatePowerUpHeadOffset();
}
@@ -465,18 +461,6 @@ void Player::updateInvulnerableCounter()
}
}
// Actualiza el valor de la variable
void Player::updateDeathCounter()
{
if (!alive)
{
if (deathCounter > 0)
{
deathCounter--;
}
}
}
// Obtiene el valor de la variable
bool Player::isPowerUp()
{
@@ -582,13 +566,6 @@ void Player::shiftColliders()
Texture *Player::getDeadTexture()
{
return deathSprite->getTexture();
;
}
// Obtiene el valor de la variable
Uint16 Player::getDeathCounter()
{
return deathCounter;
}
// Actualiza el valor de la variable

View File

@@ -10,9 +10,6 @@
#ifndef PLAYER_H
#define PLAYER_H
// Contadores
#define DEATH_COUNTER 350
// Estados del jugador
#define PLAYER_STATUS_WALKING_LEFT 0
#define PLAYER_STATUS_WALKING_RIGHT 1
@@ -37,12 +34,15 @@ private:
AnimatedSprite *bodySprite; // Sprite para dibujar el cuerpo
AnimatedSprite *legsSprite; // Sprite para dibujar las piernas
AnimatedSprite *deathSprite; // Sprite para dibujar el jugador derrotado
AnimatedSprite *fireSprite; // Sprite para dibujar el aura del jugador con el poder a tope
AnimatedSprite *fireSprite; // Sprite para dibujar el aura del jugador con el poder a tope
// Variables
float posX; // Posicion en el eje X
int posY; // Posicion en el eje Y
float defaultPosX; // Posición inicial para el jugador
int defaultPosY; // Posición inicial para el jugador
Uint8 width; // Anchura
Uint8 height; // Altura
@@ -58,8 +58,6 @@ private:
Uint8 statusWalking; // Estado del jugador
Uint8 statusFiring; // Estado del jugador
bool alive; // Indica si el jugador está vivo
Uint16 deathCounter; // Contador para la animación de morirse
bool invulnerable; // Indica si el jugador es invulnerable
Uint16 invulnerableCounter; // Contador para la invulnerabilidad
bool extraHit; // Indica si el jugador tiene un toque extra
@@ -68,6 +66,7 @@ private:
Uint16 powerUpCounter; // Temporizador para el modo PowerUp
bool input; // Indica si puede recibir ordenes de entrada
circle_t collider; // Circulo de colisión del jugador
bool alive; // Indica si el jugador está vivo
// Actualiza el circulo de colisión a la posición del jugador
void shiftColliders();
@@ -75,9 +74,6 @@ private:
// Actualiza el valor de la variable
void updateInvulnerableCounter();
// Actualiza el valor de la variable
void updateDeathCounter();
// Actualiza el valor de la variable
void updatePowerUpHeadOffset();
@@ -213,9 +209,6 @@ public:
// Obtiene el puntero a la textura con los gráficos de la animación de morir
Texture *getDeadTexture();
// Obtiene el valor de la variable
Uint16 getDeathCounter();
};
#endif