5 changed files with 140 additions and 36 deletions
			
			
		| @ -0,0 +1,71 @@ | |||||||
|  | #ifndef GAMESTATE | ||||||
|  | #define GAMESTATE | ||||||
|  | 
 | ||||||
|  | #include <SFML/Graphics.hpp> | ||||||
|  | 
 | ||||||
|  | class GameState | ||||||
|  | { | ||||||
|  | public: | ||||||
|  |     virtual void Initialize(sf::RenderWindow* window) { | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     virtual void Update(sf::RenderWindow* window) { | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     virtual void Render(sf::RenderWindow* window) { | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     virtual void Destroy(sf::RenderWindow* window) { | ||||||
|  |     } | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | class GameStateParent | ||||||
|  | { | ||||||
|  | public: | ||||||
|  |     GameStateParent() { | ||||||
|  |         this->state = NULL; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     void SetWindow(sf::RenderWindow* window) { | ||||||
|  |         this->window = window; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     void SetState(GameState* state) { | ||||||
|  |         if(this->state != NULL) { | ||||||
|  |             this->state->Destroy(this->window); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         this->state = state; | ||||||
|  |         if(this->state != NULL) { | ||||||
|  |             this->state->Initialize(this->window); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     void Update() { | ||||||
|  |         if(this->state != NULL) { | ||||||
|  |             this->state->Update(this->window); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     void Render() { | ||||||
|  |         if(this->state != NULL) { | ||||||
|  |             this->state->Render(this->window); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     ~GameStateParent() { | ||||||
|  |         if(this->state != NULL) { | ||||||
|  |             this->state->Destroy(this->window); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | private: | ||||||
|  |     sf::RenderWindow* window; | ||||||
|  |     GameState* state; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | extern GameStateParent gameState; | ||||||
|  | 
 | ||||||
|  | #endif // GAMESTATE
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,35 @@ | |||||||
|  | #include "maingame.h" | ||||||
|  | 
 | ||||||
|  | void UpdateCollisions(Entity* entityA, Entity* entityB) { | ||||||
|  |     std::cout << "Collisions!" << std::endl; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void MainGame::Initialize(sf::RenderWindow* window) { | ||||||
|  |     entityManager = new EntityManager(); | ||||||
|  |     entityManager->SetCollisionMethod(UpdateCollisions); | ||||||
|  | 
 | ||||||
|  |     this->entityManager->AddEntity("test", new Entity("data\\gfx\\test.png")); | ||||||
|  |     this->entityManager->AddEntity("test", new Entity("data\\gfx\\test.png")); | ||||||
|  |     this->entityManager->Get("test0")->velocity.x = 0.5; | ||||||
|  |     this->entityManager->Get("test")->setPosition(sf::Vector2f(50, 50)); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void MainGame::Update(sf::RenderWindow* window) { | ||||||
|  |     if(inputManager.IsPressed(InputManager::Left)) { | ||||||
|  |         std::cout << "LEFT" << std::endl; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     if(inputManager.IsPressed(InputManager::Down)) { | ||||||
|  |         std::cout << "DOWN" << std::endl; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     this->entityManager->Update(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void MainGame::Render(sf::RenderWindow* window) { | ||||||
|  |     this->entityManager->Render(window); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void MainGame::Destroy(sf::RenderWindow* window) { | ||||||
|  |     delete this->entityManager; | ||||||
|  | } | ||||||
| @ -0,0 +1,22 @@ | |||||||
|  | #ifndef MAINGAME_H | ||||||
|  | #define MAINGAME_H | ||||||
|  | 
 | ||||||
|  | #include <iostream> | ||||||
|  | 
 | ||||||
|  | #include "gamestate.h" | ||||||
|  | #include "entitymanager.h" | ||||||
|  | #include "inputmanager.h" | ||||||
|  | 
 | ||||||
|  | class MainGame : public GameState | ||||||
|  | { | ||||||
|  | public: | ||||||
|  |     void Initialize(sf::RenderWindow* window); | ||||||
|  |     void Update(sf::RenderWindow* window); | ||||||
|  |     void Render(sf::RenderWindow* window); | ||||||
|  |     void Destroy(sf::RenderWindow* window); | ||||||
|  | 
 | ||||||
|  | private: | ||||||
|  |     EntityManager* entityManager; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #endif // MAINGAME_H
 | ||||||
					Loading…
					
					
				
		Reference in new issue