This commit is contained in:
imuny 2022-01-06 15:20:37 +01:00
parent a22ae07829
commit 52d9972c93
5 changed files with 75 additions and 3 deletions

View File

@ -2,3 +2,5 @@ nom du joueur ecran 100*100 sans effacer le reste
le joueur est gros
basevector a change en variable x
projectile style fusée

13
headers/menu.h Normal file
View File

@ -0,0 +1,13 @@
#ifndef GUARD_MENU_H
#define GUARD_MENU_H
#include"vector"
#include"string"
struct Menu{
vector<string> entries;
size_t currentValue = 0;
nsGraphics::RGBAcolor selectedColor;
nsGraphics::RGBAcolor unSelectedColor;
};
#endif

View File

@ -11,6 +11,7 @@
#include "mingl/gui/text.h"
#include "utils.h"
#include "playMode.h"
#include "menu.h"
using namespace std;
@ -45,11 +46,14 @@ public:
void drawMissile(const Position& baseVector, unsigned width, const nsGraphics::RGBAcolor& color) const;
void drawTorpedo(const Position& baseVector, unsigned width, const nsGraphics::RGBAcolor& color) const;
void drawSprite(const nsGui::Sprite& sprite, const Position& pos) const;
void displayButton(const Position& baseVector,const string& text,nsGraphics::RGBAcolor& color);
void displayText(const Position& pos, const string& text,const nsGraphics::RGBAcolor& color = nsGraphics::KWhite) const;
void displayMenu(const Position& pos, Menu& currentMenu);
void drawBackground() const;
void drawFPS(unsigned fps) const;
PlayMode showInitialMenu() const;
PlayMode showInitialMenu();
bool showDeathMenu() const;
unsigned getScreenHeight() const;
unsigned getScreenWidth() const;

View File

@ -108,6 +108,10 @@ void PixelManager::drawGodLeftHand(const Position& pos, bool closed) const {
}
}
void PixelManager::displayText(const Position& pos, const string& text,const nsGraphics::RGBAcolor& color) const {
window << nsGui::Text(pos, text, color);
}
void PixelManager::drawFPS(unsigned fps) const {
window << nsGui::Text(Position(getScreenWidth()-100, 10), "FPS : "+ to_string(fps), nsGraphics::KWhite);
}

View File

@ -2,11 +2,60 @@
#include "pixelManager.h"
#include "utils.h"
#include "god.h"
#include "mingl/shape/rectangle.h"
PlayMode PixelManager::showInitialMenu() const {
return PlayMode::SINGLE;
using namespace nsShape;
using namespace nsGraphics;
void PixelManager::displayButton(const Position& baseVector,const string& text,nsGraphics::RGBAcolor& color){
window << Rectangle(Position(190, 430)+baseVector, Position(310, 465)+baseVector, KGray);
window << Rectangle(Position(188, 428)+baseVector, Position(312, 467)+baseVector, KBlack);
window << nsGui::Text(Vec2D(200, 450)+baseVector, text, color);
}
void PixelManager::displayMenu(const Position& pos, Menu& currentMenu){
startFrame();
size_t margin = 0;
size_t cpt = 0;
for(auto& value : currentMenu.entries ){
displayButton(Position(0,0+margin)+ pos, value, (currentMenu.currentValue == cpt) ? currentMenu.selectedColor : currentMenu.unSelectedColor );
++cpt;
margin += 50;
}
endFrame();
}
PlayMode PixelManager::showInitialMenu(){
//return PlayMode::SINGLE; // will remove
vector<string> entries {"single player","multi player (local)","EXIT"};
Menu initial {entries,0,nsGraphics::KRed,nsGraphics::KWhite};
while(true){
displayMenu(Position(100,100),initial);
// dessends
if (window.isPressed({'s', false})){
++initial.currentValue;
if (initial.currentValue > initial.entries.size()) initial.currentValue = 0;
}
// monte
if (window.isPressed({'z', false}))
if (initial.currentValue == 0) initial.currentValue = initial.entries.size()-1;
else --initial.currentValue;
else if (window.isPressed({13, false})){
switch(initial.currentValue){
case 0:
return PlayMode::SINGLE;
case 1:
return PlayMode::TWO_LOCAL;
case 2:
return PlayMode::EXIT;
}
}
}
}
bool PixelManager::showDeathMenu() const {
return true;
}