From 946ab62c30d8dd565b21a8d1970856b0fbed0e0f Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Sat, 28 Aug 2021 13:21:10 +0200 Subject: [PATCH] writer class completed --- media/font/nokia.txt | 2 +- source/director.cpp | 1 + source/director.h | 2 +- source/game.cpp | 6 +-- source/game.h | 2 +- source/instructions.cpp | 2 +- source/intro.cpp | 101 ++++++++++++++++++++-------------------- source/intro.h | 7 +-- source/text.cpp | 2 + source/title.cpp | 4 +- source/writer.cpp | 34 +++++++------- 11 files changed, 84 insertions(+), 79 deletions(-) diff --git a/media/font/nokia.txt b/media/font/nokia.txt index d03198e..4ccd757 100644 --- a/media/font/nokia.txt +++ b/media/font/nokia.txt @@ -3,7 +3,7 @@ # box height 10 # 32 espacio ( ) -3 +7 # 33 ! 4 # 34 " diff --git a/source/director.cpp b/source/director.cpp index 3c54887..934e3fe 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -262,6 +262,7 @@ void Director::setFileList() mFileList[27] = mExecutablePath + "/" + "../media/font/8bithud.png"; mFileList[46] = mExecutablePath + "/" + "../media/font/8bithud.txt"; mFileList[28] = mExecutablePath + "/" + "../media/font/nokia.png"; + mFileList[52] = mExecutablePath + "/" + "../media/font/nokia.txt"; mFileList[29] = mExecutablePath + "/" + "../media/font/smb2_big.png"; mFileList[47] = mExecutablePath + "/" + "../media/font/smb2_big.txt"; mFileList[30] = mExecutablePath + "/" + "../media/font/smb2.png"; diff --git a/source/director.h b/source/director.h index 30ae0ca..e9cd069 100644 --- a/source/director.h +++ b/source/director.h @@ -9,7 +9,7 @@ #include "coffeedrop.h" #include "item.h" #include "text.h" -#include "text2.h" +#include "writer.h" #include "menu.h" #include "const.h" #include "jail_audio.h" diff --git a/source/game.cpp b/source/game.cpp index e9f56a3..f151500 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -355,9 +355,9 @@ void Game::init() mFade->init(0x27, 0x27, 0x36); // Inicializa los objetos de texto - mText->init(); - mTextScoreBoard->init(); - mTextBig->init(); + //mText->init(); + //mTextScoreBoard->init(); + //mTextBig->init(); // Inicializa el objeto con el menu de pausa mMenuPause->init("PAUSE", 0, 12 * BLOCK, MENU_BACKGROUND_SOLID); diff --git a/source/game.h b/source/game.h index 7102feb..301d17d 100644 --- a/source/game.h +++ b/source/game.h @@ -13,7 +13,7 @@ #include "item.h" #include "text.h" -#include "text2.h" +#include "writer.h" #include "menu.h" #include "input.h" #include "fade.h" diff --git a/source/instructions.cpp b/source/instructions.cpp index ad3771a..be49e54 100644 --- a/source/instructions.cpp +++ b/source/instructions.cpp @@ -73,7 +73,7 @@ void Instructions::init() mSprite->init(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, mItemTexture, mRenderer); mTicks = 0; mTicksSpeed = 15; - mText->init(); + //mText->init(); mManualQuit = false; mCounter = 0; } diff --git a/source/intro.cpp b/source/intro.cpp index b194fad..c6db912 100644 --- a/source/intro.cpp +++ b/source/intro.cpp @@ -16,12 +16,13 @@ Intro::Intro(SDL_Renderer *renderer, std::string *fileList, Lang *lang) mEventHandler = new SDL_Event(); mBitmapTexture = new LTexture(); mTextTexture = new LTexture(); + mText = new Text(mFileList[52], mTextTexture, mRenderer); for (int i = 0; i < INTRO_TOTAL_BITMAPS; i++) mBitmap[i] = new SmartSprite(); for (int i = 0; i < INTRO_TOTAL_TEXTS; i++) - mText[i] = new Text2(mFileList[46], mTextTexture, mRenderer); + mWriter[i] = new Writer(mText); } // Destructor @@ -45,8 +46,8 @@ Intro::~Intro() } for (int i = 0; i < INTRO_TOTAL_TEXTS; i++) { - delete mText[i]; - mText[i] = nullptr; + delete mWriter[i]; + mWriter[i] = nullptr; } JA_DeleteMusic(mMusic); @@ -133,55 +134,55 @@ void Intro::init() // Inicializa los textos de la intro for (int i = 0; i < INTRO_TOTAL_TEXTS; i++) { - mText[i]->init(); - mText[i]->setId(6 + i); - mText[i]->setIntroEvents(&mEvents[0]); - mText[i]->setPosX(BLOCK * 0); - mText[i]->setPosY(SCREEN_HEIGHT - (BLOCK * 6)); - mText[i]->setKerning(-1); - mText[i]->setEnabled(false); - mText[i]->setEnabledTimer(180); + mWriter[i]->init(); + mWriter[i]->setId(6 + i); + mWriter[i]->setIntroEvents(&mEvents[0]); + mWriter[i]->setPosX(BLOCK * 0); + mWriter[i]->setPosY(SCREEN_HEIGHT - (BLOCK * 6)); + mWriter[i]->setKerning(-1); + mWriter[i]->setEnabled(false); + mWriter[i]->setEnabledTimer(180); } // Un dia qualsevol de l'any 2000 - mText[0]->setCaption(mLang->getText(27)); - mText[0]->setWrittingSpeed(10); + mWriter[0]->setCaption(mLang->getText(27)); + mWriter[0]->setSpeed(10); // Tot esta tranquil a la UPV - mText[1]->setCaption(mLang->getText(28)); - mText[1]->setWrittingSpeed(10); + mWriter[1]->setCaption(mLang->getText(28)); + mWriter[1]->setSpeed(10); // Fins que un desaprensiu... - mText[2]->setCaption(mLang->getText(29)); - mText[2]->setWrittingSpeed(15); + mWriter[2]->setCaption(mLang->getText(29)); + mWriter[2]->setSpeed(15); // HEY! ME ANE A FERME UN CORTAET... - mText[3]->setCaption(mLang->getText(30)); - mText[3]->setWrittingSpeed(10); + mWriter[3]->setCaption(mLang->getText(30)); + mWriter[3]->setSpeed(10); // UAAAAAAAAAAAAA!!! - mText[4]->setCaption(mLang->getText(31)); - mText[4]->setWrittingSpeed(1); + mWriter[4]->setCaption(mLang->getText(31)); + mWriter[4]->setSpeed(1); // Espera un moment... - mText[5]->setCaption(mLang->getText(32)); - mText[5]->setWrittingSpeed(20); + mWriter[5]->setCaption(mLang->getText(32)); + mWriter[5]->setSpeed(20); // Si resulta que no tinc solt! - mText[6]->setCaption(mLang->getText(33)); - mText[6]->setWrittingSpeed(2); + mWriter[6]->setCaption(mLang->getText(33)); + mWriter[6]->setSpeed(2); // MERDA DE MAQUINA! - mText[7]->setCaption(mLang->getText(34)); - mText[7]->setWrittingSpeed(3); + mWriter[7]->setCaption(mLang->getText(34)); + mWriter[7]->setSpeed(3); // Blop... blop... blop... - mText[8]->setCaption(mLang->getText(35)); - mText[8]->setWrittingSpeed(20); + mWriter[8]->setCaption(mLang->getText(35)); + mWriter[8]->setSpeed(20); for (int i = 0; i < INTRO_TOTAL_TEXTS; i++) { - mText[i]->center(SCREEN_CENTER_X); + mWriter[i]->center(SCREEN_CENTER_X); } } @@ -240,7 +241,7 @@ section_t Intro::run() for (int i = 0; i < INTRO_TOTAL_BITMAPS; i++) mBitmap[i]->update(); for (int i = 0; i < INTRO_TOTAL_TEXTS; i++) - mText[i]->update(); + mWriter[i]->update(); // Guión de eventos // Primera imagen - UPV @@ -253,23 +254,23 @@ section_t Intro::run() // Primer texto de la primera imagen if ((mEvents[BITMAP0] == EVENT_COMPLETED) && (mEvents[TEXT0] == EVENT_WAITING)) { - mText[0]->setEnabled(true); + mWriter[0]->setEnabled(true); mEvents[TEXT0] = EVENT_RUNNING; } // Segundo texto de la primera imagen if ((mEvents[TEXT0] == EVENT_COMPLETED) && (mEvents[TEXT1] == EVENT_WAITING)) { - mText[0]->setEnabled(false); - mText[1]->setEnabled(true); + mWriter[0]->setEnabled(false); + mWriter[1]->setEnabled(true); mEvents[TEXT1] = EVENT_RUNNING; } // Tercer texto de la primera imagen if ((mEvents[TEXT1] == EVENT_COMPLETED) && (mEvents[TEXT2] == EVENT_WAITING)) { - mText[1]->setEnabled(false); - mText[2]->setEnabled(true); + mWriter[1]->setEnabled(false); + mWriter[2]->setEnabled(true); mEvents[TEXT2] = EVENT_RUNNING; } @@ -277,7 +278,7 @@ section_t Intro::run() if ((mEvents[TEXT2] == EVENT_COMPLETED) && (mEvents[BITMAP1] == EVENT_WAITING)) { mBitmap[0]->setEnabled(false); - mText[2]->setEnabled(false); + mWriter[2]->setEnabled(false); mBitmap[1]->setEnabled(true); mEvents[BITMAP1] = EVENT_RUNNING; } @@ -285,7 +286,7 @@ section_t Intro::run() // Primer texto de la segunda imagen if ((mEvents[BITMAP1] == EVENT_COMPLETED) && (mEvents[TEXT3] == EVENT_WAITING)) { - mText[3]->setEnabled(true); + mWriter[3]->setEnabled(true); mEvents[TEXT3] = EVENT_RUNNING; } @@ -293,9 +294,9 @@ section_t Intro::run() if ((mEvents[TEXT3] == EVENT_COMPLETED) && (mEvents[BITMAP2] == EVENT_WAITING) && (mEvents[TEXT4] == EVENT_WAITING)) { mBitmap[1]->setEnabled(false); - mText[3]->setEnabled(false); + mWriter[3]->setEnabled(false); mBitmap[2]->setEnabled(true); - mText[4]->setEnabled(true); + mWriter[4]->setEnabled(true); mEvents[BITMAP2] = EVENT_RUNNING; mEvents[TEXT4] = EVENT_RUNNING; } @@ -304,9 +305,9 @@ section_t Intro::run() if ((mEvents[TEXT4] == EVENT_COMPLETED) && (mEvents[BITMAP3] == EVENT_WAITING) && (mEvents[TEXT5] == EVENT_WAITING)) { mBitmap[2]->setEnabled(false); - mText[4]->setEnabled(false); + mWriter[4]->setEnabled(false); mBitmap[3]->setEnabled(true); - mText[5]->setEnabled(true); + mWriter[5]->setEnabled(true); mEvents[BITMAP3] = EVENT_RUNNING; mEvents[TEXT5] = EVENT_RUNNING; } @@ -314,8 +315,8 @@ section_t Intro::run() // Segundo texto de la cuarta imagen if ((mEvents[TEXT5] == EVENT_COMPLETED) && (mEvents[TEXT6] == EVENT_WAITING)) { - mText[5]->setEnabled(false); - mText[6]->setEnabled(true); + mWriter[5]->setEnabled(false); + mWriter[6]->setEnabled(true); mEvents[TEXT6] = EVENT_RUNNING; } @@ -323,7 +324,7 @@ section_t Intro::run() if ((mEvents[TEXT6] == EVENT_COMPLETED) && (mEvents[BITMAP4] == EVENT_WAITING)) { mBitmap[3]->setEnabled(false); - mText[6]->setEnabled(false); + mWriter[6]->setEnabled(false); mBitmap[4]->setEnabled(true); mEvents[BITMAP4] = EVENT_RUNNING; } @@ -331,7 +332,7 @@ section_t Intro::run() // Primer texto de la quinta imagen if ((mEvents[BITMAP4] == EVENT_COMPLETED) && (mEvents[TEXT7] == EVENT_WAITING)) { - mText[7]->setEnabled(true); + mWriter[7]->setEnabled(true); mEvents[TEXT7] = EVENT_RUNNING; } @@ -339,9 +340,9 @@ section_t Intro::run() if ((mEvents[TEXT7] == EVENT_COMPLETED) && (mEvents[BITMAP5] == EVENT_WAITING) && (mEvents[TEXT8] == EVENT_WAITING)) { mBitmap[4]->setEnabled(false); - mText[7]->setEnabled(false); + mWriter[7]->setEnabled(false); mBitmap[5]->setEnabled(true); - mText[8]->setEnabled(true); + mWriter[8]->setEnabled(true); mEvents[BITMAP5] = EVENT_RUNNING; mEvents[TEXT8] = EVENT_RUNNING; } @@ -349,7 +350,7 @@ section_t Intro::run() // Acaba el último texto if (mEvents[TEXT8] == EVENT_COMPLETED) { - mText[8]->setEnabled(false); + mWriter[8]->setEnabled(false); JA_StopMusic(); mSection = {PROG_SECTION_TITLE, TITLE_SECTION_1}; } @@ -363,7 +364,7 @@ section_t Intro::run() for (int i = 0; i < INTRO_TOTAL_BITMAPS; i++) mBitmap[i]->render(); for (int i = 0; i < INTRO_TOTAL_TEXTS; i++) - mText[i]->render(); + mWriter[i]->render(); // Actualiza la pantalla SDL_RenderPresent(mRenderer); diff --git a/source/intro.h b/source/intro.h index 3595bc6..257e573 100644 --- a/source/intro.h +++ b/source/intro.h @@ -4,7 +4,7 @@ #include "utils.h" #include "smartsprite.h" -#include "text2.h" +#include "writer.h" #include "jail_audio.h" #ifndef INTRO_H @@ -19,12 +19,13 @@ private: SDL_Event *mEventHandler; // Manejador de eventos SDL_Renderer *mRenderer; // El renderizador de la ventana std::string *mFileList; // Lista de ficheros - Lang *mLang; // Objeto para gestionar los textos en diferentes idiomas + Lang *mLang; // Objeto para gestionar los textos en diferentes idiomas section_t mSection; // Estado del bucle principal para saber si continua o se sale Uint32 mTicks; // Contador de ticks para ajustar la velocidad del programa Uint8 mTicksSpeed; // Velocidad a la que se repiten los bucles del programa SmartSprite *mBitmap[INTRO_TOTAL_BITMAPS]; // Vector con los sprites inteligentes para los dibujos de la intro - Text2 *mText[INTRO_TOTAL_TEXTS]; // Textos de la intro + Writer *mWriter[INTRO_TOTAL_TEXTS]; // Textos de la intro + Text *mText; // Textos de la intro Uint8 mEvents[INTRO_TOTAL_EVENTS]; // Vector para coordinar los eventos de la intro JA_Music mMusic; // Musica para la intro diff --git a/source/text.cpp b/source/text.cpp index bbd204a..dcb5e2c 100644 --- a/source/text.cpp +++ b/source/text.cpp @@ -10,6 +10,8 @@ Text::Text(std::string file, LTexture *texture, SDL_Renderer *renderer) mSprite->setTexture(texture); mSprite->setRenderer(renderer); mFile = file; + + init(); } // Destructor diff --git a/source/title.cpp b/source/title.cpp index eada0b4..4c540f3 100644 --- a/source/title.cpp +++ b/source/title.cpp @@ -129,8 +129,8 @@ void Title::init(bool demo, Uint8 subsection) mPostFade = 0; mTicks = 0; mTicksSpeed = 15; - mText->init(); - mText2->init(); + //mText->init(); + //mText2->init(); mFade->init(0x00, 0x00, 0x00); mDemo = demo; diff --git a/source/writer.cpp b/source/writer.cpp index b3be273..113504c 100644 --- a/source/writer.cpp +++ b/source/writer.cpp @@ -2,8 +2,9 @@ #include "writer.h" // Constructor -Writer::Writer(std::string file, LTexture *texture, SDL_Renderer *renderer) +Writer::Writer(Text *text) { + mText = text; } // Destructor @@ -14,16 +15,15 @@ Writer::~Writer() // Inicializador void Writer::init() { - Text::init(); mPosX = 0; mPosY = 0; mKerning = 0; mCaption = ""; - mWrittingSpeed = 0; - mWrittingTimer = 0; + mSpeed = 0; + mTimer = 0; mIndex = 0; mLenght = 0; - mWrittingCompleted = false; + mCompleted = false; mEnabled = false; mEnabledTimer = 0; mId = -1; @@ -56,10 +56,10 @@ void Writer::setCaption(std::string text) } // Establece el valor de la variable -void Writer::setWrittingSpeed(Uint16 value) +void Writer::setSpeed(Uint16 value) { - mWrittingSpeed = value; - mWrittingTimer = value; + mSpeed = value; + mTimer = value; } // Establece el valor de la variable @@ -91,23 +91,23 @@ void Writer::update() { if (mEnabled) { - if (mWrittingCompleted == false) + if (mCompleted == false) { - if (mWrittingTimer > 0) + if (mTimer > 0) { - mWrittingTimer--; + mTimer--; } - if (mWrittingTimer == 0) + if (mTimer == 0) { mIndex++; - mWrittingTimer = mWrittingSpeed; + mTimer = mSpeed; } if (mIndex == mLenght) { - mWrittingCompleted = true; + mCompleted = true; } } - if (mWrittingCompleted) + if (mCompleted) { if (mEnabledTimer > 0) { @@ -133,14 +133,14 @@ void Writer::render() { if (mEnabled) { - Text::write(mPosX, mPosY, mCaption, mKerning, mIndex); + mText->write(mPosX, mPosY, mCaption, mKerning, mIndex); } } // Centra la cadena de texto a un punto X void Writer::center(int x) { - setPosX(x - (lenght(mCaption, mKerning) / 2)); + setPosX(x - (mText->lenght(mCaption, mKerning) / 2)); } // Establece el valor de la variable