Simple 2D RPG made in C++ and SFML
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
1.9 KiB

#include "maingame.h"
void UpdateCollisions(Entity* entityA, Entity* entityB) {
std::cout << "Collisions!" << std::endl;
}
void MainGame::Initialize(sf::RenderWindow* window) {
this->entityManager = new EntityManager();
this->entityManager->SetCollisionMethod(UpdateCollisions);
// Add entities
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));
this->entityManager->Get("test0")->setPosition(sf::Vector2f(50, 300));
// Load Map
this->map = new Map();
MapLoad(this->map, "data/map/level1.json");
// Load Camera
this->camera = new Camera(window);
// Load Player
this->player = new Player(this->entityManager, this->map, this->camera, 100, 100);
this->entityManager->AddEntity("Player", this->player);
}
void MainGame::Update(sf::RenderWindow* window) {
this->time = this->clock.getElapsedTime();
int timeElapsed = this->time.asMicroseconds();
this->clock.restart();
this->player->Update(window, inputManager, timeElapsed);
this->entityManager->Update();
this->map->CheckCollision(this->player);
this->camera->Update(window, this->map, sf::Vector2f(this->player->getPosition().x, this->player->getPosition().y));
if(inputManager.IsPressed(InputManager::LoadMap)) {
std::cout << "Loading Map..." << std::endl;
MapLoad(this->map, "data/map/level1.json", 1);
}
}
void MainGame::Render(sf::RenderWindow* window) {
this->map->RenderGround(window);
this->entityManager->Render(window);
this->map->RenderAbove(window);
}
void MainGame::Destroy(sf::RenderWindow* window) {
delete this->entityManager;
delete this->map;
delete this->camera;
}