Moved the main event loop out of GUI so it's not so tightly coupled to everything else.

master
Zed A. Shaw 10 months ago
parent c0ad0c8d23
commit 5ae24d9b0a
  1. 18
      escape_turings_tarpit.cpp
  2. 20
      gui.cpp
  3. 4
      gui.hpp
  4. 3
      sfmlbackend.hpp

@ -4,11 +4,19 @@
int main(int argc, char *argv[])
{
GUI gui;
GameEngine game{100};
GUI gui;
GameEngine game{100};
auto backend = SFMLBackend(game);
auto builder = Builder(gui, game);
auto builder = Builder(gui, game);
gui.main_loop(game, builder);
backend.startup();
return 1;
while(backend.is_open()) {
builder.event(BuildEvent::GO);
gui.main_loop(backend);
}
builder.event(BuildEvent::QUIT);
backend.shutdown();
return 1;
}

@ -31,22 +31,10 @@ void GUI::output(const string msg) {
_lines.push_back(msg);
}
int GUI::main_loop(GameEngine &game, Builder &builder) {
auto gui = SFMLBackend(game);
gui.startup();
while(gui.is_open()) {
builder.event(BuildEvent::GO);
gui.handle_events();
gui.update_entities();
gui.update_log(_lines);
}
builder.event(BuildEvent::QUIT);
gui.shutdown();
return EXIT_SUCCESS;
void GUI::main_loop(SFMLBackend &gui) {
gui.handle_events();
gui.update_entities();
gui.update_log(_lines);
}
void GUI::build_works() {

@ -20,12 +20,12 @@ class GUI {
GUI();
// FOUND BUG: adding this found that I was accidentally copying the gui, really it shouldn't be copyable
// prevent copy
GUI(GUI &g) = delete;
void output(const string msg);
int main_loop(GameEngine &game, Builder &builder);
void main_loop(SFMLBackend &backend);
void build_works();
void build_failed(bool play_sound, const string &command);

@ -47,6 +47,9 @@ class SFMLBackend {
public:
SFMLBackend(GameEngine &g);
// prevent copy
SFMLBackend(SFMLBackend &g) = delete;
void startup();
bool is_open();

Loading…
Cancel
Save