Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
f671227a8b
@ -8,10 +8,15 @@
|
|||||||
# run for a pleasant experience it should be above 30
|
# run for a pleasant experience it should be above 30
|
||||||
# maxFPS: 30
|
# maxFPS: 30
|
||||||
#
|
#
|
||||||
|
# The theme setting deffines which theme will be used during gameplay sesssion.
|
||||||
|
# For a more custom experience use the 'bad' theme, for a more eye pleasant
|
||||||
|
# experience use the 'good' theme.
|
||||||
|
#
|
||||||
general:
|
general:
|
||||||
maxFPS: 30
|
maxFPS: 30
|
||||||
theme: bad
|
theme: bad
|
||||||
|
|
||||||
|
|
||||||
#############################
|
#############################
|
||||||
# #
|
# #
|
||||||
# Player configuration #
|
# Player configuration #
|
||||||
|
@ -132,6 +132,12 @@ private:
|
|||||||
|
|
||||||
// drawing methods
|
// drawing methods
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @brief display players score on the screen
|
||||||
|
* @fn void displayScore();
|
||||||
|
*/
|
||||||
|
void displayScore() const;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* @brief main display function, clear the window and calls sub display functions
|
* @brief main display function, clear the window and calls sub display functions
|
||||||
* @param[in] fps : current screen refresh rate
|
* @param[in] fps : current screen refresh rate
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
#include "playMode.h"
|
#include "playMode.h"
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
|
#include "scoresManager.h"
|
||||||
#include "mySprite.h"
|
#include "mySprite.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
@ -180,6 +181,14 @@ public:
|
|||||||
*/
|
*/
|
||||||
void displayMenu(const Position& pos, Menu& currentMenu);
|
void displayMenu(const Position& pos, Menu& currentMenu);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @brief display a menu on screen
|
||||||
|
* @param[in] pos : pixel coordinates of the menu
|
||||||
|
* @param[in,out] currentMenu : menu struct conteining the menu option
|
||||||
|
* @param[in] rankings : the current top 10 players
|
||||||
|
* @fn void displayMenu(const Position& pos, Menu& currentMenu);
|
||||||
|
*/
|
||||||
|
void displayMenu(const Position& pos, Menu& currentMenu, const vector<ScoreLink>& rankings);
|
||||||
/*!
|
/*!
|
||||||
* @brief display text on screen
|
* @brief display text on screen
|
||||||
* @param[in] pos : pixel coordinates of the text
|
* @param[in] pos : pixel coordinates of the text
|
||||||
@ -199,9 +208,10 @@ public:
|
|||||||
/*!
|
/*!
|
||||||
* @brief show the menu after a player lose, or all invader has been defeated
|
* @brief show the menu after a player lose, or all invader has been defeated
|
||||||
* @return true if the player plays again, else false
|
* @return true if the player plays again, else false
|
||||||
|
* @param[in] rankings : the current top 5 score
|
||||||
* @fn bool showDeathMenu();
|
* @fn bool showDeathMenu();
|
||||||
*/
|
*/
|
||||||
bool showDeathMenu();
|
bool showDeathMenu(const vector<ScoreLink>& rankings);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* @brief give the height of the screen
|
* @brief give the height of the screen
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*!
|
/*!
|
||||||
*
|
*
|
||||||
* @file ScoreManager.h
|
* @file scoresManager.h
|
||||||
* @author RUBINI Thomas
|
* @author RUBINI Thomas
|
||||||
* @date January 2022
|
* @date January 2022
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
|
@ -36,6 +36,7 @@ void Game::displayAll(unsigned fps) const {
|
|||||||
|
|
||||||
|
|
||||||
displayGod();
|
displayGod();
|
||||||
|
displayScore();
|
||||||
|
|
||||||
DEBUG_INSTR(
|
DEBUG_INSTR(
|
||||||
pm->drawText(Position(pm->getScreenWidth()-200, 20), "FPS : "+to_string(fps), nsGraphics::KWhite, Font::BITMAP_8_BY_13);
|
pm->drawText(Position(pm->getScreenWidth()-200, 20), "FPS : "+to_string(fps), nsGraphics::KWhite, Font::BITMAP_8_BY_13);
|
||||||
@ -69,6 +70,17 @@ void Game::displayHearts(playerID pID) const {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Game::displayScore() const{
|
||||||
|
unsigned margin = 0;
|
||||||
|
unsigned playerNumber = 1;
|
||||||
|
for (auto& player: players){
|
||||||
|
pm->drawText(Position(0,10+margin),"player "+to_string(playerNumber)+" :",nsGraphics::KWhite,Font::BITMAP_8_BY_13);
|
||||||
|
pm->drawText(Position(100,10+margin),to_string(player.score) ,nsGraphics::KWhite,Font::BITMAP_8_BY_13);
|
||||||
|
++playerNumber;
|
||||||
|
margin +=15;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Game::displayInvader(const Position& pos, InvaderType type) const {
|
void Game::displayInvader(const Position& pos, InvaderType type) const {
|
||||||
if(type==InvaderType::NONE)return;
|
if(type==InvaderType::NONE)return;
|
||||||
const InvaderTypeDef& invDef = confData.invadersDef.at(type);
|
const InvaderTypeDef& invDef = confData.invadersDef.at(type);
|
||||||
|
@ -74,7 +74,7 @@ void Game::managedGames() {
|
|||||||
enterGameLoop(); // will read the playMode
|
enterGameLoop(); // will read the playMode
|
||||||
DEBUG_MSG("END End of game")
|
DEBUG_MSG("END End of game")
|
||||||
handleScoreSaving();
|
handleScoreSaving();
|
||||||
if(!pm->showDeathMenu())playMode = PlayMode::NONE;
|
if(!pm->showDeathMenu(sm.scores))playMode = PlayMode::NONE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -109,12 +109,6 @@ void Game::initGame(){
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Plays the game, and returns once the game is finished
|
|
||||||
*
|
|
||||||
* @return @WinValue::PLAYERS if the players won, @WinValue::INVADERS is the invaders won, WinValue::NOBODY else (also in case of error)
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define START_TIMER() DEBUG_INSTR(debugTime = chrono::high_resolution_clock::now())
|
#define START_TIMER() DEBUG_INSTR(debugTime = chrono::high_resolution_clock::now())
|
||||||
#define PRINT_TIMER(X) DEBUG_MSG((X) << ": " << chrono::duration_cast<chrono::nanoseconds>(chrono::high_resolution_clock::now()-debugTime).count())
|
#define PRINT_TIMER(X) DEBUG_MSG((X) << ": " << chrono::duration_cast<chrono::nanoseconds>(chrono::high_resolution_clock::now()-debugTime).count())
|
||||||
|
|
||||||
|
@ -40,6 +40,29 @@ void PixelManager::displayMenu(const Position& pos, Menu& currentMenu){
|
|||||||
endFrame();
|
endFrame();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void PixelManager::displayMenu(const Position& pos, Menu& currentMenu, const vector<ScoreLink>& rankings){
|
||||||
|
startFrame();
|
||||||
|
drawSprite(menuBackground);
|
||||||
|
drawSprite(logo,Position(100,50));
|
||||||
|
drawText(Position(1150, 700), "version 1.0.0");
|
||||||
|
unsigned margin = 0;
|
||||||
|
unsigned cpt = 0;
|
||||||
|
for(string& value : currentMenu.entries ){
|
||||||
|
displayButton(Position(0,0+margin)+ pos, value, (currentMenu.currentValue == cpt) ? currentMenu.selectedColor : currentMenu.unSelectedColor );
|
||||||
|
++cpt;
|
||||||
|
margin += 50;
|
||||||
|
}
|
||||||
|
margin = 0;
|
||||||
|
drawText(Position(0,350), "Top 10 des meilleurs joueurs",nsGraphics::KWhite);
|
||||||
|
for (auto& value: rankings){
|
||||||
|
drawText(Position(0,400+margin),value.name,nsGraphics::KWhite);
|
||||||
|
drawText(Position(140,400+margin),to_string(value.score),nsGraphics::KWhite);
|
||||||
|
margin += 50;
|
||||||
|
}
|
||||||
|
endFrame();
|
||||||
|
}
|
||||||
|
|
||||||
PlayMode PixelManager::showInitialMenu(){
|
PlayMode PixelManager::showInitialMenu(){
|
||||||
vector<string> entries {"single player","multi player (local)","exit"};
|
vector<string> entries {"single player","multi player (local)","exit"};
|
||||||
Menu initial {entries,0,nsGraphics::KRed,nsGraphics::KWhite};
|
Menu initial {entries,0,nsGraphics::KRed,nsGraphics::KWhite};
|
||||||
@ -124,14 +147,14 @@ void PixelManager::askPlayerNameMenu(playerID pID, unsigned score, string& name)
|
|||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PixelManager::showDeathMenu() {
|
bool PixelManager::showDeathMenu(const vector<ScoreLink>& rankings) {
|
||||||
vector<string> entries {"retry","main menu"};
|
vector<string> entries {"retry","main menu"};
|
||||||
Menu death {entries,0,nsGraphics::KRed,nsGraphics::KWhite};
|
Menu death {entries,0,nsGraphics::KRed,nsGraphics::KWhite};
|
||||||
unsigned xOffset = getScreenHeight() / 2 ;
|
unsigned xOffset = getScreenHeight() / 2 ;
|
||||||
unsigned yOffset = getScreenWidth() / 2 - 90;
|
unsigned yOffset = getScreenWidth() / 2 - 90;
|
||||||
chrono::milliseconds waitTime = chrono::milliseconds(100);
|
chrono::milliseconds waitTime = chrono::milliseconds(100);
|
||||||
while(window.isOpen()){
|
while(window.isOpen()){
|
||||||
displayMenu(Position(yOffset,xOffset),death);
|
displayMenu(Position(yOffset,xOffset),death,rankings);
|
||||||
// go down
|
// go down
|
||||||
if (window.isPressed({'s', false})){
|
if (window.isPressed({'s', false})){
|
||||||
++death.currentValue;
|
++death.currentValue;
|
||||||
|
Loading…
Reference in New Issue
Block a user