changement de nom des fichier entityDraw et menuDraw

This commit is contained in:
imuny 2022-01-06 15:24:55 +01:00
parent 0692b91ffc
commit e1e1af4e7e
2 changed files with 194 additions and 0 deletions

130
src/drawEntity.cpp Normal file
View File

@ -0,0 +1,130 @@
#include <playMode.h>
#include "pixelManager.h"
#include "utils.h"
#include "god.h"
using namespace nsShape;
PixelManager::PixelManager(MinGL& a) : window(a) {
window.initGlut();
window.initGraphic();
}
void PixelManager::drawInvaderA(const Position& baseVector, unsigned size, const RGBAcolor& color) const {
float scale = size/(float)100;
window << Circle(Position(50*scale, 50*scale)+baseVector, 50*scale, nsGraphics::KGray);
window << Triangle(Position(35*scale, 50*scale)+baseVector, Position(15*scale, 25*scale)+baseVector, Position(15*scale, 75*scale)+baseVector, nsGraphics::KBlack);
window << Triangle(Position(25*scale, 50*scale)+baseVector, Position(10*scale, 25*scale)+baseVector, Position(10*scale, 75*scale)+baseVector, nsGraphics::KGray);
window << Triangle(Position(65*scale, 50*scale)+baseVector, Position(85*scale, 25*scale)+baseVector, Position(85*scale, 75*scale)+baseVector, nsGraphics::KBlack);
window << Triangle(Position(75*scale, 50*scale)+baseVector, Position(90*scale, 25*scale)+baseVector, Position(90*scale, 75*scale)+baseVector, nsGraphics::KGray);
window << Rectangle(Position(35*scale, 65*scale)+baseVector, Position(65*scale, 72*scale)+baseVector, nsGraphics::KBlack);
}
void PixelManager::drawInvaderB(const Position& baseVector, unsigned size, const RGBAcolor& color) const {
float scale = size/(float)100;
window << Circle(Position(50*scale, 50*scale)+baseVector, 50*scale, nsGraphics::KRed);
window << Rectangle(Position(25*scale, 30*scale)+baseVector, Position(45*scale, 40*scale)+baseVector, nsGraphics::KBlack);
window << Rectangle(Position(55*scale, 30*scale)+baseVector, Position(75*scale, 40*scale)+baseVector, nsGraphics::KBlack);
window << Rectangle(Position(35*scale, 65*scale)+baseVector, Position(65*scale, 72*scale)+baseVector, nsGraphics::KBlack);
}
void PixelManager::drawInvaderC(const Position& baseVector, unsigned size, const RGBAcolor& color) const {
float scale = size/(float)100;
window << Circle(Position(50*scale, 50*scale)+baseVector, 50*scale, nsGraphics::KGreen);
window << Circle(Position(35*scale, 35*scale)+baseVector, 10*scale, nsGraphics::KBlack);
window << Circle(Position(65*scale, 35*scale)+baseVector, 10*scale, nsGraphics::KBlack);
window << Rectangle(Position(35*scale, 65*scale)+baseVector, Position(65*scale, 72*scale)+baseVector, nsGraphics::KBlack);
}
void PixelManager::drawPlayer(unsigned x, unsigned width, const nsGraphics::RGBAcolor& color) const {
width = width-10-10;
width = width/2;
window << Triangle(Position(0+x, 720), Position(5+x, 720), Position(5+x, 720-PLAYER_HEIGHT/2), color);
window << Rectangle(Position(5+x, 720), Position(5+width+x, 720-PLAYER_HEIGHT/2), color);
window << Rectangle(Position(5+width+x, 720), Position(15+width+x, 720-PLAYER_HEIGHT), color);
window << Rectangle(Position(15+width+x, 720), Position(15+width*2+x, 720-PLAYER_HEIGHT/2), color);
window << Triangle(Position(15+width*2+x, 720), Position(15+width*2+x, 720-PLAYER_HEIGHT/2), Position(20+width*2+x, 720), color);
window << Triangle(Position(5+x,720-PLAYER_HEIGHT/2), Position(5+width+x,720-PLAYER_HEIGHT/2), Position(5+width+x,720-PLAYER_HEIGHT*0.9), color);
window << Triangle(Position(15+width+x,720-PLAYER_HEIGHT/2), Position(15+width*2+x,720-PLAYER_HEIGHT/2), Position(15+width+x,720-PLAYER_HEIGHT*0.9), color);
}
void PixelManager::askPlayerNameMenu(playerID pID, string& name) const {
cout << "ask for player " << (pID+1) << endl;
name = "Thomas";
}
void PixelManager::drawMissile(const Position& baseVector, unsigned width, const nsGraphics::RGBAcolor& color) const {
window << Rectangle(baseVector, baseVector + Position(width, width * PROJ_LENGTH_FACTOR), color);
}
void PixelManager::drawTorpedo(const Position& baseVector, unsigned width, const nsGraphics::RGBAcolor& color) const {
window << Rectangle(baseVector, baseVector + Position(width, width * PROJ_LENGTH_FACTOR), color);
}
void PixelManager::drawSprite(const nsGui::Sprite& sprite, const Position& pos) const {
// see pixelManager.h for the explanation of this hack
const_cast<nsGui::Sprite&>(sprite).setPosition(pos);
sprite.draw(window);
}
void PixelManager::drawBackground() const {
background.draw(window);
}
unsigned PixelManager::getScreenHeight() const {
return window.getWindowSize().getY();
}
unsigned PixelManager::getScreenWidth() const {
return window.getWindowSize().getX();
}
void PixelManager::startFrame() const {
window.clearScreen();
}
void PixelManager::endFrame() const {
window.finishFrame();
}
void PixelManager::drawGodBench(int y) const {
window << Rectangle(Position(0, y), Position(getScreenWidth(), y+GOD_BENCH_SIZE), nsGraphics::KGray);
}
void PixelManager::drawGodRightHand(const Position& pos, bool closed) const {
if(closed){
drawSprite(rightHandClosed, pos);
}else{
drawSprite(rightHandOpen, pos);
}
}
void PixelManager::drawGodLeftHand(const Position& pos, bool closed) const {
if(closed){
drawSprite(leftHandClosed, pos);
}else{
drawSprite(leftHandOpen, pos);
}
}
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);
}
vector<RGBAcolor>
PixelManager::mirrorData(const vector<nsGraphics::RGBAcolor>& inPixels, unsigned rowSize) {
vector<RGBAcolor> outPixels;
outPixels.reserve(inPixels.size());
for(unsigned i=0;i<inPixels.size();i+=rowSize){
for(unsigned j=0;j<rowSize;++j) {
outPixels.push_back(inPixels[i + rowSize - j - 1]);
}
}
return std::move(outPixels);
}

64
src/drawMenu.cpp Normal file
View File

@ -0,0 +1,64 @@
#include <playMode.h>
#include "pixelManager.h"
#include "utils.h"
#include "god.h"
#include "mingl/shape/rectangle.h"
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;
}