Files
Rex-EMoolator-docs/docs/pl/reference/CANVAS_OBSERVER.md
Patryk Gensch 198d9cf477 Finished automatically generated docs
Time to correct it by itself
2026-05-20 22:49:46 +02:00

6.8 KiB

CANVAS_OBSERVER

Punkt dostępu do operacji na kanwie — wspólnym obszarze rysowania, na którym silnik wyświetla wszystkie widoczne obiekty graficzne. Udostępnia metody do dodawania i usuwania grafik z ekranu, pobierania nazwy obiektu pod kursorem, ustawiania tła, robienia zrzutów ekranu oraz emitowania sygnałów przy zmianie fokusu okna gry.

Zazwyczaj w scenie istnieje pojedyncza instancja typu CANVAS_OBSERVER, do której wszystkie skrypty odwołują się jak do obiektu globalnego.

Metody

ADD

void ADD(STRING varName)
void ADD(STRING varName, INTEGER priority)

Dodaje na kanwę zmienną ANIMO lub IMAGE — ustawia jej widoczność na TRUE i opcjonalnie nadaje priorytet rysowania (domyślnie 1000).

Parametry

  • varName — nazwa zmiennej graficznej.
  • priority — (opcjonalnie) priorytet rysowania (pozycja w osi Z).

Przykłady

CANVASOBSERVER^ADD("ANNMKORBA2");
CANVASOBSERVER^ADD("ANNMPRZEGRYZA");

ENABLENOTIFY

void ENABLENOTIFY(BOOL enable)

Włącza lub wyłącza emitowanie sygnałów o zmianie fokusu okna gry (ONWINDOWFOCUSON, ONWINDOWFOCUSOFF).

Parametry

  • enableTRUE włącza notyfikacje, FALSE je wyłącza.

Przykłady

CANVASOBSERVER^ENABLENOTIFY(TRUE);

GETBPP

INTEGER GETBPP()

Zwraca głębię koloru kanwy w bitach na piksel. Oryginalny silnik BlooMoo działa w trybie 16 bpp (RGB565) — metoda zawsze zwraca 16.

Zwraca: INTEGER — głębia koloru w bitach (16).

GETGRAPHICSAT

STRING GETGRAPHICSAT(INTEGER posX, INTEGER posY, BOOL onlyVisible, INTEGER minZ, INTEGER maxZ)
STRING GETGRAPHICSAT(INTEGER posX, INTEGER posY, BOOL onlyVisible, INTEGER minZ, INTEGER maxZ, BOOL ignoreAlpha)

Zwraca nazwę zmiennej graficznej znajdującej się pod punktem (posX, posY). Przeszukuje wyłącznie bieżącą scenę. Wyszukiwanie zaczyna od grafik o najwyższym priorytecie. Jeśli żaden obiekt nie spełnia warunków, zwracane jest "NULL".

Parametry

  • posX, posY — koordynaty sprawdzanego punktu.
  • onlyVisible — gdy TRUE, brane są pod uwagę tylko widoczne grafiki.
  • minZ, maxZ — zakres priorytetu (osi Z) ograniczający wyszukiwanie.
  • ignoreAlpha — (opcjonalnie) gdy TRUE, sprawdzany jest tylko prostokąt grafiki; gdy FALSE (lub pominięte), test uwzględnia kanał alfa piksela.

Zwraca: STRING — nazwa znalezionego obiektu lub "NULL".

Przykłady

CANVASOBSERVER^GETGRAPHICSAT(MOUSE^GETPOSX(),MOUSE^GETPOSY(),TRUE,2998,2998,FALSE);
CANVASOBSERVER^GETGRAPHICSAT(VARICURSORX,VARICURSORY,TRUE,40,40,TRUE);

GETGRAPHICSAT2

STRING GETGRAPHICSAT2(INTEGER posX, INTEGER posY, BOOL onlyVisible, INTEGER minZ, INTEGER maxZ)
STRING GETGRAPHICSAT2(INTEGER posX, INTEGER posY, BOOL onlyVisible, INTEGER minZ, INTEGER maxZ, BOOL ignoreAlpha)

Wariant GETGRAPHICSAT przeszukujący nie tylko bieżącą scenę, ale również nadrzędne kontenery (epizod, root).

MOVEBKG

void MOVEBKG(INTEGER deltaX, INTEGER deltaY)

Przesuwa tło o zadane wartości w osiach X i Y (względem aktualnej pozycji).

Parametry

  • deltaX, deltaY — wektor przesunięcia w pikselach.

Przykłady

