From 7ecb677d97c3e52fed1b6519b88f0838360cd67d Mon Sep 17 00:00:00 2001 From: Thomas Date: Mon, 10 Jan 2022 16:01:32 +0100 Subject: [PATCH 1/2] ok ca se lance --- headers/pixelManager/goodPixelManager.h | 2 +- headers/pixelManager/pixelManager.h | 24 ++----- src/game/display.cpp | 16 ++--- src/game/gameBasics.cpp | 4 +- src/mySprite.cpp | 1 + src/pixelManager/drawEntities.cpp | 83 +++++++++++++------------ src/pixelManager/goodPixelManager.cpp | 14 ++--- src/pixelManager/pixelManager.cpp | 11 ++-- 8 files changed, 73 insertions(+), 82 deletions(-) diff --git a/headers/pixelManager/goodPixelManager.h b/headers/pixelManager/goodPixelManager.h index b086d17..50b84dc 100644 --- a/headers/pixelManager/goodPixelManager.h +++ b/headers/pixelManager/goodPixelManager.h @@ -5,7 +5,7 @@ class GoodPixelManager : public PixelManager{ - void loadSprites(SpriteTasks& tasks) override; + void loadSprites(vector& tasks) override; MySprite player; MySprite invaderA; diff --git a/headers/pixelManager/pixelManager.h b/headers/pixelManager/pixelManager.h index 6658037..379c50a 100644 --- a/headers/pixelManager/pixelManager.h +++ b/headers/pixelManager/pixelManager.h @@ -40,22 +40,24 @@ typedef nsGui::GlutFont::GlutFonts Font; */ // The convention seems to just add a number to the macro name -#define ADD_TASK(X) ADD_TASK2(X, X) -#define ADD_TASK2(X, Y) tasks.push_back((X).asyncLoad("assets/"#Y".si2")); +#define ADD_SPRITE_TASK(X) ADD_SPRITE_TASK2(X, X) +#define ADD_SPRITE_TASK2(X, Y) tasks.push_back((X).asyncLoad("assets/"#Y".si2")); -typedef vector> SpriteTasks; +typedef future Task; class PixelManager{ public: MinGL& window; + mutable vector drawTasks; + /*! * @brief loads sprites in parallel using multiple threads * @param[in] vec : We take his ownership, so * @fn void loadSprites(); */ - virtual void loadSprites(SpriteTasks& tasks); + virtual void loadSprites(vector& tasks); /*! @@ -244,20 +246,6 @@ public: * @fn void drawGodBench(int y) const */ void drawGodBench(int y) const; - - /*! - * @brief display god's right hand - * @param[in] pos : pixel coordiniates of the hand - * @fn void drawGodRightHand(const Position& pos) const; - */ - void drawGodRightHand(const Position& pos) const; - - /*! - * @brief display god's left hand - * @param[in] pos : pixel coordiniates of the hand - * @fn void drawGodLeftHand(const Position& pos) const; - */ - void drawGodLeftHand(const Position& pos) const; /*! * @brief display god's face diff --git a/src/game/display.cpp b/src/game/display.cpp index d6d7b4e..35c38c9 100644 --- a/src/game/display.cpp +++ b/src/game/display.cpp @@ -101,8 +101,8 @@ void Game::displayGod() const { Position leftHand(GOD_HAND_DISTANCE, god.counter-GOD_BENCH_SIZE); Position rightHand(pm->getScreenWidth()-GOD_HAND_DISTANCE-GOD_HAND_SIZE, god.counter-GOD_BENCH_SIZE); - pm->drawGodLeftHand(leftHand); - pm->drawGodRightHand(rightHand); + pm->drawSprite(pm->leftHand); + pm->drawSprite(pm->rightHand); pm->drawGodFace(god.counter - GOD_BENCH_SIZE); break; } @@ -110,8 +110,8 @@ void Game::displayGod() const { pm->drawGodBench(0); Position leftHand(GOD_HAND_DISTANCE, 0); Position rightHand(god.getRightHandPos(pm->getScreenWidth())); - pm->drawGodLeftHand(leftHand); - pm->drawGodRightHand(rightHand); + pm->drawSprite(pm->leftHand); + pm->drawSprite(pm->rightHand); pm->drawGodFace(0); break; } @@ -120,7 +120,7 @@ void Game::displayGod() const { // Bezier curve // counter goes [0-100] pm->drawGodBench(0); - pm->drawGodLeftHand(Position(GOD_HAND_DISTANCE, 0)); + pm->drawSprite(pm->leftHand, Position(GOD_HAND_DISTANCE, 0)); pm->drawGodFace(0); Position pos(god.getRightHandPos(pm->getScreenWidth())); @@ -130,7 +130,7 @@ void Game::displayGod() const { applyBezier(pos, endPos, god.counter / 100.0); // pos is now the position we need to draw our hand to - pm->drawGodRightHand(pos); + pm->drawSprite(pm->rightHand, pos); if(god.thrownInvType!=InvaderType::NONE){ pos+=Position(GOD_HAND_SIZE/2, GOD_HAND_SIZE/2); @@ -141,7 +141,7 @@ void Game::displayGod() const { } case GodState::THROW:{ pm->drawGodBench(0); - pm->drawGodLeftHand(Position(GOD_HAND_DISTANCE, 0)); + pm->drawSprite(pm->leftHand, Position(GOD_HAND_DISTANCE, 0)); pm->drawGodFace(0); // compute start position (not sure if we should store it or compute it each time ?) @@ -160,7 +160,7 @@ void Game::displayGod() const { else handCounter = 30-god.counter; handPos = handPos + god.thrownVector * (handCounter / 100.0); } - pm->drawGodRightHand(handPos); + pm->drawSprite(pm->rightHand); break; } diff --git a/src/game/gameBasics.cpp b/src/game/gameBasics.cpp index 5efc9df..934de73 100644 --- a/src/game/gameBasics.cpp +++ b/src/game/gameBasics.cpp @@ -33,7 +33,7 @@ Game::Game() : WININIT { "\nValid values are : good,bad"); cout << "Loading sprites..." << endl; - SpriteTasks tasks; + vector tasks; chrono::high_resolution_clock::time_point start = chrono::high_resolution_clock::now(); pm->loadSprites(tasks); @@ -116,7 +116,7 @@ void Game::initGame(){ */ #define START_TIMER() DEBUG_INSTR(debugTime = chrono::high_resolution_clock::now()) -#define PRINT_TIMER(X) DEBUG_MSG((X) << " :" << chrono::duration_cast(chrono::high_resolution_clock::now()-debugTime).count()) +#define PRINT_TIMER(X) DEBUG_MSG((X) << ": " << chrono::duration_cast(chrono::high_resolution_clock::now()-debugTime).count()) WinValue Game::enterGameLoop(){ // returns when game is finished // computed in advance for performance reasons diff --git a/src/mySprite.cpp b/src/mySprite.cpp index c34b921..bc548ca 100644 --- a/src/mySprite.cpp +++ b/src/mySprite.cpp @@ -2,6 +2,7 @@ #include "mySprite.h" future MySprite::asyncLoad(const string& fname){ + DEBUG_MSG("Load file " << fname) return std::async(std::launch::async, [fname, this]() -> void { ptr = std::make_unique(fname); }); diff --git a/src/pixelManager/drawEntities.cpp b/src/pixelManager/drawEntities.cpp index b159ab4..dcb9328 100644 --- a/src/pixelManager/drawEntities.cpp +++ b/src/pixelManager/drawEntities.cpp @@ -25,73 +25,73 @@ PixelManager::PixelManager(MinGL& win) : window(win) { } void PixelManager::drawHeart(const Position& baseVector) const { - window << Circle(Position(10, 10)+baseVector,10, nsGraphics::KRed); - window << Circle(Position(30, 10)+baseVector,10, nsGraphics::KRed); - window << Triangle(Position(0,10)+baseVector,Position(40,10)+baseVector,Position(20,40)+baseVector,nsGraphics::KRed); + window << Circle(Position(10, 10)+baseVector,10, nsGraphics::KRed); + window << Circle(Position(30, 10)+baseVector,10, nsGraphics::KRed); + window << Triangle(Position(0,10)+baseVector,Position(40,10)+baseVector,Position(20,40)+baseVector,nsGraphics::KRed); + } 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); + 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); + 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); + 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); + 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::drawMissile(const Position& baseVector, unsigned width, const nsGraphics::RGBAcolor& color) const { - window << Rectangle(baseVector, baseVector + Position(width, width * PROJ_LENGTH_FACTOR), color); + 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); + window << Rectangle(baseVector, baseVector + Position(width, width * PROJ_LENGTH_FACTOR), color); + } void PixelManager::drawSprite(const MySprite& msp, const Position& pos) const { - // The sprite is associated with a Vec2D for whatever reason, so yeah, we modify it each time we draw it - msp.ptr->setPosition(pos); - msp.ptr->draw(window); + // The sprite is associated with a Vec2D for whatever reason, so yeah, we modify it each time we draw it + msp.ptr->setPosition(pos); + msp.ptr->draw(window); } void PixelManager::drawGodBench(int y) const { - window << Rectangle(Position(0, y), Position(getScreenWidth(), y+GOD_BENCH_SIZE), nsGraphics::KGray); -} + window << Rectangle(Position(0, y), Position(getScreenWidth(), y+GOD_BENCH_SIZE), nsGraphics::KGray); -void PixelManager::drawGodRightHand(const Position& pos) const { - drawSprite(rightHand, pos); -} - -void PixelManager::drawGodLeftHand(const Position& pos) const { - drawSprite(leftHand, pos); } void PixelManager::drawGodFace(int y, bool angry) const { @@ -110,5 +110,6 @@ void PixelManager::drawGodFace(int y, bool angry) const { } void PixelManager::drawText(const Position& pos, const string& text, const nsGraphics::RGBAcolor& color, Font font) const { - window << Text(pos, text, color, font); + window << Text(pos, text, color, font); + } diff --git a/src/pixelManager/goodPixelManager.cpp b/src/pixelManager/goodPixelManager.cpp index f9fa430..a891308 100644 --- a/src/pixelManager/goodPixelManager.cpp +++ b/src/pixelManager/goodPixelManager.cpp @@ -1,13 +1,13 @@ #include "pixelManager/goodPixelManager.h" -void GoodPixelManager::loadSprites(SpriteTasks& tasks) { +void GoodPixelManager::loadSprites(vector& tasks) { PixelManager::loadSprites(tasks); - ADD_TASK(player) - ADD_TASK(invaderA) - ADD_TASK(invaderB) - ADD_TASK(invaderC) - ADD_TASK(missile) - ADD_TASK(torpedo) + ADD_SPRITE_TASK(player) + ADD_SPRITE_TASK(invaderA) + ADD_SPRITE_TASK(invaderB) + ADD_SPRITE_TASK(invaderC) + ADD_SPRITE_TASK(missile) + ADD_SPRITE_TASK(torpedo) } GoodPixelManager::GoodPixelManager(MinGL& win) : PixelManager(win) { diff --git a/src/pixelManager/pixelManager.cpp b/src/pixelManager/pixelManager.cpp index f1afd5c..fe7addf 100644 --- a/src/pixelManager/pixelManager.cpp +++ b/src/pixelManager/pixelManager.cpp @@ -1,11 +1,11 @@ #include "pixelManager/pixelManager.h" -void PixelManager::loadSprites(SpriteTasks& tasks){ - ADD_TASK(logo) - ADD_TASK(menuBackground) - ADD_TASK(gameBackground) - ADD_TASK2(rightHand, hand) +void PixelManager::loadSprites(vector& tasks){ + ADD_SPRITE_TASK(logo) + ADD_SPRITE_TASK(menuBackground) + ADD_SPRITE_TASK(gameBackground) + ADD_SPRITE_TASK2(rightHand, hand) } void PixelManager::startFrame() const { @@ -13,6 +13,7 @@ void PixelManager::startFrame() const { } void PixelManager::endFrame() const { + for(Task& t : drawTasks)t.wait(); window.finishFrame(); } From d3686f2855b1363d88bcd8f94c52601b44a007f8 Mon Sep 17 00:00:00 2001 From: Thomas Date: Mon, 10 Jan 2022 16:10:04 +0100 Subject: [PATCH 2/2] AHHHHHHHHHHHHH --- src/pixelManager/drawEntities.cpp | 88 ++++++++++++++----------------- 1 file changed, 40 insertions(+), 48 deletions(-) diff --git a/src/pixelManager/drawEntities.cpp b/src/pixelManager/drawEntities.cpp index dcb9328..5facd3c 100644 --- a/src/pixelManager/drawEntities.cpp +++ b/src/pixelManager/drawEntities.cpp @@ -25,83 +25,76 @@ PixelManager::PixelManager(MinGL& win) : window(win) { } void PixelManager::drawHeart(const Position& baseVector) const { - window << Circle(Position(10, 10)+baseVector,10, nsGraphics::KRed); - window << Circle(Position(30, 10)+baseVector,10, nsGraphics::KRed); - window << Triangle(Position(0,10)+baseVector,Position(40,10)+baseVector,Position(20,40)+baseVector,nsGraphics::KRed); - + window << Circle(Position(10, 10)+baseVector,10, nsGraphics::KRed); + window << Circle(Position(30, 10)+baseVector,10, nsGraphics::KRed); + window << Triangle(Position(0,10)+baseVector,Position(40,10)+baseVector,Position(20,40)+baseVector,nsGraphics::KRed); } 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); - + 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); - + 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); - + 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); - + 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::drawMissile(const Position& baseVector, unsigned width, const nsGraphics::RGBAcolor& color) const { - window << Rectangle(baseVector, baseVector + Position(width, width * PROJ_LENGTH_FACTOR), color); + 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); - + window << Rectangle(baseVector, baseVector + Position(width, width * PROJ_LENGTH_FACTOR), color); } void PixelManager::drawSprite(const MySprite& msp, const Position& pos) const { - // The sprite is associated with a Vec2D for whatever reason, so yeah, we modify it each time we draw it - msp.ptr->setPosition(pos); - msp.ptr->draw(window); + // The sprite is associated with a Vec2D for whatever reason, so yeah, we modify it each time we draw it + msp.ptr->setPosition(pos); + msp.ptr->draw(window); } void PixelManager::drawGodBench(int y) const { - window << Rectangle(Position(0, y), Position(getScreenWidth(), y+GOD_BENCH_SIZE), nsGraphics::KGray); - + window << Rectangle(Position(0, y), Position(getScreenWidth(), y+GOD_BENCH_SIZE), nsGraphics::KGray); } void PixelManager::drawGodFace(int y, bool angry) const { Text t( - Position(getScreenWidth()/2, y), - angry ? ">w<" : ".w.", - nsGraphics::KBlue, - GlutFont::GlutFonts::BITMAP_TIMES_ROMAN_24, - Text::HorizontalAlignment::ALIGNH_CENTER - ); + Position(getScreenWidth()/2, y), + angry ? ">w<" : ".w.", + nsGraphics::KBlue, + GlutFont::GlutFonts::BITMAP_TIMES_ROMAN_24, + Text::HorizontalAlignment::ALIGNH_CENTER + ); // computeHeight() returns a height bigger than the actual text size, that's why there's padding above it( t.setPosition(t.getPosition()+Position(0, t.computeHeight())); @@ -110,6 +103,5 @@ void PixelManager::drawGodFace(int y, bool angry) const { } void PixelManager::drawText(const Position& pos, const string& text, const nsGraphics::RGBAcolor& color, Font font) const { - window << Text(pos, text, color, font); - + window << Text(pos, text, color, font); }