124 lines
3.7 KiB
C++
124 lines
3.7 KiB
C++
#ifndef CORE_H_
|
|
# define CORE_H_
|
|
|
|
#include <list>
|
|
#include <SFML/Audio.hpp>
|
|
#include <dirent.h>
|
|
#include <sys/types.h>
|
|
#include <sys/stat.h>
|
|
#include <iostream>
|
|
|
|
#include "QuadTree.hh"
|
|
#include "../IRenderable.hh"
|
|
|
|
# ifndef __DWIDTH
|
|
# define __DWIDTH 1920
|
|
# define __DHEIGHT 1080
|
|
# endif
|
|
|
|
#ifndef __DQUADTREE_COMPLEXITY__
|
|
#define __DQUADTREE_COMPLEXITY__ 6
|
|
#endif
|
|
|
|
#if __DQUADTREE_COMPLEXITY__ > 10
|
|
#warning "you will use more than 300 Mb =O"
|
|
#endif
|
|
|
|
namespace DamnCute {
|
|
class APhysics;
|
|
class Core {
|
|
public:
|
|
Core(const Core&) = delete;
|
|
Core(const Core&&) = delete;
|
|
Core& operator=(const Core&) = delete;
|
|
Core& operator=(const Core&&) = delete;
|
|
|
|
static Core* getInstance();
|
|
void closeWin();
|
|
void reset();
|
|
void freeAll();
|
|
void addObject(IRenderable*);
|
|
void delObject(IRenderable*);
|
|
void hideObject(IRenderable*);
|
|
void addOnBg(IRenderable*);
|
|
void flushScene();
|
|
void flushEvent();
|
|
template <unsigned int SIZEX = __DWIDTH, unsigned int SIZEY = __DHEIGHT>
|
|
void createWindow(unsigned int width = 0, unsigned int height = 0, bool full = false) {
|
|
unsigned int style = full << 3 | sf::Style::Titlebar;
|
|
sf::VideoMode v;
|
|
|
|
if (full) {
|
|
v = sf::VideoMode::getFullscreenModes()[0];
|
|
} else if (width == 0 && height == 0) {
|
|
v = sf::VideoMode::getDesktopMode();
|
|
} else {
|
|
v = sf::VideoMode(width, height);
|
|
}
|
|
_win = new sf::RenderWindow(v, "DamnCute Engine", style);
|
|
_Rtex.create(SIZEX, SIZEY);
|
|
_Rtex.setSmooth(true);
|
|
_rsp.setTexture(_Rtex.getTexture());
|
|
_rsp.setScale((float)getWindowSizeX() / (float)__DWIDTH , (float)getWindowSizeY() / (float)__DHEIGHT);
|
|
_win->setVerticalSyncEnabled(true);
|
|
_win->setFramerateLimit(60);
|
|
}
|
|
int getWindowStatus();
|
|
int getWindowSizeX();
|
|
int getWindowSizeY();
|
|
sf::Music& getMusic();
|
|
void musicPath(std::string);
|
|
void musicPlay(int);
|
|
int getMusicListSize();
|
|
|
|
inline bool getGameStatus() const {
|
|
return _gameStatus;
|
|
}
|
|
inline void switchGameStatus() {
|
|
_gameStatus = !_gameStatus;
|
|
}
|
|
inline sf::Event getEvent() const {
|
|
return event;
|
|
}
|
|
inline void setFPSDisplay(bool value) {
|
|
_displayFPS = value;
|
|
}
|
|
inline void addBulletsCounter() {
|
|
++_numberOfBullets;
|
|
}
|
|
inline QuadTree<std::list<APhysics*>, __DQUADTREE_COMPLEXITY__>* getQuadTree() {
|
|
return &_physicTree;
|
|
}
|
|
private:
|
|
|
|
Core();
|
|
~Core();
|
|
void refresh();
|
|
|
|
static Core* __coreInstance;
|
|
QuadTree<std::list<APhysics*>, __DQUADTREE_COMPLEXITY__> _physicTree;
|
|
sf::RenderWindow* _win;
|
|
sf::RenderTexture _Rtex;
|
|
std::list<IRenderable*> _objects;
|
|
bool _gameStatus;
|
|
bool _displayFPS;
|
|
unsigned int _numberOfBullets;
|
|
unsigned int _Pframmes;
|
|
unsigned int _tmpFrammes;
|
|
|
|
sf::Sprite _rsp;
|
|
sf::Clock _gameClock;
|
|
sf::Event event;
|
|
sf::Music _music;
|
|
std::string _musicPath;
|
|
std::vector<std::string> _musicList;
|
|
|
|
void saveFolderMusic(std::string);
|
|
bool supportedFileFormat(std::string);
|
|
};
|
|
}
|
|
|
|
#define sCore Core::getInstance()
|
|
|
|
#endif /* !CORE_H_ */
|