X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fevents.c;h=4c71dca04ece48c1d1e0b436656b51234f4c5c90;hb=5d3436c34268fb35d378a39d9d825def453afbec;hp=952f8995f602cdec1a475dd9c4fd76211138d907;hpb=0229cbe9c9f7d6969ac5ca96eb6b525a9fe3ccf4;p=rocksndiamonds.git diff --git a/src/events.c b/src/events.c index 952f8995..4c71dca0 100644 --- a/src/events.c +++ b/src/events.c @@ -161,8 +161,13 @@ void EventLoop(void) { if (PendingEvent()) /* got event */ { + // use separate frame delay counter to not reset main delay counter + unsigned int sync_frame_delay2 = 0; + unsigned int sync_frame_delay_value2 = sync_frame_delay_value; Event event; + ResetDelayCounter(&sync_frame_delay2); + while (NextValidEvent(&event)) { switch (event.type) @@ -208,9 +213,14 @@ void EventLoop(void) HandleOtherEvents(&event); break; } + + // do not handle events for longer than standard frame delay period + if (DelayReached(&sync_frame_delay2, sync_frame_delay_value2)) + break; } } - else + + // always handle non-event game actions for every game frame interval { if (game_status == GAME_MODE_TITLE) { @@ -1567,7 +1577,8 @@ void HandleKey(Key key, int key_status) default: if (key == KSYM_Escape) { - game_status = GAME_MODE_MAIN; + SetGameStatus(GAME_MODE_MAIN); + DrawMainMenu(); return;