CANVASOBSERVER^MOVEBKG(0,ARRAYDY^GET(0));
CANVASOBSERVER^MOVEBKG(ISCROLLMOVEX,ISCROLLMOVEY);

PASTE

void PASTE(STRING varName, INTEGER posX, INTEGER posY)

Wkleja na kanwę kopię bieżącej zawartości grafiki ANIMO lub IMAGE w postaci statycznej, niemodyfikowalnej tekstury w punkcie (posX, posY). Operacja nie wpływa na samą zmienną źródłową.

Parametry

  • varName — nazwa zmiennej graficznej.
  • posX, posY — pozycja wklejenia.

Przykłady

CANVASOBSERVER^PASTE("ANNBUM",[I1-IPLANPOSX],[I2-IPLANPOSY]);
CANVASOBSERVER^PASTE("IMG1",0,0);

REDRAW

void REDRAW()

W oryginalnym silniku oznacza kanwę jako wymagającą ponownego rysowania. W praktyce silnik i tak rysuje całość każdą klatkę, więc metoda zachowuje się jak no-op.

REFRESH

void REFRESH()

Wymusza ponowne narysowanie wszystkich obiektów IMAGE w bieżącej scenie — wewnętrznie wywołuje na nich metodę INVALIDATE.

REMOVE

void REMOVE(STRING varName1, [STRING varName2, ...])

Ukrywa wymienione obiekty graficzne na kanwie (ustawia ich widoczność na FALSE). Metoda przyjmuje dowolną liczbę argumentów.

Parametry

  • varName1, varName2, … — kolejne nazwy zmiennych graficznych do ukrycia.

Przykłady

CANVASOBSERVER^REMOVE("ZLY");
CANVASOBSERVER^REMOVE("ANNAUTOR","ANNAUTOL","ANNAUTORMASK","ANNAUTOLMASK");

SAVE

void SAVE(STRING imgFileName, DOUBLE xScaleFactor, DOUBLE yScaleFactor)
void SAVE(STRING imgFileName, DOUBLE xScaleFactor, DOUBLE yScaleFactor, INTEGER xLeft, INTEGER yTop, INTEGER xRight, INTEGER yBottom)

Zapisuje aktualny widok kanwy do pliku .IMG. Forma siedmioargumentowa pozwala wyciąć prostokąt kanwy przed skalowaniem.

Parametry

  • imgFileName — ścieżka docelowego pliku .IMG.
  • xScaleFactor, yScaleFactor — współczynniki skalowania w osiach X i Y.
  • xLeft, yTop, xRight, yBottom — (opcjonalnie) prostokąt do wycięcia przed skalowaniem.

Przykłady

CANVASOBSERVER^SAVE("$COMMON\PAGE.IMG",1,1);
CANVASOBSERVER^SAVE("$COMMON\ZOOM.IMG",2,2,$1,$2,$3,$4);
CANVASOBSERVER^SAVE(["$COMMON\SAVE_BD\BD_SCR"+VARISLOTNO+".IMG"],0.5,0.5);

SETBACKGROUND

void SETBACKGROUND(STRING imageName)

Ustawia obraz tła kanwy. Argument może być nazwą istniejącej zmiennej IMAGE albo ścieżką do pliku .IMG — w drugim przypadku silnik utworzy ukryty obiekt IMAGE z plikiem.

Parametry

  • imageName — nazwa zmiennej IMAGE lub ścieżka do pliku .IMG.

Przykłady

CANVASOBSERVER^SETBACKGROUND(SOBJECT|NAME);
CANVASOBSERVER^SETBACKGROUND("LOGO.IMG");

SETBKGPOS

void SETBKGPOS(INTEGER posX, INTEGER posY)

Ustawia bezwzględną pozycję tła w osiach X i Y.

Parametry

  • posX, posY — nowa pozycja tła.

Przykłady

CANVASOBSERVER^SETBKGPOS([VARI_BKGX-VARI_BKGXOFFSET],[VARI_BKGY-VARI_BKGYOFFSET]);
CANVASOBSERVER^SETBKGPOS(VARI_TMPX,0);

Sygnały

ONINIT

Wywoływany w momencie inicjalizacji obiektu.

ONWINDOWFOCUSON

Wywoływany po uzyskaniu fokusu przez okno gry (np. powrót z minimalizacji). Emisja działa tylko, gdy notyfikacje są włączone metodą ENABLENOTIFY.

ONWINDOWFOCUSOFF

Wywoływany po utracie fokusu przez okno gry (np. przełączenie na inną aplikację). Emisja działa tylko, gdy notyfikacje są włączone.

ONSIGNAL

Wywoływany po otrzymaniu sygnału (zobacz Zdarzenia i sygnały).