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);