some more doc

This commit is contained in:
Thomas 2022-01-11 20:41:20 +01:00
parent 66f10c50b4
commit a1b3cf4ae4
No known key found for this signature in database
GPG Key ID: E538821A6CDFDAD7
10 changed files with 65 additions and 365 deletions

View File

@ -4,7 +4,7 @@
* @author RUBINI Thomas
* @date January 2022
* @version 1.0
* @brief Configuration file data storage
* @brief error handling
*
*/

View File

@ -4,7 +4,7 @@
* @author RUBINI Thomas
* @date January 2022
* @version 1.0
* @brief Manages screen display with async sprite loading
* @brief Second screen display method
*
*/

View File

@ -1,3 +1,13 @@
/*!
*
* @file mySprite.h
* @author RUBINI Thomas
* @date January 2022
* @version 1.0
* @brief Custom sprite implementation (needed for async load)
*
*/
#ifndef GUARD_MYSPRITE_H
#define GUARD_MYSPRITE_H

View File

@ -1,90 +0,0 @@
/*!
*
* @file goodPixelManager.h
* @author RUBINI Thomas
* @date January 2022
* @version 1.0
* @brief Manages screen display with async sprite loading
*
*/
#ifndef GUARD_GOODPIXELMANAGER_H
#define GUARD_GOODPIXELMANAGER_H
#include "pixelManager.h"
/*!
* @class GoodPixelManager
* @brief Extension of the PixelManager class, which override
* the draw methods to use sprites instead of shapes
*/
class GoodPixelManager : public PixelManager{
/*!
* @brief loads sprites in parallel using multiple threads
* @param[out] tasks : vectot of task
* @fn void loadSprites();
*/
void loadSprites(vector<Task>& tasks) override;
/*!
* @brief sprite of the first player
*/
MySprite player1;
/*!
* @brief sprite of the second player
*/
MySprite player2;
/*!
* @brief sprite of the type A invader
*/
MySprite invaderA;
/*!
* @brief sprite of the type B invader
*/
MySprite invaderB;
/*!
* @brief sprite of the type B invader
*/
MySprite invaderC;
/*!
* @brief sprite of the missile
*/
MySprite missile;
/*!
* @brief sprite of the torpedo
*/
MySprite torpedo;
/*!
* @brief sprite of the heart
*/
MySprite heart;
void drawInvaderA(const Position& baseVector, unsigned size, const RGBAcolor& color) const override;
void drawInvaderB(const Position& baseVector, unsigned size, const RGBAcolor& color) const override;
void drawInvaderC(const Position& baseVector, unsigned size, const RGBAcolor& color) const override;
void drawPlayer(playerID pID, unsigned x, unsigned width, const RGBAcolor& color) const override;
void drawMissile(const Position& baseVector, unsigned width, const RGBAcolor& color) const override;
void drawTorpedo(const Position& baseVector, unsigned width, const RGBAcolor& color) const override;
void drawHeart(const Position& baseVector) const override;
public:
/*!
* @brief constructor the pixel manager class
* @param[in] window : window of the pixel manager
* @fn GoodPixelManager(MinGL&);
*/
explicit GoodPixelManager(MinGL& window);
};
#endif

View File

