num mod(num a, num b)
This function implements modulo division a % b, but, unlike the ACS operator, it handles negative values of a like mathematical modulo, making a cycle around on the range [0, b).
This makes its result safe to use an array index, as the result is not negative for negative values of a.
Only positive values of b are supported.
mod(-5, 3) -> 1 mod(-4, 3) -> 2 mod(-3, 3) -> 0 mod(-2, 3) -> 1 mod(-1, 3) -> 2 mod(0, 3) -> 0 mod(1, 3) -> 1 mod(2, 3) -> 2 mod(3, 3) -> 0 mod(4, 3) -> 1 mod(5, 3) -> 2
Using mod to implement menu cycling easily:
if (KeyPressed(BT_DOWN))
menuindex++;
if (KeyPressed(BT_UP))
menuindex--;
menuindex = mod(menuindex, NUM_MENU_ITEMS);