diff --git a/Linked-List-Snake/Linked-List-Snake.vcxproj b/Linked-List-Snake/Linked-List-Snake.vcxproj index 99de33c3..50154510 100644 --- a/Linked-List-Snake/Linked-List-Snake.vcxproj +++ b/Linked-List-Snake/Linked-List-Snake.vcxproj @@ -133,10 +133,24 @@ + + + + + + + + + + + + + + @@ -148,11 +162,18 @@ + + + + + + + @@ -168,6 +189,7 @@ + diff --git a/Linked-List-Snake/Linked-List-Snake.vcxproj.filters b/Linked-List-Snake/Linked-List-Snake.vcxproj.filters index 02d87bf3..dc824bd5 100644 --- a/Linked-List-Snake/Linked-List-Snake.vcxproj.filters +++ b/Linked-List-Snake/Linked-List-Snake.vcxproj.filters @@ -66,6 +66,54 @@ Source Files + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + @@ -119,5 +167,29 @@ Header Files + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + \ No newline at end of file diff --git a/Linked-List-Snake/include/Global/ServiceLocator.h b/Linked-List-Snake/include/Global/ServiceLocator.h index b73213ab..ac27b79d 100644 --- a/Linked-List-Snake/include/Global/ServiceLocator.h +++ b/Linked-List-Snake/include/Global/ServiceLocator.h @@ -4,6 +4,7 @@ #include "UI/UIService.h" #include "Sound/SoundService.h" #include "Time/TimeService.h" +#include "Level/LevelService.h" namespace Global { @@ -15,6 +16,7 @@ namespace Global Sound::SoundService* sound_service; UI::UIService* ui_service; Time::TimeService* time_service; + Level::LevelService* level_service; ServiceLocator(); ~ServiceLocator(); @@ -34,6 +36,7 @@ namespace Global Sound::SoundService* getSoundService(); UI::UIService* getUIService(); Time::TimeService* getTimeService(); + Level::LevelService* getLevelService(); void deleteServiceLocator(); }; } \ No newline at end of file diff --git a/Linked-List-Snake/include/Level/LevelController.h b/Linked-List-Snake/include/Level/LevelController.h new file mode 100644 index 00000000..440c3233 --- /dev/null +++ b/Linked-List-Snake/include/Level/LevelController.h @@ -0,0 +1,23 @@ +#pragma once +#include "../../include/Level/LevelModel.h" +#include "../../include/Level/LevelView.h" +namespace Level +{ + class LevelController + { + + LevelModel* level_model; + LevelView* level_view; + + + + public: + LevelController(); + void initialize(); + void update(); + void render(); + ~LevelController(); + float getCellWidth(); + float getCellHeight(); + }; +} \ No newline at end of file diff --git a/Linked-List-Snake/include/Level/LevelData.h b/Linked-List-Snake/include/Level/LevelData.h new file mode 100644 index 00000000..f1fd966b --- /dev/null +++ b/Linked-List-Snake/include/Level/LevelData.h @@ -0,0 +1,21 @@ +#pragma once +#include "../../include/Level/LevelService.h" +namespace Level +{ + enum class LevelNumber; + + + + struct LevelData + { + LevelNumber level_index; + + LevelData(LevelNumber ind) + { + level_index = ind; + } + + + }; + +} \ No newline at end of file diff --git a/Linked-List-Snake/include/Level/LevelModel.h b/Linked-List-Snake/include/Level/LevelModel.h new file mode 100644 index 00000000..e6f89ef8 --- /dev/null +++ b/Linked-List-Snake/include/Level/LevelModel.h @@ -0,0 +1,26 @@ +#pragma once +#include +#include "Level/LevelData.h" +#include +namespace Level +{ + class LevelModel + { + std::vector level_configuration; + + float cell_width; + float cell_height; + + public: + static const int number_of_rows = 28; + static const int number_of_columns = 50; + + LevelModel(); + ~LevelModel(); + + void initialize(int width, int height); + + float getCellWidth(); + float getCellHeight(); + }; +} \ No newline at end of file diff --git a/Linked-List-Snake/include/Level/LevelNumber.h b/Linked-List-Snake/include/Level/LevelNumber.h new file mode 100644 index 00000000..d945a609 --- /dev/null +++ b/Linked-List-Snake/include/Level/LevelNumber.h @@ -0,0 +1,9 @@ +#pragma once +namespace Level +{ + enum class LevelNumber + { + ONE, + TWO, + }; +} diff --git a/Linked-List-Snake/include/Level/LevelService.h b/Linked-List-Snake/include/Level/LevelService.h new file mode 100644 index 00000000..f6943d3e --- /dev/null +++ b/Linked-List-Snake/include/Level/LevelService.h @@ -0,0 +1,23 @@ +#pragma once +#include "../../include/Level/LevelController.h" +#include "../../include/Level/LevelNumber.h" +namespace Level +{ + + + class LevelService + { + LevelNumber current_level; + LevelController* level_controller; + void createLevelController(); + public: + LevelService(); + void initialize(); + void update(); + void render(); + ~LevelService(); + + + void createLevel(LevelNumber level_to_load); + }; +} \ No newline at end of file diff --git a/Linked-List-Snake/include/Level/LevelView.h b/Linked-List-Snake/include/Level/LevelView.h new file mode 100644 index 00000000..d81b449a --- /dev/null +++ b/Linked-List-Snake/include/Level/LevelView.h @@ -0,0 +1,41 @@ +#pragma once +#include +#include "UI/UIElement/RectangleShapeView.h" +namespace Level +{ + using namespace UI; + using namespace UI::UIElement; + class LevelView + { + + const sf::Color background_color = sf::Color(180, 200, 160); + RectangleShapeView* background_rectangle; + sf::Color border_color = sf::Color::Black; + float grid_width; + float grid_height; + + RectangleShapeView* border_rectangle; + + public: + + + + static const int border_thickness = 10; + static const int border_offset_left = 40; + static const int border_offset_top = 40; + + + + LevelView(); + void initialize(); + void update(); + void render(); + ~LevelView(); + float getGridWidth(); + float getGridHeight(); + void initializeBorder(); + void calculateGridExtents(); + void initializeBackground(); + + }; +} \ No newline at end of file diff --git a/Linked-List-Snake/include/UI/GameplayUI/GameplayUIController.h b/Linked-List-Snake/include/UI/GameplayUI/GameplayUIController.h new file mode 100644 index 00000000..d667d8e1 --- /dev/null +++ b/Linked-List-Snake/include/UI/GameplayUI/GameplayUIController.h @@ -0,0 +1,56 @@ +#pragma once +#include "UI/Interface/IUIController.h" +#include "UI/UIElement/TextView.h" + +namespace UI +{ + namespace GameplayUI + { + class GameplayUIController : public Interface::IUIController + { + private: + // Constants: + const float font_size = 60.f; + + const float text_y_position = 7.f; + const float level_number_text_x_position = 65.f; + const float score_text_x_position = 800.f; + + // Constants: Operations and Time Complexities + const float operations_font_size = 36.f; + const float operations_text_x_position = 1330.f; + const float operations_text_y_position = 10.f; + const float time_complexity_text_x_position = 1330.f; + const float time_complexity_text_y_position = 45.f; + + UI::UIElement::TextView* level_number_text; + UI::UIElement::TextView* score_text; + UI::UIElement::TextView* time_complexity_text; + UI::UIElement::TextView* operation_text; + + void createTexts(); + void initializeTexts(); + void initializeLevelNumberText(); + void initializeScoreText(); + void initializeTimeComplexityText(); + void initializeOperationText(); + + void updateLevelNumberText(); + void updateScoreText(); + void updateTimeComplexityText(); + void updateOperationText(); + + void destroy(); + + public: + GameplayUIController(); + ~GameplayUIController(); + + void initialize() override; + void update() override; + void render() override; + void show() override; + }; + } +} + diff --git a/Linked-List-Snake/include/UI/LevelSelection/LevelSelectionUIController.h b/Linked-List-Snake/include/UI/LevelSelection/LevelSelectionUIController.h new file mode 100644 index 00000000..324dd4b4 --- /dev/null +++ b/Linked-List-Snake/include/UI/LevelSelection/LevelSelectionUIController.h @@ -0,0 +1,53 @@ +#pragma once +#include +#include "UI/Interface/IUIController.h" +#include "UI/UIElement/ButtonView.h" +#include "UI/UIElement/ImageView.h" + +namespace UI +{ + namespace LevelSelection + { + class LevelSelectionUIController : public Interface::IUIController + { + private: + // Constants: + const float button_width = 400.f; + const float button_height = 140.f; + + const float level_one_button_y_position = 500.f; + const float level_two_button_y_position = 700.f; + const float menu_button_y_position = 900.f; + + const float background_alpha = 85.f; + + UI::UIElement::ImageView* background_image; + + UI::UIElement::ButtonView* level_one_button; + UI::UIElement::ButtonView* level_two_button; + UI::UIElement::ButtonView* menu_button; + + void createImage(); + void createButtons(); + void initializeBackgroundImage(); + void initializeButtons(); + void registerButtonCallback(); + float calculateLeftOffsetForButton(); + + void levelOneButtonCallback(); + void levelTwoButtonCallback(); + void menuButtonCallback(); + + void destroy(); + + public: + LevelSelectionUIController(); + ~LevelSelectionUIController(); + + void initialize() override; + void update() override; + void render() override; + void show() override; + }; + } +} \ No newline at end of file diff --git a/Linked-List-Snake/include/UI/LinkedListUI/LinkedListSelectionUIController.h b/Linked-List-Snake/include/UI/LinkedListUI/LinkedListSelectionUIController.h new file mode 100644 index 00000000..1d8eb2a1 --- /dev/null +++ b/Linked-List-Snake/include/UI/LinkedListUI/LinkedListSelectionUIController.h @@ -0,0 +1,52 @@ +#pragma once +#include +#include "UI/Interface/IUIController.h" +#include "UI/UIElement/ButtonView.h" +#include "UI/UIElement/ImageView.h" + +namespace UI +{ + namespace LinkedListUI + { + class LinkedListSelectionUIController : public Interface::IUIController + { + private: + const float button_width = 400.f; + const float button_height = 140.f; + + const float single_linked_list_button_y_position = 500.f; + const float double_linked_list_button_y_position = 700.f; + const float menu_button_y_position = 900.f; + + const float background_alpha = 85.f; + + UIElement::ImageView* background_image; + + UIElement::ButtonView* single_linked_list_button; + UIElement::ButtonView* double_linked_list_button; + UIElement::ButtonView* menu_button; + + void createImage(); + void createButtons(); + void initializeBackgroundImage(); + void initializeButtons(); + void registerButtonCallback(); + float calculateLeftOffsetForButton(); + + void singleLinkedListButtonCallback(); + void doubleLinkedListButtonCallback(); + void menuButtonCallback(); + + void destroy(); + + public: + LinkedListSelectionUIController(); + ~LinkedListSelectionUIController(); + + void initialize() override; + void update() override; + void render() override; + void show() override; + }; + } +} \ No newline at end of file diff --git a/Linked-List-Snake/include/UI/UIElement/RectangleShapeView.h b/Linked-List-Snake/include/UI/UIElement/RectangleShapeView.h new file mode 100644 index 00000000..dc25fff1 --- /dev/null +++ b/Linked-List-Snake/include/UI/UIElement/RectangleShapeView.h @@ -0,0 +1,28 @@ +#pragma once +#include "UIView.h" + +namespace UI +{ + namespace UIElement + { + class RectangleShapeView : public UIView + { + protected: + sf::RectangleShape rectangle_shape; + + public: + RectangleShapeView(); + virtual ~RectangleShapeView(); + + virtual void initialize(sf::Vector2f rectangle_size, sf::Vector2f rectangle_position, int outline_thikness = 0, sf::Color fill_color = sf::Color::Transparent, sf::Color outline_color = sf::Color::Transparent); + virtual void update() override; + virtual void render() override; + + virtual void setSize(sf::Vector2f rectangle_size); + virtual void setPosition(sf::Vector2f rectangle_position); + virtual void setFillColor(sf::Color fill_color); + virtual void setOutlineColor(sf::Color outline_color); + virtual void setOutlineThickness(int outline_thikness); + }; + } +} \ No newline at end of file diff --git a/Linked-List-Snake/sfml/lib/Debug/sfml-audio-s-d.pdb b/Linked-List-Snake/sfml/lib/Debug/sfml-audio-s-d.pdb new file mode 100644 index 00000000..bbd97a4b Binary files /dev/null and b/Linked-List-Snake/sfml/lib/Debug/sfml-audio-s-d.pdb differ diff --git a/Linked-List-Snake/sfml/lib/Debug/sfml-audio-s.pdb b/Linked-List-Snake/sfml/lib/Debug/sfml-audio-s.pdb new file mode 100644 index 00000000..bbd97a4b Binary files /dev/null and b/Linked-List-Snake/sfml/lib/Debug/sfml-audio-s.pdb differ diff --git a/Linked-List-Snake/sfml/lib/Debug/sfml-audio.pdb b/Linked-List-Snake/sfml/lib/Debug/sfml-audio.pdb new file mode 100644 index 00000000..e0cd9357 Binary files /dev/null and b/Linked-List-Snake/sfml/lib/Debug/sfml-audio.pdb differ diff --git a/Linked-List-Snake/sfml/lib/Debug/sfml-graphics-s-d.pdb b/Linked-List-Snake/sfml/lib/Debug/sfml-graphics-s-d.pdb new file mode 100644 index 00000000..d187d972 Binary files /dev/null and b/Linked-List-Snake/sfml/lib/Debug/sfml-graphics-s-d.pdb differ diff --git a/Linked-List-Snake/sfml/lib/Debug/sfml-graphics-s.pdb b/Linked-List-Snake/sfml/lib/Debug/sfml-graphics-s.pdb new file mode 100644 index 00000000..d187d972 Binary files /dev/null and b/Linked-List-Snake/sfml/lib/Debug/sfml-graphics-s.pdb differ diff --git a/Linked-List-Snake/sfml/lib/Debug/sfml-graphics.pdb b/Linked-List-Snake/sfml/lib/Debug/sfml-graphics.pdb new file mode 100644 index 00000000..310a084a Binary files /dev/null and b/Linked-List-Snake/sfml/lib/Debug/sfml-graphics.pdb differ diff --git a/Linked-List-Snake/sfml/lib/Debug/sfml-main-d.pdb b/Linked-List-Snake/sfml/lib/Debug/sfml-main-d.pdb new file mode 100644 index 00000000..432660dd Binary files /dev/null and b/Linked-List-Snake/sfml/lib/Debug/sfml-main-d.pdb differ diff --git a/Linked-List-Snake/sfml/lib/Debug/sfml-main-s.pdb b/Linked-List-Snake/sfml/lib/Debug/sfml-main-s.pdb new file mode 100644 index 00000000..432660dd Binary files /dev/null and b/Linked-List-Snake/sfml/lib/Debug/sfml-main-s.pdb differ diff --git a/Linked-List-Snake/sfml/lib/Debug/sfml-network-s-d.pdb b/Linked-List-Snake/sfml/lib/Debug/sfml-network-s-d.pdb new file mode 100644 index 00000000..446f1fb8 Binary files /dev/null and b/Linked-List-Snake/sfml/lib/Debug/sfml-network-s-d.pdb differ diff --git a/Linked-List-Snake/sfml/lib/Debug/sfml-network-s.pdb b/Linked-List-Snake/sfml/lib/Debug/sfml-network-s.pdb new file mode 100644 index 00000000..446f1fb8 Binary files /dev/null and b/Linked-List-Snake/sfml/lib/Debug/sfml-network-s.pdb differ diff --git a/Linked-List-Snake/sfml/lib/Debug/sfml-network.pdb b/Linked-List-Snake/sfml/lib/Debug/sfml-network.pdb new file mode 100644 index 00000000..fa073311 Binary files /dev/null and b/Linked-List-Snake/sfml/lib/Debug/sfml-network.pdb differ diff --git a/Linked-List-Snake/sfml/lib/Debug/sfml-system-s-d.pdb b/Linked-List-Snake/sfml/lib/Debug/sfml-system-s-d.pdb new file mode 100644 index 00000000..aa448263 Binary files /dev/null and b/Linked-List-Snake/sfml/lib/Debug/sfml-system-s-d.pdb differ diff --git a/Linked-List-Snake/sfml/lib/Debug/sfml-system-s.pdb b/Linked-List-Snake/sfml/lib/Debug/sfml-system-s.pdb new file mode 100644 index 00000000..aa448263 Binary files /dev/null and b/Linked-List-Snake/sfml/lib/Debug/sfml-system-s.pdb differ diff --git a/Linked-List-Snake/sfml/lib/Debug/sfml-system.pdb b/Linked-List-Snake/sfml/lib/Debug/sfml-system.pdb new file mode 100644 index 00000000..ea487f4f Binary files /dev/null and b/Linked-List-Snake/sfml/lib/Debug/sfml-system.pdb differ diff --git a/Linked-List-Snake/sfml/lib/Debug/sfml-window-s-d.pdb b/Linked-List-Snake/sfml/lib/Debug/sfml-window-s-d.pdb new file mode 100644 index 00000000..98a4c966 Binary files /dev/null and b/Linked-List-Snake/sfml/lib/Debug/sfml-window-s-d.pdb differ diff --git a/Linked-List-Snake/sfml/lib/Debug/sfml-window-s.pdb b/Linked-List-Snake/sfml/lib/Debug/sfml-window-s.pdb new file mode 100644 index 00000000..98a4c966 Binary files /dev/null and b/Linked-List-Snake/sfml/lib/Debug/sfml-window-s.pdb differ diff --git a/Linked-List-Snake/sfml/lib/Debug/sfml-window.pdb b/Linked-List-Snake/sfml/lib/Debug/sfml-window.pdb new file mode 100644 index 00000000..1e2442bd Binary files /dev/null and b/Linked-List-Snake/sfml/lib/Debug/sfml-window.pdb differ diff --git a/Linked-List-Snake/source/Global/ServiceLocator.cpp b/Linked-List-Snake/source/Global/ServiceLocator.cpp index 84c99f93..34c3c28e 100644 --- a/Linked-List-Snake/source/Global/ServiceLocator.cpp +++ b/Linked-List-Snake/source/Global/ServiceLocator.cpp @@ -7,6 +7,7 @@ namespace Global using namespace Sound; using namespace UI; using namespace Time; + using namespace Level; ServiceLocator::ServiceLocator() { @@ -15,6 +16,7 @@ namespace Global sound_service = nullptr; ui_service = nullptr; time_service = nullptr; + level_service = nullptr; createServices(); } @@ -28,6 +30,7 @@ namespace Global sound_service = new SoundService(); ui_service = new UIService(); time_service = new TimeService(); + level_service = new LevelService(); } void ServiceLocator::initialize() @@ -37,6 +40,7 @@ namespace Global event_service->initialize(); ui_service->initialize(); time_service->initialize(); + level_service->initialize(); } void ServiceLocator::update() @@ -45,12 +49,14 @@ namespace Global event_service->update(); ui_service->update(); time_service->update(); + level_service->update(); } void ServiceLocator::render() { ui_service->render(); graphic_service->render(); + level_service->render(); } void ServiceLocator::clearAllServices() @@ -60,6 +66,7 @@ namespace Global delete(sound_service); delete(event_service); delete(time_service); + delete(level_service); } ServiceLocator* ServiceLocator::getInstance() @@ -78,5 +85,10 @@ namespace Global Time::TimeService* ServiceLocator::getTimeService() { return time_service; } + Level::LevelService* ServiceLocator::getLevelService() + { + return level_service; + } + void ServiceLocator::deleteServiceLocator() { delete(this); } } \ No newline at end of file diff --git a/Linked-List-Snake/source/Level/LevelController.cpp b/Linked-List-Snake/source/Level/LevelController.cpp new file mode 100644 index 00000000..7119f8d4 --- /dev/null +++ b/Linked-List-Snake/source/Level/LevelController.cpp @@ -0,0 +1,44 @@ +#include "../../include/Level/LevelController.h" +namespace Level +{ + + Level::LevelController::LevelController() + { + + level_model = new LevelModel(); + level_view = new LevelView(); + } + + void Level::LevelController::initialize() + { + level_view->initialize(); + level_model->initialize(level_view->getGridWidth(), level_view->getGridHeight()); + } + + void Level::LevelController::update() + { + level_view->update(); + } + + void Level::LevelController::render() + { + level_view->render(); + } + + Level::LevelController::~LevelController() + { + delete level_model; + delete level_view; + } + + float LevelController::getCellWidth() + { + return level_model->getCellWidth(); + } + + float LevelController::getCellHeight() + { + return level_model->getCellHeight(); + } + +} diff --git a/Linked-List-Snake/source/Level/LevelModel.cpp b/Linked-List-Snake/source/Level/LevelModel.cpp new file mode 100644 index 00000000..02c1089f --- /dev/null +++ b/Linked-List-Snake/source/Level/LevelModel.cpp @@ -0,0 +1,33 @@ +#include "../../include/Level/LevelModel.h" + +namespace Level +{ + + + + LevelModel::LevelModel() + { + } + + LevelModel::~LevelModel() + { + } + + void LevelModel::initialize(int width, int height) + { + cell_width = width / number_of_rows; + cell_height = height / number_of_rows; + } + + float LevelModel::getCellWidth() + { + return cell_width; + } + + float LevelModel::getCellHeight() + { + return cell_height; + + } + +} \ No newline at end of file diff --git a/Linked-List-Snake/source/Level/LevelService.cpp b/Linked-List-Snake/source/Level/LevelService.cpp new file mode 100644 index 00000000..49477a53 --- /dev/null +++ b/Linked-List-Snake/source/Level/LevelService.cpp @@ -0,0 +1,45 @@ +#include "../../include/Level/LevelService.h" + +namespace Level +{ + + + + void LevelService::createLevelController() + { + level_controller = new LevelController(); + } + + LevelService::LevelService() + { + + level_controller = nullptr; + } + + void LevelService::initialize() + { + level_controller->initialize(); + } + + void LevelService::update() + { + level_controller->update(); + } + + void LevelService::render() + { + level_controller->render(); + } + + LevelService::~LevelService() + { + + delete(level_controller); + } + + void LevelService::createLevel(LevelNumber level_to_load) + { + current_level = level_to_load; + } + +} \ No newline at end of file diff --git a/Linked-List-Snake/source/Level/LevelView.cpp b/Linked-List-Snake/source/Level/LevelView.cpp new file mode 100644 index 00000000..87f2ed46 --- /dev/null +++ b/Linked-List-Snake/source/Level/LevelView.cpp @@ -0,0 +1,81 @@ +#include "Global/ServiceLocator.h" +#include "../../include/Level/LevelView.h" + +namespace Level +{ + using namespace UI::UIElement; + using namespace Global; + + LevelView::LevelView() + { + background_rectangle = new RectangleShapeView(); + border_rectangle = new RectangleShapeView(); + + } + + void LevelView::initialize() + { + initializeBackground(); + calculateGridExtents(); + initializeBorder(); + + } + + void LevelView::update() + { + background_rectangle->update(); + } + + void LevelView::render() + { + background_rectangle->render(); + } + + LevelView::~LevelView() + { + delete(background_rectangle); + } + + float LevelView::getGridWidth() + { + return grid_width; + } + + float LevelView::getGridHeight() + { + return grid_height; + + } + + void LevelView::initializeBorder() + { + sf::RenderWindow* game_window = ServiceLocator::getInstance()->getGraphicService()->getGameWindow(); + + sf::Vector2f border_size = sf::Vector2f(grid_width, grid_height); + sf::Vector2f border_position = sf::Vector2f(border_offset_left, border_offset_top); + + border_rectangle->initialize(border_size, border_position, border_thickness, sf::Color::Transparent, border_color); + border_rectangle->show(); + + } + + void LevelView::calculateGridExtents() + { + sf::RenderWindow* game_window = ServiceLocator::getInstance()->getGraphicService()->getGameWindow(); + + grid_width = game_window->getSize().x - 2 * border_offset_left; + grid_height = game_window->getSize().y - 2 * border_offset_top; + } + + void LevelView::initializeBackground() + { + sf::RenderWindow* game_window = ServiceLocator::getInstance() + ->getGraphicService() + ->getGameWindow(); + + sf::Vector2f background_size = sf::Vector2f(game_window->getSize().x, game_window->getSize().y); + background_rectangle->initialize(background_size, sf::Vector2f(0, 0), 0, background_color); + background_rectangle->show(); + } + +} \ No newline at end of file diff --git a/Linked-List-Snake/source/UI/UIElement/RectangleShapeView.cpp b/Linked-List-Snake/source/UI/UIElement/RectangleShapeView.cpp new file mode 100644 index 00000000..d598e28b --- /dev/null +++ b/Linked-List-Snake/source/UI/UIElement/RectangleShapeView.cpp @@ -0,0 +1,63 @@ +#include "UI/UIElement/RectangleShapeView.h" + +namespace UI +{ + namespace UIElement + { + RectangleShapeView::RectangleShapeView() = default; + + RectangleShapeView::~RectangleShapeView() = default; + + void RectangleShapeView::initialize(sf::Vector2f rectangle_size, sf::Vector2f rectangle_position, int outline_thickness, sf::Color fill_color, sf::Color outline_color) + { + UIView::initialize(); + + setSize(rectangle_size); + setPosition(rectangle_position); + setOutlineThickness(outline_thickness); + setFillColor(fill_color); + setOutlineColor(outline_color); + } + + void RectangleShapeView::update() + { + UIView::update(); + } + + void RectangleShapeView::render() + { + UIView::render(); + + if (ui_state == UIState::VISIBLE) + { + game_window->draw(rectangle_shape); + } + } + + void RectangleShapeView::setSize(sf::Vector2f rectangle_size) + { + rectangle_shape.setSize(rectangle_size); + } + + void RectangleShapeView::setPosition(sf::Vector2f rectangle_position) + { + rectangle_shape.setPosition(rectangle_position); + } + + void RectangleShapeView::setFillColor(sf::Color fill_color) + { + rectangle_shape.setFillColor(fill_color); + } + + void RectangleShapeView::setOutlineColor(sf::Color outline_color) + { + rectangle_shape.setOutlineColor(outline_color); + } + + void RectangleShapeView::setOutlineThickness(int outline_thickness) + { + rectangle_shape.setOutlineThickness(outline_thickness); + } + + } +} \ No newline at end of file