forked from jaildesigner-jailgames/jaildoctors_dilemma
Commit per a seguir en altre ordinador
This commit is contained in:
@@ -8,8 +8,8 @@
|
||||
#define CONST_H
|
||||
|
||||
// Textos
|
||||
#define WINDOW_CAPTION "Coffee Crisis"
|
||||
#define TEXT_COPYRIGHT "@2020,2021 JailDesigner (v2.0.1)"
|
||||
#define WINDOW_CAPTION "Pepe el Cazavampiros"
|
||||
#define TEXT_COPYRIGHT "@2021 JailDesigner (v0.1)"
|
||||
|
||||
// Recursos
|
||||
#define BINFILE_SCORE 0
|
||||
|
||||
@@ -3,10 +3,6 @@
|
||||
#include "director.h"
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#ifdef __MIPSEL__
|
||||
#include <sys/stat.h>
|
||||
#include <dirent.h>
|
||||
#endif
|
||||
|
||||
// Constructor
|
||||
Director::Director(std::string path)
|
||||
@@ -18,7 +14,7 @@ Director::Director(std::string path)
|
||||
setFileList();
|
||||
|
||||
// Si falta algún fichero no inicies el programa
|
||||
Uint8 section = PROG_SECTION_LOGO;
|
||||
Uint8 section = PROG_SECTION_GAME;
|
||||
if (!checkFileList())
|
||||
section = PROG_SECTION_QUIT;
|
||||
|
||||
@@ -53,18 +49,6 @@ Director::Director(std::string path)
|
||||
SDL_SetWindowSize(mWindow, SCREEN_WIDTH * mOptions->windowSize, SCREEN_HEIGHT * mOptions->windowSize);
|
||||
mLang->setLang(mOptions->language);
|
||||
|
||||
#ifdef __MIPSEL__
|
||||
DIR *dir = opendir("/media/data/local/home/.coffee_crisis");
|
||||
if (dir)
|
||||
{
|
||||
closedir(dir);
|
||||
}
|
||||
else if (ENOENT == errno)
|
||||
{
|
||||
int status = mkdir("/media/data/local/home/.coffee_crisis", 755);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Inicializa el resto de variables
|
||||
init(section);
|
||||
}
|
||||
@@ -107,17 +91,11 @@ void Director::init(Uint8 name)
|
||||
mInput->bindKey(INPUT_RIGHT, SDL_SCANCODE_RIGHT);
|
||||
mInput->bindKey(INPUT_ACCEPT, SDL_SCANCODE_RETURN);
|
||||
mInput->bindKey(INPUT_CANCEL, SDL_SCANCODE_ESCAPE);
|
||||
#ifdef __MIPSEL__
|
||||
mInput->bindKey(INPUT_BUTTON_1, SDL_SCANCODE_LSHIFT);
|
||||
mInput->bindKey(INPUT_BUTTON_2, SDL_SCANCODE_SPACE);
|
||||
mInput->bindKey(INPUT_BUTTON_3, SDL_SCANCODE_LCTRL);
|
||||
#else
|
||||
mInput->bindKey(INPUT_BUTTON_1, SDL_SCANCODE_Q);
|
||||
mInput->bindKey(INPUT_BUTTON_2, SDL_SCANCODE_W);
|
||||
mInput->bindKey(INPUT_BUTTON_3, SDL_SCANCODE_E);
|
||||
#endif
|
||||
mInput->bindKey(INPUT_BUTTON_PAUSE, SDL_SCANCODE_ESCAPE); // PAUSE
|
||||
mInput->bindKey(INPUT_BUTTON_ESCAPE, SDL_SCANCODE_ESCAPE); // ESCAPE
|
||||
mInput->bindKey(INPUT_BUTTON_1, SDL_SCANCODE_Z);
|
||||
mInput->bindKey(INPUT_BUTTON_2, SDL_SCANCODE_X);
|
||||
mInput->bindKey(INPUT_BUTTON_3, SDL_SCANCODE_C);
|
||||
mInput->bindKey(INPUT_BUTTON_PAUSE, SDL_SCANCODE_ESCAPE);
|
||||
mInput->bindKey(INPUT_BUTTON_ESCAPE, SDL_SCANCODE_ESCAPE);
|
||||
|
||||
mInput->bindGameControllerButton(INPUT_UP, SDL_CONTROLLER_BUTTON_DPAD_UP);
|
||||
mInput->bindGameControllerButton(INPUT_DOWN, SDL_CONTROLLER_BUTTON_DPAD_DOWN);
|
||||
@@ -128,8 +106,8 @@ void Director::init(Uint8 name)
|
||||
mInput->bindGameControllerButton(INPUT_BUTTON_1, SDL_CONTROLLER_BUTTON_X);
|
||||
mInput->bindGameControllerButton(INPUT_BUTTON_2, SDL_CONTROLLER_BUTTON_Y);
|
||||
mInput->bindGameControllerButton(INPUT_BUTTON_3, SDL_CONTROLLER_BUTTON_B);
|
||||
mInput->bindGameControllerButton(INPUT_BUTTON_PAUSE, SDL_CONTROLLER_BUTTON_GUIDE); // PAUSE
|
||||
mInput->bindGameControllerButton(INPUT_BUTTON_ESCAPE, SDL_CONTROLLER_BUTTON_GUIDE); // ESCAPE
|
||||
mInput->bindGameControllerButton(INPUT_BUTTON_PAUSE, SDL_CONTROLLER_BUTTON_GUIDE);
|
||||
mInput->bindGameControllerButton(INPUT_BUTTON_ESCAPE, SDL_CONTROLLER_BUTTON_GUIDE);
|
||||
}
|
||||
|
||||
// Inicializa JailAudio
|
||||
@@ -208,15 +186,9 @@ void Director::setFileList()
|
||||
mFileList[i] = "";
|
||||
|
||||
// Ficheros binarios
|
||||
#ifdef __MIPSEL__
|
||||
mFileList[0] = "/media/data/local/home/.coffee_crisis/score.bin";
|
||||
mFileList[1] = "/media/data/local/home/.coffee_crisis/demo.bin";
|
||||
mFileList[2] = "/media/data/local/home/.coffee_crisis/config.bin";
|
||||
#else
|
||||
mFileList[0] = mExecutablePath + "/" + "../data/score.bin";
|
||||
mFileList[1] = mExecutablePath + "/" + "../data/demo.bin";
|
||||
mFileList[2] = mExecutablePath + "/" + "../data/config.bin";
|
||||
#endif
|
||||
|
||||
// Musicas
|
||||
mFileList[3] = mExecutablePath + "/" + "../media/music/intro.ogg";
|
||||
@@ -485,33 +457,18 @@ void Director::setSection(section_t section)
|
||||
|
||||
void Director::runLogo()
|
||||
{
|
||||
mLogo = new Logo(mRenderer, mFileList);
|
||||
setSection(mLogo->run());
|
||||
delete mLogo;
|
||||
}
|
||||
|
||||
void Director::runIntro()
|
||||
{
|
||||
mIntro = new Intro(mRenderer, mFileList, mLang);
|
||||
setSection(mIntro->run());
|
||||
delete mIntro;
|
||||
}
|
||||
|
||||
void Director::runTitle()
|
||||
{
|
||||
mTitle = new Title(mWindow, mRenderer, mInput, mFileList, mOptions, mLang);
|
||||
setSection(mTitle->run(mSection.subsection));
|
||||
delete mTitle;
|
||||
}
|
||||
|
||||
void Director::runGame()
|
||||
{
|
||||
if (mSection.subsection == GAME_SECTION_PLAY_1P)
|
||||
mGame = new Game(1, mRenderer, mFileList, mLang, mInput, false, mOptions);
|
||||
if (mSection.subsection == GAME_SECTION_PLAY_2P)
|
||||
mGame = new Game(2, mRenderer, mFileList, mLang, mInput, false, mOptions);
|
||||
setSection(mGame->run());
|
||||
delete mGame;
|
||||
}
|
||||
|
||||
void Director::run()
|
||||
|
||||
@@ -3,24 +3,14 @@
|
||||
#include "sprite.h"
|
||||
#include "movingsprite.h"
|
||||
#include "smartsprite.h"
|
||||
#include "player.h"
|
||||
#include "balloon.h"
|
||||
#include "bullet.h"
|
||||
#include "coffeedrop.h"
|
||||
#include "item.h"
|
||||
#include "text.h"
|
||||
#include "writer.h"
|
||||
#include "menu.h"
|
||||
#include "const.h"
|
||||
#include "jail_audio.h"
|
||||
#include "utils.h"
|
||||
#include "logo.h"
|
||||
#include "intro.h"
|
||||
#include "title.h"
|
||||
#include "game.h"
|
||||
#include "input.h"
|
||||
#include "fade.h"
|
||||
//#include <math.h>
|
||||
|
||||
#ifndef DIRECTOR_H
|
||||
#define DIRECTOR_H
|
||||
@@ -34,10 +24,6 @@ private:
|
||||
SDL_Window *mWindow; // La ventana donde dibujamos
|
||||
SDL_Renderer *mRenderer; // El renderizador de la ventana
|
||||
|
||||
Logo *mLogo; // Objeto para la sección del logo
|
||||
Intro *mIntro; // Objeto para la sección de la intro
|
||||
Title *mTitle; // Objeto para la sección del titulo y el menu de opciones
|
||||
Game *mGame; // Objeto para la sección del juego
|
||||
Input *mInput; // Objeto Input para gestionar las entradas
|
||||
Lang *mLang; // Objeto para gestionar los textos en diferentes idiomas
|
||||
|
||||
|
||||
@@ -25,9 +25,6 @@ void Fade::init(Uint8 r, Uint8 g, Uint8 b)
|
||||
mEnabled = false;
|
||||
mFinished = false;
|
||||
mCounter = 0;
|
||||
//mR = 0x27;
|
||||
//mG = 0x27;
|
||||
//mB = 0x36;
|
||||
mR = r;
|
||||
mG = g;
|
||||
mB = b;
|
||||
|
||||
3163
source/game.cpp
3163
source/game.cpp
File diff suppressed because it is too large
Load Diff
477
source/game.h
477
source/game.h
@@ -7,11 +7,6 @@
|
||||
#include "movingsprite.h"
|
||||
#include "smartsprite.h"
|
||||
|
||||
#include "player.h"
|
||||
#include "balloon.h"
|
||||
#include "bullet.h"
|
||||
#include "item.h"
|
||||
|
||||
#include "text.h"
|
||||
#include "writer.h"
|
||||
#include "menu.h"
|
||||
@@ -26,481 +21,27 @@
|
||||
class Game
|
||||
{
|
||||
private:
|
||||
struct enemyInits_t
|
||||
{
|
||||
int x; // Posición en el eje X donde crear al enemigo
|
||||
int y; // Posición en el eje Y donde crear al enemigo
|
||||
float velX; // Velocidad inicial en el eje X
|
||||
Uint8 kind; // Tipo de enemigo
|
||||
Uint16 creationCounter; // Temporizador para la creación del enemigo
|
||||
};
|
||||
|
||||
struct enemyFormation_t // Contiene la información de una formación enemiga
|
||||
{
|
||||
Uint8 numberOfEnemies; // Cantidad de enemigos que forman la formación
|
||||
enemyInits_t init[MAX_NUMBER_OF_ENEMIES_IN_A_FORMATION]; // Vector con todas las inicializaciones de los enemigos de la formación
|
||||
};
|
||||
enemyFormation_t mEnemyFormation[NUMBER_OF_ENEMY_FORMATIONS]; // Vector con todas las formaciones enemigas
|
||||
|
||||
struct enemyPool_t
|
||||
{
|
||||
enemyFormation_t *set[10]; // Conjunto de formaciones enemigas
|
||||
};
|
||||
enemyPool_t mEnemyPool[10]; // Variable con los diferentes conjuntos de formaciones enemigas
|
||||
|
||||
struct stage_t // Contiene todas las variables relacionadas con una fase
|
||||
{
|
||||
enemyPool_t *enemyPool; // El conjunto de formaciones enemigas de la fase
|
||||
Uint16 currentPower; // Cantidad actual de poder
|
||||
Uint16 powerToComplete; // Cantidad de poder que se necesita para completar la fase
|
||||
Uint8 maxMenace; // Umbral máximo de amenaza de la fase
|
||||
Uint8 minMenace; // Umbral mínimo de amenaza de la fase
|
||||
Uint8 number; // Numero de fase
|
||||
};
|
||||
|
||||
struct effect_t
|
||||
{
|
||||
bool flash; // Indica si se ha de pintar la pantalla de blanco
|
||||
bool shake; // Indica si se ha de agitar la pantalla
|
||||
Uint8 shakeCounter; // Contador para medir el tiempo que dura el efecto
|
||||
};
|
||||
|
||||
struct helper_t
|
||||
{
|
||||
bool needCoffee; // Indica si se necesitan cafes
|
||||
bool needCoffeeMachine; // Indica si se necesita PowerUp
|
||||
bool needPowerBall; // Indica si se necesita una PowerBall
|
||||
int counter; // Contador para no dar ayudas consecutivas
|
||||
int itemPoints1Odds; // Probabilidad de aparición del objeto
|
||||
int itemPoints2Odds; // Probabilidad de aparición del objeto
|
||||
int itemPoints3Odds; // Probabilidad de aparición del objeto
|
||||
int itemClockOdds; // Probabilidad de aparición del objeto
|
||||
int itemCoffeeOdds; // Probabilidad de aparición del objeto
|
||||
int itemCoffeeMachineOdds; // Probabilidad de aparición del objeto
|
||||
};
|
||||
|
||||
SDL_Renderer *mRenderer; // El renderizador de la ventana
|
||||
std::string *mFileList; // Lista de ficheros con los recursos
|
||||
Lang *mLang; // Objeto para gestionar los textos en diferentes idiomas
|
||||
|
||||
int mNumPlayers; // Numero de jugadores
|
||||
Player *mPlayer[2]; // Vector con los jugadores jugador
|
||||
Input *mInput; // Manejador de entrada
|
||||
|
||||
Balloon *mBalloon[MAX_BALLOONS]; // Vector con los objetos globo
|
||||
Bullet *mBullet[MAX_BULLETS]; // Vector con los objetos bala
|
||||
Item *mItem[MAX_ITEMS]; // Vector con los objetos item
|
||||
SmartSprite *mSmartSprite[MAX_SMART_SPRITES]; // Vector para almacenar y gestionar SmartSprites
|
||||
|
||||
LTexture *mTextureBalloon; // Textura para los enemigos
|
||||
LTexture *mTextureBullet; // Textura para las balas
|
||||
LTexture *mTextureGameBG; // Textura para el fondo del juego
|
||||
LTexture *mTextureGameText; // Textura para los sprites con textos
|
||||
LTexture *mTextureItems; // Textura para los items
|
||||
LTexture *mTexturePlayer1Head; // Textura para la cabeza del jugador1
|
||||
LTexture *mTexturePlayer1Body; // Textura para el cuerpo del jugador1
|
||||
LTexture *mTexturePlayer1Death; // Textura para la animación de muerte del jugador1
|
||||
LTexture *mTexturePlayer1Legs; // Textura para las piernas del jugador
|
||||
LTexture *mTexturePlayer2Head; // Textura para la cabeza del jugador2
|
||||
LTexture *mTexturePlayer2Body; // Textura para el cuerpo del jugador2
|
||||
LTexture *mTexturePlayer2Death; // Textura para la animación de muerte del jugador2
|
||||
LTexture *mTexturePlayer2Legs; // Textura para las piernas del jugador
|
||||
LTexture *mTextureText; // Textura para el texto del juego
|
||||
LTexture *mTextureTextScoreBoard; // Textura para el texto del marcador
|
||||
LTexture *mTextureTextBig; // Textura para el texto grande
|
||||
LTexture *mTextureTextNokia2; // Textura para la fuente de texto Nokia
|
||||
LTexture *mTextureTextNokiaBig2; // Textura para la fuente de texto Nokia grande
|
||||
|
||||
Text *mText; // Fuente para los textos del juego
|
||||
Text *mTextBig; // Fuente de texto grande
|
||||
Text *mTextScoreBoard; // Fuente para el marcador del juego
|
||||
Text *mTextNokia2; // Otra fuente de texto para mesajes
|
||||
Text *mTextNokiaBig2; // Y la versión en grande
|
||||
|
||||
Menu *mMenuGameOver; // Menú de la pantalla de game over
|
||||
Menu *mMenuPause; // Menú de la pantalla de pausa
|
||||
|
||||
Fade *mFade; // Objeto para renderizar fades
|
||||
SDL_Renderer *mRenderer; // El renderizador de la ventana
|
||||
SDL_Event *mEventHandler; // Manejador de eventos
|
||||
std::string *mFileList; // Lista de ficheros con los recursos
|
||||
Lang *mLang; // Objeto para gestionar los textos en diferentes idiomas
|
||||
Input *mInput; // Manejador de entrada
|
||||
Text *mText; // Fuente para los textos del juego
|
||||
Fade *mFade; // Objeto para renderizar fades
|
||||
|
||||
MovingSprite *mClouds1a; // Sprite para las nubes superiores
|
||||
MovingSprite *mClouds1b; // Sprite para las nubes superiores
|
||||
MovingSprite *mClouds2a; // Sprite para las nubes inferiores
|
||||
MovingSprite *mClouds2b; // Sprite para las nubes inferiores
|
||||
SmartSprite *m1000Bitmap; // Sprite con el texto 1.000
|
||||
SmartSprite *m2500Bitmap; // Sprite con el texto 2.500
|
||||
SmartSprite *m5000Bitmap; // Sprite con el texto 5.000
|
||||
Sprite *mSpriteBackground; // Sprite con los graficos frontales del fondo
|
||||
Sprite *mSpriteGetReady; // Sprite para el texto de GetReady del principio de la partida
|
||||
Sprite *mSpriteGradient; // Sprite con los graficos del degradado de color de fondo
|
||||
Sprite *mSpriteGrass; // Sprite para la hierba
|
||||
Sprite *mSpritePowerMeter; // Sprite para el medidor de poder de la fase
|
||||
Sprite *mSpriteScoreBoard; // Sprite para el fondo del marcador
|
||||
LTexture *mTextureText; // Textura para la fuente de texto Nokia grande
|
||||
|
||||
JA_Sound mSoundBalloon; // Sonido para la explosión del globo
|
||||
JA_Sound mSoundBullet; // Sonido para los disparos
|
||||
JA_Sound mSoundPlayerCollision; // Sonido para la colisión del jugador con un enemigo
|
||||
JA_Sound mSoundHiScore; // Sonido para cuando se alcanza la máxima puntuación
|
||||
JA_Sound mSoundItemDrop; // Sonido para cuando se genera un item
|
||||
JA_Sound mSoundItemPickup; // Sonido para cuando se recoge un item
|
||||
JA_Sound mSoundCoffeeOut; // Sonido para cuando el jugador pierde el café al recibir un impacto
|
||||
JA_Sound mSoundStageChange; // Sonido para cuando se cambia de fase
|
||||
JA_Sound mSoundBubble1; // Sonido para cuando el jugador muere
|
||||
JA_Sound mSoundBubble2; // Sonido para cuando el jugador muere
|
||||
JA_Sound mSoundBubble3; // Sonido para cuando el jugador muere
|
||||
JA_Sound mSoundBubble4; // Sonido para cuando el jugador muere
|
||||
JA_Sound mSoundClock; // Sonido para cuando se detiene el tiempo con el item reloj
|
||||
JA_Sound mSoundPowerBall; // Sonido para cuando se explota una Power Ball
|
||||
JA_Sound mSoundCollision; // Sonido para cuando la máquina de café toca el suelo
|
||||
|
||||
JA_Music mMusicPlaying; // Musica de fondo
|
||||
|
||||
Uint32 mTicks; // Contador de ticks para ajustar la velocidad del programa
|
||||
Uint32 mTicks; // Contador de ticks para ajustar la velocidad del programa
|
||||
Uint8 mTicksSpeed; // Velocidad a la que se repiten los bucles del programa
|
||||
|
||||
Uint32 mHiScore; // Puntuación máxima
|
||||
bool mHiScoreAchieved; // Indica si se ha superado la puntuación máxima
|
||||
section_t mSection; // Seccion actual dentro del juego
|
||||
stage_t mStage[10]; // Variable con los datos de cada pantalla
|
||||
Uint8 mCurrentStage; // Indica la fase actual
|
||||
Uint8 mStageBitmapCounter; // Contador para el tiempo visible del texto de Stage
|
||||
float mStageBitmapPath[STAGE_COUNTER]; // Vector con los puntos Y por donde se desplaza el texto
|
||||
float mGetReadyBitmapPath[STAGE_COUNTER]; // Vector con los puntos X por donde se desplaza el texto
|
||||
Uint16 mDeathCounter; // Contador para la animación de muerte del jugador
|
||||
Uint8 mDeathIndex; // Indice del vector de smartsprites que contiene el sprite del jugador
|
||||
Uint8 mMenaceCurrent; // Nivel de amenaza actual
|
||||
Uint8 mMenaceThreshold; // Umbral del nivel de amenaza. Si el nivel de amenaza cae por debajo del umbral, se generan más globos. Si el umbral aumenta, aumenta el numero de globos
|
||||
bool mTimeStopped; // Indica si el tiempo está detenido
|
||||
Uint16 mTimeStoppedCounter; // Temporizador para llevar la cuenta del tiempo detenido
|
||||
Uint8 mRemainingExplosions; // Cantidad de explosiones restantes
|
||||
Uint16 mRemainingExplosionsCounter; // Temporizador para la cantidad de explosiones restantes
|
||||
bool mExplosionTime; // Indica si las explosiones estan en marcha
|
||||
Uint32 mCounter; // Contador para el juego
|
||||
Uint32 mScoreDataFile[TOTAL_SCORE_DATA]; // Datos del fichero de puntos
|
||||
SDL_Rect mGradientRect[4]; // Vector con las coordenadas de los 4 gradientes
|
||||
Uint16 mBalloonsPopped; // Lleva la cuenta de los globos explotados
|
||||
Uint8 mLastEnemyDeploy; // Guarda cual ha sido la última formación desplegada para no repetir;
|
||||
Uint8 mEnemyDeployCounter; // Cuando se lanza una formación, se le da un valor y no sale otra hasta que llegue a cero
|
||||
float mEnemySpeed; // Velocidad a la que se mueven los enemigos
|
||||
float mDefaultEnemySpeed; // Velocidad base de los enemigos, sin incrementar
|
||||
effect_t mEffect; // Variable para gestionar los efectos visuales
|
||||
helper_t mHelper; // Variable para gestionar las ayudas
|
||||
bool mPowerBallEnabled; // Indica si hay una powerball ya activa
|
||||
Uint8 mPowerBallCounter; // Contador de formaciones enemigas entre la aparicion de una PowerBall y otra
|
||||
bool mCoffeeMachineEnabled; // Indica si hay una máquina de café en el terreno de juego
|
||||
Uint8 mPostFade; // Qué hacer al acabar el fade
|
||||
float mSin[360]; // Vector con los valores del seno para 360 grados
|
||||
bool mGameCompleted; // Indica si se ha completado la partida, llegando al final de la ultima pantalla
|
||||
int mGameCompletedCounter; // Contador para el tramo final, cuando se ha completado la partida y ya no aparecen más enemigos
|
||||
Uint8 mDifficulty; // Dificultad del juego
|
||||
float mDifficultyScoreMultiplier; // Multiplicador de puntos en función de la dificultad
|
||||
struct options_t *mOptions; // Variable con todas las variables de las opciones del programa
|
||||
Uint8 mOnePlayerControl; // Variable para almacenar el valor de las opciones
|
||||
|
||||
struct demo_t
|
||||
{
|
||||
bool enabled; // Indica si está activo el modo demo
|
||||
bool recording; // Indica si está activado el modo para grabar la demo
|
||||
Uint16 counter; // Contador para el modo demo
|
||||
demoKeys_t keys; // Variable con las pulsaciones de teclas del modo demo
|
||||
demoKeys_t dataFile[TOTAL_DEMO_DATA]; // Datos del fichero con los movimientos para la demo
|
||||
};
|
||||
demo_t mDemo; // Variable con todas las variables relacionadas con el modo demo
|
||||
|
||||
struct debug_t
|
||||
{
|
||||
bool enabled; // Indica si se va a mostrar la información de debug
|
||||
Uint8 enemySet; // Escoge el set enemigo a generar
|
||||
Uint8 gradR, gradG, gradB; // Colores RGB para modificar el color del gradiente de fondo
|
||||
float hudW, hudH; // Multiplica el tamaño del hud de debug;
|
||||
};
|
||||
debug_t mDebug;
|
||||
|
||||
// Inicializa el vector con los valores del seno
|
||||
void initSin();
|
||||
|
||||
// Inicializa las variables necesarias para la sección 'Game'
|
||||
void init();
|
||||
|
||||
// Carga los recursos necesarios para la sección 'Game'
|
||||
bool loadMedia();
|
||||
|
||||
// Carga el fichero de puntos
|
||||
bool loadScoreFile();
|
||||
|
||||
// Carga el fichero de datos para la demo
|
||||
bool loadDemoFile();
|
||||
|
||||
// Guarda el fichero de puntos
|
||||
bool saveScoreFile();
|
||||
|
||||
// Guarda el fichero de datos para la demo
|
||||
bool saveDemoFile();
|
||||
|
||||
// Inicializa las formaciones enemigas
|
||||
void initEnemyFormations();
|
||||
|
||||
// Inicializa los conjuntos de formaciones
|
||||
void initEnemyPools();
|
||||
|
||||
// Inicializa las fases del juego
|
||||
void initGameStages();
|
||||
|
||||
// Crea una formación de enemigos
|
||||
void deployEnemyFormation();
|
||||
|
||||
// Aumenta el poder de la fase
|
||||
void increaseStageCurrentPower(Uint8 power);
|
||||
|
||||
// Establece el valor de la variable
|
||||
void setHiScore(Uint32 score);
|
||||
|
||||
// Actualiza el valor de HiScore en caso necesario
|
||||
void updateHiScore();
|
||||
|
||||
// Transforma un valor numérico en una cadena de 6 cifras
|
||||
std::string updateScoreText(Uint32 num);
|
||||
|
||||
// Pinta el marcador en pantalla usando un objeto texto
|
||||
void renderScoreBoard();
|
||||
|
||||
// Actualiza las variables del jugador
|
||||
void updatePlayer();
|
||||
|
||||
// Actualiza las variables de la fase
|
||||
void updateStage();
|
||||
|
||||
// Actualiza el estado de muerte
|
||||
void updateDeath();
|
||||
|
||||
// Renderiza el fade final cuando se acaba la partida
|
||||
void renderDeathFade(int counter);
|
||||
|
||||
// Actualiza los globos
|
||||
void updateBalloons();
|
||||
|
||||
// Pinta en pantalla todos los globos activos
|
||||
void renderBalloons();
|
||||
|
||||
// Devuelve el primer indice no activo del vector de globos
|
||||
Uint8 getBalloonFreeIndex();
|
||||
|
||||
// Crea un globo nuevo en el vector de globos
|
||||
Uint8 createNewBalloon(float x, int y, Uint8 kind, float velx, float speed, Uint16 stoppedcounter, LTexture *texture);
|
||||
|
||||
// Crea una PowerBall
|
||||
void createPowerBall();
|
||||
|
||||
// Establece a cero todos los valores del vector de objetos globo
|
||||
void resetBalloons();
|
||||
|
||||
// Establece la velocidad de los globos
|
||||
void setBalloonSpeed(float speed);
|
||||
|
||||
// Incrementa la velocidad de los globos
|
||||
void incBalloonSpeed();
|
||||
|
||||
// Decrementa la velocidad de los globos
|
||||
void decBalloonSpeed();
|
||||
|
||||
// Actualiza la velocidad de los globos en funcion del poder acumulado de la fase
|
||||
void updateBalloonSpeed();
|
||||
|
||||
// Explosiona un globo. Lo destruye y crea otros dos si es el caso
|
||||
void popBalloon(Uint8 index);
|
||||
|
||||
// Explosiona un globo. Lo destruye
|
||||
void destroyBalloon(Uint8 index);
|
||||
|
||||
// Explosiona todos los globos
|
||||
void popAllBalloons();
|
||||
|
||||
// Destruye todos los globos
|
||||
void destroyAllBalloons();
|
||||
|
||||
// Detiene todos los globos
|
||||
void stopAllBalloons(Uint16 time);
|
||||
|
||||
// Pone en marcha todos los globos
|
||||
void startAllBalloons();
|
||||
|
||||
// Obtiene el numero de globos activos
|
||||
Uint8 countBalloons();
|
||||
|
||||
// Comprueba la colisión entre el jugador y los globos activos
|
||||
bool checkPlayerBalloonCollision(int index);
|
||||
|
||||
// Comprueba la colisión entre el jugador y los items
|
||||
void checkPlayerItemCollision(int index);
|
||||
|
||||
// Comprueba la colisión entre las balas y los globos
|
||||
void checkBulletBalloonCollision();
|
||||
|
||||
// Mueve las balas activas
|
||||
void moveBullets();
|
||||
|
||||
// Pinta las balas activas
|
||||
void renderBullets();
|
||||
|
||||
// Devuelve el primer indice no activo del vector de balas
|
||||
Uint8 getBulletFreeIndex();
|
||||
|
||||
// Establece a cero todos los valores del vector de objetos bala
|
||||
void resetBullets();
|
||||
|
||||
// Crea un objeto bala
|
||||
void createBullet(int x, int y, Uint8 kind, bool poweredUp, int owner);
|
||||
|
||||
// Actualiza los items
|
||||
void updateItems();
|
||||
|
||||
// Pinta los items activos
|
||||
void renderItems();
|
||||
|
||||
// Devuelve el primer indice no activo del vector de items
|
||||
Uint8 getItemFreeIndex();
|
||||
|
||||
// Establece a cero todos los valores del vector de objetos item
|
||||
void resetItems();
|
||||
|
||||
// Devuelve un item en función del azar
|
||||
Uint8 dropItem();
|
||||
|
||||
// Crea un objeto item
|
||||
void createItem(int x, int y, Uint8 kind);
|
||||
|
||||
// Crea un objeto SmartSprite
|
||||
void createItemScoreSprite(int x, int y, SmartSprite *sprite);
|
||||
|
||||
// Dibuja el efecto de flash
|
||||
void renderFlashEffect();
|
||||
|
||||
// Actualiza el efecto de agitar la pantalla
|
||||
void updateShakeEffect();
|
||||
|
||||
// Crea un SmartSprite para arrojar el item café al recibir un impacto
|
||||
void throwCoffee(int x, int y);
|
||||
|
||||
// Crea un SmartSprite para arrojar al jugador al morir
|
||||
void throwPlayer(int x, int y, int index);
|
||||
|
||||
// Actualiza los SmartSprites
|
||||
void updateSmartSprites();
|
||||
|
||||
// Pinta los SmartSprites activos
|
||||
void renderSmartSprites();
|
||||
|
||||
// Devuelve el primer indice no activo del vector de SmartSprites
|
||||
Uint8 getSmartSpriteFreeIndex();
|
||||
|
||||
// Establece a cero todos los valores del vector de objetos SmafrtSprite
|
||||
void resetSmartSprites();
|
||||
|
||||
// Acciones a realizar cuando el jugador muere
|
||||
void killPlayer(int index);
|
||||
|
||||
// Obtiene el valor de la variable
|
||||
Uint8 getSubsection();
|
||||
|
||||
// Calcula y establece el valor de amenaza en funcion de los globos activos
|
||||
void evaluateAndSetMenace();
|
||||
|
||||
// Obtiene el valor de la variable
|
||||
Uint8 getMenace();
|
||||
|
||||
// Establece el valor de la variable
|
||||
void setTimeStopped(bool value);
|
||||
|
||||
// Obtiene el valor de la variable
|
||||
bool isTimeStopped();
|
||||
|
||||
// Establece el valor de la variable
|
||||
void setTimeStoppedCounter(Uint16 value);
|
||||
|
||||
// Incrementa el valor de la variable
|
||||
void incTimeStoppedCounter(Uint16 value);
|
||||
|
||||
// Actualiza la variable EnemyDeployCounter
|
||||
void updateEnemyDeployCounter();
|
||||
|
||||
// Actualiza y comprueba el valor de la variable
|
||||
void updateTimeStoppedCounter();
|
||||
|
||||
// Establece el valor de la variable
|
||||
void setExplosionTime(bool value);
|
||||
|
||||
// Obtiene el valor de la variable
|
||||
bool isExplosionTime();
|
||||
|
||||
// Establece el valor de la variable
|
||||
void setRemainingExplosions(Uint8 value);
|
||||
|
||||
// Actualiza y comprueba el valor de la variable
|
||||
void updateRemainingExplosionsCounter();
|
||||
|
||||
// Gestiona el nivel de amenaza
|
||||
void updateMenace();
|
||||
|
||||
// Actualiza el campo de juego
|
||||
void updatePlayField();
|
||||
|
||||
// Actualiza el fondo
|
||||
void updateBackground();
|
||||
|
||||
// Dibuja el fondo
|
||||
void renderBackground();
|
||||
|
||||
// Dibuja el campo de juego
|
||||
void renderPlayField();
|
||||
|
||||
// Gestiona las entradas desde el mando de juego
|
||||
bool checkGameController(Uint8 state);
|
||||
|
||||
// Gestiona la entrada durante el juego
|
||||
void checkGameInput();
|
||||
|
||||
// Pinta diferentes mensajes en la pantalla
|
||||
void renderMessages();
|
||||
|
||||
// Habilita el efecto del item de detener el tiempo
|
||||
void enableTimeStopItem();
|
||||
|
||||
// Deshabilita el efecto del item de detener el tiempo
|
||||
void disableTimeStopItem();
|
||||
|
||||
// Agita la pantalla
|
||||
void shakeScreen();
|
||||
|
||||
// Bucle para el menu de pausa del juego
|
||||
void runPausedGame();
|
||||
|
||||
// Bucle para la pantalla de game over
|
||||
void runGameOverScreen();
|
||||
|
||||
// Dibuja la informacion de debug en pantalla
|
||||
void renderDebugInfo();
|
||||
|
||||
// Indica si se puede crear una powerball
|
||||
bool canPowerBallBeCreated();
|
||||
|
||||
// Calcula el poder actual de los globos en pantalla
|
||||
int calculateScreenPower();
|
||||
|
||||
// Inicializa las variables que contienen puntos de ruta para mover objetos
|
||||
void initPaths();
|
||||
|
||||
// Actualiza el tramo final de juego, una vez completado
|
||||
void updateGameCompleted();
|
||||
|
||||
// Actualiza las variables de ayuda
|
||||
void updateHelper();
|
||||
|
||||
// Comprueba si todos los jugadores han muerto
|
||||
bool allPlayersAreDead();
|
||||
|
||||
public:
|
||||
// Constructor
|
||||
Game(int numPlayers, SDL_Renderer *renderer, std::string *filelist, Lang *lang, Input *input, bool demo, options_t *options);
|
||||
Game(SDL_Renderer *renderer, std::string *filelist, Lang *lang, Input *input);
|
||||
|
||||
// Destructor
|
||||
~Game();
|
||||
|
||||
@@ -1,15 +1,4 @@
|
||||
#ifdef _WIN64
|
||||
#include "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\lib\gcc\x86_64-w64-mingw32\8.1.0\include\c++\SDL2\SDL.h"
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
#include "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\lib\gcc\x86_64-w64-mingw32\8.1.0\include\c++\SDL2\SDL.h"
|
||||
#endif
|
||||
|
||||
#ifdef __APPLE__
|
||||
//#include "/Library/Frameworks/SDL2.framework/Versions/A/Headers/SDL.h"
|
||||
#include <SDL2/SDL.h>
|
||||
#endif
|
||||
|
||||
#ifdef __linux__
|
||||
#ifdef __MIPSEL__
|
||||
@@ -17,6 +6,4 @@
|
||||
#else
|
||||
#include <SDL2/SDL.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define UNUSED
|
||||
#endif
|
||||
@@ -1,37 +1,8 @@
|
||||
/*
|
||||
Código fuente creado por JailDesigner (2020)
|
||||
Empezado en Castalla el 15/07/2020.
|
||||
|
||||
Descripción del enfoque utilizado para crear el juego.
|
||||
Código fuente creado por JailDesigner
|
||||
Empezado en Castalla el 06/09/2021.
|
||||
|
||||
El programa contine una serie de clases/objetos básicos: la clase sprite
|
||||
permite dibujar partes de un fichero png en pantalla. La clase AnimatedSprite
|
||||
contiene funcionalidad adicional para crear animaciones. La clase text permite
|
||||
dibujar letras de un png en pantalla a partir de una cadena de texto. La clase
|
||||
menu permite crear una estructura con diferentes elementos, escribirlos en
|
||||
pantalla y seleccionar uno de ellos.
|
||||
|
||||
A continuación tenemos las clases enfocadas a la lógica del juego, la clase player
|
||||
contiene la información del jugador, la clase balloon la de los enemigos y la
|
||||
clase bullet para las balas que dispara el jugador. La clase background es
|
||||
muy simple y sirve para pintar el fondo de la pantalla. Por ultimo, la clase
|
||||
mDirector es la que realiza toda la lógica y se encarga de hacer interactuar
|
||||
al resto de objetos entre si.
|
||||
|
||||
El objeto mDirector tiene tres estados: titulo, juego y pausa. Segun su estado
|
||||
el bucle que recorre es distinto. En el bucle juego, el objeto mDirector
|
||||
tiene un objeto jugador, un vector con los objetos globo y un vector con los
|
||||
objetos bala. Se encarga de comprobar las entradas de teclado o gamepad para
|
||||
cerrar la aplicacion, saltar al estado de pausa y para mover al jugador. Recorre
|
||||
el vector de globos y de balas y si tienen algun tipo asignado las gestiona.
|
||||
Comprueba las colisiones entre los globos y el jugador y entre las balas y los
|
||||
globos. Tiene ademas un nivel de amenaza que calcula en funcion del numero de globos
|
||||
en pantalla y que se va incrementando conforme aumenta la puntuación del jugador.
|
||||
|
||||
Los objetos globo tienen varios contadores para alternar de un estado a otro.
|
||||
|
||||
En los vectores que contienen objetos, se considera activos los objetos que tienen
|
||||
un tipo asociado diferente a NO_KIND
|
||||
*/
|
||||
|
||||
#include "director.h"
|
||||
|
||||
Reference in New Issue
Block a user