1
0
This commit is contained in:
2022-10-20 14:13:25 +02:00
parent 6b68fcc84c
commit 54d668a694
7 changed files with 193 additions and 0 deletions

View File

@@ -1,9 +1,11 @@
#include "game.h"
#include "particleGenerator.h"
#include <iostream>
#include <tuple>
typedef std::tuple<bool, Direction,glm::vec2> Collision;
ParticleGenerator* Particles;
SpriteRenderer* Renderer;
// Initial size of the player paddle
@@ -86,6 +88,7 @@ Game::~Game()
delete Renderer;
delete player;
delete ball;
delete Particles;
}
Game::Game(unsigned int width, unsigned int height)
@@ -98,10 +101,12 @@ void Game::Init()
{
// Load shaders
ResourceManager::LoadShader("shader.vs", "shader.fs", nullptr, "sprite");
ResourceManager::LoadShader("particle.vs", "particle.fs", nullptr, "particle");
// configure shaders
glm::mat4 projection = glm::ortho(0.0f, static_cast<float>(this->Width), static_cast<float>(this->Height), 0.0f, -1.0f, 1.0f);
ResourceManager::GetShader("sprite").Use().SetInteger("image", 0);
ResourceManager::GetShader("sprite").SetMatrix4("projection", projection);
ResourceManager::GetShader("particle").Use().SetMatrix4("projection", projection);
// set render-specific controls
Renderer = new SpriteRenderer(ResourceManager::GetShader("sprite"));
// load textures
@@ -110,6 +115,7 @@ void Game::Init()
ResourceManager::LoadTexture("textures/block.png", false, "block");
ResourceManager::LoadTexture("textures/block_solid.png", false, "block_solid");
ResourceManager::LoadTexture("textures/paddle.png", true, "paddle");
ResourceManager::LoadTexture("textures/particle.png", true, "particle");
// Load levels
GameLevel one; one.Load("levels/one.lvl", this->Width, this->Height / 2);
GameLevel two; two.Load("levels/two.lvl", this->Width, this->Height / 2);
@@ -129,6 +135,8 @@ void Game::Init()
ball = new BallObject(ballPos, BALL_RADIUS, INITIAL_BALL_VELOCITY, ResourceManager::GetTexture("face"));
Particles = new ParticleGenerator(ResourceManager::GetShader("particle"), ResourceManager::GetTexture("particle"), 500);
}
@@ -227,6 +235,8 @@ void Game::Update(float dt)
ball->Move(dt, this->Width);
this->DoCollisions();
Particles->Update(dt, *ball, 2, glm::vec2(ball->Radius /2.0f));
if(ball->Position.y >= this->Height)
{
this->ResetLevel();
@@ -246,6 +256,7 @@ void Game::Render()
this->Levels[this->Level].Draw(*Renderer);
player->Draw(*Renderer);
Particles->Draw();
ball->Draw(*Renderer);
}
}