Kuvakulmat

Kuten jo varmaan tiedät, voit määrittää jopa kahdeksan eri kuvakulmaa, kun suunnittelet huoneita. Kuvakulma määritellään kuvakulman alueena huoneessa ja kuvakulman porttina ruudulla (tai tarkkaan ottaen piirtoalueella ikkunassa). Kuvakulmia käyttämällä voit näyttää huoneen eri osia eri kohdissa ruudulla. Voit myös varmistaa, että tietty objekti pysyy aina näkyvissä.

Voit hallita kuvakulmia koodilla. Voit tehdä kuvakulmista näkyviä ja näkymättömiä ja muuttaa kuvakulmien sijaintia ja kokoa piirtoalueella tai kuvakulman sijaintia ja kokoa huoneessa (mikä on erityisen hyödyllistä, kun määrität kaikki objektit näkymättömiin). Voit muuttaa vaaka- ja pystysuuntaisen reunan kokoa näkyvän objektin ympärillä, sekä voit määrittää, minkä objektin tulee pysyä näkyvissä kuvakulmissa. Jälkimmäinen on erittäin tärkeä silloin, kun tärkeä objekti vaihtuu pelin aikana. Voit esimerkiksi muuttaa päähahmon objektia perustuen objektin senhetkiseen tilaan. Valitettavasti tämä tarkoittaa, että objekti ei ole enää se, jonka tulee pysyä näkyvissä. Tämä voidaan korjata yhdellä rivillä koodia kaikkien mahdollisten pääobjektien Create-tapahtumassa (olettaen, että tämän tulee tapahtua ensimmäisessä kuvakulmassa):

{
  view_object[0] = object_index;
}

On olemassa seuraavat muuttujat, jotka vaikuttavat kuvakulmaan. Kaikki paitsi ensimmäiset kaksi ovat taulukoita, joiden alueet ovat 0:n (ensimmäinen kuvakulma) ja 7:n (viimeinen kuvakulma) välillä.

view_enabled Määrää, ovatko kuvakulmat käytössä.
view_current* Sillä hetkellä piirrettävä kuvakulma (0 - 7). Käytä tätä vain piirtotapahtumassa (Draw). Voit esimerkiksi tarkistaa tämän muuttujan piirtääksesi tiettyjä asioita vain yhteen kuvakulmaan. Muuttujan arvoa ei voi muuttaa.
view_visible[0..7] Määrää, onko annettu kuvakulma näkyvissä ruudulla.

view_xview[0..7] Kuvakulman x-koordinaatti huoneessa.
view_yview[0..7] Kuvakulman y-koordinaatti huoneessa.
view_wview[0..7] Kuvakulman leveys huoneessa.
view_hview[0..7] Kuvakulman korkeus huoneessa.
view_xport[0..7] Kuvakulman portin x-koordinaatti piirtoalueella.
view_yport[0..7] Kuvakulman portin y-koordinaatti piirtoalueella.
view_wport[0..7] Kuvakulman portin leveys piirtoalueella.
view_hport[0..7] Kuvakulman portin korkeus piirtoalueella.
view_angle[0..7] Kuvakulmaan käytettävä kiertokulma (vastapäivään asteina).
view_hborder[0..7] Vaakasuuntaisen reunan koko näkyvän objektin ympärillä (kuvapisteinä).
view_vborder[0..7] Pystysuuntaisen reunan koko näkyvän objektin ympärillä (kuvapisteinä).
view_hspeed[0..7] Kuvakulman vaakasuuntainen enimmäisnopeus.
view_vspeed[0..7] Kuvakulman pystysuuntainen enimmäisnopeus.
view_object[0..7] Objekti, jonka instanssin on pysyttänä näkyvissä kuvakulmassa. Jos objektilla on useampia instansseja, vain ensimmäistä seurataan. Voit myös asettaa tämän muuttujan arvoksi instanssin id-arvon. Siinä tapauksessa tätä tiettyä instanssia seurataan.

Huomaa, että kuvan koko ruudulla määräytyy näkyvien kuvakulmien mukaan huoneen alussa. Jos muutat kuvakulmia pelin aikana, ne eivät ehkä enää sovi ruudulle. Ruudun koko ei tosin sovitu automaattisesti. Tarpeen vaatiessa joudut siis tekemään tämän itse, käyttäen seuraavia funktioita:

window_set_region_size(w,h,adaptwindow) Asettaa ikkunan piirtoalueen leveyden w ja korkeuden h. adaptwindow määrittää, tuleeko ikkunan koko sovittaa, jos alue ei sovi. Ikkunan koko sovitetaan aina, jos käytät määrättyä skaalausta (Fixed scale). (Katso funktio window_set_region_scale().)
window_get_region_width() Palauttaa piirtoalueen leveyden.
window_get_region_height() Palauttaa piirtoalueen korkeuden.

Pelissä tarvitset useasti hiiren osoittimen sijaintia. Tavallisesti käytät tähän muuttujia mouse_x ja mouse_y. Kun pelissä on useampia kuvakulmia, nämä muuttujat antavat hiiren osoittimen sijainnin suhteessa kuvakulmaan, jossa osoitin sijaitsee. Joissain tilanteissa saatat kuitenkin tarvita hiiren osoittimen sijaintia suhteessa tiettyyn kuvakulmaan, myös silloin, kun se on näkymän ulkopuolella. Tätä varten on olemassa seuraavat funktiot.

window_view_mouse_get_x(id) Palauttaa hiiren osoittimen x-koordinaatin suhteessa kuvakulmaan, jonka indeksi on id.
window_view_mouse_get_y(id) Palauttaa hiiren osoittimen y-koordinaatin suhteessa kuvakulmaan, jonka indeksi on id.
window_view_mouse_set(id,x,y) Asettaa hiiren osoittimen sijainnin suhteessa kuvakulmaan, jonka indeksi on id.
window_views_mouse_get_x() Palauttaa hiiren osoittimen x-koordinaatin suhteessa kuvakulmaan, jossa se sijaitsee (sama kuin mouse_x).
window_views_mouse_get_y() Palauttaa hiiren osoittimen y-koordinaatin suhteessa kuvakulmaan, jossa se sijaitsee (sama kuin mouse_y).
window_views_mouse_set(x,y) Asettaa hiiren osoittimen sijainnin suhteessa ensimmäiseen näkyvään kuvakulmaan.