1
0
Fork 0
Toy-Raytracer/main.cpp
Teo-CD 4a95664342 main: Clean up, handle resize
Handle window resizes by resizing the view frame as well.

Clean up the event handling to allow interleaving other code between
different checks.
Remove early first frame, handle it like the others.
2024-01-24 23:09:59 +00:00

81 lines
2.4 KiB
C++

#include <iostream>
#include <SFML/Graphics.hpp>
#include "World.h"
// TODO: Find a way to go to edges instead of just equally split (?)
int main()
{
World world(10,10);
world.setBlock(BlockType::AIR,1,1,8,8);
world.setBlock(BlockType::WALL,4,4,2,2);
world.player.move(2,2);
std::cout << world << std::endl;
sf::RenderWindow window(sf::VideoMode(800,600),"Da raycasting");
sf::RenderWindow window(sf::VideoMode(1000,1000),"Da raycasting");
sf::Event event{};
sf::Clock frameTime;
while (window.isOpen())
{
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed) {
window.close();
continue;
}
if (event.type == sf::Event::Resized) {
// Keep the view area fit to the window.
sf::FloatRect newView(0, 0,
static_cast<float>(event.size.width),
static_cast<float>(event.size.height));
window.setView(sf::View(newView));
continue;
}
if (event.type == sf::Event::KeyPressed) {
switch (event.key.code) {
case sf::Keyboard::Key::Escape:
window.close();
break;
case sf::Keyboard::Key::Left:
world.player.currentRotationSpeed = -world.player.rotationSpeed;
break;
case sf::Keyboard::Key::Right:
world.player.currentRotationSpeed = world.player.rotationSpeed;
break;
case sf::Keyboard::Key::Up:
world.player.updateSpeed(1, 0);
break;
case sf::Keyboard::Key::Down:
world.player.updateSpeed(-1, 0);
break;
default:
break;
}
}
else if (event.type == sf::Event::KeyReleased) {
switch (event.key.code) {
case sf::Keyboard::Key::Left:
case sf::Keyboard::Key::Right:
world.player.currentRotationSpeed = 0;
break;
case sf::Keyboard::Key::Up:
case sf::Keyboard::Key::Down:
world.player.updateSpeed(0, 0);
break;
default:
break;
}
}
}
window.clear();
world.step(frameTime.restart().asSeconds());
world.render(window);
window.display();
}
return 0;
}