diff --git a/packages/grogs+/grogs+.grnd b/packages/grogs+/grogs+.grnd new file mode 100644 index 0000000..a33c569 --- /dev/null +++ b/packages/grogs+/grogs+.grnd @@ -0,0 +1,36 @@ +extern "grogs" + +fun -list !init + setlist &keyChecks 32 97 + setlist &keyDown false false + setlist &keyTracker $keyChecks $keyDown + return $keyTracker +endfun + +fun -int !keyPressed -list &keyTracker + getlistat &keyTracker 0 &keyChecks + getlistat &keyTracker 1 &keyDown + + !grogs:getLastKey &key + set &idx 0 + getlistsize &keyChecks &len + @loop + equal $idx $len &cond + if $cond %false + + getlistat &keyChecks $idx &store + equal $store $key &cond + getlistat &keyDown $idx &store + inequal $cond $store &cond + if $cond %true + + add $idx 1 &idx + jump %loop + + @true + getlistat &keyChecks $idx &store + return $store + + @false + return -1 +endfun diff --git a/packages/grogs/moreGrogs.grnd b/packages/grogs/moreGrogs.grnd deleted file mode 100644 index c9bea82..0000000 --- a/packages/grogs/moreGrogs.grnd +++ /dev/null @@ -1,45 +0,0 @@ -extern "grogs" - -struct -keyTracker - init &keys -list - init &pressed -list -endstruct - -init &keyTracker -keyTracker -setlist *keyTracker.keys 1073741904 1073741903 1073741906 1073741905 -setlist *keyTracker.pressed false false false false - -pusharg "My Awesome Window" 480 360 -!grogs:initSDL &result - -fun -int !keyPressed -keyTracker &keyTracker - # A key was just pressed means there is a mismatch between what is stored and the actual key presses - set &idx 0 - set &ans -1 - !grogs:getLastKey &key - - getlistsize *keyTracker.keys &len - @loop - equal $idx $len &cond - if $cond %end - - getlistat *keyTracker.keys $idx &store - inequal $key $store &cond - if $cond %increment - - getlistat *keyTracker.pressed &cond - if $cond %increment - - set &ans $store - - @increment - add $idx 1 &idx - jump %loop - - @end - return $ans -endfun - -@loop - - jump %loop \ No newline at end of file