Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature 3 player ship #133

Open
wants to merge 41 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
4108e90
Update main.cpp
meteoralpha23 Jul 27, 2024
fed4bec
Merge pull request #1 from meteoralpha23/Feature-1-SFML
meteoralpha23 Jul 27, 2024
185f626
Update main.cpp
meteoralpha23 Jul 27, 2024
1e07c0c
Merge pull request #2 from meteoralpha23/Feature-1-SFML
meteoralpha23 Jul 27, 2024
4b9a573
Update main.cpp
meteoralpha23 Jul 27, 2024
acc1783
Update main.cpp
meteoralpha23 Jul 27, 2024
33bec0b
Merge pull request #3 from meteoralpha23/Feature-1-SFML
meteoralpha23 Jul 27, 2024
02db02c
Update main.cpp
meteoralpha23 Jul 27, 2024
1c016ce
Update main.cpp
meteoralpha23 Jul 27, 2024
9a06a1e
Update main.cpp
meteoralpha23 Jul 27, 2024
d0948ee
Update main.cpp
meteoralpha23 Jul 27, 2024
78997b7
Merge pull request #4 from meteoralpha23/Feature-1-SFML
meteoralpha23 Jul 27, 2024
008aae8
Update main.cpp
meteoralpha23 Jul 27, 2024
c1e00ed
Merge pull request #5 from meteoralpha23/Feature-2-OOP
meteoralpha23 Jul 27, 2024
2e71f96
Update main.cpp
meteoralpha23 Jul 28, 2024
8f8ae39
Merge pull request #6 from meteoralpha23/Feature-2-OOP
meteoralpha23 Jul 28, 2024
05161f4
Update main.cpp
meteoralpha23 Jul 29, 2024
646494a
Merge pull request #7 from meteoralpha23/Feature-2-OOP
meteoralpha23 Jul 29, 2024
4419968
Update main.cpp
meteoralpha23 Jul 29, 2024
5dff76f
Merge pull request #8 from meteoralpha23/Feature-2-OOP
meteoralpha23 Jul 29, 2024
6334ee5
Commiting
meteoralpha23 Jul 30, 2024
c03b2a5
Update GameService.cpp
meteoralpha23 Jul 30, 2024
bb8144b
Update GameService.cpp
meteoralpha23 Jul 30, 2024
b9ed42e
Merge pull request #9 from meteoralpha23/Feature-2-OOP
meteoralpha23 Jul 30, 2024
9dbf191
Update main.cpp
meteoralpha23 Jul 30, 2024
adb4ab8
Merge pull request #10 from meteoralpha23/Feature-2-OOP
meteoralpha23 Jul 30, 2024
9e085c3
Implementing Service Locator
meteoralpha23 Jul 30, 2024
86f4d76
Merge pull request #11 from meteoralpha23/Feature-2-OOP
meteoralpha23 Jul 30, 2024
aefe597
Updating serviceLocaor
meteoralpha23 Jul 31, 2024
4dfe6d4
Merge pull request #12 from meteoralpha23/Feature-2-OOP
meteoralpha23 Jul 31, 2024
eca92e7
Polling events
meteoralpha23 Aug 3, 2024
babd533
Merge pull request #13 from meteoralpha23/Feature-2-OOP
meteoralpha23 Aug 3, 2024
dab326a
new
meteoralpha23 Aug 10, 2024
ce059c2
1
meteoralpha23 Aug 10, 2024
2fb4914
1
meteoralpha23 Aug 10, 2024
ddac1b6
linking player service
meteoralpha23 Aug 11, 2024
6491ed9
Delta Time
meteoralpha23 Aug 11, 2024
5db0310
fixed
meteoralpha23 Aug 11, 2024
22348ff
Enums
meteoralpha23 Aug 13, 2024
1622ac8
Implementing MVC
meteoralpha23 Aug 13, 2024
b6da3e7
using forward Declaration
meteoralpha23 Aug 17, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions Space-Invaders/Header/Event/EventService.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#pragma once
#include <SFML/Graphics/RenderWindow.hpp>
#include <SFML/Window/Event.hpp>

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();
};
36 changes: 36 additions & 0 deletions Space-Invaders/Header/Global/ServiceLocator.h
Original file line number Diff line number Diff line change
@@ -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();


};
39 changes: 39 additions & 0 deletions Space-Invaders/Header/Graphic/GraphicService.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#pragma once
#include<SFML/Graphics.hpp>

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();

};
30 changes: 30 additions & 0 deletions Space-Invaders/Header/Main/GameService.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#pragma once

#include <SFML/Graphics.hpp>
#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




};
32 changes: 32 additions & 0 deletions Space-Invaders/Header/Player/PlayerController.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#pragma once
#include<SFML/Graphics.hpp>
//#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();


};
42 changes: 42 additions & 0 deletions Space-Invaders/Header/Player/PlayerModel.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#pragma once
#include<SFML/Graphics.hpp>
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);


};
18 changes: 18 additions & 0 deletions Space-Invaders/Header/Player/PlayerService.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#pragma once


class PlayerController;

class PlayerService
{
private:
PlayerController* playerController;

public:
PlayerService();
~PlayerService();

void initialize();
void update();
void render();
};
32 changes: 32 additions & 0 deletions Space-Invaders/Header/Player/PlayerView.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#pragma once
#include<SFML/Graphics.hpp>
//#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();


};
31 changes: 31 additions & 0 deletions Space-Invaders/Header/Time/TimeService.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#pragma once
#include <chrono>

/*
// The TimeService class helps keep track of time in game and calculate delta time.
// Utilizes the <chrono> library to calculate delta time.
*/
class TimeService
{
private:

// A point in time which indicates the starting time of previous frame.
std::chrono::time_point<std::chrono::steady_clock> 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();
};
88 changes: 88 additions & 0 deletions Space-Invaders/Source/Event/EventService.cpp
Original file line number Diff line number Diff line change
@@ -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;
}












Loading