/* * shows the menu for saving files * throws malloc errors, SDL_LoadBMPError(), SDL_DisplayFormatError(), SDL_SetColorKeyError(), SDL_BlitSurfaceError(), SDL_FlipError() */ void showSavingMenu(Widget *widget, int x, int y) { Widget* saveMenu; int slotNum = 0; char *image_source; char *fullSlotFiles[]={"pics/1_0.bmp","pics/2_0.bmp","pics/3_0.bmp","pics/4_0.bmp","pics/5_0.bmp","pics/6_0.bmp","pics/7_0.bmp","pics/8_0.bmp","pics/9_0.bmp","pics/10_0.bmp"}; char *emptySlotFiles[]={"pics/1_1.bmp","pics/2_1.bmp","pics/3_1.bmp","pics/4_1.bmp","pics/5_1.bmp","pics/6_1.bmp","pics/7_1.bmp","pics/8_1.bmp","pics/9_1.bmp","pics/10_1.bmp"}; if(mainGame->isCheckMate==2) /* can't save during mate */ return; DeleteWidgets(&screen->widgetChildren); saveMenu = BuildLabel(0, 0, 996, 692, "pics/main.bmp", screen); if(standart_fail) return; BuildLabel( 50, 25, 700, 113, "pics/saveDest.bmp", saveMenu); if(standart_fail) return; for(slotNum = 0; slotNum < SLOT_NUM; slotNum++) { image_source=(file_slots[slotNum].isFree)?emptySlotFiles[slotNum]:fullSlotFiles[slotNum]; if(slotNum < 5){ BuildButton( 100+125*slotNum, 175, 108, 48, image_source, saveMenu, SaveSlotClicked); if(standart_fail) return; } else{ BuildButton( 100+125*(slotNum-5), 250, 108, 48, image_source, saveMenu, SaveSlotClicked); if(standart_fail) return; } } BuildButton(300, 325, 219, 65, "pics/cancel.bmp", saveMenu, mainGame->handleGameStartFunc); if(standart_fail) return; DrawWidgets(screen); }
/* * SHOWS GRAPHICALLY THE GAME WINDOW WITH THE CHESSBOARD AND ALL THE PIECES ON * THE RIGHT SIDE AND ON THE LEFT HAND SIDE WILL SHOW A SET OF 4 BUTTONS: * RESTART GAME BUTTON, SAVE GAME BUTTON, RETURN TO THE MAIN MENU BUTTON AND A QUIT BUTTON * throws : malloc__error(), calloc_error(),SDL_LoadBMPError(), SDL_DisplayFormatError(), * SDL_SetColorKeyError(), SDL_BlitSurfaceError(),SDL_FlipError() * PRECONDITION: screen has no childs */ void showGame() { Widget *mainWidget = NULL; mainWidget = BuildLabel(0, 0, 996, 692, "pics/main.bmp", screen); if(standart_fail){return;} if(mainGame->isLoadingAIMove) { BuildLabel(590, 25, 190, 146, "pics/loading.bmp", mainWidget); if(standart_fail){return;} } else{ BuildButton(620, 25, 127, 49, "pics/RestartGame.bmp", mainWidget, handleRestart); if(standart_fail){return;} BuildButton(590, 100, 186, 49, "pics/SaveGame.bmp", mainWidget, showSavingMenu); if(standart_fail){return;} BuildButton(590, 175, 190, 49, "pics/MainMenu.bmp", mainWidget, handleMenu); if(standart_fail){return;} BuildButton(610, 475, 152, 90, "pics/quit.bmp", mainWidget, handleQuit); if(standart_fail){return;} } if( isPawnBeforePromotionMarked() && (!standart_fail) ) { showPromotionScreen(); if(standart_fail){return;} } showCheckLabel(); if(standart_fail){return;} BuildChessBoard(mainWidget, mainGame->gameInfo->boardPointer); if(standart_fail){return;} DrawWidgets(screen); }
void Login::draw() const { menu_->draw(); jngl::setColor(255, 255, 255, 220); jngl::drawRect(-jngl::getScreenWidth() / 2, -jngl::getScreenHeight() / 2, jngl::getScreenWidth(), jngl::getScreenHeight()); jngl::setFontColor(0, 0, 0); GetScreen().printCentered(text_, { 0, 0 }); cancel_.draw(); DrawWidgets(); }
/* * shows the settings menu for choosing game * throws : malloc_error(), SDL_LoadBMPError(), SDL_DisplayFormatError(), SDL_SetColorKeyError(), SDL_BlitSurfaceError(), SDL_FlipError() */ void ShowSettingsWindow(Widget* widget, int x, int y){ int blackIsAI=false, whiteIsAI=false; Widget *settingsMenu = NULL; DeleteWidgets(&screen->widgetChildren); settingsMenu = BuildLabel(0, 0, 996, 692, "pics/main.bmp", screen); if(standart_fail){return;} BuildLabel(25 , 50 , 219, 82, "pics/white.bmp", settingsMenu); if(standart_fail){return;} BuildLabel(25 , 75+PIECE_SIZE , 219, 70, "pics/black.bmp", settingsMenu); if(standart_fail){return;} if(mainGame->gameInfo->gameMode==2){ (mainGame->gameInfo->userColor==white)?(blackIsAI=true):(whiteIsAI=true); showDifficultyMenu(); if(standart_fail){return;} } if(whiteIsAI){ BuildButton(375 , 50 , PIECE_SIZE, PIECE_SIZE, "pics/whitePlayer.bmp", settingsMenu, handleWP); if(standart_fail){return;} BuildButton(400+PIECE_SIZE , 50 , PIECE_SIZE, PIECE_SIZE, "pics/yWhiteAI.bmp", settingsMenu, NULL); if(standart_fail){return;} } else{ BuildButton(375 , 50 , PIECE_SIZE, PIECE_SIZE, "pics/yWhitePlayer.bmp", settingsMenu, NULL); if(standart_fail){return;} BuildButton(400+PIECE_SIZE , 50 , PIECE_SIZE, PIECE_SIZE, "pics/whiteAI.bmp", settingsMenu, handleWAI); if(standart_fail){return;} } if(blackIsAI){ BuildButton(375 , 75+PIECE_SIZE , PIECE_SIZE, PIECE_SIZE, "pics/blackPlayer.bmp", settingsMenu, handleBP); if(standart_fail){return;} BuildButton(400+PIECE_SIZE , 75+PIECE_SIZE , PIECE_SIZE, PIECE_SIZE, "pics/yBlackAI.bmp", settingsMenu, NULL); if(standart_fail){return;} } else{ BuildButton(375 , 75+PIECE_SIZE , PIECE_SIZE, PIECE_SIZE, "pics/yBlackPlayer.bmp", settingsMenu, NULL); if(standart_fail){return;} BuildButton(400+PIECE_SIZE , 75+PIECE_SIZE , PIECE_SIZE, PIECE_SIZE, "pics/blackAI.bmp", settingsMenu, handleBAI); if(standart_fail){return;} } BuildButton(375, 450, 123, 65, "pics/ok.bmp", settingsMenu, mainGame->handleGameStartFunc); if(standart_fail){return;} BuildButton(525, 450, 219, 65, "pics/cancel.bmp", settingsMenu, handleMenu); if(standart_fail){return;} DrawWidgets(screen); }
/* * generates the main menu of the game * throws malloc_errors(), SDL_LoadBMPError(), SDL_DisplayFormatError(), SDL_SetColorKeyError(), SDL_BlitSurfaceError(), SDL_FlipError() */ void showMenu() { Widget* mainLabel = NULL; mainLabel = BuildLabel(0, 0, 996, 692, "pics/main.bmp", screen); if(standart_fail){return;} BuildLabel(50, 50, 700, 124, "pics/logo.bmp", mainLabel); if(standart_fail){return;} BuildButton(250, 250, 312, 90, "pics/newGame.bmp", mainLabel, ShowSettingsWindow); if(standart_fail){return;} BuildButton(250, 350, 312, 90, "pics/loadGame.bmp", mainLabel, showLoadingMenu); if(standart_fail){return;} BuildButton(325, 450, 152, 90, "pics/quit.bmp", mainLabel, handleQuit); if(standart_fail){return;} DrawWidgets(screen); if(standart_fail){return;} }
void GameOverScreen::draw() const { game_->draw(); jngl::setFontSize(80); jngl::setFontColor(0, 0, 0); GetScreen().PrintCentered("GAMEOVER", 0, -100); if (game_->GameOverAnimationFinished()) { jngl::setFontSize(50); if (highscore_.isHighscore(data_) && (game_->getType() == NORMAL || game_->GetField().GetLines() >= 50)) { jngl::setFontColor(0, 0, 0); GetScreen().PrintCentered("You entered the top!", 0, 50); GetScreen().PrintCentered("Enter your name:", 0, 130); DrawWidgets(); } else { jngl::setFontColor(0, 0, 0, blink_ > 255 ? 510 - blink_ : blink_); GetScreen().PrintCentered("Press any key", 0, 100); } } }
/* * shows the menu for loading files * throws malloc errors, SDL_LoadBMPError(), SDL_DisplayFormatError(), SDL_SetColorKeyError(), SDL_BlitSurfaceError(), SDL_FlipError() */ void showLoadingMenu(Widget *widget, int x, int y) { Widget* loadMenu; int slotNum = 0; char *image_source; char *fullSlotFiles[]={"pics/1_0.bmp","pics/2_0.bmp","pics/3_0.bmp","pics/4_0.bmp","pics/5_0.bmp","pics/6_0.bmp","pics/7_0.bmp","pics/8_0.bmp","pics/9_0.bmp","pics/10_0.bmp"}; char *emptySlotFiles[]={"pics/1_1.bmp","pics/2_1.bmp","pics/3_1.bmp","pics/4_1.bmp","pics/5_1.bmp","pics/6_1.bmp","pics/7_1.bmp","pics/8_1.bmp","pics/9_1.bmp","pics/10_1.bmp"}; DeleteWidgets(&screen->widgetChildren); loadMenu = BuildLabel(0, 0, 996, 692, "pics/main.bmp", screen); if(standart_fail) return; BuildLabel( 50, 25, 700, 92, "pics/loadDest.bmp", loadMenu); if(standart_fail) return; for(slotNum = 0; slotNum < SLOT_NUM; slotNum++) { image_source=(file_slots[slotNum].isFree)?emptySlotFiles[slotNum]:fullSlotFiles[slotNum]; if( file_slots[slotNum].isFree ) { /* if the slot is free means no file was saved to that slot, so we need to put a label */ if(slotNum < 5){ BuildLabel( 100+125*slotNum, 175, 108, 48, image_source, loadMenu); if(standart_fail) return; } else{ BuildLabel( 100+125*(slotNum-5), 250, 108, 48, image_source, loadMenu); if(standart_fail) return; } } else { if(slotNum < 5){ BuildButton( 100+125*slotNum, 175, 108, 48, image_source, loadMenu, LoadSlotClicked); if(standart_fail) return; } else{ BuildButton( 100+125*(slotNum-5), 250, 108, 48, image_source, loadMenu, LoadSlotClicked); if(standart_fail) return; } } } BuildButton(300, 325, 219, 65, "pics/cancel.bmp", loadMenu, handleMenu); if(standart_fail) return; DrawWidgets(screen); }
void PauseMenu::draw() const { game->draw(); DrawWidgets(); }