Got some buttons for controlling the machine.

master
Zed A. Shaw 1 month ago
parent 4532da48c3
commit 89ce8b460d
  1. 16
      src/control_panel.cpp
  2. 1
      src/control_panel.hpp
  3. 4
      src/display.cpp

@ -7,12 +7,22 @@ ControlPanel::ControlPanel() {
void ControlPanel::init(sf::Vector2f size) {
$gui.position(0, size.y, size.x, WINDOW_HEIGHT - size.y);
$gui.layout("[buttons|code]");
$gui.layout(
"[pause |*%(200, 400)code|_]"
"[step |_|_]"
"[play |_|_]"
"[restart|_|_]"
);
for(auto& [name, cell] : $gui.cells()) {
auto id = $gui.entity(name);
$gui.set<guecs::Rectangle>(id, {});
$gui.set<guecs::Text>(id, {guecs::to_wstring(name)});
if(name != "code") {
$gui.set<guecs::Clickable>(id, {[name](auto) {
fmt::println("CLICKED {}", name);
}});
}
}
$gui.init();
@ -24,3 +34,7 @@ void ControlPanel::render(sf::RenderTarget& window) {
void ControlPanel::update(Chip8& vm) {
}
bool ControlPanel::mouse(float x, float y, guecs::Modifiers mods) {
return $gui.mouse(x, y, mods);
}

@ -12,4 +12,5 @@ struct ControlPanel {
void init(sf::Vector2f size);
void render(sf::RenderTarget& window);
void update(Chip8& vm);
bool mouse(float x, float y, guecs::Modifiers mods);
};

@ -42,6 +42,10 @@ void Display::handle_inputs(Chip8& vm) {
} else if(const auto* key = event->getIf<sf::Event::KeyReleased>()) {
vm.handle_keyboard(key->scancode, false);
}
if(const auto* ev = event->getIf<sf::Event::MouseButtonPressed>()) {
$control.mouse(ev->position.x, ev->position.y, {1 << guecs::ModBit::left});
}
}
}

Loading…
Cancel
Save