Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion include/GraphicalAPI/DisplayModule.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ namespace Polymorph

private:
std::string _title;
arcade::IDisplayModule *_displayModule;
arcade::IDisplayModule *_displayModule = nullptr;
std::shared_ptr<Settings::VideoSettings> _settings;

///////////////////////////--------------------------///////////////////////////
Expand All @@ -56,6 +56,7 @@ namespace Polymorph
void fetchEvents();

void setResolution(Vector2 newResolution);
bool isKeyPressed(arcade::KeyCode code);
Vector2 getResolution();
void setMaxFps(int fps);
void setFullScreen(bool fullScreen);
Expand Down
57 changes: 57 additions & 0 deletions include/GraphicalAPI/Input.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
/*
** EPITECH PROJECT, 2020
** Input.hpp
** File description:
** header for Input.c
*/


#pragma once

#include "GraphicalAPI.hpp"


namespace Polymorph
{

class Input
{

////////////////////// CONSTRUCTORS/DESTRUCTORS /////////////////////////
public:

//////////////////////--------------------------/////////////////////////



///////////////////////////// PROPERTIES ////////////////////////////////
public:

private:
std::map<arcade::KeyCode, bool> _pressedKeys;
std::map<arcade::KeyCode, bool> _releasedKeys;
std::map<arcade::KeyCode, bool> _holdedKeys;

//////////////////////--------------------------/////////////////////////



/////////////////////////////// METHODS /////////////////////////////////
public:
static bool isKeyDown(arcade::KeyCode code);
static bool isKeyUp(arcade::KeyCode code);
static bool isKeyHold(arcade::KeyCode code);

static bool isMouseButtonDown(arcade::KeyCode buttonNb);
static bool isMouseButtonUp(arcade::KeyCode buttonNb);
static bool isMouseButtonHold(arcade::KeyCode buttonNb);

private:

//////////////////////--------------------------/////////////////////////

};
}



67 changes: 50 additions & 17 deletions src/GraphicalAPI/DisplayModule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,10 @@ namespace Polymorph
{

DisplayModule::DisplayModule(const std::shared_ptr<Settings::VideoSettings> &settings,
std::string title)
std::string title) : _settings(settings), _title(title)
{
_settings = settings;
_title = title;
}

}

