added bricks and the ability to spawn bricks with mouse
This commit is contained in:
parent
e5e7028554
commit
6559a9dc95
|
|
@ -38,7 +38,7 @@ struct Color
|
||||||
|
|
||||||
namespace global
|
namespace global
|
||||||
{
|
{
|
||||||
inline sf::Vector2f playerSize{500, 25};
|
inline sf::Vector2f playerSize{500, 10};
|
||||||
inline sf::Vector2f playerHalfSize{playerSize / 2.f};
|
inline sf::Vector2f playerHalfSize{playerSize / 2.f};
|
||||||
inline sf::Vector2f brickSize{50, 10};
|
inline sf::Vector2f brickSize{50, 10};
|
||||||
inline sf::Vector2f brickHalfSize{brickSize / 2.f};
|
inline sf::Vector2f brickHalfSize{brickSize / 2.f};
|
||||||
|
|
|
||||||
24
src/Game.cpp
24
src/Game.cpp
|
|
@ -110,6 +110,19 @@ void Game::input()
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (const auto* MouseButtonPressed = event->getIf<sf::Event::MouseButtonPressed>())
|
||||||
|
{
|
||||||
|
switch (MouseButtonPressed->button)
|
||||||
|
{
|
||||||
|
case sf::Mouse::Button::Left:
|
||||||
|
bricks.emplace_back((sf::Vector2f)MouseButtonPressed->position);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -135,7 +148,7 @@ void Game::collision()
|
||||||
{
|
{
|
||||||
brick.alive = false;
|
brick.alive = false;
|
||||||
ball.velocity.x *= -1;
|
ball.velocity.x *= -1;
|
||||||
if (ball.pos.x < player.pos.x)
|
if (ball.pos.x < brick.pos.x)
|
||||||
{
|
{
|
||||||
ball.pos.x -= intersect.x;
|
ball.pos.x -= intersect.x;
|
||||||
}
|
}
|
||||||
|
|
@ -150,7 +163,7 @@ void Game::collision()
|
||||||
{
|
{
|
||||||
brick.alive = false;
|
brick.alive = false;
|
||||||
ball.velocity.y *= -1;
|
ball.velocity.y *= -1;
|
||||||
if (ball.pos.y < player.pos.y)
|
if (ball.pos.y < brick.pos.y)
|
||||||
{
|
{
|
||||||
ball.pos.y -= intersect.y;
|
ball.pos.y -= intersect.y;
|
||||||
}
|
}
|
||||||
|
|
@ -174,7 +187,7 @@ void Game::collision()
|
||||||
brick.alive = false;
|
brick.alive = false;
|
||||||
spawnExtraBall = true;
|
spawnExtraBall = true;
|
||||||
ball.velocity.x *= -1;
|
ball.velocity.x *= -1;
|
||||||
if (ball.pos.x < player.pos.x)
|
if (ball.pos.x < brick.pos.x)
|
||||||
{
|
{
|
||||||
ball.pos.x -= intersect.x;
|
ball.pos.x -= intersect.x;
|
||||||
}
|
}
|
||||||
|
|
@ -190,7 +203,7 @@ void Game::collision()
|
||||||
brick.alive = false;
|
brick.alive = false;
|
||||||
spawnExtraBall = true;
|
spawnExtraBall = true;
|
||||||
ball.velocity.y *= -1;
|
ball.velocity.y *= -1;
|
||||||
if (ball.pos.y < player.pos.y)
|
if (ball.pos.y < brick.pos.y)
|
||||||
{
|
{
|
||||||
ball.pos.y -= intersect.y;
|
ball.pos.y -= intersect.y;
|
||||||
}
|
}
|
||||||
|
|
@ -333,6 +346,7 @@ void Game::imgui()
|
||||||
ImGui::Text("A/D or arrow keys: move left and right");
|
ImGui::Text("A/D or arrow keys: move left and right");
|
||||||
ImGui::Text("R: reset game");
|
ImGui::Text("R: reset game");
|
||||||
ImGui::Text("F1: expand/collaspe this window");
|
ImGui::Text("F1: expand/collaspe this window");
|
||||||
|
ImGui::Text("left click: spawn brick");
|
||||||
ImGui::Unindent();
|
ImGui::Unindent();
|
||||||
|
|
||||||
ImGui::End();
|
ImGui::End();
|
||||||
|
|
@ -343,8 +357,8 @@ void Game::render()
|
||||||
window.clear();
|
window.clear();
|
||||||
|
|
||||||
|
|
||||||
tempRect.setSize(global::brickSize);
|
|
||||||
tempRect.setOrigin(global::brickHalfSize);
|
tempRect.setOrigin(global::brickHalfSize);
|
||||||
|
tempRect.setSize(global::brickSize);
|
||||||
for (auto& brick : bricks)
|
for (auto& brick : bricks)
|
||||||
{
|
{
|
||||||
tempRect.setPosition(brick.pos);
|
tempRect.setPosition(brick.pos);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue