# INTEGER Liczba całkowita ze znakiem. ## Pola ### TOINI ``` BOOL TOINI ``` Określa, czy wartość pola jest zapisywana do pliku INI i przywracana po ponownym uruchomieniu. ### VALUE ``` INTEGER VALUE ``` Aktualna wartość zmiennej. ## Metody ### ABS ``` INTEGER ABS(INTEGER value) ``` Zapisuje w zmiennej wartość bezwzględną przekazanego argumentu i zwraca ją. **Parametry** - `value` — liczba, której wartość bezwzględna zostanie zapisana. **Zwraca**: nową wartość zmiennej. **Przykłady** ``` VARINT0^ABS(VARINT0); I_7^ABS(ARRFLDCLONES^GET(I_FIELD_INDEX)); ``` ### ADD ``` INTEGER ADD(INTEGER addend) ``` Dodaje argument do bieżącej wartości zmiennej, zapisuje wynik i zwraca go. **Parametry** - `addend` — wartość dodawana. **Zwraca**: nową wartość zmiennej. **Przykłady** ``` VARIRADIUS^ADD([VARIMENUVISIBLE*16]); VARIKRETSTARTX^ADD(50); VARITEMP0^ADD(VARIRADIUS); ``` ### AND ``` INTEGER AND(INTEGER value) ``` Wykonuje bitową koniunkcję bieżącej wartości zmiennej z argumentem, zapisuje wynik i zwraca go. **Parametry** - `value` — wartość, z którą wykonywana jest operacja. **Zwraca**: nową wartość zmiennej. **Przykłady** ``` VARITEMP2^AND(1); VARITEMP1^AND(ARRMASK^GET(ARRENEMYMASK^GET(VARENEMY))); ``` ### CLAMP ``` INTEGER CLAMP(INTEGER rangeMin, INTEGER rangeMax) ``` Sprowadza bieżącą wartość zmiennej do przedziału `[rangeMin, rangeMax]`. Wartości spoza przedziału są przycinane do jego granic. **Parametry** - `rangeMin` — dolna granica przedziału (włącznie). - `rangeMax` — górna granica przedziału (włącznie). **Zwraca**: nową wartość zmiennej. **Przykłady** ``` VARIMENUX^CLAMP(92, 708); I1^CLAMP(0, IMIECZMAX); IFRAMER^CLAMP(IFRAMECENTER, IFRAMEMAX); ``` ### CLEAR ``` INTEGER CLEAR() ``` Ustawia wartość zmiennej na `0` i zwraca tę wartość. **Zwraca**: `0`. ### DEC ``` INTEGER DEC() ``` Zmniejsza wartość zmiennej o `1`. **Zwraca**: nową wartość zmiennej. **Przykłady** ``` VARITIMETOEXIT^DEC(); VARIWAIT^DEC(); ``` ### DIV ``` INTEGER DIV(INTEGER divisor) ``` Dzieli bieżącą wartość zmiennej (dzielenie całkowite) przez argument, zapisuje wynik i zwraca go. Dzielenie przez zero nie zmienia wartości zmiennej. **Parametry** - `divisor` — dzielnik. **Zwraca**: nową wartość zmiennej (lub niezmienioną wartość, jeśli `divisor` był `0`). **Przykłady** ``` VARITEMP0^DIV(2); VARMOUSEDX^DIV(VARMOUSESPEED); ``` ### GET ``` INTEGER GET() ``` Zwraca aktualną wartość zmiennej. **Zwraca**: bieżąca wartość pola `VALUE`. ### INC ``` INTEGER INC() ``` Zwiększa wartość zmiennej o `1`. **Zwraca**: nową wartość zmiennej. **Przykłady** ``` VARINUMITEMS^INC(); VARITUTCOUNT^INC(); ``` ### LENGTH ``` INTEGER LENGTH(INTEGER x, INTEGER y) ``` Wyznacza długość wektora `(x, y)` jako `sqrt(x² + y²)`, obcina wynik do liczby całkowitej, zapisuje i zwraca. **Parametry** - `x` — pierwsza składowa wektora. - `y` — druga składowa wektora. **Zwraca**: długość wektora obciętą do liczby całkowitej. **Przykłady** ``` VARI_TMP1^LENGTH([VARI_TMPX-VARI_CARX], [VARI_TMPY-VARI_CARY]); I3^LENGTH(I3, 600); ``` ### MOD ``` INTEGER MOD(INTEGER divisor) ``` Zapisuje w zmiennej resztę z dzielenia jej bieżącej wartości przez argument. Dzielenie przez zero nie zmienia wartości zmiennej. **Parametry** - `divisor` — dzielnik. **Zwraca**: nową wartość zmiennej (lub niezmienioną wartość, jeśli `divisor` był `0`). **Przykłady** ``` VARITEMP4^MOD(8); IGC^MOD(ARLEVG^GETSIZE()); ``` ### MUL ``` INTEGER MUL(INTEGER multiplier) ``` Mnoży bieżącą wartość zmiennej przez argument, zapisuje wynik i zwraca go. **Parametry** - `multiplier` — mnożnik. **Zwraca**: nową wartość zmiennej. **Przykłady** ``` VARITEMP0^MUL(34); I1^MUL(IGRID); ``` ### NOT ``` INTEGER NOT() ``` Wykonuje bitową negację (dopełnienie) bieżącej wartości zmiennej, zapisuje wynik i zwraca go. **Zwraca**: nową wartość zmiennej. ### OR ``` INTEGER OR(INTEGER value) ``` Wykonuje bitową alternatywę bieżącej wartości zmiennej z argumentem, zapisuje wynik i zwraca go. **Parametry** - `value` — wartość, z którą wykonywana jest operacja. **Zwraca**: nową wartość zmiennej. ### POWER ``` INTEGER POWER(INTEGER exponent) ``` Podnosi bieżącą wartość zmiennej do podanej potęgi, zaokrągla wynik do liczby całkowitej, zapisuje i zwraca. **Parametry** - `exponent` — wykładnik potęgi. **Zwraca**: nową wartość zmiennej. ### RANDOM ``` INTEGER RANDOM(INTEGER bound) INTEGER RANDOM(INTEGER min, INTEGER max) ``` Zapisuje w zmiennej liczbę pseudolosową i zwraca ją. - W wariancie z jednym argumentem zwracana jest liczba z przedziału `[0, bound)`. - W wariancie z dwoma argumentami zwracana jest liczba z przedziału `[min, max]` (oba końce włącznie). **Parametry** - `bound` — wartość graniczna (wyłącznie). - `min`, `max` — granice przedziału (włącznie). **Zwraca**: wylosowaną wartość. **Przykłady** ``` VARITEMP0^RANDOM(0, 100); VARI_TMP3^RANDOM(VARI_TMP3); ``` ### RESETINI ``` INTEGER RESETINI() ``` Przywraca wartość zmiennej do wartości resetu zdefiniowanej w atrybutach obiektu w skrypcie. Silnik szuka wartości w kolejności: `DEFAULT` → `INIT_VALUE` → `VALUE`; używana jest pierwsza znaleziona. Jeśli żadna z nich nie jest ustawiona, wartość ustawiana jest na `0`. **Zwraca**: nową wartość zmiennej. ### SET ``` INTEGER SET(INTEGER value) ``` Ustawia wartość zmiennej. **Parametry** - `value` — nowa wartość. **Zwraca**: nową wartość zmiennej. **Przykłady** ``` G_IPAGE^SET(800); VARITEMP1^SET($2); ITEMP^SET(STCBAZA|SRODEK); ``` ### SUB ``` INTEGER SUB(INTEGER subtrahend) ``` Odejmuje argument od bieżącej wartości zmiennej, zapisuje wynik i zwraca go. **Parametry** - `subtrahend` — wartość odejmowana. **Zwraca**: nową wartość zmiennej. **Przykłady** ``` G_IPAGE^SUB(100); VARIPRIORITY^SUB(VARIBKGOFFSETY); ``` ### SWITCH ``` INTEGER SWITCH(INTEGER valueA, INTEGER valueB) ``` Jeżeli bieżąca wartość zmiennej jest równa `valueA`, zmiennej zostaje przypisana `valueB`; w przeciwnym razie — `valueA`. Pozwala to naprzemiennie przełączać między dwiema wartościami. **Parametry** - `valueA` — pierwsza wartość. - `valueB` — druga wartość. **Zwraca**: nową wartość zmiennej. ### XOR ``` INTEGER XOR(INTEGER value) ``` Wykonuje bitową różnicę symetryczną bieżącej wartości zmiennej z argumentem, zapisuje wynik i zwraca go. **Parametry** - `value` — wartość, z którą wykonywana jest operacja. **Zwraca**: nową wartość zmiennej. ## Sygnały ### ONCHANGED Wywoływany, gdy wartość zmiennej zostaje zmieniona na inną niż dotychczasowa. ### ONBRUTALCHANGED Wywoływany przy każdym wywołaniu metody zmieniającej wartość, niezależnie od tego, czy nowa wartość różni się od poprzedniej. ### ONINIT Wywoływany w momencie inicjalizacji zmiennej. ### ONSIGNAL Wywoływany po otrzymaniu sygnału.