ACSUtils Wiki

An ACS library for ZDoom-based ports

User Tools

Site Tools


functions:mod

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
functions:mod [2017/04/15 17:28] – removed korshunfunctions:mod [2017/07/15 15:13] korshun
Line 1: Line 1:
 +====== mod ======
 +{{tag>math}}
 +''num mod(num a, num b)''
  
 +[[:types|num - any numeric type (int or fixed)]]
 +
 +===== Description =====
 +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.
 +
 +===== Examples =====
 +<code>
 +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
 +</code>
 +
 +Using mod to implement menu cycling easily:
 +
 +</code>
 +if (KeyPressed(BT_DOWN))
 +    menuindex++;
 +if (KeyPressed(BT_UP))
 +    menuindex--;
 +    
 +menuindex = mod(menuindex, NUM_MENU_ITEMS);
 +</code>
functions/mod.txt · Last modified: 2017/07/15 15:13 by korshun