@ -1,273 +0,0 @@
/*!
*
* @file pixelManager.h
* @author RUBINI Thomas
* @author SIMAILA Djalim
* @author FABRE Lucas
* @date January 2022
* @version 1.0
* @brief Manages screen display
*
*/
#ifndef GUARD_PIXELMANAGER_H
#define GUARD_PIXELMANAGER_H
#include <string>
#include "mingl/mingl.h"
#include "mingl/shape/line.h"
#include "mingl/shape/triangle.h"
#include "mingl/shape/rectangle.h"
#include "mingl/shape/circle.h"
#include "mingl/gui/sprite.h"
#include "mingl/gui/text.h"
#include "utils.h"
#include "playMode.h"
#include "menu.h"
#include "scoresManager.h"
#include "mySprite.h"
using namespace std;
typedef nsGui::GlutFont::GlutFonts Font;
/*!
* @class PixelManager
* @brief main display function, clear the window and calls sub display functions
*/
/*
* It's MinGL's fault. This is all I have to say
*/
#define ADD_SPRITE_TASK(X) tasks.push_back((X).asyncLoad("assets/"#X".si2"));
class PixelManager{
public:
/*!
* @brief display window
*/
MinGL& window;
/*!
* @brief loads sprites in parallel using multiple threads
* @param[in] tasks : vectot of task
* @fn void loadSprites();
*/
virtual void loadSprites(vector<Task>& tasks);
/*!
* @brief sprite of the logo of the game
*/
MySprite logo;
/*!
* @brief sprite of the background during menu
*/
MySprite menuBackground;
/*!
* @brief sprite of the background during gameplay
*/
MySprite gameBackground;
/*!
* @brief sprite of the right hand of god
*/
MySprite rightHand;
/*!
* @brief sprite of the left hand of god
*/
MySprite leftHand;
/*!
* @brief constructor the pixel manager class
* @param[in] window : window of the pixel manager
* @fn PixelManager(MinGL&);
*/
explicit PixelManager(MinGL& window);
/*!
* @brief display a type A invader on screen
* @param[in] baseVector : pixel coordinate of the invader
* @param[in] size : size multiplicator of the invader
* @param[in] color : color multiplicaror of the invader
* @fn void drawInvaderA(const Position& baseVector, unsigned size, const RGBAcolor& color) const;
*/
virtual void drawInvaderA(const Position& baseVector, unsigned size, const RGBAcolor& color) const;
/*!
* @brief display a type B invader on screen
* @param[in] baseVector : pixel coordinate of the invader
* @param[in] size : size multiplicator of the invader
* @param[in] color : color multiplicaror of the invader
* @fn void drawInvaderB(const Position& baseVector, unsigned size, const RGBAcolor& color) const;
*/
virtual void drawInvaderB(const Position& baseVector, unsigned size, const RGBAcolor& color) const;
/*!
* @brief display a type C invader on screen
* @param[in] baseVector : pixel coordinate of the invader
* @param[in] size : size multiplicator of the invader
* @param[in] color : color multiplicaror of the invader
* @fn void drawInvaderC(const Position& baseVector, unsigned size, const RGBAcolor& color) const;
*/
virtual void drawInvaderC(const Position& baseVector, unsigned size, const RGBAcolor& color) const;
/*!
* @brief display a player on screen
* @param[in] pID : the ID of the player to draw
* @param[in] x : horizontal position of the player
* @param[in] witdh : width of the player
* @param[in] color : color of the plater
* @fn void drawPlayer(unsigned x, unsigned width, const nsGraphics::RGBAcolor& color) const;
*/
virtual void drawPlayer(playerID pID, unsigned x, unsigned width, const nsGraphics::RGBAcolor& color) const;
/*!
* @brief display a missile on screen
* @param[in] baseVector : pixel coordinates of the missile
* @param[in] width : width of the missle
* @param[in] color : color of the missile
* @fn void drawMissile(const Position& baseVector, unsigned width, const nsGraphics::RGBAcolor& color) const;
*/
virtual void drawMissile(const Position& baseVector, unsigned width, const nsGraphics::RGBAcolor& color) const;
/*!
* @brief display a torpedo on screen
* @param[in] baseVector : pixel coordinates of the torpedo
* @param[in] width : width of the torpedo
* @param[in] color : color of the torpedo
* @fn void drawTorpedo(const Position& baseVector, unsigned width, const nsGraphics::RGBAcolor& color) const;
*/
virtual void drawTorpedo(const Position& baseVector, unsigned width, const nsGraphics::RGBAcolor& color) const;
#define HEART_LENGTH 64
/*!
* @brief display a singular heart on screen
* @param[in] baseVector : pixel coordinates of the heart
* @fn void drawHeart(const Position& baseVector) const;
*/
virtual void drawHeart(const Position& baseVector) const;
/*!
* @brief display a sprite on screen
* @param[in] msp : sprite to draw
* @param[in] pos : pixel coordinates to draw the sprite
* @fn void drawSprite(const MySprite& msp, const Position& pos = Position(0, 0)) const;
*/
void drawSprite(const MySprite& msp, const Position& pos) const;
/*!
* @brief display a menu button on screen
* @param[in] baseVector : pixel coordinates of the button
* @param[in] text : text inside the button
* @param[in] color : color of the text inside the button
* @fn void displayButton(const Position& baseVector,const string& text,nsGraphics::RGBAcolor& color);
*/
void displayButton(const Position& baseVector,const string& text,nsGraphics::RGBAcolor& color);
/*!
* @brief display text on screen
* @param[in] pos : pixel coordinates of the text
* @param[in] text : text to show on screen
* @param[in] color : color of the text to show
* @param[in] font : the glut font to use for the text
* @fn void drawText(const Position& pos, const string& text, const RGBAcolor& color = nsGraphics::KWhite, Font font = Font::BITMAP_TIMES_ROMAN_24) const;
*/
void drawText(const Position& pos, const string& text, const RGBAcolor& color = nsGraphics::KWhite, Font font = Font::BITMAP_TIMES_ROMAN_24) const;
/*!
* @brief show the title screen of the game
* @return the playmode chosen inside the menu
* @fn PlayMode showInitialMenu();
*/
PlayMode showInitialMenu();
/*!
* @brief show the menu after a player lose, or all invader has been defeated
* @return true if the player plays again, else false
* @param[in] rankings : the current top 5 score
* @param[in] winner : the winner of the game
* @fn bool showDeathMenu();
*/
bool showDeathMenu(const vector<ScoreLink>& rankings,const WinValue& winner);
/*!
* @brief give the height of the screen
* @return the height of the screen in pixel
* @fn unsigned getScreenHeight() const;
*/
unsigned getScreenHeight() const;
/*!
* @brief give the width of the screen
* @return the width of the screen in pixel
* @fn unsigned getScreenWidth() const;
*/
unsigned getScreenWidth() const;
/*!
* @brief clear the screen for a new frame
* @fn void startFrame() const;
*/
void startFrame() const;
/*!
* @brief finish a frame render
* @fn void endFrame() const;
*/
void endFrame() const;
/*!
* @brief display the player name selection menu
* @param[in] pID : player id
* @param[in] score : score of this player
* @param[out] name : name selected by the player
* @fn void askPlayerNameMenu(playerID pID, unsigned score, string& name);
*/
void askPlayerNameMenu(playerID pID, unsigned score, string& name);
// y will be negative sometimes, so not unsigned
/*!
* @brief display god's bar
* @param[in] y : god y pixel position
* @fn void drawGodBench(int y) const
*/
void drawGodBench(int y) const;
/*!
* @brief display god's face
* @param[in] y : god's face y pixel position
* @param[in] angry : flag if god is angry or not
* @fn void drawGodFace(int y, bool angry=false) const;
*/
void drawGodFace(int y, bool angry=false) const;
private:
/*!
* @brief display a menu on screen
* @param[in] pos : pixel coordinates of the menu
* @param[in,out] currentMenu : menu struct conteining the menu option
* @fn void drawMenu(const Position& pos, Menu& currentMenu);
*/
void drawMenu(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
* @param[in] winner : the winner of the game
* @fn void drawMenu(const Position& pos, Menu& currentMenu);
*/
void drawMenu(const Position& pos, Menu& currentMenu, const vector<ScoreLink>& rankings, const WinValue& winner);
};
#endif

View File

@ -1,3 +1,13 @@
/*!
*
* @file configData.h
* @author RUBINI Thomas
* @date January 2022
* @version 1.0
* @brief error handling
*
*/
#include "errors.h"
config_error::config_error(const string& msg) : runtime_error(msg) {

View File

@ -1,3 +1,13 @@
/*!
*
* @file goodPixelManager.cpp
* @author RUBINI Thomas
* @date January 2022
* @version 1.0
* @brief implementation of the second screen display method
*
*/
#include "goodPixelManager.h"
void GoodPixelManager::loadSprites(vector<Task>& tasks) {

View File

@ -1,3 +1,13 @@
/*!
*
* @file mySprite.cpp
* @author RUBINI Thomas
* @date January 2022
* @version 1.0
* @brief Custom sprite implementation (needed for async load)
*
*/
#include "utils.h"
#include "mySprite.h"

View File

@ -1,3 +1,16 @@
/*!
*
* @file pixelManager.cpp
* @author RUBINI Thomas
* @author SIMAILA Djalim
* @author FABRE Lucas
* @date January 2022
* @version 1.0
* @brief Manages screen display
*
*/
#include "pixelManager.h"

View File

@ -1,3 +1,13 @@
/*!
*
* @file utils.cpp
* @author RUBINI Thomas
* @date January 2022
* @version 1.0
* @brief utility for the game
*
*/
#include "utils.h"
bool areLinesColliding(unsigned start1, unsigned end1, unsigned start2, unsigned end2){