From 4108e90a0480bfc029ec15ea632798a754e195ba Mon Sep 17 00:00:00 2001 From: meteoralpha23 Date: Sat, 27 Jul 2024 10:26:22 +0530 Subject: [PATCH 01/28] Update main.cpp --- Space-Invaders/main.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/Space-Invaders/main.cpp b/Space-Invaders/main.cpp index 7d5f90dff..338955a1e 100644 --- a/Space-Invaders/main.cpp +++ b/Space-Invaders/main.cpp @@ -1,5 +1,28 @@ +#include int main() { + // Define the video mode (dimensions) + sf::VideoMode videoMode = sf::VideoMode(1020,780 ); + + + sf::RenderWindow window(videoMode, "This is my first SFML Window"); + while (window.isOpen()) { + sf::Event event; + while (window.pollEvent(event)) { + // Check for window closure + if (event.type == sf::Event::Closed) + window.close(); + } + + + // Clear the window + window.clear(sf::Color::Red); + + // Display whatever you draw + window.display(); + } + + return 0; } \ No newline at end of file From 185f626a0e8d4359e2e2942f62b4ae1dbdadd9fc Mon Sep 17 00:00:00 2001 From: meteoralpha23 Date: Sat, 27 Jul 2024 10:31:40 +0530 Subject: [PATCH 02/28] Update main.cpp --- Space-Invaders/main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Space-Invaders/main.cpp b/Space-Invaders/main.cpp index 338955a1e..724dc8332 100644 --- a/Space-Invaders/main.cpp +++ b/Space-Invaders/main.cpp @@ -10,14 +10,14 @@ int main() while (window.isOpen()) { sf::Event event; while (window.pollEvent(event)) { - // Check for window closure + if (event.type == sf::Event::Closed) window.close(); } // Clear the window - window.clear(sf::Color::Red); + window.clear(sf::Color::Cyan); // Display whatever you draw window.display(); From 4b9a573c74ed364c751657708b9b3bd642dba512 Mon Sep 17 00:00:00 2001 From: meteoralpha23 Date: Sat, 27 Jul 2024 11:30:54 +0530 Subject: [PATCH 03/28] Update main.cpp --- Space-Invaders/main.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/Space-Invaders/main.cpp b/Space-Invaders/main.cpp index 724dc8332..c824adbdd 100644 --- a/Space-Invaders/main.cpp +++ b/Space-Invaders/main.cpp @@ -4,7 +4,7 @@ int main() { // Define the video mode (dimensions) sf::VideoMode videoMode = sf::VideoMode(1020,780 ); - + sf::RenderWindow window(videoMode, "This is my first SFML Window"); while (window.isOpen()) { @@ -18,6 +18,20 @@ int main() // Clear the window window.clear(sf::Color::Cyan); + sf::CircleShape circle(50); // Radius 50 + circle.setFillColor(sf::Color::Red); + circle.setPosition(400, 300); // Set position + window.draw(circle); + + sf::RectangleShape rect(sf::Vector2f(100, 50)); + rect.setFillColor(sf::Color::Blue); + rect.setPosition(600, 400); + window.draw(rect); + + sf::RectangleShape line(sf::Vector2f(100, 200)); + line.rotate(35); + line.setPosition(200, 470); + window.draw(line); // Display whatever you draw window.display(); From acc1783ca0aadbabc8f7db77e30edc136b46bb77 Mon Sep 17 00:00:00 2001 From: meteoralpha23 Date: Sat, 27 Jul 2024 11:48:32 +0530 Subject: [PATCH 04/28] Update main.cpp --- Space-Invaders/main.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Space-Invaders/main.cpp b/Space-Invaders/main.cpp index c824adbdd..7a1b85e5d 100644 --- a/Space-Invaders/main.cpp +++ b/Space-Invaders/main.cpp @@ -28,11 +28,19 @@ int main() rect.setPosition(600, 400); window.draw(rect); - sf::RectangleShape line(sf::Vector2f(100, 200)); + sf::RectangleShape line(sf::Vector2f(300, 2)); line.rotate(35); line.setPosition(200, 470); window.draw(line); + sf::ConvexShape convex(4); + convex.setPoint(0, sf::Vector2f(0, 0)); + convex.setPoint(1, sf::Vector2f(620, 200)); + convex.setPoint(2, sf::Vector2f(270, 140)); + convex.setPoint(3, sf::Vector2f(287, 140)); + convex.setFillColor(sf::Color::Yellow); + window.draw(convex); + // Display whatever you draw window.display(); } From 02db02c09189f9ca70ed57888edc9b2eae79eeaa Mon Sep 17 00:00:00 2001 From: meteoralpha23 Date: Sat, 27 Jul 2024 11:50:24 +0530 Subject: [PATCH 05/28] Update main.cpp --- Space-Invaders/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Space-Invaders/main.cpp b/Space-Invaders/main.cpp index 7a1b85e5d..8d65b88f4 100644 --- a/Space-Invaders/main.cpp +++ b/Space-Invaders/main.cpp @@ -38,7 +38,7 @@ int main() convex.setPoint(1, sf::Vector2f(620, 200)); convex.setPoint(2, sf::Vector2f(270, 140)); convex.setPoint(3, sf::Vector2f(287, 140)); - convex.setFillColor(sf::Color::Yellow); + convex.setFillColor(sf::Color::Magenta); window.draw(convex); // Display whatever you draw From 1c016cee89321132e61da182c692affb8d724355 Mon Sep 17 00:00:00 2001 From: meteoralpha23 Date: Sat, 27 Jul 2024 12:28:26 +0530 Subject: [PATCH 06/28] Update main.cpp --- Space-Invaders/main.cpp | 64 ++++++++++++++++++++++++++--------------- 1 file changed, 41 insertions(+), 23 deletions(-) diff --git a/Space-Invaders/main.cpp b/Space-Invaders/main.cpp index 8d65b88f4..cf499fd3b 100644 --- a/Space-Invaders/main.cpp +++ b/Space-Invaders/main.cpp @@ -17,29 +17,47 @@ int main() // Clear the window - window.clear(sf::Color::Cyan); - sf::CircleShape circle(50); // Radius 50 - circle.setFillColor(sf::Color::Red); - circle.setPosition(400, 300); // Set position - window.draw(circle); - - sf::RectangleShape rect(sf::Vector2f(100, 50)); - rect.setFillColor(sf::Color::Blue); - rect.setPosition(600, 400); - window.draw(rect); - - sf::RectangleShape line(sf::Vector2f(300, 2)); - line.rotate(35); - line.setPosition(200, 470); - window.draw(line); - - sf::ConvexShape convex(4); - convex.setPoint(0, sf::Vector2f(0, 0)); - convex.setPoint(1, sf::Vector2f(620, 200)); - convex.setPoint(2, sf::Vector2f(270, 140)); - convex.setPoint(3, sf::Vector2f(287, 140)); - convex.setFillColor(sf::Color::Magenta); - window.draw(convex); + window.clear(sf::Color::Black); + //sf::CircleShape circle(50); // Radius 50 + //circle.setFillColor(sf::Color::Red); + //circle.setPosition(400, 300); // Set position + //window.draw(circle); + + //sf::RectangleShape rect(sf::Vector2f(100, 50)); + //rect.setFillColor(sf::Color::Blue); + //rect.setPosition(600, 400); + //window.draw(rect); + + //sf::RectangleShape line(sf::Vector2f(300, 2)); + //line.rotate(35); + //line.setPosition(200, 470); + //window.draw(line); + + //sf::ConvexShape convex(4); + //convex.setPoint(0, sf::Vector2f(0, 0)); + //convex.setPoint(1, sf::Vector2f(620, 200)); + //convex.setPoint(2, sf::Vector2f(270, 140)); + //convex.setPoint(3, sf::Vector2f(287, 140)); + //convex.setFillColor(sf::Color::Magenta); + //window.draw(convex); + + sf::Texture loading_image; + loading_image.loadFromFile("assets/textures/player_ship.png"); + sf::Sprite sprite; + sprite.setTexture(loading_image); + + sprite.setPosition(200, 400); + sprite.setRotation(38); + sprite.setScale(sf::Vector2f(1, 1)); + window.draw(sprite); + + sf::Font font; + font.loadFromFile("assets/fonts/OpenSans.ttf"); + sf::Text text("SFML is Awesome",font,60); + text.setFillColor(sf::Color::Yellow); + window.draw(text); + + // Display whatever you draw window.display(); From 9a06a1e5ac002633eb1b6b0f689a484cea00ad7d Mon Sep 17 00:00:00 2001 From: meteoralpha23 Date: Sat, 27 Jul 2024 12:29:06 +0530 Subject: [PATCH 07/28] Update main.cpp --- Space-Invaders/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Space-Invaders/main.cpp b/Space-Invaders/main.cpp index cf499fd3b..2acbb875a 100644 --- a/Space-Invaders/main.cpp +++ b/Space-Invaders/main.cpp @@ -17,7 +17,7 @@ int main() // Clear the window - window.clear(sf::Color::Black); + window.clear(sf::Color::Yellow); //sf::CircleShape circle(50); // Radius 50 //circle.setFillColor(sf::Color::Red); //circle.setPosition(400, 300); // Set position From d0948ee0b76b7eb2000edfd32e05312c9e2e57a7 Mon Sep 17 00:00:00 2001 From: meteoralpha23 Date: Sat, 27 Jul 2024 12:30:15 +0530 Subject: [PATCH 08/28] Update main.cpp --- Space-Invaders/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Space-Invaders/main.cpp b/Space-Invaders/main.cpp index 2acbb875a..2e3a3326c 100644 --- a/Space-Invaders/main.cpp +++ b/Space-Invaders/main.cpp @@ -17,7 +17,7 @@ int main() // Clear the window - window.clear(sf::Color::Yellow); + window.clear(sf::Color::Cyan); //sf::CircleShape circle(50); // Radius 50 //circle.setFillColor(sf::Color::Red); //circle.setPosition(400, 300); // Set position From 008aae81b3bfb1bce85a5d9dc8d01c6c0058d9e5 Mon Sep 17 00:00:00 2001 From: meteoralpha23 Date: Sat, 27 Jul 2024 19:21:45 +0530 Subject: [PATCH 09/28] Update main.cpp --- Space-Invaders/main.cpp | 83 ++++++++++++++++------------------------- 1 file changed, 32 insertions(+), 51 deletions(-) diff --git a/Space-Invaders/main.cpp b/Space-Invaders/main.cpp index 2e3a3326c..7b791765e 100644 --- a/Space-Invaders/main.cpp +++ b/Space-Invaders/main.cpp @@ -1,67 +1,48 @@ #include +#include -int main() +class Player { - // Define the video mode (dimensions) - sf::VideoMode videoMode = sf::VideoMode(1020,780 ); - - - sf::RenderWindow window(videoMode, "This is my first SFML Window"); - while (window.isOpen()) { - sf::Event event; - while (window.pollEvent(event)) { - - if (event.type == sf::Event::Closed) - window.close(); - } + + + int health=3; + int playerScore = 0; + + sf::Vector2f position=sf::Vector2f(200.0f,100.0f); - // Clear the window - window.clear(sf::Color::Cyan); - //sf::CircleShape circle(50); // Radius 50 - //circle.setFillColor(sf::Color::Red); - //circle.setPosition(400, 300); // Set position - //window.draw(circle); + public: + sf::Texture playerTexture; + sf::Sprite sprite; + int movementSpeed; - //sf::RectangleShape rect(sf::Vector2f(100, 50)); - //rect.setFillColor(sf::Color::Blue); - //rect.setPosition(600, 400); - //window.draw(rect); +}; + +int main() +{ - //sf::RectangleShape line(sf::Vector2f(300, 2)); - //line.rotate(35); - //line.setPosition(200, 470); - //window.draw(line); + sf::VideoMode videoMode = sf::VideoMode(800, 600); + sf::RenderWindow window(videoMode, "SPACE INVADERS"); - //sf::ConvexShape convex(4); - //convex.setPoint(0, sf::Vector2f(0, 0)); - //convex.setPoint(1, sf::Vector2f(620, 200)); - //convex.setPoint(2, sf::Vector2f(270, 140)); - //convex.setPoint(3, sf::Vector2f(287, 140)); - //convex.setFillColor(sf::Color::Magenta); - //window.draw(convex); + while (window.isOpen()) + { + sf::Event event; + while (window.pollEvent(event)) + { + if (event.type == sf::Event::Closed) + { + window.close(); + } + } + window.clear(sf::Color::Black); + window.display(); + } - sf::Texture loading_image; - loading_image.loadFromFile("assets/textures/player_ship.png"); - sf::Sprite sprite; - sprite.setTexture(loading_image); - - sprite.setPosition(200, 400); - sprite.setRotation(38); - sprite.setScale(sf::Vector2f(1, 1)); - window.draw(sprite); - sf::Font font; - font.loadFromFile("assets/fonts/OpenSans.ttf"); - sf::Text text("SFML is Awesome",font,60); - text.setFillColor(sf::Color::Yellow); - window.draw(text); - // Display whatever you draw - window.display(); - } + return 0; From 2e71f969ae9c47ce5acb0eb5f21fd81be36e32d2 Mon Sep 17 00:00:00 2001 From: meteoralpha23 Date: Sun, 28 Jul 2024 11:52:24 +0530 Subject: [PATCH 10/28] Update main.cpp --- Space-Invaders/main.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Space-Invaders/main.cpp b/Space-Invaders/main.cpp index 7b791765e..fa5e695b5 100644 --- a/Space-Invaders/main.cpp +++ b/Space-Invaders/main.cpp @@ -16,6 +16,11 @@ class Player sf::Sprite sprite; int movementSpeed; + void takeDamage() {}; + void move() {}; + void shootBullets() {}; + + }; int main() From 05161f422fc6439cfecc1d33d5a73fb2b17b890a Mon Sep 17 00:00:00 2001 From: meteoralpha23 Date: Mon, 29 Jul 2024 19:43:25 +0530 Subject: [PATCH 11/28] Update main.cpp --- Space-Invaders/main.cpp | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/Space-Invaders/main.cpp b/Space-Invaders/main.cpp index fa5e695b5..367e166f8 100644 --- a/Space-Invaders/main.cpp +++ b/Space-Invaders/main.cpp @@ -13,12 +13,15 @@ class Player public: sf::Texture playerTexture; - sf::Sprite sprite; + sf::Sprite player_sprite; int movementSpeed; void takeDamage() {}; void move() {}; void shootBullets() {}; + + sf::Vector2f getPosition() { return position; }; + }; @@ -29,6 +32,11 @@ int main() sf::VideoMode videoMode = sf::VideoMode(800, 600); sf::RenderWindow window(videoMode, "SPACE INVADERS"); + Player player; + + player.playerTexture.loadFromFile("assets/textures/player_ship.png"); + player.player_sprite.setTexture(player.playerTexture); + while (window.isOpen()) { sf::Event event; @@ -38,8 +46,23 @@ int main() { window.close(); } + if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)) + { + player.move(); + } + if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) + { + player.move(); + } } - window.clear(sf::Color::Black); + window.clear(sf::Color::Blue); // this code will set a blue background color (optional) + + player.player_sprite.setPosition(player.getPosition()); // Set the position of the player sprite + + window.draw(player.player_sprite); // Draw the player sprite + + window.display(); // Display what was drawn + window.display(); } From 4419968f7aaa00ea785c05442a9e7e24cd559472 Mon Sep 17 00:00:00 2001 From: meteoralpha23 Date: Mon, 29 Jul 2024 19:56:32 +0530 Subject: [PATCH 12/28] Update main.cpp --- Space-Invaders/main.cpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/Space-Invaders/main.cpp b/Space-Invaders/main.cpp index 367e166f8..606f187de 100644 --- a/Space-Invaders/main.cpp +++ b/Space-Invaders/main.cpp @@ -14,11 +14,20 @@ class Player public: sf::Texture playerTexture; sf::Sprite player_sprite; - int movementSpeed; + int movementSpeed=5; void takeDamage() {}; - void move() {}; + void move(float offsetX) + { + position.x += offsetX; + + + }; void shootBullets() {}; + + int GetMoveSpeed() { + return movementSpeed; + } sf::Vector2f getPosition() { return position; }; @@ -48,20 +57,19 @@ int main() } if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)) { - player.move(); + player.move(-1.0f*player.GetMoveSpeed()); } if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) { - player.move(); + player.move(1.0f * player.GetMoveSpeed()); } } window.clear(sf::Color::Blue); // this code will set a blue background color (optional) - player.player_sprite.setPosition(player.getPosition()); // Set the position of the player sprite + player.player_sprite.setPosition(player.getPosition()); - window.draw(player.player_sprite); // Draw the player sprite + window.draw(player.player_sprite); - window.display(); // Display what was drawn window.display(); } From 6334ee59cc6d374384f6dca6cbb8719f7fc43b57 Mon Sep 17 00:00:00 2001 From: meteoralpha23 Date: Tue, 30 Jul 2024 20:13:38 +0530 Subject: [PATCH 13/28] Commiting --- Space-Invaders/Header/GameService.h | 25 +++++++++++++ Space-Invaders/Source/GameService.cpp | 36 +++++++++++++++++++ Space-Invaders/Space-Invaders.vcxproj | 4 +++ Space-Invaders/Space-Invaders.vcxproj.filters | 8 +++++ 4 files changed, 73 insertions(+) create mode 100644 Space-Invaders/Header/GameService.h create mode 100644 Space-Invaders/Source/GameService.cpp diff --git a/Space-Invaders/Header/GameService.h b/Space-Invaders/Header/GameService.h new file mode 100644 index 000000000..0cfc4f51f --- /dev/null +++ b/Space-Invaders/Header/GameService.h @@ -0,0 +1,25 @@ +#pragma once + + class GameService + { + private: + void Initialize(); + void Destroy(); + public: + GameService(); + + ~GameService(); + + void Ignite(); + + void update(); + + void render(); + + bool isRunning(); + + + + + }; + diff --git a/Space-Invaders/Source/GameService.cpp b/Space-Invaders/Source/GameService.cpp new file mode 100644 index 000000000..e343492c3 --- /dev/null +++ b/Space-Invaders/Source/GameService.cpp @@ -0,0 +1,36 @@ +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\GameService.h" + + + +void GameService::Initialize() +{ +} + +void GameService::Destroy() +{ +} + +GameService::GameService() +{ +} + +GameService::~GameService() +{ +} + +void GameService::Ignite() +{ +} + +void GameService::update() +{ +} + +void GameService::render() +{ +} + +bool GameService::isRunning() +{ + return false; +} diff --git a/Space-Invaders/Space-Invaders.vcxproj b/Space-Invaders/Space-Invaders.vcxproj index 6f7fa388d..cb93bd2d1 100644 --- a/Space-Invaders/Space-Invaders.vcxproj +++ b/Space-Invaders/Space-Invaders.vcxproj @@ -133,6 +133,10 @@ + + + + diff --git a/Space-Invaders/Space-Invaders.vcxproj.filters b/Space-Invaders/Space-Invaders.vcxproj.filters index ce0c35ccf..35c695626 100644 --- a/Space-Invaders/Space-Invaders.vcxproj.filters +++ b/Space-Invaders/Space-Invaders.vcxproj.filters @@ -18,5 +18,13 @@ Source Files + + Source Files + + + + + Header Files + \ No newline at end of file From c03b2a512e4107114f2fa83cd9ecb916f1ad4f53 Mon Sep 17 00:00:00 2001 From: meteoralpha23 Date: Tue, 30 Jul 2024 20:15:08 +0530 Subject: [PATCH 14/28] Update GameService.cpp --- Space-Invaders/Source/GameService.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Space-Invaders/Source/GameService.cpp b/Space-Invaders/Source/GameService.cpp index e343492c3..0597607f5 100644 --- a/Space-Invaders/Source/GameService.cpp +++ b/Space-Invaders/Source/GameService.cpp @@ -16,6 +16,8 @@ GameService::GameService() GameService::~GameService() { + + } void GameService::Ignite() From bb8144bc283b7219c7910a7c82e6ee34f68cff9e Mon Sep 17 00:00:00 2001 From: meteoralpha23 Date: Tue, 30 Jul 2024 20:15:49 +0530 Subject: [PATCH 15/28] Update GameService.cpp --- Space-Invaders/Source/GameService.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/Space-Invaders/Source/GameService.cpp b/Space-Invaders/Source/GameService.cpp index 0597607f5..e343492c3 100644 --- a/Space-Invaders/Source/GameService.cpp +++ b/Space-Invaders/Source/GameService.cpp @@ -16,8 +16,6 @@ GameService::GameService() GameService::~GameService() { - - } void GameService::Ignite() From 9dbf1914fb0c95fba4fc68654dfa24578fab691e Mon Sep 17 00:00:00 2001 From: meteoralpha23 Date: Tue, 30 Jul 2024 20:25:08 +0530 Subject: [PATCH 16/28] Update main.cpp --- Space-Invaders/main.cpp | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/Space-Invaders/main.cpp b/Space-Invaders/main.cpp index 606f187de..a01758396 100644 --- a/Space-Invaders/main.cpp +++ b/Space-Invaders/main.cpp @@ -1,6 +1,8 @@ #include #include +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\GameService.h" +/* class Player { @@ -82,4 +84,36 @@ int main() return 0; +} + +*/ + +int main() +{ + + GameService Game_Service; + + Game_Service.Ignite(); + while (Game_Service.isRunning()) + { + Game_Service.update(); + Game_Service.render(); + } + + + return 0; + + + + + + + + + + + + + + } \ No newline at end of file From 9e085c342328d44323867adb5f4c5a6893932be9 Mon Sep 17 00:00:00 2001 From: meteoralpha23 Date: Tue, 30 Jul 2024 20:49:29 +0530 Subject: [PATCH 17/28] Implementing Service Locator --- Space-Invaders/Header/ServiceLocator.h | 40 ++++++++++++++++++++++++ Space-Invaders/Source/ServiceLocator.cpp | 30 ++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 Space-Invaders/Header/ServiceLocator.h create mode 100644 Space-Invaders/Source/ServiceLocator.cpp diff --git a/Space-Invaders/Header/ServiceLocator.h b/Space-Invaders/Header/ServiceLocator.h new file mode 100644 index 000000000..86a35f026 --- /dev/null +++ b/Space-Invaders/Header/ServiceLocator.h @@ -0,0 +1,40 @@ + +#pragma once + +// ServiceLocator Class Summary: This class manages access to various services in the application. +// include relevant headers files + +class ServiceLocator +{ +private: + // Private Attributes: + // - event_service: Manages event-related functionalities. + // - graphic_service: Handles graphics-related tasks. + // .......................... + // .......................... + + // Private Constructor and Destructor: + + // Constructor for initializing the ServiceLocator. + ServiceLocator(); + + // Destructor for cleaning up resources upon object deletion. + ~ServiceLocator(); + + // Private Methods: + void createServices(); // Creates instances of all services. + void clearAllServices(); // Deletes and deallocates memory for all services. + +public: + // Public Methods: + static ServiceLocator* getInstance(); // Provides a method to access the unique ServiceLocator instance (object). We will discuss this later. + + void initialize(); // Initializes the ServiceLocator. + void update(); // Updates all services. + void render(); // Renders using the services. + + // Methods to Get Specific Services: + //EventService* getEventService(); // Retrieve the EventService instance + //GraphicService* getGraphicService(); // Retrieve the GraphicService instance + +}; \ No newline at end of file diff --git a/Space-Invaders/Source/ServiceLocator.cpp b/Space-Invaders/Source/ServiceLocator.cpp new file mode 100644 index 000000000..a05152819 --- /dev/null +++ b/Space-Invaders/Source/ServiceLocator.cpp @@ -0,0 +1,30 @@ +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\ServiceLocator.h" + +ServiceLocator::~ServiceLocator() +{ +} + +void ServiceLocator::createServices() +{ +} + +void ServiceLocator::clearAllServices() +{ +} + +ServiceLocator* ServiceLocator::getInstance() +{ + return nullptr; +} + +void ServiceLocator::initialize() +{ +} + +void ServiceLocator::update() +{ +} + +void ServiceLocator::render() +{ +} From aefe597e1e5dc9322ce1555454ffd2a4d1f27918 Mon Sep 17 00:00:00 2001 From: meteoralpha23 Date: Wed, 31 Jul 2024 20:57:38 +0530 Subject: [PATCH 18/28] Updating serviceLocaor --- Space-Invaders/Header/GameService.h | 33 +++++--- Space-Invaders/Header/GraphicService.h | 33 ++++++++ Space-Invaders/Header/ServiceLocator.h | 19 ++--- Space-Invaders/Source/GameService.cpp | 47 +++++++++-- Space-Invaders/Source/GraphicService.cpp | 83 +++++++++++++++++++ Space-Invaders/Source/ServiceLocator.cpp | 25 +++++- Space-Invaders/Space-Invaders.vcxproj | 4 + Space-Invaders/Space-Invaders.vcxproj.filters | 12 +++ Space-Invaders/main.cpp | 28 ++----- 9 files changed, 229 insertions(+), 55 deletions(-) create mode 100644 Space-Invaders/Header/GraphicService.h create mode 100644 Space-Invaders/Source/GraphicService.cpp diff --git a/Space-Invaders/Header/GameService.h b/Space-Invaders/Header/GameService.h index 0cfc4f51f..c6bcfee3c 100644 --- a/Space-Invaders/Header/GameService.h +++ b/Space-Invaders/Header/GameService.h @@ -1,25 +1,32 @@ #pragma once +#include +#include "../Header/ServiceLocator.h" - class GameService - { - private: - void Initialize(); - void Destroy(); - public: - GameService(); +class GameService +{ +private: - ~GameService(); + ServiceLocator* service_locator; + sf::RenderWindow* game_window; - void Ignite(); + void initialize(); + void initializeVariables();// Handles game initialization. + void destroy(); // Handles cleanup tasks. - void update(); - void render(); - bool isRunning(); + + +public: - }; + GameService(); // Constructor for initializing the GameService object. + ~GameService(); // Destructor for cleaning up resources upon object deletion. + void ignite(); // Initiates the game. + void update(); // Updates the game logic and game state. + void render(); // Renders each frame of the game. + bool isRunning(); // Checks if the game is currently running. +}; \ No newline at end of file diff --git a/Space-Invaders/Header/GraphicService.h b/Space-Invaders/Header/GraphicService.h new file mode 100644 index 000000000..499ffe5a7 --- /dev/null +++ b/Space-Invaders/Header/GraphicService.h @@ -0,0 +1,33 @@ +#pragma once. +#include + +class GraphicService +{ +private: + const std::string game_window_title = "Outscal Presents - Alien Invader"; + + const int game_window_width = 800; + const int game_window_height = 600; + + const sf::Color window_color = sf::Color::Blue; + sf::VideoMode* video_mode; + sf::RenderWindow* game_window; + + void setVideoMode(); + void OnDestroy(); + +public: + GraphicService(); + ~GraphicService(); + //method to create the game window. returns a pointer to an instance of the game window + sf::RenderWindow* createGameWindow(); + + //lifecycle functions + void initialize(); + void update(); + void render(); + bool isGameWindowOpen(); + + sf::RenderWindow* getGameWindow(); + sf::Color getWindowColor(); +}; \ No newline at end of file diff --git a/Space-Invaders/Header/ServiceLocator.h b/Space-Invaders/Header/ServiceLocator.h index 86a35f026..a4dc573b9 100644 --- a/Space-Invaders/Header/ServiceLocator.h +++ b/Space-Invaders/Header/ServiceLocator.h @@ -1,5 +1,6 @@ #pragma once +#include "../Header/GraphicService.h" // ServiceLocator Class Summary: This class manages access to various services in the application. // include relevant headers files @@ -8,18 +9,12 @@ class ServiceLocator { private: // Private Attributes: - // - event_service: Manages event-related functionalities. - // - graphic_service: Handles graphics-related tasks. - // .......................... - // .......................... + GraphicService* graphic_service; // Private Constructor and Destructor: - - // Constructor for initializing the ServiceLocator. ServiceLocator(); - - // Destructor for cleaning up resources upon object deletion. - ~ServiceLocator(); + // Constructor for initializing the ServiceLocator. + ~ServiceLocator(); // Destructor for cleaning up resources upon object deletion. // Private Methods: void createServices(); // Creates instances of all services. @@ -27,14 +22,12 @@ class ServiceLocator public: // Public Methods: - static ServiceLocator* getInstance(); // Provides a method to access the unique ServiceLocator instance (object). We will discuss this later. - + static ServiceLocator* getInstance(); // Provides a method to access the unique ServiceLocator instance (object). void initialize(); // Initializes the ServiceLocator. void update(); // Updates all services. void render(); // Renders using the services. // Methods to Get Specific Services: - //EventService* getEventService(); // Retrieve the EventService instance - //GraphicService* getGraphicService(); // Retrieve the GraphicService instance + GraphicService* getGraphicService(); }; \ No newline at end of file diff --git a/Space-Invaders/Source/GameService.cpp b/Space-Invaders/Source/GameService.cpp index e343492c3..3fd07995d 100644 --- a/Space-Invaders/Source/GameService.cpp +++ b/Space-Invaders/Source/GameService.cpp @@ -1,36 +1,69 @@ #include "D:\Outscal\Space-Invaders\Space-Invaders\Header\GameService.h" +#include "../Header/GraphicService.h" -void GameService::Initialize() + + + +GameService::GameService() { -} -void GameService::Destroy() + service_locator = nullptr; + game_window = nullptr; +} +GameService::~GameService() { + + destroy(); } -GameService::GameService() + +void GameService::ignite() +{ + service_locator = ServiceLocator::getInstance(); + initialize(); + + + +} +void GameService::initialize() { + + service_locator->initialize(); + + } -GameService::~GameService() +void GameService::initializeVariables() { + + game_window = service_locator->getGraphicService()->getGameWindow(); } -void GameService::Ignite() +void GameService::destroy() { } + + + + + void GameService::update() { + service_locator->update(); } void GameService::render() { + + game_window->clear(service_locator->getGraphicService()->getWindowColor()); + service_locator->render(); + game_window->display(); } bool GameService::isRunning() { - return false; + return service_locator->getGraphicService()->isGameWindowOpen(); } diff --git a/Space-Invaders/Source/GraphicService.cpp b/Space-Invaders/Source/GraphicService.cpp new file mode 100644 index 000000000..26f176573 --- /dev/null +++ b/Space-Invaders/Source/GraphicService.cpp @@ -0,0 +1,83 @@ +#include "../Header/GraphicService.h" + + +GraphicService::GraphicService() +{ + game_window = nullptr; + video_mode = nullptr; + +} + +GraphicService::~GraphicService() +{ + + OnDestroy(); + +} + +void GraphicService::initialize() +{ + game_window = createGameWindow(); + + +} + +sf::RenderWindow* GraphicService::createGameWindow() +{ + setVideoMode(); + return new sf::RenderWindow(*video_mode, game_window_title); +} + +void GraphicService::setVideoMode() +{ + video_mode = new sf::VideoMode(game_window_width, game_window_height, + sf::VideoMode::getDesktopMode().bitsPerPixel); +} + + + + + + + + + +void GraphicService::OnDestroy() +{ + + delete(video_mode); + delete(game_window); + + +} + + + + + + + + + +void GraphicService::update() +{ +} + +void GraphicService::render() +{ +} + +bool GraphicService::isGameWindowOpen() +{ + return game_window->isOpen(); +} + +sf::RenderWindow* GraphicService::getGameWindow() +{ + return game_window; +} + +sf::Color GraphicService::getWindowColor() +{ + return window_color; +} diff --git a/Space-Invaders/Source/ServiceLocator.cpp b/Space-Invaders/Source/ServiceLocator.cpp index a05152819..ea6cb1759 100644 --- a/Space-Invaders/Source/ServiceLocator.cpp +++ b/Space-Invaders/Source/ServiceLocator.cpp @@ -1,30 +1,53 @@ #include "D:\Outscal\Space-Invaders\Space-Invaders\Header\ServiceLocator.h" +#include "../Header/ServiceLocator.h" +ServiceLocator::ServiceLocator() +{ + + graphic_service = nullptr; + createServices(); +} ServiceLocator::~ServiceLocator() { + + clearAllServices(); } void ServiceLocator::createServices() { + graphic_service = new GraphicService(); } void ServiceLocator::clearAllServices() { + + delete(graphic_service); + graphic_service = nullptr; } ServiceLocator* ServiceLocator::getInstance() { - return nullptr; + static ServiceLocator instance; + return &instance; } void ServiceLocator::initialize() { + graphic_service->initialize(); } void ServiceLocator::update() { + graphic_service->update(); } void ServiceLocator::render() { + graphic_service->render(); } + +GraphicService* ServiceLocator::getGraphicService() +{ + return graphic_service; +} + diff --git a/Space-Invaders/Space-Invaders.vcxproj b/Space-Invaders/Space-Invaders.vcxproj index cb93bd2d1..c9d0e3527 100644 --- a/Space-Invaders/Space-Invaders.vcxproj +++ b/Space-Invaders/Space-Invaders.vcxproj @@ -134,9 +134,13 @@ + + + + diff --git a/Space-Invaders/Space-Invaders.vcxproj.filters b/Space-Invaders/Space-Invaders.vcxproj.filters index 35c695626..2d13324df 100644 --- a/Space-Invaders/Space-Invaders.vcxproj.filters +++ b/Space-Invaders/Space-Invaders.vcxproj.filters @@ -21,10 +21,22 @@ Source Files + + Source Files + + + Source Files + Header Files + + Header Files + + + Header Files + \ No newline at end of file diff --git a/Space-Invaders/main.cpp b/Space-Invaders/main.cpp index a01758396..a13024f84 100644 --- a/Space-Invaders/main.cpp +++ b/Space-Invaders/main.cpp @@ -91,29 +91,15 @@ int main() int main() { - GameService Game_Service; - - Game_Service.Ignite(); - while (Game_Service.isRunning()) - { - Game_Service.update(); - Game_Service.render(); - } - - - return 0; - - - - - - - - - - + GameService* game_service = new GameService(); + game_service->ignite(); + while (game_service->isRunning()) + { + game_service->update(); + game_service->render(); + } } \ No newline at end of file From eca92e7a941b8769c79a94c61cafd9814e49210b Mon Sep 17 00:00:00 2001 From: meteoralpha23 Date: Sat, 3 Aug 2024 21:02:07 +0530 Subject: [PATCH 19/28] Polling events --- Space-Invaders/Header/EventService.h | 27 ++++++++++++ Space-Invaders/Header/GameService.h | 1 + Space-Invaders/Header/GraphicService.h | 2 +- Space-Invaders/Header/ServiceLocator.h | 5 +++ Space-Invaders/Source/EventService.cpp | 42 +++++++++++++++++++ Space-Invaders/Source/GameService.cpp | 4 ++ Space-Invaders/Source/ServiceLocator.cpp | 18 ++++---- Space-Invaders/Space-Invaders.vcxproj | 2 + Space-Invaders/Space-Invaders.vcxproj.filters | 6 +++ 9 files changed, 96 insertions(+), 11 deletions(-) create mode 100644 Space-Invaders/Header/EventService.h create mode 100644 Space-Invaders/Source/EventService.cpp diff --git a/Space-Invaders/Header/EventService.h b/Space-Invaders/Header/EventService.h new file mode 100644 index 000000000..be159fbdc --- /dev/null +++ b/Space-Invaders/Header/EventService.h @@ -0,0 +1,27 @@ +#pragma once +#include +#include + +class EventService +{ +private: + sf::Event game_event; //event var + sf::RenderWindow* game_window; //ptr to our game window + + bool isGameWindowOpen(); + bool gameWindowWasClosed(); //for the condition we already had - the title bar cross. + bool hasQuitGame(); //for our new 'ESC' condition + + + +public: + EventService(); + ~EventService(); + + void initialize(); + void update(); + void processEvents(); // while window is open we will check for events + bool pressedEscapeKey(); + bool isKeyboardEvent(); + +}; \ No newline at end of file diff --git a/Space-Invaders/Header/GameService.h b/Space-Invaders/Header/GameService.h index c6bcfee3c..ce23f434f 100644 --- a/Space-Invaders/Header/GameService.h +++ b/Space-Invaders/Header/GameService.h @@ -1,6 +1,7 @@ #pragma once #include #include "../Header/ServiceLocator.h" +#include "../Header/GraphicService.h" class GameService { diff --git a/Space-Invaders/Header/GraphicService.h b/Space-Invaders/Header/GraphicService.h index 499ffe5a7..78f9edf79 100644 --- a/Space-Invaders/Header/GraphicService.h +++ b/Space-Invaders/Header/GraphicService.h @@ -4,7 +4,7 @@ class GraphicService { private: - const std::string game_window_title = "Outscal Presents - Alien Invader"; + const std::string game_window_title = "Alien Invader"; const int game_window_width = 800; const int game_window_height = 600; diff --git a/Space-Invaders/Header/ServiceLocator.h b/Space-Invaders/Header/ServiceLocator.h index a4dc573b9..7663a9f8f 100644 --- a/Space-Invaders/Header/ServiceLocator.h +++ b/Space-Invaders/Header/ServiceLocator.h @@ -1,7 +1,10 @@ #pragma once + #include "../Header/GraphicService.h" +#include "../Header/EventService.h" + // ServiceLocator Class Summary: This class manages access to various services in the application. // include relevant headers files @@ -10,6 +13,7 @@ class ServiceLocator private: // Private Attributes: GraphicService* graphic_service; + EventService* event_service; // Private Constructor and Destructor: ServiceLocator(); @@ -29,5 +33,6 @@ class ServiceLocator // Methods to Get Specific Services: GraphicService* getGraphicService(); + EventService* getEventService(); }; \ No newline at end of file diff --git a/Space-Invaders/Source/EventService.cpp b/Space-Invaders/Source/EventService.cpp new file mode 100644 index 000000000..c7f9d4a29 --- /dev/null +++ b/Space-Invaders/Source/EventService.cpp @@ -0,0 +1,42 @@ +#include "../Header/EventService.h" +#include "../Header/GameService.h" +#include "../Header/GraphicService.h" + +EventService::EventService() { game_window = nullptr; } + +EventService::~EventService() = default; //calls the default destructor + +void EventService::initialize() +{ + game_window = ServiceLocator::getInstance()->getGraphicService()->getGameWindow(); +} + +void EventService::update() +{ + //for later +} + +void EventService::processEvents() +{ + if (isGameWindowOpen()) { + while (game_window->pollEvent(game_event)) { + // Check for window closure + if (gameWindowWasClosed() || hasQuitGame()) + { + game_window->close(); + } + } + } +} + +bool EventService::hasQuitGame() { return (isKeyboardEvent() && pressedEscapeKey()); } // only true if the ESC key is pressed and a keyboard event has been registered + +//checks for if a keyboard key has been pressed +bool EventService::isKeyboardEvent() { return game_event.type == sf::Event::KeyPressed; } + +//control click on the SFML functions to see what they do internally +bool EventService::pressedEscapeKey() { return game_event.key.code == sf::Keyboard::Escape; } + +bool EventService::isGameWindowOpen() { return game_window != nullptr; } + +bool EventService::gameWindowWasClosed() { return game_event.type == sf::Event::Closed; } diff --git a/Space-Invaders/Source/GameService.cpp b/Space-Invaders/Source/GameService.cpp index 3fd07995d..2b6cec8d1 100644 --- a/Space-Invaders/Source/GameService.cpp +++ b/Space-Invaders/Source/GameService.cpp @@ -1,6 +1,8 @@ #include "D:\Outscal\Space-Invaders\Space-Invaders\Header\GameService.h" #include "../Header/GraphicService.h" +#include "../Header/GraphicService.h" + @@ -53,6 +55,8 @@ void GameService::destroy() void GameService::update() { service_locator->update(); + service_locator->getEventService()->update(); + service_locator->update(); } void GameService::render() diff --git a/Space-Invaders/Source/ServiceLocator.cpp b/Space-Invaders/Source/ServiceLocator.cpp index ea6cb1759..c48ca4e0a 100644 --- a/Space-Invaders/Source/ServiceLocator.cpp +++ b/Space-Invaders/Source/ServiceLocator.cpp @@ -1,28 +1,26 @@ -#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\ServiceLocator.h" #include "../Header/ServiceLocator.h" ServiceLocator::ServiceLocator() { - graphic_service = nullptr; + event_service = nullptr; createServices(); } ServiceLocator::~ServiceLocator() { - clearAllServices(); } void ServiceLocator::createServices() { graphic_service = new GraphicService(); + event_service = new EventService(); } void ServiceLocator::clearAllServices() { - delete(graphic_service); - graphic_service = nullptr; + delete(event_service); } ServiceLocator* ServiceLocator::getInstance() @@ -34,20 +32,20 @@ ServiceLocator* ServiceLocator::getInstance() void ServiceLocator::initialize() { graphic_service->initialize(); + event_service->initialize(); } void ServiceLocator::update() { graphic_service->update(); + event_service->update(); } void ServiceLocator::render() { graphic_service->render(); + //no event service because nothing to render } -GraphicService* ServiceLocator::getGraphicService() -{ - return graphic_service; -} - +GraphicService* ServiceLocator::getGraphicService() { return graphic_service; } +EventService* ServiceLocator::getEventService() { return event_service; } diff --git a/Space-Invaders/Space-Invaders.vcxproj b/Space-Invaders/Space-Invaders.vcxproj index c9d0e3527..b047c8a6b 100644 --- a/Space-Invaders/Space-Invaders.vcxproj +++ b/Space-Invaders/Space-Invaders.vcxproj @@ -133,11 +133,13 @@ + + diff --git a/Space-Invaders/Space-Invaders.vcxproj.filters b/Space-Invaders/Space-Invaders.vcxproj.filters index 2d13324df..b97253efe 100644 --- a/Space-Invaders/Space-Invaders.vcxproj.filters +++ b/Space-Invaders/Space-Invaders.vcxproj.filters @@ -27,6 +27,9 @@ Source Files + + Source Files + @@ -38,5 +41,8 @@ Header Files + + Header Files + \ No newline at end of file From dab326a1a2e17709cd865a3824b2262219b94a6e Mon Sep 17 00:00:00 2001 From: meteoralpha23 Date: Sat, 10 Aug 2024 20:43:50 +0530 Subject: [PATCH 20/28] new --- Space-Invaders/Header/EventService.h | 20 +++--- Space-Invaders/Header/GameService.h | 33 ++++----- Space-Invaders/Header/GraphicService.h | 36 +++++----- Space-Invaders/Header/ServiceLocator.h | 43 +++++------- Space-Invaders/Source/EventService.cpp | 70 ++++++++++++++----- Space-Invaders/Source/GameService.cpp | 70 +++++++++++-------- Space-Invaders/Source/GraphicService.cpp | 60 ++++++---------- Space-Invaders/Source/ServiceLocator.cpp | 62 +++++++++------- Space-Invaders/Space-Invaders.vcxproj | 8 +-- Space-Invaders/Space-Invaders.vcxproj.filters | 2 +- Space-Invaders/main.cpp | 20 +++--- 11 files changed, 227 insertions(+), 197 deletions(-) diff --git a/Space-Invaders/Header/EventService.h b/Space-Invaders/Header/EventService.h index be159fbdc..b68aa6148 100644 --- a/Space-Invaders/Header/EventService.h +++ b/Space-Invaders/Header/EventService.h @@ -5,23 +5,23 @@ class EventService { private: - sf::Event game_event; //event var - sf::RenderWindow* game_window; //ptr to our game window + sf::Event gameEvent; + sf::RenderWindow* gameWindow; bool isGameWindowOpen(); - bool gameWindowWasClosed(); //for the condition we already had - the title bar cross. - bool hasQuitGame(); //for our new 'ESC' condition - + bool gameWindowWasClosed(); + bool hasQuitGame(); public: EventService(); ~EventService(); - void initialize(); - void update(); - void processEvents(); // while window is open we will check for events - bool pressedEscapeKey(); - bool isKeyboardEvent(); + + void Initialize(); + void Update(); + void ProcessEvents(); + bool PressedEscapeKey(); + bool isKeyboardEvent(); }; \ No newline at end of file diff --git a/Space-Invaders/Header/GameService.h b/Space-Invaders/Header/GameService.h index ce23f434f..19a2db4ca 100644 --- a/Space-Invaders/Header/GameService.h +++ b/Space-Invaders/Header/GameService.h @@ -1,33 +1,30 @@ #pragma once -#include -#include "../Header/ServiceLocator.h" -#include "../Header/GraphicService.h" +#include +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\ServiceLocator.h" class GameService { private: + ServiceLocator* serviceLocator; + sf::RenderWindow* gameWindow; - ServiceLocator* service_locator; - sf::RenderWindow* game_window; - - void initialize(); - void initializeVariables();// Handles game initialization. - void destroy(); // Handles cleanup tasks. + + void Initialize(); //initialize the game + void InitializeVariables(); + void Destroy(); //cleanup of resources +public: + GameService(); //construtor for initializing game service object + ~GameService(); //destrutor for cleaning up the resources - - + void Ignite(); //Start the game + void Update(); //Updates Game logic and states + void Render(); //Render things on Screen + bool IsGameRunning(); //checks if game is running -public: - GameService(); // Constructor for initializing the GameService object. - ~GameService(); // Destructor for cleaning up resources upon object deletion. - void ignite(); // Initiates the game. - void update(); // Updates the game logic and game state. - void render(); // Renders each frame of the game. - bool isRunning(); // Checks if the game is currently running. }; \ No newline at end of file diff --git a/Space-Invaders/Header/GraphicService.h b/Space-Invaders/Header/GraphicService.h index 78f9edf79..cc99abe63 100644 --- a/Space-Invaders/Header/GraphicService.h +++ b/Space-Invaders/Header/GraphicService.h @@ -1,33 +1,37 @@ -#pragma once. +#pragma once #include class GraphicService { private: - const std::string game_window_title = "Alien Invader"; + const std::string gameWindowTitle = "Space Invaders"; - const int game_window_width = 800; - const int game_window_height = 600; - const sf::Color window_color = sf::Color::Blue; - sf::VideoMode* video_mode; - sf::RenderWindow* game_window; + const int gameWindowWidth = 800; + const int gameWindowHeight = 600; + + const sf::Color windowColor = sf::Color::Blue; + + sf::VideoMode* videoMode; + sf::RenderWindow* gameWindow; + void setVideoMode(); // Method for setting our video mode + void onDestroy(); // method to run when window is deleted - void setVideoMode(); - void OnDestroy(); public: + GraphicService(); ~GraphicService(); - //method to create the game window. returns a pointer to an instance of the game window - sf::RenderWindow* createGameWindow(); + sf::RenderWindow* CreateGameWindow(); - //lifecycle functions - void initialize(); - void update(); - void render(); + + void Initialize(); + void Update(); + void Render(); bool isGameWindowOpen(); - sf::RenderWindow* getGameWindow(); + + sf::RenderWindow* GetGameWindow(); sf::Color getWindowColor(); + }; \ No newline at end of file diff --git a/Space-Invaders/Header/ServiceLocator.h b/Space-Invaders/Header/ServiceLocator.h index 7663a9f8f..fb036d34a 100644 --- a/Space-Invaders/Header/ServiceLocator.h +++ b/Space-Invaders/Header/ServiceLocator.h @@ -1,38 +1,29 @@ - #pragma once +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\GraphicService.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\EventService.h" -#include "../Header/GraphicService.h" - -#include "../Header/EventService.h" - -// ServiceLocator Class Summary: This class manages access to various services in the application. -// include relevant headers files class ServiceLocator { private: - // Private Attributes: - GraphicService* graphic_service; - EventService* event_service; - // Private Constructor and Destructor: - ServiceLocator(); - // Constructor for initializing the ServiceLocator. - ~ServiceLocator(); // Destructor for cleaning up resources upon object deletion. - // Private Methods: - void createServices(); // Creates instances of all services. - void clearAllServices(); // Deletes and deallocates memory for all services. + GraphicService *graphicService; + EventService* eventService; + + ServiceLocator(); + ~ServiceLocator(); + + void CreateServices(); + void ClearAllServices(); public: - // Public Methods: - static ServiceLocator* getInstance(); // Provides a method to access the unique ServiceLocator instance (object). - void initialize(); // Initializes the ServiceLocator. - void update(); // Updates all services. - void render(); // Renders using the services. + static ServiceLocator* GetInstance(); - // Methods to Get Specific Services: - GraphicService* getGraphicService(); - EventService* getEventService(); + void Initialize(); + void Update(); + void Render(); -}; \ No newline at end of file + GraphicService* getGraphicService(); + EventService* getEventService(); +}; diff --git a/Space-Invaders/Source/EventService.cpp b/Space-Invaders/Source/EventService.cpp index c7f9d4a29..55d1d7860 100644 --- a/Space-Invaders/Source/EventService.cpp +++ b/Space-Invaders/Source/EventService.cpp @@ -2,41 +2,75 @@ #include "../Header/GameService.h" #include "../Header/GraphicService.h" -EventService::EventService() { game_window = nullptr; } -EventService::~EventService() = default; //calls the default destructor +EventService::EventService() +{ + gameWindow = nullptr; +} -void EventService::initialize() +EventService::~EventService() = default; + +void EventService::Initialize() { - game_window = ServiceLocator::getInstance()->getGraphicService()->getGameWindow(); + gameWindow = ServiceLocator::GetInstance()->getGraphicService()->GetGameWindow(); + } -void EventService::update() +void EventService::Update() { - //for later + + } -void EventService::processEvents() +void EventService::ProcessEvents() { - if (isGameWindowOpen()) { - while (game_window->pollEvent(game_event)) { - // Check for window closure + if (isGameWindowOpen()) + { + while (gameWindow->pollEvent(gameEvent)) + { if (gameWindowWasClosed() || hasQuitGame()) { - game_window->close(); + + gameWindow->close(); } } } + + } -bool EventService::hasQuitGame() { return (isKeyboardEvent() && pressedEscapeKey()); } // only true if the ESC key is pressed and a keyboard event has been registered +bool EventService::hasQuitGame() +{ + return (isKeyboardEvent() && PressedEscapeKey()); +} + +bool EventService::isKeyboardEvent() +{ + return gameEvent.type == sf::Event::KeyPressed; +} +bool EventService::PressedEscapeKey() +{ + return gameEvent.key.code == sf::Keyboard::Escape; +} + +bool EventService::isGameWindowOpen() +{ + return gameWindow != nullptr; +} + +bool EventService::gameWindowWasClosed() +{ + return gameEvent.type == sf::Event::Closed; +} + + + + + + + + -//checks for if a keyboard key has been pressed -bool EventService::isKeyboardEvent() { return game_event.type == sf::Event::KeyPressed; } -//control click on the SFML functions to see what they do internally -bool EventService::pressedEscapeKey() { return game_event.key.code == sf::Keyboard::Escape; } -bool EventService::isGameWindowOpen() { return game_window != nullptr; } -bool EventService::gameWindowWasClosed() { return game_event.type == sf::Event::Closed; } diff --git a/Space-Invaders/Source/GameService.cpp b/Space-Invaders/Source/GameService.cpp index 2b6cec8d1..58ec3adc3 100644 --- a/Space-Invaders/Source/GameService.cpp +++ b/Space-Invaders/Source/GameService.cpp @@ -1,73 +1,81 @@ #include "D:\Outscal\Space-Invaders\Space-Invaders\Header\GameService.h" -#include "../Header/GraphicService.h" - -#include "../Header/GraphicService.h" - - +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\GraphicService.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\EventService.h" GameService::GameService() { + serviceLocator = nullptr; + gameWindow = nullptr; + - service_locator = nullptr; - game_window = nullptr; } + GameService::~GameService() { + Destroy(); - destroy(); + //destructor } - -void GameService::ignite() +void GameService::Ignite() { - service_locator = ServiceLocator::getInstance(); - initialize(); - - + serviceLocator = ServiceLocator::GetInstance(); + Initialize(); } -void GameService::initialize() +void GameService::Initialize() { + serviceLocator->Initialize(); + InitializeVariables(); + +} - service_locator->initialize(); +void GameService::InitializeVariables() +{ + gameWindow = serviceLocator->getGraphicService()->GetGameWindow(); } -void GameService::initializeVariables() +void GameService::Destroy() { - game_window = service_locator->getGraphicService()->getGameWindow(); } -void GameService::destroy() -{ -} -void GameService::update() + +void GameService::Update() { - service_locator->update(); - service_locator->getEventService()->update(); - service_locator->update(); + + serviceLocator->Update(); + + serviceLocator->getEventService()->ProcessEvents(); + + serviceLocator->Update(); + + //updates the game logic and states + } -void GameService::render() +void GameService::Render() { + gameWindow->clear(serviceLocator->getGraphicService()->getWindowColor()); + serviceLocator->Render(); + gameWindow->display(); - game_window->clear(service_locator->getGraphicService()->getWindowColor()); - service_locator->render(); - game_window->display(); + //Render things on screen } -bool GameService::isRunning() +bool GameService::IsGameRunning() { - return service_locator->getGraphicService()->isGameWindowOpen(); + + return serviceLocator->getGraphicService()->isGameWindowOpen(); } diff --git a/Space-Invaders/Source/GraphicService.cpp b/Space-Invaders/Source/GraphicService.cpp index 26f176573..5b1610bc1 100644 --- a/Space-Invaders/Source/GraphicService.cpp +++ b/Space-Invaders/Source/GraphicService.cpp @@ -1,83 +1,65 @@ -#include "../Header/GraphicService.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\GraphicService.h" GraphicService::GraphicService() { - game_window = nullptr; - video_mode = nullptr; - + videoMode = nullptr; + gameWindow = nullptr; } GraphicService::~GraphicService() { - - OnDestroy(); - + onDestroy(); } -void GraphicService::initialize() +void GraphicService::Initialize() { - game_window = createGameWindow(); - + gameWindow = CreateGameWindow(); + } -sf::RenderWindow* GraphicService::createGameWindow() +sf::RenderWindow* GraphicService::CreateGameWindow() { setVideoMode(); - return new sf::RenderWindow(*video_mode, game_window_title); + return new sf::RenderWindow(*videoMode, gameWindowTitle); + } void GraphicService::setVideoMode() { - video_mode = new sf::VideoMode(game_window_width, game_window_height, - sf::VideoMode::getDesktopMode().bitsPerPixel); + videoMode = new sf::VideoMode(gameWindowWidth, gameWindowHeight, sf::VideoMode::getDesktopMode().bitsPerPixel); // Allocates and sets the video mode } - - - - - - - - -void GraphicService::OnDestroy() +void GraphicService::onDestroy() { - - delete(video_mode); - delete(game_window); - - + delete(videoMode); + delete(gameWindow); + } - - - - - -void GraphicService::update() +void GraphicService::Update() { } -void GraphicService::render() +void GraphicService::Render() { } bool GraphicService::isGameWindowOpen() { - return game_window->isOpen(); + return gameWindow->isOpen(); } -sf::RenderWindow* GraphicService::getGameWindow() +sf::RenderWindow* GraphicService::GetGameWindow() { - return game_window; + return gameWindow; } sf::Color GraphicService::getWindowColor() { - return window_color; + return windowColor; } diff --git a/Space-Invaders/Source/ServiceLocator.cpp b/Space-Invaders/Source/ServiceLocator.cpp index c48ca4e0a..09cc36700 100644 --- a/Space-Invaders/Source/ServiceLocator.cpp +++ b/Space-Invaders/Source/ServiceLocator.cpp @@ -1,51 +1,65 @@ -#include "../Header/ServiceLocator.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\ServiceLocator.h" ServiceLocator::ServiceLocator() { - graphic_service = nullptr; - event_service = nullptr; - createServices(); + graphicService = nullptr; + eventService = nullptr; + CreateServices(); } + + ServiceLocator::~ServiceLocator() { - clearAllServices(); + ClearAllServices(); + } -void ServiceLocator::createServices() +void ServiceLocator::CreateServices() { - graphic_service = new GraphicService(); - event_service = new EventService(); + graphicService = new GraphicService(); + eventService = new EventService(); + } -void ServiceLocator::clearAllServices() +void ServiceLocator::ClearAllServices() { - delete(graphic_service); - delete(event_service); + delete(graphicService); + graphicService = nullptr; + delete(eventService); + eventService = nullptr; + } -ServiceLocator* ServiceLocator::getInstance() +ServiceLocator* ServiceLocator::GetInstance() { static ServiceLocator instance; - return &instance; + return &instance; // Return address of the instance +} + +void ServiceLocator::Initialize() +{ + graphicService->Initialize(); + eventService->Initialize(); + } -void ServiceLocator::initialize() +void ServiceLocator::Update() { - graphic_service->initialize(); - event_service->initialize(); + graphicService->Update(); + eventService->Update(); } -void ServiceLocator::update() +void ServiceLocator::Render() { - graphic_service->update(); - event_service->update(); + graphicService->Render(); } -void ServiceLocator::render() +GraphicService* ServiceLocator::getGraphicService() { - graphic_service->render(); - //no event service because nothing to render + return graphicService; } -GraphicService* ServiceLocator::getGraphicService() { return graphic_service; } -EventService* ServiceLocator::getEventService() { return event_service; } +EventService* ServiceLocator::getEventService() +{ + return eventService; +} diff --git a/Space-Invaders/Space-Invaders.vcxproj b/Space-Invaders/Space-Invaders.vcxproj index b047c8a6b..81442bff0 100644 --- a/Space-Invaders/Space-Invaders.vcxproj +++ b/Space-Invaders/Space-Invaders.vcxproj @@ -132,17 +132,17 @@ - - - + + + - + diff --git a/Space-Invaders/Space-Invaders.vcxproj.filters b/Space-Invaders/Space-Invaders.vcxproj.filters index b97253efe..63fa92ea5 100644 --- a/Space-Invaders/Space-Invaders.vcxproj.filters +++ b/Space-Invaders/Space-Invaders.vcxproj.filters @@ -21,7 +21,7 @@ Source Files - + Source Files diff --git a/Space-Invaders/main.cpp b/Space-Invaders/main.cpp index a13024f84..89ab96c67 100644 --- a/Space-Invaders/main.cpp +++ b/Space-Invaders/main.cpp @@ -1,7 +1,9 @@ #include #include - #include "D:\Outscal\Space-Invaders\Space-Invaders\Header\GameService.h" + + + /* class Player { @@ -90,16 +92,14 @@ int main() int main() { + GameService* gameService = new GameService(); + gameService->Ignite(); - GameService* game_service = new GameService(); - - game_service->ignite(); - - while (game_service->isRunning()) + while (gameService->IsGameRunning()) { - game_service->update(); - game_service->render(); + gameService->Update(); + gameService->Render(); } - - + + return 0; } \ No newline at end of file From ce059c2e51403602a16013f20b713d7ffe3ae382 Mon Sep 17 00:00:00 2001 From: meteoralpha23 Date: Sat, 10 Aug 2024 20:45:57 +0530 Subject: [PATCH 21/28] 1 --- Space-Invaders/Header/PlayerService.h | 36 +++++++++++++++++++++++++ Space-Invaders/Source/PlayerService.cpp | 0 2 files changed, 36 insertions(+) create mode 100644 Space-Invaders/Header/PlayerService.h create mode 100644 Space-Invaders/Source/PlayerService.cpp diff --git a/Space-Invaders/Header/PlayerService.h b/Space-Invaders/Header/PlayerService.h new file mode 100644 index 000000000..598bc4228 --- /dev/null +++ b/Space-Invaders/Header/PlayerService.h @@ -0,0 +1,36 @@ +#pragma once + +#include + +class PlayerService +{ +private: + int health = 3; + sf::Vector2f position = sf::Vector2f(200.0f, 100.0f); + int movement_speed = 5; + int player_score = 0; + + const sf::String player_texture_path = "assets / textures / player_ship.png"; + + sf::Texture player_texture; + sf::Sprite player_sprite; + + sf::RenderWindow* game_window; + + void initializePlayerSprite(); + void processPlayerInput(); + +public: + PlayerService(); + ~PlayerService(); + + void initialize(); + void update(); + void render(); + + void move(float offsetX); + int getMoveSpeed(); + sf::Vector2f getPlayerPosition(); + + +}; \ No newline at end of file diff --git a/Space-Invaders/Source/PlayerService.cpp b/Space-Invaders/Source/PlayerService.cpp new file mode 100644 index 000000000..e69de29bb From 2fb4914cde28ddc28accc3de622c6e470847721d Mon Sep 17 00:00:00 2001 From: meteoralpha23 Date: Sat, 10 Aug 2024 20:56:31 +0530 Subject: [PATCH 22/28] 1 --- Space-Invaders/Header/EventService.h | 3 ++ Space-Invaders/Header/ServiceLocator.h | 3 ++ Space-Invaders/Source/EventService.cpp | 12 +++++ Space-Invaders/Source/PlayerService.cpp | 64 ++++++++++++++++++++++++ Space-Invaders/Source/ServiceLocator.cpp | 7 +++ 5 files changed, 89 insertions(+) diff --git a/Space-Invaders/Header/EventService.h b/Space-Invaders/Header/EventService.h index b68aa6148..344309d0a 100644 --- a/Space-Invaders/Header/EventService.h +++ b/Space-Invaders/Header/EventService.h @@ -24,4 +24,7 @@ class EventService void ProcessEvents(); bool PressedEscapeKey(); bool isKeyboardEvent(); + + bool pressedLeftKey(); + bool pressedRightKey(); }; \ No newline at end of file diff --git a/Space-Invaders/Header/ServiceLocator.h b/Space-Invaders/Header/ServiceLocator.h index fb036d34a..bdb7d12ee 100644 --- a/Space-Invaders/Header/ServiceLocator.h +++ b/Space-Invaders/Header/ServiceLocator.h @@ -1,6 +1,7 @@ #pragma once #include "D:\Outscal\Space-Invaders\Space-Invaders\Header\GraphicService.h" #include "D:\Outscal\Space-Invaders\Space-Invaders\Header\EventService.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\PlayerService.h" class ServiceLocator @@ -10,6 +11,7 @@ class ServiceLocator GraphicService *graphicService; EventService* eventService; + PlayerService* playerService; ServiceLocator(); ~ServiceLocator(); @@ -26,4 +28,5 @@ class ServiceLocator GraphicService* getGraphicService(); EventService* getEventService(); + PlayerService* getPlayerService(); }; diff --git a/Space-Invaders/Source/EventService.cpp b/Space-Invaders/Source/EventService.cpp index 55d1d7860..03aa636d3 100644 --- a/Space-Invaders/Source/EventService.cpp +++ b/Space-Invaders/Source/EventService.cpp @@ -48,6 +48,7 @@ bool EventService::isKeyboardEvent() { return gameEvent.type == sf::Event::KeyPressed; } + bool EventService::PressedEscapeKey() { return gameEvent.key.code == sf::Keyboard::Escape; @@ -61,6 +62,17 @@ bool EventService::isGameWindowOpen() bool EventService::gameWindowWasClosed() { return gameEvent.type == sf::Event::Closed; + +} + +bool EventService::pressedLeftKey() +{ + return gameEvent.key.code == sf::Keyboard::Left; +} + +bool EventService::pressedRightKey() +{ + return gameEvent.key.code == sf::Keyboard::Right; } diff --git a/Space-Invaders/Source/PlayerService.cpp b/Space-Invaders/Source/PlayerService.cpp index e69de29bb..f9a04929e 100644 --- a/Space-Invaders/Source/PlayerService.cpp +++ b/Space-Invaders/Source/PlayerService.cpp @@ -0,0 +1,64 @@ +#include "../Header/PlayerService.h" +#include "../Header/EventService.h" +#include "../Header/ServiceLocator.h" + +PlayerService::PlayerService() +{ + game_window = nullptr; +} + +PlayerService::~PlayerService() = default; + +//init +void PlayerService::initialize() +{ + game_window = ServiceLocator::getInstance()->getGraphicService()->getGameWindow(); + initializePlayerSprite(); +} + +//take our players input in update, then set the position. +//order is important here +void PlayerService::update() +{ + processPlayerInput(); + player_sprite.setPosition(getPlayerPosition()); +} + +void PlayerService::render() +{ + game_window->draw(player_sprite); +} + +void PlayerService::processPlayerInput() +{ + EventService* event_service = ServiceLocator::getInstance()->getEventService(); //get the event service object created in service locator + + if (event_service->isKeyboardEvent()) //check if a key has been pressed + { + if (event_service->pressedLeftKey()) + { + move(-1.0f * getMoveSpeed()); + } + + if (event_service->pressedRightKey()) + { + move(1.0f * getMoveSpeed()); + } + } +} + +void PlayerService::initializePlayerSprite() +{ + if (player_texture.loadFromFile(player_texture_path)) + { + player_sprite.setTexture(player_texture); + } +} + +void PlayerService::move(float offsetX) { + position.x += offsetX; +} + +//helper functions +sf::Vector2f PlayerService::getPlayerPosition() { return position; } +int PlayerService::getMoveSpeed() { return movement_speed; } diff --git a/Space-Invaders/Source/ServiceLocator.cpp b/Space-Invaders/Source/ServiceLocator.cpp index 09cc36700..42cfff87e 100644 --- a/Space-Invaders/Source/ServiceLocator.cpp +++ b/Space-Invaders/Source/ServiceLocator.cpp @@ -1,5 +1,8 @@ #include "D:\Outscal\Space-Invaders\Space-Invaders\Header\ServiceLocator.h" + + + ServiceLocator::ServiceLocator() { graphicService = nullptr; @@ -18,6 +21,7 @@ void ServiceLocator::CreateServices() { graphicService = new GraphicService(); eventService = new EventService(); + playerService = new PlayerService(); } @@ -27,6 +31,7 @@ void ServiceLocator::ClearAllServices() graphicService = nullptr; delete(eventService); eventService = nullptr; + delete(playerService); } @@ -40,6 +45,7 @@ void ServiceLocator::Initialize() { graphicService->Initialize(); eventService->Initialize(); + playerService->initialize(); } @@ -47,6 +53,7 @@ void ServiceLocator::Update() { graphicService->Update(); eventService->Update(); + playerService->update(); } void ServiceLocator::Render() From ddac1b6e34a89472c8b43e0c3185bc6741051486 Mon Sep 17 00:00:00 2001 From: meteoralpha23 Date: Sun, 11 Aug 2024 09:31:35 +0530 Subject: [PATCH 23/28] linking player service --- Space-Invaders/Header/PlayerService.h | 4 ++-- Space-Invaders/Source/PlayerService.cpp | 4 ++-- Space-Invaders/Source/ServiceLocator.cpp | 2 ++ Space-Invaders/Space-Invaders.vcxproj | 2 ++ Space-Invaders/Space-Invaders.vcxproj.filters | 6 ++++++ 5 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Space-Invaders/Header/PlayerService.h b/Space-Invaders/Header/PlayerService.h index 598bc4228..5f9ffc5de 100644 --- a/Space-Invaders/Header/PlayerService.h +++ b/Space-Invaders/Header/PlayerService.h @@ -10,7 +10,7 @@ class PlayerService int movement_speed = 5; int player_score = 0; - const sf::String player_texture_path = "assets / textures / player_ship.png"; + const sf::String player_texture_path = "assets/textures/player_ship.png"; sf::Texture player_texture; sf::Sprite player_sprite; @@ -32,5 +32,5 @@ class PlayerService int getMoveSpeed(); sf::Vector2f getPlayerPosition(); - + }; \ No newline at end of file diff --git a/Space-Invaders/Source/PlayerService.cpp b/Space-Invaders/Source/PlayerService.cpp index f9a04929e..64a431ae9 100644 --- a/Space-Invaders/Source/PlayerService.cpp +++ b/Space-Invaders/Source/PlayerService.cpp @@ -12,7 +12,7 @@ PlayerService::~PlayerService() = default; //init void PlayerService::initialize() { - game_window = ServiceLocator::getInstance()->getGraphicService()->getGameWindow(); + game_window = ServiceLocator::GetInstance()->getGraphicService()->GetGameWindow(); initializePlayerSprite(); } @@ -31,7 +31,7 @@ void PlayerService::render() void PlayerService::processPlayerInput() { - EventService* event_service = ServiceLocator::getInstance()->getEventService(); //get the event service object created in service locator + EventService* event_service = ServiceLocator::GetInstance()->getEventService(); //get the event service object created in service locator if (event_service->isKeyboardEvent()) //check if a key has been pressed { diff --git a/Space-Invaders/Source/ServiceLocator.cpp b/Space-Invaders/Source/ServiceLocator.cpp index 42cfff87e..93e721e33 100644 --- a/Space-Invaders/Source/ServiceLocator.cpp +++ b/Space-Invaders/Source/ServiceLocator.cpp @@ -7,6 +7,7 @@ ServiceLocator::ServiceLocator() { graphicService = nullptr; eventService = nullptr; + playerService = nullptr; CreateServices(); } @@ -59,6 +60,7 @@ void ServiceLocator::Update() void ServiceLocator::Render() { graphicService->Render(); + playerService->render(); } GraphicService* ServiceLocator::getGraphicService() diff --git a/Space-Invaders/Space-Invaders.vcxproj b/Space-Invaders/Space-Invaders.vcxproj index 81442bff0..57a8fd3d2 100644 --- a/Space-Invaders/Space-Invaders.vcxproj +++ b/Space-Invaders/Space-Invaders.vcxproj @@ -136,11 +136,13 @@ + + diff --git a/Space-Invaders/Space-Invaders.vcxproj.filters b/Space-Invaders/Space-Invaders.vcxproj.filters index 63fa92ea5..0d160b27c 100644 --- a/Space-Invaders/Space-Invaders.vcxproj.filters +++ b/Space-Invaders/Space-Invaders.vcxproj.filters @@ -30,6 +30,9 @@ Source Files + + Source Files + @@ -44,5 +47,8 @@ Header Files + + Header Files + \ No newline at end of file From 6491ed92c575e4da25b32cdfbc64e79959911cc2 Mon Sep 17 00:00:00 2001 From: meteoralpha23 Date: Sun, 11 Aug 2024 20:49:44 +0530 Subject: [PATCH 24/28] Delta Time --- Space-Invaders/Header/PlayerService.h | 7 +++- Space-Invaders/Header/ServiceLocator.h | 6 ++- Space-Invaders/Header/TimeService.h | 31 ++++++++++++++ Space-Invaders/Source/PlayerService.cpp | 18 +++++++-- Space-Invaders/Source/ServiceLocator.cpp | 16 ++++++++ Space-Invaders/Source/TimeService.cpp | 40 +++++++++++++++++++ Space-Invaders/Space-Invaders.vcxproj | 2 + Space-Invaders/Space-Invaders.vcxproj.filters | 6 +++ 8 files changed, 120 insertions(+), 6 deletions(-) create mode 100644 Space-Invaders/Header/TimeService.h create mode 100644 Space-Invaders/Source/TimeService.cpp diff --git a/Space-Invaders/Header/PlayerService.h b/Space-Invaders/Header/PlayerService.h index 5f9ffc5de..27d69dcd6 100644 --- a/Space-Invaders/Header/PlayerService.h +++ b/Space-Invaders/Header/PlayerService.h @@ -6,8 +6,8 @@ class PlayerService { private: int health = 3; - sf::Vector2f position = sf::Vector2f(200.0f, 100.0f); - int movement_speed = 5; + sf::Vector2f position = sf::Vector2f(500.0f, 400.0f); + float movement_speed = 300.0f; int player_score = 0; const sf::String player_texture_path = "assets/textures/player_ship.png"; @@ -20,6 +20,9 @@ class PlayerService void initializePlayerSprite(); void processPlayerInput(); + void moveLeft(); + void moveRight(); + public: PlayerService(); ~PlayerService(); diff --git a/Space-Invaders/Header/ServiceLocator.h b/Space-Invaders/Header/ServiceLocator.h index bdb7d12ee..74d36af1d 100644 --- a/Space-Invaders/Header/ServiceLocator.h +++ b/Space-Invaders/Header/ServiceLocator.h @@ -2,7 +2,7 @@ #include "D:\Outscal\Space-Invaders\Space-Invaders\Header\GraphicService.h" #include "D:\Outscal\Space-Invaders\Space-Invaders\Header\EventService.h" #include "D:\Outscal\Space-Invaders\Space-Invaders\Header\PlayerService.h" - +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\TimeService.h" class ServiceLocator { @@ -12,6 +12,7 @@ class ServiceLocator GraphicService *graphicService; EventService* eventService; PlayerService* playerService; + TimeService* timeService; ServiceLocator(); ~ServiceLocator(); @@ -29,4 +30,7 @@ class ServiceLocator GraphicService* getGraphicService(); EventService* getEventService(); PlayerService* getPlayerService(); + TimeService* getTimeService(); + + }; diff --git a/Space-Invaders/Header/TimeService.h b/Space-Invaders/Header/TimeService.h new file mode 100644 index 000000000..7f76ae983 --- /dev/null +++ b/Space-Invaders/Header/TimeService.h @@ -0,0 +1,31 @@ +#pragma once +#include + +/* + // The TimeService class helps keep track of time in game and calculate delta time. + // Utilizes the library to calculate delta time. + */ +class TimeService +{ +private: + + // A point in time which indicates the starting time of previous frame. + std::chrono::time_point previous_time; + // No need to worry about the syntax of this variable too much right now + // It'll be explained in detail at a later time. + + float delta_time; //to store the detla time + + void updateDeltaTime(); // method to update time + float calculateDeltaTime(); //calculate time by subtracting the previous time from the current time + void updatePreviousTime(); // finally update the current time to be previous time + +public: + + //lifecycle methods + void initialize(); + void update(); + + //getter + float getDeltaTime(); +}; \ No newline at end of file diff --git a/Space-Invaders/Source/PlayerService.cpp b/Space-Invaders/Source/PlayerService.cpp index 64a431ae9..1388dcc3a 100644 --- a/Space-Invaders/Source/PlayerService.cpp +++ b/Space-Invaders/Source/PlayerService.cpp @@ -37,16 +37,17 @@ void PlayerService::processPlayerInput() { if (event_service->pressedLeftKey()) { - move(-1.0f * getMoveSpeed()); + moveLeft(); } if (event_service->pressedRightKey()) { - move(1.0f * getMoveSpeed()); + moveRight(); } } } + void PlayerService::initializePlayerSprite() { if (player_texture.loadFromFile(player_texture_path)) @@ -56,9 +57,20 @@ void PlayerService::initializePlayerSprite() } void PlayerService::move(float offsetX) { - position.x += offsetX; + position.x += offsetX*ServiceLocator::GetInstance()->getTimeService()->getDeltaTime(); } //helper functions sf::Vector2f PlayerService::getPlayerPosition() { return position; } int PlayerService::getMoveSpeed() { return movement_speed; } + + +void PlayerService::moveLeft() +{ + position.x -= movement_speed * ServiceLocator::GetInstance()->getTimeService()->getDeltaTime(); +} + +void PlayerService::moveRight() +{ + position.x += movement_speed * ServiceLocator::GetInstance()->getTimeService()->getDeltaTime(); +} diff --git a/Space-Invaders/Source/ServiceLocator.cpp b/Space-Invaders/Source/ServiceLocator.cpp index 93e721e33..a75b3808c 100644 --- a/Space-Invaders/Source/ServiceLocator.cpp +++ b/Space-Invaders/Source/ServiceLocator.cpp @@ -8,6 +8,7 @@ ServiceLocator::ServiceLocator() graphicService = nullptr; eventService = nullptr; playerService = nullptr; + timeService = nullptr; CreateServices(); } @@ -23,6 +24,7 @@ void ServiceLocator::CreateServices() graphicService = new GraphicService(); eventService = new EventService(); playerService = new PlayerService(); + timeService = new TimeService(); } @@ -33,6 +35,7 @@ void ServiceLocator::ClearAllServices() delete(eventService); eventService = nullptr; delete(playerService); + delete(timeService); } @@ -47,6 +50,7 @@ void ServiceLocator::Initialize() graphicService->Initialize(); eventService->Initialize(); playerService->initialize(); + timeService->initialize(); } @@ -55,6 +59,7 @@ void ServiceLocator::Update() graphicService->Update(); eventService->Update(); playerService->update(); + timeService->update(); } void ServiceLocator::Render() @@ -72,3 +77,14 @@ EventService* ServiceLocator::getEventService() { return eventService; } + +PlayerService* ServiceLocator::getPlayerService() +{ + return playerService; +} + +TimeService* ServiceLocator::getTimeService() +{ + return timeService; +} + diff --git a/Space-Invaders/Source/TimeService.cpp b/Space-Invaders/Source/TimeService.cpp new file mode 100644 index 000000000..a787f10af --- /dev/null +++ b/Space-Invaders/Source/TimeService.cpp @@ -0,0 +1,40 @@ +#include "../Header/TimeService.h" + + + +void TimeService::initialize() +{ + + previous_time = std::chrono::steady_clock::now(); + delta_time = 0; +} + +void TimeService::update() +{ + updateDeltaTime(); + + +} + +float TimeService::getDeltaTime() +{ + return delta_time; +} + +void TimeService::updateDeltaTime() +{ + delta_time = calculateDeltaTime(); + updatePreviousTime(); +} +float TimeService::calculateDeltaTime() +{ + int delta = std::chrono::duration_cast(std::chrono::steady_clock::now() - previous_time).count(); + + return static_cast(delta) / static_cast(1000000); +} + +void TimeService::updatePreviousTime() +{ + previous_time = std::chrono::steady_clock::now(); +} + diff --git a/Space-Invaders/Space-Invaders.vcxproj b/Space-Invaders/Space-Invaders.vcxproj index 57a8fd3d2..3d0e87ba2 100644 --- a/Space-Invaders/Space-Invaders.vcxproj +++ b/Space-Invaders/Space-Invaders.vcxproj @@ -138,6 +138,7 @@ + @@ -145,6 +146,7 @@ + diff --git a/Space-Invaders/Space-Invaders.vcxproj.filters b/Space-Invaders/Space-Invaders.vcxproj.filters index 0d160b27c..7713806a2 100644 --- a/Space-Invaders/Space-Invaders.vcxproj.filters +++ b/Space-Invaders/Space-Invaders.vcxproj.filters @@ -33,6 +33,9 @@ Source Files + + Source Files + @@ -50,5 +53,8 @@ Header Files + + Header Files + \ No newline at end of file From 5db0310469e0253971d0d1b3f0c82f3e30822150 Mon Sep 17 00:00:00 2001 From: meteoralpha23 Date: Sun, 11 Aug 2024 20:52:37 +0530 Subject: [PATCH 25/28] fixed --- Space-Invaders/Header/GraphicService.h | 2 ++ Space-Invaders/Source/GraphicService.cpp | 1 + 2 files changed, 3 insertions(+) diff --git a/Space-Invaders/Header/GraphicService.h b/Space-Invaders/Header/GraphicService.h index cc99abe63..a4639b953 100644 --- a/Space-Invaders/Header/GraphicService.h +++ b/Space-Invaders/Header/GraphicService.h @@ -12,6 +12,8 @@ class GraphicService const sf::Color windowColor = sf::Color::Blue; + const int frameRate=60; + sf::VideoMode* videoMode; sf::RenderWindow* gameWindow; void setVideoMode(); // Method for setting our video mode diff --git a/Space-Invaders/Source/GraphicService.cpp b/Space-Invaders/Source/GraphicService.cpp index 5b1610bc1..b50c32911 100644 --- a/Space-Invaders/Source/GraphicService.cpp +++ b/Space-Invaders/Source/GraphicService.cpp @@ -15,6 +15,7 @@ GraphicService::~GraphicService() void GraphicService::Initialize() { gameWindow = CreateGameWindow(); + gameWindow->setFramerateLimit(frameRate); } From 22348ffd8ed492f08253556ce6a16c9a64f296f9 Mon Sep 17 00:00:00 2001 From: meteoralpha23 Date: Tue, 13 Aug 2024 20:10:37 +0530 Subject: [PATCH 26/28] Enums --- Space-Invaders/Header/PlayerModel.h | 41 +++++++++++++ Space-Invaders/Header/PlayerView.h | 1 + Space-Invaders/Source/PlayerModel.cpp | 59 +++++++++++++++++++ Space-Invaders/Space-Invaders.vcxproj | 3 + Space-Invaders/Space-Invaders.vcxproj.filters | 9 +++ 5 files changed, 113 insertions(+) create mode 100644 Space-Invaders/Header/PlayerModel.h create mode 100644 Space-Invaders/Header/PlayerView.h create mode 100644 Space-Invaders/Source/PlayerModel.cpp diff --git a/Space-Invaders/Header/PlayerModel.h b/Space-Invaders/Header/PlayerModel.h new file mode 100644 index 000000000..f90e19a93 --- /dev/null +++ b/Space-Invaders/Header/PlayerModel.h @@ -0,0 +1,41 @@ +#pragma once +#include +enum class PlayerState { + ALIVE, + DEAD, +}; +class PlayerModel +{ +private: + const sf::Vector2f initialPlayerPosition = sf::Vector2f(500.0f, 500.0f); //new Var + sf::Vector2f playerPosition; + bool playerAlive; + int playerScore = 0; + PlayerState playerState; + + + +public: + + + const sf::Vector2f left_most_position = sf::Vector2f(50.f, 0.f); + const sf::Vector2f right_most_position = sf::Vector2f(700.f, 0.f); + const float playerMovementSpeed = 200.0f; + PlayerModel(); + ~PlayerModel(); + + void Initialize(); + void Reset(); + + + //getters and setters + sf::Vector2f getPlayerPosition(); + sf::Vector2f setPlayerPosition(sf::Vector2f position); + + int getPlayerScore(); + void setPlayerScore(int score); + PlayerState getPlayerState(); + void setPlayerState(PlayerState state); + + +}; \ No newline at end of file diff --git a/Space-Invaders/Header/PlayerView.h b/Space-Invaders/Header/PlayerView.h new file mode 100644 index 000000000..6f70f09be --- /dev/null +++ b/Space-Invaders/Header/PlayerView.h @@ -0,0 +1 @@ +#pragma once diff --git a/Space-Invaders/Source/PlayerModel.cpp b/Space-Invaders/Source/PlayerModel.cpp new file mode 100644 index 000000000..23fee4123 --- /dev/null +++ b/Space-Invaders/Source/PlayerModel.cpp @@ -0,0 +1,59 @@ +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\PlayerModel.h" + +PlayerModel::PlayerModel() +{ + +} + +PlayerModel::~PlayerModel() +{ +} + +void PlayerModel::Initialize() +{ +} + +void PlayerModel::Reset() +{ + + playerAlive = true; + playerPosition = initialPlayerPosition; + playerScore = 0; +} + +sf::Vector2f PlayerModel::getPlayerPosition() +{ + return playerPosition; +} + +sf::Vector2f PlayerModel::setPlayerPosition(sf::Vector2f position) +{ + playerPosition = position; +} + + + + +int PlayerModel::getPlayerScore() +{ + return playerScore; +} + +void PlayerModel::setPlayerScore(int score) +{ + playerScore = score; +} + +PlayerState PlayerModel::getPlayerState() +{ + return playerState; +} + +void PlayerModel::setPlayerState(PlayerState state) +{ + playerState = state; +} + + + + diff --git a/Space-Invaders/Space-Invaders.vcxproj b/Space-Invaders/Space-Invaders.vcxproj index 3d0e87ba2..f4612a0e7 100644 --- a/Space-Invaders/Space-Invaders.vcxproj +++ b/Space-Invaders/Space-Invaders.vcxproj @@ -136,6 +136,7 @@ + @@ -143,7 +144,9 @@ + + diff --git a/Space-Invaders/Space-Invaders.vcxproj.filters b/Space-Invaders/Space-Invaders.vcxproj.filters index 7713806a2..0975274b2 100644 --- a/Space-Invaders/Space-Invaders.vcxproj.filters +++ b/Space-Invaders/Space-Invaders.vcxproj.filters @@ -36,6 +36,9 @@ Source Files + + Source Files + @@ -56,5 +59,11 @@ Header Files + + Header Files + + + Header Files + \ No newline at end of file From 1622ac8aef0d6700e17fbe70a681e599a8c88e1d Mon Sep 17 00:00:00 2001 From: meteoralpha23 Date: Tue, 13 Aug 2024 21:15:18 +0530 Subject: [PATCH 27/28] Implementing MVC --- Space-Invaders/Header/PlayerController.h | 29 ++++++++ Space-Invaders/Header/PlayerService.h | 37 ++-------- Space-Invaders/Header/PlayerView.h | 28 +++++++ Space-Invaders/Source/PlayerController.cpp | 74 +++++++++++++++++++ Space-Invaders/Source/PlayerService.cpp | 64 ++-------------- Space-Invaders/Source/PlayerView.cpp | 46 ++++++++++++ Space-Invaders/Space-Invaders.vcxproj | 3 + Space-Invaders/Space-Invaders.vcxproj.filters | 9 +++ 8 files changed, 204 insertions(+), 86 deletions(-) create mode 100644 Space-Invaders/Header/PlayerController.h create mode 100644 Space-Invaders/Source/PlayerController.cpp create mode 100644 Space-Invaders/Source/PlayerView.cpp diff --git a/Space-Invaders/Header/PlayerController.h b/Space-Invaders/Header/PlayerController.h new file mode 100644 index 000000000..69e3da5a3 --- /dev/null +++ b/Space-Invaders/Header/PlayerController.h @@ -0,0 +1,29 @@ +#pragma once +#include +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\PlayerModel.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\PlayerView.h" + +class PlayerController +{ +private: + PlayerModel* playerModel; + PlayerView* playerView; + + void processPlayerInput(); + + + void moveLeft(); + void moveRight(); + +public: + PlayerController(); + ~PlayerController(); + + void initialize(); + void update(); + void render(); + + sf::Vector2f getPlayerPosition(); + + +}; \ No newline at end of file diff --git a/Space-Invaders/Header/PlayerService.h b/Space-Invaders/Header/PlayerService.h index 27d69dcd6..0bd081622 100644 --- a/Space-Invaders/Header/PlayerService.h +++ b/Space-Invaders/Header/PlayerService.h @@ -1,39 +1,16 @@ #pragma once - -#include +#include "../../Header/PlayerController.h" class PlayerService { private: - int health = 3; - sf::Vector2f position = sf::Vector2f(500.0f, 400.0f); - float movement_speed = 300.0f; - int player_score = 0; - - const sf::String player_texture_path = "assets/textures/player_ship.png"; - - sf::Texture player_texture; - sf::Sprite player_sprite; - - sf::RenderWindow* game_window; - - void initializePlayerSprite(); - void processPlayerInput(); - - void moveLeft(); - void moveRight(); + PlayerController* playerController; public: - PlayerService(); - ~PlayerService(); - - void initialize(); - void update(); - void render(); - - void move(float offsetX); - int getMoveSpeed(); - sf::Vector2f getPlayerPosition(); - + PlayerService(); + ~PlayerService(); + void initialize(); + void update(); + void render(); }; \ No newline at end of file diff --git a/Space-Invaders/Header/PlayerView.h b/Space-Invaders/Header/PlayerView.h index 6f70f09be..56c65b8c4 100644 --- a/Space-Invaders/Header/PlayerView.h +++ b/Space-Invaders/Header/PlayerView.h @@ -1 +1,29 @@ #pragma once +#include +#include "../../Header/PlayerController.h" +class PlayerView { +private: + const sf::String player_texture_path = "assets/textures/player_ship.png"; + const float player_sprite_width = 60.f; + const float player_sprite_height = 60.f; + PlayerController* player_controller; + + sf::RenderWindow* game_window; + + sf::Texture player_texture; + sf::Sprite player_sprite; + + + void initializePlayerSprite(); + void scaleSprite(); + +public: + PlayerView(); + ~PlayerView(); + + void Initialise(PlayerController* controller); + void Update(); + void Render(); + + +}; \ No newline at end of file diff --git a/Space-Invaders/Source/PlayerController.cpp b/Space-Invaders/Source/PlayerController.cpp new file mode 100644 index 000000000..22704117b --- /dev/null +++ b/Space-Invaders/Source/PlayerController.cpp @@ -0,0 +1,74 @@ +#include "../../Header/PlayerController.h" +#include "../../Header/EventService.h" +#include "../../Header/ServiceLocator.h" +#include +PlayerController::PlayerController() +{ + playerModel = new PlayerModel(); + playerView = new PlayerView(); +} + +PlayerController::~PlayerController() +{ + delete (playerView); + delete (playerModel); +} +void PlayerController::initialize() +{ + playerModel->Initialize(); + playerView->Initialise(this); +} +void PlayerController::update() +{ + processPlayerInput(); + playerView->Update(); +} +void PlayerController::render() +{ + playerView->Render(); +} + + +sf::Vector2f PlayerController::getPlayerPosition() +{ + return playerModel->getPlayerPosition(); +} +void PlayerController::processPlayerInput() +{ + if ((sf::Keyboard::isKeyPressed(sf::Keyboard::Left))) + { + moveLeft(); + } + // we will move this to event service at a later time + if ((sf::Keyboard::isKeyPressed(sf::Keyboard::Right))) + { + moveRight(); + } +} + +void PlayerController::moveLeft() +{ + sf::Vector2f currentPosition = playerModel->getPlayerPosition(); + currentPosition.x -= playerModel->playerMovementSpeed * ServiceLocator::GetInstance()->getTimeService()->getDeltaTime(); + + currentPosition.x = std::max(currentPosition.x, playerModel->left_most_position.x); + playerModel->setPlayerPosition(currentPosition); +} + +void PlayerController::moveRight() +{ + sf::Vector2f currentPosition = playerModel->getPlayerPosition(); + currentPosition.x += playerModel->playerMovementSpeed* ServiceLocator::GetInstance()->getTimeService()->getDeltaTime(); + + currentPosition.x = std::min(currentPosition.x, playerModel->right_most_position.x); + playerModel->setPlayerPosition(currentPosition); +} + + + + + + + + + diff --git a/Space-Invaders/Source/PlayerService.cpp b/Space-Invaders/Source/PlayerService.cpp index 1388dcc3a..a006c0755 100644 --- a/Space-Invaders/Source/PlayerService.cpp +++ b/Space-Invaders/Source/PlayerService.cpp @@ -4,73 +4,25 @@ PlayerService::PlayerService() { - game_window = nullptr; + playerController = new PlayerController(); } -PlayerService::~PlayerService() = default; +PlayerService::~PlayerService() +{ + delete (playerController); +} -//init void PlayerService::initialize() { - game_window = ServiceLocator::GetInstance()->getGraphicService()->GetGameWindow(); - initializePlayerSprite(); + playerController->initialize(); } -//take our players input in update, then set the position. -//order is important here void PlayerService::update() { - processPlayerInput(); - player_sprite.setPosition(getPlayerPosition()); + playerController->update(); } void PlayerService::render() { - game_window->draw(player_sprite); -} - -void PlayerService::processPlayerInput() -{ - EventService* event_service = ServiceLocator::GetInstance()->getEventService(); //get the event service object created in service locator - - if (event_service->isKeyboardEvent()) //check if a key has been pressed - { - if (event_service->pressedLeftKey()) - { - moveLeft(); - } - - if (event_service->pressedRightKey()) - { - moveRight(); - } - } -} - - -void PlayerService::initializePlayerSprite() -{ - if (player_texture.loadFromFile(player_texture_path)) - { - player_sprite.setTexture(player_texture); - } -} - -void PlayerService::move(float offsetX) { - position.x += offsetX*ServiceLocator::GetInstance()->getTimeService()->getDeltaTime(); -} - -//helper functions -sf::Vector2f PlayerService::getPlayerPosition() { return position; } -int PlayerService::getMoveSpeed() { return movement_speed; } - - -void PlayerService::moveLeft() -{ - position.x -= movement_speed * ServiceLocator::GetInstance()->getTimeService()->getDeltaTime(); -} - -void PlayerService::moveRight() -{ - position.x += movement_speed * ServiceLocator::GetInstance()->getTimeService()->getDeltaTime(); + playerController->render(); } diff --git a/Space-Invaders/Source/PlayerView.cpp b/Space-Invaders/Source/PlayerView.cpp new file mode 100644 index 000000000..4839e56a4 --- /dev/null +++ b/Space-Invaders/Source/PlayerView.cpp @@ -0,0 +1,46 @@ +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\PlayerView.h" +#include "../Header/ServiceLocator.h" +PlayerView::PlayerView() +{ +} + +PlayerView::~PlayerView() +{ +} + +void PlayerView::Initialise(PlayerController* controller) +{ + player_controller = controller; + game_window = ServiceLocator::GetInstance()->getGraphicService()->GetGameWindow(); + initializePlayerSprite(); +} +void PlayerView::initializePlayerSprite() +{ + if (player_texture.loadFromFile(player_texture_path)) + { + player_sprite.setTexture(player_texture); + scaleSprite(); + } +} + +void PlayerView::scaleSprite() +{ + player_sprite.setScale( + //Here we find the factor to scale our sprites with. Ignore the static_cast for now, we will discuss it later. + static_cast(player_sprite_width) / player_sprite.getTexture()->getSize().x, + static_cast(player_sprite_height) / player_sprite.getTexture()->getSize().y); +} + + + + + + +void PlayerView::Update() +{ +} + +void PlayerView::Render() +{ + game_window->draw(player_sprite); +} diff --git a/Space-Invaders/Space-Invaders.vcxproj b/Space-Invaders/Space-Invaders.vcxproj index f4612a0e7..1e246c00e 100644 --- a/Space-Invaders/Space-Invaders.vcxproj +++ b/Space-Invaders/Space-Invaders.vcxproj @@ -132,6 +132,8 @@ + + @@ -144,6 +146,7 @@ + diff --git a/Space-Invaders/Space-Invaders.vcxproj.filters b/Space-Invaders/Space-Invaders.vcxproj.filters index 0975274b2..18ffb2ba0 100644 --- a/Space-Invaders/Space-Invaders.vcxproj.filters +++ b/Space-Invaders/Space-Invaders.vcxproj.filters @@ -39,6 +39,12 @@ Source Files + + Source Files + + + Source Files + @@ -65,5 +71,8 @@ Header Files + + Header Files + \ No newline at end of file From b6da3e7b4d2e2b3b8064913b625d6e92c7244ea1 Mon Sep 17 00:00:00 2001 From: meteoralpha23 Date: Sat, 17 Aug 2024 20:46:59 +0530 Subject: [PATCH 28/28] using forward Declaration --- .../Header/{ => Event}/EventService.h | 0 .../Header/{ => Global}/ServiceLocator.h | 8 ++--- .../Header/{ => Graphic}/GraphicService.h | 0 .../Header/{ => Main}/GameService.h | 2 +- .../Header/{ => Player}/PlayerController.h | 7 ++-- .../Header/{ => Player}/PlayerModel.h | 3 +- .../Header/{ => Player}/PlayerService.h | 4 ++- .../Header/{ => Player}/PlayerView.h | 5 ++- .../Header/{ => Time}/TimeService.h | 0 .../Source/{ => Event}/EventService.cpp | 6 ++-- .../servicelocator.cpp} | 2 +- .../Source/{ => Graphic}/GraphicService.cpp | 2 +- .../Source/{ => Main}/GameService.cpp | 6 ++-- .../Source/{ => Player}/PlayerController.cpp | 9 +++-- .../Source/{ => Player}/PlayerModel.cpp | 6 ++-- .../Source/{ => Player}/PlayerService.cpp | 7 ++-- .../Source/{ => Player}/PlayerView.cpp | 6 ++-- .../Source/{ => Time}/TimeService.cpp | 2 +- Space-Invaders/Space-Invaders.vcxproj | 36 +++++++++---------- Space-Invaders/Space-Invaders.vcxproj.filters | 36 +++++++++---------- Space-Invaders/main.cpp | 2 +- 21 files changed, 83 insertions(+), 66 deletions(-) rename Space-Invaders/Header/{ => Event}/EventService.h (100%) rename Space-Invaders/Header/{ => Global}/ServiceLocator.h (76%) rename Space-Invaders/Header/{ => Graphic}/GraphicService.h (100%) rename Space-Invaders/Header/{ => Main}/GameService.h (87%) rename Space-Invaders/Header/{ => Player}/PlayerController.h (61%) rename Space-Invaders/Header/{ => Player}/PlayerModel.h (93%) rename Space-Invaders/Header/{ => Player}/PlayerService.h (80%) rename Space-Invaders/Header/{ => Player}/PlayerView.h (87%) rename Space-Invaders/Header/{ => Time}/TimeService.h (100%) rename Space-Invaders/Source/{ => Event}/EventService.cpp (83%) rename Space-Invaders/Source/{ServiceLocator.cpp => Global/servicelocator.cpp} (94%) rename Space-Invaders/Source/{ => Graphic}/GraphicService.cpp (98%) rename Space-Invaders/Source/{ => Main}/GameService.cpp (85%) rename Space-Invaders/Source/{ => Player}/PlayerController.cpp (76%) rename Space-Invaders/Source/{ => Player}/PlayerModel.cpp (88%) rename Space-Invaders/Source/{ => Player}/PlayerService.cpp (50%) rename Space-Invaders/Source/{ => Player}/PlayerView.cpp (79%) rename Space-Invaders/Source/{ => Time}/TimeService.cpp (89%) diff --git a/Space-Invaders/Header/EventService.h b/Space-Invaders/Header/Event/EventService.h similarity index 100% rename from Space-Invaders/Header/EventService.h rename to Space-Invaders/Header/Event/EventService.h diff --git a/Space-Invaders/Header/ServiceLocator.h b/Space-Invaders/Header/Global/ServiceLocator.h similarity index 76% rename from Space-Invaders/Header/ServiceLocator.h rename to Space-Invaders/Header/Global/ServiceLocator.h index 74d36af1d..2f410acaf 100644 --- a/Space-Invaders/Header/ServiceLocator.h +++ b/Space-Invaders/Header/Global/ServiceLocator.h @@ -1,8 +1,8 @@ #pragma once -#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\GraphicService.h" -#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\EventService.h" -#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\PlayerService.h" -#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\TimeService.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Graphic\GraphicService.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Event\EventService.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Player\PlayerService.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Time\TimeService.h" class ServiceLocator { diff --git a/Space-Invaders/Header/GraphicService.h b/Space-Invaders/Header/Graphic/GraphicService.h similarity index 100% rename from Space-Invaders/Header/GraphicService.h rename to Space-Invaders/Header/Graphic/GraphicService.h diff --git a/Space-Invaders/Header/GameService.h b/Space-Invaders/Header/Main/GameService.h similarity index 87% rename from Space-Invaders/Header/GameService.h rename to Space-Invaders/Header/Main/GameService.h index 19a2db4ca..de033afcf 100644 --- a/Space-Invaders/Header/GameService.h +++ b/Space-Invaders/Header/Main/GameService.h @@ -1,7 +1,7 @@ #pragma once #include -#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\ServiceLocator.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Global\ServiceLocator.h" class GameService { private: diff --git a/Space-Invaders/Header/PlayerController.h b/Space-Invaders/Header/Player/PlayerController.h similarity index 61% rename from Space-Invaders/Header/PlayerController.h rename to Space-Invaders/Header/Player/PlayerController.h index 69e3da5a3..f31fa4b75 100644 --- a/Space-Invaders/Header/PlayerController.h +++ b/Space-Invaders/Header/Player/PlayerController.h @@ -1,8 +1,11 @@ #pragma once #include -#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\PlayerModel.h" -#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\PlayerView.h" +//#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\PlayerModel.h" +//#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\PlayerView.h" +enum class PlayerState; +class PlayerView; +class PlayerModel; class PlayerController { private: diff --git a/Space-Invaders/Header/PlayerModel.h b/Space-Invaders/Header/Player/PlayerModel.h similarity index 93% rename from Space-Invaders/Header/PlayerModel.h rename to Space-Invaders/Header/Player/PlayerModel.h index f90e19a93..c54a8f4fd 100644 --- a/Space-Invaders/Header/PlayerModel.h +++ b/Space-Invaders/Header/Player/PlayerModel.h @@ -30,7 +30,8 @@ class PlayerModel //getters and setters sf::Vector2f getPlayerPosition(); - sf::Vector2f setPlayerPosition(sf::Vector2f position); + void setPlayerPosition(sf::Vector2f position); + int getPlayerScore(); void setPlayerScore(int score); diff --git a/Space-Invaders/Header/PlayerService.h b/Space-Invaders/Header/Player/PlayerService.h similarity index 80% rename from Space-Invaders/Header/PlayerService.h rename to Space-Invaders/Header/Player/PlayerService.h index 0bd081622..82762b64f 100644 --- a/Space-Invaders/Header/PlayerService.h +++ b/Space-Invaders/Header/Player/PlayerService.h @@ -1,5 +1,7 @@ #pragma once -#include "../../Header/PlayerController.h" + + +class PlayerController; class PlayerService { diff --git a/Space-Invaders/Header/PlayerView.h b/Space-Invaders/Header/Player/PlayerView.h similarity index 87% rename from Space-Invaders/Header/PlayerView.h rename to Space-Invaders/Header/Player/PlayerView.h index 56c65b8c4..a6a51cd03 100644 --- a/Space-Invaders/Header/PlayerView.h +++ b/Space-Invaders/Header/Player/PlayerView.h @@ -1,6 +1,9 @@ #pragma once #include -#include "../../Header/PlayerController.h" +//#include "../../Header/Player/PlayerController.h" + +class PlayerController; + class PlayerView { private: const sf::String player_texture_path = "assets/textures/player_ship.png"; diff --git a/Space-Invaders/Header/TimeService.h b/Space-Invaders/Header/Time/TimeService.h similarity index 100% rename from Space-Invaders/Header/TimeService.h rename to Space-Invaders/Header/Time/TimeService.h diff --git a/Space-Invaders/Source/EventService.cpp b/Space-Invaders/Source/Event/EventService.cpp similarity index 83% rename from Space-Invaders/Source/EventService.cpp rename to Space-Invaders/Source/Event/EventService.cpp index 03aa636d3..ec53c383e 100644 --- a/Space-Invaders/Source/EventService.cpp +++ b/Space-Invaders/Source/Event/EventService.cpp @@ -1,6 +1,6 @@ -#include "../Header/EventService.h" -#include "../Header/GameService.h" -#include "../Header/GraphicService.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Event\EventService.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Main\GameService.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Graphic\GraphicService.h" EventService::EventService() diff --git a/Space-Invaders/Source/ServiceLocator.cpp b/Space-Invaders/Source/Global/servicelocator.cpp similarity index 94% rename from Space-Invaders/Source/ServiceLocator.cpp rename to Space-Invaders/Source/Global/servicelocator.cpp index a75b3808c..cd95664ac 100644 --- a/Space-Invaders/Source/ServiceLocator.cpp +++ b/Space-Invaders/Source/Global/servicelocator.cpp @@ -1,4 +1,4 @@ -#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\ServiceLocator.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Global\ServiceLocator.h" diff --git a/Space-Invaders/Source/GraphicService.cpp b/Space-Invaders/Source/Graphic/GraphicService.cpp similarity index 98% rename from Space-Invaders/Source/GraphicService.cpp rename to Space-Invaders/Source/Graphic/GraphicService.cpp index b50c32911..22de3fb1c 100644 --- a/Space-Invaders/Source/GraphicService.cpp +++ b/Space-Invaders/Source/Graphic/GraphicService.cpp @@ -1,4 +1,4 @@ -#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\GraphicService.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Graphic\GraphicService.h" GraphicService::GraphicService() diff --git a/Space-Invaders/Source/GameService.cpp b/Space-Invaders/Source/Main/GameService.cpp similarity index 85% rename from Space-Invaders/Source/GameService.cpp rename to Space-Invaders/Source/Main/GameService.cpp index 58ec3adc3..d0d3c7261 100644 --- a/Space-Invaders/Source/GameService.cpp +++ b/Space-Invaders/Source/Main/GameService.cpp @@ -1,6 +1,6 @@ -#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\GameService.h" -#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\GraphicService.h" -#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\EventService.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Main\GameService.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Graphic\GraphicService.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Event\EventService.h" diff --git a/Space-Invaders/Source/PlayerController.cpp b/Space-Invaders/Source/Player/PlayerController.cpp similarity index 76% rename from Space-Invaders/Source/PlayerController.cpp rename to Space-Invaders/Source/Player/PlayerController.cpp index 22704117b..768c9ed95 100644 --- a/Space-Invaders/Source/PlayerController.cpp +++ b/Space-Invaders/Source/Player/PlayerController.cpp @@ -1,7 +1,9 @@ -#include "../../Header/PlayerController.h" -#include "../../Header/EventService.h" -#include "../../Header/ServiceLocator.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Player\PlayerController.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Event\EventService.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Global\ServiceLocator.h" #include +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Player\PlayerModel.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Player\PlayerView.h" PlayerController::PlayerController() { playerModel = new PlayerModel(); @@ -35,6 +37,7 @@ sf::Vector2f PlayerController::getPlayerPosition() } void PlayerController::processPlayerInput() { + EventService* event_service = ServiceLocator::GetInstance()->getEventService(); if ((sf::Keyboard::isKeyPressed(sf::Keyboard::Left))) { moveLeft(); diff --git a/Space-Invaders/Source/PlayerModel.cpp b/Space-Invaders/Source/Player/PlayerModel.cpp similarity index 88% rename from Space-Invaders/Source/PlayerModel.cpp rename to Space-Invaders/Source/Player/PlayerModel.cpp index 23fee4123..cc84532b2 100644 --- a/Space-Invaders/Source/PlayerModel.cpp +++ b/Space-Invaders/Source/Player/PlayerModel.cpp @@ -1,8 +1,9 @@ -#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\PlayerModel.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Player\PlayerModel.h" PlayerModel::PlayerModel() { + } PlayerModel::~PlayerModel() @@ -11,6 +12,7 @@ PlayerModel::~PlayerModel() void PlayerModel::Initialize() { + Reset(); } void PlayerModel::Reset() @@ -26,7 +28,7 @@ sf::Vector2f PlayerModel::getPlayerPosition() return playerPosition; } -sf::Vector2f PlayerModel::setPlayerPosition(sf::Vector2f position) +void PlayerModel::setPlayerPosition(sf::Vector2f position) { playerPosition = position; } diff --git a/Space-Invaders/Source/PlayerService.cpp b/Space-Invaders/Source/Player/PlayerService.cpp similarity index 50% rename from Space-Invaders/Source/PlayerService.cpp rename to Space-Invaders/Source/Player/PlayerService.cpp index a006c0755..02dc75f73 100644 --- a/Space-Invaders/Source/PlayerService.cpp +++ b/Space-Invaders/Source/Player/PlayerService.cpp @@ -1,6 +1,7 @@ -#include "../Header/PlayerService.h" -#include "../Header/EventService.h" -#include "../Header/ServiceLocator.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Player\PlayerService.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Event\EventService.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Global\ServiceLocator.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Player\PlayerController.h" PlayerService::PlayerService() { diff --git a/Space-Invaders/Source/PlayerView.cpp b/Space-Invaders/Source/Player/PlayerView.cpp similarity index 79% rename from Space-Invaders/Source/PlayerView.cpp rename to Space-Invaders/Source/Player/PlayerView.cpp index 4839e56a4..711bbc1aa 100644 --- a/Space-Invaders/Source/PlayerView.cpp +++ b/Space-Invaders/Source/Player/PlayerView.cpp @@ -1,5 +1,6 @@ -#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\PlayerView.h" -#include "../Header/ServiceLocator.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Player\PlayerView.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Global\ServiceLocator.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Player\PlayerController.h" PlayerView::PlayerView() { } @@ -38,6 +39,7 @@ void PlayerView::scaleSprite() void PlayerView::Update() { + player_sprite.setPosition(player_controller->getPlayerPosition()); } void PlayerView::Render() diff --git a/Space-Invaders/Source/TimeService.cpp b/Space-Invaders/Source/Time/TimeService.cpp similarity index 89% rename from Space-Invaders/Source/TimeService.cpp rename to Space-Invaders/Source/Time/TimeService.cpp index a787f10af..e43bd1093 100644 --- a/Space-Invaders/Source/TimeService.cpp +++ b/Space-Invaders/Source/Time/TimeService.cpp @@ -1,4 +1,4 @@ -#include "../Header/TimeService.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Time\TimeService.h" diff --git a/Space-Invaders/Space-Invaders.vcxproj b/Space-Invaders/Space-Invaders.vcxproj index 1e246c00e..ae11a600c 100644 --- a/Space-Invaders/Space-Invaders.vcxproj +++ b/Space-Invaders/Space-Invaders.vcxproj @@ -132,27 +132,27 @@ - - - - - + + + + + - - - - + + + + - - - - - - - - - + + + + + + + + + diff --git a/Space-Invaders/Space-Invaders.vcxproj.filters b/Space-Invaders/Space-Invaders.vcxproj.filters index 18ffb2ba0..3ceded79f 100644 --- a/Space-Invaders/Space-Invaders.vcxproj.filters +++ b/Space-Invaders/Space-Invaders.vcxproj.filters @@ -18,60 +18,60 @@ Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files diff --git a/Space-Invaders/main.cpp b/Space-Invaders/main.cpp index 89ab96c67..a942ea5bb 100644 --- a/Space-Invaders/main.cpp +++ b/Space-Invaders/main.cpp @@ -1,6 +1,6 @@ #include #include -#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\GameService.h" +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Main\GameService.h"