From 13d090b4c4f437cae33179fb8db9c3bbc5f3777b Mon Sep 17 00:00:00 2001 From: Tristan GREMONT Date: Wed, 23 Mar 2022 11:37:47 +0100 Subject: [PATCH 1/3] [add] Input class (Empty) --- include/GraphicalAPI/Input.cpp | 8 ++++++ include/GraphicalAPI/Input.hpp | 46 ++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 include/GraphicalAPI/Input.cpp create mode 100644 include/GraphicalAPI/Input.hpp diff --git a/include/GraphicalAPI/Input.cpp b/include/GraphicalAPI/Input.cpp new file mode 100644 index 00000000..31948326 --- /dev/null +++ b/include/GraphicalAPI/Input.cpp @@ -0,0 +1,8 @@ +/* +** EPITECH PROJECT, 2020 +** Input.cpp +** File description: +** header for Input.c +*/ + +#include "Input.hpp" diff --git a/include/GraphicalAPI/Input.hpp b/include/GraphicalAPI/Input.hpp new file mode 100644 index 00000000..d1a8c716 --- /dev/null +++ b/include/GraphicalAPI/Input.hpp @@ -0,0 +1,46 @@ +/* +** EPITECH PROJECT, 2020 +** Input.hpp +** File description: +** header for Input.c +*/ + + +#pragma once + + +class Input +{ + +////////////////////// CONSTRUCTORS/DESTRUCTORS ///////////////////////// + public: + Input(); + + ~Input(); + +//////////////////////--------------------------///////////////////////// + + + +///////////////////////////// PROPERTIES //////////////////////////////// + public: + + + private: + +//////////////////////--------------------------///////////////////////// + + + +/////////////////////////////// METHODS ///////////////////////////////// + public: + + + private: + +//////////////////////--------------------------///////////////////////// + +}; + + + From d2645e817df63a6d709932a5e3841d283fa8d568 Mon Sep 17 00:00:00 2001 From: Tristan GREMONT Date: Wed, 23 Mar 2022 13:53:13 +0100 Subject: [PATCH 2/3] [add] Input --- include/GraphicalAPI/DisplayModule.hpp | 1 + include/GraphicalAPI/Input.cpp | 8 ---- include/GraphicalAPI/Input.hpp | 61 +++++++++++++++----------- src/GraphicalAPI/DisplayModule.cpp | 7 +++ src/GraphicalAPI/GraphicalAPI.cpp | 2 +- src/GraphicalAPI/Input.cpp | 49 +++++++++++++++++++++ 6 files changed, 94 insertions(+), 34 deletions(-) delete mode 100644 include/GraphicalAPI/Input.cpp create mode 100644 src/GraphicalAPI/Input.cpp diff --git a/include/GraphicalAPI/DisplayModule.hpp b/include/GraphicalAPI/DisplayModule.hpp index ac7b5b7e..15836568 100644 --- a/include/GraphicalAPI/DisplayModule.hpp +++ b/include/GraphicalAPI/DisplayModule.hpp @@ -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); diff --git a/include/GraphicalAPI/Input.cpp b/include/GraphicalAPI/Input.cpp deleted file mode 100644 index 31948326..00000000 --- a/include/GraphicalAPI/Input.cpp +++ /dev/null @@ -1,8 +0,0 @@ -/* -** EPITECH PROJECT, 2020 -** Input.cpp -** File description: -** header for Input.c -*/ - -#include "Input.hpp" diff --git a/include/GraphicalAPI/Input.hpp b/include/GraphicalAPI/Input.hpp index d1a8c716..45e2421a 100644 --- a/include/GraphicalAPI/Input.hpp +++ b/include/GraphicalAPI/Input.hpp @@ -8,39 +8,50 @@ #pragma once +#include "GraphicalAPI.hpp" -class Input -{ +namespace Polymorph +{ + + class Input + { + ////////////////////// CONSTRUCTORS/DESTRUCTORS ///////////////////////// - public: - Input(); - - ~Input(); - + public: + //////////////////////--------------------------///////////////////////// - - - + + + ///////////////////////////// PROPERTIES //////////////////////////////// - public: - - - private: - + public: + + private: + std::map _pressedKeys; + std::map _releasedKeys; + std::map _holdedKeys; + //////////////////////--------------------------///////////////////////// - - - + + + /////////////////////////////// METHODS ///////////////////////////////// - public: - - - private: - + public: + static bool isKeyDown(arcade::KeyCode code); + static bool isKeyUp(arcade::KeyCode code); + static bool isKeyHold(arcade::KeyCode code); + + static bool isMouseButtonDown(unsigned int buttonNb); + static bool isMouseButtonUp(unsigned int buttonNb); + static bool isMouseButtonHold(unsigned int buttonNb); + + private: + //////////////////////--------------------------///////////////////////// - -}; + + }; +} diff --git a/src/GraphicalAPI/DisplayModule.cpp b/src/GraphicalAPI/DisplayModule.cpp index 8f09659e..ee0f139d 100644 --- a/src/GraphicalAPI/DisplayModule.cpp +++ b/src/GraphicalAPI/DisplayModule.cpp @@ -129,4 +129,11 @@ namespace Polymorph _displayModule->setFullScreen(_settings->getFullscreen()); } + + bool DisplayModule::isKeyPressed(arcade::KeyCode code) + { + if (!_displayModule) + return false; + return _displayModule->isKeyPressed(code); + } } \ No newline at end of file diff --git a/src/GraphicalAPI/GraphicalAPI.cpp b/src/GraphicalAPI/GraphicalAPI.cpp index ce672956..9ceffb82 100644 --- a/src/GraphicalAPI/GraphicalAPI.cpp +++ b/src/GraphicalAPI/GraphicalAPI.cpp @@ -84,7 +84,7 @@ void Polymorph::GraphicalAPI::reloadAPI(std::string newHandler) _instance->_c_sprite = loadSymbol("createSprite"); _instance->_c_display = loadSymbol("createDisplay"); - _instance->_d_display = loadSymbol("destroyDisplay"); + _instance->_d_display = loadSymbol("deleteDisplay"); _instance->_d_sprite = loadSymbol("destroySprite"); _instance->_d_text = loadSymbol("destroyText"); diff --git a/src/GraphicalAPI/Input.cpp b/src/GraphicalAPI/Input.cpp new file mode 100644 index 00000000..39c4cdb9 --- /dev/null +++ b/src/GraphicalAPI/Input.cpp @@ -0,0 +1,49 @@ +/* +** 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) +{ + GraphicalAPI::CurrentDisplay->isKeyPressed(code); + return false; +} + +bool Polymorph::Input::isMouseButtonHold(unsigned int buttonNb) +{ + if (buttonNb == 0 || buttonNb > 3) + return false; + auto c = static_cast(arcade::KeyCount + buttonNb); + + GraphicalAPI::CurrentDisplay->isKeyPressed(c); + return false; +} + +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(unsigned int buttonNb) +{ + Logger::log("[Input] isMouseButtonDown: not implemented yet (false by default)"); + return false; +} + +bool Polymorph::Input::isMouseButtonUp(unsigned int buttonNb) +{ + Logger::log("[Input] isMouseButtonUp: not implemented yet (false by default)"); + return false; +} From 13413d7b765f665a64b94f6db692651e2adc94d2 Mon Sep 17 00:00:00 2001 From: Tristan GREMONT Date: Wed, 23 Mar 2022 14:12:45 +0100 Subject: [PATCH 3/3] [fix] input mouse taking now an enum and added log to display module --- include/GraphicalAPI/DisplayModule.hpp | 2 +- include/GraphicalAPI/Input.hpp | 6 +-- src/GraphicalAPI/DisplayModule.cpp | 62 ++++++++++++++++++-------- src/GraphicalAPI/Input.cpp | 16 +++---- 4 files changed, 54 insertions(+), 32 deletions(-) diff --git a/include/GraphicalAPI/DisplayModule.hpp b/include/GraphicalAPI/DisplayModule.hpp index 15836568..78590324 100644 --- a/include/GraphicalAPI/DisplayModule.hpp +++ b/include/GraphicalAPI/DisplayModule.hpp @@ -40,7 +40,7 @@ namespace Polymorph private: std::string _title; - arcade::IDisplayModule *_displayModule; + arcade::IDisplayModule *_displayModule = nullptr; std::shared_ptr _settings; ///////////////////////////--------------------------/////////////////////////// diff --git a/include/GraphicalAPI/Input.hpp b/include/GraphicalAPI/Input.hpp index 45e2421a..36ae9a73 100644 --- a/include/GraphicalAPI/Input.hpp +++ b/include/GraphicalAPI/Input.hpp @@ -42,9 +42,9 @@ namespace Polymorph static bool isKeyUp(arcade::KeyCode code); static bool isKeyHold(arcade::KeyCode code); - static bool isMouseButtonDown(unsigned int buttonNb); - static bool isMouseButtonUp(unsigned int buttonNb); - static bool isMouseButtonHold(unsigned int buttonNb); + static bool isMouseButtonDown(arcade::KeyCode buttonNb); + static bool isMouseButtonUp(arcade::KeyCode buttonNb); + static bool isMouseButtonHold(arcade::KeyCode buttonNb); private: diff --git a/src/GraphicalAPI/DisplayModule.cpp b/src/GraphicalAPI/DisplayModule.cpp index ee0f139d..ae2b5c78 100644 --- a/src/GraphicalAPI/DisplayModule.cpp +++ b/src/GraphicalAPI/DisplayModule.cpp @@ -19,11 +19,10 @@ namespace Polymorph { DisplayModule::DisplayModule(const std::shared_ptr &settings, - std::string title) + std::string title) : _settings(settings), _title(title) { - _settings = settings; - _title = title; - } + + } void DisplayModule::draw(SpriteModule &sprite) { @@ -39,52 +38,66 @@ 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(_displayModule->getWindowWidth()), static_cast(_displayModule->getWindowHeight())}; } @@ -92,37 +105,48 @@ namespace Polymorph 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()); @@ -132,8 +156,10 @@ namespace Polymorph bool DisplayModule::isKeyPressed(arcade::KeyCode code) { - if (!_displayModule) + if (!_displayModule) { + Logger::log("[Graphical API] No display available.", Logger::MINOR); return false; + } return _displayModule->isKeyPressed(code); } } \ No newline at end of file diff --git a/src/GraphicalAPI/Input.cpp b/src/GraphicalAPI/Input.cpp index 39c4cdb9..d3c2468e 100644 --- a/src/GraphicalAPI/Input.cpp +++ b/src/GraphicalAPI/Input.cpp @@ -10,18 +10,14 @@ bool Polymorph::Input::isKeyHold(arcade::KeyCode code) { - GraphicalAPI::CurrentDisplay->isKeyPressed(code); - return false; + return GraphicalAPI::CurrentDisplay->isKeyPressed(code); } -bool Polymorph::Input::isMouseButtonHold(unsigned int buttonNb) +bool Polymorph::Input::isMouseButtonHold(arcade::KeyCode buttonNb) { - if (buttonNb == 0 || buttonNb > 3) + if (buttonNb < arcade::MouseButton1 || buttonNb > arcade::MouseButton3) return false; - auto c = static_cast(arcade::KeyCount + buttonNb); - - GraphicalAPI::CurrentDisplay->isKeyPressed(c); - return false; + return GraphicalAPI::CurrentDisplay->isKeyPressed(buttonNb); } bool Polymorph::Input::isKeyUp(arcade::KeyCode code) @@ -36,13 +32,13 @@ bool Polymorph::Input::isKeyDown(arcade::KeyCode code) return false; } -bool Polymorph::Input::isMouseButtonDown(unsigned int buttonNb) +bool Polymorph::Input::isMouseButtonDown(arcade::KeyCode buttonNb) { Logger::log("[Input] isMouseButtonDown: not implemented yet (false by default)"); return false; } -bool Polymorph::Input::isMouseButtonUp(unsigned int buttonNb) +bool Polymorph::Input::isMouseButtonUp(arcade::KeyCode buttonNb) { Logger::log("[Input] isMouseButtonUp: not implemented yet (false by default)"); return false;