void DisplayModule::draw(SpriteModule &sprite)
{
Expand All @@ -39,94 +38,128 @@ namespace Polymorph

void DisplayModule::clearWindow()
{
if (!_displayModule)
if (!_displayModule) {
Logger::log("[Graphical API] No display available.", Logger::MINOR);
return;
}
_displayModule->clearWindow();
}

void DisplayModule::displayWindow()
{
if (!_displayModule)
if (!_displayModule) {
Logger::log("[Graphical API] No display available.", Logger::MINOR);
return;
}
_displayModule->displayWindow();
}

void DisplayModule::close()
{
if (!_displayModule)
if (!_displayModule) {
Logger::log("[Graphical API] No display available.", Logger::MINOR);
return;
}
_displayModule->closeWindow();
}

bool DisplayModule::isOpen()
{

if (!_displayModule)
if (!_displayModule) {
Logger::log("[Graphical API] No display available.", Logger::MINOR);
return true;
}
return _displayModule->isOpen();
}

void DisplayModule::fetchEvents()
{
if (!_displayModule)
if (!_displayModule) {
Logger::log("[Graphical API] No display available.", Logger::MINOR);
return;
}
_displayModule->fetchInputs();
}

void DisplayModule::setResolution(Vector2 newResolution)
{
_settings->setResolution(newResolution);
if (!_displayModule)
if (!_displayModule) {
Logger::log("[Graphical API] No display available.", Logger::MINOR);
return;
}
_displayModule->setResolution(newResolution.x, newResolution.y);
}

Vector2 DisplayModule::getResolution()
{
if (!_displayModule)
return{-1, -1};
if (!_displayModule) {
Logger::log("[Graphical API] No display available.", Logger::MINOR);
return {-1, -1};
}
return {static_cast<float>(_displayModule->getWindowWidth()),
static_cast<float>(_displayModule->getWindowHeight())};
}

void DisplayModule::setMaxFps(int fps)
{
_settings->setMaxFps(fps);
if (!_displayModule)
if (!_displayModule) {
Logger::log("[Graphical API] No display available.", Logger::MINOR);
return;
}
_displayModule->setFps(fps);
}

void DisplayModule::setFullScreen(bool fullScreen)
{
_settings->setFullscreen(fullScreen);
if (!_displayModule) {
Logger::log("[Graphical API] No display available.", Logger::MINOR);
return;
}
_displayModule->setFullScreen(fullScreen);
}

bool DisplayModule::isTextMode()
{
if (!_displayModule)
if (!_displayModule) {
Logger::log("[Graphical API] No display available.", Logger::MINOR);
return true;
}
return _displayModule->isTextMode();
}

void DisplayModule::draw(TextModule &sprite)
{
if (!_displayModule || !sprite.getText())
if (!_displayModule || !sprite.getText()) {
Logger::log("[Graphical API] No display available.", Logger::MINOR);
return;
}
_displayModule->draw(sprite.getText());
}

void DisplayModule::_loadModule()
{
auto res = _settings->getResolution();
if (!_displayModule)
if (!_displayModule) {
Logger::log("[Graphical API] No display available.", Logger::MINOR);
return;

}
_displayModule->setResolution(res.x, res.y);
_displayModule->setWindowTitle(_title);
_displayModule->setFps(_settings->getMaxFps());
_displayModule->setFullScreen(_settings->getFullscreen());

}

bool DisplayModule::isKeyPressed(arcade::KeyCode code)
{
if (!_displayModule) {
Logger::log("[Graphical API] No display available.", Logger::MINOR);
return false;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add a debug log

}
return _displayModule->isKeyPressed(code);
}
}
2 changes: 1 addition & 1 deletion src/GraphicalAPI/GraphicalAPI.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ void Polymorph::GraphicalAPI::reloadAPI(std::string newHandler)
_instance->_c_sprite = loadSymbol<SpriteLoader, GraphicalAPI>("createSprite");
_instance->_c_display = loadSymbol<DisplayLoader, GraphicalAPI>("createDisplay");

_instance->_d_display = loadSymbol<DisplayUnloader, GraphicalAPI>("destroyDisplay");
_instance->_d_display = loadSymbol<DisplayUnloader, GraphicalAPI>("deleteDisplay");
_instance->_d_sprite = loadSymbol<SpriteUnloader, GraphicalAPI>("destroySprite");
_instance->_d_text = loadSymbol<TextUnloader, GraphicalAPI>("destroyText");

Expand Down
45 changes: 45 additions & 0 deletions src/GraphicalAPI/Input.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/*
** EPITECH PROJECT, 2020
** Input.cpp
** File description:
** header for Input.c
*/

#include "GraphicalAPI/Input.hpp"
#include "Log/Logger.hpp"

bool Polymorph::Input::isKeyHold(arcade::KeyCode code)
{
return GraphicalAPI::CurrentDisplay->isKeyPressed(code);
}

bool Polymorph::Input::isMouseButtonHold(arcade::KeyCode buttonNb)
{
if (buttonNb < arcade::MouseButton1 || buttonNb > arcade::MouseButton3)
return false;
return GraphicalAPI::CurrentDisplay->isKeyPressed(buttonNb);
}

bool Polymorph::Input::isKeyUp(arcade::KeyCode code)
{
Logger::log("[Input] isKeyUp: not implemented yet (false by default)");
return false;
}

bool Polymorph::Input::isKeyDown(arcade::KeyCode code)
{
Logger::log("[Input] isKeyDown: not implemented yet (false by default)");
return false;
}

bool Polymorph::Input::isMouseButtonDown(arcade::KeyCode buttonNb)
{
Logger::log("[Input] isMouseButtonDown: not implemented yet (false by default)");
return false;
}

bool Polymorph::Input::isMouseButtonUp(arcade::KeyCode buttonNb)
{
Logger::log("[Input] isMouseButtonUp: not implemented yet (false by default)");
return false;
}