From 4e3e8e7b2319981201c0bded3f9a8a61818f6dc5 Mon Sep 17 00:00:00 2001 From: "Zed A. Shaw" Date: Fri, 15 Aug 2025 22:59:31 -0400 Subject: [PATCH] Quick cleaning of main to make working on the control window easier. --- control.cpp | 31 +++++++++++++++++++++++++++++++ control.hpp | 1 + main.cpp | 39 ++++++--------------------------------- 3 files changed, 38 insertions(+), 33 deletions(-) diff --git a/control.cpp b/control.cpp index 477e1ec..f0834dd 100644 --- a/control.cpp +++ b/control.cpp @@ -44,3 +44,34 @@ void ControlUI::render(sf::RenderWindow& window) { window.clear(); $gui.render(window); } + +void ControlUI::handle_events(sf::RenderWindow& controller, const sf::Event& event) { + if(const auto* key = event.getIf()) { + if(event.is()) { + controller.close(); + return; + } + + auto pos = $presenter.getPosition(); + auto size = $presenter.getSize(); + + using KEY = sf::Keyboard::Scan; + switch(key->scancode) { + case KEY::A: { + pos.x -= size.x; + $presenter.setPosition(pos); + } break; + case KEY::D: { + pos.x += int(size.x); + $presenter.setPosition(pos); + } break; + case KEY::Q: + controller.close(); + break; + default: + break; + } + + fmt::println("window pos: {},{}", pos.x, pos.y); + } +} diff --git a/control.hpp b/control.hpp index 88cece4..baf632a 100644 --- a/control.hpp +++ b/control.hpp @@ -11,4 +11,5 @@ struct ControlUI { ControlUI(sf::RenderWindow& presenter); void init(); void render(sf::RenderWindow& window); + void handle_events(sf::RenderWindow& controller, const sf::Event& event); }; diff --git a/main.cpp b/main.cpp index 0c1d902..8201b0b 100644 --- a/main.cpp +++ b/main.cpp @@ -8,7 +8,7 @@ #include "parser.hpp" int main(int argc, char *argv[]) { - dbc::check(argc >= 2, "USAGE: besos my_fucking_slides.md"); + dbc::check(argc >= 2, "USAGE: besos my_fucking_slides.md"); sfml::Backend backend; guecs::init(&backend); @@ -18,7 +18,7 @@ int main(int argc, char *argv[]) { return a.size.x == WINDOW_WIDTH && a.size.y == WINDOW_HEIGHT; }); - sf::RenderWindow controller(sf::VideoMode({400,400}), "Besos Loves Control"); + sf::RenderWindow controller(sf::VideoMode({CONTROL_WIDTH, CONTROL_HEIGHT}), "Besos Loves Control"); sf::RenderWindow presenter(*screen_mode, "Besos Loves Slides", sf::Style::None, sf::State::Windowed); @@ -26,8 +26,8 @@ int main(int argc, char *argv[]) { presenter.setFramerateLimit(FRAME_LIMIT); presenter.setVerticalSyncEnabled(VSYNC); - int monitor_count = argc == 3 ? atoi(argv[1]) : 1; - auto data = argc == 3 ? parse_slides(argv[2]) : parse_slides(argv[1]); + + auto data = parse_slides(argv[1]); SlidesUI slides(data); slides.init(); @@ -49,39 +49,12 @@ int main(int argc, char *argv[]) { } while (const auto event = controller.pollEvent()) { - if(event->is()) { - controller.close(); - } - - if(const auto* key = event->getIf()) { - auto pos = presenter.getPosition(); - auto size = presenter.getSize(); - - using KEY = sf::Keyboard::Scan; - switch(key->scancode) { - case KEY::A: - if(true) { - pos.x -= size.x; - presenter.setPosition(pos); - } break; - case KEY::D: - if(pos.x < int(size.x) * monitor_count) { - pos.x += int(size.x); - presenter.setPosition(pos); - } break; - case KEY::Q: - controller.close(); - break; - default: - break; - } - - fmt::println("window pos: {},{}", pos.x, pos.y); - } + if(event) control_ui.handle_events(controller, *event); } slides.render(presenter); control_ui.render(controller); + presenter.display(); controller.display(); }