From be7d13efbcfd7f6e4413e3bf74f297844a562f24 Mon Sep 17 00:00:00 2001 From: Paul Dino Jones Date: Thu, 12 Oct 2023 05:26:55 +0000 Subject: [PATCH] Improve game detection in gameloop --- src/monocoque/gameloop/gameloop.c | 36 ++++++++++++------------------- 1 file changed, 14 insertions(+), 22 deletions(-) diff --git a/src/monocoque/gameloop/gameloop.c b/src/monocoque/gameloop/gameloop.c index a238e6a..4b6ada0 100644 --- a/src/monocoque/gameloop/gameloop.c +++ b/src/monocoque/gameloop/gameloop.c @@ -183,21 +183,14 @@ int clilooper(SimDevice* devices, int numdevices, Parameters* p, SimData* simdat } sleep(3); - struct termios newsettings, canonicalmode; - tcgetattr(0, &canonicalmode); - newsettings = canonicalmode; - newsettings.c_lflag &= (~ICANON & ~ECHO); - newsettings.c_cc[VMIN] = 1; - newsettings.c_cc[VTIME] = 0; - tcsetattr(0, TCSANOW, &newsettings); - char ch; - struct pollfd mypoll = { STDIN_FILENO, POLLIN|POLLPRI }; + struct pollfd mypoll = { STDIN_FILENO, POLLIN|POLLPRI }; double update_rate = DEFAULT_UPDATE_RATE; + char ch; int t=0; int s=0; - int go = true; - while (go == true) + bool go = true; + while (go == true && simdata->simstatus > 1) { simdatamap(simdata, simmap, p->sim); showstats(simdata); @@ -212,18 +205,16 @@ int clilooper(SimDevice* devices, int numdevices, Parameters* p, SimData* simdat devices[x].update(&devices[x], simdata); } - if( poll(&mypoll, 1, 1000.0/update_rate) ) - { - scanf("%c", &ch); - if(ch == 'q') - { - go = false; - } - } + + if( poll(&mypoll, 1, 1000.0/DEFAULT_UPDATE_RATE) ) + { + scanf("%c", &ch); + if(ch == 'q') + { + go = false; + } + } } - fprintf(stdout, "\n"); - fflush(stdout); - tcsetattr(0, TCSANOW, &canonicalmode); simdata->velocity = 0; simdata->rpms = 100; @@ -232,6 +223,7 @@ int clilooper(SimDevice* devices, int numdevices, Parameters* p, SimData* simdat devices[x].update(&devices[x], simdata); } + fprintf(stdout, "\n"); return 0; }