diff --git a/Space-Invaders/Header/Event/EventService.h b/Space-Invaders/Header/Event/EventService.h new file mode 100644 index 000000000..344309d0a --- /dev/null +++ b/Space-Invaders/Header/Event/EventService.h @@ -0,0 +1,30 @@ +#pragma once +#include +#include + +class EventService +{ +private: + sf::Event gameEvent; + sf::RenderWindow* gameWindow; + + bool isGameWindowOpen(); + bool gameWindowWasClosed(); + bool hasQuitGame(); + + +public: + EventService(); + ~EventService(); + + + + void Initialize(); + void Update(); + void ProcessEvents(); + bool PressedEscapeKey(); + bool isKeyboardEvent(); + + bool pressedLeftKey(); + bool pressedRightKey(); +}; \ No newline at end of file diff --git a/Space-Invaders/Header/Global/ServiceLocator.h b/Space-Invaders/Header/Global/ServiceLocator.h new file mode 100644 index 000000000..2f410acaf --- /dev/null +++ b/Space-Invaders/Header/Global/ServiceLocator.h @@ -0,0 +1,36 @@ +#pragma once +#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 +{ +private: + + + GraphicService *graphicService; + EventService* eventService; + PlayerService* playerService; + TimeService* timeService; + + ServiceLocator(); + ~ServiceLocator(); + + void CreateServices(); + void ClearAllServices(); + +public: + static ServiceLocator* GetInstance(); + + void Initialize(); + void Update(); + void Render(); + + GraphicService* getGraphicService(); + EventService* getEventService(); + PlayerService* getPlayerService(); + TimeService* getTimeService(); + + +}; diff --git a/Space-Invaders/Header/Graphic/GraphicService.h b/Space-Invaders/Header/Graphic/GraphicService.h new file mode 100644 index 000000000..a4639b953 --- /dev/null +++ b/Space-Invaders/Header/Graphic/GraphicService.h @@ -0,0 +1,39 @@ +#pragma once +#include + +class GraphicService +{ +private: + const std::string gameWindowTitle = "Space Invaders"; + + + const int gameWindowWidth = 800; + const int gameWindowHeight = 600; + + 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 + void onDestroy(); // method to run when window is deleted + + +public: + + GraphicService(); + ~GraphicService(); + sf::RenderWindow* CreateGameWindow(); + + + 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/Main/GameService.h b/Space-Invaders/Header/Main/GameService.h new file mode 100644 index 000000000..de033afcf --- /dev/null +++ b/Space-Invaders/Header/Main/GameService.h @@ -0,0 +1,30 @@ +#pragma once + +#include +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Global\ServiceLocator.h" +class GameService +{ +private: + ServiceLocator* serviceLocator; + sf::RenderWindow* gameWindow; + + + + 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 + + + + +}; \ No newline at end of file diff --git a/Space-Invaders/Header/Player/PlayerController.h b/Space-Invaders/Header/Player/PlayerController.h new file mode 100644 index 000000000..f31fa4b75 --- /dev/null +++ b/Space-Invaders/Header/Player/PlayerController.h @@ -0,0 +1,32 @@ +#pragma once +#include +//#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: + 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/Player/PlayerModel.h b/Space-Invaders/Header/Player/PlayerModel.h new file mode 100644 index 000000000..c54a8f4fd --- /dev/null +++ b/Space-Invaders/Header/Player/PlayerModel.h @@ -0,0 +1,42 @@ +#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(); + void 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/Player/PlayerService.h b/Space-Invaders/Header/Player/PlayerService.h new file mode 100644 index 000000000..82762b64f --- /dev/null +++ b/Space-Invaders/Header/Player/PlayerService.h @@ -0,0 +1,18 @@ +#pragma once + + +class PlayerController; + +class PlayerService +{ +private: + PlayerController* playerController; + +public: + PlayerService(); + ~PlayerService(); + + void initialize(); + void update(); + void render(); +}; \ No newline at end of file diff --git a/Space-Invaders/Header/Player/PlayerView.h b/Space-Invaders/Header/Player/PlayerView.h new file mode 100644 index 000000000..a6a51cd03 --- /dev/null +++ b/Space-Invaders/Header/Player/PlayerView.h @@ -0,0 +1,32 @@ +#pragma once +#include +//#include "../../Header/Player/PlayerController.h" + +class PlayerController; + +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/Header/Time/TimeService.h b/Space-Invaders/Header/Time/TimeService.h new file mode 100644 index 000000000..7f76ae983 --- /dev/null +++ b/Space-Invaders/Header/Time/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/Event/EventService.cpp b/Space-Invaders/Source/Event/EventService.cpp new file mode 100644 index 000000000..ec53c383e --- /dev/null +++ b/Space-Invaders/Source/Event/EventService.cpp @@ -0,0 +1,88 @@ +#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() +{ + gameWindow = nullptr; +} + +EventService::~EventService() = default; + +void EventService::Initialize() +{ + gameWindow = ServiceLocator::GetInstance()->getGraphicService()->GetGameWindow(); + +} + +void EventService::Update() +{ + + +} + +void EventService::ProcessEvents() +{ + if (isGameWindowOpen()) + { + while (gameWindow->pollEvent(gameEvent)) + { + if (gameWindowWasClosed() || hasQuitGame()) + { + + gameWindow->close(); + } + } + } + + +} + +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; + +} + +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/Global/servicelocator.cpp b/Space-Invaders/Source/Global/servicelocator.cpp new file mode 100644 index 000000000..cd95664ac --- /dev/null +++ b/Space-Invaders/Source/Global/servicelocator.cpp @@ -0,0 +1,90 @@ +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Global\ServiceLocator.h" + + + + +ServiceLocator::ServiceLocator() +{ + graphicService = nullptr; + eventService = nullptr; + playerService = nullptr; + timeService = nullptr; + CreateServices(); +} + + +ServiceLocator::~ServiceLocator() +{ + ClearAllServices(); + +} + +void ServiceLocator::CreateServices() +{ + graphicService = new GraphicService(); + eventService = new EventService(); + playerService = new PlayerService(); + timeService = new TimeService(); + +} + +void ServiceLocator::ClearAllServices() +{ + delete(graphicService); + graphicService = nullptr; + delete(eventService); + eventService = nullptr; + delete(playerService); + delete(timeService); + +} + +ServiceLocator* ServiceLocator::GetInstance() +{ + static ServiceLocator instance; + return &instance; // Return address of the instance +} + +void ServiceLocator::Initialize() +{ + graphicService->Initialize(); + eventService->Initialize(); + playerService->initialize(); + timeService->initialize(); + +} + +void ServiceLocator::Update() +{ + graphicService->Update(); + eventService->Update(); + playerService->update(); + timeService->update(); +} + +void ServiceLocator::Render() +{ + graphicService->Render(); + playerService->render(); +} + +GraphicService* ServiceLocator::getGraphicService() +{ + return graphicService; +} + +EventService* ServiceLocator::getEventService() +{ + return eventService; +} + +PlayerService* ServiceLocator::getPlayerService() +{ + return playerService; +} + +TimeService* ServiceLocator::getTimeService() +{ + return timeService; +} + diff --git a/Space-Invaders/Source/Graphic/GraphicService.cpp b/Space-Invaders/Source/Graphic/GraphicService.cpp new file mode 100644 index 000000000..22de3fb1c --- /dev/null +++ b/Space-Invaders/Source/Graphic/GraphicService.cpp @@ -0,0 +1,66 @@ +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Graphic\GraphicService.h" + + +GraphicService::GraphicService() +{ + videoMode = nullptr; + gameWindow = nullptr; +} + +GraphicService::~GraphicService() +{ + onDestroy(); +} + +void GraphicService::Initialize() +{ + gameWindow = CreateGameWindow(); + gameWindow->setFramerateLimit(frameRate); + + +} + +sf::RenderWindow* GraphicService::CreateGameWindow() +{ + setVideoMode(); + return new sf::RenderWindow(*videoMode, gameWindowTitle); + +} + +void GraphicService::setVideoMode() +{ + videoMode = new sf::VideoMode(gameWindowWidth, gameWindowHeight, sf::VideoMode::getDesktopMode().bitsPerPixel); // Allocates and sets the video mode +} + +void GraphicService::onDestroy() +{ + delete(videoMode); + delete(gameWindow); + +} + + + + +void GraphicService::Update() +{ +} + +void GraphicService::Render() +{ +} + +bool GraphicService::isGameWindowOpen() +{ + return gameWindow->isOpen(); +} + +sf::RenderWindow* GraphicService::GetGameWindow() +{ + return gameWindow; +} + +sf::Color GraphicService::getWindowColor() +{ + return windowColor; +} diff --git a/Space-Invaders/Source/Main/GameService.cpp b/Space-Invaders/Source/Main/GameService.cpp new file mode 100644 index 000000000..d0d3c7261 --- /dev/null +++ b/Space-Invaders/Source/Main/GameService.cpp @@ -0,0 +1,81 @@ +#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" + + + + +GameService::GameService() +{ + serviceLocator = nullptr; + gameWindow = nullptr; + + +} + +GameService::~GameService() +{ + Destroy(); + + //destructor +} + +void GameService::Ignite() +{ + serviceLocator = ServiceLocator::GetInstance(); + Initialize(); + +} +void GameService::Initialize() +{ + serviceLocator->Initialize(); + InitializeVariables(); + +} + +void GameService::InitializeVariables() +{ + gameWindow = serviceLocator->getGraphicService()->GetGameWindow(); + + +} + +void GameService::Destroy() +{ + +} + + + + + + + + +void GameService::Update() +{ + + serviceLocator->Update(); + + serviceLocator->getEventService()->ProcessEvents(); + + serviceLocator->Update(); + + //updates the game logic and states + +} + +void GameService::Render() +{ + gameWindow->clear(serviceLocator->getGraphicService()->getWindowColor()); + serviceLocator->Render(); + gameWindow->display(); + + //Render things on screen +} + +bool GameService::IsGameRunning() +{ + + return serviceLocator->getGraphicService()->isGameWindowOpen(); +} diff --git a/Space-Invaders/Source/Player/PlayerController.cpp b/Space-Invaders/Source/Player/PlayerController.cpp new file mode 100644 index 000000000..768c9ed95 --- /dev/null +++ b/Space-Invaders/Source/Player/PlayerController.cpp @@ -0,0 +1,77 @@ +#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(); + 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() +{ + EventService* event_service = ServiceLocator::GetInstance()->getEventService(); + 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/Player/PlayerModel.cpp b/Space-Invaders/Source/Player/PlayerModel.cpp new file mode 100644 index 000000000..cc84532b2 --- /dev/null +++ b/Space-Invaders/Source/Player/PlayerModel.cpp @@ -0,0 +1,61 @@ +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Player\PlayerModel.h" + +PlayerModel::PlayerModel() +{ + + +} + +PlayerModel::~PlayerModel() +{ +} + +void PlayerModel::Initialize() +{ + Reset(); +} + +void PlayerModel::Reset() +{ + + playerAlive = true; + playerPosition = initialPlayerPosition; + playerScore = 0; +} + +sf::Vector2f PlayerModel::getPlayerPosition() +{ + return playerPosition; +} + +void 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/Source/Player/PlayerService.cpp b/Space-Invaders/Source/Player/PlayerService.cpp new file mode 100644 index 000000000..02dc75f73 --- /dev/null +++ b/Space-Invaders/Source/Player/PlayerService.cpp @@ -0,0 +1,29 @@ +#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() +{ + playerController = new PlayerController(); +} + +PlayerService::~PlayerService() +{ + delete (playerController); +} + +void PlayerService::initialize() +{ + playerController->initialize(); +} + +void PlayerService::update() +{ + playerController->update(); +} + +void PlayerService::render() +{ + playerController->render(); +} diff --git a/Space-Invaders/Source/Player/PlayerView.cpp b/Space-Invaders/Source/Player/PlayerView.cpp new file mode 100644 index 000000000..711bbc1aa --- /dev/null +++ b/Space-Invaders/Source/Player/PlayerView.cpp @@ -0,0 +1,48 @@ +#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() +{ +} + +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() +{ + player_sprite.setPosition(player_controller->getPlayerPosition()); +} + +void PlayerView::Render() +{ + game_window->draw(player_sprite); +} diff --git a/Space-Invaders/Source/Time/TimeService.cpp b/Space-Invaders/Source/Time/TimeService.cpp new file mode 100644 index 000000000..e43bd1093 --- /dev/null +++ b/Space-Invaders/Source/Time/TimeService.cpp @@ -0,0 +1,40 @@ +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Time\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 6f7fa388d..ae11a600c 100644 --- a/Space-Invaders/Space-Invaders.vcxproj +++ b/Space-Invaders/Space-Invaders.vcxproj @@ -132,7 +132,27 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/Space-Invaders/Space-Invaders.vcxproj.filters b/Space-Invaders/Space-Invaders.vcxproj.filters index ce0c35ccf..3ceded79f 100644 --- a/Space-Invaders/Space-Invaders.vcxproj.filters +++ b/Space-Invaders/Space-Invaders.vcxproj.filters @@ -18,5 +18,61 @@ 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 + \ No newline at end of file diff --git a/Space-Invaders/main.cpp b/Space-Invaders/main.cpp index 7d5f90dff..a942ea5bb 100644 --- a/Space-Invaders/main.cpp +++ b/Space-Invaders/main.cpp @@ -1,5 +1,105 @@ +#include +#include +#include "D:\Outscal\Space-Invaders\Space-Invaders\Header\Main\GameService.h" + + + +/* +class Player +{ + + + int health=3; + int playerScore = 0; + + sf::Vector2f position=sf::Vector2f(200.0f,100.0f); + + + public: + sf::Texture playerTexture; + sf::Sprite player_sprite; + int movementSpeed=5; + + void takeDamage() {}; + void move(float offsetX) + { + position.x += offsetX; + + + }; + void shootBullets() {}; + + int GetMoveSpeed() { + return movementSpeed; + } + + sf::Vector2f getPosition() { return position; }; + + + +}; 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; + while (window.pollEvent(event)) + { + if (event.type == sf::Event::Closed) + { + window.close(); + } + if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)) + { + player.move(-1.0f*player.GetMoveSpeed()); + } + if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) + { + 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()); + + window.draw(player.player_sprite); + + + window.display(); + } + + + + + + + + + return 0; +} + +*/ + +int main() +{ + GameService* gameService = new GameService(); + gameService->Ignite(); + + while (gameService->IsGameRunning()) + { + gameService->Update(); + gameService->Render(); + } + return 0; } \ No newline at end of file