diff --git a/source/code/BlockGameSdl.inc b/source/code/BlockGameSdl.inc index 6ad974b..03f17ac 100644 --- a/source/code/BlockGameSdl.inc +++ b/source/code/BlockGameSdl.inc @@ -24,7 +24,12 @@ https://blockattack.net #include "BlockGame.hpp" #include "global.hpp" #include "sago/SagoTextField.hpp" -#include "mainVars.inc" +#include "BallManager.hpp" +#include "puzzlehandler.hpp" + +extern BallManager theBallManager; + +extern ExplosionManager theExplosionManager; static void setScoreboardFont(const sago::SagoDataHolder* holder, sago::SagoTextField& field, const char* text){ @@ -133,7 +138,7 @@ public: if (!globalData.SoundEnabled) { return; } - Mix_PlayChannel(1, applause.get(), 0); + Mix_PlayChannel(1, globalData.applause.get(), 0); } void DrawEvent() const override { @@ -144,19 +149,19 @@ public: if (!globalData.SoundEnabled) { return; } - Mix_PlayChannel(0, boing.get(), 0); + Mix_PlayChannel(0, globalData.boing.get(), 0); } void LongChainDoneEvent() const override { if (!globalData.SoundEnabled) { return; } - Mix_PlayChannel(1, applause.get(), 0); + Mix_PlayChannel(1, globalData.applause.get(), 0); } void TimeTrialEndEvent() const override { if (!globalData.NoSound && globalData.SoundEnabled) { - Mix_PlayChannel(1,counterFinalChunk.get(),0); + Mix_PlayChannel(1,globalData.counterFinalChunk.get(),0); } } @@ -164,7 +169,7 @@ public: if (!globalData.SoundEnabled) { return; } - Mix_PlayChannel(1, applause.get(), 0); + Mix_PlayChannel(1, globalData.applause.get(), 0); } private: @@ -248,33 +253,33 @@ private: if (size_y == 1) { //single line - garbageML.Draw(globalData.screen, draw_time, 0, 0); + globalData.garbageML.Draw(globalData.screen, draw_time, 0, 0); for (int i = 1; i < size_x-1; ++i) { - garbageM.Draw(globalData.screen, draw_time, i*bsize, 0); + globalData.garbageM.Draw(globalData.screen, draw_time, i*bsize, 0); } - garbageMR.Draw(globalData.screen, draw_time, (size_x-1)*bsize, 0); + globalData.garbageMR.Draw(globalData.screen, draw_time, (size_x-1)*bsize, 0); } if (size_y > 1) { // Top line - garbageTL.Draw(globalData.screen, draw_time, 0, 0); + globalData.garbageTL.Draw(globalData.screen, draw_time, 0, 0); for (int i = 1; i < size_x-1; ++i) { - garbageT.Draw(globalData.screen, draw_time, i*bsize, 0); + globalData.garbageT.Draw(globalData.screen, draw_time, i*bsize, 0); } - garbageTR.Draw(globalData.screen, draw_time, (size_x-1)*bsize, 0); + globalData.garbageTR.Draw(globalData.screen, draw_time, (size_x-1)*bsize, 0); // Middle lines (if any) for (int j=1; j < size_y-1; ++j) { - garbageL.Draw(globalData.screen, draw_time, 0, j*bsize); + globalData.garbageL.Draw(globalData.screen, draw_time, 0, j*bsize); for (int i = 1; i < size_x-1; ++i) { - garbageFill.Draw(globalData.screen, draw_time, i*bsize, j*bsize); + globalData.garbageFill.Draw(globalData.screen, draw_time, i*bsize, j*bsize); } - garbageR.Draw(globalData.screen, draw_time, (size_x-1)*bsize, j*bsize); + globalData.garbageR.Draw(globalData.screen, draw_time, (size_x-1)*bsize, j*bsize); } //Buttom line - garbageBL.Draw(globalData.screen, draw_time, 0, (size_y-1)*bsize); + globalData.garbageBL.Draw(globalData.screen, draw_time, 0, (size_y-1)*bsize); for (int i = 1; i < size_x-1; ++i) { - garbageB.Draw(globalData.screen, draw_time, i*bsize, (size_y-1)*bsize); + globalData.garbageB.Draw(globalData.screen, draw_time, i*bsize, (size_y-1)*bsize); } - garbageBR.Draw(globalData.screen, draw_time, (size_x-1)*bsize, (size_y-1)*bsize); + globalData.garbageBR.Draw(globalData.screen, draw_time, (size_x-1)*bsize, (size_y-1)*bsize); } SDL_SetRenderTarget( globalData.screen, nullptr ); @@ -295,13 +300,13 @@ private: for (int j=0; j < size_y; ++j) { if (j==0) { - garbageGML.Draw(globalData.screen, draw_time, j*bsize, 0); + globalData.garbageGML.Draw(globalData.screen, draw_time, j*bsize, 0); } else if (j==5) { - garbageGMR.Draw(globalData.screen, draw_time, j*bsize, 0); + globalData.garbageGMR.Draw(globalData.screen, draw_time, j*bsize, 0); } else { - garbageGM.Draw(globalData.screen, draw_time, j*bsize, 0); + globalData.garbageGM.Draw(globalData.screen, draw_time, j*bsize, 0); } } @@ -334,12 +339,12 @@ private: for (int j=0; j<6; ++j) { int basicBrick = board[j][i]%10; //The basic brick, stored on the least significant digit if ((basicBrick > -1) && (basicBrick < 7) && ((board[j][i]/1000000)%10==0)) { - DrawImgBoardBounded(bricks[basicBrick], j*bsize, bsize*12-i*bsize-pixels); + DrawImgBoardBounded(globalData.bricks[basicBrick], j*bsize, bsize*12-i*bsize-pixels); if ((board[j][i]/BLOCKWAIT)%10==1) { - DrawImgBoard(bomb, j*bsize, bsize*12-i*bsize-pixels); + DrawImgBoard(globalData.bomb, j*bsize, bsize*12-i*bsize-pixels); } if ((board[j][i]/BLOCKHANG)%10==1) { - DrawImgBoardBounded(ready, j*bsize, bsize*12-i*bsize-pixels); + DrawImgBoardBounded(globalData.ready, j*bsize, bsize*12-i*bsize-pixels); } } @@ -399,7 +404,7 @@ private: } for (int i=0; i<6; i++) { if (board[i][0]!=-1) { - DrawImgBoardBounded(transCover, i*bsize, 12*bsize-pixels); //Make the appering blocks transperant + DrawImgBoardBounded(globalData.transCover, i*bsize, 12*bsize-pixels); //Make the appering blocks transperant } } @@ -407,7 +412,7 @@ private: public: //Draws everything void DoPaintJob() { - DrawIMG(boardBackBack,globalData.screen,this->GetTopX()-60,this->GetTopY()-68); + DrawIMG(globalData.boardBackBack,globalData.screen,this->GetTopX()-60,this->GetTopY()-68); this->scoreLabel.Draw(globalData.screen, this->GetTopX()+310,this->GetTopY()-68+148); this->timeLabel.Draw(globalData.screen, this->GetTopX()+310,this->GetTopY()-68+197); @@ -417,7 +422,7 @@ public: PaintBricks(); if (stageClear) { - DrawImgBoard(blackLine, 0, bsize*(12+2)+bsize*(stageClearLimit-linesCleared)-pixels-1); + DrawImgBoard(globalData.blackLine, 0, bsize*(12+2)+bsize*(stageClearLimit-linesCleared)-pixels-1); } if (puzzleMode&&(!bGameOver)) { //We need to write nr. of moves left! @@ -429,16 +434,16 @@ public: } if (puzzleMode && stageButtonStatus == SBpuzzleMode) { - DrawImgBoard(bRetry, cordRetryButton.x, cordRetryButton.y); - PrintTextCenteredBoard(cordRetryButton.x, cordRetryButton.y, buttonRetry); + DrawImgBoard(globalData.bRetry, globalData.cordRetryButton.x, globalData.cordRetryButton.y); + PrintTextCenteredBoard(globalData.cordRetryButton.x, globalData.cordRetryButton.y, buttonRetry); if (getLevel()GetSprite("touchcursor"),mx*bsize, 11*bsize-my*bsize-pixels); } else { - DrawImgBoard(cursor,cursorx*bsize,11*bsize-cursory*bsize-pixels); + DrawImgBoard(globalData.cursor,cursorx*bsize,11*bsize-cursory*bsize-pixels); } } if (ticks115 && currentCounter<120) { - Mix_PlayChannel(1, counterChunk.get(), 0); + Mix_PlayChannel(1, globalData.counterChunk.get(), 0); } } lastCounter = currentCounter; } else { if ( (0==lastCounter) && (globalData.SoundEnabled)&&(!globalData.NoSound)) { - Mix_PlayChannel(1, counterFinalChunk.get(), 0); + Mix_PlayChannel(1, globalData.counterFinalChunk.get(), 0); } lastCounter = -1; } @@ -533,14 +538,14 @@ public: if (bGameOver) { if (hasWonTheGame) { - tbWinner.Draw(globalData.screen, topx+150, topy+200, sago::SagoTextField::Alignment::center); + globalData.tbWinner.Draw(globalData.screen, topx+150, topy+200, sago::SagoTextField::Alignment::center); } else { if (bDraw) { - tbDraw.Draw(globalData.screen, topx+150, topy+200, sago::SagoTextField::Alignment::center); + globalData.tbDraw.Draw(globalData.screen, topx+150, topy+200, sago::SagoTextField::Alignment::center); } else { - tbGameOver.Draw(globalData.screen, topx+150, topy+200, sago::SagoTextField::Alignment::center); + globalData.tbGameOver.Draw(globalData.screen, topx+150, topy+200, sago::SagoTextField::Alignment::center); } } } diff --git a/source/code/HelpHowtoState.cpp b/source/code/HelpHowtoState.cpp index 579bcff..f705ed6 100644 --- a/source/code/HelpHowtoState.cpp +++ b/source/code/HelpHowtoState.cpp @@ -27,7 +27,6 @@ https://blockattack.net #include "MenuSystem.h" #include -extern sago::SagoSprite bricks[7]; /** * Draws bricks with a string like: @@ -49,7 +48,7 @@ static void RenderRowOfBricks(SDL_Renderer* target, const std::string& brickStr, brickChar = brickChar + 'a' - 'A'; } if (brickChar >= 'a' && brickChar <= 'g') { - bricks[brickChar - 'a'].Draw(target, tick, x+i*50, y); + globalData.bricks[brickChar - 'a'].Draw(target, tick, x+i*50, y); if (bomb) { globalData.spriteHolder->GetSprite("block_bomb").Draw(target, tick, x+i*50, y); } @@ -189,4 +188,4 @@ void HelpHowtoState::Draw(SDL_Renderer* target) { void HelpHowtoState::Update() { switchAnimation.Update(SDL_GetTicks()); HelpCommonState::Update(); -} \ No newline at end of file +} diff --git a/source/code/global.hpp b/source/code/global.hpp index 4a1a102..64e8376 100644 --- a/source/code/global.hpp +++ b/source/code/global.hpp @@ -31,6 +31,7 @@ http://www.blockattack.net #include "TextManager.hpp" #include "ExplosionManager.hpp" #include "sago/SagoTextField.hpp" +#include "sago/SagoTextBox.hpp" #include "ModInfo.hpp" #include "themes.hpp" @@ -73,6 +74,15 @@ const int SCREEN_HIGHT = 768; const int BOARD_WIDTH = 300; const int BOARD_HEIGHT = 600; +struct ButtonCords +{ + int x; + int y; + int xsize; + int ysize; +}; + + struct GlobalData { sago::SagoSprite bHighScore; @@ -106,6 +116,53 @@ struct GlobalData { int ysize = SCREEN_HIGHT; int mousex = 0; int mousey = 0; + + sago::SoundHandler applause; //Applause, then the player is good + sago::SoundHandler boing; //boing sound when clearing + sago::SoundHandler photoClick; //clickSound + sago::SoundHandler counterChunk; //When counting down + sago::SoundHandler counterFinalChunk; + + sago::SagoSprite garbageTL; //the Garbage Blocks + sago::SagoSprite garbageT; + sago::SagoSprite garbageTR; + sago::SagoSprite garbageR; + sago::SagoSprite garbageBR; + sago::SagoSprite garbageB; + sago::SagoSprite garbageBL; + sago::SagoSprite garbageL; + sago::SagoSprite garbageFill; + sago::SagoSprite garbageM; + sago::SagoSprite garbageML; + sago::SagoSprite garbageMR; + sago::SagoSprite garbageGM; + sago::SagoSprite garbageGML; + sago::SagoSprite garbageGMR; + sago::SagoSprite transCover; //The transperant block, covers the upcomming + sago::SagoSprite bSkip; + sago::SagoSprite bRetry; + + sago::SagoSprite blackLine; //The seperator in stage clear + sago::SagoSprite stageBobble; //The bobble instage clear + sago::SagoTextBox tbGameOver; + sago::SagoTextBox tbWinner; + sago::SagoTextBox tbDraw; + sago::SagoSprite iChainFrame; + //Animations: + sago::SagoSprite cursor; //The animated cursor + sago::SagoSprite bomb; + sago::SagoSprite ready; //Before the blocks fall + sago::SagoSprite explosion[4]; //Then a block explodes + //Animations end + sago::SagoSprite counter[3]; //Counts down from 3 + sago::SagoSprite bricks[7]; //The bricks, saved in an array of pointers + sago::SagoSprite crossover; //Cross the bricks that will be cleared soon + sago::SagoSprite balls[7]; //The balls (the small ones that jump around) + + sago::SagoSprite boardBackBack; + + ButtonCords cordNextButton; + ButtonCords cordRetryButton; }; #include "BallManager.hpp" diff --git a/source/code/main.cpp b/source/code/main.cpp index 1d96809..2036f16 100644 --- a/source/code/main.cpp +++ b/source/code/main.cpp @@ -115,65 +115,65 @@ static void setGameOverFont(const sago::SagoDataHolder* holder, sago::SagoTextBo //Load all image files to memory static int InitImages(sago::SagoSpriteHolder& holder) { - bricks[0] = holder.GetSprite("block_blue"); - bricks[1] = holder.GetSprite("block_green"); - bricks[2] = holder.GetSprite("block_purple"); - bricks[3] = holder.GetSprite("block_red"); - bricks[4] = holder.GetSprite("block_turkish"); - bricks[5] = holder.GetSprite("block_yellow"); - bricks[6] = holder.GetSprite("block_grey"); - bomb = holder.GetSprite("block_bomb"); + globalData.bricks[0] = holder.GetSprite("block_blue"); + globalData.bricks[1] = holder.GetSprite("block_green"); + globalData.bricks[2] = holder.GetSprite("block_purple"); + globalData.bricks[3] = holder.GetSprite("block_red"); + globalData.bricks[4] = holder.GetSprite("block_turkish"); + globalData.bricks[5] = holder.GetSprite("block_yellow"); + globalData.bricks[6] = holder.GetSprite("block_grey"); + globalData.bomb = holder.GetSprite("block_bomb"); globalData.bHighScore = holder.GetSprite("b_highscore"); globalData.bBack = holder.GetSprite("b_blank"); bForward = holder.GetSprite("b_forward"); - blackLine = holder.GetSprite("black_line"); - stageBobble = holder.GetSprite("i_stage_clear_limit"); - crossover = holder.GetSprite("crossover"); - balls[0] = holder.GetSprite("ball_blue"); - balls[1] = holder.GetSprite("ball_green"); - balls[2] = holder.GetSprite("ball_purple"); - balls[3] = holder.GetSprite("ball_red"); - balls[4] = holder.GetSprite("ball_turkish"); - balls[5] = holder.GetSprite("ball_yellow"); - balls[6] = holder.GetSprite("ball_gray"); - cursor = holder.GetSprite("cursor"); - ready = holder.GetSprite("block_ready"); - explosion[0] = holder.GetSprite("explosion0"); - explosion[1] = holder.GetSprite("explosion1"); - explosion[2] = holder.GetSprite("explosion2"); - explosion[3] = holder.GetSprite("explosion3"); - counter[0] = holder.GetSprite("counter_1"); - counter[1] = holder.GetSprite("counter_2"); - counter[2] = holder.GetSprite("counter_3"); - setGameOverFont(&holder.GetDataHolder(),tbGameOver, _("GAME OVER")); - setGameOverFont(&holder.GetDataHolder(),tbWinner, _("WINNER")); - setGameOverFont(&holder.GetDataHolder(),tbDraw, _("DRAW")); - iChainFrame = holder.GetSprite("chain_frame"); + globalData.blackLine = holder.GetSprite("black_line"); + globalData.stageBobble = holder.GetSprite("i_stage_clear_limit"); + globalData.crossover = holder.GetSprite("crossover"); + globalData.balls[0] = holder.GetSprite("ball_blue"); + globalData.balls[1] = holder.GetSprite("ball_green"); + globalData.balls[2] = holder.GetSprite("ball_purple"); + globalData.balls[3] = holder.GetSprite("ball_red"); + globalData.balls[4] = holder.GetSprite("ball_turkish"); + globalData.balls[5] = holder.GetSprite("ball_yellow"); + globalData.balls[6] = holder.GetSprite("ball_gray"); + globalData.cursor = holder.GetSprite("cursor"); + globalData.ready = holder.GetSprite("block_ready"); + globalData.explosion[0] = holder.GetSprite("explosion0"); + globalData.explosion[1] = holder.GetSprite("explosion1"); + globalData.explosion[2] = holder.GetSprite("explosion2"); + globalData.explosion[3] = holder.GetSprite("explosion3"); + globalData.counter[0] = holder.GetSprite("counter_1"); + globalData.counter[1] = holder.GetSprite("counter_2"); + globalData.counter[2] = holder.GetSprite("counter_3"); + setGameOverFont(&holder.GetDataHolder(),globalData.tbGameOver, _("GAME OVER")); + setGameOverFont(&holder.GetDataHolder(),globalData.tbWinner, _("WINNER")); + setGameOverFont(&holder.GetDataHolder(),globalData.tbDraw, _("DRAW")); + globalData.iChainFrame = holder.GetSprite("chain_frame"); globalData.iLevelCheck = holder.GetSprite("i_level_check"); globalData.iLevelCheckBox = holder.GetSprite("i_level_check_box"); globalData.iLevelCheckBoxMarked = holder.GetSprite("i_level_check_box_marked"); globalData.iCheckBoxArea = holder.GetSprite("i_check_box_area"); - boardBackBack = holder.GetSprite("board_back_back"); - garbageTL = holder.GetSprite("garbage_tl"); - garbageT = holder.GetSprite("garbage_t"); - garbageTR = holder.GetSprite("garbage_tr"); - garbageR = holder.GetSprite("garbage_r"); - garbageBR = holder.GetSprite("garbage_br"); - garbageB = holder.GetSprite("garbage_b"); - garbageBL = holder.GetSprite("garbage_bl"); - garbageL = holder.GetSprite("garbage_l"); - garbageFill = holder.GetSprite("garbage_fill"); - garbageML = holder.GetSprite("garbage_ml"); - garbageM = holder.GetSprite("garbage_m"); - garbageMR = holder.GetSprite("garbage_mr"); - garbageGM = holder.GetSprite("garbage_gm"); - garbageGML = holder.GetSprite("garbage_gml"); - garbageGMR = holder.GetSprite("garbage_gmr"); - transCover = holder.GetSprite("trans_cover"); + globalData.boardBackBack = holder.GetSprite("board_back_back"); + globalData.garbageTL = holder.GetSprite("garbage_tl"); + globalData.garbageT = holder.GetSprite("garbage_t"); + globalData.garbageTR = holder.GetSprite("garbage_tr"); + globalData.garbageR = holder.GetSprite("garbage_r"); + globalData.garbageBR = holder.GetSprite("garbage_br"); + globalData.garbageB = holder.GetSprite("garbage_b"); + globalData.garbageBL = holder.GetSprite("garbage_bl"); + globalData.garbageL = holder.GetSprite("garbage_l"); + globalData.garbageFill = holder.GetSprite("garbage_fill"); + globalData.garbageML = holder.GetSprite("garbage_ml"); + globalData.garbageM = holder.GetSprite("garbage_m"); + globalData.garbageMR = holder.GetSprite("garbage_mr"); + globalData.garbageGM = holder.GetSprite("garbage_gm"); + globalData.garbageGML = holder.GetSprite("garbage_gml"); + globalData.garbageGMR = holder.GetSprite("garbage_gmr"); + globalData.transCover = holder.GetSprite("trans_cover"); bExit = holder.GetSprite("b_exit"); - bSkip = holder.GetSprite("b_blank"); + globalData.bSkip = holder.GetSprite("b_blank"); globalData.bNext = holder.GetSprite("b_blank"); - bRetry = holder.GetSprite("b_blank"); + globalData.bRetry = holder.GetSprite("b_blank"); globalData.mouse = holder.GetSprite("mouse"); sagoTextSetBlueFont(player1name); @@ -187,6 +187,17 @@ static int InitImages(sago::SagoSpriteHolder& holder) { sagoTextSetBlueFont(player1speed); sagoTextSetBlueFont(player2speed); + globalData.cordNextButton.x = 3*bsize+(3*bsize-buttonXsize)/2; + globalData.cordNextButton.y = 10*bsize; + globalData.cordNextButton.xsize = buttonXsize; + globalData.cordNextButton.ysize = buttonYsize; + + + globalData.cordRetryButton.x = (3*bsize-buttonXsize)/2; + globalData.cordRetryButton.y = 10*bsize; + globalData.cordRetryButton.xsize = buttonXsize; + globalData.cordRetryButton.ysize = buttonYsize; + //Loads the sound if sound present if (!globalData.NoSound) { @@ -195,20 +206,20 @@ static int InitImages(sago::SagoSpriteHolder& holder) { highbeatMusic = holder.GetDataHolder().getMusicHandler("highbeat"); //the music... we just hope it exists, else the user won't hear anything //Same goes for the sounds - boing = holder.GetDataHolder().getSoundHandler("pop"); - applause = holder.GetDataHolder().getSoundHandler("applause"); - photoClick = holder.GetDataHolder().getSoundHandler("cameraclick"); + globalData.boing = holder.GetDataHolder().getSoundHandler("pop"); + globalData.applause = holder.GetDataHolder().getSoundHandler("applause"); + globalData.photoClick = holder.GetDataHolder().getSoundHandler("cameraclick"); globalData.typingChunk = holder.GetDataHolder().getSoundHandler("typing"); - counterChunk = holder.GetDataHolder().getSoundHandler("counter"); - counterFinalChunk = holder.GetDataHolder().getSoundHandler("counter_final"); + globalData.counterChunk = holder.GetDataHolder().getSoundHandler("counter"); + globalData.counterFinalChunk = holder.GetDataHolder().getSoundHandler("counter_final"); Config::getInstance()->setDefault("volume_sound", "24"); //0-128 int soundVolume = Config::getInstance()->getInt("volume_sound"); - Mix_VolumeChunk(boing.get(), soundVolume); - Mix_VolumeChunk(applause.get(), soundVolume); - Mix_VolumeChunk(photoClick.get(), soundVolume); + Mix_VolumeChunk(globalData.boing.get(), soundVolume); + Mix_VolumeChunk(globalData.applause.get(), soundVolume); + Mix_VolumeChunk(globalData.photoClick.get(), soundVolume); Mix_VolumeChunk(globalData.typingChunk.get(), soundVolume); - Mix_VolumeChunk(counterChunk.get(), soundVolume); - Mix_VolumeChunk(counterFinalChunk.get(), soundVolume); + Mix_VolumeChunk(globalData.counterChunk.get(), soundVolume); + Mix_VolumeChunk(globalData.counterFinalChunk.get(), soundVolume); } //All sound has been loaded or not return 0; } //InitImages() @@ -314,9 +325,9 @@ void UpdateMouseCoordinates(const SDL_Event& event, int& mousex, int& mousey) { } } -static BallManager theBallManager; +BallManager theBallManager; -static ExplosionManager theExplosionManager; +ExplosionManager theExplosionManager; //Here comes the Block Game object @@ -355,7 +366,7 @@ void writeScreenShot() { SDL_FreeSurface(sreenshotSurface); if (!globalData.NoSound) { if (globalData.SoundEnabled) { - Mix_PlayChannel(1, photoClick.get(), 0); + Mix_PlayChannel(1, globalData.photoClick.get(), 0); } } } @@ -435,19 +446,19 @@ static sago::SagoTextField* getSmallInt(size_t number) { static void DrawBalls() { for (size_t i = 0; i< theBallManager.ballArray.size(); i++) { if (theBallManager.ballArray[i].inUse) { - DrawIMG(balls[theBallManager.ballArray[i].getColor()],globalData.screen,theBallManager.ballArray[i].getX(),theBallManager.ballArray[i].getY()); + DrawIMG(globalData.balls[theBallManager.ballArray[i].getColor()], globalData.screen, theBallManager.ballArray[i].getX(), theBallManager.ballArray[i].getY()); } //if used } for (size_t i = 0; i< theExplosionManager.explosionArray.size(); i++) { if (theExplosionManager.explosionArray[i].inUse) { - DrawIMG(explosion[theExplosionManager.explosionArray[i].getFrame()],globalData.screen,theExplosionManager.explosionArray[i].getX(),theExplosionManager.explosionArray[i].getY()); + DrawIMG(globalData.explosion[theExplosionManager.explosionArray[i].getFrame()], globalData.screen, theExplosionManager.explosionArray[i].getX(), theExplosionManager.explosionArray[i].getY()); } } //for for (size_t i = 0; i < globalData.theTextManager.textArray.size(); ++i) { if (globalData.theTextManager.textArray[i].inUse) { int x = globalData.theTextManager.textArray[i].getX()-12; int y = globalData.theTextManager.textArray[i].getY()-12; - DrawIMG(iChainFrame,globalData.screen,x,y); + DrawIMG(globalData.iChainFrame, globalData.screen, x, y); getSmallInt(globalData.theTextManager.textArray[i].getText())->Draw(globalData.screen, x+12, y+7, sago::SagoTextField::Alignment::center); @@ -548,7 +559,7 @@ void DrawEverything(int xsize, int ysize,BlockGameSdl* theGame, BlockGameSdl* th if ((theGame->isStageClear()) &&(theGame->GetTopY()+700+50*(theGame->GetStageClearLimit()-theGame->GetLinesCleared())-theGame->GetPixels()-1<600+theGame->GetTopY())) { oldBubleX = theGame->GetTopX()+280; oldBubleY = theGame->GetTopY()+650+50*(theGame->GetStageClearLimit()-theGame->GetLinesCleared())-theGame->GetPixels()-1; - DrawIMG(stageBobble,globalData.screen,theGame->GetTopX()+280,theGame->GetTopY()+650+50*(theGame->GetStageClearLimit()-theGame->GetLinesCleared())-theGame->GetPixels()-1); + DrawIMG(globalData.stageBobble,globalData.screen,theGame->GetTopX()+280,theGame->GetTopY()+650+50*(theGame->GetStageClearLimit()-theGame->GetLinesCleared())-theGame->GetPixels()-1); } //player1 finnish, player2 start if (true ) { @@ -1715,18 +1726,18 @@ int runGame(Gametype gametype, int level) { bMouseUp = false; DrawBackground(globalData.screen); - if (stageButtonStatus != SBdontShow && (globalData.mousex > theGame.GetTopX()+cordNextButton.x) - && (globalData.mousex < theGame.GetTopX()+cordNextButton.x+cordNextButton.xsize) - && (globalData.mousey > theGame.GetTopY()+cordNextButton.y) - && (globalData.mousey < theGame.GetTopY()+cordNextButton.y+cordNextButton.ysize)) { + if (stageButtonStatus != SBdontShow && (globalData.mousex > theGame.GetTopX()+globalData.cordNextButton.x) + && (globalData.mousex < theGame.GetTopX()+globalData.cordNextButton.x+globalData.cordNextButton.xsize) + && (globalData.mousey > theGame.GetTopY()+globalData.cordNextButton.y) + && (globalData.mousey < theGame.GetTopY()+globalData.cordNextButton.y+globalData.cordNextButton.ysize)) { //Clicked the next button after a stage clear or puzzle nextLevel(theGame, SDL_GetTicks()); } - if (stageButtonStatus != SBdontShow && (globalData.mousex > theGame.GetTopX()+cordRetryButton .x) - &&(globalData.mousex < theGame.GetTopX()+cordRetryButton.x+cordRetryButton.xsize) - &&(globalData.mousey > theGame.GetTopY()+cordRetryButton.y) - &&(globalData.mousey < theGame.GetTopY()+cordRetryButton.y+cordRetryButton.ysize)) { + if (stageButtonStatus != SBdontShow && (globalData.mousex > theGame.GetTopX()+globalData.cordRetryButton .x) + &&(globalData.mousex < theGame.GetTopX()+globalData.cordRetryButton.x+globalData.cordRetryButton.xsize) + &&(globalData.mousey > theGame.GetTopY()+globalData.cordRetryButton.y) + &&(globalData.mousey < theGame.GetTopY()+globalData.cordRetryButton.y+globalData.cordRetryButton.ysize)) { //Clicked the retry button retryLevel(theGame, SDL_GetTicks()); } diff --git a/source/code/mainVars.inc b/source/code/mainVars.inc index 542c0f9..53ff2a7 100644 --- a/source/code/mainVars.inc +++ b/source/code/mainVars.inc @@ -51,53 +51,14 @@ static sago::SagoSprite bForward; //The "forward" button //static sago::SagoSprite bConnect; //static sago::SagoSprite bHost; #endif -static sago::SagoSprite blackLine; //The seperator in stage clear -static sago::SagoSprite stageBobble; //The bobble instage clear + SDL_Renderer *screen; //The whole screen; -static sago::SagoTextBox tbGameOver; -static sago::SagoTextBox tbWinner; -static sago::SagoTextBox tbDraw; -static sago::SagoSprite iChainFrame; -//Animations: -static sago::SagoSprite cursor; //The animated cursor -static sago::SagoSprite bomb; -static sago::SagoSprite ready; //Before the blocks fall -static sago::SagoSprite explosion[4]; //Then a block explodes -//Animations end -static sago::SagoSprite counter[3]; //Counts down from 3 -sago::SagoSprite bricks[7]; //The bricks, saved in an array of pointers -static sago::SagoSprite crossover; //Cross the bricks that will be cleared soon -static sago::SagoSprite balls[7]; //The balls (the small ones that jump around) - -static sago::SagoSprite boardBackBack; -static sago::SagoSprite garbageTL; //the Garbage Blocks -static sago::SagoSprite garbageT; -static sago::SagoSprite garbageTR; -static sago::SagoSprite garbageR; -static sago::SagoSprite garbageBR; -static sago::SagoSprite garbageB; -static sago::SagoSprite garbageBL; -static sago::SagoSprite garbageL; -static sago::SagoSprite garbageFill; -static sago::SagoSprite garbageM; -static sago::SagoSprite garbageML; -static sago::SagoSprite garbageMR; -static sago::SagoSprite garbageGM; -static sago::SagoSprite garbageGML; -static sago::SagoSprite garbageGMR; -static sago::SagoSprite transCover; //The transperant block, covers the upcomming -static sago::SagoSprite bSkip; -static sago::SagoSprite bRetry; + const int bExitSize = 100; //height and width of the exit button const int bExitOffset = 140; //pixels from the buttom right corner to the top left of the exit button static sago::MusicHandler bgMusic; //backgroundMusic static sago::MusicHandler highbeatMusic; //Background music with higher beat -static sago::SoundHandler boing; //boing sound when clearing -static sago::SoundHandler applause; //Applause, then the player is good -static sago::SoundHandler photoClick; //clickSound -static sago::SoundHandler counterChunk; //When counting down -static sago::SoundHandler counterFinalChunk; static bool bMouseUp; //true if the mouse(1) is unpressed static bool bMouseUp2; //true if the mouse(2) is unpressed @@ -164,29 +125,6 @@ control keySettings[3]; //array to hold the controls (default and two custom) static const int buttonXsize = 120; static const int buttonYsize = 40; -struct ButtonCords -{ - int x; - int y; - int xsize; - int ysize; -}; - -ButtonCords cordNextButton = -{ - cordNextButton.x = 3*bsize+(3*bsize-buttonXsize)/2, - cordNextButton.y = 10*bsize, - cordNextButton.xsize = buttonXsize, - cordNextButton.ysize = buttonYsize -}; - -ButtonCords cordRetryButton = -{ - cordRetryButton.x = (3*bsize-buttonXsize)/2, - cordRetryButton.y = 10*bsize, - cordRetryButton.xsize = buttonXsize, - cordRetryButton.ysize = buttonYsize -}; static sago::SagoTextField player1name; static sago::SagoTextField player2name; diff --git a/source/code/menudef.cpp b/source/code/menudef.cpp index b59b494..72009c5 100644 --- a/source/code/menudef.cpp +++ b/source/code/menudef.cpp @@ -31,6 +31,7 @@ http://blockattack.net #include "HelpAboutState.hpp" #include "ShowFileState.hpp" #include +#include "BlockGameSdl.inc" #if 0 @@ -440,13 +441,16 @@ static void switchTheme() { } class ThemesMenu : public Menu { +private: + std::shared_ptr game; public: ThemesMenu(SDL_Renderer* screen, const std::string& title, bool submenu) : Menu(screen, title, submenu) { - + game = std::make_shared(1024-500,100,&globalData.spriteHolder->GetDataHolder()); } void Draw(SDL_Renderer* target) override { Menu::Draw(target); + game->DoPaintJob(); } };